2 Copyright 2004-2006, The AROS Development Team. All rights reserved.
6 #define MUIMASTER_YES_INLINE_STDARG
8 //#define DEBUG_NETWORKBROWSER
9 //#define DEBUG_SHOWUSERFILES
10 #define TXTBUFF_LEN 1024
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>
28 #include <proto/dos.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"
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 *********************************************************/
88 void, IconWindowIconList__HookFunc_ProcessIconListPrefsFunc
,
89 AROS_UFHA(struct Hook
*, hook
, A0
),
90 AROS_UFHA(APTR
*, obj
, A2
),
91 AROS_UFHA(APTR
, param
, A1
)
96 /* Get our private data */
97 Object
*self
= ( Object
*)obj
;
99 Class
*CLASS
= *( Class
**)param
;
103 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc()\n"));
105 GET(_app(self
), MUIA_Wanderer_Prefs
, &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
, ¤t_ListMode
);
117 GET(self
, MUIA_IconList_LabelText_Mode
, ¤t_TextMode
);
118 GET(self
, MUIA_IconList_LabelText_MaxLineLen
, ¤t_TextMaxLen
);
120 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_ProcessIconListPrefsFunc: Current = %d %d %d\n", current_ListMode
, current_TextMode
, current_TextMaxLen
));
122 ULONG prefs_ListMode
= 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
);
167 void, IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc
,
168 AROS_UFHA(struct Hook
*, hook
, A0
),
169 AROS_UFHA(APTR
*, obj
, A2
),
170 AROS_UFHA(APTR
, param
, A1
)
175 /* Get our private data */
176 Object
*self
= ( Object
*)obj
;
177 Object
*prefs
= NULL
;
178 Class
*CLASS
= *( Class
**)param
;
182 D(bug("[IconWindowIconList] IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc()\n"));
184 GET(_app(self
), MUIA_Wanderer_Prefs
, &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
, ¤t_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
);
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
238 TAG_MORE
, (IPTR
) message
->ops_AttrList
244 D(bug("[IconWindowIconList] IconWindowIconList__OM_NEW: SELF = %x\n", self
));
245 data
->iwcd_ProcessIconListPrefs_hook
.h_Entry
= ( HOOKFUNC
)IconWindowIconList__HookFunc_ProcessIconListPrefsFunc
;
251 IPTR
IconWindowIconList__OM_SET(Class
*CLASS
, Object
*self
, struct opSet
*message
)
255 struct TagItem
*tstate
= message
->ops_AttrList
, *tag
;
257 while ((tag
= NextTagItem((const struct TagItem
**)&tstate
)) != NULL
)
261 case MUIA_Background
:
263 D(bug("[IconWindowIconList] IconWindowIconList__OM_SET: MUIA_Background\n"));
266 case MUIA_IconWindow_Window
:
268 data
->iwcd_IconWindow
= tag
->ti_Data
;
273 return DoSuperMethodA(CLASS
, self
, (Msg
) message
);
277 IPTR
IconWindowIconList__OM_GET(Class
*CLASS
, Object
*self
, struct opGet
*message
)
280 IPTR
*store
= message
->opg_Storage
;
283 switch (message
->opg_AttrID
)
286 rv
= DoSuperMethodA(CLASS
, self
, (Msg
) message
);
292 IPTR IconWindowIconList__MUIM_Setup
294 Class
*CLASS
, Object
*self
, Msg message
299 if (!DoSuperMethodA(CLASS
, self
, message
)) return FALSE
;
301 Object
*prefs
= NULL
;
303 GET(_app(self
), MUIA_Wanderer_Prefs
, &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 =) */
315 prefs
, MUIM_Notify
, MUIA_IconList_IconListMode
, MUIV_EveryTime
,
317 MUIM_CallHook
, &data
->iwcd_ProcessIconListPrefs_hook
, (IPTR
)CLASS
322 prefs
, MUIM_Notify
, MUIA_IconList_LabelText_Mode
, MUIV_EveryTime
,
324 MUIM_CallHook
, &data
->iwcd_ProcessIconListPrefs_hook
, (IPTR
)CLASS
329 prefs
, MUIM_Notify
, MUIA_IconList_LabelText_MaxLineLen
, MUIV_EveryTime
,
331 MUIM_CallHook
, &data
->iwcd_ProcessIconListPrefs_hook
, (IPTR
)CLASS
335 if ((BOOL
)XGET(_win(self
), MUIA_IconWindow_IsRoot
))
339 ((struct IconWindowIconVolumeList_DATA
*)data
)->iwvcd_UpdateNetworkPrefs_hook
.h_Entry
= ( HOOKFUNC
)IconWindowIconList__HookFunc_UpdateNetworkPrefsFunc
;
343 prefs
, MUIM_Notify
, MUIA_IconWindowExt_NetworkBrowser_Show
, MUIV_EveryTime
,
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
);
363 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Window_Setup: Couldnt add IDCMP EventHandler!\n"));
367 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Window_Setup: Setup complete!\n"));
372 IPTR IconWindowIconList__MUIM_Cleanup
374 Class
*CLASS
, Object
*self
, Msg message
379 Object
*prefs
= NULL
;
381 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Cleanup()\n"));
382 GET(_app(self
), MUIA_Wanderer_Prefs
, &prefs
);
389 MUIM_KillNotifyObj
, MUIA_IconList_IconListMode
, (IPTR
) self
394 MUIM_KillNotifyObj
, MUIA_IconList_LabelText_Mode
, (IPTR
) self
399 MUIM_KillNotifyObj
, MUIA_IconList_LabelText_MaxLineLen
, (IPTR
) self
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
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
);
443 IPTR IconWindowIconList__MUIM_DrawBackground
445 Class
*CLASS
, Object
*self
, struct MUIP_DrawBackground
*message
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"));
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
);
506 IPTR IconWindowIconList__MUIM_IconList_Update
508 Class
*CLASS
, Object
*self
, struct MUIP_IconList_Update
*message
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
);
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
;
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..",
548 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_IconList_Update: NetworkBrowser Icon DOB @ %x\n", _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
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
;
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..",
595 D(bug("[IconWindowIconList] IconWindowIconList__MUIM_Window_Setup: UserFiles Icon DOB @ %x\n", _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
609 if (sort_list
) DoMethod(self
, MUIM_IconList_Sort
);
615 DoMethod(self
, MUIM_IconList_Clear
);
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
*,
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
*,
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
*,
654 MUIM_DrawBackground
, Msg
,
655 MUIM_HandleEvent
, Msg
,
656 MUIM_IconList_Update
, struct MUIP_IconList_Update
*