add casts to zune macros to silence some warnings
[tangerine.git] / workbench / system / Wanderer / iconwindowcontents.c
blobb8adbe08718d0f67011fa4891371dabaca90889f
1 /*
2 Copyright 2004-2006, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #define MUIMASTER_YES_INLINE_STDARG
8 //#define DEBUG_NETWORKBROWSER
9 //#define DEBUG_SHOWUSERFILES
10 #define TXTBUFF_LEN 1024
12 #define DEBUG 0
13 #include <aros/debug.h>
15 #include <exec/types.h>
16 #include <libraries/mui.h>
17 #include <zune/customclasses.h>
19 #include <proto/utility.h>
20 #include <proto/intuition.h>
21 #include <proto/graphics.h>
22 #include <proto/muimaster.h>
23 #include <proto/exec.h>
24 #include <proto/datatypes.h>
25 #include <proto/icon.h>
27 #include <dos/dos.h>
28 #include <proto/dos.h>
30 #include <stdio.h>
31 #include <string.h>
33 #include <intuition/screens.h>
34 #include <datatypes/pictureclass.h>
35 #include <clib/macros.h>
37 #include "../../libs/muimaster/classes/iconlist.h"
38 #include "../../libs/muimaster/classes/iconlist_attributes.h"
40 #include "wanderer.h"
41 #include "wandererprefs.h"
42 #include "iconwindow.h"
43 #include "iconwindowcontents.h"
45 extern struct IconWindow_BackFill_Descriptor *iconwindow_BackFill_Active;
47 #define BG_DRAWFLAG 0xf00dd00f
49 /*** Instance Data **********************************************************/
51 struct IconWindowIconList_DATA
53 Object *iwcd_IconWindow;
54 struct MUI_EventHandlerNode iwcd_EventHandlerNode;
55 struct Hook iwcd_ProcessIconListPrefs_hook;
58 struct IconWindowIconVolumeList_DATA
60 Object *iwcd_IconWindow;
61 struct MUI_EventHandlerNode iwcd_EventHandlerNode;
62 struct Hook iwcd_ProcessIconListPrefs_hook;
63 struct Hook iwvcd_UpdateNetworkPrefs_hook;
64 IPTR iwvcd_ShowNetworkBrowser;
65 IPTR iwvcd_ShowUserFolder;
66 char *iwvcd_UserFolderPath;
70 struct IconWindowIconNetworkBrowserList_DATA
72 Object *iwcd_IconWindow;
73 struct MUI_EventHandlerNode iwcd_EventHandlerNode;
74 struct Hook iwcd_ProcessIconListPrefs_hook;
75 struct Hook iwnbcd_UpdateNetworkPrefs_hook;
76 struct List iwnbcd_NetworkClasses;
79 static char __icwc_intern_TxtBuff[TXTBUFF_LEN];
81 /*** Macros *****************************************************************/
82 #define SETUP_INST_DATA struct IconWindowIconList_DATA *data = INST_DATA(CLASS, self)
84 #define IconWindowIconDrawerList_DATA IconWindowIconList_DATA
86 /*** Hook functions *********************************************************/
87 AROS_UFH3(
88 void, IconWindowIconList__HookFunc_ProcessIconListPrefsFunc,
89 AROS_UFHA(struct Hook *, hook, A0),
90 AROS_UFHA(APTR *, obj, A2),
91 AROS_UFHA(APTR, param, A1)
94 AROS_USERFUNC_INIT
96 /* Get our private data */
97 Object *self = ( Object *)obj;
98 Object *prefs = NULL;
99 Class *CLASS = *( Class **)param;
101 SETUP_INST_DATA;
103 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc()\n"));
105 GET(_app(self), MUIA_Wanderer_Prefs, &prefs);
107 if (prefs)
109 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc: Setting IconList options ..\n"));
110 BOOL options_changed = FALSE;
112 ULONG current_ListMode = 0,
113 current_TextMode = 0,
114 current_TextMaxLen = 0;
116 GET(self, MUIA_IconList_IconListMode, &current_ListMode);
117 GET(self, MUIA_IconList_LabelText_Mode, &current_TextMode);
118 GET(self, MUIA_IconList_LabelText_MaxLineLen, &current_TextMaxLen);
120 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc: Current = %d %d %d\n", current_ListMode, current_TextMode, current_TextMaxLen));
122 ULONG prefs_ListMode = 0,
123 prefs_TextMode = 0,
124 prefs_TextMaxLen = 0,
125 prefs_Processing = 0;
127 GET(prefs, MUIA_IconList_IconListMode , &prefs_ListMode);
128 GET(prefs, MUIA_IconList_LabelText_Mode, &prefs_TextMode);
129 GET(prefs, MUIA_IconList_LabelText_MaxLineLen, &prefs_TextMaxLen);
130 GET(prefs, MUIA_WandererPrefs_Processing, &prefs_Processing);
132 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc: Prefs = %d %d %d\n", prefs_ListMode, prefs_TextMode, prefs_TextMaxLen));
134 if (current_ListMode != prefs_ListMode)
136 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc: IconList ListMode changed - updating ..\n"));
137 options_changed = TRUE;
138 SET(self, MUIA_IconList_IconListMode, prefs_ListMode);
140 if (current_TextMode != prefs_TextMode)
142 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc: IconList TextRenderMode changed - updating ..\n"));
143 options_changed = TRUE;
144 SET(self, MUIA_IconList_LabelText_Mode, prefs_TextMode);
146 if (current_TextMaxLen != prefs_TextMaxLen)
148 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc: IconList Max Text Length changed - updating ..\n"));
149 options_changed = TRUE;
150 SET(self, MUIA_IconList_LabelText_MaxLineLen, prefs_TextMaxLen);
153 if ((options_changed) && !(prefs_Processing))
155 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc: IconList Options have changed, causing an update ..\n"));
156 DoMethod(self, MUIM_IconList_Update);
158 else if (data->iwcd_IconWindow)
160 SET(data->iwcd_IconWindow, MUIA_IconWindow_Changed, TRUE);
163 AROS_USERFUNC_EXIT
166 AROS_UFH3(
167 void, IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc,
168 AROS_UFHA(struct Hook *, hook, A0),
169 AROS_UFHA(APTR *, obj, A2),
170 AROS_UFHA(APTR, param, A1)
173 AROS_USERFUNC_INIT
175 /* Get our private data */
176 Object *self = ( Object *)obj;
177 Object *prefs = NULL;
178 Class *CLASS = *( Class **)param;
180 SETUP_INST_DATA;
182 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc()\n"));
184 GET(_app(self), MUIA_Wanderer_Prefs, &prefs);
186 if (prefs)
188 BOOL options_changed = FALSE;
189 IPTR prefs_Processing = 0;
191 GET(prefs, MUIA_WandererPrefs_Processing, &prefs_Processing);
193 if ((BOOL)XGET(_win(self), MUIA_IconWindow_IsRoot))
195 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc: Setting ROOT view Network options ..\n"));
196 ULONG current_ShowNetwork = 0;
198 GET(self, MUIA_IconWindowExt_NetworkBrowser_Show, &current_ShowNetwork);
200 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc: Current = %d\n", current_ShowNetwork));
202 ULONG prefs_ShowNetwork = 0;
204 GET(prefs, MUIA_IconWindowExt_NetworkBrowser_Show, &prefs_ShowNetwork);
206 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc: Prefs = %d\n", prefs_ShowNetwork));
208 if ((BOOL)current_ShowNetwork != (BOOL)prefs_ShowNetwork)
210 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc: ROOT view Network prefs changed - updating ..\n"));
211 options_changed = TRUE;
212 ((struct IconWindowIconVolumeList_DATA *)data)->iwvcd_ShowNetworkBrowser = prefs_ShowNetwork;
215 if ((options_changed) && !(prefs_Processing))
217 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc: Network prefs changed, causing an update ..\n"));
218 DoMethod(self, MUIM_IconList_Update);
220 else if (data->iwcd_IconWindow)
222 SET(data->iwcd_IconWindow, MUIA_IconWindow_Changed, TRUE);
225 AROS_USERFUNC_EXIT
228 /*** Methods ****************************************************************/
230 Object *IconWindowIconList__OM_NEW(Class *CLASS, Object *self, struct opSet *message)
232 D(bug("[IconWindowIconList] IconWindowIconList__OM_NEW()\n"));
234 self = (Object *) DoSuperNewTags
236 CLASS, self, NULL,
237 MUIA_CycleChain, 1,
238 TAG_MORE, (IPTR) message->ops_AttrList
241 if (self != NULL)
243 SETUP_INST_DATA;
244 D(bug("[IconWindowIconList] IconWindowIconList__OM_NEW: SELF = %x\n", self));
245 data->iwcd_ProcessIconListPrefs_hook.h_Entry = ( HOOKFUNC )IconWindowIconList__HookFunc_ProcessIconListPrefsFunc;
248 return self;
251 IPTR IconWindowIconList__OM_SET(Class *CLASS, Object *self, struct opSet *message)
253 SETUP_INST_DATA;
255 struct TagItem *tstate = message->ops_AttrList, *tag;
257 while ((tag = NextTagItem((const struct TagItem**)&tstate)) != NULL)
259 switch (tag->ti_Tag)
261 case MUIA_Background:
263 D(bug("[IconWindowIconList] IconWindowIconList__OM_SET: MUIA_Background\n"));
264 break;
266 case MUIA_IconWindow_Window:
268 data->iwcd_IconWindow = tag->ti_Data;
269 break;
273 return DoSuperMethodA(CLASS, self, (Msg) message);
277 IPTR IconWindowIconList__OM_GET(Class *CLASS, Object *self, struct opGet *message)
279 SETUP_INST_DATA;
280 IPTR *store = message->opg_Storage;
281 IPTR rv = TRUE;
283 switch (message->opg_AttrID)
285 default:
286 rv = DoSuperMethodA(CLASS, self, (Msg) message);
289 return rv;
292 IPTR IconWindowIconList__MUIM_Setup
294 Class *CLASS, Object *self, Msg message
297 SETUP_INST_DATA;
299 if (!DoSuperMethodA(CLASS, self, message)) return FALSE;
301 Object *prefs = NULL;
303 GET(_app(self), MUIA_Wanderer_Prefs, &prefs);
305 if (prefs)
307 /* Set our initial options */
308 SET(self, MUIA_IconList_IconListMode, XGET(prefs, MUIA_IconList_IconListMode ));
309 SET(self, MUIA_IconList_LabelText_Mode, XGET(prefs, MUIA_IconList_LabelText_Mode));
310 SET(self, MUIA_IconList_LabelText_MaxLineLen, XGET(prefs, MUIA_IconList_LabelText_MaxLineLen));
312 /* Configure notifications incase they get updated =) */
313 DoMethod
315 prefs, MUIM_Notify, MUIA_IconList_IconListMode, MUIV_EveryTime,
316 (IPTR) self, 3,
317 MUIM_CallHook, &data->iwcd_ProcessIconListPrefs_hook, (IPTR)CLASS
320 DoMethod
322 prefs, MUIM_Notify, MUIA_IconList_LabelText_Mode, MUIV_EveryTime,
323 (IPTR) self, 3,
324 MUIM_CallHook, &data->iwcd_ProcessIconListPrefs_hook, (IPTR)CLASS
327 DoMethod
329 prefs, MUIM_Notify, MUIA_IconList_LabelText_MaxLineLen, MUIV_EveryTime,
330 (IPTR) self, 3,
331 MUIM_CallHook, &data->iwcd_ProcessIconListPrefs_hook, (IPTR)CLASS
335 if ((BOOL)XGET(_win(self), MUIA_IconWindow_IsRoot))
337 if (prefs)
339 ((struct IconWindowIconVolumeList_DATA *)data)->iwvcd_UpdateNetworkPrefs_hook.h_Entry = ( HOOKFUNC )IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc;
341 DoMethod
343 prefs, MUIM_Notify, MUIA_IconWindowExt_NetworkBrowser_Show, MUIV_EveryTime,
344 (IPTR) self, 3,
345 MUIM_CallHook, &((struct IconWindowIconVolumeList_DATA *)data)->iwvcd_UpdateNetworkPrefs_hook, (IPTR)CLASS
349 if (muiRenderInfo(self))
351 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Window_Setup: Setting up EventHandler for (IDCMP_DISKINSERTED | IDCMP_DISKREMOVED)\n"));
353 data->iwcd_EventHandlerNode.ehn_Priority = 1;
354 data->iwcd_EventHandlerNode.ehn_Flags = MUI_EHF_GUIMODE;
355 data->iwcd_EventHandlerNode.ehn_Object = self;
356 data->iwcd_EventHandlerNode.ehn_Class = CLASS;
357 data->iwcd_EventHandlerNode.ehn_Events = IDCMP_DISKINSERTED | IDCMP_DISKREMOVED;
359 DoMethod(_win(self), MUIM_Window_AddEventHandler, &data->iwcd_EventHandlerNode);
361 else
363 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Window_Setup: Couldnt add IDCMP EventHandler!\n"));
367 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Window_Setup: Setup complete!\n"));
369 return TRUE;
372 IPTR IconWindowIconList__MUIM_Cleanup
374 Class *CLASS, Object *self, Msg message
377 SETUP_INST_DATA;
379 Object *prefs = NULL;
381 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Cleanup()\n"));
382 GET(_app(self), MUIA_Wanderer_Prefs, &prefs);
384 if (prefs)
386 DoMethod
388 prefs,
389 MUIM_KillNotifyObj, MUIA_IconList_IconListMode, (IPTR) self
391 DoMethod
393 prefs,
394 MUIM_KillNotifyObj, MUIA_IconList_LabelText_Mode, (IPTR) self
396 DoMethod
398 prefs,
399 MUIM_KillNotifyObj, MUIA_IconList_LabelText_MaxLineLen, (IPTR) self
401 DoMethod
403 prefs,
404 MUIM_KillNotifyObj, MUIA_IconWindowExt_NetworkBrowser_Show, (IPTR) self
409 if ((BOOL)XGET(_win(self), MUIA_IconWindow_IsRoot))
411 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Cleanup: (ROOT WINDOW) Removing our Disk Event Handler\n"));
412 DoMethod(_win(self), MUIM_Window_RemEventHandler, &data->iwcd_EventHandlerNode);
415 return DoSuperMethodA(CLASS, self, message);
418 IPTR IconWindowIconList__MUIM_HandleEvent
420 Class *CLASS, Object *self, struct MUIP_HandleEvent *message
423 SETUP_INST_DATA;
425 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_HandleEvent()\n"));
426 struct IntuiMessage *imsg = message->imsg;
428 if(imsg->Class == IDCMP_DISKINSERTED)
430 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_HandleEvent: IDCMP_DISKINSERTED\n"));
431 DoMethod(self, MUIM_IconList_Update);
432 return(MUI_EventHandlerRC_Eat);
434 else if (imsg->Class == IDCMP_DISKREMOVED)
436 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_HandleEvent: IDCMP_DISKREMOVED\n"));
437 DoMethod(self, MUIM_IconList_Update);
438 return(MUI_EventHandlerRC_Eat);
440 return 0;
443 IPTR IconWindowIconList__MUIM_DrawBackground
445 Class *CLASS, Object *self, struct MUIP_DrawBackground *message
448 SETUP_INST_DATA;
450 IPTR retVal = (IPTR)TRUE;
451 IPTR clip = NULL, adjust_left = 0, adjust_top = 0;
453 D(bug("[IconWindow] IconWindowIconList__MUIM_DrawBackground()\n"));
455 if ((iconwindow_BackFill_Active == NULL) ||
456 (data->iwcd_IconWindow == NULL))
458 D(bug("[IconWindow] IconWindowIconList__MUIM_DrawBackground: No Backfill support/Window not set .. causing parent class to render\n"));
459 goto iwc_ParentBackground;
462 struct RastPort *DrawBackGround_RastPort = _rp(self);
463 struct IconWindowBackFillMsg DrawBackGround_BackFillMsg;
465 DrawBackGround_BackFillMsg.Layer = DrawBackGround_RastPort->Layer;
467 DrawBackGround_BackFillMsg.AreaBounds.MinX = _mleft(self);
468 DrawBackGround_BackFillMsg.AreaBounds.MinY = _mtop(self);
469 DrawBackGround_BackFillMsg.AreaBounds.MaxX = (_mleft(self) + _mwidth(self));
470 DrawBackGround_BackFillMsg.AreaBounds.MaxY = (_mtop(self) + _mheight(self));
472 DrawBackGround_BackFillMsg.DrawBounds.MinX = message->left;
473 DrawBackGround_BackFillMsg.DrawBounds.MinY = message->top;
474 DrawBackGround_BackFillMsg.DrawBounds.MaxX = (message->left + message->width);
475 DrawBackGround_BackFillMsg.DrawBounds.MaxY = (message->top + message->height);
477 /* Offset into source image (ala scroll bar position) */
478 DrawBackGround_BackFillMsg.OffsetX = message->xoffset;
479 DrawBackGround_BackFillMsg.OffsetY = message->yoffset;
481 D(bug("[IconWindow] IconWindowIconList__MUIM_DrawBackground: RastPort @ %x\n", DrawBackGround_RastPort));
483 if ((retVal = DoMethod(data->iwcd_IconWindow, MUIM_IconWindow_BackFill_DrawBackground, XGET(data->iwcd_IconWindow, MUIA_IconWindow_BackFillData), &DrawBackGround_BackFillMsg, DrawBackGround_RastPort)) == (IPTR)TRUE)
485 D(bug("[IconWindow] IconWindowIconList__MUIM_DrawBackground: Backfill module rendered background ..\n"));
486 return retVal;
488 D(bug("[IconWindow] IconWindowIconList__MUIM_DrawBackground: Backfill module failed to render background ..\n"));
490 iwc_ParentBackground:
492 clip = MUI_AddClipping(muiRenderInfo(self), message->left, message->top, message->width, message->height);
494 message->width = _mwidth(self);
495 message->height = _mheight(self);
496 message->left = _mleft(self);
497 message->top = _mtop(self);
499 retVal = DoSuperMethodA(CLASS, self, (Msg) message);
501 MUI_RemoveClipping(muiRenderInfo(self),clip);
503 return retVal;
506 IPTR IconWindowIconList__MUIM_IconList_Update
508 Class *CLASS, Object *self, struct MUIP_IconList_Update *message
511 SETUP_INST_DATA;
513 IPTR retVal = (IPTR)TRUE;
515 if ((BOOL)XGET(_win(self), MUIA_IconWindow_IsRoot))
517 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_IconList_Update: (ROOT WINDOW) Causing parent to update\n"));
518 retVal = DoSuperMethodA(CLASS, self, (Msg) message);
520 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_IconList_Update: Check if we should show NetworkBrowser Icon ..\n"));
522 Object *prefs = NULL;
523 BOOL sort_list = FALSE;
525 GET(_app(self), MUIA_Wanderer_Prefs, &prefs);
527 if (prefs)
529 struct IconWindowIconVolumeList_DATA *volumel_data = (struct IconWindowIconVolumeList_DATA *)data;
531 GET(prefs, MUIA_IconWindowExt_NetworkBrowser_Show, &volumel_data->iwvcd_ShowNetworkBrowser);
533 #if defined(DEBUG_NETWORKBROWSER)
534 volumel_data->iwvcd_ShowNetworkBrowser = TRUE;
535 #endif
537 if (volumel_data->iwvcd_ShowNetworkBrowser)
539 struct DiskObject *_nb_dob = NULL;
540 _nb_dob = GetIconTags
542 "ENV:SYS/def_NetworkHost",
543 ICONGETA_FailIfUnavailable, FALSE,
544 ICONGETA_Label, (IPTR)"Network Access..",
545 TAG_DONE
548 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_IconList_Update: NetworkBrowser Icon DOB @ %x\n", _nb_dob));
550 if (_nb_dob)
552 struct Node *this_entry = NULL;
553 if (this_entry = DoMethod(self, MUIM_IconList_CreateEntry, (IPTR)"?wanderer.networkbrowse?", (IPTR)"Network Access..", (IPTR)NULL, (IPTR)_nb_dob))
555 this_entry->ln_Pri = 3; /// Network Access gets Priority 3 so its displayed after special dirs
556 sort_list = TRUE;
557 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_IconList_Update: NetworkBrowser Icon Entry @ %x\n", this_entry));
562 GET(prefs, MUIA_IconWindowExt_UserFiles_ShowFilesFolder, &volumel_data->iwvcd_ShowUserFolder);
564 #if defined(DEBUG_SHOWUSERFILES)
565 volumel_data->iwvcd_ShowUserFolder = TRUE;
566 #endif
567 if (volumel_data->iwvcd_ShowUserFolder)
569 if (GetVar("SYS/UserFilesLocation", __icwc_intern_TxtBuff, TXTBUFF_LEN, GVF_GLOBAL_ONLY) != -1)
571 char * userfiles_path = NULL;
573 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_IconList_Update: SYS/UserFilesLocation = '%s'\n", __icwc_intern_TxtBuff));
575 if ((userfiles_path = AllocVec(strlen(__icwc_intern_TxtBuff) + 1, MEMF_CLEAR|MEMF_PUBLIC)) != NULL)
577 struct DiskObject *_nb_dob = NULL;
579 volumel_data->iwvcd_UserFolderPath = userfiles_path;
581 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_IconList_Update: UserFilesLocation Path storage @ %x\n", userfiles_path));
583 strcpy(userfiles_path, __icwc_intern_TxtBuff);
585 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_IconList_Update: UserFilesLocation Path storage contains '%s'\n", userfiles_path));
587 _nb_dob = GetIconTags
589 "ENV:SYS/def_UserHome",
590 ICONGETA_FailIfUnavailable, FALSE,
591 ICONGETA_Label, (IPTR)"User Files..",
592 TAG_DONE
595 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Window_Setup: UserFiles Icon DOB @ %x\n", _nb_dob));
597 if (_nb_dob)
599 struct Node *this_entry = NULL;
600 if (this_entry = DoMethod(self, MUIM_IconList_CreateEntry, userfiles_path, (IPTR)"User Files..", (IPTR)NULL, (IPTR)_nb_dob))
602 this_entry->ln_Pri = 5; /// Special dirs get Priority 5
603 sort_list = TRUE;
609 if (sort_list) DoMethod(self, MUIM_IconList_Sort);
612 else
614 retVal = TRUE;
615 DoMethod(self, MUIM_IconList_Clear);
618 return retVal;
621 /*** Setup ******************************************************************/
622 ICONWINDOWICONDRAWERLIST_CUSTOMCLASS
624 IconWindowIconDrawerList, IconWindowIconList, NULL, MUIC_IconDrawerList, NULL,
625 OM_NEW, struct opSet *,
626 OM_SET, struct opSet *,
627 OM_GET, struct opGet *,
628 MUIM_Setup, Msg,
629 MUIM_Cleanup, Msg,
630 MUIM_DrawBackground, Msg
633 ICONWINDOWICONVOLUMELIST_CUSTOMCLASS
635 IconWindowIconVolumeList, IconWindowIconList, NULL, MUIC_IconVolumeList, NULL,
636 OM_NEW, struct opSet *,
637 OM_SET, struct opSet *,
638 OM_GET, struct opGet *,
639 MUIM_Setup, Msg,
640 MUIM_Cleanup, Msg,
641 MUIM_DrawBackground, Msg,
642 MUIM_HandleEvent, Msg,
643 MUIM_IconList_Update, struct MUIP_IconList_Update *
646 ICONWINDOWICONNETWORKBROWSERLIST_CUSTOMCLASS
648 IconWindowIconNetworkBrowserList, IconWindowIconList, NULL, MUIC_IconList, NULL,
649 OM_NEW, struct opSet *,
650 OM_SET, struct opSet *,
651 OM_GET, struct opGet *,
652 MUIM_Setup, Msg,
653 MUIM_Cleanup, Msg,
654 MUIM_DrawBackground, Msg,
655 MUIM_HandleEvent, Msg,
656 MUIM_IconList_Update, struct MUIP_IconList_Update *