Use hardcoded settings for VIA VT1708S (they are reported to work
[AROS.git] / workbench / prefs / Zune / listview.c
blob0f5053d3320de71c725a590b08fc4182a767fadb
1 /*
2 Copyright (C) 2012, The AROS Development Team.
3 $Id$
4 */
6 #define DEBUG 0
7 #include <aros/debug.h>
9 #include <proto/intuition.h>
10 #include <proto/utility.h>
11 #include <proto/muimaster.h>
12 #include <libraries/mui.h>
13 #include <devices/rawkeycodes.h>
14 #include <zune/customclasses.h>
16 #ifdef __AROS__
17 #include <proto/alib.h>
18 #endif
20 #include "zunestuff.h"
22 IPTR ClassListview__OM_NEW(struct IClass *CLASS, Object *obj, struct opSet *message)
24 struct ClassListview_DATA *data = NULL;
26 obj = (Object *)DoSuperNewTags(CLASS, obj, NULL,
27 TAG_MORE, (IPTR) message->ops_AttrList);
29 if (!obj) return FALSE;
31 data = INST_DATA(CLASS, obj);
33 data->list = (Object *)GetTagData(MUIA_Listview_List, (IPTR)NULL, message->ops_AttrList);
35 data->ehn.ehn_Events = IDCMP_RAWKEY;
36 data->ehn.ehn_Priority = 0;
37 data->ehn.ehn_Flags = 0;
38 data->ehn.ehn_Object = obj;
39 data->ehn.ehn_Class = CLASS;
41 return (IPTR)obj;
44 IPTR ClassListview__MUIM_Setup(struct IClass *CLASS, Object *obj, struct MUIP_Setup *message)
46 struct ClassListview_DATA *data = INST_DATA(CLASS, obj);
48 if (!DoSuperMethodA(CLASS, obj, (Msg) message)) return (IPTR)NULL;
50 DoMethod(_win(obj), MUIM_Window_AddEventHandler, (IPTR)&data->ehn);
52 return 1;
55 IPTR ClassListview__MUIM_Cleanup(struct IClass *CLASS, Object *obj, struct MUIP_Cleanup *message)
57 struct ClassListview_DATA *data = INST_DATA(CLASS, obj);
59 DoMethod(_win(obj), MUIM_Window_RemEventHandler, (IPTR)&data->ehn);
61 return DoSuperMethodA(CLASS, obj, (Msg)message);
64 IPTR ClassListview__MUIM_HandleEvent(struct IClass *CLASS, Object *obj, struct MUIP_HandleEvent *message)
66 struct ClassListview_DATA *data = INST_DATA(CLASS, obj);
67 IPTR retval = MUI_EventHandlerRC_Eat;
69 if ((message->imsg) && (message->imsg->Class == IDCMP_RAWKEY) && ((IPTR)obj == XGET(_win(obj), MUIA_Window_ActiveObject)))
71 switch(message->imsg->Code)
73 case RAWKEY_HOME:
74 SET(data->list, MUIA_List_Active, MUIV_List_Active_Top);
75 break;
76 case RAWKEY_END:
77 SET(data->list, MUIA_List_Active, MUIV_List_Active_Bottom);
78 break;
79 case RAWKEY_PAGEUP:
80 SET(data->list, MUIA_List_Active, MUIV_List_Active_PageUp);
81 break;
82 case RAWKEY_PAGEDOWN:
83 SET(data->list, MUIA_List_Active, MUIV_List_Active_PageDown);
84 break;
85 case RAWKEY_UP:
86 SET(data->list, MUIA_List_Active, MUIV_List_Active_Up);
87 break;
88 case RAWKEY_DOWN:
89 SET(data->list, MUIA_List_Active, MUIV_List_Active_Down);
90 break;
91 default:
92 retval = 0;
93 break;
96 else
97 retval = 0;
99 return retval;
102 BOOPSI_DISPATCHER(IPTR, ClassListview_Dispatcher, CLASS, self, message)
104 switch (message->MethodID)
106 case OM_NEW:
107 return ClassListview__OM_NEW(CLASS, self, (struct opSet *)message);
109 case MUIM_Setup:
110 return ClassListview__MUIM_Setup(CLASS, self, (struct MUIP_Setup *)message);
112 case MUIM_Cleanup:
113 return ClassListview__MUIM_Cleanup(CLASS, self, (struct MUIP_Cleanup *)message);
115 case MUIM_HandleEvent:
116 return ClassListview__MUIM_HandleEvent(CLASS, self, (struct MUIP_HandleEvent *)message);
118 default:
119 return DoSuperMethodA(CLASS, self, message);
122 return 0;
124 BOOPSI_DISPATCHER_END