Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Cameron Cawley
Browse
Commits
87bedb4b
Commit
87bedb4b
authored
27 years ago
by
Andrew Hodgkinson
Browse files
Options
Download
Email Patches
Plain Diff
Added a missing _kernel_oserror * e declaration
parent
6a2fc8cf
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
139 additions
and
90 deletions
+139
-90
c/Hotlist
c/Hotlist
+139
-90
No files found.
c/Hotlist
View file @
87bedb4b
...
...
@@ -119,7 +119,7 @@ static ToolboxEventHandler hotlist_reset_directory_handler;
static
_kernel_oserror
*
hotlist_get_entry_sizes
(
unsigned
int
*
item_height
,
unsigned
int
*
item_dir_width
,
unsigned
int
*
item_url_width
);
static
void
hotlist_scan_for_subdirectories
(
hotlist_item
*
item
);
static
hotlist_item
*
_
hotlist_find_item
(
hotlist_item
*
list
,
unsigned
int
item_no
);
static
hotlist_item
*
hotlist_find_item
_r
(
hotlist_item
*
list
,
unsigned
int
item_no
);
static
hotlist_item
*
hotlist_find_item
(
hotlist_item
*
list
,
unsigned
int
item_no
);
static
int
_hotlist_find_no_from_item
(
hotlist_item
*
list
,
hotlist_item
*
item
);
static
int
hotlist_find_no_from_item
(
hotlist_item
*
item
);
...
...
@@ -127,10 +127,10 @@ static hotlist_item * _hotlist_find_selected_item (hotlist_item * list);
static
hotlist_item
*
hotlist_find_selected_item
(
void
);
static
void
_hotlist_count_displayed_items
(
hotlist_item
*
list
);
static
unsigned
int
hotlist_count_displayed_items
(
hotlist_item
*
list
);
static
void
_
hotlist_count_selected_items
(
hotlist_item
*
list
);
static
unsigned
int
hotlist_count_selected_items
(
void
);
static
unsigned
int
hotlist_contents_selected
(
hotlist_item
*
item
);
static
unsigned
int
hotlist_no_contents_selected
(
hotlist_item
*
item
);
static
void
hotlist_count_selected_items
_r
(
hotlist_item
*
list
);
static
unsigned
int
hotlist_count_selected_items
(
void
);
static
unsigned
int
hotlist_contents_selected
(
hotlist_item
*
item
);
static
unsigned
int
hotlist_no_contents_selected
(
hotlist_item
*
item
);
static
void
_hotlist_draw
(
hotlist_item
*
list
,
unsigned
int
first_item
,
unsigned
int
last_item
,
unsigned
int
indent
);
static
void
hotlist_draw
(
hotlist_item
*
list
,
unsigned
int
first_item
,
unsigned
int
last_item
);
static
void
_hotlist_get_max_width
(
hotlist_item
*
list
,
unsigned
int
indent
);
...
...
@@ -145,7 +145,7 @@ static void hotlist_launch_url (hotlist_item * item);
static
_kernel_oserror
*
hotlist_process_click_on_item
(
unsigned
int
itemno
,
hotlist_item
*
item
,
int
buttons
,
int
x
,
int
y
);
static
_kernel_oserror
*
hotlist_process_click
(
int
x
,
int
y
,
int
buttons
);
static
void
hotlist_window_preopen
(
hl_opentype
type
);
static
void
hotlist_setmenu_details
(
ObjectId
menuid
);
static
void
hotlist_set
_
menu_details
(
ObjectId
menuid
);
static
_kernel_oserror
*
hotlist_save_entries
(
FILE
*
fileptr
,
hotlist_item
*
list
);
static
void
hotlist_lower_tags
(
char
*
string
);
static
_kernel_oserror
*
hotlist_load_directory
(
FILE
*
fileptr
,
hotlist_item
*
target
);
...
...
@@ -845,7 +845,9 @@ static void hotlist_delete_item(hotlist_item * item)
static
_kernel_oserror
*
hotlist_move_item
(
hotlist_item
*
source
,
hotlist_item
*
target
,
unsigned
int
position
)
{
hotlist_item
*
newdir
,
*
tempptr
;
_kernel_oserror
*
e
;
hotlist_item
*
newdir
,
*
tempptr
;
if
(
!
(
source
->
type
==
hl_directory
&&
!
hotlist_contents_selected
(
source
->
data
.
directory_content
)))
{
/* Unlink item from directory structure */
...
...
@@ -858,19 +860,28 @@ static _kernel_oserror * hotlist_move_item(hotlist_item * source, hotlist_item *
}
else
{
/* Special case - moving a directory whose contents are only partially selected */
/* we can't move a directory whose contents are only partially to be moved, */
/* there would be no where to leave the items which were not moved. */
/* Special case - moving a directory whose contents are only partially selected. */
/* We can't move a directory whose contents are only partially to be moved, */
/* there would be nowhere to leave the items which were not moved with it. */
/* So, create a new directory based on the old */
RetError
(
hotlist_new_directory
(
target
,
source
->
name
,
position
,
&
newdir
));
/* Move the contents recursively into the new directory */
source
=
source
->
data
.
directory_content
;
while
(
source
)
{
tempptr
=
source
->
next
;
if
(
source
->
flags
&
HOTLIST_G_IS_SELECTED
)
{
hotlist_move_item
(
source
,
newdir
,
HOTLIST_POSITION_END
);
/* move items into new directory */
hotlist_move_item
(
source
,
newdir
,
HOTLIST_POSITION_END
);
source
->
flags
&=
~
HOTLIST_G_IS_SELECTED
;
}
source
=
tempptr
;
}
}
...
...
@@ -1010,60 +1021,66 @@ static void hotlist_scan_for_subdirectories(hotlist_item * item)
}
/*************************************************/
/* _hotlist_find_item() */
/* */
/* This function does all the work for */
/* hotlist_find_item() */
/* */
/* Parameters: Pointer to a hotlist_item */
/* the n'th item to return */
/* This function will recursivly scan through */
/* a hotlist structure and return a pointer to */
/* the n'th item. It will only recurse through */
/* open directories. */
/* */
/* Parameters: Pointer to a hotlist_item at the */
/* top of the directory to scan; */
/* */
/* The nth item to return within it. */
/* */
/* Returns: Pointer to the requested item or */
/* NULL if it does not exist
*/
/* NULL if it does not exist
.
*/
/*************************************************/
static
hotlist_item
*
_
hotlist_find_item
(
hotlist_item
*
list
,
unsigned
int
item_no
)
static
hotlist_item
*
hotlist_find_item
(
hotlist_item
*
list
,
unsigned
int
item_no
)
{
hotlist_item
*
temp
;
while
(
list
)
{
if
(
item_no
==
item_number
)
return
list
;
/* Found the list item */
item_number
++
;
if
(
list
->
type
==
hl_directory
&&
list
->
flags
&
HOTLIST_D_IS_OPEN
)
{
temp
=
_hotlist_find_item
(
list
->
data
.
directory_content
,
item_no
);
if
(
temp
)
return
temp
;
}
list
=
list
->
next
;
item_number
=
0
;
}
return
NULL
;
/* List does not extend far enough */
return
hotlist_find_item_r
(
list
,
item_no
);
}
/*************************************************/
/* hotlist_find_item() */
/* */
/* This function will recursivly scan through */
/* a hotlist structure and return a pointer to */
/* the n'th item. It will only recurse through */
/* open directories. */
/* hotlist_find_item_r() */
/* */
/* Parameters: Pointer to a hotlist_item */
/* the n'th item to return */
/* Recursive back-end to hotlist_find_item. */
/* */
/* Returns: Pointer to the requested item or */
/* NULL if it does not exist */
/* Parameters: As hotlist_find_item. */
/* */
/* Note: This function doesn't actually */
/* do any of the real work but */
/* merely sets up a global variable */
/* and calls _hotlist_find_item() */
/* Returns: As hotlist_find_item. */
/*************************************************/
static
hotlist_item
*
hotlist_find_item
(
hotlist_item
*
list
,
unsigned
int
item_no
)
static
hotlist_item
*
hotlist_find_item
_r
(
hotlist_item
*
list
,
unsigned
int
item_no
)
{
item_number
=
0
;
return
_hotlist_find_item
(
list
,
item_no
);
hotlist_item
*
temp
;
while
(
list
)
{
if
(
item_number
==
item_no
)
return
list
;
/* Found the list item */
/* Increment the item counter */
item_number
++
;
/* Recursively scan open directories */
if
(
list
->
type
==
hl_directory
&&
list
->
flags
&
HOTLIST_D_IS_OPEN
)
{
temp
=
hotlist_find_item_r
(
list
->
data
.
directory_content
,
item_no
);
if
(
temp
)
return
temp
;
}
/* Move to the next list item */
list
=
list
->
next
;
}
return
NULL
;
/* List does not extend far enough */
}
/*************************************************/
...
...
@@ -2041,7 +2058,7 @@ static int hotlist_menuclose_handler(int event_code, ToolboxEvent *event, IdBloc
void
hotlist_setmenu_details
(
ObjectId
menuid
)
void
hotlist_set
_
menu_details
(
ObjectId
menuid
)
{
hotlist_item
*
item
;
char
entrytext
[
32
];
...
...
@@ -2141,7 +2158,7 @@ static int hotlist_menuopen_handler(int event_code, ToolboxEvent * event, IdBloc
}
}
hotlist_setmenu_details
(
id_block
->
self_id
);
hotlist_set
_
menu_details
(
id_block
->
self_id
);
return
0
;
}
...
...
@@ -2789,9 +2806,6 @@ _kernel_oserror * hotlist_initialise(void)
hotlist_reset_directory_handler
,
NULL
));
hotlist_load
(
"InetDBase:hotlist
\n
"
);
hotlist_open
(
Toolbox_ShowObject_Default
,
0
,
0
);
return
NULL
;
}
...
...
@@ -2844,14 +2858,17 @@ _kernel_oserror * hotlist_close(void)
/*************************************************/
/* hotlist_menu_selectall_handler() */
/* */
/* This function handles the select all menu */
/* item */
/* This function handles the 'select all' menu */
/* item. */
/* */
/* Parameters are as standard for a Toolbox */
/* event handler. */
/*************************************************/
static
int
hotlist_menu_selectall_handler
(
int
event_code
,
ToolboxEvent
*
event
,
IdBlock
*
id_block
,
void
*
handle
)
static
int
hotlist_menu_selectall_handler
(
int
event_code
,
ToolboxEvent
*
event
,
IdBlock
*
id_block
,
void
*
handle
)
{
hotlist_item
*
item
;
ObjectId
sub_menu
;
hotlist_item
*
item
;
ObjectId
sub_menu
;
if
(
!
hotlist_root
->
data
.
directory_content
)
return
0
;
...
...
@@ -2860,19 +2877,26 @@ static int hotlist_menu_selectall_handler(int event_code, ToolboxEvent *event, I
if
(
item
&&
item
->
parent
)
{
item
=
item
->
parent
->
data
.
directory_content
;
while
(
item
)
while
(
item
)
{
item
->
flags
|=
HOTLIST_G_IS_SELECTED
|
HOTLIST_G_REDRAW_NOW
;
if
(
item
->
type
==
hl_directory
)
hotlist_set_flags
(
item
->
data
.
directory_content
,
hl_ALL
,
HOTLIST_G_IS_SELECTED
);
item
=
item
->
next
;
}
hotlist_redraw_now
();
menu_get_sub_menu_show
(
0
,
id_block
->
self_id
,
HOTLIST_URL_MENUITEM
,
&
sub_menu
);
menu_set_sub_menu_show
(
0
,
id_block
->
self_id
,
HOTLIST_URL_MENUITEM
,
0
);
if
(
sub_menu
)
toolbox_delete_object
(
0
,
sub_menu
);
hotlist_setmenu_details
(
id_block
->
self_id
);
hotlist_set_menu_details
(
id_block
->
self_id
);
}
return
0
;
return
1
;
}
/*************************************************/
...
...
@@ -3896,14 +3920,17 @@ _kernel_oserror *hotlist_selection_box_start(void)
/*************************************************/
/* hotlist_null_drag_select_handler() */
/* */
/* This function is called as a null handler, */
/* it is responsible for selecting for selecting */
/* and deselecting items within and outside of */
/* the rubber box drag started by */
/* hotlist_selection_box_start */
/* This function is called as a null handler; */
/* it is responsible for selecting and */
/* deselecting items within and outside the */
/* rubber drag box started by */
/* hotlist_selection_box_start. */
/* */
/* Parameters are as standard for a Wimp event */
/* handler. */
/*************************************************/
int
hotlist_null_drag_select_handler
(
int
event_code
,
WimpPollBlock
*
event
,
IdBlock
*
id_block
,
void
*
handle
)
int
hotlist_null_drag_select_handler
(
int
event_code
,
WimpPollBlock
*
event
,
IdBlock
*
id_block
,
void
*
handle
)
{
WimpGetPointerInfoBlock
pointerblock
;
unsigned
int
item_height
,
item_dir_width
,
item_url_width
;
...
...
@@ -3998,13 +4025,22 @@ int hotlist_null_drag_select_handler(int event_code, WimpPollBlock *event, IdBlo
/*************************************************/
/*
_
hotlist_count_selected_items()
*/
/* hotlist_count_selected_items
_r
() */
/* */
/* This routine does all the work for */
/* hotlist_count_selected_items() */
/* Recursive back-end to */
/* hotlist_count_selected_items. */
/* */
/* Parameters: Pointer to a hotlist_item struct */
/* representing the first item in a */
/* directory to count. */
/* */
/* Returns: The number of items selected in */
/* that directory (selected */
/* directory items only count as 1; */
/* their contents are not counted). */
/*************************************************/
static
void
_
hotlist_count_selected_items
(
hotlist_item
*
list
)
static
void
hotlist_count_selected_items
_r
(
hotlist_item
*
list
)
{
while
(
list
)
{
...
...
@@ -4012,13 +4048,16 @@ static void _hotlist_count_selected_items(hotlist_item *list)
{
item_number
++
;
}
else
/* Only recurse through directories which are not selected */
else
{
/* Only recurse through directories which are not selected */
if
(
list
->
type
==
hl_directory
)
{
_
hotlist_count_selected_items
(
list
->
data
.
directory_content
);
hotlist_count_selected_items
_r
(
list
->
data
.
directory_content
);
}
}
list
=
list
->
next
;
}
}
...
...
@@ -4026,18 +4065,17 @@ static void _hotlist_count_selected_items(hotlist_item *list)
/*************************************************/
/* hotlist_count_selected_items() */
/* */
/* This routine counts the number of selected */
/* items */
/* */
/* Parameters: Pointer to a hotlist_item */
/* Count the number of items in a selection. */
/* */
/* Returns:
t
he number of selected items
*/
/* Returns:
T
he number of selected items
.
*/
/*************************************************/
static
unsigned
int
hotlist_count_selected_items
(
void
)
{
item_number
=
0
;
_hotlist_count_selected_items
(
hotlist_root
->
data
.
directory_content
);
hotlist_count_selected_items_r
(
hotlist_root
->
data
.
directory_content
);
return
item_number
;
}
...
...
@@ -4045,24 +4083,29 @@ static unsigned int hotlist_count_selected_items(void)
/* hotlist_contents_selected() */
/* */
/* Checks if all items and subdirectories are */
/* selected
*/
/* selected
.
*/
/* */
/* Parameters: Pointer to the first hotlist_item */
/* to check
*/
/* to check
.
*/
/* */
/* Returns: 1 if all items are selected
*/
/* 0
if
there are unselected items */
/* Returns: 1 if all items are selected
, else
*/
/* 0
(
there are unselected items
).
*/
/*************************************************/
static
unsigned
int
hotlist_contents_selected
(
hotlist_item
*
item
)
static
unsigned
int
hotlist_contents_selected
(
hotlist_item
*
item
)
{
while
(
item
)
{
/* Keep trying to find an unselected item and */
/* immediately return 0 if found. */
if
(
!
item
->
flags
&
HOTLIST_G_IS_SELECTED
)
return
0
;
if
(
item
->
type
==
hl_directory
)
{
if
(
!
hotlist_contents_selected
(
item
->
data
.
directory_content
))
return
0
;
}
item
=
item
->
next
;
}
return
1
;
...
...
@@ -4072,25 +4115,31 @@ static unsigned int hotlist_contents_selected(hotlist_item *item)
/* hotlist_no_contents_selected() */
/* */
/* Checks if all items and subdirectories are */
/* selected
*/
/*
un
selected
.
*/
/* */
/* Parameters: Pointer to the first hotlist_item */
/* to check
*/
/* to check
.
*/
/* */
/* Returns: 1 if all items are selected
*/
/*
0 if
there are
un
selected items
*/
/* Returns: 1 if all items are
un
selected
,
*/
/*
or 0 (
there are selected items
).
*/
/*************************************************/
static
unsigned
int
hotlist_no_contents_selected
(
hotlist_item
*
item
)
static
unsigned
int
hotlist_no_contents_selected
(
hotlist_item
*
item
)
{
while
(
item
)
while
(
item
)
{
/* Keep trying to find a selected item and */
/* immediately return 0 if found. */
if
(
item
->
flags
&
HOTLIST_G_IS_SELECTED
)
return
0
;
if
(
item
->
type
==
hl_directory
)
{
if
(
!
hotlist_no_contents_selected
(
item
->
data
.
directory_content
))
return
0
;
}
item
=
item
->
next
;
}
return
1
;
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment