diff options
47 files changed, 1982 insertions, 1842 deletions
diff --git a/apps/SOURCES b/apps/SOURCES index 3548980f28..a5dfc8bc5f 100644 --- a/apps/SOURCES +++ b/apps/SOURCES | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifdef ROCKBOX_HAS_LOGF | 1 | #ifdef ROCKBOX_HAS_LOGF |
2 | logfdisp.c | 2 | logfdisp.c |
3 | #endif | 3 | #endif |
4 | action.c | ||
4 | alarm_menu.c | 5 | alarm_menu.c |
5 | abrepeat.c | 6 | abrepeat.c |
6 | bookmark.c | 7 | bookmark.c |
@@ -81,3 +82,18 @@ eq_menu.c | |||
81 | #endif | 82 | #endif |
82 | metadata.c | 83 | metadata.c |
83 | tagcache.c | 84 | tagcache.c |
85 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) \ | ||
86 | || (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
87 | keymaps/keymap-h1x0_h3x0.c | ||
88 | #elif ((CONFIG_KEYPAD == IPOD_4G_PAD) \ | ||
89 | || (CONFIG_KEYPAD == IPOD_3G_PAD)) | ||
90 | keymaps/keymap-ipod.c | ||
91 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
92 | keymaps/keymap-recorder.c | ||
93 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
94 | keymaps/keymap-ondio.c | ||
95 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
96 | keymaps/keymap-player.c | ||
97 | #elif CONFIG_KEYPAD == IAUDIO_X5_PAD | ||
98 | keymaps/keymap-x5.c | ||
99 | #endif | ||
diff --git a/apps/action.c b/apps/action.c new file mode 100644 index 0000000000..fc5a8b88a9 --- /dev/null +++ b/apps/action.c | |||
@@ -0,0 +1,215 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2006 Jonathan Gordon | ||
10 | * | ||
11 | * All files in this archive are subject to the GNU General Public License. | ||
12 | * See the file COPYING in the source tree root for full license agreement. | ||
13 | * | ||
14 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
15 | * KIND, either express or implied. | ||
16 | * | ||
17 | ****************************************************************************/ | ||
18 | #include <stdio.h> | ||
19 | #include <string.h> | ||
20 | #include <stdlib.h> | ||
21 | |||
22 | #include "config.h" | ||
23 | #include "button.h" | ||
24 | #include "action.h" | ||
25 | #include "kernel.h" | ||
26 | #include "debug.h" | ||
27 | |||
28 | bool ignore_until_release = false; | ||
29 | int last_button = BUTTON_NONE; | ||
30 | int soft_unlock_action = ACTION_NONE; | ||
31 | bool allow_remote_actions = true; | ||
32 | /* | ||
33 | * do_button_check is the worker function for get_default_action. | ||
34 | * returns ACTION_UNKNOWN or the requested return value from the list. | ||
35 | */ | ||
36 | inline int do_button_check(struct button_mapping *items, | ||
37 | int button, int last_button, int *start) | ||
38 | { | ||
39 | int i = 0; | ||
40 | int ret = ACTION_UNKNOWN; | ||
41 | if (items == NULL) | ||
42 | return ACTION_UNKNOWN; | ||
43 | |||
44 | /* Special case to make the keymaps smaller */ | ||
45 | if(button & BUTTON_REPEAT) | ||
46 | last_button &= ~BUTTON_REPEAT; | ||
47 | |||
48 | while (items[i].button_code != BUTTON_NONE) | ||
49 | { | ||
50 | if (items[i].button_code == button) | ||
51 | { | ||
52 | if (items[i].pre_button_code != BUTTON_NONE) | ||
53 | { | ||
54 | if ((items[i].pre_button_code == last_button) || | ||
55 | (items[i].button_code == last_button)) | ||
56 | { | ||
57 | ret = items[i].action_code; | ||
58 | break; | ||
59 | } | ||
60 | } | ||
61 | else | ||
62 | { | ||
63 | ret = items[i].action_code; | ||
64 | break; | ||
65 | } | ||
66 | } | ||
67 | i++; | ||
68 | } | ||
69 | *start = i; | ||
70 | return ret; | ||
71 | } | ||
72 | |||
73 | inline int get_next_context(struct button_mapping *items, int i) | ||
74 | { | ||
75 | while (items[i].button_code != BUTTON_NONE) | ||
76 | i++; | ||
77 | return (items[i].action_code == ACTION_NONE ) ? | ||
78 | CONTEXT_STD : | ||
79 | items[i].action_code; | ||
80 | } | ||
81 | /* | ||
82 | * int get_action_worker(int context, struct button_mapping *user_mappings, | ||
83 | int timeout) | ||
84 | This function searches the button list for the given context for the just | ||
85 | pressed button. | ||
86 | If there is a match it returns the value from the list. | ||
87 | If there is no match.. | ||
88 | the last item in the list "points" to the next context in a chain | ||
89 | so the "chain" is followed until the button is found. | ||
90 | putting ACTION_NONE will get CONTEXT_STD which is always the last list checked. | ||
91 | |||
92 | Timeout can be TIMEOUT_NOBLOCK to return immediatly | ||
93 | TIMEOUT_BLOCK to wait for a button press | ||
94 | Any number >0 to wait that many ticks for a press | ||
95 | |||
96 | */ | ||
97 | int get_action_worker(int context, int timeout, | ||
98 | struct button_mapping* (*get_context_map)(int) ) | ||
99 | { | ||
100 | struct button_mapping *items = NULL; | ||
101 | int button; | ||
102 | int i=0; | ||
103 | int ret = ACTION_UNKNOWN; | ||
104 | if (timeout == TIMEOUT_NOBLOCK) | ||
105 | button = button_get(false); | ||
106 | else if (timeout == TIMEOUT_BLOCK) | ||
107 | button = button_get(true); | ||
108 | else | ||
109 | button = button_get_w_tmo(timeout); | ||
110 | |||
111 | |||
112 | if (button == BUTTON_NONE || button&SYS_EVENT) | ||
113 | { | ||
114 | return button; | ||
115 | } | ||
116 | |||
117 | if (ignore_until_release == true) | ||
118 | { | ||
119 | if (button&BUTTON_REL) | ||
120 | { | ||
121 | ignore_until_release = false; | ||
122 | } | ||
123 | /*last_button = BUTTON_NONE; this is done by action_signalscreenchange() */ | ||
124 | return ACTION_UNKNOWN; /* "safest" return value */ | ||
125 | } | ||
126 | |||
127 | if (soft_unlock_action != ACTION_NONE) | ||
128 | { | ||
129 | if ((button&BUTTON_REMOTE) && !allow_remote_actions) | ||
130 | return ACTION_NONE; | ||
131 | } | ||
132 | /* logf("%x,%x",last_button,button); */ | ||
133 | do | ||
134 | { | ||
135 | /* logf("context = %x",context); */ | ||
136 | #if (BUTTON_REMOTE != 0) | ||
137 | if (button&BUTTON_REMOTE) | ||
138 | context |= CONTEXT_REMOTE; | ||
139 | #endif | ||
140 | if ((context&CONTEXT_CUSTOM) && get_context_map) | ||
141 | items = get_context_map(context); | ||
142 | else | ||
143 | items = get_context_mapping(context); | ||
144 | |||
145 | ret = do_button_check(items,button,last_button,&i); | ||
146 | |||
147 | if ((context == CONTEXT_STD) | ||
148 | #if (BUTTON_REMOTE != 0) | ||
149 | || ((unsigned)context == (CONTEXT_STD|CONTEXT_REMOTE)) | ||
150 | #endif | ||
151 | ) break; | ||
152 | |||
153 | if (ret == ACTION_UNKNOWN ) | ||
154 | { | ||
155 | context = get_next_context(items,i); | ||
156 | i = 0; | ||
157 | } | ||
158 | else break; | ||
159 | } while (1); | ||
160 | /* DEBUGF("ret = %x\n",ret); */ | ||
161 | |||
162 | if (soft_unlock_action != ACTION_NONE) | ||
163 | { | ||
164 | if ((button&BUTTON_REMOTE) == 0) | ||
165 | { | ||
166 | if (soft_unlock_action == ret) | ||
167 | { | ||
168 | soft_unlock_action = ACTION_NONE; | ||
169 | ret = ACTION_NONE; /* no need to return the code */ | ||
170 | } | ||
171 | } | ||
172 | else if (!allow_remote_actions) | ||
173 | ret = ACTION_NONE; | ||
174 | } | ||
175 | |||
176 | last_button = button; | ||
177 | return ret; | ||
178 | } | ||
179 | |||
180 | int get_action(int context, int timeout) | ||
181 | { | ||
182 | return get_action_worker(context,timeout,NULL); | ||
183 | } | ||
184 | |||
185 | int get_custom_action(int context,int timeout, | ||
186 | struct button_mapping* (*get_context_map)(int)) | ||
187 | { | ||
188 | return get_action_worker(context,timeout,get_context_map); | ||
189 | } | ||
190 | |||
191 | bool action_userabort(int timeout) | ||
192 | { | ||
193 | action_signalscreenchange(); | ||
194 | int action = get_action_worker(CONTEXT_STD,timeout,NULL); | ||
195 | bool ret = (action == ACTION_STD_CANCEL); | ||
196 | action_signalscreenchange(); | ||
197 | return ret; | ||
198 | } | ||
199 | |||
200 | void action_signalscreenchange(void) | ||
201 | { | ||
202 | if ((last_button != BUTTON_NONE) && | ||
203 | !(last_button&BUTTON_REL)) | ||
204 | { | ||
205 | ignore_until_release = true; | ||
206 | } | ||
207 | last_button = BUTTON_NONE; | ||
208 | } | ||
209 | |||
210 | void action_setsoftwarekeylock(int unlock_action, bool allow_remote) | ||
211 | { | ||
212 | soft_unlock_action = unlock_action; | ||
213 | allow_remote_actions = allow_remote; | ||
214 | last_button = BUTTON_NONE; | ||
215 | } | ||
diff --git a/apps/action.h b/apps/action.h index 3c3db7d54e..24f3d990f0 100644 --- a/apps/action.h +++ b/apps/action.h | |||
@@ -19,11 +19,147 @@ | |||
19 | #define __ACTION_H__ | 19 | #define __ACTION_H__ |
20 | 20 | ||
21 | #include "stdbool.h" | 21 | #include "stdbool.h" |
22 | #include "button.h" | ||
22 | 23 | ||
23 | #define CONTEXT_WPS 1 | 24 | #define LAST_ITEM_IN_LIST { ACTION_NONE, BUTTON_NONE, BUTTON_NONE } |
24 | #define CONTEXT_TREE 2 | 25 | #define LAST_ITEM_IN_LIST__NEXTLIST(a) { a, BUTTON_NONE, BUTTON_NONE } |
25 | #define CONTEXT_RECORD 3 | 26 | |
26 | #define CONTEXT_MAINMENU 4 | 27 | #define TIMEOUT_BLOCK -1 |
27 | #define CONTEXT_ID3DB 5 | 28 | #define TIMEOUT_NOBLOCK 0 |
29 | #define CONTEXT_REMOTE 0x80000000 /* | this against another context to get remote buttons for that context */ | ||
30 | #define CONTEXT_CUSTOM 0x40000000 /* | this against anything to get your context number */ | ||
31 | |||
32 | enum { | ||
33 | CONTEXT_STD = 0, | ||
34 | /* These CONTEXT_ values were here before me, | ||
35 | there values may have significance, so dont touch! */ | ||
36 | CONTEXT_WPS = 1, | ||
37 | CONTEXT_TREE = 2, | ||
38 | CONTEXT_RECORD = 3, | ||
39 | CONTEXT_MAINMENU = 4, | ||
40 | CONTEXT_ID3DB = 5, | ||
41 | /* Add new contexts here, no need to explicitly define a value for them */ | ||
42 | CONTEXT_LIST, | ||
43 | CONTEXT_SETTINGS, /* options style settings, like from menus */ | ||
44 | CONTEXT_SETTINGSGRAPHICAL, /* screens like eq config and colour chooser */ | ||
45 | |||
46 | CONTEXT_YESNOSCREEN, /*NOTE: make sure your target has this and ACTION_YESNO_ACCEPT */ | ||
47 | CONTEXT_BOOKMARKSCREEN, /*NOTE: requires the action_setting_* mappings also */ | ||
48 | CONTEXT_QUICKSCREEN, /* uses ACTION_QS_ defines below */ | ||
49 | }; | ||
50 | |||
51 | |||
52 | enum { | ||
53 | |||
54 | ACTION_NONE = BUTTON_NONE, | ||
55 | ACTION_UNKNOWN, | ||
56 | |||
57 | /* standard actions, use these first */ | ||
58 | ACTION_STD_PREV, | ||
59 | ACTION_STD_PREVREPEAT, | ||
60 | ACTION_STD_NEXT, | ||
61 | ACTION_STD_NEXTREPEAT, | ||
62 | |||
63 | ACTION_STD_OK, | ||
64 | ACTION_STD_CANCEL, | ||
65 | ACTION_STD_CONTEXT, | ||
66 | ACTION_STD_MENU, | ||
67 | ACTION_STD_QUICKSCREEN, | ||
68 | ACTION_STD_KEYLOCK, /* software keylock in wps screen, very optional | ||
69 | use with action_setsoftwarekeylock */ | ||
70 | |||
71 | |||
72 | /* code context actions */ | ||
73 | |||
74 | /* WPS codes */ | ||
75 | ACTION_WPS_BROWSE, | ||
76 | ACTION_WPS_PLAY, | ||
77 | ACTION_WPS_SEEKBACK, | ||
78 | ACTION_WPS_SEEKFWD, | ||
79 | ACTION_WPS_STOPSEEK, | ||
80 | ACTION_WPS_SKIPNEXT, | ||
81 | ACTION_WPS_SKIPPREV, | ||
82 | ACTION_WPS_STOP, | ||
83 | ACTION_WPS_VOLDOWN, | ||
84 | ACTION_WPS_VOLUP, | ||
85 | ACTION_WPS_NEXTDIR,/* optional */ | ||
86 | ACTION_WPS_PREVDIR,/* optional */ | ||
87 | ACTION_WPS_PITCHSCREEN,/* optional */ | ||
88 | ACTION_WPS_ID3SCREEN,/* optional */ | ||
89 | ACTION_WPS_CONTEXT, | ||
90 | ACTION_WPS_QUICKSCREEN,/* optional */ | ||
91 | ACTION_WPS_MENU, /*this should be the same as ACTION_STD_MENU */ | ||
92 | /* following code are for AB mode in wps, | ||
93 | only needed if defined(AB_REPEAT_ENABLE) */ | ||
94 | ACTION_WPSAB_SINGLE, /* No targets use this, but leave n just-in-case! */ | ||
95 | ACTION_WPSAB_SETA, /* either #define WPS_AB_SHARE_DIR_BUTTONS */ | ||
96 | ACTION_WPSAB_SETB, /* OR implement ACTION_WPSAB_SET[AB] */ | ||
97 | ACTION_WPSAB_RESET, | ||
98 | |||
99 | /* list and tree page up/down */ | ||
100 | ACTION_LISTTREE_PGUP,/* optional */ | ||
101 | ACTION_LISTTREE_PGDOWN,/* optional */ | ||
102 | ACTION_LISTTREE_RC_PGUP,/* optional */ | ||
103 | ACTION_LISTTREE_RC_PGDOWN,/* optional */ | ||
104 | |||
105 | /* tree */ | ||
106 | ACTION_TREE_PGLEFT,/* optional */ | ||
107 | ACTION_TREE_PGRIGHT,/* optional */ | ||
108 | ACTION_TREE_STOP, | ||
109 | ACTION_TREE_WPS, | ||
110 | |||
111 | /* recording screen */ | ||
112 | |||
113 | /* main menu */ | ||
114 | |||
115 | /* id3db */ | ||
116 | |||
117 | /* list */ | ||
118 | |||
119 | /* settings */ | ||
120 | ACTION_SETTINGS_INC, | ||
121 | ACTION_SETTINGS_INCREPEAT, | ||
122 | ACTION_SETTINGS_DEC, | ||
123 | ACTION_SETTINGS_DECREPEAT, | ||
124 | |||
125 | /* yesno screen */ | ||
126 | ACTION_YESNO_ACCEPT, | ||
127 | |||
128 | /* bookmark screen */ | ||
129 | ACTION_BMARK_DELETE, | ||
130 | |||
131 | /* quickscreen */ | ||
132 | ACTION_QS_LEFT, | ||
133 | ACTION_QS_RIGHT, | ||
134 | ACTION_QS_DOWN, | ||
135 | ACTION_QS_DOWNINV, /* why is this not called up?? :p */ | ||
136 | |||
137 | }; | ||
138 | |||
139 | struct button_mapping { | ||
140 | int action_code; | ||
141 | int button_code; | ||
142 | int pre_button_code; | ||
143 | }; | ||
144 | /* use if you want to supply your own button mappings, PLUGINS ONLY */ | ||
145 | /* get_context_map is a function which returns a button_mapping* depedning on the given context */ | ||
146 | /* custom button_mappings may "chain" to inbuilt CONTEXT's */ | ||
147 | int get_custom_action(int context,int timeout, | ||
148 | struct button_mapping* (*get_context_map)(int)); | ||
149 | /* use if one of the standard CONTEXT_ mappings will work (ALL the core should be using this! */ | ||
150 | int get_action(int context, int timeout); | ||
151 | /* call this whenever you leave your button loop */ | ||
152 | void action_signalscreenchange(void); | ||
153 | |||
154 | /* call this if you need to check for ACTION_STD_CANCEL only (i.e user abort! */ | ||
155 | bool action_userabort(int timeout); | ||
156 | |||
157 | /* on targets without hardware keylock, use this to to emulate keylock. | ||
158 | unlock_action is the action which will disaable the keylock | ||
159 | allow_remote should be true if you want the remote buttons to still be usable while locked */ | ||
160 | void action_setsoftwarekeylock(int unlock_action, bool allow_remote); | ||
161 | |||
162 | /* no other code should need this apart from action.c */ | ||
163 | struct button_mapping* get_context_mapping(int context); | ||
28 | 164 | ||
29 | #endif | 165 | #endif |
diff --git a/apps/alarm_menu.c b/apps/alarm_menu.c index ae5d5bb752..03234352d7 100644 --- a/apps/alarm_menu.c +++ b/apps/alarm_menu.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "options.h" | 25 | #include "options.h" |
26 | 26 | ||
27 | #include "lcd.h" | 27 | #include "lcd.h" |
28 | #include "button.h" | 28 | #include "action.h" |
29 | #include "kernel.h" | 29 | #include "kernel.h" |
30 | #include "sprintf.h" | 30 | #include "sprintf.h" |
31 | #include <string.h> | 31 | #include <string.h> |
@@ -56,6 +56,7 @@ bool alarm_screen(void) | |||
56 | int button; | 56 | int button; |
57 | int i; | 57 | int i; |
58 | bool update = true; | 58 | bool update = true; |
59 | |||
59 | 60 | ||
60 | rtc_get_alarm(&h, &m); | 61 | rtc_get_alarm(&h, &m); |
61 | 62 | ||
@@ -84,10 +85,10 @@ bool alarm_screen(void) | |||
84 | screens[i].puts(0, 1, buf); | 85 | screens[i].puts(0, 1, buf); |
85 | gui_textarea_update(&screens[i]); | 86 | gui_textarea_update(&screens[i]); |
86 | } | 87 | } |
87 | button = button_get_w_tmo(HZ); | 88 | button = get_action(CONTEXT_SETTINGS,HZ); |
88 | 89 | ||
89 | switch(button) { | 90 | switch(button) { |
90 | case BUTTON_PLAY: | 91 | case ACTION_STD_OK: |
91 | /* prevent that an alarm occurs in the shutdown procedure */ | 92 | /* prevent that an alarm occurs in the shutdown procedure */ |
92 | /* accept alarms only if they are in 2 minutes or more */ | 93 | /* accept alarms only if they are in 2 minutes or more */ |
93 | tm = get_time(); | 94 | tm = get_time(); |
@@ -106,8 +107,8 @@ bool alarm_screen(void) | |||
106 | break; | 107 | break; |
107 | 108 | ||
108 | /* inc(m) */ | 109 | /* inc(m) */ |
109 | case BUTTON_RIGHT: | 110 | case ACTION_SETTINGS_INC: |
110 | case BUTTON_RIGHT | BUTTON_REPEAT: | 111 | case ACTION_SETTINGS_INCREPEAT: |
111 | m += 5; | 112 | m += 5; |
112 | if (m == 60) { | 113 | if (m == 60) { |
113 | h += 1; | 114 | h += 1; |
@@ -118,8 +119,8 @@ bool alarm_screen(void) | |||
118 | break; | 119 | break; |
119 | 120 | ||
120 | /* dec(m) */ | 121 | /* dec(m) */ |
121 | case BUTTON_LEFT: | 122 | case ACTION_SETTINGS_DEC: |
122 | case BUTTON_LEFT | BUTTON_REPEAT: | 123 | case ACTION_SETTINGS_DECREPEAT: |
123 | m -= 5; | 124 | m -= 5; |
124 | if (m == -5) { | 125 | if (m == -5) { |
125 | h -= 1; | 126 | h -= 1; |
@@ -129,32 +130,25 @@ bool alarm_screen(void) | |||
129 | h = 23; | 130 | h = 23; |
130 | break; | 131 | break; |
131 | 132 | ||
132 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
133 | /* inc(h) */ | 133 | /* inc(h) */ |
134 | case BUTTON_UP: | 134 | case ACTION_STD_NEXT: |
135 | case BUTTON_UP | BUTTON_REPEAT: | 135 | case ACTION_STD_NEXTREPEAT: |
136 | h = (h+1) % 24; | 136 | h = (h+1) % 24; |
137 | break; | 137 | break; |
138 | 138 | ||
139 | /* dec(h) */ | 139 | /* dec(h) */ |
140 | case BUTTON_DOWN: | 140 | case ACTION_STD_PREV: |
141 | case BUTTON_DOWN | BUTTON_REPEAT: | 141 | case ACTION_STD_NEXTREPEAT: |
142 | h = (h+23) % 24; | 142 | h = (h+23) % 24; |
143 | break; | 143 | break; |
144 | #endif | 144 | |
145 | 145 | case ACTION_STD_CANCEL: | |
146 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
147 | case BUTTON_OFF: | ||
148 | #else | ||
149 | case BUTTON_STOP: | ||
150 | case BUTTON_MENU: | ||
151 | #endif | ||
152 | rtc_enable_alarm(false); | 146 | rtc_enable_alarm(false); |
153 | gui_syncsplash(HZ*2, true, str(LANG_ALARM_MOD_DISABLE)); | 147 | gui_syncsplash(HZ*2, true, str(LANG_ALARM_MOD_DISABLE)); |
154 | done = true; | 148 | done = true; |
155 | break; | 149 | break; |
156 | 150 | ||
157 | case BUTTON_NONE: | 151 | case ACTION_NONE: |
158 | gui_syncstatusbar_draw(&statusbars, false); | 152 | gui_syncstatusbar_draw(&statusbars, false); |
159 | break; | 153 | break; |
160 | 154 | ||
@@ -167,7 +161,7 @@ bool alarm_screen(void) | |||
167 | break; | 161 | break; |
168 | } | 162 | } |
169 | } | 163 | } |
170 | 164 | action_signalscreenchange(); | |
171 | return false; | 165 | return false; |
172 | } | 166 | } |
173 | 167 | ||
diff --git a/apps/bookmark.c b/apps/bookmark.c index 62b286333e..b1fef207a4 100644 --- a/apps/bookmark.c +++ b/apps/bookmark.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include "applimits.h" | 25 | #include "applimits.h" |
26 | #include "lcd.h" | 26 | #include "lcd.h" |
27 | #include "button.h" | 27 | #include "action.h" |
28 | #include "usb.h" | 28 | #include "usb.h" |
29 | #include "audio.h" | 29 | #include "audio.h" |
30 | #include "playlist.h" | 30 | #include "playlist.h" |
@@ -458,30 +458,24 @@ bool bookmark_autoload(const char* file) | |||
458 | while(!done) | 458 | while(!done) |
459 | { | 459 | { |
460 | /* Wait for a key to be pushed */ | 460 | /* Wait for a key to be pushed */ |
461 | key = button_get(true); | 461 | key = get_action(CONTEXT_SETTINGS,TIMEOUT_BLOCK); |
462 | switch(key) | 462 | switch(key) |
463 | { | 463 | { |
464 | #ifdef HAVE_LCD_BITMAP | 464 | #ifdef HAVE_LCD_BITMAP |
465 | #ifdef BOOKMARK_RC_DOWN | 465 | case ACTION_STD_NEXT: |
466 | case BOOKMARK_RC_DOWN: | ||
467 | #endif | ||
468 | case BOOKMARK_DOWN: | ||
469 | return bookmark_load(global_bookmark_file_name, false); | 466 | return bookmark_load(global_bookmark_file_name, false); |
470 | #endif | 467 | #endif |
471 | #ifdef SETTINGS_RC_OK | 468 | case ACTION_STD_OK: |
472 | case SETTINGS_RC_OK: | ||
473 | #endif | ||
474 | case SETTINGS_OK: | ||
475 | return bookmark_load(global_bookmark_file_name, true); | 469 | return bookmark_load(global_bookmark_file_name, true); |
476 | 470 | ||
477 | default: | 471 | default: |
478 | /* Handle sys events, ignore button releases & repeats */ | 472 | /* Handle sys events, ignore button releases & repeats */ |
479 | if (default_event_handler(key) || | 473 | if (default_event_handler(key)) |
480 | !(key & (BUTTON_REPEAT|BUTTON_REL))) | ||
481 | done = true; | 474 | done = true; |
482 | break; | 475 | break; |
483 | } | 476 | } |
484 | } | 477 | } |
478 | action_signalscreenchange(); | ||
485 | return false; | 479 | return false; |
486 | } | 480 | } |
487 | } | 481 | } |
@@ -571,7 +565,6 @@ static char* select_bookmark(const char* bookmark_file_name) | |||
571 | int bookmark_id = 0; | 565 | int bookmark_id = 0; |
572 | int bookmark_id_prev = -1; | 566 | int bookmark_id_prev = -1; |
573 | int key; | 567 | int key; |
574 | int lastkey = BUTTON_NONE; | ||
575 | char* bookmark = NULL; | 568 | char* bookmark = NULL; |
576 | int bookmark_count = 0; | 569 | int bookmark_count = 0; |
577 | 570 | ||
@@ -605,6 +598,7 @@ static char* select_bookmark(const char* bookmark_file_name) | |||
605 | { | 598 | { |
606 | gui_syncsplash(HZ, true, str(LANG_BOOKMARK_LOAD_EMPTY)); | 599 | gui_syncsplash(HZ, true, str(LANG_BOOKMARK_LOAD_EMPTY)); |
607 | remove(bookmark_file_name); | 600 | remove(bookmark_file_name); |
601 | action_signalscreenchange(); | ||
608 | return NULL; | 602 | return NULL; |
609 | } | 603 | } |
610 | else | 604 | else |
@@ -621,17 +615,10 @@ static char* select_bookmark(const char* bookmark_file_name) | |||
621 | } | 615 | } |
622 | 616 | ||
623 | /* waiting for the user to click a button */ | 617 | /* waiting for the user to click a button */ |
624 | key = button_get(true); | 618 | key = get_action(CONTEXT_BOOKMARKSCREEN,TIMEOUT_BLOCK); |
625 | switch(key) | 619 | switch(key) |
626 | { | 620 | { |
627 | #ifdef BOOKMARK_RC_SELECT | 621 | case ACTION_STD_OK: |
628 | case BOOKMARK_RC_SELECT: | ||
629 | #endif | ||
630 | case BOOKMARK_SELECT: | ||
631 | #ifdef BOOKMARK_SELECT_PRE | ||
632 | if (lastkey != BOOKMARK_SELECT_PRE) | ||
633 | break; | ||
634 | #endif | ||
635 | /* User wants to use this bookmark */ | 622 | /* User wants to use this bookmark */ |
636 | #ifdef HAVE_LCD_BITMAP | 623 | #ifdef HAVE_LCD_BITMAP |
637 | if (global_settings.statusbar) | 624 | if (global_settings.statusbar) |
@@ -645,11 +632,10 @@ static char* select_bookmark(const char* bookmark_file_name) | |||
645 | screens[i].setmargins(0, 0); | 632 | screens[i].setmargins(0, 0); |
646 | } | 633 | } |
647 | #endif | 634 | #endif |
635 | action_signalscreenchange(); | ||
648 | return bookmark; | 636 | return bookmark; |
649 | #ifdef BOOKMARK_RC_DELETE | 637 | |
650 | case BOOKMARK_RC_DELETE: | 638 | case ACTION_BMARK_DELETE: |
651 | #endif | ||
652 | case BOOKMARK_DELETE: | ||
653 | /* User wants to delete this bookmark */ | 639 | /* User wants to delete this bookmark */ |
654 | delete_bookmark(bookmark_file_name, bookmark_id); | 640 | delete_bookmark(bookmark_file_name, bookmark_id); |
655 | bookmark_id_prev=-2; | 641 | bookmark_id_prev=-2; |
@@ -658,54 +644,32 @@ static char* select_bookmark(const char* bookmark_file_name) | |||
658 | bookmark_id = bookmark_count -1; | 644 | bookmark_id = bookmark_count -1; |
659 | break; | 645 | break; |
660 | 646 | ||
661 | #ifdef SETTINGS_RC_DEC | 647 | case ACTION_SETTINGS_DEC: |
662 | case SETTINGS_RC_DEC: | ||
663 | case SETTINGS_RC_DEC | BUTTON_REPEAT: | ||
664 | #endif | ||
665 | case SETTINGS_DEC: | ||
666 | case SETTINGS_DEC | BUTTON_REPEAT: | ||
667 | bookmark_id--; | 648 | bookmark_id--; |
668 | break; | 649 | break; |
669 | 650 | ||
670 | #ifdef SETTINGS_RC_DEC | 651 | case ACTION_SETTINGS_INC: |
671 | case SETTINGS_RC_INC: | ||
672 | case SETTINGS_RC_INC | BUTTON_REPEAT: | ||
673 | #endif | ||
674 | case SETTINGS_INC: | ||
675 | case SETTINGS_INC | BUTTON_REPEAT: | ||
676 | bookmark_id++; | 652 | bookmark_id++; |
677 | break; | 653 | break; |
678 | 654 | ||
679 | #ifdef SETTINGS_RC_CANCEL | 655 | case ACTION_STD_CANCEL: |
680 | case SETTINGS_RC_CANCEL: | ||
681 | #endif | ||
682 | #ifdef SETTINGS_RC_CANCEL2 | ||
683 | case SETTINGS_RC_CANCEL2: | ||
684 | #endif | ||
685 | case SETTINGS_CANCEL: | ||
686 | #ifdef SETTINGS_CANCEL2 | ||
687 | case SETTINGS_CANCEL2: | ||
688 | #endif | ||
689 | #ifdef SETTINGS_RC_OK2 | ||
690 | case SETTINGS_RC_OK2: | ||
691 | #endif | ||
692 | #ifdef SETTINGS_OK2 | ||
693 | case SETTINGS_OK2: | ||
694 | #endif | ||
695 | #ifdef HAVE_LCD_BITMAP | 656 | #ifdef HAVE_LCD_BITMAP |
696 | FOR_NB_SCREENS(i) | 657 | FOR_NB_SCREENS(i) |
697 | screens[i].setmargins(x, y); | 658 | screens[i].setmargins(x, y); |
698 | #endif | 659 | #endif |
660 | action_signalscreenchange(); | ||
699 | return NULL; | 661 | return NULL; |
700 | 662 | ||
701 | default: | 663 | default: |
702 | if(default_event_handler(key) == SYS_USB_CONNECTED) | 664 | if(default_event_handler(key) == SYS_USB_CONNECTED) |
665 | { | ||
666 | action_signalscreenchange(); | ||
703 | return NULL; | 667 | return NULL; |
668 | } | ||
704 | break; | 669 | break; |
705 | } | 670 | } |
706 | lastkey = key; | ||
707 | } | 671 | } |
708 | 672 | action_signalscreenchange(); | |
709 | return NULL; | 673 | return NULL; |
710 | } | 674 | } |
711 | 675 | ||
diff --git a/apps/bookmark.h b/apps/bookmark.h index 72453aaf7f..16f4e5609f 100644 --- a/apps/bookmark.h +++ b/apps/bookmark.h | |||
@@ -21,54 +21,6 @@ | |||
21 | 21 | ||
22 | #include <stdbool.h> | 22 | #include <stdbool.h> |
23 | 23 | ||
24 | #if CONFIG_KEYPAD == ONDIO_PAD | ||
25 | #define BOOKMARK_SELECT_PRE BUTTON_RIGHT | ||
26 | #define BOOKMARK_SELECT (BUTTON_RIGHT | BUTTON_REL) | ||
27 | #define BOOKMARK_DELETE (BUTTON_RIGHT | BUTTON_REPEAT) | ||
28 | #define BOOKMARK_DOWN BUTTON_DOWN | ||
29 | |||
30 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
31 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
32 | #define BOOKMARK_SELECT BUTTON_SELECT | ||
33 | #define BOOKMARK_DELETE (BUTTON_ON | BUTTON_SELECT) | ||
34 | #define BOOKMARK_DOWN BUTTON_DOWN | ||
35 | #define BOOKMARK_RC_SELECT BUTTON_RC_MENU | ||
36 | #define BOOKMARK_RC_DELETE (BUTTON_RC_ON | BUTTON_RC_MENU) | ||
37 | #define BOOKMARK_RC_DOWN BUTTON_RC_FF | ||
38 | #define BOOKMARK_RC_EXIT BUTTON_RC_STOP | ||
39 | |||
40 | #elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) | ||
41 | #define BOOKMARK_SELECT BUTTON_SELECT | ||
42 | #define BOOKMARK_DELETE (BUTTON_RIGHT | BUTTON_REPEAT) | ||
43 | #define BOOKMARK_DOWN BUTTON_SCROLL_FWD | ||
44 | |||
45 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | ||
46 | #define BOOKMARK_SELECT BUTTON_SELECT | ||
47 | #define BOOKMARK_DELETE (BUTTON_PLAY | BUTTON_SELECT) | ||
48 | #define BOOKMARK_DOWN BUTTON_DOWN | ||
49 | |||
50 | #elif CONFIG_KEYPAD == IAUDIO_X5_PAD | ||
51 | #define BOOKMARK_SELECT BUTTON_SELECT | ||
52 | #define BOOKMARK_DELETE BUTTON_REC | BUTTON_REPEAT | ||
53 | #define BOOKMARK_DOWN BUTTON_DOWN | ||
54 | |||
55 | #elif CONFIG_KEYPAD == GIGABEAT_PAD | ||
56 | #define BOOKMARK_SELECT BUTTON_MENU | ||
57 | #define BOOKMARK_DELETE BUTTON_POWER | ||
58 | #define BOOKMARK_DOWN BUTTON_A | ||
59 | |||
60 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | ||
61 | #define BOOKMARK_SELECT BUTTON_PLAY | ||
62 | #define BOOKMARK_DELETE (BUTTON_FF | BUTTON_REPEAT) | ||
63 | #define BOOKMARK_DOWN BUTTON_SCROLL_DOWN | ||
64 | |||
65 | #else /* player, recorder, gmini */ | ||
66 | #define BOOKMARK_SELECT BUTTON_PLAY | ||
67 | #define BOOKMARK_DELETE (BUTTON_ON | BUTTON_PLAY) | ||
68 | #define BOOKMARK_DOWN BUTTON_DOWN | ||
69 | |||
70 | #endif | ||
71 | |||
72 | bool bookmark_load_menu(void); | 24 | bool bookmark_load_menu(void); |
73 | bool bookmark_autobookmark(void); | 25 | bool bookmark_autobookmark(void); |
74 | bool bookmark_create_menu(void); | 26 | bool bookmark_create_menu(void); |
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index e79e88de76..469660cbd0 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include "debug_menu.h" | 27 | #include "debug_menu.h" |
28 | #include "kernel.h" | 28 | #include "kernel.h" |
29 | #include "sprintf.h" | 29 | #include "sprintf.h" |
30 | #include "button.h" | 30 | #include "action.h" |
31 | #include "adc.h" | 31 | #include "adc.h" |
32 | #include "mas.h" | 32 | #include "mas.h" |
33 | #include "power.h" | 33 | #include "power.h" |
@@ -86,7 +86,6 @@ extern const char *thread_name[]; | |||
86 | bool dbg_os(void) | 86 | bool dbg_os(void) |
87 | { | 87 | { |
88 | char buf[32]; | 88 | char buf[32]; |
89 | int button; | ||
90 | int i; | 89 | int i; |
91 | int usage; | 90 | int usage; |
92 | 91 | ||
@@ -106,13 +105,8 @@ bool dbg_os(void) | |||
106 | 105 | ||
107 | lcd_update(); | 106 | lcd_update(); |
108 | 107 | ||
109 | button = button_get_w_tmo(HZ/10); | 108 | if (action_userabort(TIMEOUT_BLOCK)) |
110 | 109 | return false; | |
111 | switch(button) | ||
112 | { | ||
113 | case SETTINGS_CANCEL: | ||
114 | return false; | ||
115 | } | ||
116 | } | 110 | } |
117 | return false; | 111 | return false; |
118 | } | 112 | } |
@@ -134,20 +128,21 @@ bool dbg_os(void) | |||
134 | snprintf(buf, 32, "%d: %d%% ", currval, usage); | 128 | snprintf(buf, 32, "%d: %d%% ", currval, usage); |
135 | lcd_puts(0, 1, buf); | 129 | lcd_puts(0, 1, buf); |
136 | 130 | ||
137 | button = button_get_w_tmo(HZ/10); | 131 | button = get_action(CONTEXT_SETTINGS,HZ/10); |
138 | 132 | ||
139 | switch(button) | 133 | switch(button) |
140 | { | 134 | { |
141 | case SETTINGS_CANCEL: | 135 | case ACTION_STD_CANCEL: |
136 | action_signalscreenchange(); | ||
142 | return false; | 137 | return false; |
143 | 138 | ||
144 | case SETTINGS_DEC: | 139 | case ACTION_SETTINGS_DEC: |
145 | currval--; | 140 | currval--; |
146 | if(currval < 0) | 141 | if(currval < 0) |
147 | currval = num_threads-1; | 142 | currval = num_threads-1; |
148 | break; | 143 | break; |
149 | 144 | ||
150 | case SETTINGS_INC: | 145 | case ACTION_SETTINGS_INC: |
151 | currval++; | 146 | currval++; |
152 | if(currval > num_threads-1) | 147 | if(currval > num_threads-1) |
153 | currval = 0; | 148 | currval = 0; |
@@ -163,7 +158,6 @@ bool dbg_os(void) | |||
163 | bool dbg_audio_thread(void) | 158 | bool dbg_audio_thread(void) |
164 | { | 159 | { |
165 | char buf[32]; | 160 | char buf[32]; |
166 | int button; | ||
167 | struct audio_debug d; | 161 | struct audio_debug d; |
168 | 162 | ||
169 | lcd_setmargins(0, 0); | 163 | lcd_setmargins(0, 0); |
@@ -171,12 +165,8 @@ bool dbg_audio_thread(void) | |||
171 | 165 | ||
172 | while(1) | 166 | while(1) |
173 | { | 167 | { |
174 | button = button_get_w_tmo(HZ/5); | 168 | if (action_userabort(HZ/5)) |
175 | switch(button) | 169 | return false; |
176 | { | ||
177 | case SETTINGS_CANCEL: | ||
178 | return false; | ||
179 | } | ||
180 | 170 | ||
181 | audio_get_debugdata(&d); | 171 | audio_get_debugdata(&d); |
182 | 172 | ||
@@ -242,23 +232,22 @@ bool dbg_audio_thread(void) | |||
242 | 232 | ||
243 | lcd_setmargins(0, 0); | 233 | lcd_setmargins(0, 0); |
244 | lcd_setfont(FONT_SYSFIXED); | 234 | lcd_setfont(FONT_SYSFIXED); |
245 | |||
246 | while(!done) | 235 | while(!done) |
247 | { | 236 | { |
248 | button = button_get_w_tmo(HZ/5); | 237 | button = get_action(CONTEXT_STD,HZ/5); |
249 | switch(button) | 238 | switch(button) |
250 | { | 239 | { |
251 | case SETTINGS_NEXT: | 240 | case ACTION_STD_NEXT: |
252 | audio_next(); | 241 | audio_next(); |
253 | break; | 242 | break; |
254 | case SETTINGS_PREV: | 243 | case ACTION_STD_PREV: |
255 | audio_prev(); | 244 | audio_prev(); |
256 | break; | 245 | break; |
257 | case SETTINGS_CANCEL: | 246 | case ACTION_STD_CANCEL: |
258 | done = true; | 247 | done = true; |
259 | break; | 248 | break; |
260 | } | 249 | } |
261 | 250 | action_signalscreenchange(); | |
262 | line = 0; | 251 | line = 0; |
263 | 252 | ||
264 | lcd_clear_display(); | 253 | lcd_clear_display(); |
@@ -406,7 +395,6 @@ bool dbg_hw_info(void) | |||
406 | { | 395 | { |
407 | #if CONFIG_CPU == SH7034 | 396 | #if CONFIG_CPU == SH7034 |
408 | char buf[32]; | 397 | char buf[32]; |
409 | int button; | ||
410 | int usb_polarity; | 398 | int usb_polarity; |
411 | int pr_polarity; | 399 | int pr_polarity; |
412 | int bitmask = *(unsigned short*)0x20000fc; | 400 | int bitmask = *(unsigned short*)0x20000fc; |
@@ -494,13 +482,11 @@ bool dbg_hw_info(void) | |||
494 | 482 | ||
495 | while(1) | 483 | while(1) |
496 | { | 484 | { |
497 | button = button_get(true); | 485 | if (action_userabort(TIMEOUT_BLOCK)) |
498 | if(button == SETTINGS_CANCEL) | ||
499 | return false; | 486 | return false; |
500 | } | 487 | } |
501 | #elif CONFIG_CPU == MCF5249 || CONFIG_CPU == MCF5250 | 488 | #elif CONFIG_CPU == MCF5249 || CONFIG_CPU == MCF5250 |
502 | char buf[32]; | 489 | char buf[32]; |
503 | int button; | ||
504 | unsigned manu, id; /* flash IDs */ | 490 | unsigned manu, id; /* flash IDs */ |
505 | bool got_id; /* flag if we managed to get the flash IDs */ | 491 | bool got_id; /* flag if we managed to get the flash IDs */ |
506 | int oldmode; /* saved memory guard mode */ | 492 | int oldmode; /* saved memory guard mode */ |
@@ -530,13 +516,11 @@ bool dbg_hw_info(void) | |||
530 | 516 | ||
531 | while(1) | 517 | while(1) |
532 | { | 518 | { |
533 | button = button_get(true); | 519 | if (action_userabort(TIMEOUT_BLOCK)) |
534 | if(button == SETTINGS_CANCEL) | ||
535 | return false; | 520 | return false; |
536 | } | 521 | } |
537 | #elif CONFIG_CPU == PP5020 | 522 | #elif CONFIG_CPU == PP5020 |
538 | char buf[32]; | 523 | char buf[32]; |
539 | int button; | ||
540 | 524 | ||
541 | lcd_setmargins(0, 0); | 525 | lcd_setmargins(0, 0); |
542 | lcd_setfont(FONT_SYSFIXED); | 526 | lcd_setfont(FONT_SYSFIXED); |
@@ -551,8 +535,7 @@ bool dbg_hw_info(void) | |||
551 | 535 | ||
552 | while(1) | 536 | while(1) |
553 | { | 537 | { |
554 | button = button_get(true); | 538 | if (action_userabort(TIMEOUT_BLOCK)) |
555 | if(button == SETTINGS_CANCEL) | ||
556 | return false; | 539 | return false; |
557 | } | 540 | } |
558 | #endif /* CONFIG_CPU */ | 541 | #endif /* CONFIG_CPU */ |
@@ -641,20 +624,21 @@ bool dbg_hw_info(void) | |||
641 | lcd_puts(0, 1, buf); | 624 | lcd_puts(0, 1, buf); |
642 | lcd_update(); | 625 | lcd_update(); |
643 | 626 | ||
644 | button = button_get(true); | 627 | button = get_action(CONTEXT_SETTINGS,TIMEOUT_BLOCK); |
645 | 628 | ||
646 | switch(button) | 629 | switch(button) |
647 | { | 630 | { |
648 | case SETTINGS_CANCEL: | 631 | case ACTION_STD_CANCEL: |
632 | action_signalscreenchange(); | ||
649 | return false; | 633 | return false; |
650 | 634 | ||
651 | case SETTINGS_DEC: | 635 | case ACTION_SETTINGS_DEC: |
652 | currval--; | 636 | currval--; |
653 | if(currval < 0) | 637 | if(currval < 0) |
654 | currval = 5; | 638 | currval = 5; |
655 | break; | 639 | break; |
656 | 640 | ||
657 | case SETTINGS_INC: | 641 | case ACTION_SETTINGS_INC: |
658 | currval++; | 642 | currval++; |
659 | if(currval > 5) | 643 | if(currval > 5) |
660 | currval = 0; | 644 | currval = 0; |
@@ -688,21 +672,21 @@ bool dbg_partitions(void) | |||
688 | lcd_puts(0, 1, buf); | 672 | lcd_puts(0, 1, buf); |
689 | lcd_update(); | 673 | lcd_update(); |
690 | 674 | ||
691 | button = button_get(true); | 675 | button = get_action(CONTEXT_SETTINGS,TIMEOUT_BLOCK); |
692 | 676 | ||
693 | switch(button) | 677 | switch(button) |
694 | { | 678 | { |
695 | case SETTINGS_OK: | 679 | case ACTION_STD_CANCEL: |
696 | case SETTINGS_CANCEL: | 680 | action_signalscreenchange(); |
697 | return false; | 681 | return false; |
698 | 682 | ||
699 | case SETTINGS_DEC: | 683 | case ACTION_SETTINGS_DEC: |
700 | partition--; | 684 | partition--; |
701 | if (partition < 0) | 685 | if (partition < 0) |
702 | partition = 3; | 686 | partition = 3; |
703 | break; | 687 | break; |
704 | 688 | ||
705 | case SETTINGS_INC: | 689 | case ACTION_SETTINGS_INC: |
706 | partition++; | 690 | partition++; |
707 | if (partition > 3) | 691 | if (partition > 3) |
708 | partition = 0; | 692 | partition = 0; |
@@ -874,13 +858,8 @@ bool dbg_spdif(void) | |||
874 | 858 | ||
875 | lcd_update(); | 859 | lcd_update(); |
876 | 860 | ||
877 | switch (button_get_w_tmo(HZ/10)) | 861 | if (action_userabort(HZ/2)) |
878 | { | 862 | return false; |
879 | case SETTINGS_CANCEL: | ||
880 | case SETTINGS_OK2: | ||
881 | done = true; | ||
882 | break; | ||
883 | } | ||
884 | } | 863 | } |
885 | #ifdef HAVE_SPDIF_POWER | 864 | #ifdef HAVE_SPDIF_POWER |
886 | spdif_power_enable(global_settings.spdif_enable); | 865 | spdif_power_enable(global_settings.spdif_enable); |
@@ -940,13 +919,8 @@ bool dbg_ports(void) | |||
940 | lcd_puts(0, 7, buf); | 919 | lcd_puts(0, 7, buf); |
941 | #endif | 920 | #endif |
942 | lcd_update(); | 921 | lcd_update(); |
943 | button = button_get_w_tmo(HZ/10); | 922 | if (action_userabort(HZ/10)) |
944 | 923 | return false; | |
945 | switch(button) | ||
946 | { | ||
947 | case SETTINGS_CANCEL: | ||
948 | return false; | ||
949 | } | ||
950 | } | 924 | } |
951 | #elif defined(CPU_COLDFIRE) | 925 | #elif defined(CPU_COLDFIRE) |
952 | unsigned int gpio_out; | 926 | unsigned int gpio_out; |
@@ -962,7 +936,6 @@ bool dbg_ports(void) | |||
962 | int adc_remotedetect; | 936 | int adc_remotedetect; |
963 | #endif | 937 | #endif |
964 | char buf[128]; | 938 | char buf[128]; |
965 | int button; | ||
966 | int line; | 939 | int line; |
967 | int battery_voltage; | 940 | int battery_voltage; |
968 | int batt_int, batt_frac; | 941 | int batt_int, batt_frac; |
@@ -1033,13 +1006,8 @@ bool dbg_ports(void) | |||
1033 | #endif | 1006 | #endif |
1034 | 1007 | ||
1035 | lcd_update(); | 1008 | lcd_update(); |
1036 | button = button_get_w_tmo(HZ/10); | 1009 | if (action_userabort(HZ/10)) |
1037 | 1010 | return false; | |
1038 | switch(button) | ||
1039 | { /* quit on release to allow for reading the cancel button input */ | ||
1040 | case (SETTINGS_CANCEL|BUTTON_REL): | ||
1041 | return false; | ||
1042 | } | ||
1043 | } | 1011 | } |
1044 | 1012 | ||
1045 | #elif CONFIG_CPU == PP5020 | 1013 | #elif CONFIG_CPU == PP5020 |
@@ -1049,7 +1017,6 @@ bool dbg_ports(void) | |||
1049 | unsigned int gpio_i, gpio_j, gpio_k, gpio_l; | 1017 | unsigned int gpio_i, gpio_j, gpio_k, gpio_l; |
1050 | 1018 | ||
1051 | char buf[128]; | 1019 | char buf[128]; |
1052 | int button; | ||
1053 | int line; | 1020 | int line; |
1054 | 1021 | ||
1055 | lcd_setmargins(0, 0); | 1022 | lcd_setmargins(0, 0); |
@@ -1091,13 +1058,8 @@ bool dbg_ports(void) | |||
1091 | lcd_puts(0, line++, buf); | 1058 | lcd_puts(0, line++, buf); |
1092 | 1059 | ||
1093 | lcd_update(); | 1060 | lcd_update(); |
1094 | button = button_get_w_tmo(HZ/10); | 1061 | if (action_userabort(HZ/10)) |
1095 | 1062 | return false; | |
1096 | switch(button) | ||
1097 | { | ||
1098 | case SETTINGS_CANCEL: | ||
1099 | return false; | ||
1100 | } | ||
1101 | } | 1063 | } |
1102 | 1064 | ||
1103 | #endif /* CPU */ | 1065 | #endif /* CPU */ |
@@ -1170,20 +1132,21 @@ bool dbg_ports(void) | |||
1170 | snprintf(buf, 32, "Batt: %d.%02dV", batt_int, batt_frac); | 1132 | snprintf(buf, 32, "Batt: %d.%02dV", batt_int, batt_frac); |
1171 | lcd_puts(0, 1, buf); | 1133 | lcd_puts(0, 1, buf); |
1172 | 1134 | ||
1173 | button = button_get_w_tmo(HZ/5); | 1135 | button = get_action(CONTEXT_SETTINGS,HZ/5); |
1174 | 1136 | ||
1175 | switch(button) | 1137 | switch(button) |
1176 | { | 1138 | { |
1177 | case SETTINGS_CANCEL: | 1139 | case ACTION_STD_CANCEL: |
1140 | action_signalscreenchange(); | ||
1178 | return false; | 1141 | return false; |
1179 | 1142 | ||
1180 | case SETTINGS_DEC: | 1143 | case ACTION_SETTINGS_DEC: |
1181 | currval--; | 1144 | currval--; |
1182 | if(currval < 0) | 1145 | if(currval < 0) |
1183 | currval = 10; | 1146 | currval = 10; |
1184 | break; | 1147 | break; |
1185 | 1148 | ||
1186 | case SETTINGS_INC: | 1149 | case ACTION_SETTINGS_INC: |
1187 | currval++; | 1150 | currval++; |
1188 | if(currval > 10) | 1151 | if(currval > 10) |
1189 | currval = 0; | 1152 | currval = 0; |
@@ -1219,43 +1182,25 @@ bool dbg_cpufreq(void) | |||
1219 | lcd_puts(0, line++, buf); | 1182 | lcd_puts(0, line++, buf); |
1220 | 1183 | ||
1221 | lcd_update(); | 1184 | lcd_update(); |
1222 | button = button_get_w_tmo(HZ/10); | 1185 | button = get_action(CONTEXT_STD,HZ/10); |
1223 | 1186 | ||
1224 | switch(button) | 1187 | switch(button) |
1225 | { | 1188 | { |
1226 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) | 1189 | case ACTION_STD_PREV: |
1227 | case BUTTON_MENU: | 1190 | cpu_boost(true); |
1228 | #else | 1191 | break; |
1229 | case BUTTON_UP: | 1192 | case ACTION_STD_NEXT: |
1230 | #endif | 1193 | cpu_boost(false); |
1231 | cpu_boost(true); | 1194 | break; |
1232 | break; | ||
1233 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) | ||
1234 | case BUTTON_PLAY: | ||
1235 | #else | ||
1236 | case BUTTON_DOWN: | ||
1237 | #endif | ||
1238 | cpu_boost(false); | ||
1239 | break; | ||
1240 | 1195 | ||
1241 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | 1196 | case ACTION_STD_OK: |
1242 | (CONFIG_KEYPAD == IRIVER_H300_PAD) || \ | 1197 | set_cpu_frequency(CPUFREQ_DEFAULT); |
1243 | (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) | 1198 | boost_counter = 0; |
1244 | case BUTTON_SELECT: | 1199 | break; |
1245 | #else | ||
1246 | case BUTTON_PLAY: | ||
1247 | #endif | ||
1248 | set_cpu_frequency(CPUFREQ_DEFAULT); | ||
1249 | boost_counter = 0; | ||
1250 | break; | ||
1251 | 1200 | ||
1252 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) | 1201 | case ACTION_STD_CANCEL: |
1253 | case BUTTON_LEFT: | 1202 | action_signalscreenchange(); |
1254 | #else | 1203 | return false; |
1255 | case SETTINGS_CANCEL: | ||
1256 | case SETTINGS_OK2: | ||
1257 | #endif | ||
1258 | return false; | ||
1259 | } | 1204 | } |
1260 | } | 1205 | } |
1261 | 1206 | ||
@@ -1428,20 +1373,20 @@ bool view_battery(void) | |||
1428 | 1373 | ||
1429 | lcd_update(); | 1374 | lcd_update(); |
1430 | 1375 | ||
1431 | switch(button_get_w_tmo(HZ/2)) | 1376 | switch(get_action(CONTEXT_SETTINGS,HZ/2)) |
1432 | { | 1377 | { |
1433 | case SETTINGS_DEC: | 1378 | case ACTION_SETTINGS_DEC: |
1434 | if (view) | 1379 | if (view) |
1435 | view--; | 1380 | view--; |
1436 | break; | 1381 | break; |
1437 | 1382 | ||
1438 | case SETTINGS_INC: | 1383 | case ACTION_SETTINGS_INC: |
1439 | if (view < 3) | 1384 | if (view < 3) |
1440 | view++; | 1385 | view++; |
1441 | break; | 1386 | break; |
1442 | 1387 | ||
1443 | case SETTINGS_OK: | 1388 | case ACTION_STD_CANCEL: |
1444 | case SETTINGS_CANCEL: | 1389 | action_signalscreenchange(); |
1445 | return false; | 1390 | return false; |
1446 | } | 1391 | } |
1447 | } | 1392 | } |
@@ -1498,41 +1443,40 @@ static bool view_runtime(void) | |||
1498 | lcd_update(); | 1443 | lcd_update(); |
1499 | 1444 | ||
1500 | /* Wait for a key to be pushed */ | 1445 | /* Wait for a key to be pushed */ |
1501 | key = button_get_w_tmo(HZ); | 1446 | key = get_action(CONTEXT_SETTINGS,HZ); |
1502 | switch(key) { | 1447 | switch(key) { |
1503 | case SETTINGS_CANCEL: | 1448 | case ACTION_STD_CANCEL: |
1504 | done = true; | 1449 | done = true; |
1505 | break; | 1450 | break; |
1506 | 1451 | ||
1507 | case SETTINGS_INC: | 1452 | case ACTION_SETTINGS_INC: |
1508 | case SETTINGS_DEC: | 1453 | case ACTION_SETTINGS_DEC: |
1509 | if (state == 1) | 1454 | if (state == 1) |
1510 | state = 2; | 1455 | state = 2; |
1511 | else | 1456 | else |
1512 | state = 1; | 1457 | state = 1; |
1513 | break; | 1458 | break; |
1514 | 1459 | ||
1515 | case SETTINGS_OK: | 1460 | case ACTION_STD_OK: |
1516 | lcd_clear_display(); | 1461 | lcd_clear_display(); |
1462 | /*NOTE: this needs to be changed to sync splash! */ | ||
1517 | lcd_puts(0,0,"Clear time?"); | 1463 | lcd_puts(0,0,"Clear time?"); |
1518 | lcd_puts(0,1,"PLAY = Yes"); | 1464 | lcd_puts(0,1,"PLAY = Yes"); |
1519 | lcd_update(); | 1465 | lcd_update(); |
1520 | while (1) { | 1466 | while (1) { |
1521 | key = button_get(true); | 1467 | key = get_action(CONTEXT_STD,TIMEOUT_BLOCK); |
1522 | if ( key == SETTINGS_OK ) { | 1468 | if ( key == ACTION_STD_OK ) { |
1523 | if ( state == 1 ) | 1469 | if ( state == 1 ) |
1524 | global_settings.runtime = 0; | 1470 | global_settings.runtime = 0; |
1525 | else | 1471 | else |
1526 | global_settings.topruntime = 0; | 1472 | global_settings.topruntime = 0; |
1527 | break; | 1473 | break; |
1528 | } | 1474 | } |
1529 | if (!(key & BUTTON_REL)) /* ignore button releases */ | ||
1530 | break; | ||
1531 | } | 1475 | } |
1532 | break; | 1476 | break; |
1533 | } | 1477 | } |
1534 | } | 1478 | } |
1535 | 1479 | action_signalscreenchange(); | |
1536 | return false; | 1480 | return false; |
1537 | } | 1481 | } |
1538 | 1482 | ||
@@ -1620,27 +1564,26 @@ bool dbg_mmc_info(void) | |||
1620 | 1564 | ||
1621 | lcd_update(); | 1565 | lcd_update(); |
1622 | 1566 | ||
1623 | switch (button_get_w_tmo(HZ/2)) | 1567 | switch (get_action(CONTEXT_SETTINGS,HZ/2)) |
1624 | { | 1568 | { |
1625 | case SETTINGS_OK: | 1569 | case ACTION_STD_CANCEL: |
1626 | case SETTINGS_CANCEL: | ||
1627 | done = true; | 1570 | done = true; |
1628 | break; | 1571 | break; |
1629 | 1572 | ||
1630 | case SETTINGS_DEC: | 1573 | case ACTION_SETTINGS_DEC: |
1631 | currval--; | 1574 | currval--; |
1632 | if (currval < 0) | 1575 | if (currval < 0) |
1633 | currval = 3; | 1576 | currval = 3; |
1634 | break; | 1577 | break; |
1635 | 1578 | ||
1636 | case SETTINGS_INC: | 1579 | case ACTION_SETTINGS_INC: |
1637 | currval++; | 1580 | currval++; |
1638 | if (currval > 3) | 1581 | if (currval > 3) |
1639 | currval = 0; | 1582 | currval = 0; |
1640 | break; | 1583 | break; |
1641 | } | 1584 | } |
1642 | } | 1585 | } |
1643 | 1586 | action_signalscreenchange(); | |
1644 | return false; | 1587 | return false; |
1645 | } | 1588 | } |
1646 | #else /* !HAVE_MMC */ | 1589 | #else /* !HAVE_MMC */ |
@@ -1781,26 +1724,25 @@ static bool dbg_disk_info(void) | |||
1781 | lcd_update(); | 1724 | lcd_update(); |
1782 | 1725 | ||
1783 | /* Wait for a key to be pushed */ | 1726 | /* Wait for a key to be pushed */ |
1784 | key = button_get_w_tmo(HZ*5); | 1727 | key = get_action(CONTEXT_SETTINGS,HZ/5); |
1785 | switch(key) { | 1728 | switch(key) { |
1786 | case SETTINGS_OK: | 1729 | case ACTION_STD_CANCEL: |
1787 | case SETTINGS_CANCEL: | ||
1788 | done = true; | 1730 | done = true; |
1789 | break; | 1731 | break; |
1790 | 1732 | ||
1791 | case SETTINGS_DEC: | 1733 | case ACTION_SETTINGS_DEC: |
1792 | if (--page < 0) | 1734 | if (--page < 0) |
1793 | page = max_page; | 1735 | page = max_page; |
1794 | break; | 1736 | break; |
1795 | 1737 | ||
1796 | case SETTINGS_INC: | 1738 | case ACTION_SETTINGS_INC: |
1797 | if (++page > max_page) | 1739 | if (++page > max_page) |
1798 | page = 0; | 1740 | page = 0; |
1799 | break; | 1741 | break; |
1800 | } | 1742 | } |
1801 | lcd_stop_scroll(); | 1743 | lcd_stop_scroll(); |
1802 | } | 1744 | } |
1803 | 1745 | action_signalscreenchange(); | |
1804 | return false; | 1746 | return false; |
1805 | } | 1747 | } |
1806 | #endif /* !HAVE_MMC */ | 1748 | #endif /* !HAVE_MMC */ |
@@ -1849,13 +1791,8 @@ static bool dbg_dircache_info(void) | |||
1849 | 1791 | ||
1850 | lcd_update(); | 1792 | lcd_update(); |
1851 | 1793 | ||
1852 | switch (button_get_w_tmo(HZ/2)) | 1794 | if (action_userabort(HZ/2)) |
1853 | { | 1795 | return false; |
1854 | case SETTINGS_OK: | ||
1855 | case SETTINGS_CANCEL: | ||
1856 | done = true; | ||
1857 | break; | ||
1858 | } | ||
1859 | } | 1796 | } |
1860 | 1797 | ||
1861 | return false; | 1798 | return false; |
@@ -1900,13 +1837,8 @@ static bool dbg_tagcache_info(void) | |||
1900 | 1837 | ||
1901 | lcd_update(); | 1838 | lcd_update(); |
1902 | 1839 | ||
1903 | switch (button_get_w_tmo(HZ/2)) | 1840 | if (action_userabort(HZ/2)) |
1904 | { | 1841 | return false; |
1905 | case SETTINGS_OK: | ||
1906 | case SETTINGS_CANCEL: | ||
1907 | done = true; | ||
1908 | break; | ||
1909 | } | ||
1910 | } | 1842 | } |
1911 | 1843 | ||
1912 | return false; | 1844 | return false; |
@@ -1979,7 +1911,6 @@ bool dbg_save_roms(void) | |||
1979 | bool dbg_fm_radio(void) | 1911 | bool dbg_fm_radio(void) |
1980 | { | 1912 | { |
1981 | char buf[32]; | 1913 | char buf[32]; |
1982 | int button; | ||
1983 | bool fm_detected; | 1914 | bool fm_detected; |
1984 | 1915 | ||
1985 | #ifdef HAVE_LCD_BITMAP | 1916 | #ifdef HAVE_LCD_BITMAP |
@@ -2010,13 +1941,8 @@ bool dbg_fm_radio(void) | |||
2010 | 1941 | ||
2011 | lcd_update(); | 1942 | lcd_update(); |
2012 | 1943 | ||
2013 | button = button_get_w_tmo(HZ); | 1944 | if (action_userabort(TIMEOUT_BLOCK)) |
2014 | 1945 | return false; | |
2015 | switch(button) | ||
2016 | { | ||
2017 | case SETTINGS_CANCEL: | ||
2018 | return false; | ||
2019 | } | ||
2020 | } | 1946 | } |
2021 | return false; | 1947 | return false; |
2022 | } | 1948 | } |
diff --git a/apps/eq_menu.c b/apps/eq_menu.c index 32d16c47e1..7c8b1590c3 100644 --- a/apps/eq_menu.c +++ b/apps/eq_menu.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include "kernel.h" | 26 | #include "kernel.h" |
27 | #include "lcd.h" | 27 | #include "lcd.h" |
28 | #include "menu.h" | 28 | #include "menu.h" |
29 | #include "button.h" | 29 | #include "action.h" |
30 | #include "mp3_playback.h" | 30 | #include "mp3_playback.h" |
31 | #include "settings.h" | 31 | #include "settings.h" |
32 | #include "statusbar.h" | 32 | #include "statusbar.h" |
@@ -49,73 +49,6 @@ | |||
49 | #include "wm8758.h" | 49 | #include "wm8758.h" |
50 | #endif | 50 | #endif |
51 | 51 | ||
52 | /* Key definitions */ | ||
53 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD || \ | ||
54 | CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
55 | |||
56 | #define EQ_BTN_MODIFIER BUTTON_ON | ||
57 | #define EQ_BTN_DECREMENT BUTTON_LEFT | ||
58 | #define EQ_BTN_INCREMENT BUTTON_RIGHT | ||
59 | #define EQ_BTN_NEXT_BAND BUTTON_DOWN | ||
60 | #define EQ_BTN_PREV_BAND BUTTON_UP | ||
61 | #define EQ_BTN_CHANGE_MODE BUTTON_SELECT | ||
62 | #define EQ_BTN_EXIT BUTTON_OFF | ||
63 | |||
64 | #define EQ_BTN_RC_PREV_BAND BUTTON_RC_REW | ||
65 | #define EQ_BTN_RC_NEXT_BAND BUTTON_RC_FF | ||
66 | #define EQ_BTN_RC_DECREMENT BUTTON_RC_SOURCE | ||
67 | #define EQ_BTN_RC_INCREMENT BUTTON_RC_BITRATE | ||
68 | #define EQ_BTN_RC_CHANGE_MODE BUTTON_RC_MENU | ||
69 | #define EQ_BTN_RC_EXIT BUTTON_RC_STOP | ||
70 | |||
71 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | ||
72 | (CONFIG_KEYPAD == IPOD_3G_PAD) | ||
73 | |||
74 | #define EQ_BTN_DECREMENT BUTTON_SCROLL_BACK | ||
75 | #define EQ_BTN_INCREMENT BUTTON_SCROLL_FWD | ||
76 | #define EQ_BTN_NEXT_BAND BUTTON_RIGHT | ||
77 | #define EQ_BTN_PREV_BAND BUTTON_LEFT | ||
78 | #define EQ_BTN_CHANGE_MODE BUTTON_SELECT | ||
79 | #define EQ_BTN_EXIT BUTTON_MENU | ||
80 | |||
81 | #elif CONFIG_KEYPAD == IAUDIO_X5_PAD | ||
82 | |||
83 | #define EQ_BTN_DECREMENT BUTTON_LEFT | ||
84 | #define EQ_BTN_INCREMENT BUTTON_RIGHT | ||
85 | #define EQ_BTN_NEXT_BAND BUTTON_DOWN | ||
86 | #define EQ_BTN_PREV_BAND BUTTON_UP | ||
87 | #define EQ_BTN_CHANGE_MODE BUTTON_REC | ||
88 | #define EQ_BTN_EXIT BUTTON_SELECT | ||
89 | |||
90 | #elif (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) | ||
91 | |||
92 | #define EQ_BTN_DECREMENT BUTTON_LEFT | ||
93 | #define EQ_BTN_INCREMENT BUTTON_RIGHT | ||
94 | #define EQ_BTN_NEXT_BAND BUTTON_DOWN | ||
95 | #define EQ_BTN_PREV_BAND BUTTON_UP | ||
96 | #define EQ_BTN_CHANGE_MODE BUTTON_SELECT | ||
97 | #define EQ_BTN_EXIT BUTTON_PLAY | ||
98 | |||
99 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) | ||
100 | |||
101 | #define EQ_BTN_DECREMENT BUTTON_LEFT | ||
102 | #define EQ_BTN_INCREMENT BUTTON_RIGHT | ||
103 | #define EQ_BTN_NEXT_BAND BUTTON_DOWN | ||
104 | #define EQ_BTN_PREV_BAND BUTTON_UP | ||
105 | #define EQ_BTN_CHANGE_MODE BUTTON_SELECT | ||
106 | #define EQ_BTN_EXIT BUTTON_A | ||
107 | |||
108 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | ||
109 | |||
110 | #define EQ_BTN_DECREMENT BUTTON_LEFT | ||
111 | #define EQ_BTN_INCREMENT BUTTON_RIGHT | ||
112 | #define EQ_BTN_NEXT_BAND BUTTON_SCROLL_DOWN | ||
113 | #define EQ_BTN_PREV_BAND BUTTON_SCROLL_UP | ||
114 | #define EQ_BTN_CHANGE_MODE BUTTON_PLAY | ||
115 | #define EQ_BTN_EXIT BUTTON_POWER | ||
116 | |||
117 | #endif | ||
118 | |||
119 | /* Various user interface limits and sizes */ | 52 | /* Various user interface limits and sizes */ |
120 | #define EQ_CUTOFF_MIN 20 | 53 | #define EQ_CUTOFF_MIN 20 |
121 | #define EQ_CUTOFF_MAX 22040 | 54 | #define EQ_CUTOFF_MAX 22040 |
@@ -686,27 +619,19 @@ bool eq_menu_graphical(void) | |||
686 | screens[i].update(); | 619 | screens[i].update(); |
687 | } | 620 | } |
688 | 621 | ||
689 | button = button_get(true); | 622 | button = get_action(CONTEXT_SETTINGSGRAPHICAL,TIMEOUT_BLOCK); |
690 | 623 | ||
691 | switch (button) { | 624 | switch (button) { |
692 | case EQ_BTN_DECREMENT: | 625 | case ACTION_SETTINGS_DEC: |
693 | case EQ_BTN_DECREMENT | BUTTON_REPEAT: | 626 | case ACTION_SETTINGS_DECREPEAT: |
694 | #ifdef EQ_BTN_RC_DECREMENT | ||
695 | case EQ_BTN_RC_DECREMENT: | ||
696 | case EQ_BTN_RC_DECREMENT | BUTTON_REPEAT: | ||
697 | #endif | ||
698 | *(setting) -= step; | 627 | *(setting) -= step; |
699 | has_changed = true; | 628 | has_changed = true; |
700 | if (*(setting) < min) | 629 | if (*(setting) < min) |
701 | *(setting) = min; | 630 | *(setting) = min; |
702 | break; | 631 | break; |
703 | 632 | ||
704 | case EQ_BTN_INCREMENT: | 633 | case ACTION_SETTINGS_INC: |
705 | case EQ_BTN_INCREMENT | BUTTON_REPEAT: | 634 | case ACTION_SETTINGS_INCREPEAT: |
706 | #ifdef EQ_BTN_RC_INCREMENT | ||
707 | case EQ_BTN_RC_INCREMENT: | ||
708 | case EQ_BTN_RC_INCREMENT | BUTTON_REPEAT: | ||
709 | #endif | ||
710 | *(setting) += step; | 635 | *(setting) += step; |
711 | has_changed = true; | 636 | has_changed = true; |
712 | if (*(setting) > max) | 637 | if (*(setting) > max) |
@@ -731,45 +656,27 @@ bool eq_menu_graphical(void) | |||
731 | break; | 656 | break; |
732 | #endif | 657 | #endif |
733 | 658 | ||
734 | case EQ_BTN_PREV_BAND: | 659 | case ACTION_STD_PREV: |
735 | case EQ_BTN_PREV_BAND | BUTTON_REPEAT: | 660 | case ACTION_STD_PREVREPEAT: |
736 | #ifdef EQ_BTN_RC_PREV_BAND | ||
737 | case EQ_BTN_RC_PREV_BAND: | ||
738 | case EQ_BTN_RC_PREV_BAND | BUTTON_REPEAT: | ||
739 | #endif | ||
740 | current_band--; | 661 | current_band--; |
741 | if (current_band < 0) | 662 | if (current_band < 0) |
742 | current_band = 4; /* wrap around */ | 663 | current_band = 4; /* wrap around */ |
743 | break; | 664 | break; |
744 | 665 | ||
745 | case EQ_BTN_NEXT_BAND: | 666 | case ACTION_STD_NEXT: |
746 | case EQ_BTN_NEXT_BAND | BUTTON_REPEAT: | 667 | case ACTION_STD_NEXTREPEAT: |
747 | #ifdef EQ_BTN_RC_NEXT_BAND | ||
748 | case EQ_BTN_RC_NEXT_BAND: | ||
749 | case EQ_BTN_RC_NEXT_BAND | BUTTON_REPEAT: | ||
750 | #endif | ||
751 | current_band++; | 668 | current_band++; |
752 | if (current_band > 4) | 669 | if (current_band > 4) |
753 | current_band = 0; /* wrap around */ | 670 | current_band = 0; /* wrap around */ |
754 | break; | 671 | break; |
755 | 672 | ||
756 | case EQ_BTN_CHANGE_MODE: | 673 | case ACTION_STD_OK: |
757 | case EQ_BTN_CHANGE_MODE | BUTTON_REPEAT: | ||
758 | #ifdef EQ_BTN_RC_CHANGE_MODE | ||
759 | case EQ_BTN_RC_CHANGE_MODE: | ||
760 | case EQ_BTN_RC_CHANGE_MODE | BUTTON_REPEAT: | ||
761 | #endif | ||
762 | mode++; | 674 | mode++; |
763 | if (mode > Q) | 675 | if (mode > Q) |
764 | mode = GAIN; /* wrap around */ | 676 | mode = GAIN; /* wrap around */ |
765 | break; | 677 | break; |
766 | 678 | ||
767 | case EQ_BTN_EXIT: | 679 | case ACTION_STD_CANCEL: |
768 | case EQ_BTN_EXIT | BUTTON_REPEAT: | ||
769 | #ifdef EQ_BTN_RC_EXIT | ||
770 | case EQ_BTN_RC_EXIT: | ||
771 | case EQ_BTN_RC_EXIT | BUTTON_REPEAT: | ||
772 | #endif | ||
773 | exit_request = true; | 680 | exit_request = true; |
774 | result = false; | 681 | result = false; |
775 | break; | 682 | break; |
@@ -789,6 +696,7 @@ bool eq_menu_graphical(void) | |||
789 | } | 696 | } |
790 | } | 697 | } |
791 | 698 | ||
699 | action_signalscreenchange(); | ||
792 | /* Reset screen settings */ | 700 | /* Reset screen settings */ |
793 | FOR_NB_SCREENS(i) { | 701 | FOR_NB_SCREENS(i) { |
794 | screens[i].setfont(FONT_UI); | 702 | screens[i].setfont(FONT_UI); |
diff --git a/apps/gui/color_picker.c b/apps/gui/color_picker.c index 4618cb6bc0..3decd30207 100644 --- a/apps/gui/color_picker.c +++ b/apps/gui/color_picker.c | |||
@@ -29,64 +29,11 @@ | |||
29 | #include "scrollbar.h" | 29 | #include "scrollbar.h" |
30 | #include "lang.h" | 30 | #include "lang.h" |
31 | #include "splash.h" | 31 | #include "splash.h" |
32 | #include "action.h" | ||
32 | 33 | ||
33 | #define TEXT_MARGIN display->char_width+2 | 34 | #define TEXT_MARGIN display->char_width+2 |
34 | #define SLIDER_START 20 | 35 | #define SLIDER_START 20 |
35 | 36 | ||
36 | #if (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
37 | #define SLIDER_UP BUTTON_UP | ||
38 | #define SLIDER_DOWN BUTTON_DOWN | ||
39 | #define SLIDER_LEFT BUTTON_LEFT | ||
40 | #define SLIDER_RIGHT BUTTON_RIGHT | ||
41 | #define SLIDER_OK BUTTON_ON | ||
42 | #define SLIDER_OK2 BUTTON_SELECT | ||
43 | #define SLIDER_CANCEL BUTTON_OFF | ||
44 | |||
45 | #define SLIDER_RC_UP BUTTON_RC_REW | ||
46 | #define SLIDER_RC_DOWN BUTTON_RC_FF | ||
47 | #define SLIDER_RC_LEFT BUTTON_RC_SOURCE | ||
48 | #define SLIDER_RC_RIGHT BUTTON_RC_BITRATE | ||
49 | #define SLIDER_RC_OK BUTTON_RC_ON | ||
50 | #define SLIDER_RC_CANCEL BUTTON_RC_STOP | ||
51 | |||
52 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) | ||
53 | #define SLIDER_UP BUTTON_UP | ||
54 | #define SLIDER_DOWN BUTTON_DOWN | ||
55 | #define SLIDER_LEFT BUTTON_LEFT | ||
56 | #define SLIDER_RIGHT BUTTON_RIGHT | ||
57 | #define SLIDER_OK BUTTON_POWER | ||
58 | #define SLIDER_CANCEL BUTTON_A | ||
59 | |||
60 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) | ||
61 | #define SLIDER_UP BUTTON_LEFT | ||
62 | #define SLIDER_DOWN BUTTON_RIGHT | ||
63 | #define SLIDER_LEFT BUTTON_SCROLL_BACK | ||
64 | #define SLIDER_RIGHT BUTTON_SCROLL_FWD | ||
65 | #define SLIDER_OK BUTTON_SELECT | ||
66 | #define SLIDER_CANCEL BUTTON_MENU | ||
67 | |||
68 | #elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) | ||
69 | #define SLIDER_UP BUTTON_UP | ||
70 | #define SLIDER_DOWN BUTTON_DOWN | ||
71 | #define SLIDER_LEFT BUTTON_LEFT | ||
72 | #define SLIDER_RIGHT BUTTON_RIGHT | ||
73 | #define SLIDER_OK BUTTON_SELECT | ||
74 | #define SLIDER_CANCEL BUTTON_PLAY | ||
75 | |||
76 | /* FIXME: chosen at will to make it compile */ | ||
77 | #define SLIDER_RC_OK BUTTON_RC_PLAY | ||
78 | #define SLIDER_RC_CANCEL BUTTON_RC_REC | ||
79 | |||
80 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) | ||
81 | #define SLIDER_UP BUTTON_SCROLL_UP | ||
82 | #define SLIDER_DOWN BUTTON_SCROLL_DOWN | ||
83 | #define SLIDER_LEFT BUTTON_LEFT | ||
84 | #define SLIDER_RIGHT BUTTON_RIGHT | ||
85 | #define SLIDER_OK BUTTON_PLAY | ||
86 | #define SLIDER_CANCEL BUTTON_POWER | ||
87 | |||
88 | #endif | ||
89 | |||
90 | static const int max_val[3] = {LCD_MAX_RED,LCD_MAX_GREEN,LCD_MAX_BLUE}; | 37 | static const int max_val[3] = {LCD_MAX_RED,LCD_MAX_GREEN,LCD_MAX_BLUE}; |
91 | 38 | ||
92 | static void draw_screen(struct screen *display, char *title, | 39 | static void draw_screen(struct screen *display, char *title, |
@@ -237,50 +184,30 @@ bool set_color(struct screen *display,char *title, int* color, int banned_color) | |||
237 | draw_screen(&screens[i], title, rgb_val, newcolor, slider); | 184 | draw_screen(&screens[i], title, rgb_val, newcolor, slider); |
238 | } | 185 | } |
239 | 186 | ||
240 | button = button_get(true); | 187 | button = get_action(CONTEXT_SETTINGSGRAPHICAL,TIMEOUT_BLOCK); |
241 | switch (button) | 188 | switch (button) |
242 | { | 189 | { |
243 | case SLIDER_UP: | 190 | case ACTION_STD_PREV: |
244 | #ifdef SLIDER_RC_UP | ||
245 | case SLIDER_RC_UP: | ||
246 | #endif | ||
247 | slider = (slider+2)%3; | 191 | slider = (slider+2)%3; |
248 | break; | 192 | break; |
249 | 193 | ||
250 | case SLIDER_DOWN: | 194 | case ACTION_STD_NEXT: |
251 | #ifdef SLIDER_RC_DOWN | ||
252 | case SLIDER_RC_DOWN: | ||
253 | #endif | ||
254 | slider = (slider+1)%3; | 195 | slider = (slider+1)%3; |
255 | break; | 196 | break; |
256 | 197 | ||
257 | case SLIDER_RIGHT: | 198 | case ACTION_SETTINGS_INC: |
258 | case SLIDER_RIGHT|BUTTON_REPEAT: | 199 | case ACTION_SETTINGS_INCREPEAT: |
259 | #ifdef SLIDER_RC_RIGHT | ||
260 | case SLIDER_RC_RIGHT: | ||
261 | case SLIDER_RC_RIGHT|BUTTON_REPEAT: | ||
262 | #endif | ||
263 | if (rgb_val[slider] < max_val[slider]) | 200 | if (rgb_val[slider] < max_val[slider]) |
264 | rgb_val[slider]++; | 201 | rgb_val[slider]++; |
265 | break; | 202 | break; |
266 | 203 | ||
267 | case SLIDER_LEFT: | 204 | case ACTION_SETTINGS_DEC: |
268 | case SLIDER_LEFT|BUTTON_REPEAT: | 205 | case ACTION_SETTINGS_DECREPEAT: |
269 | #ifdef SLIDER_RC_LEFT | ||
270 | case SLIDER_RC_LEFT: | ||
271 | case SLIDER_RC_LEFT|BUTTON_REPEAT: | ||
272 | #endif | ||
273 | if (rgb_val[slider] > 0) | 206 | if (rgb_val[slider] > 0) |
274 | rgb_val[slider]--; | 207 | rgb_val[slider]--; |
275 | break; | 208 | break; |
276 | 209 | ||
277 | case SLIDER_OK: | 210 | case ACTION_STD_OK: |
278 | #ifdef HAVE_REMOTE_LCD | ||
279 | case SLIDER_RC_OK: | ||
280 | #endif | ||
281 | #ifdef SLIDER_OK2 | ||
282 | case SLIDER_OK2: | ||
283 | #endif | ||
284 | if ((banned_color!=-1) && (banned_color == newcolor)) | 211 | if ((banned_color!=-1) && (banned_color == newcolor)) |
285 | { | 212 | { |
286 | gui_syncsplash(HZ*2,true,str(LANG_COLOR_UNACCEPTABLE)); | 213 | gui_syncsplash(HZ*2,true,str(LANG_COLOR_UNACCEPTABLE)); |
@@ -290,10 +217,7 @@ bool set_color(struct screen *display,char *title, int* color, int banned_color) | |||
290 | exit = 1; | 217 | exit = 1; |
291 | break; | 218 | break; |
292 | 219 | ||
293 | case SLIDER_CANCEL: | 220 | case ACTION_STD_CANCEL: |
294 | #ifdef HAVE_REMOTE_LCD | ||
295 | case SLIDER_RC_CANCEL: | ||
296 | #endif | ||
297 | exit = 1; | 221 | exit = 1; |
298 | break; | 222 | break; |
299 | 223 | ||
@@ -306,6 +230,6 @@ bool set_color(struct screen *display,char *title, int* color, int banned_color) | |||
306 | } | 230 | } |
307 | } | 231 | } |
308 | display->set_foreground(fgcolor); | 232 | display->set_foreground(fgcolor); |
309 | 233 | action_signalscreenchange(); | |
310 | return false; | 234 | return false; |
311 | } | 235 | } |
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index d83ac55787..72ad4d6e93 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c | |||
@@ -52,6 +52,7 @@ | |||
52 | #include "backdrop.h" | 52 | #include "backdrop.h" |
53 | #endif | 53 | #endif |
54 | #include "dsp.h" | 54 | #include "dsp.h" |
55 | #include "action.h" | ||
55 | 56 | ||
56 | #ifdef HAVE_LCD_CHARCELLS | 57 | #ifdef HAVE_LCD_CHARCELLS |
57 | static bool draw_player_progress(struct gui_wps *gwps); | 58 | static bool draw_player_progress(struct gui_wps *gwps); |
@@ -2319,19 +2320,18 @@ bool ffwd_rew(int button) | |||
2319 | bool usb = false; | 2320 | bool usb = false; |
2320 | int i = 0; | 2321 | int i = 0; |
2321 | 2322 | ||
2323 | if (button == ACTION_NONE) | ||
2324 | { | ||
2325 | status_set_ffmode(0); | ||
2326 | return usb; | ||
2327 | } | ||
2322 | while (!exit) | 2328 | while (!exit) |
2323 | { | 2329 | { |
2324 | switch ( button ) | 2330 | switch ( button ) |
2325 | { | 2331 | { |
2326 | case WPS_FFWD: | 2332 | case ACTION_WPS_SEEKFWD: |
2327 | #ifdef WPS_RC_FFWD | ||
2328 | case WPS_RC_FFWD: | ||
2329 | #endif | ||
2330 | direction = 1; | 2333 | direction = 1; |
2331 | case WPS_REW: | 2334 | case ACTION_WPS_SEEKBACK: |
2332 | #ifdef WPS_RC_REW | ||
2333 | case WPS_RC_REW: | ||
2334 | #endif | ||
2335 | if (wps_state.ff_rewind) | 2335 | if (wps_state.ff_rewind) |
2336 | { | 2336 | { |
2337 | if (direction == 1) | 2337 | if (direction == 1) |
@@ -2415,12 +2415,7 @@ bool ffwd_rew(int button) | |||
2415 | 2415 | ||
2416 | break; | 2416 | break; |
2417 | 2417 | ||
2418 | case WPS_PREV: | 2418 | case ACTION_WPS_STOPSEEK: |
2419 | case WPS_NEXT: | ||
2420 | #ifdef WPS_RC_PREV | ||
2421 | case WPS_RC_PREV: | ||
2422 | case WPS_RC_NEXT: | ||
2423 | #endif | ||
2424 | wps_state.id3->elapsed = wps_state.id3->elapsed+ff_rewind_count; | 2419 | wps_state.id3->elapsed = wps_state.id3->elapsed+ff_rewind_count; |
2425 | audio_ff_rewind(wps_state.id3->elapsed); | 2420 | audio_ff_rewind(wps_state.id3->elapsed); |
2426 | ff_rewind_count = 0; | 2421 | ff_rewind_count = 0; |
@@ -2445,9 +2440,9 @@ bool ffwd_rew(int button) | |||
2445 | break; | 2440 | break; |
2446 | } | 2441 | } |
2447 | if (!exit) | 2442 | if (!exit) |
2448 | button = button_get(true); | 2443 | button = get_action(CONTEXT_WPS,TIMEOUT_BLOCK); |
2449 | } | 2444 | } |
2450 | 2445 | action_signalscreenchange(); | |
2451 | return usb; | 2446 | return usb; |
2452 | } | 2447 | } |
2453 | 2448 | ||
@@ -2547,7 +2542,7 @@ bool update(struct gui_wps *gwps) | |||
2547 | return retcode; | 2542 | return retcode; |
2548 | } | 2543 | } |
2549 | 2544 | ||
2550 | #ifdef WPS_KEYLOCK | 2545 | |
2551 | void display_keylock_text(bool locked) | 2546 | void display_keylock_text(bool locked) |
2552 | { | 2547 | { |
2553 | char* s; | 2548 | char* s; |
@@ -2569,11 +2564,3 @@ void display_keylock_text(bool locked) | |||
2569 | gui_syncsplash(HZ, true, s); | 2564 | gui_syncsplash(HZ, true, s); |
2570 | } | 2565 | } |
2571 | 2566 | ||
2572 | void waitfor_nokey(void) | ||
2573 | { | ||
2574 | /* wait until all keys are released */ | ||
2575 | while (button_get(false) != BUTTON_NONE) | ||
2576 | yield(); | ||
2577 | } | ||
2578 | #endif | ||
2579 | |||
diff --git a/apps/gui/gwps-common.h b/apps/gui/gwps-common.h index ecda1d47ea..b4d6df589a 100644 --- a/apps/gui/gwps-common.h +++ b/apps/gui/gwps-common.h | |||
@@ -35,9 +35,6 @@ bool update(struct gui_wps *gwps); | |||
35 | bool ffwd_rew(int button); | 35 | bool ffwd_rew(int button); |
36 | bool wps_data_preload_tags(struct wps_data *data, char *buf, | 36 | bool wps_data_preload_tags(struct wps_data *data, char *buf, |
37 | const char *bmpdir, size_t bmpdirlen); | 37 | const char *bmpdir, size_t bmpdirlen); |
38 | #ifdef WPS_KEYLOCK | ||
39 | void display_keylock_text(bool locked); | 38 | void display_keylock_text(bool locked); |
40 | void waitfor_nokey(void); | ||
41 | #endif | ||
42 | #endif | 39 | #endif |
43 | 40 | ||
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c index 1b19c13547..bd9bb5e07b 100644 --- a/apps/gui/gwps.c +++ b/apps/gui/gwps.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "lcd.h" | 25 | #include "lcd.h" |
26 | #include "font.h" | 26 | #include "font.h" |
27 | #include "backlight.h" | 27 | #include "backlight.h" |
28 | #include "button.h" | 28 | #include "action.h" |
29 | #include "kernel.h" | 29 | #include "kernel.h" |
30 | #include "tree.h" | 30 | #include "tree.h" |
31 | #include "debug.h" | 31 | #include "debug.h" |
@@ -84,14 +84,11 @@ static void gui_wps_set_margin(struct gui_wps *gwps) | |||
84 | 84 | ||
85 | long gui_wps_show(void) | 85 | long gui_wps_show(void) |
86 | { | 86 | { |
87 | long button = 0, lastbutton = 0; | 87 | long button = 0; |
88 | bool ignore_keyup = true; | ||
89 | bool restore = false; | 88 | bool restore = false; |
90 | long restoretimer = 0; /* timer to delay screen redraw temporarily */ | 89 | long restoretimer = 0; /* timer to delay screen redraw temporarily */ |
91 | bool exit = false; | 90 | bool exit = false; |
92 | bool update_track = false; | 91 | bool update_track = false; |
93 | unsigned long right_lastclick = 0; | ||
94 | unsigned long left_lastclick = 0; | ||
95 | int i; | 92 | int i; |
96 | 93 | ||
97 | wps_state_init(); | 94 | wps_state_init(); |
@@ -163,8 +160,8 @@ long gui_wps_show(void) | |||
163 | long next_big_refresh = current_tick + HZ / 5; | 160 | long next_big_refresh = current_tick + HZ / 5; |
164 | button = BUTTON_NONE; | 161 | button = BUTTON_NONE; |
165 | while (TIME_BEFORE(current_tick, next_big_refresh)) { | 162 | while (TIME_BEFORE(current_tick, next_big_refresh)) { |
166 | button = button_get(false); | 163 | button = get_action(CONTEXT_WPS,TIMEOUT_NOBLOCK); |
167 | if (button != BUTTON_NONE) { | 164 | if (button != ACTION_NONE) { |
168 | break; | 165 | break; |
169 | } | 166 | } |
170 | peak_meter_peek(); | 167 | peak_meter_peek(); |
@@ -186,35 +183,10 @@ long gui_wps_show(void) | |||
186 | /* The peak meter is disabled | 183 | /* The peak meter is disabled |
187 | -> no additional screen updates needed */ | 184 | -> no additional screen updates needed */ |
188 | else { | 185 | else { |
189 | button = button_get_w_tmo(HZ/5); | 186 | button = get_action(CONTEXT_WPS,HZ/5); |
190 | } | 187 | } |
191 | #else | 188 | #else |
192 | button = button_get_w_tmo(HZ/5); | 189 | button = get_action(CONTEXT_WPS,HZ/5); |
193 | #endif | ||
194 | |||
195 | /* discard first event if it's a button release */ | ||
196 | if (button && ignore_keyup) | ||
197 | { | ||
198 | ignore_keyup = false; | ||
199 | /* Negative events are system events */ | ||
200 | if (button >= 0 && button & BUTTON_REL ) | ||
201 | continue; | ||
202 | } | ||
203 | |||
204 | #ifdef WPS_KEYLOCK | ||
205 | /* ignore non-remote buttons when keys are locked */ | ||
206 | if (keys_locked && | ||
207 | ! ((button < 0) || | ||
208 | (button == BUTTON_NONE) || | ||
209 | ((button & WPS_KEYLOCK) == WPS_KEYLOCK) || | ||
210 | (button & BUTTON_REMOTE) | ||
211 | )) | ||
212 | { | ||
213 | if (!(button & BUTTON_REL)) | ||
214 | display_keylock_text(true); | ||
215 | restore = true; | ||
216 | button = BUTTON_NONE; | ||
217 | } | ||
218 | #endif | 190 | #endif |
219 | 191 | ||
220 | /* Exit if audio has stopped playing. This can happen if using the | 192 | /* Exit if audio has stopped playing. This can happen if using the |
@@ -222,17 +194,14 @@ long gui_wps_show(void) | |||
222 | from F1 */ | 194 | from F1 */ |
223 | if (!audio_status()) | 195 | if (!audio_status()) |
224 | exit = true; | 196 | exit = true; |
225 | 197 | ||
226 | switch(button) | 198 | switch(button) |
227 | { | 199 | { |
228 | #ifdef WPS_CONTEXT | 200 | case ACTION_WPS_CONTEXT: |
229 | case WPS_CONTEXT: | ||
230 | #ifdef WPS_RC_CONTEXT | ||
231 | case WPS_RC_CONTEXT: | ||
232 | #endif | ||
233 | #ifdef HAVE_LCD_COLOR | 201 | #ifdef HAVE_LCD_COLOR |
234 | show_main_backdrop(); | 202 | show_main_backdrop(); |
235 | #endif | 203 | #endif |
204 | action_signalscreenchange(); | ||
236 | onplay(wps_state.id3->path, TREE_ATTR_MPA, CONTEXT_WPS); | 205 | onplay(wps_state.id3->path, TREE_ATTR_MPA, CONTEXT_WPS); |
237 | #ifdef HAVE_LCD_COLOR | 206 | #ifdef HAVE_LCD_COLOR |
238 | show_wps_backdrop(); | 207 | show_wps_backdrop(); |
@@ -245,20 +214,8 @@ long gui_wps_show(void) | |||
245 | #endif | 214 | #endif |
246 | restore = true; | 215 | restore = true; |
247 | break; | 216 | break; |
248 | #endif | ||
249 | 217 | ||
250 | #ifdef WPS_RC_BROWSE | 218 | case ACTION_WPS_BROWSE: |
251 | case WPS_RC_BROWSE: | ||
252 | #endif | ||
253 | case WPS_BROWSE: | ||
254 | #ifdef WPS_BROWSE_PRE | ||
255 | if ((lastbutton != WPS_BROWSE_PRE) | ||
256 | #ifdef WPS_RC_BROWSE_PRE | ||
257 | && (lastbutton != WPS_RC_BROWSE_PRE) | ||
258 | #endif | ||
259 | ) | ||
260 | break; | ||
261 | #endif | ||
262 | #ifdef HAVE_LCD_CHARCELLS | 219 | #ifdef HAVE_LCD_CHARCELLS |
263 | status_set_record(false); | 220 | status_set_record(false); |
264 | status_set_audio(false); | 221 | status_set_audio(false); |
@@ -270,26 +227,14 @@ long gui_wps_show(void) | |||
270 | if (global_settings.browse_current && | 227 | if (global_settings.browse_current && |
271 | wps_state.current_track_path[0] != '\0') | 228 | wps_state.current_track_path[0] != '\0') |
272 | set_current_file(wps_state.current_track_path); | 229 | set_current_file(wps_state.current_track_path); |
273 | 230 | action_signalscreenchange(); | |
274 | return 0; | 231 | return 0; |
275 | break; | 232 | break; |
276 | 233 | ||
277 | /* play/pause */ | 234 | /* play/pause */ |
278 | case WPS_PAUSE: | 235 | case ACTION_WPS_PLAY: |
279 | #ifdef WPS_PAUSE_PRE | ||
280 | if (lastbutton != WPS_PAUSE_PRE) | ||
281 | break; | ||
282 | #endif | ||
283 | #ifdef WPS_RC_PAUSE | ||
284 | case WPS_RC_PAUSE: | ||
285 | if (global_settings.party_mode) | 236 | if (global_settings.party_mode) |
286 | break; | 237 | break; |
287 | #ifdef WPS_RC_PAUSE_PRE | ||
288 | if ((button == WPS_RC_PAUSE) && | ||
289 | (lastbutton != WPS_RC_PAUSE_PRE)) | ||
290 | break; | ||
291 | #endif | ||
292 | #endif | ||
293 | if ( wps_state.paused ) | 238 | if ( wps_state.paused ) |
294 | { | 239 | { |
295 | wps_state.paused = false; | 240 | wps_state.paused = false; |
@@ -313,12 +258,7 @@ long gui_wps_show(void) | |||
313 | break; | 258 | break; |
314 | 259 | ||
315 | /* volume up */ | 260 | /* volume up */ |
316 | case WPS_INCVOL: | 261 | case ACTION_WPS_VOLUP: |
317 | case WPS_INCVOL | BUTTON_REPEAT: | ||
318 | #ifdef WPS_RC_INCVOL | ||
319 | case WPS_RC_INCVOL: | ||
320 | case WPS_RC_INCVOL | BUTTON_REPEAT: | ||
321 | #endif | ||
322 | { | 262 | { |
323 | global_settings.volume++; | 263 | global_settings.volume++; |
324 | bool res = false; | 264 | bool res = false; |
@@ -336,12 +276,7 @@ long gui_wps_show(void) | |||
336 | break; | 276 | break; |
337 | 277 | ||
338 | /* volume down */ | 278 | /* volume down */ |
339 | case WPS_DECVOL: | 279 | case ACTION_WPS_VOLDOWN: |
340 | case WPS_DECVOL | BUTTON_REPEAT: | ||
341 | #ifdef WPS_RC_DECVOL | ||
342 | case WPS_RC_DECVOL: | ||
343 | case WPS_RC_DECVOL | BUTTON_REPEAT: | ||
344 | #endif | ||
345 | { | 280 | { |
346 | global_settings.volume--; | 281 | global_settings.volume--; |
347 | setvol(); | 282 | setvol(); |
@@ -357,59 +292,18 @@ long gui_wps_show(void) | |||
357 | } | 292 | } |
358 | } | 293 | } |
359 | break; | 294 | break; |
360 | |||
361 | /* fast forward / rewind */ | 295 | /* fast forward / rewind */ |
362 | #ifdef WPS_RC_FFWD | 296 | case ACTION_WPS_SEEKFWD: |
363 | case WPS_RC_FFWD: | 297 | case ACTION_WPS_SEEKBACK: |
364 | #endif | ||
365 | case WPS_FFWD: | ||
366 | if (global_settings.party_mode) | ||
367 | break; | ||
368 | |||
369 | #ifdef HAVE_DIR_NAVIGATION | ||
370 | if (current_tick - right_lastclick < HZ) | ||
371 | { | ||
372 | audio_next_dir(); | ||
373 | right_lastclick = 0; | ||
374 | break; | ||
375 | } | ||
376 | #endif | ||
377 | |||
378 | #ifdef WPS_RC_REW | ||
379 | case WPS_RC_REW: | ||
380 | #endif | ||
381 | case WPS_REW: | ||
382 | if (global_settings.party_mode) | 298 | if (global_settings.party_mode) |
383 | break; | 299 | break; |
384 | |||
385 | #ifdef HAVE_DIR_NAVIGATION | ||
386 | if (current_tick - left_lastclick < HZ) | ||
387 | { | ||
388 | audio_prev_dir(); | ||
389 | left_lastclick = 0; | ||
390 | break; | ||
391 | } | ||
392 | #endif | ||
393 | |||
394 | ffwd_rew(button); | 300 | ffwd_rew(button); |
395 | break; | 301 | break; |
396 | 302 | ||
397 | /* prev / restart */ | 303 | /* prev / restart */ |
398 | case WPS_PREV: | 304 | case ACTION_WPS_SKIPPREV: |
399 | #ifdef WPS_PREV_PRE | ||
400 | if (lastbutton != WPS_PREV_PRE) | ||
401 | break; | ||
402 | #endif | ||
403 | #ifdef WPS_RC_PREV | ||
404 | case WPS_RC_PREV: | ||
405 | if (global_settings.party_mode) | 305 | if (global_settings.party_mode) |
406 | break; | 306 | break; |
407 | #ifdef WPS_RC_PREV_PRE | ||
408 | if ((button == WPS_RC_PREV) && (lastbutton != WPS_RC_PREV_PRE)) | ||
409 | break; | ||
410 | #endif | ||
411 | #endif | ||
412 | left_lastclick = current_tick; | ||
413 | update_track = true; | 307 | update_track = true; |
414 | 308 | ||
415 | #ifdef AB_REPEAT_ENABLE | 309 | #ifdef AB_REPEAT_ENABLE |
@@ -450,61 +344,10 @@ long gui_wps_show(void) | |||
450 | } | 344 | } |
451 | break; | 345 | break; |
452 | 346 | ||
453 | #ifdef WPS_NEXT_DIR | ||
454 | #ifdef WPS_RC_NEXT_DIR | ||
455 | case WPS_RC_NEXT_DIR: | ||
456 | #endif | ||
457 | case WPS_NEXT_DIR: | ||
458 | if (global_settings.party_mode) | ||
459 | break; | ||
460 | #if defined(AB_REPEAT_ENABLE) && defined(WPS_AB_SHARE_DIR_BUTTONS) | ||
461 | if (ab_repeat_mode_enabled()) | ||
462 | { | ||
463 | ab_set_B_marker(wps_state.id3->elapsed); | ||
464 | ab_jump_to_A_marker(); | ||
465 | update_track = true; | ||
466 | } | ||
467 | else | ||
468 | #endif | ||
469 | { | ||
470 | audio_next_dir(); | ||
471 | } | ||
472 | break; | ||
473 | #endif | ||
474 | #ifdef WPS_PREV_DIR | ||
475 | #ifdef WPS_RC_PREV_DIR | ||
476 | case WPS_RC_PREV_DIR: | ||
477 | #endif | ||
478 | case WPS_PREV_DIR: | ||
479 | if (global_settings.party_mode) | ||
480 | break; | ||
481 | #if defined(AB_REPEAT_ENABLE) && defined(WPS_AB_SHARE_DIR_BUTTONS) | ||
482 | if (ab_repeat_mode_enabled()) | ||
483 | ab_set_A_marker(wps_state.id3->elapsed); | ||
484 | else | ||
485 | #endif | ||
486 | { | ||
487 | audio_prev_dir(); | ||
488 | } | ||
489 | break; | ||
490 | #endif | ||
491 | |||
492 | /* next */ | 347 | /* next */ |
493 | case WPS_NEXT: | 348 | case ACTION_WPS_SKIPNEXT: |
494 | #ifdef WPS_NEXT_PRE | ||
495 | if (lastbutton != WPS_NEXT_PRE) | ||
496 | break; | ||
497 | #endif | ||
498 | #ifdef WPS_RC_NEXT | ||
499 | case WPS_RC_NEXT: | ||
500 | if (global_settings.party_mode) | 349 | if (global_settings.party_mode) |
501 | break; | 350 | break; |
502 | #ifdef WPS_RC_NEXT_PRE | ||
503 | if ((button == WPS_RC_NEXT) && (lastbutton != WPS_RC_NEXT_PRE)) | ||
504 | break; | ||
505 | #endif | ||
506 | #endif | ||
507 | right_lastclick = current_tick; | ||
508 | update_track = true; | 351 | update_track = true; |
509 | 352 | ||
510 | #ifdef AB_REPEAT_ENABLE | 353 | #ifdef AB_REPEAT_ENABLE |
@@ -527,27 +370,44 @@ long gui_wps_show(void) | |||
527 | 370 | ||
528 | audio_next(); | 371 | audio_next(); |
529 | break; | 372 | break; |
530 | 373 | /* next / prev directories */ | |
531 | #ifdef WPS_MENU | 374 | case ACTION_WPS_NEXTDIR: |
532 | /* menu key functions */ | 375 | if (global_settings.party_mode) |
533 | case WPS_MENU: | ||
534 | #ifdef WPS_MENU_PRE | ||
535 | if (lastbutton != WPS_MENU_PRE) | ||
536 | break; | 376 | break; |
377 | #if defined(AB_REPEAT_ENABLE) && defined(WPS_AB_SHARE_DIR_BUTTONS) | ||
378 | if (ab_repeat_mode_enabled()) | ||
379 | { | ||
380 | ab_set_B_marker(wps_state.id3->elapsed); | ||
381 | ab_jump_to_A_marker(); | ||
382 | update_track = true; | ||
383 | } | ||
384 | else | ||
537 | #endif | 385 | #endif |
538 | #ifdef WPS_RC_MENU | 386 | { |
539 | case WPS_RC_MENU: | 387 | audio_next_dir(); |
540 | #ifdef WPS_RC_MENU_PRE | 388 | } |
541 | if ((button == WPS_RC_MENU) && (lastbutton != WPS_RC_MENU_PRE)) | 389 | break; |
390 | case ACTION_WPS_PREVDIR: | ||
391 | if (global_settings.party_mode) | ||
542 | break; | 392 | break; |
393 | #if defined(AB_REPEAT_ENABLE) && defined(WPS_AB_SHARE_DIR_BUTTONS) | ||
394 | if (ab_repeat_mode_enabled()) | ||
395 | ab_set_A_marker(wps_state.id3->elapsed); | ||
396 | else | ||
543 | #endif | 397 | #endif |
544 | #endif | 398 | { |
399 | audio_prev_dir(); | ||
400 | } | ||
401 | break; | ||
402 | /* menu key functions */ | ||
403 | case ACTION_WPS_MENU: | ||
545 | FOR_NB_SCREENS(i) | 404 | FOR_NB_SCREENS(i) |
546 | gui_wps[i].display->stop_scroll(); | 405 | gui_wps[i].display->stop_scroll(); |
547 | 406 | ||
548 | #ifdef HAVE_LCD_COLOR | 407 | #ifdef HAVE_LCD_COLOR |
549 | show_main_backdrop(); | 408 | show_main_backdrop(); |
550 | #endif | 409 | #endif |
410 | action_signalscreenchange(); | ||
551 | if (main_menu()) | 411 | if (main_menu()) |
552 | return true; | 412 | return true; |
553 | #ifdef HAVE_LCD_COLOR | 413 | #ifdef HAVE_LCD_COLOR |
@@ -561,25 +421,17 @@ long gui_wps_show(void) | |||
561 | #endif | 421 | #endif |
562 | restore = true; | 422 | restore = true; |
563 | break; | 423 | break; |
564 | #endif /* WPS_MENU */ | ||
565 | 424 | ||
566 | #ifdef WPS_KEYLOCK | ||
567 | /* key lock */ | 425 | /* key lock */ |
568 | case WPS_KEYLOCK: | 426 | case ACTION_STD_KEYLOCK: |
569 | case WPS_KEYLOCK | BUTTON_REPEAT: | 427 | action_setsoftwarekeylock(ACTION_STD_KEYLOCK,true); |
570 | keys_locked = !keys_locked; | 428 | display_keylock_text(true); |
571 | display_keylock_text(keys_locked); | ||
572 | restore = true; | 429 | restore = true; |
573 | waitfor_nokey(); | ||
574 | break; | 430 | break; |
575 | #endif | 431 | |
576 | 432 | ||
577 | #ifdef HAVE_QUICKSCREEN | 433 | #ifdef HAVE_QUICKSCREEN |
578 | /* play settings */ | 434 | case ACTION_WPS_QUICKSCREEN: |
579 | case WPS_QUICK: | ||
580 | #ifdef WPS_RC_QUICK | ||
581 | case WPS_RC_QUICK: | ||
582 | #endif | ||
583 | #ifdef HAVE_LCD_COLOR | 435 | #ifdef HAVE_LCD_COLOR |
584 | show_main_backdrop(); | 436 | show_main_backdrop(); |
585 | #endif | 437 | #endif |
@@ -595,8 +447,8 @@ long gui_wps_show(void) | |||
595 | } | 447 | } |
596 | #endif | 448 | #endif |
597 | restore = true; | 449 | restore = true; |
598 | lastbutton = 0; | ||
599 | break; | 450 | break; |
451 | #endif /* HAVE_QUICKSCREEN */ | ||
600 | 452 | ||
601 | /* screen settings */ | 453 | /* screen settings */ |
602 | #ifdef BUTTON_F3 | 454 | #ifdef BUTTON_F3 |
@@ -611,17 +463,14 @@ long gui_wps_show(void) | |||
611 | { | 463 | { |
612 | gui_wps_set_margin(&gui_wps[i]); | 464 | gui_wps_set_margin(&gui_wps[i]); |
613 | } | 465 | } |
614 | #endif | 466 | #endif /* BUTTON_F3 */ |
615 | restore = true; | 467 | restore = true; |
616 | lastbutton = 0; | ||
617 | break; | 468 | break; |
618 | #endif | 469 | #endif |
619 | 470 | ||
620 | /* pitch screen */ | 471 | /* pitch screen */ |
621 | #if CONFIG_KEYPAD == RECORDER_PAD || CONFIG_KEYPAD == IRIVER_H100_PAD \ | 472 | #ifdef HAVE_PITCHSCREEN |
622 | || CONFIG_KEYPAD == IRIVER_H300_PAD | 473 | case ACTION_WPS_PITCHSCREEN: |
623 | case BUTTON_ON | BUTTON_UP: | ||
624 | case BUTTON_ON | BUTTON_DOWN: | ||
625 | #ifdef HAVE_LCD_COLOR | 474 | #ifdef HAVE_LCD_COLOR |
626 | show_main_backdrop(); | 475 | show_main_backdrop(); |
627 | #endif | 476 | #endif |
@@ -632,17 +481,10 @@ long gui_wps_show(void) | |||
632 | #endif | 481 | #endif |
633 | restore = true; | 482 | restore = true; |
634 | break; | 483 | break; |
635 | #endif | 484 | #endif /* HAVE_PITCHSCREEN */ |
636 | #endif | ||
637 | 485 | ||
638 | #ifdef AB_REPEAT_ENABLE | 486 | #ifdef AB_REPEAT_ENABLE |
639 | 487 | case ACTION_WPSAB_SINGLE: | |
640 | #ifdef WPS_AB_SINGLE | ||
641 | case WPS_AB_SINGLE: | ||
642 | #ifdef WPS_AB_SINGLE_PRE | ||
643 | if (lastbutton != WPS_AB_SINGLE_PRE) | ||
644 | break; | ||
645 | #endif | ||
646 | /* If we are using the menu option to enable ab_repeat mode, don't do anything | 488 | /* If we are using the menu option to enable ab_repeat mode, don't do anything |
647 | * when it's disabled */ | 489 | * when it's disabled */ |
648 | #if (AB_REPEAT_ENABLE == 1) | 490 | #if (AB_REPEAT_ENABLE == 1) |
@@ -661,20 +503,15 @@ long gui_wps_show(void) | |||
661 | } | 503 | } |
662 | ab_set_A_marker(wps_state.id3->elapsed); | 504 | ab_set_A_marker(wps_state.id3->elapsed); |
663 | break; | 505 | break; |
664 | #endif | ||
665 | 506 | ||
666 | 507 | ||
667 | #ifdef WPS_AB_SET_A_MARKER | ||
668 | /* set A marker for A-B repeat */ | 508 | /* set A marker for A-B repeat */ |
669 | case WPS_AB_SET_A_MARKER: | 509 | case ACTION_WPSAB_SETA: |
670 | if (ab_repeat_mode_enabled()) | 510 | if (ab_repeat_mode_enabled()) |
671 | ab_set_A_marker(wps_state.id3->elapsed); | 511 | ab_set_A_marker(wps_state.id3->elapsed); |
672 | break; | 512 | break; |
673 | #endif | ||
674 | |||
675 | #ifdef WPS_AB_SET_B_MARKER | ||
676 | /* set B marker for A-B repeat and jump to A */ | 513 | /* set B marker for A-B repeat and jump to A */ |
677 | case WPS_AB_SET_B_MARKER: | 514 | case ACTION_WPSAB_SETB: |
678 | if (ab_repeat_mode_enabled()) | 515 | if (ab_repeat_mode_enabled()) |
679 | { | 516 | { |
680 | ab_set_B_marker(wps_state.id3->elapsed); | 517 | ab_set_B_marker(wps_state.id3->elapsed); |
@@ -682,46 +519,24 @@ long gui_wps_show(void) | |||
682 | update_track = true; | 519 | update_track = true; |
683 | } | 520 | } |
684 | break; | 521 | break; |
685 | #endif | ||
686 | |||
687 | #ifdef WPS_AB_RESET_AB_MARKERS | ||
688 | /* reset A&B markers */ | 522 | /* reset A&B markers */ |
689 | case WPS_AB_RESET_AB_MARKERS: | 523 | case ACTION_WPSAB_RESET: |
690 | if (ab_repeat_mode_enabled()) | 524 | if (ab_repeat_mode_enabled()) |
691 | { | 525 | { |
692 | ab_reset_markers(); | 526 | ab_reset_markers(); |
693 | update_track = true; | 527 | update_track = true; |
694 | } | 528 | } |
695 | break; | 529 | break; |
696 | #endif | ||
697 | |||
698 | #endif /* AB_REPEAT_ENABLE */ | 530 | #endif /* AB_REPEAT_ENABLE */ |
699 | 531 | ||
700 | /* stop and exit wps */ | 532 | /* stop and exit wps */ |
701 | #ifdef WPS_EXIT | 533 | case ACTION_WPS_STOP: |
702 | case WPS_EXIT: | ||
703 | # ifdef WPS_EXIT_PRE | ||
704 | if ((lastbutton & ~BUTTON_REPEAT) != WPS_EXIT_PRE) | ||
705 | break; | ||
706 | # endif | ||
707 | if (global_settings.party_mode) | ||
708 | break; | ||
709 | exit = true; | ||
710 | #ifdef WPS_RC_EXIT | ||
711 | case WPS_RC_EXIT: | ||
712 | #ifdef WPS_RC_EXIT_PRE | ||
713 | if ((lastbutton & ~BUTTON_REPEAT) != WPS_RC_EXIT_PRE) | ||
714 | break; | ||
715 | #endif | ||
716 | if (global_settings.party_mode) | 534 | if (global_settings.party_mode) |
717 | break; | 535 | break; |
718 | exit = true; | 536 | exit = true; |
719 | #endif | ||
720 | break; | 537 | break; |
721 | #endif | ||
722 | 538 | ||
723 | #ifdef WPS_ID3 | 539 | case ACTION_WPS_ID3SCREEN: |
724 | case WPS_ID3: | ||
725 | #ifdef HAVE_LCD_COLOR | 540 | #ifdef HAVE_LCD_COLOR |
726 | show_main_backdrop(); | 541 | show_main_backdrop(); |
727 | #endif | 542 | #endif |
@@ -737,10 +552,10 @@ long gui_wps_show(void) | |||
737 | #endif | 552 | #endif |
738 | restore = true; | 553 | restore = true; |
739 | break; | 554 | break; |
740 | #endif | ||
741 | 555 | ||
742 | case BUTTON_NONE: /* Timeout */ | 556 | case ACTION_NONE: /* Timeout */ |
743 | update_track = true; | 557 | update_track = true; |
558 | ffwd_rew(button); /* hopefully fix the ffw/rwd bug */ | ||
744 | break; | 559 | break; |
745 | 560 | ||
746 | case SYS_POWEROFF: | 561 | case SYS_POWEROFF: |
@@ -779,6 +594,7 @@ long gui_wps_show(void) | |||
779 | } | 594 | } |
780 | 595 | ||
781 | if (exit) { | 596 | if (exit) { |
597 | action_signalscreenchange(); | ||
782 | #ifdef HAVE_LCD_CHARCELLS | 598 | #ifdef HAVE_LCD_CHARCELLS |
783 | status_set_record(false); | 599 | status_set_record(false); |
784 | status_set_audio(false); | 600 | status_set_audio(false); |
@@ -830,8 +646,6 @@ long gui_wps_show(void) | |||
830 | gui_wps_refresh(&gui_wps[i], 0, WPS_REFRESH_NON_STATIC); | 646 | gui_wps_refresh(&gui_wps[i], 0, WPS_REFRESH_NON_STATIC); |
831 | } | 647 | } |
832 | } | 648 | } |
833 | if (button != BUTTON_NONE) | ||
834 | lastbutton = button; | ||
835 | } | 649 | } |
836 | return 0; /* unreachable - just to reduce compiler warnings */ | 650 | return 0; /* unreachable - just to reduce compiler warnings */ |
837 | } | 651 | } |
diff --git a/apps/gui/list.c b/apps/gui/list.c index b17e01ed90..f48d4d9ee1 100644 --- a/apps/gui/list.c +++ b/apps/gui/list.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "settings.h" | 26 | #include "settings.h" |
27 | #include "kernel.h" | 27 | #include "kernel.h" |
28 | 28 | ||
29 | #include "action.h" | ||
29 | #include "screen_access.h" | 30 | #include "screen_access.h" |
30 | #include "list.h" | 31 | #include "list.h" |
31 | #include "scrollbar.h" | 32 | #include "scrollbar.h" |
@@ -683,106 +684,65 @@ unsigned gui_synclist_do_button(struct gui_synclist * lists, unsigned button) | |||
683 | gui_synclist_limit_scroll(lists, true); | 684 | gui_synclist_limit_scroll(lists, true); |
684 | switch(button) | 685 | switch(button) |
685 | { | 686 | { |
686 | case LIST_PREV: | 687 | case ACTION_STD_PREV: |
687 | #ifdef LIST_RC_PREV | ||
688 | case LIST_RC_PREV: | ||
689 | #endif | ||
690 | gui_synclist_limit_scroll(lists, false); | 688 | gui_synclist_limit_scroll(lists, false); |
691 | 689 | ||
692 | case LIST_PREV | BUTTON_REPEAT: | 690 | case ACTION_STD_PREVREPEAT: |
693 | #ifdef LIST_RC_PREV | ||
694 | case LIST_RC_PREV | BUTTON_REPEAT: | ||
695 | #endif | ||
696 | gui_synclist_select_previous(lists); | 691 | gui_synclist_select_previous(lists); |
697 | gui_synclist_draw(lists); | 692 | gui_synclist_draw(lists); |
698 | yield(); | 693 | yield(); |
699 | return LIST_PREV; | 694 | return ACTION_STD_PREV; |
700 | 695 | ||
701 | case LIST_NEXT: | 696 | case ACTION_STD_NEXT: |
702 | #ifdef LIST_RC_NEXT | ||
703 | case LIST_RC_NEXT: | ||
704 | #endif | ||
705 | gui_synclist_limit_scroll(lists, false); | 697 | gui_synclist_limit_scroll(lists, false); |
706 | 698 | ||
707 | case LIST_NEXT | BUTTON_REPEAT: | 699 | case ACTION_STD_NEXTREPEAT: |
708 | #ifdef LIST_RC_NEXT | ||
709 | |||
710 | case LIST_RC_NEXT | BUTTON_REPEAT: | ||
711 | #endif | ||
712 | gui_synclist_select_next(lists); | 700 | gui_synclist_select_next(lists); |
713 | gui_synclist_draw(lists); | 701 | gui_synclist_draw(lists); |
714 | yield(); | 702 | yield(); |
715 | return LIST_NEXT; | 703 | return ACTION_STD_NEXT; |
716 | 704 | ||
717 | #ifdef LIST_PGRIGHT | 705 | #ifdef HAVE_LCD_BITMAP |
718 | case LIST_PGRIGHT: | 706 | case ACTION_TREE_PGRIGHT: |
719 | #if !(LIST_PGRIGHT & BUTTON_REPEAT) | ||
720 | case LIST_PGRIGHT | BUTTON_REPEAT: | ||
721 | #endif | ||
722 | #ifdef LIST_RC_PGRIGHT | ||
723 | case LIST_RC_PGRIGHT: | ||
724 | case LIST_RC_PGRIGHT | BUTTON_REPEAT: | ||
725 | #endif | ||
726 | gui_synclist_scroll_right(lists); | 707 | gui_synclist_scroll_right(lists); |
727 | gui_synclist_draw(lists); | 708 | gui_synclist_draw(lists); |
728 | return LIST_PGRIGHT; | 709 | return ACTION_TREE_PGRIGHT; |
729 | #endif | 710 | case ACTION_TREE_PGLEFT: |
730 | |||
731 | #ifdef LIST_PGLEFT | ||
732 | case LIST_PGLEFT: | ||
733 | #if !(LIST_PGLEFT & BUTTON_REPEAT) | ||
734 | case LIST_PGLEFT | BUTTON_REPEAT: | ||
735 | #endif | ||
736 | #ifdef LIST_RC_PGLEFT | ||
737 | case LIST_RC_PGLEFT: | ||
738 | case LIST_RC_PGLEFT | BUTTON_REPEAT: | ||
739 | #endif | ||
740 | gui_synclist_scroll_left(lists); | 711 | gui_synclist_scroll_left(lists); |
741 | gui_synclist_draw(lists); | 712 | gui_synclist_draw(lists); |
742 | return LIST_PGLEFT; | 713 | return ACTION_TREE_PGLEFT; |
743 | #endif | 714 | #endif |
744 | 715 | ||
745 | /* for pgup / pgdown, we are obliged to have a different behaviour depending on the screen | 716 | /* for pgup / pgdown, we are obliged to have a different behaviour depending on the screen |
746 | * for which the user pressed the key since for example, remote and main screen doesn't | 717 | * for which the user pressed the key since for example, remote and main screen doesn't |
747 | * have the same number of lines*/ | 718 | * have the same number of lines*/ |
748 | #ifdef LIST_PGUP | 719 | case ACTION_LISTTREE_PGUP: |
749 | case LIST_PGUP: | ||
750 | gui_synclist_limit_scroll(lists, false); | 720 | gui_synclist_limit_scroll(lists, false); |
751 | case LIST_PGUP | BUTTON_REPEAT: | ||
752 | gui_synclist_select_previous_page(lists, SCREEN_MAIN); | 721 | gui_synclist_select_previous_page(lists, SCREEN_MAIN); |
753 | gui_synclist_draw(lists); | 722 | gui_synclist_draw(lists); |
754 | yield(); | 723 | yield(); |
755 | return LIST_NEXT; | 724 | return ACTION_STD_NEXT; |
756 | #endif | 725 | |
757 | 726 | case ACTION_LISTTREE_PGDOWN: | |
758 | #ifdef LIST_RC_PGUP | ||
759 | case LIST_RC_PGUP: | ||
760 | gui_synclist_limit_scroll(lists, false); | 727 | gui_synclist_limit_scroll(lists, false); |
761 | case LIST_RC_PGUP | BUTTON_REPEAT: | 728 | gui_synclist_select_next_page(lists, SCREEN_MAIN); |
762 | gui_synclist_select_previous_page(lists, SCREEN_REMOTE); | ||
763 | gui_synclist_draw(lists); | 729 | gui_synclist_draw(lists); |
764 | yield(); | 730 | yield(); |
765 | return LIST_NEXT; | 731 | return ACTION_STD_PREV; |
766 | #endif | 732 | #if (REMOTE_BUTTON != 0 ) |
767 | 733 | case ACTION_LISTTREE_RC_PGUP: | |
768 | #ifdef LIST_PGDN | ||
769 | case LIST_PGDN: | ||
770 | gui_synclist_limit_scroll(lists, false); | 734 | gui_synclist_limit_scroll(lists, false); |
771 | case LIST_PGDN | BUTTON_REPEAT: | 735 | gui_synclist_select_previous_page(lists, SCREEN_REMOTE); |
772 | gui_synclist_select_next_page(lists, SCREEN_MAIN); | ||
773 | gui_synclist_draw(lists); | 736 | gui_synclist_draw(lists); |
774 | yield(); | 737 | yield(); |
775 | return LIST_PREV; | 738 | return ACTION_STD_NEXT; |
776 | #endif | 739 | |
777 | 740 | case ACTION_LISTTREE_RC_PGDOWN: | |
778 | #ifdef LIST_RC_PGDN | ||
779 | case LIST_RC_PGDN: | ||
780 | gui_synclist_limit_scroll(lists, false); | 741 | gui_synclist_limit_scroll(lists, false); |
781 | case LIST_RC_PGDN | BUTTON_REPEAT: | ||
782 | gui_synclist_select_next_page(lists, SCREEN_REMOTE); | 742 | gui_synclist_select_next_page(lists, SCREEN_REMOTE); |
783 | gui_synclist_draw(lists); | 743 | gui_synclist_draw(lists); |
784 | yield(); | 744 | yield(); |
785 | return LIST_PREV; | 745 | return ACTION_STD_PREV; |
786 | #endif | 746 | #endif |
787 | } | 747 | } |
788 | return 0; | 748 | return 0; |
diff --git a/apps/gui/list.h b/apps/gui/list.h index 8d3ac9ad4c..2a80298379 100644 --- a/apps/gui/list.h +++ b/apps/gui/list.h | |||
@@ -26,89 +26,6 @@ | |||
26 | 26 | ||
27 | #define SCROLLBAR_WIDTH 6 | 27 | #define SCROLLBAR_WIDTH 6 |
28 | 28 | ||
29 | /* Key assignement */ | ||
30 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
31 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
32 | #define LIST_NEXT BUTTON_DOWN | ||
33 | #define LIST_PREV BUTTON_UP | ||
34 | #define LIST_PGUP (BUTTON_ON | BUTTON_UP) | ||
35 | #define LIST_PGDN (BUTTON_ON | BUTTON_DOWN) | ||
36 | #define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
37 | #define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) | ||
38 | |||
39 | #ifdef CONFIG_REMOTE_KEYPAD | ||
40 | #define LIST_RC_NEXT BUTTON_RC_FF | ||
41 | #define LIST_RC_PREV BUTTON_RC_REW | ||
42 | #define LIST_RC_PGUP BUTTON_RC_SOURCE | ||
43 | #define LIST_RC_PGDN BUTTON_RC_BITRATE | ||
44 | #define LIST_RC_PGRIGHT (BUTTON_RC_VOL_UP) | ||
45 | #define LIST_RC_PGLEFT (BUTTON_RC_VOL_DOWN) | ||
46 | #endif /* CONFIG_REMOTE_KEYPAD */ | ||
47 | |||
48 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
49 | #define LIST_NEXT BUTTON_DOWN | ||
50 | #define LIST_PREV BUTTON_UP | ||
51 | #define LIST_PGUP (BUTTON_ON | BUTTON_UP) | ||
52 | #define LIST_PGDN (BUTTON_ON | BUTTON_DOWN) | ||
53 | #define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
54 | #define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) | ||
55 | |||
56 | #define LIST_RC_NEXT BUTTON_RC_RIGHT | ||
57 | #define LIST_RC_PREV BUTTON_RC_LEFT | ||
58 | |||
59 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
60 | #define LIST_NEXT BUTTON_RIGHT | ||
61 | #define LIST_PREV BUTTON_LEFT | ||
62 | |||
63 | #define LIST_RC_NEXT BUTTON_RC_RIGHT | ||
64 | #define LIST_RC_PREV BUTTON_RC_LEFT | ||
65 | |||
66 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
67 | #define LIST_NEXT BUTTON_DOWN | ||
68 | #define LIST_PREV BUTTON_UP | ||
69 | #define LIST_PGRIGHT (BUTTON_MENU | BUTTON_RIGHT) | ||
70 | #define LIST_PGLEFT (BUTTON_MENU | BUTTON_LEFT) | ||
71 | |||
72 | #elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) | ||
73 | #define LIST_NEXT BUTTON_SCROLL_FWD | ||
74 | #define LIST_PREV BUTTON_SCROLL_BACK | ||
75 | #define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
76 | #define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) | ||
77 | |||
78 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | ||
79 | #define LIST_NEXT BUTTON_DOWN | ||
80 | #define LIST_PREV BUTTON_UP | ||
81 | //#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_) | ||
82 | //#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_) Todo: define those | ||
83 | |||
84 | #elif CONFIG_KEYPAD == GMINI100_PAD | ||
85 | #define LIST_NEXT BUTTON_DOWN | ||
86 | #define LIST_PREV BUTTON_UP | ||
87 | #define LIST_PGUP (BUTTON_ON | BUTTON_UP) | ||
88 | #define LIST_PGDN (BUTTON_ON | BUTTON_DOWN) | ||
89 | #define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
90 | #define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) | ||
91 | |||
92 | #elif CONFIG_KEYPAD == IAUDIO_X5_PAD | ||
93 | #define LIST_NEXT BUTTON_DOWN | ||
94 | #define LIST_PREV BUTTON_UP | ||
95 | #define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
96 | #define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) | ||
97 | |||
98 | #elif CONFIG_KEYPAD == GIGABEAT_PAD | ||
99 | #define LIST_NEXT BUTTON_DOWN | ||
100 | #define LIST_PREV BUTTON_UP | ||
101 | #define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
102 | #define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) | ||
103 | |||
104 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | ||
105 | #define LIST_NEXT BUTTON_SCROLL_DOWN | ||
106 | #define LIST_PREV BUTTON_SCROLL_UP | ||
107 | #define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
108 | #define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) | ||
109 | |||
110 | #endif | ||
111 | |||
112 | /* | 29 | /* |
113 | * The gui_list is based on callback functions, if you want the list | 30 | * The gui_list is based on callback functions, if you want the list |
114 | * to display something you have to provide it a function that | 31 | * to display something you have to provide it a function that |
@@ -390,8 +307,8 @@ void gui_synclist_scroll_left(struct gui_synclist * lists); | |||
390 | * - lists : the synchronized lists | 307 | * - lists : the synchronized lists |
391 | * - button : the keycode of a pressed button | 308 | * - button : the keycode of a pressed button |
392 | * returned value : | 309 | * returned value : |
393 | * - LIST_NEXT when moving forward (next item or pgup) | 310 | * - ACTION_STD_NEXT when moving forward (next item or pgup) |
394 | * - LIST_PREV when moving backward (previous item or pgdown) | 311 | * - ACTION_STD_PREV when moving backward (previous item or pgdown) |
395 | */ | 312 | */ |
396 | extern unsigned gui_synclist_do_button(struct gui_synclist * lists, unsigned button); | 313 | extern unsigned gui_synclist_do_button(struct gui_synclist * lists, unsigned button); |
397 | 314 | ||
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index e998ee61ad..9465a2e5af 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include "kernel.h" | 29 | #include "kernel.h" |
30 | #include "misc.h" | 30 | #include "misc.h" |
31 | #include "statusbar.h" | 31 | #include "statusbar.h" |
32 | #include "action.h" | ||
32 | 33 | ||
33 | void gui_quickscreen_init(struct gui_quickscreen * qs, | 34 | void gui_quickscreen_init(struct gui_quickscreen * qs, |
34 | struct option_select *left_option, | 35 | struct option_select *left_option, |
@@ -128,59 +129,28 @@ bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button) | |||
128 | 129 | ||
129 | switch(button) | 130 | switch(button) |
130 | { | 131 | { |
131 | case QUICKSCREEN_LEFT : | 132 | case ACTION_QS_LEFT: |
132 | case QUICKSCREEN_LEFT | BUTTON_REPEAT : | ||
133 | #ifdef QUICKSCREEN_RC_LEFT | ||
134 | case QUICKSCREEN_RC_LEFT : | ||
135 | case QUICKSCREEN_RC_LEFT | BUTTON_REPEAT : | ||
136 | #endif | ||
137 | option_select_next(qs->left_option); | 133 | option_select_next(qs->left_option); |
138 | return(true); | 134 | return(true); |
139 | 135 | ||
140 | case QUICKSCREEN_BOTTOM : | 136 | case ACTION_QS_DOWN: |
141 | case QUICKSCREEN_BOTTOM | BUTTON_REPEAT : | ||
142 | #ifdef QUICKSCREEN_RC_BOTTOM | ||
143 | case QUICKSCREEN_RC_BOTTOM : | ||
144 | case QUICKSCREEN_RC_BOTTOM | BUTTON_REPEAT : | ||
145 | #endif | ||
146 | option_select_next(qs->bottom_option); | 137 | option_select_next(qs->bottom_option); |
147 | return(true); | 138 | return(true); |
148 | 139 | ||
149 | case QUICKSCREEN_RIGHT : | 140 | case ACTION_QS_RIGHT: |
150 | case QUICKSCREEN_RIGHT | BUTTON_REPEAT : | ||
151 | #ifdef QUICKSCREEN_RC_RIGHT | ||
152 | case QUICKSCREEN_RC_RIGHT : | ||
153 | case QUICKSCREEN_RC_RIGHT | BUTTON_REPEAT : | ||
154 | #endif | ||
155 | option_select_next(qs->right_option); | 141 | option_select_next(qs->right_option); |
156 | return(true); | 142 | return(true); |
157 | 143 | ||
158 | #ifdef QUICKSCREEN_BOTTOM_INV | 144 | case ACTION_QS_DOWNINV: |
159 | case QUICKSCREEN_BOTTOM_INV : | ||
160 | case QUICKSCREEN_BOTTOM_INV | BUTTON_REPEAT : | ||
161 | #endif | ||
162 | #ifdef QUICKSCREEN_RC_BOTTOM_INV | ||
163 | case QUICKSCREEN_RC_BOTTOM_INV : | ||
164 | case QUICKSCREEN_RC_BOTTOM_INV | BUTTON_REPEAT : | ||
165 | #endif | ||
166 | #if defined(QUICKSCREEN_RC_BOTTOM_INV) || defined(QUICKSCREEN_BOTTOM_INV) | ||
167 | option_select_prev(qs->bottom_option); | 145 | option_select_prev(qs->bottom_option); |
168 | return(true); | 146 | return(true); |
169 | #endif | ||
170 | } | 147 | } |
171 | return(false); | 148 | return(false); |
172 | } | 149 | } |
173 | #ifdef BUTTON_REMOTE | ||
174 | #define uncombine_button(key_read, combined_button) \ | ||
175 | key_read & ~(combined_button & ~BUTTON_REMOTE) | ||
176 | #else | ||
177 | #define uncombine_button(key_read, combined_button) \ | ||
178 | key_read & ~combined_button | ||
179 | #endif | ||
180 | 150 | ||
181 | bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) | 151 | bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) |
182 | { | 152 | { |
183 | int raw_key, button; | 153 | int button; |
184 | /* To quit we need either : | 154 | /* To quit we need either : |
185 | * - a second press on the button that made us enter | 155 | * - a second press on the button that made us enter |
186 | * - an action taken while pressing the enter button, | 156 | * - an action taken while pressing the enter button, |
@@ -188,9 +158,9 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) | |||
188 | bool can_quit=false; | 158 | bool can_quit=false; |
189 | gui_syncquickscreen_draw(qs); | 159 | gui_syncquickscreen_draw(qs); |
190 | gui_syncstatusbar_draw(&statusbars, true); | 160 | gui_syncstatusbar_draw(&statusbars, true); |
161 | action_signalscreenchange(); | ||
191 | while (true) { | 162 | while (true) { |
192 | raw_key = button_get(true); | 163 | button = get_action(CONTEXT_QUICKSCREEN,TIMEOUT_BLOCK); |
193 | button=uncombine_button(raw_key, button_enter); | ||
194 | if(default_event_handler(button) == SYS_USB_CONNECTED) | 164 | if(default_event_handler(button) == SYS_USB_CONNECTED) |
195 | return(true); | 165 | return(true); |
196 | if(gui_quickscreen_do_button(qs, button)) | 166 | if(gui_quickscreen_do_button(qs, button)) |
@@ -200,23 +170,19 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) | |||
200 | qs->callback(qs); | 170 | qs->callback(qs); |
201 | gui_syncquickscreen_draw(qs); | 171 | gui_syncquickscreen_draw(qs); |
202 | } | 172 | } |
203 | else if(raw_key==button_enter) | 173 | else if(button==button_enter) |
204 | can_quit=true; | 174 | can_quit=true; |
205 | if(raw_key==(button_enter | BUTTON_REL) && can_quit) | 175 | |
206 | return(false); | 176 | if((button == button_enter) && can_quit) |
207 | #ifdef QUICKSCREEN_QUIT | 177 | break; |
208 | if(raw_key==QUICKSCREEN_QUIT | 178 | |
209 | #ifdef QUICKSCREEN_QUIT2 | 179 | if(button==ACTION_STD_CANCEL) |
210 | || raw_key==QUICKSCREEN_QUIT2 | 180 | break; |
211 | #endif | 181 | |
212 | #if QUICKSCREEN_RC_QUIT | ||
213 | || raw_key==QUICKSCREEN_RC_QUIT | ||
214 | #endif | ||
215 | ) | ||
216 | return(false); | ||
217 | #endif /* QUICKSCREEN_QUIT */ | ||
218 | gui_syncstatusbar_draw(&statusbars, false); | 182 | gui_syncstatusbar_draw(&statusbars, false); |
219 | } | 183 | } |
184 | action_signalscreenchange(); | ||
185 | return false; | ||
220 | } | 186 | } |
221 | 187 | ||
222 | #endif /* HAVE_QUICKSCREEN */ | 188 | #endif /* HAVE_QUICKSCREEN */ |
diff --git a/apps/gui/quickscreen.h b/apps/gui/quickscreen.h index 63214f3c22..ebc7cef61a 100644 --- a/apps/gui/quickscreen.h +++ b/apps/gui/quickscreen.h | |||
@@ -27,42 +27,6 @@ | |||
27 | #include "option_select.h" | 27 | #include "option_select.h" |
28 | #include "screen_access.h" | 28 | #include "screen_access.h" |
29 | 29 | ||
30 | #define QUICKSCREEN_LEFT BUTTON_LEFT | ||
31 | #define QUICKSCREEN_RIGHT BUTTON_RIGHT | ||
32 | |||
33 | #if (CONFIG_KEYPAD == RECORDER_PAD) | ||
34 | #define QUICKSCREEN_BOTTOM BUTTON_DOWN | ||
35 | #define QUICKSCREEN_BOTTOM_INV BUTTON_UP | ||
36 | #define QUICKSCREEN_QUIT BUTTON_F3 | ||
37 | #define QUICKSCREEN_QUIT2 BUTTON_OFF | ||
38 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
39 | #define QUICKSCREEN_BOTTOM BUTTON_DOWN | ||
40 | #define QUICKSCREEN_BOTTOM_INV BUTTON_UP | ||
41 | #define QUICKSCREEN_QUIT BUTTON_MODE | ||
42 | #define QUICKSCREEN_QUIT2 BUTTON_OFF | ||
43 | #define QUICKSCREEN_RC_QUIT BUTTON_RC_MODE | ||
44 | #ifdef CONFIG_REMOTE_KEYPAD | ||
45 | #define QUICKSCREEN_RC_LEFT BUTTON_RC_REW | ||
46 | #define QUICKSCREEN_RC_BOTTOM BUTTON_RC_VOL_DOWN | ||
47 | #define QUICKSCREEN_RC_BOTTOM_INV BUTTON_RC_VOL_UP | ||
48 | #define QUICKSCREEN_RC_RIGHT BUTTON_RC_FF | ||
49 | #endif | ||
50 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) | ||
51 | #define QUICKSCREEN_BOTTOM BUTTON_PLAY | ||
52 | #define QUICKSCREEN_QUIT BUTTON_MENU | ||
53 | #define QUICKSCREEN_QUIT2 BUTTON_SELECT | ||
54 | #elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) | ||
55 | #define QUICKSCREEN_BOTTOM BUTTON_DOWN | ||
56 | #define QUICKSCREEN_BOTTOM_INV BUTTON_UP | ||
57 | #define QUICKSCREEN_QUIT BUTTON_REC | ||
58 | #define QUICKSCREEN_QUIT2 BUTTON_POWER | ||
59 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) | ||
60 | #define QUICKSCREEN_BOTTOM BUTTON_SCROLL_DOWN | ||
61 | #define QUICKSCREEN_BOTTOM_INV BUTTON_SCROLL_UP | ||
62 | #define QUICKSCREEN_QUIT BUTTON_REW | ||
63 | #define QUICKSCREEN_QUIT2 BUTTON_POWER | ||
64 | #endif | ||
65 | |||
66 | struct gui_quickscreen; | 30 | struct gui_quickscreen; |
67 | /* | 31 | /* |
68 | * Callback function called each time the quickscreen gets modified | 32 | * Callback function called each time the quickscreen gets modified |
diff --git a/apps/gui/select.c b/apps/gui/select.c index 89a047890c..12a93fcbcd 100644 --- a/apps/gui/select.c +++ b/apps/gui/select.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include "textarea.h" | 23 | #include "textarea.h" |
24 | #include "screen_access.h" | 24 | #include "screen_access.h" |
25 | #include "kernel.h" | 25 | #include "kernel.h" |
26 | #include "action.h" | ||
26 | 27 | ||
27 | 28 | ||
28 | void gui_select_init_numeric(struct gui_select * select, | 29 | void gui_select_init_numeric(struct gui_select * select, |
@@ -79,56 +80,28 @@ bool gui_syncselect_do_button(struct gui_select * select, int button) | |||
79 | { | 80 | { |
80 | switch(button) | 81 | switch(button) |
81 | { | 82 | { |
82 | case SELECT_INC | BUTTON_REPEAT : | 83 | case ACTION_SETTINGS_INCREPEAT: |
83 | #ifdef SELECT_RC_INC | ||
84 | case SELECT_RC_INC | BUTTON_REPEAT : | ||
85 | #endif | ||
86 | select->options.limit_loop = true; | 84 | select->options.limit_loop = true; |
87 | case SELECT_INC : | 85 | case ACTION_SETTINGS_INC: |
88 | #ifdef SELECT_RC_INC | ||
89 | case SELECT_RC_INC : | ||
90 | #endif | ||
91 | option_select_next(&select->options); | 86 | option_select_next(&select->options); |
92 | return(true); | 87 | return(true); |
93 | 88 | ||
94 | case SELECT_DEC | BUTTON_REPEAT : | 89 | case ACTION_SETTINGS_DECREPEAT: |
95 | #ifdef SELECT_RC_DEC | ||
96 | case SELECT_RC_DEC | BUTTON_REPEAT : | ||
97 | #endif | ||
98 | select->options.limit_loop = true; | 90 | select->options.limit_loop = true; |
99 | case SELECT_DEC : | 91 | case ACTION_SETTINGS_DEC: |
100 | #ifdef SELECT_RC_DEC | ||
101 | case SELECT_RC_DEC : | ||
102 | #endif | ||
103 | option_select_prev(&select->options); | 92 | option_select_prev(&select->options); |
104 | return(true); | 93 | return(true); |
105 | 94 | ||
106 | case SELECT_OK : | 95 | case ACTION_STD_OK: |
107 | #ifdef SELECT_RC_OK | 96 | case ACTION_STD_PREV: /*NOTE: this is in CONTEXT_SETTINGS ! */ |
108 | case SELECT_RC_OK : | ||
109 | #endif | ||
110 | #ifdef SELECT_RC_OK2 | ||
111 | case SELECT_RC_OK2 : | ||
112 | #endif | ||
113 | #ifdef SELECT_OK2 | ||
114 | case SELECT_OK2 : | ||
115 | #endif | ||
116 | select->validated=true; | 97 | select->validated=true; |
117 | return(false); | 98 | return(false); |
118 | 99 | ||
119 | case SELECT_CANCEL : | 100 | case ACTION_STD_CANCEL: |
120 | #ifdef SELECT_CANCEL2 | ||
121 | case SELECT_CANCEL2 : | ||
122 | #endif | ||
123 | #ifdef SELECT_RC_CANCEL | ||
124 | case SELECT_RC_CANCEL : | ||
125 | #endif | ||
126 | #ifdef SELECT_RC_CANCEL2 | ||
127 | case SELECT_RC_CANCEL2 : | ||
128 | #endif | ||
129 | select->canceled = true; | 101 | select->canceled = true; |
130 | gui_syncselect_draw(select); | 102 | gui_syncselect_draw(select); |
131 | sleep(HZ/2); | 103 | sleep(HZ/2); |
104 | action_signalscreenchange(); | ||
132 | return(false); | 105 | return(false); |
133 | } | 106 | } |
134 | return(false); | 107 | return(false); |
diff --git a/apps/gui/select.h b/apps/gui/select.h index 9270214d61..2556a683c8 100644 --- a/apps/gui/select.h +++ b/apps/gui/select.h | |||
@@ -23,104 +23,6 @@ | |||
23 | #include "settings.h" | 23 | #include "settings.h" |
24 | #include "option_select.h" | 24 | #include "option_select.h" |
25 | 25 | ||
26 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
27 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
28 | #define SELECT_INC BUTTON_UP | ||
29 | #define SELECT_DEC BUTTON_DOWN | ||
30 | #define SELECT_OK BUTTON_SELECT | ||
31 | #define SELECT_OK2 BUTTON_LEFT | ||
32 | #define SELECT_CANCEL BUTTON_OFF | ||
33 | #define SELECT_CANCEL2 BUTTON_MODE | ||
34 | |||
35 | #define SELECT_RC_INC BUTTON_RC_FF | ||
36 | #define SELECT_RC_DEC BUTTON_RC_REW | ||
37 | #define SELECT_RC_OK BUTTON_RC_ON | ||
38 | #define SELECT_RC_OK2 BUTTON_RC_MENU | ||
39 | #define SELECT_RC_CANCEL BUTTON_RC_STOP | ||
40 | #define SELECT_RC_CANCEL2 BUTTON_RC_MODE | ||
41 | |||
42 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
43 | #define SELECT_INC BUTTON_UP | ||
44 | #define SELECT_DEC BUTTON_DOWN | ||
45 | #define SELECT_OK BUTTON_PLAY | ||
46 | #define SELECT_OK2 BUTTON_LEFT | ||
47 | #define SELECT_CANCEL BUTTON_OFF | ||
48 | #define SELECT_CANCEL2 BUTTON_F1 | ||
49 | |||
50 | #define SELECT_RC_INC BUTTON_RC_RIGHT | ||
51 | #define SELECT_RC_DEC BUTTON_RC_LEFT | ||
52 | #define SELECT_RC_OK BUTTON_RC_PLAY | ||
53 | #define SELECT_RC_CANCEL BUTTON_RC_STOP | ||
54 | |||
55 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
56 | #define SELECT_INC BUTTON_RIGHT | ||
57 | #define SELECT_DEC BUTTON_LEFT | ||
58 | #define SELECT_OK BUTTON_PLAY | ||
59 | #define SELECT_CANCEL BUTTON_STOP | ||
60 | #define SELECT_CANCEL2 BUTTON_MENU | ||
61 | |||
62 | #define SELECT_RC_INC BUTTON_RC_RIGHT | ||
63 | #define SELECT_RC_DEC BUTTON_RC_LEFT | ||
64 | #define SELECT_RC_OK BUTTON_RC_PLAY | ||
65 | #define SELECT_RC_CANCEL BUTTON_RC_STOP | ||
66 | |||
67 | #elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) | ||
68 | #define SELECT_INC BUTTON_SCROLL_FWD | ||
69 | #define SELECT_DEC BUTTON_SCROLL_BACK | ||
70 | #define SELECT_OK BUTTON_SELECT | ||
71 | #define SELECT_OK2 BUTTON_LEFT | ||
72 | #define SELECT_CANCEL BUTTON_MENU | ||
73 | |||
74 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | ||
75 | #define SELECT_INC BUTTON_UP | ||
76 | #define SELECT_DEC BUTTON_DOWN | ||
77 | #define SELECT_OK BUTTON_RIGHT | ||
78 | #define SELECT_OK2 BUTTON_LEFT | ||
79 | #define SELECT_CANCEL BUTTON_PLAY | ||
80 | #define SELECT_CANCEL2 BUTTON_MODE | ||
81 | |||
82 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
83 | #define SELECT_INC BUTTON_UP | ||
84 | #define SELECT_DEC BUTTON_DOWN | ||
85 | #define SELECT_OK BUTTON_RIGHT | ||
86 | #define SELECT_OK2 BUTTON_LEFT | ||
87 | #define SELECT_CANCEL BUTTON_MENU | ||
88 | #define SELECT_CANCEL2 BUTTON_OFF | ||
89 | |||
90 | #elif CONFIG_KEYPAD == GMINI100_PAD | ||
91 | #define SELECT_INC BUTTON_UP | ||
92 | #define SELECT_DEC BUTTON_DOWN | ||
93 | #define SELECT_OK BUTTON_PLAY | ||
94 | #define SELECT_OK2 BUTTON_LEFT | ||
95 | #define SELECT_CANCEL BUTTON_OFF | ||
96 | #define SELECT_CANCEL2 BUTTON_MENU | ||
97 | |||
98 | #elif CONFIG_KEYPAD == IAUDIO_X5_PAD | ||
99 | #define SELECT_INC BUTTON_UP | ||
100 | #define SELECT_DEC BUTTON_DOWN | ||
101 | #define SELECT_OK BUTTON_SELECT | ||
102 | #define SELECT_OK2 BUTTON_LEFT | ||
103 | #define SELECT_CANCEL BUTTON_PLAY | ||
104 | #define SELECT_CANCEL2 BUTTON_POWER | ||
105 | |||
106 | #elif CONFIG_KEYPAD == GIGABEAT_PAD | ||
107 | #define SELECT_INC BUTTON_UP | ||
108 | #define SELECT_DEC BUTTON_DOWN | ||
109 | #define SELECT_OK BUTTON_MENU | ||
110 | #define SELECT_OK2 BUTTON_LEFT | ||
111 | #define SELECT_CANCEL BUTTON_A | ||
112 | #define SELECT_CANCEL2 BUTTON_POWER | ||
113 | |||
114 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | ||
115 | #define SELECT_INC BUTTON_SCROLL_UP | ||
116 | #define SELECT_DEC BUTTON_SCROLL_DOWN | ||
117 | #define SELECT_OK BUTTON_PLAY | ||
118 | #define SELECT_OK2 BUTTON_RIGHT | ||
119 | #define SELECT_CANCEL BUTTON_POWER | ||
120 | #define SELECT_CANCEL2 BUTTON_LEFT | ||
121 | |||
122 | #endif | ||
123 | |||
124 | struct gui_select | 26 | struct gui_select |
125 | { | 27 | { |
126 | bool canceled; | 28 | bool canceled; |
diff --git a/apps/gui/yesno.c b/apps/gui/yesno.c index 225f6d3f43..d567cf9ed4 100644 --- a/apps/gui/yesno.c +++ b/apps/gui/yesno.c | |||
@@ -3,6 +3,7 @@ | |||
3 | #include "kernel.h" | 3 | #include "kernel.h" |
4 | #include "misc.h" | 4 | #include "misc.h" |
5 | #include "lang.h" | 5 | #include "lang.h" |
6 | #include "action.h" | ||
6 | 7 | ||
7 | void gui_yesno_init(struct gui_yesno * yn, | 8 | void gui_yesno_init(struct gui_yesno * yn, |
8 | struct text_message * main_message, | 9 | struct text_message * main_message, |
@@ -54,7 +55,7 @@ bool gui_yesno_draw_result(struct gui_yesno * yn, enum yesno_res result) | |||
54 | gui_textarea_put_message(yn->display, message, 0); | 55 | gui_textarea_put_message(yn->display, message, 0); |
55 | return(true); | 56 | return(true); |
56 | } | 57 | } |
57 | 58 | #include "debug.h" | |
58 | enum yesno_res gui_syncyesno_run(struct text_message * main_message, | 59 | enum yesno_res gui_syncyesno_run(struct text_message * main_message, |
59 | struct text_message * yes_message, | 60 | struct text_message * yes_message, |
60 | struct text_message * no_message) | 61 | struct text_message * no_message) |
@@ -72,23 +73,21 @@ enum yesno_res gui_syncyesno_run(struct text_message * main_message, | |||
72 | } | 73 | } |
73 | while (result==-1) | 74 | while (result==-1) |
74 | { | 75 | { |
75 | button = button_get(true); | 76 | button = get_action(CONTEXT_YESNOSCREEN,TIMEOUT_BLOCK); |
77 | DEBUGF("button=%x\n",button); | ||
76 | switch (button) | 78 | switch (button) |
77 | { | 79 | { |
78 | case YESNO_OK: | 80 | case ACTION_YESNO_ACCEPT: |
79 | #ifdef YESNO_RC_OK | ||
80 | case YESNO_RC_OK: | ||
81 | #endif | ||
82 | result=YESNO_YES; | 81 | result=YESNO_YES; |
83 | break; | 82 | break; |
84 | 83 | ||
85 | default: | 84 | default: |
86 | if(default_event_handler(button) == SYS_USB_CONNECTED) | 85 | if(default_event_handler(button) == SYS_USB_CONNECTED) |
87 | return(YESNO_USB); | 86 | return(YESNO_USB); |
88 | if(!(button & BUTTON_REL)) | 87 | result = YESNO_NO; |
89 | result=YESNO_NO; | ||
90 | } | 88 | } |
91 | } | 89 | } |
90 | action_signalscreenchange(); | ||
92 | FOR_NB_SCREENS(i) | 91 | FOR_NB_SCREENS(i) |
93 | result_displayed=gui_yesno_draw_result(&(yn[i]), result); | 92 | result_displayed=gui_yesno_draw_result(&(yn[i]), result); |
94 | if(result_displayed) | 93 | if(result_displayed) |
diff --git a/apps/gui/yesno.h b/apps/gui/yesno.h index 71658a5217..7b60cab132 100644 --- a/apps/gui/yesno.h +++ b/apps/gui/yesno.h | |||
@@ -4,41 +4,6 @@ | |||
4 | #include "screen_access.h" | 4 | #include "screen_access.h" |
5 | #include "textarea.h" | 5 | #include "textarea.h" |
6 | 6 | ||
7 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
8 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
9 | #define YESNO_OK BUTTON_SELECT | ||
10 | #define YESNO_RC_OK BUTTON_RC_MENU | ||
11 | |||
12 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
13 | #define YESNO_OK BUTTON_PLAY | ||
14 | #define YESNO_RC_OK BUTTON_RC_PLAY | ||
15 | |||
16 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
17 | #define YESNO_OK BUTTON_PLAY | ||
18 | #define YESNO_RC_OK BUTTON_RC_PLAY | ||
19 | |||
20 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
21 | #define YESNO_OK BUTTON_RIGHT | ||
22 | |||
23 | #elif CONFIG_KEYPAD == GMINI100_PAD | ||
24 | #define YESNO_OK BUTTON_PLAY | ||
25 | |||
26 | #elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) | ||
27 | #define YESNO_OK BUTTON_PLAY | ||
28 | |||
29 | #elif (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) | ||
30 | #define YESNO_OK BUTTON_RIGHT | ||
31 | |||
32 | #elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) | ||
33 | #define YESNO_OK BUTTON_RIGHT | ||
34 | |||
35 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) | ||
36 | #define YESNO_OK BUTTON_RIGHT | ||
37 | |||
38 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) | ||
39 | #define YESNO_OK BUTTON_RIGHT | ||
40 | |||
41 | #endif | ||
42 | enum yesno_res | 7 | enum yesno_res |
43 | { | 8 | { |
44 | YESNO_YES, | 9 | YESNO_YES, |
diff --git a/apps/keymaps/keymap-h1x0_h3x0.c b/apps/keymaps/keymap-h1x0_h3x0.c new file mode 100644 index 0000000000..7e11c27dfc --- /dev/null +++ b/apps/keymaps/keymap-h1x0_h3x0.c | |||
@@ -0,0 +1,386 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2006 Jonathan Gordon | ||
10 | * | ||
11 | * All files in this archive are subject to the GNU General Public License. | ||
12 | * See the file COPYING in the source tree root for full license agreement. | ||
13 | * | ||
14 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
15 | * KIND, either express or implied. | ||
16 | * | ||
17 | ****************************************************************************/ | ||
18 | |||
19 | /* Button Code Definitions for iriver h100/h300 target */ | ||
20 | #include <stdio.h> | ||
21 | #include <string.h> | ||
22 | #include <stdlib.h> | ||
23 | |||
24 | #include "config.h" | ||
25 | #include "action.h" | ||
26 | #include "button.h" | ||
27 | #include "lcd-remote.h" /* for remote_type() */ | ||
28 | #include "settings.h" | ||
29 | |||
30 | /* | ||
31 | * The format of the list is as follows | ||
32 | * { Action Code, Button code, Prereq button code } | ||
33 | * if there's no need to check the previous button's value, use BUTTON_NONE | ||
34 | * Insert LAST_ITEM_IN_LIST at the end of each mapping | ||
35 | */ | ||
36 | |||
37 | /* CONTEXT_CUSTOM's used in this file... | ||
38 | |||
39 | CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions) | ||
40 | |||
41 | |||
42 | */ | ||
43 | |||
44 | |||
45 | struct button_mapping button_context_standard[] = { | ||
46 | { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, | ||
47 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
48 | { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, | ||
49 | { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
50 | |||
51 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, | ||
52 | { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE }, | ||
53 | { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT }, | ||
54 | { ACTION_STD_QUICKSCREEN, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE }, | ||
55 | { ACTION_STD_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE }, | ||
56 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | ||
57 | { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, | ||
58 | |||
59 | LAST_ITEM_IN_LIST | ||
60 | }; /* button_context_standard */ | ||
61 | |||
62 | |||
63 | struct button_mapping button_context_wps[] = { | ||
64 | { ACTION_WPS_PLAY, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | ||
65 | { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
66 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
67 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
68 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
69 | { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
70 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
71 | { ACTION_WPS_NEXTDIR, BUTTON_ON|BUTTON_RIGHT, BUTTON_ON }, | ||
72 | { ACTION_WPS_PREVDIR, BUTTON_ON|BUTTON_LEFT, BUTTON_ON }, | ||
73 | { ACTION_WPS_STOP, BUTTON_OFF, BUTTON_NONE }, | ||
74 | { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, | ||
75 | { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
76 | { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REL, BUTTON_UP }, | ||
77 | { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
78 | { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_REPEAT, BUTTON_ON }, | ||
79 | { ACTION_WPS_QUICKSCREEN, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE }, | ||
80 | { ACTION_WPS_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE }, | ||
81 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | ||
82 | { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | ||
83 | { ACTION_WPSAB_RESET, BUTTON_ON|BUTTON_SELECT, BUTTON_ON }, | ||
84 | |||
85 | LAST_ITEM_IN_LIST | ||
86 | }; /* button_context_wps */ | ||
87 | |||
88 | struct button_mapping button_context_listtree[] = { | ||
89 | { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON }, | ||
90 | { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP }, | ||
91 | { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP|BUTTON_REPEAT, BUTTON_ON|BUTTON_UP }, | ||
92 | { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON|BUTTON_UP }, | ||
93 | { ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_ON|BUTTON_DOWN }, | ||
94 | { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_ON|BUTTON_DOWN }, | ||
95 | LAST_ITEM_IN_LIST | ||
96 | }; /* button_context_listtree */ | ||
97 | |||
98 | struct button_mapping button_context_tree[] = { | ||
99 | { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | ||
100 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | ||
101 | }; /* button_context_listtree */ | ||
102 | |||
103 | struct button_mapping button_context_listtree_scroll_with_combo[] = { | ||
104 | { ACTION_NONE, BUTTON_ON, BUTTON_NONE }, | ||
105 | { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_ON }, | ||
106 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_ON|BUTTON_LEFT }, | ||
107 | { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_LEFT|BUTTON_REL }, | ||
108 | { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_ON|BUTTON_LEFT }, | ||
109 | { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_ON }, | ||
110 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_ON|BUTTON_RIGHT }, | ||
111 | { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_RIGHT|BUTTON_REL }, | ||
112 | { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_ON|BUTTON_RIGHT }, | ||
113 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), | ||
114 | }; | ||
115 | |||
116 | struct button_mapping button_context_listtree_scroll_without_combo[] = { | ||
117 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
118 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
119 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
120 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
121 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
122 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
123 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
124 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
125 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), | ||
126 | }; | ||
127 | |||
128 | struct button_mapping button_context_settings[] = { | ||
129 | { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, | ||
130 | { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
131 | { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, | ||
132 | { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
133 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
134 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
135 | |||
136 | LAST_ITEM_IN_LIST | ||
137 | }; /* button_context_settings */ | ||
138 | |||
139 | struct button_mapping button_context_settingsgraphical[] = { | ||
140 | { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE }, | ||
141 | { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
142 | { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE }, | ||
143 | { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
144 | { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, | ||
145 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
146 | { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, | ||
147 | { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
148 | |||
149 | LAST_ITEM_IN_LIST | ||
150 | }; /* button_context_settingsgraphical */ | ||
151 | |||
152 | struct button_mapping button_context_yesno[] = { | ||
153 | { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE }, | ||
154 | { ACTION_YESNO_ACCEPT, BUTTON_RC_ON, BUTTON_NONE }, | ||
155 | LAST_ITEM_IN_LIST | ||
156 | }; /* button_context_settings_yesno */ | ||
157 | |||
158 | struct button_mapping button_context_bmark[] = { | ||
159 | { ACTION_BMARK_DELETE, BUTTON_REC, BUTTON_NONE }, | ||
160 | { ACTION_STD_OK, BUTTON_SELECT, BUTTON_NONE }, | ||
161 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGSGRAPHICAL), | ||
162 | }; /* button_context_settings_bmark */ | ||
163 | |||
164 | struct button_mapping button_context_quickscreen[] = { | ||
165 | { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, | ||
166 | { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
167 | { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, | ||
168 | { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
169 | { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, | ||
170 | { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
171 | { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | ||
172 | { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
173 | { ACTION_STD_CANCEL, BUTTON_MODE, BUTTON_NONE }, | ||
174 | |||
175 | LAST_ITEM_IN_LIST | ||
176 | }; /* button_context_quickscreen */ | ||
177 | /***************************************************************************** | ||
178 | * Remote control mappings | ||
179 | *****************************************************************************/ | ||
180 | |||
181 | |||
182 | /********* H100 LCD remote ******/ | ||
183 | struct button_mapping button_context_standard_h100lcdremote[] = { | ||
184 | { ACTION_STD_PREV, BUTTON_RC_REW, BUTTON_NONE }, | ||
185 | { ACTION_STD_PREVREPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW }, | ||
186 | { ACTION_STD_NEXT, BUTTON_RC_FF, BUTTON_NONE }, | ||
187 | { ACTION_STD_NEXTREPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF }, | ||
188 | |||
189 | { ACTION_STD_OK, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, | ||
190 | { ACTION_STD_CONTEXT, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU }, | ||
191 | { ACTION_STD_CANCEL, BUTTON_RC_STOP, BUTTON_NONE }, | ||
192 | { ACTION_STD_QUICKSCREEN, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE }, | ||
193 | { ACTION_STD_MENU, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE }, | ||
194 | { ACTION_STD_OK, BUTTON_RC_MENU|BUTTON_REL, BUTTON_RC_MENU }, | ||
195 | |||
196 | LAST_ITEM_IN_LIST | ||
197 | }; /* button_context_standard_h100lcdremote */ | ||
198 | |||
199 | struct button_mapping button_context_wps_h100lcdremote[] = { | ||
200 | { ACTION_WPS_PLAY, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, | ||
201 | { ACTION_WPS_SKIPNEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF }, | ||
202 | { ACTION_WPS_SEEKFWD, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF }, | ||
203 | { ACTION_WPS_SKIPPREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW }, | ||
204 | { ACTION_WPS_SEEKBACK, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW }, | ||
205 | { ACTION_WPS_STOP, BUTTON_RC_STOP, BUTTON_NONE }, | ||
206 | { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, | ||
207 | { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_RC_VOL_DOWN }, | ||
208 | { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP, BUTTON_NONE }, | ||
209 | { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_RC_VOL_UP }, | ||
210 | { ACTION_WPS_NEXTDIR, BUTTON_RC_BITRATE, BUTTON_NONE }, | ||
211 | { ACTION_WPS_PREVDIR, BUTTON_RC_SOURCE, BUTTON_NONE }, | ||
212 | { ACTION_WPS_PITCHSCREEN, BUTTON_RC_ON|BUTTON_REPEAT, BUTTON_RC_ON }, | ||
213 | { ACTION_WPS_QUICKSCREEN, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE }, | ||
214 | { ACTION_WPS_MENU, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE }, | ||
215 | { ACTION_WPS_CONTEXT, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU }, | ||
216 | { ACTION_WPS_BROWSE, BUTTON_RC_MENU|BUTTON_REL, BUTTON_RC_MENU }, | ||
217 | |||
218 | LAST_ITEM_IN_LIST | ||
219 | }; /* button_context_wps_h100lcdremote */ | ||
220 | |||
221 | struct button_mapping button_context_listtree_h100lcdremote[] = { | ||
222 | { ACTION_LISTTREE_PGUP, BUTTON_RC_SOURCE, BUTTON_NONE }, | ||
223 | { ACTION_LISTTREE_PGUP, BUTTON_RC_SOURCE|BUTTON_REPEAT, BUTTON_RC_SOURCE }, | ||
224 | { ACTION_LISTTREE_PGDOWN, BUTTON_RC_BITRATE, BUTTON_NONE }, | ||
225 | { ACTION_LISTTREE_PGDOWN, BUTTON_RC_BITRATE|BUTTON_REPEAT, BUTTON_RC_BITRATE }, | ||
226 | { ACTION_TREE_WPS, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, | ||
227 | { ACTION_TREE_STOP, BUTTON_RC_STOP, BUTTON_NONE }, | ||
228 | |||
229 | LAST_ITEM_IN_LIST | ||
230 | }; /* button_context_listtree_h100lcdremote */ | ||
231 | /* Not needed? _std_ actions seem to be fine */ | ||
232 | struct button_mapping button_context_settings_h100lcdremote[] = { | ||
233 | LAST_ITEM_IN_LIST | ||
234 | };/* button_context_settings_h100lcdremote */ | ||
235 | |||
236 | |||
237 | /********* H300 LCD remote ******/ | ||
238 | struct button_mapping button_context_standard_h300lcdremote[] = { | ||
239 | { ACTION_STD_PREV, BUTTON_RC_VOL_UP, BUTTON_NONE }, | ||
240 | { ACTION_STD_PREVREPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_RC_VOL_UP }, | ||
241 | { ACTION_STD_NEXT, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, | ||
242 | { ACTION_STD_NEXTREPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_RC_VOL_DOWN }, | ||
243 | { ACTION_STD_OK, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, | ||
244 | { ACTION_STD_CANCEL, BUTTON_RC_REW, BUTTON_NONE }, | ||
245 | { ACTION_STD_CANCEL, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW }, | ||
246 | { ACTION_STD_CONTEXT, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU }, | ||
247 | { ACTION_STD_CANCEL, BUTTON_RC_STOP, BUTTON_NONE }, | ||
248 | { ACTION_STD_QUICKSCREEN, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE }, | ||
249 | { ACTION_STD_MENU, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE }, | ||
250 | { ACTION_STD_OK, BUTTON_RC_MENU|BUTTON_REL, BUTTON_RC_MENU }, | ||
251 | { ACTION_STD_OK, BUTTON_RC_FF, BUTTON_NONE }, | ||
252 | { ACTION_STD_OK, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE}, | ||
253 | |||
254 | LAST_ITEM_IN_LIST | ||
255 | |||
256 | }; /* button_context_standard */ | ||
257 | |||
258 | /* the mapping of the 2 LCD remotes in the WPS screen should be the same */ | ||
259 | struct button_mapping *button_context_wps_h300lcdremote = | ||
260 | button_context_wps_h100lcdremote; | ||
261 | |||
262 | /* FIXME: the same as h100 ?? */ | ||
263 | struct button_mapping *button_context_listtree_h300lcdremote = | ||
264 | button_context_listtree_h100lcdremote; | ||
265 | /* FIXME: the same as h100 ?? */ | ||
266 | |||
267 | struct button_mapping *button_context_settings_h300lcdremote = | ||
268 | button_context_settings_h100lcdremote; | ||
269 | /* FIXME: non lcd remotes need mappings.. ?? */ | ||
270 | |||
271 | |||
272 | |||
273 | |||
274 | |||
275 | |||
276 | /* the actual used tables */ | ||
277 | static struct button_mapping | ||
278 | *remote_button_context_std = button_context_standard_h100lcdremote, | ||
279 | *remote_button_context_wps = button_context_wps_h100lcdremote, | ||
280 | *remote_button_context_listtree = button_context_listtree_h100lcdremote, | ||
281 | *remote_button_context_settings = button_context_settings_h100lcdremote; | ||
282 | static int _remote_type = 0; | ||
283 | |||
284 | static void remap_remote(void) | ||
285 | { | ||
286 | _remote_type = remote_type(); | ||
287 | switch(_remote_type) | ||
288 | { | ||
289 | case REMOTETYPE_UNPLUGGED: | ||
290 | remote_button_context_std = NULL; | ||
291 | remote_button_context_wps = NULL; | ||
292 | remote_button_context_listtree = NULL; | ||
293 | remote_button_context_settings = NULL; | ||
294 | break; | ||
295 | case REMOTETYPE_H100_LCD: | ||
296 | remote_button_context_std = button_context_standard_h100lcdremote; | ||
297 | remote_button_context_wps = button_context_wps_h100lcdremote; | ||
298 | remote_button_context_listtree = button_context_listtree_h100lcdremote; | ||
299 | remote_button_context_settings = button_context_settings_h100lcdremote; | ||
300 | break; | ||
301 | case REMOTETYPE_H300_LCD: | ||
302 | remote_button_context_std = button_context_standard_h300lcdremote; | ||
303 | remote_button_context_wps = button_context_wps_h300lcdremote; | ||
304 | remote_button_context_listtree = button_context_listtree_h300lcdremote; | ||
305 | remote_button_context_settings = button_context_settings_h300lcdremote; | ||
306 | break; | ||
307 | case REMOTETYPE_H300_NONLCD: /* FIXME: add its tables */ | ||
308 | remote_button_context_std = button_context_standard_h300lcdremote; | ||
309 | remote_button_context_wps = button_context_wps_h300lcdremote; | ||
310 | remote_button_context_listtree = button_context_listtree_h300lcdremote; | ||
311 | remote_button_context_settings = button_context_settings_h300lcdremote; | ||
312 | break; | ||
313 | } | ||
314 | } | ||
315 | |||
316 | |||
317 | |||
318 | |||
319 | |||
320 | |||
321 | |||
322 | |||
323 | struct button_mapping* get_context_mapping_remote(int context) | ||
324 | { | ||
325 | if(remote_type() != _remote_type) | ||
326 | remap_remote(); | ||
327 | context ^= CONTEXT_REMOTE; | ||
328 | |||
329 | switch (context) | ||
330 | { | ||
331 | case CONTEXT_STD: | ||
332 | case CONTEXT_MAINMENU: | ||
333 | case CONTEXT_SETTINGS: | ||
334 | return remote_button_context_std; | ||
335 | case CONTEXT_WPS: | ||
336 | return remote_button_context_wps; | ||
337 | |||
338 | case CONTEXT_TREE: | ||
339 | case CONTEXT_LIST: | ||
340 | return remote_button_context_listtree; | ||
341 | |||
342 | |||
343 | case CONTEXT_YESNOSCREEN: | ||
344 | case CONTEXT_BOOKMARKSCREEN: | ||
345 | ; /* fall out of the switch */ | ||
346 | } | ||
347 | return remote_button_context_std; | ||
348 | } | ||
349 | |||
350 | struct button_mapping* get_context_mapping(int context) | ||
351 | { | ||
352 | if (context&CONTEXT_REMOTE) | ||
353 | return get_context_mapping_remote(context); | ||
354 | |||
355 | switch (context) | ||
356 | { | ||
357 | case CONTEXT_STD: | ||
358 | case CONTEXT_MAINMENU: | ||
359 | return button_context_standard; | ||
360 | case CONTEXT_WPS: | ||
361 | return button_context_wps; | ||
362 | |||
363 | case CONTEXT_LIST: | ||
364 | return button_context_listtree; | ||
365 | case CONTEXT_TREE: | ||
366 | if (global_settings.hold_lr_for_scroll_in_list) | ||
367 | return button_context_listtree_scroll_without_combo; | ||
368 | else return button_context_listtree_scroll_with_combo; | ||
369 | case CONTEXT_CUSTOM|1: | ||
370 | return button_context_tree; | ||
371 | case CONTEXT_SETTINGSGRAPHICAL: | ||
372 | return button_context_settingsgraphical; | ||
373 | |||
374 | case CONTEXT_SETTINGS: | ||
375 | return button_context_settings; | ||
376 | |||
377 | case CONTEXT_YESNOSCREEN: | ||
378 | return button_context_yesno; | ||
379 | |||
380 | case CONTEXT_BOOKMARKSCREEN: | ||
381 | return button_context_bmark; | ||
382 | case CONTEXT_QUICKSCREEN: | ||
383 | return button_context_quickscreen; | ||
384 | } | ||
385 | return button_context_standard; | ||
386 | } | ||
diff --git a/apps/keymaps/keymap-ipod.c b/apps/keymaps/keymap-ipod.c new file mode 100644 index 0000000000..91254a39a8 --- /dev/null +++ b/apps/keymaps/keymap-ipod.c | |||
@@ -0,0 +1,151 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2006 Jonathan Gordon | ||
10 | * | ||
11 | * All files in this archive are subject to the GNU General Public License. | ||
12 | * See the file COPYING in the source tree root for full license agreement. | ||
13 | * | ||
14 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
15 | * KIND, either express or implied. | ||
16 | * | ||
17 | ****************************************************************************/ | ||
18 | |||
19 | /* Button Code Definitions for ipod target */ | ||
20 | |||
21 | #include "config.h" | ||
22 | #include "action.h" | ||
23 | #include "button.h" | ||
24 | |||
25 | |||
26 | /* | ||
27 | * The format of the list is as follows | ||
28 | * { Action Code, Button code, Prereq button code } | ||
29 | * if there's no need to check the previous button's value, use BUTTON_NONE | ||
30 | * Insert LAST_ITEM_IN_LIST at the end of each mapping | ||
31 | */ | ||
32 | |||
33 | /* CONTEXT_CUSTOM's used in this file... | ||
34 | |||
35 | CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions) | ||
36 | |||
37 | |||
38 | */ | ||
39 | |||
40 | struct button_mapping button_context_standard[] = { | ||
41 | { ACTION_STD_PREV, BUTTON_SCROLL_BACK, BUTTON_NONE }, | ||
42 | { ACTION_STD_PREVREPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_SCROLL_BACK }, | ||
43 | { ACTION_STD_NEXT, BUTTON_SCROLL_FWD, BUTTON_NONE }, | ||
44 | { ACTION_STD_NEXTREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_SCROLL_FWD }, | ||
45 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, | ||
46 | { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, | ||
47 | |||
48 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | ||
49 | { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | ||
50 | { ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | ||
51 | { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | ||
52 | { ACTION_STD_CANCEL, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
53 | |||
54 | LAST_ITEM_IN_LIST | ||
55 | }; /* button_context_standard */ | ||
56 | struct button_mapping button_context_tree[] = { | ||
57 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
58 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
59 | |||
60 | LAST_ITEM_IN_LIST | ||
61 | }; /* button_context_tree */ | ||
62 | |||
63 | struct button_mapping button_context_tree_scroll_lr[] = { | ||
64 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
65 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
66 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
67 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
68 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
69 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
70 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
71 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
72 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), | ||
73 | }; | ||
74 | |||
75 | struct button_mapping button_context_wps[] = { | ||
76 | { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
77 | { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
78 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
79 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
80 | { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
81 | { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
82 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
83 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
84 | { ACTION_WPS_VOLDOWN, BUTTON_SCROLL_BACK, BUTTON_NONE }, | ||
85 | { ACTION_WPS_VOLDOWN, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_SCROLL_BACK }, | ||
86 | { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD, BUTTON_NONE }, | ||
87 | { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_SCROLL_FWD }, | ||
88 | { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | ||
89 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | ||
90 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | ||
91 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | ||
92 | |||
93 | LAST_ITEM_IN_LIST | ||
94 | }; /* button_context_wps */ | ||
95 | |||
96 | struct button_mapping button_context_settings[] = { | ||
97 | { ACTION_SETTINGS_INC, BUTTON_SCROLL_FWD, BUTTON_NONE }, | ||
98 | { ACTION_SETTINGS_INCREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_SCROLL_FWD }, | ||
99 | { ACTION_SETTINGS_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE }, | ||
100 | { ACTION_SETTINGS_DECREPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_SCROLL_BACK }, | ||
101 | { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, | ||
102 | { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
103 | { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, | ||
104 | { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
105 | { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, /* rel so bmark screen works */ | ||
106 | |||
107 | LAST_ITEM_IN_LIST | ||
108 | }; /* button_context_settings */ | ||
109 | |||
110 | struct button_mapping button_context_yesno[] = { | ||
111 | { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE }, | ||
112 | LAST_ITEM_IN_LIST | ||
113 | }; /* button_context_settings_yesno */ | ||
114 | |||
115 | struct button_mapping button_context_bmark[] = { | ||
116 | { ACTION_BMARK_DELETE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | ||
117 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS), | ||
118 | }; /* button_context_settings_bmark */ | ||
119 | |||
120 | /* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ | ||
121 | struct button_mapping* get_context_mapping(int context) | ||
122 | { | ||
123 | switch (context) | ||
124 | { | ||
125 | case CONTEXT_STD: | ||
126 | return button_context_standard; | ||
127 | case CONTEXT_WPS: | ||
128 | return button_context_wps; | ||
129 | |||
130 | case CONTEXT_TREE: | ||
131 | if (global_settings.hold_lr_for_scroll_in_list) | ||
132 | return button_context_tree_scroll_lr; | ||
133 | /* else fall through to CUSTOM|1 */ | ||
134 | case CONTEXT_CUSTOM|1: | ||
135 | return button_context_tree; | ||
136 | |||
137 | case CONTEXT_LIST: | ||
138 | case CONTEXT_MAINMENU: | ||
139 | break; | ||
140 | case CONTEXT_SETTINGS: | ||
141 | case CONTEXT_SETTINGSGRAPHICAL: | ||
142 | return button_context_settings; | ||
143 | case CONTEXT_YESNOSCREEN: | ||
144 | return button_context_yesno; | ||
145 | case CONTEXT_BOOKMARKSCREEN: | ||
146 | return button_context_bmark; | ||
147 | default: | ||
148 | return button_context_standard; | ||
149 | } | ||
150 | return button_context_standard; | ||
151 | } | ||
diff --git a/apps/keymaps/keymap-newtarget.c b/apps/keymaps/keymap-newtarget.c new file mode 100644 index 0000000000..3cd828c0b4 --- /dev/null +++ b/apps/keymaps/keymap-newtarget.c | |||
@@ -0,0 +1,77 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 200 | ||
10 | * | ||
11 | * All files in this archive are subject to the GNU General Public License. | ||
12 | * See the file COPYING in the source tree root for full license agreement. | ||
13 | * | ||
14 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
15 | * KIND, either express or implied. | ||
16 | * | ||
17 | ****************************************************************************/ | ||
18 | |||
19 | /* Button Code Definitions for <new> target */ | ||
20 | |||
21 | #include "config.h" | ||
22 | #include "action.h" | ||
23 | #include "button.h" | ||
24 | |||
25 | #define LAST_ITEM_IN_LIST { ACTION_NONE,BUTTON_NONE,BUTTON_NONE } | ||
26 | /* {Action Code, Button code, Prereq button code } */ | ||
27 | |||
28 | /** | ||
29 | This file is where all button mappings are defined. | ||
30 | In ../action.h there is an enum with all the used ACTION_ codes. | ||
31 | Ideally All the ACTION_STD_* and ACTION_WPS_* codes should be defined somehwere in this file. | ||
32 | |||
33 | Remeber to make a copy of this file and rename it to keymap-<targetname>.c and add it to apps/SOURCES | ||
34 | |||
35 | Good luck and thanks for porting a new target! :D | ||
36 | |||
37 | **/ | ||
38 | |||
39 | /* | ||
40 | * The format of the list is as follows | ||
41 | * { Action Code, Button code, Prereq button code } | ||
42 | * if there's no need to check the previous button's value, use BUTTON_NONE | ||
43 | * Insert LAST_ITEM_IN_LIST at the end of each mapping | ||
44 | */ | ||
45 | struct button_mapping button_context_standard[] = { | ||
46 | |||
47 | LAST_ITEM_IN_LIST | ||
48 | }; /* button_context_standard */ | ||
49 | |||
50 | struct button_mapping button_context_wps[] = { | ||
51 | |||
52 | LAST_ITEM_IN_LIST | ||
53 | }; /* button_context_wps */ | ||
54 | |||
55 | |||
56 | |||
57 | /* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ | ||
58 | struct button_mapping* get_context_mapping(int context) | ||
59 | { | ||
60 | switch (context) | ||
61 | { | ||
62 | case CONTEXT_STD: | ||
63 | return button_context_standard; | ||
64 | case CONTEXT_WPS: | ||
65 | return button_context_wps; | ||
66 | |||
67 | case CONTEXT_TREE: | ||
68 | case CONTEXT_LIST: | ||
69 | case CONTEXT_MAINMENU: | ||
70 | |||
71 | case CONTEXT_SETTINGS: | ||
72 | case CONTEXT_SETTINGS|CONTEXT_REMOTE: | ||
73 | default: | ||
74 | return button_context_standard; | ||
75 | } | ||
76 | return button_context_standard; | ||
77 | } | ||
diff --git a/apps/keymaps/keymap-ondio.c b/apps/keymaps/keymap-ondio.c new file mode 100644 index 0000000000..2ad86c868d --- /dev/null +++ b/apps/keymaps/keymap-ondio.c | |||
@@ -0,0 +1,135 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2006 Jonathan Gordon | ||
10 | * | ||
11 | * All files in this archive are subject to the GNU General Public License. | ||
12 | * See the file COPYING in the source tree root for full license agreement. | ||
13 | * | ||
14 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
15 | * KIND, either express or implied. | ||
16 | * | ||
17 | ****************************************************************************/ | ||
18 | |||
19 | /* * | ||
20 | * Button Code Definitions for archos ondio fm/sp targets | ||
21 | * | ||
22 | * \TODO test! | ||
23 | */ | ||
24 | |||
25 | #include "config.h" | ||
26 | #include "action.h" | ||
27 | #include "button.h" | ||
28 | #include "settings.h" | ||
29 | |||
30 | /* CONTEXT_CUSTOM's used in this file... | ||
31 | |||
32 | CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions) | ||
33 | |||
34 | |||
35 | */ | ||
36 | |||
37 | struct button_mapping button_context_standard[] = { | ||
38 | { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, | ||
39 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
40 | { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, | ||
41 | { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
42 | |||
43 | { ACTION_STD_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | ||
44 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, | ||
45 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
46 | { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | ||
47 | { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE }, | ||
48 | |||
49 | LAST_ITEM_IN_LIST | ||
50 | }; | ||
51 | |||
52 | struct button_mapping button_context_wps[] = { | ||
53 | { ACTION_WPS_PLAY, BUTTON_OFF|BUTTON_REL, BUTTON_OFF }, | ||
54 | { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT, BUTTON_NONE }, | ||
55 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT, BUTTON_NONE }, | ||
56 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
57 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
58 | { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
59 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
60 | { ACTION_WPS_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_OFF }, | ||
61 | { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE }, | ||
62 | { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
63 | { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, | ||
64 | { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
65 | { ACTION_WPS_BROWSE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | ||
66 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | ||
67 | { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_OFF, BUTTON_MENU }, /* this may trigger ACTION_WPS_BROWSE so may need changing */ | ||
68 | |||
69 | LAST_ITEM_IN_LIST | ||
70 | }; | ||
71 | |||
72 | struct button_mapping button_context_settings[] = { | ||
73 | { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, | ||
74 | { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
75 | { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, | ||
76 | { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
77 | { ACTION_STD_NEXT, BUTTON_MENU, BUTTON_NONE }, | ||
78 | { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, | ||
79 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, | ||
80 | |||
81 | LAST_ITEM_IN_LIST | ||
82 | }; | ||
83 | struct button_mapping button_context_tree[] = { | ||
84 | { ACTION_TREE_WPS, BUTTON_OFF|BUTTON_REL, BUTTON_OFF }, | ||
85 | { ACTION_TREE_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_OFF }, | ||
86 | |||
87 | LAST_ITEM_IN_LIST | ||
88 | }; /* button_context_listtree */ | ||
89 | struct button_mapping button_context_tree_scroll_lr[] = { | ||
90 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
91 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
92 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
93 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
94 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
95 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
96 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
97 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
98 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), | ||
99 | }; | ||
100 | |||
101 | struct button_mapping button_context_yesno[] = { | ||
102 | { ACTION_YESNO_ACCEPT, BUTTON_RIGHT, BUTTON_NONE }, | ||
103 | |||
104 | LAST_ITEM_IN_LIST | ||
105 | }; | ||
106 | |||
107 | struct button_mapping* get_context_mapping( int context ) | ||
108 | { | ||
109 | switch( context ) | ||
110 | { | ||
111 | case CONTEXT_STD: | ||
112 | return button_context_standard; | ||
113 | |||
114 | case CONTEXT_WPS: | ||
115 | return button_context_wps; | ||
116 | |||
117 | case CONTEXT_SETTINGS: | ||
118 | return button_context_settings; | ||
119 | |||
120 | case CONTEXT_YESNOSCREEN: | ||
121 | return button_context_yesno; | ||
122 | |||
123 | case CONTEXT_TREE: | ||
124 | if (global_settings.hold_lr_for_scroll_in_list) | ||
125 | return button_context_tree_scroll_lr; | ||
126 | /* else fall through to CUSTOM|1 */ | ||
127 | case CONTEXT_CUSTOM|1: | ||
128 | return button_context_tree; | ||
129 | |||
130 | case CONTEXT_LIST: | ||
131 | case CONTEXT_MAINMENU: | ||
132 | default: | ||
133 | return button_context_standard; | ||
134 | } | ||
135 | } | ||
diff --git a/apps/keymaps/keymap-player.c b/apps/keymaps/keymap-player.c new file mode 100644 index 0000000000..f1a98d7b35 --- /dev/null +++ b/apps/keymaps/keymap-player.c | |||
@@ -0,0 +1,136 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2006 Jonathan Gordon | ||
10 | * | ||
11 | * All files in this archive are subject to the GNU General Public License. | ||
12 | * See the file COPYING in the source tree root for full license agreement. | ||
13 | * | ||
14 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
15 | * KIND, either express or implied. | ||
16 | * | ||
17 | ****************************************************************************/ | ||
18 | |||
19 | /* * | ||
20 | * Button Code Definitions for archos player targets | ||
21 | * | ||
22 | * \TODO test! | ||
23 | */ | ||
24 | |||
25 | #include "config.h" | ||
26 | #include "action.h" | ||
27 | #include "button.h" | ||
28 | #include "settings.h" | ||
29 | |||
30 | /* CONTEXT_CUSTOM's used in this file... | ||
31 | |||
32 | CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions) | ||
33 | |||
34 | |||
35 | */ | ||
36 | |||
37 | struct button_mapping button_context_standard[] = { | ||
38 | { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, | ||
39 | { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
40 | { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, | ||
41 | { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
42 | |||
43 | { ACTION_STD_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | ||
44 | { ACTION_STD_CANCEL, BUTTON_STOP, BUTTON_NONE }, | ||
45 | { ACTION_STD_OK, BUTTON_PLAY, BUTTON_NONE }, | ||
46 | { ACTION_STD_OK, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | ||
47 | { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | ||
48 | |||
49 | LAST_ITEM_IN_LIST | ||
50 | }; | ||
51 | |||
52 | struct button_mapping button_context_wps[] = { | ||
53 | { ACTION_WPS_PLAY, BUTTON_PLAY, BUTTON_NONE }, | ||
54 | { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT, BUTTON_NONE }, | ||
55 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT, BUTTON_NONE }, | ||
56 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
57 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
58 | { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
59 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
60 | { ACTION_WPS_STOP, BUTTON_STOP, BUTTON_NONE }, | ||
61 | |||
62 | { ACTION_WPS_VOLDOWN, BUTTON_MENU|BUTTON_STOP, BUTTON_MENU }, | ||
63 | { ACTION_WPS_VOLDOWN, BUTTON_MENU|BUTTON_STOP|BUTTON_REPEAT, BUTTON_MENU|BUTTON_STOP }, | ||
64 | { ACTION_WPS_VOLUP, BUTTON_MENU|BUTTON_PLAY, BUTTON_MENU }, | ||
65 | { ACTION_WPS_VOLUP, BUTTON_MENU|BUTTON_PLAY|BUTTON_REPEAT, BUTTON_MENU|BUTTON_PLAY }, | ||
66 | |||
67 | { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | ||
68 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | ||
69 | { ACTION_WPS_CONTEXT, BUTTON_ON|BUTTON_REPEAT, BUTTON_ON }, | ||
70 | { ACTION_WPS_ID3SCREEN, BUTTON_MENU|BUTTON_ON, BUTTON_MENU }, | ||
71 | |||
72 | |||
73 | LAST_ITEM_IN_LIST | ||
74 | }; | ||
75 | |||
76 | struct button_mapping button_context_settings[] = { | ||
77 | { ACTION_SETTINGS_INC, BUTTON_LEFT, BUTTON_NONE }, | ||
78 | { ACTION_SETTINGS_INCREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
79 | { ACTION_SETTINGS_DEC, BUTTON_RIGHT, BUTTON_NONE }, | ||
80 | { ACTION_SETTINGS_DECREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
81 | |||
82 | LAST_ITEM_IN_LIST | ||
83 | }; | ||
84 | |||
85 | struct button_mapping button_context_tree[] = { | ||
86 | { ACTION_TREE_WPS, BUTTON_PLAY, BUTTON_NONE }, | ||
87 | { ACTION_TREE_STOP, BUTTON_STOP, BUTTON_NONE }, | ||
88 | |||
89 | LAST_ITEM_IN_LIST | ||
90 | }; /* button_context_listtree */ | ||
91 | struct button_mapping button_context_tree_scroll_lr[] = { | ||
92 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
93 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
94 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
95 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
96 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
97 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
98 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
99 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
100 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), | ||
101 | }; | ||
102 | |||
103 | struct button_mapping button_context_yesno[] = { | ||
104 | { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE }, | ||
105 | LAST_ITEM_IN_LIST | ||
106 | }; /* button_context_settings_yesno */ | ||
107 | |||
108 | struct button_mapping* get_context_mapping( int context ) | ||
109 | { | ||
110 | switch( context ) | ||
111 | { | ||
112 | case CONTEXT_STD: | ||
113 | return button_context_standard; | ||
114 | |||
115 | case CONTEXT_WPS: | ||
116 | return button_context_wps; | ||
117 | |||
118 | case CONTEXT_SETTINGS: | ||
119 | return button_context_settings; | ||
120 | |||
121 | case CONTEXT_YESNOSCREEN: | ||
122 | return button_context_yesno; | ||
123 | |||
124 | case CONTEXT_TREE: | ||
125 | if (global_settings.hold_lr_for_scroll_in_list) | ||
126 | return button_context_tree_scroll_lr; | ||
127 | /* else fall through to CUSTOM|1 */ | ||
128 | case CONTEXT_CUSTOM|1: | ||
129 | return button_context_tree; | ||
130 | |||
131 | case CONTEXT_LIST: | ||
132 | case CONTEXT_MAINMENU: | ||
133 | default: | ||
134 | return button_context_standard; | ||
135 | } | ||
136 | } | ||
diff --git a/apps/keymaps/keymap-recorder.c b/apps/keymaps/keymap-recorder.c new file mode 100644 index 0000000000..ab75bc51e7 --- /dev/null +++ b/apps/keymaps/keymap-recorder.c | |||
@@ -0,0 +1,141 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2006 Antoine Cellerier <dionoea @t videolan d.t org> | ||
10 | * | ||
11 | * All files in this archive are subject to the GNU General Public License. | ||
12 | * See the file COPYING in the source tree root for full license agreement. | ||
13 | * | ||
14 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
15 | * KIND, either express or implied. | ||
16 | * | ||
17 | ****************************************************************************/ | ||
18 | |||
19 | /* * | ||
20 | * Button Code Definitions for archos recorder target | ||
21 | * | ||
22 | * \TODO handle F3 | ||
23 | */ | ||
24 | |||
25 | #include "config.h" | ||
26 | #include "action.h" | ||
27 | #include "button.h" | ||
28 | #include "settings.h" | ||
29 | |||
30 | /* CONTEXT_CUSTOM's used in this file... | ||
31 | |||
32 | CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions) | ||
33 | |||
34 | |||
35 | */ | ||
36 | |||
37 | struct button_mapping button_context_standard[] = { | ||
38 | { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, | ||
39 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
40 | { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, | ||
41 | { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
42 | |||
43 | { ACTION_STD_OK, BUTTON_ON, BUTTON_NONE }, | ||
44 | { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, | ||
45 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
46 | |||
47 | { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
48 | { ACTION_STD_MENU, BUTTON_F1, BUTTON_NONE }, | ||
49 | { ACTION_STD_QUICKSCREEN, BUTTON_F2, BUTTON_NONE }, | ||
50 | { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
51 | { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE }, | ||
52 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, | ||
53 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
54 | |||
55 | LAST_ITEM_IN_LIST | ||
56 | }; | ||
57 | |||
58 | struct button_mapping button_context_wps[] = { | ||
59 | { ACTION_WPS_PLAY, BUTTON_PLAY, BUTTON_NONE }, | ||
60 | { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT, BUTTON_NONE }, | ||
61 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT, BUTTON_NONE }, | ||
62 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
63 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
64 | { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
65 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
66 | { ACTION_WPS_STOP, BUTTON_OFF, BUTTON_NONE }, | ||
67 | { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE }, | ||
68 | { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
69 | { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, | ||
70 | { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
71 | { ACTION_WPS_MENU, BUTTON_F1, BUTTON_NONE }, | ||
72 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
73 | { ACTION_WPS_QUICKSCREEN, BUTTON_F2, BUTTON_NONE }, | ||
74 | { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | ||
75 | { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_F1 }, | ||
76 | { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON }, | ||
77 | { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON }, | ||
78 | |||
79 | LAST_ITEM_IN_LIST | ||
80 | }; | ||
81 | |||
82 | struct button_mapping button_context_settings[] = { | ||
83 | { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, | ||
84 | { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
85 | { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, | ||
86 | { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
87 | |||
88 | LAST_ITEM_IN_LIST | ||
89 | }; | ||
90 | |||
91 | struct button_mapping button_context_tree[] = { | ||
92 | { ACTION_TREE_WPS, BUTTON_PLAY, BUTTON_NONE }, | ||
93 | { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, | ||
94 | |||
95 | LAST_ITEM_IN_LIST | ||
96 | }; /* button_context_listtree */ | ||
97 | struct button_mapping button_context_tree_scroll_lr[] = { | ||
98 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
99 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
100 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
101 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
102 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
103 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
104 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
105 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
106 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), | ||
107 | }; | ||
108 | |||
109 | struct button_mapping button_context_yesno[] = { | ||
110 | { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE }, | ||
111 | |||
112 | LAST_ITEM_IN_LIST | ||
113 | }; | ||
114 | |||
115 | struct button_mapping* get_context_mapping( int context ) | ||
116 | { | ||
117 | switch( context ) | ||
118 | { | ||
119 | case CONTEXT_WPS: | ||
120 | return button_context_wps; | ||
121 | |||
122 | case CONTEXT_SETTINGS: | ||
123 | return button_context_settings; | ||
124 | |||
125 | case CONTEXT_YESNOSCREEN: | ||
126 | return button_context_yesno; | ||
127 | |||
128 | case CONTEXT_TREE: | ||
129 | if (global_settings.hold_lr_for_scroll_in_list) | ||
130 | return button_context_tree_scroll_lr; | ||
131 | /* else fall through to CUSTOM|1 */ | ||
132 | case CONTEXT_CUSTOM|1: | ||
133 | return button_context_tree; | ||
134 | |||
135 | case CONTEXT_STD: | ||
136 | case CONTEXT_LIST: | ||
137 | case CONTEXT_MAINMENU: | ||
138 | default: | ||
139 | return button_context_standard; | ||
140 | } | ||
141 | } | ||
diff --git a/apps/keymaps/keymap-x5.c b/apps/keymaps/keymap-x5.c new file mode 100644 index 0000000000..33c1946e6c --- /dev/null +++ b/apps/keymaps/keymap-x5.c | |||
@@ -0,0 +1,141 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2006 Jonathan Gordon | ||
10 | * | ||
11 | * All files in this archive are subject to the GNU General Public License. | ||
12 | * See the file COPYING in the source tree root for full license agreement. | ||
13 | * | ||
14 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
15 | * KIND, either express or implied. | ||
16 | * | ||
17 | ****************************************************************************/ | ||
18 | |||
19 | /* * | ||
20 | * Button Code Definitions for iaudio x5 targets | ||
21 | * | ||
22 | * \TODO test! | ||
23 | */ | ||
24 | |||
25 | #include "config.h" | ||
26 | #include "action.h" | ||
27 | #include "button.h" | ||
28 | #include "settings.h" | ||
29 | |||
30 | /* CONTEXT_CUSTOM's used in this file... | ||
31 | |||
32 | CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions) | ||
33 | |||
34 | |||
35 | */ | ||
36 | |||
37 | struct button_mapping button_context_standard[] = { | ||
38 | { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, | ||
39 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
40 | { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, | ||
41 | { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
42 | |||
43 | { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | ||
44 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, | ||
45 | { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, | ||
46 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | ||
47 | { ACTION_STD_OK, BUTTON_PLAY, BUTTON_NONE }, | ||
48 | { ACTION_STD_MENU, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | ||
49 | { ACTION_STD_QUICKSCREEN,BUTTON_REC|BUTTON_REPEAT, BUTTON_REC }, | ||
50 | { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, | ||
51 | |||
52 | LAST_ITEM_IN_LIST | ||
53 | }; | ||
54 | |||
55 | struct button_mapping button_context_wps[] = { | ||
56 | { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
57 | { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
58 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
59 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
60 | { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
61 | { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
62 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
63 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
64 | |||
65 | { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE }, | ||
66 | { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
67 | { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, | ||
68 | { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
69 | |||
70 | { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | ||
71 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | ||
72 | { ACTION_WPS_MENU, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | ||
73 | { ACTION_WPS_QUICKSCREEN, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC }, | ||
74 | |||
75 | |||
76 | LAST_ITEM_IN_LIST | ||
77 | }; | ||
78 | |||
79 | struct button_mapping button_context_settings[] = { | ||
80 | { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, | ||
81 | { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
82 | { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, | ||
83 | { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
84 | { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, | ||
85 | { ACTION_STD_CANCEL, BUTTON_REC, BUTTON_NONE }, | ||
86 | |||
87 | LAST_ITEM_IN_LIST | ||
88 | }; | ||
89 | struct button_mapping button_context_tree[] = { | ||
90 | { ACTION_NONE, BUTTON_PLAY, BUTTON_NONE }, | ||
91 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
92 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
93 | |||
94 | LAST_ITEM_IN_LIST | ||
95 | }; /* button_context_listtree */ | ||
96 | struct button_mapping button_context_tree_scroll_lr[] = { | ||
97 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
98 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
99 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
100 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
101 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
102 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
103 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | ||
104 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
105 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), | ||
106 | }; | ||
107 | |||
108 | struct button_mapping button_context_yesno[] = { | ||
109 | { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE }, | ||
110 | LAST_ITEM_IN_LIST | ||
111 | }; /* button_context_settings_yesno */ | ||
112 | |||
113 | struct button_mapping* get_context_mapping( int context ) | ||
114 | { | ||
115 | switch( context ) | ||
116 | { | ||
117 | case CONTEXT_STD: | ||
118 | return button_context_standard; | ||
119 | |||
120 | case CONTEXT_WPS: | ||
121 | return button_context_wps; | ||
122 | |||
123 | case CONTEXT_SETTINGS: | ||
124 | return button_context_settings; | ||
125 | |||
126 | case CONTEXT_YESNOSCREEN: | ||
127 | return button_context_yesno; | ||
128 | |||
129 | case CONTEXT_TREE: | ||
130 | if (global_settings.hold_lr_for_scroll_in_list) | ||
131 | return button_context_tree_scroll_lr; | ||
132 | /* else fall through to CUSTOM|1 */ | ||
133 | case CONTEXT_CUSTOM|1: | ||
134 | return button_context_tree; | ||
135 | |||
136 | case CONTEXT_LIST: | ||
137 | case CONTEXT_MAINMENU: | ||
138 | default: | ||
139 | return button_context_standard; | ||
140 | } | ||
141 | } | ||
diff --git a/apps/logfdisp.c b/apps/logfdisp.c index 9d62383da4..734a6aec63 100644 --- a/apps/logfdisp.c +++ b/apps/logfdisp.c | |||
@@ -24,20 +24,12 @@ | |||
24 | #include <timefuncs.h> | 24 | #include <timefuncs.h> |
25 | #include <string.h> | 25 | #include <string.h> |
26 | #include <kernel.h> | 26 | #include <kernel.h> |
27 | #include <button.h> | 27 | #include <action.h> |
28 | 28 | ||
29 | #include <lcd.h> | 29 | #include <lcd.h> |
30 | #include "menu.h" | 30 | #include "menu.h" |
31 | #include "logf.h" | 31 | #include "logf.h" |
32 | 32 | ||
33 | #if (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) | ||
34 | #define LOGF_BUTTON_QUIT BUTTON_MENU | ||
35 | #elif CONFIG_KEYPAD == IAUDIO_X5_PAD | ||
36 | #define LOGF_BUTTON_QUIT BUTTON_POWER | ||
37 | #else | ||
38 | #define LOGF_BUTTON_QUIT BUTTON_OFF | ||
39 | #endif | ||
40 | |||
41 | #ifdef HAVE_LCD_BITMAP | 33 | #ifdef HAVE_LCD_BITMAP |
42 | bool logfdisplay(void) | 34 | bool logfdisplay(void) |
43 | 35 | ||
@@ -46,7 +38,6 @@ bool logfdisplay(void) | |||
46 | int lines; | 38 | int lines; |
47 | int columns; | 39 | int columns; |
48 | int i; | 40 | int i; |
49 | int button; | ||
50 | 41 | ||
51 | bool lcd = false; /* fixed atm */ | 42 | bool lcd = false; /* fixed atm */ |
52 | int index; | 43 | int index; |
@@ -93,8 +84,7 @@ bool logfdisplay(void) | |||
93 | lcd_puts(0, i, buffer); | 84 | lcd_puts(0, i, buffer); |
94 | } | 85 | } |
95 | lcd_update(); | 86 | lcd_update(); |
96 | button = button_get_w_tmo(HZ/2); | 87 | } while(!action_userabort(HZ)); |
97 | } while(button != LOGF_BUTTON_QUIT); | ||
98 | 88 | ||
99 | return false; | 89 | return false; |
100 | } | 90 | } |
diff --git a/apps/main.c b/apps/main.c index 95e6663ba0..c50af865fc 100644 --- a/apps/main.c +++ b/apps/main.c | |||
@@ -365,7 +365,7 @@ void init(void) | |||
365 | lcd_puts(0, 1, str); | 365 | lcd_puts(0, 1, str); |
366 | lcd_puts(0, 3, "Press ON to debug"); | 366 | lcd_puts(0, 3, "Press ON to debug"); |
367 | lcd_update(); | 367 | lcd_update(); |
368 | while(!(button_get(true) & BUTTON_REL)); | 368 | while(!(button_get(true) & BUTTON_REL)); /*DO NOT CHANGE TO ACTION SYSTEM */ |
369 | dbg_ports(); | 369 | dbg_ports(); |
370 | #endif | 370 | #endif |
371 | panicf("ata: %d", rc); | 371 | panicf("ata: %d", rc); |
diff --git a/apps/main_menu.c b/apps/main_menu.c index bce6e20976..04527f9329 100644 --- a/apps/main_menu.c +++ b/apps/main_menu.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "tree.h" | 24 | #include "tree.h" |
25 | #include "lcd.h" | 25 | #include "lcd.h" |
26 | #include "font.h" | 26 | #include "font.h" |
27 | #include "button.h" | 27 | #include "action.h" |
28 | #include "kernel.h" | 28 | #include "kernel.h" |
29 | #include "main_menu.h" | 29 | #include "main_menu.h" |
30 | #include "debug_menu.h" | 30 | #include "debug_menu.h" |
@@ -237,48 +237,22 @@ bool show_info(void) | |||
237 | #endif | 237 | #endif |
238 | 238 | ||
239 | /* Wait for a key to be pushed */ | 239 | /* Wait for a key to be pushed */ |
240 | key = button_get_w_tmo(HZ*5); | 240 | key = get_action(CONTEXT_MAINMENU,HZ*5); |
241 | switch(key) { | 241 | switch(key) { |
242 | 242 | ||
243 | case SETTINGS_OK: | 243 | case ACTION_STD_CANCEL: |
244 | #ifdef SETTINGS_RC_OK | ||
245 | case SETTINGS_RC_OK: | ||
246 | #endif | ||
247 | #ifdef SETTINGS_OK2 | ||
248 | case SETTINGS_OK2: | ||
249 | #endif | ||
250 | #ifdef SETTINGS_RC_OK2 | ||
251 | case SETTINGS_RC_OK2: | ||
252 | #endif | ||
253 | #ifdef SETTINGS_RC_CANCEL | ||
254 | case SETTINGS_RC_CANCEL: | ||
255 | #endif | ||
256 | case SETTINGS_CANCEL: | ||
257 | done = true; | 244 | done = true; |
258 | break; | 245 | break; |
259 | 246 | ||
260 | #ifdef HAVE_LCD_CHARCELLS | 247 | #ifdef HAVE_LCD_CHARCELLS |
261 | case SETTINGS_INC: | 248 | case ACTION_STD_NEXT: |
262 | case SETTINGS_DEC: | 249 | case ACTION_STD_PREV: |
263 | #ifdef SETTINGS_RC_INC | ||
264 | case SETTINGS_RC_INC: | ||
265 | #endif | ||
266 | #ifdef SETTINGS_RC_DEC | ||
267 | case SETTINGS_RC_DEC: | ||
268 | #endif | ||
269 | page = (page == 0) ? 1 : 0; | 250 | page = (page == 0) ? 1 : 0; |
270 | break; | 251 | break; |
271 | #endif | 252 | #endif |
272 | 253 | ||
273 | #ifndef SIMULATOR | 254 | #ifndef SIMULATOR |
274 | #ifdef SETTINGS_RC_ACCEPT | 255 | case ACTION_STD_OK: |
275 | case SETTINGS_RC_ACCEPT: | ||
276 | #endif | ||
277 | #ifdef SETTINGS_ACCEPT | ||
278 | case SETTINGS_ACCEPT: | ||
279 | #else | ||
280 | case SETTINGS_INC: /* Ondio */ | ||
281 | #endif | ||
282 | gui_syncsplash(0, true, str(LANG_DIRCACHE_BUILDING)); | 256 | gui_syncsplash(0, true, str(LANG_DIRCACHE_BUILDING)); |
283 | fat_recalc_free(IF_MV(0)); | 257 | fat_recalc_free(IF_MV(0)); |
284 | #ifdef HAVE_MULTIVOLUME | 258 | #ifdef HAVE_MULTIVOLUME |
@@ -295,7 +269,7 @@ bool show_info(void) | |||
295 | break; | 269 | break; |
296 | } | 270 | } |
297 | } | 271 | } |
298 | 272 | action_signalscreenchange(); | |
299 | return false; | 273 | return false; |
300 | } | 274 | } |
301 | 275 | ||
diff --git a/apps/menu.c b/apps/menu.c index a1c70824ce..f861e0bddf 100644 --- a/apps/menu.c +++ b/apps/menu.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include "talk.h" | 40 | #include "talk.h" |
41 | #include "lang.h" | 41 | #include "lang.h" |
42 | #include "misc.h" | 42 | #include "misc.h" |
43 | #include "action.h" | ||
43 | 44 | ||
44 | #ifdef HAVE_LCD_BITMAP | 45 | #ifdef HAVE_LCD_BITMAP |
45 | #include "icons.h" | 46 | #include "icons.h" |
@@ -124,13 +125,12 @@ int menu_show(int m) | |||
124 | #endif | 125 | #endif |
125 | bool exit = false; | 126 | bool exit = false; |
126 | int key; | 127 | int key; |
127 | unsigned lastbutton = 0; | ||
128 | 128 | ||
129 | gui_synclist_draw(&(menus[m].synclist)); | 129 | gui_synclist_draw(&(menus[m].synclist)); |
130 | gui_syncstatusbar_draw(&statusbars, true); | 130 | gui_syncstatusbar_draw(&statusbars, true); |
131 | menu_talk_selected(m); | 131 | menu_talk_selected(m); |
132 | while (!exit) { | 132 | while (!exit) { |
133 | key = button_get_w_tmo(HZ/2); | 133 | key = get_action(CONTEXT_MAINMENU,HZ/2); |
134 | /* | 134 | /* |
135 | * "short-circuit" the default keypresses by running the | 135 | * "short-circuit" the default keypresses by running the |
136 | * callback function | 136 | * callback function |
@@ -144,40 +144,13 @@ int menu_show(int m) | |||
144 | if(gui_synclist_do_button(&(menus[m].synclist), key)) | 144 | if(gui_synclist_do_button(&(menus[m].synclist), key)) |
145 | menu_talk_selected(m); | 145 | menu_talk_selected(m); |
146 | switch( key ) { | 146 | switch( key ) { |
147 | case MENU_ENTER | BUTTON_REL: | 147 | case ACTION_STD_OK: |
148 | if (lastbutton != MENU_ENTER) | 148 | action_signalscreenchange(); |
149 | break; | ||
150 | #ifdef MENU_ENTER2 | ||
151 | case MENU_ENTER2: | ||
152 | #endif | ||
153 | #ifdef MENU_RC_ENTER | ||
154 | case MENU_RC_ENTER: | ||
155 | #endif | ||
156 | #ifdef MENU_RC_ENTER2 | ||
157 | case MENU_RC_ENTER2: | ||
158 | #endif | ||
159 | return gui_synclist_get_sel_pos(&(menus[m].synclist)); | 149 | return gui_synclist_get_sel_pos(&(menus[m].synclist)); |
160 | 150 | ||
161 | 151 | ||
162 | case MENU_EXIT | BUTTON_REL: | 152 | case ACTION_STD_CANCEL: |
163 | if (lastbutton != MENU_EXIT) | 153 | case ACTION_STD_MENU: |
164 | break; | ||
165 | #ifdef MENU_EXIT2 | ||
166 | case MENU_EXIT2: | ||
167 | #endif | ||
168 | #ifdef MENU_EXIT_MENU | ||
169 | case MENU_EXIT_MENU | BUTTON_REL: | ||
170 | /* This is important for the Ondio's */ | ||
171 | if ((key == (MENU_EXIT_MENU | BUTTON_REL)) && | ||
172 | (lastbutton != MENU_EXIT_MENU)) | ||
173 | break; | ||
174 | #endif | ||
175 | #ifdef MENU_RC_EXIT | ||
176 | case MENU_RC_EXIT: | ||
177 | #endif | ||
178 | #ifdef MENU_RC_EXIT_MENU | ||
179 | case MENU_RC_EXIT_MENU: | ||
180 | #endif | ||
181 | exit = true; | 154 | exit = true; |
182 | break; | 155 | break; |
183 | 156 | ||
@@ -187,9 +160,8 @@ int menu_show(int m) | |||
187 | break; | 160 | break; |
188 | } | 161 | } |
189 | gui_syncstatusbar_draw(&statusbars, false); | 162 | gui_syncstatusbar_draw(&statusbars, false); |
190 | if ( key ) | ||
191 | lastbutton = key; | ||
192 | } | 163 | } |
164 | action_signalscreenchange(); | ||
193 | return MENU_SELECTED_EXIT; | 165 | return MENU_SELECTED_EXIT; |
194 | } | 166 | } |
195 | 167 | ||
diff --git a/apps/onplay.c b/apps/onplay.c index a81b096e79..231e658ed9 100644 --- a/apps/onplay.c +++ b/apps/onplay.c | |||
@@ -815,11 +815,7 @@ static int onplay_callback(int key, int menu) | |||
815 | { | 815 | { |
816 | (void)menu; | 816 | (void)menu; |
817 | 817 | ||
818 | if (key == MENU_EXIT_MENU | 818 | if (key == ACTION_STD_MENU) |
819 | #ifdef MENU_RC_EXIT_MENU | ||
820 | || key == MENU_RC_EXIT_MENU | ||
821 | #endif | ||
822 | ) | ||
823 | exit_to_main = true; | 819 | exit_to_main = true; |
824 | 820 | ||
825 | return key; | 821 | return key; |
diff --git a/apps/playback.h b/apps/playback.h index 7144974f36..3e501333c1 100644 --- a/apps/playback.h +++ b/apps/playback.h | |||
@@ -67,9 +67,13 @@ void audio_set_track_unbuffer_event(void (*handler)(struct mp3entry *id3, | |||
67 | void audio_invalidate_tracks(void); | 67 | void audio_invalidate_tracks(void); |
68 | void voice_init(void); | 68 | void voice_init(void); |
69 | 69 | ||
70 | #if CONFIG_CODEC == SWCODEC /* This #ifdef is better here than gui/gwps.c */ | ||
70 | extern void audio_next_dir(void); | 71 | extern void audio_next_dir(void); |
71 | extern void audio_prev_dir(void); | 72 | extern void audio_prev_dir(void); |
72 | 73 | #else | |
74 | #define audio_next_dir() | ||
75 | #define audio_prev_dir() | ||
76 | #endif | ||
73 | void audio_preinit(void); | 77 | void audio_preinit(void); |
74 | 78 | ||
75 | #endif | 79 | #endif |
diff --git a/apps/playlist.c b/apps/playlist.c index a51e8f501c..aa84bb090f 100644 --- a/apps/playlist.c +++ b/apps/playlist.c | |||
@@ -70,6 +70,7 @@ | |||
70 | #include <string.h> | 70 | #include <string.h> |
71 | #include "playlist.h" | 71 | #include "playlist.h" |
72 | #include "file.h" | 72 | #include "file.h" |
73 | #include "action.h" | ||
73 | #include "dir.h" | 74 | #include "dir.h" |
74 | #include "sprintf.h" | 75 | #include "sprintf.h" |
75 | #include "debug.h" | 76 | #include "debug.h" |
@@ -1342,7 +1343,7 @@ static int get_next_dir(char *dir, bool is_forward, bool recursion) | |||
1342 | for (i=0; i<num_files; i++) | 1343 | for (i=0; i<num_files; i++) |
1343 | { | 1344 | { |
1344 | /* user abort */ | 1345 | /* user abort */ |
1345 | if (button_get(false) == SETTINGS_CANCEL) | 1346 | if (action_userabort(TIMEOUT_NOBLOCK)) |
1346 | { | 1347 | { |
1347 | result = -1; | 1348 | result = -1; |
1348 | exit = true; | 1349 | exit = true; |
@@ -1440,7 +1441,7 @@ static int check_subdir_for_music(char *dir, char *subdir) | |||
1440 | { | 1441 | { |
1441 | for (i=0; i<num_files; i++) | 1442 | for (i=0; i<num_files; i++) |
1442 | { | 1443 | { |
1443 | if (button_get(false) == SETTINGS_CANCEL) | 1444 | if (action_userabort(TIMEOUT_NOBLOCK)) |
1444 | { | 1445 | { |
1445 | result = -2; | 1446 | result = -2; |
1446 | break; | 1447 | break; |
@@ -1888,7 +1889,7 @@ int playlist_resume(void) | |||
1888 | str(LANG_OFF_ABORT) | 1889 | str(LANG_OFF_ABORT) |
1889 | #endif | 1890 | #endif |
1890 | ); | 1891 | ); |
1891 | if (SETTINGS_CANCEL == button_get(false)) | 1892 | if (action_userabort(TIMEOUT_NOBLOCK)) |
1892 | { | 1893 | { |
1893 | /* FIXME: | 1894 | /* FIXME: |
1894 | * Not sure how to implement this, somebody more familiar | 1895 | * Not sure how to implement this, somebody more familiar |
@@ -2870,7 +2871,7 @@ int playlist_insert_playlist(struct playlist_info* playlist, char *filename, | |||
2870 | while ((max = read_line(fd, temp_buf, sizeof(temp_buf))) > 0) | 2871 | while ((max = read_line(fd, temp_buf, sizeof(temp_buf))) > 0) |
2871 | { | 2872 | { |
2872 | /* user abort */ | 2873 | /* user abort */ |
2873 | if (button_get(false) == SETTINGS_CANCEL) | 2874 | if (action_userabort(TIMEOUT_NOBLOCK)) |
2874 | break; | 2875 | break; |
2875 | 2876 | ||
2876 | if (temp_buf[0] != '#' && temp_buf[0] != '\0') | 2877 | if (temp_buf[0] != '#' && temp_buf[0] != '\0') |
@@ -3281,7 +3282,7 @@ int playlist_save(struct playlist_info* playlist, char *filename) | |||
3281 | int seek; | 3282 | int seek; |
3282 | 3283 | ||
3283 | /* user abort */ | 3284 | /* user abort */ |
3284 | if (button_get(false) == SETTINGS_CANCEL) | 3285 | if (action_userabort(TIMEOUT_NOBLOCK)) |
3285 | { | 3286 | { |
3286 | result = -1; | 3287 | result = -1; |
3287 | break; | 3288 | break; |
@@ -3408,7 +3409,7 @@ int playlist_directory_tracksearch(const char* dirname, bool recurse, | |||
3408 | for (i=0; i<num_files; i++) | 3409 | for (i=0; i<num_files; i++) |
3409 | { | 3410 | { |
3410 | /* user abort */ | 3411 | /* user abort */ |
3411 | if (button_get(false) == SETTINGS_CANCEL) | 3412 | if (action_userabort(TIMEOUT_NOBLOCK)) |
3412 | { | 3413 | { |
3413 | result = -1; | 3414 | result = -1; |
3414 | break; | 3415 | break; |
diff --git a/apps/playlist_catalog.c b/apps/playlist_catalog.c index a1a9bd8ea1..55af178ee4 100644 --- a/apps/playlist_catalog.c +++ b/apps/playlist_catalog.c | |||
@@ -214,7 +214,6 @@ static int display_playlists(char* playlist, bool view) | |||
214 | { | 214 | { |
215 | int result = -1; | 215 | int result = -1; |
216 | int num_playlists = 0; | 216 | int num_playlists = 0; |
217 | int lastbutton = BUTTON_NONE; | ||
218 | bool exit = false; | 217 | bool exit = false; |
219 | char temp_buf[MAX_PATH]; | 218 | char temp_buf[MAX_PATH]; |
220 | char* playlists[MAX_PLAYLISTS]; | 219 | char* playlists[MAX_PLAYLISTS]; |
@@ -240,7 +239,7 @@ static int display_playlists(char* playlist, bool view) | |||
240 | 239 | ||
241 | while (!exit) | 240 | while (!exit) |
242 | { | 241 | { |
243 | int button = button_get_w_tmo(HZ/2); | 242 | int button = get_action(CONTEXT_LIST,HZ/2); |
244 | char* sel_file; | 243 | char* sel_file; |
245 | 244 | ||
246 | gui_synclist_do_button(&playlist_lists, button); | 245 | gui_synclist_do_button(&playlist_lists, button); |
@@ -249,34 +248,11 @@ static int display_playlists(char* playlist, bool view) | |||
249 | 248 | ||
250 | switch (button) | 249 | switch (button) |
251 | { | 250 | { |
252 | case TREE_EXIT: | 251 | case ACTION_STD_CANCEL: |
253 | #ifdef TREE_RC_EXIT | ||
254 | case TREE_RC_EXIT: | ||
255 | #endif | ||
256 | #ifdef TREE_OFF | ||
257 | case TREE_OFF: | ||
258 | #endif | ||
259 | exit = true; | 252 | exit = true; |
260 | break; | 253 | break; |
261 | 254 | ||
262 | #ifdef TREE_ENTER | 255 | case ACTION_STD_OK: |
263 | case TREE_ENTER: | ||
264 | case TREE_ENTER | BUTTON_REPEAT: | ||
265 | #endif | ||
266 | #ifdef TREE_RC_RUN | ||
267 | case TREE_RC_RUN: | ||
268 | #endif | ||
269 | case TREE_RUN: | ||
270 | #ifdef TREE_RUN_PRE | ||
271 | if (((button == TREE_RUN) | ||
272 | #ifdef TREE_RC_RUN_PRE | ||
273 | || (button == TREE_RC_RUN)) | ||
274 | && ((lastbutton != TREE_RC_RUN_PRE) | ||
275 | #endif | ||
276 | && (lastbutton != TREE_RUN_PRE))) | ||
277 | break; | ||
278 | #endif | ||
279 | |||
280 | if (view) | 256 | if (view) |
281 | { | 257 | { |
282 | /* In view mode, selecting a playlist starts playback */ | 258 | /* In view mode, selecting a playlist starts playback */ |
@@ -298,13 +274,7 @@ static int display_playlists(char* playlist, bool view) | |||
298 | exit = true; | 274 | exit = true; |
299 | break; | 275 | break; |
300 | 276 | ||
301 | case TREE_CONTEXT: | 277 | case ACTION_STD_CONTEXT: |
302 | #ifdef TREE_CONTEXT2 | ||
303 | case TREE_CONTEXT2: | ||
304 | #endif | ||
305 | #ifdef TREE_RC_CONTEXT | ||
306 | case TREE_RC_CONTEXT: | ||
307 | #endif | ||
308 | /* context menu only available in view mode */ | 278 | /* context menu only available in view mode */ |
309 | if (view) | 279 | if (view) |
310 | { | 280 | { |
@@ -322,7 +292,7 @@ static int display_playlists(char* playlist, bool view) | |||
322 | } | 292 | } |
323 | break; | 293 | break; |
324 | 294 | ||
325 | case BUTTON_NONE: | 295 | case ACTION_NONE: |
326 | gui_syncstatusbar_draw(&statusbars, false); | 296 | gui_syncstatusbar_draw(&statusbars, false); |
327 | break; | 297 | break; |
328 | 298 | ||
@@ -334,10 +304,8 @@ static int display_playlists(char* playlist, bool view) | |||
334 | } | 304 | } |
335 | break; | 305 | break; |
336 | } | 306 | } |
337 | |||
338 | lastbutton = button; | ||
339 | } | 307 | } |
340 | 308 | action_signalscreenchange(); | |
341 | return result; | 309 | return result; |
342 | } | 310 | } |
343 | 311 | ||
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c index 46482cb7fa..7c73b2bad9 100644 --- a/apps/playlist_viewer.c +++ b/apps/playlist_viewer.c | |||
@@ -48,6 +48,7 @@ | |||
48 | #include "statusbar.h" | 48 | #include "statusbar.h" |
49 | #include "splash.h" | 49 | #include "splash.h" |
50 | #include "playlist_menu.h" | 50 | #include "playlist_menu.h" |
51 | #include "action.h" | ||
51 | 52 | ||
52 | /* Maximum number of tracks we can have loaded at one time */ | 53 | /* Maximum number of tracks we can have loaded at one time */ |
53 | #define MAX_PLAYLIST_ENTRIES 200 | 54 | #define MAX_PLAYLIST_ENTRIES 200 |
@@ -614,7 +615,7 @@ bool playlist_viewer_ex(char* filename) | |||
614 | { | 615 | { |
615 | bool ret = false; /* return value */ | 616 | bool ret = false; /* return value */ |
616 | bool exit=false; /* exit viewer */ | 617 | bool exit=false; /* exit viewer */ |
617 | int button, lastbutton = BUTTON_NONE; | 618 | int button; |
618 | struct gui_synclist playlist_lists; | 619 | struct gui_synclist playlist_lists; |
619 | if (!playlist_viewer_init(&viewer, filename, false)) | 620 | if (!playlist_viewer_init(&viewer, filename, false)) |
620 | goto exit; | 621 | goto exit; |
@@ -661,7 +662,7 @@ bool playlist_viewer_ex(char* filename) | |||
661 | } | 662 | } |
662 | 663 | ||
663 | /* Timeout so we can determine if play status has changed */ | 664 | /* Timeout so we can determine if play status has changed */ |
664 | button = button_get_w_tmo(HZ/2); | 665 | button = get_action(CONTEXT_TREE,HZ/2); |
665 | int list_action; | 666 | int list_action; |
666 | if( (list_action=gui_synclist_do_button(&playlist_lists, button))!=0 ) | 667 | if( (list_action=gui_synclist_do_button(&playlist_lists, button))!=0 ) |
667 | { | 668 | { |
@@ -669,7 +670,7 @@ bool playlist_viewer_ex(char* filename) | |||
669 | if(playlist_buffer_needs_reload(&viewer.buffer, | 670 | if(playlist_buffer_needs_reload(&viewer.buffer, |
670 | viewer.selected_track)) | 671 | viewer.selected_track)) |
671 | playlist_buffer_load_entries_screen(&viewer.buffer, | 672 | playlist_buffer_load_entries_screen(&viewer.buffer, |
672 | list_action==LIST_NEXT? | 673 | list_action==ACTION_STD_NEXT? |
673 | FORWARD | 674 | FORWARD |
674 | : | 675 | : |
675 | BACKWARD | 676 | BACKWARD |
@@ -677,36 +678,11 @@ bool playlist_viewer_ex(char* filename) | |||
677 | } | 678 | } |
678 | switch (button) | 679 | switch (button) |
679 | { | 680 | { |
680 | case TREE_EXIT | BUTTON_REL: | 681 | case ACTION_STD_CANCEL: |
681 | if (lastbutton != TREE_EXIT) | ||
682 | break; | ||
683 | #ifdef TREE_RC_EXIT | ||
684 | case TREE_RC_EXIT: | ||
685 | #endif | ||
686 | #ifdef TREE_OFF | ||
687 | case TREE_OFF: | ||
688 | #endif | ||
689 | exit = true; | 682 | exit = true; |
690 | break; | 683 | break; |
691 | 684 | case ACTION_STD_OK: | |
692 | #ifdef TREE_ENTER | 685 | { |
693 | case TREE_ENTER | BUTTON_REL: | ||
694 | if (lastbutton != TREE_ENTER) | ||
695 | break; | ||
696 | #endif | ||
697 | #ifdef TREE_RC_RUN | ||
698 | case TREE_RC_RUN: | ||
699 | #endif | ||
700 | case TREE_RUN: | ||
701 | #ifdef TREE_RUN_PRE | ||
702 | if (((button == TREE_RUN) | ||
703 | #ifdef TREE_RC_RUN_PRE | ||
704 | || (button == TREE_RC_RUN)) | ||
705 | && ((lastbutton != TREE_RC_RUN_PRE) | ||
706 | #endif | ||
707 | && (lastbutton != TREE_RUN_PRE))) | ||
708 | break; | ||
709 | #endif | ||
710 | struct playlist_entry * current_track = | 686 | struct playlist_entry * current_track = |
711 | playlist_buffer_get_track(&viewer.buffer, | 687 | playlist_buffer_get_track(&viewer.buffer, |
712 | viewer.selected_track); | 688 | viewer.selected_track); |
@@ -744,14 +720,8 @@ bool playlist_viewer_ex(char* filename) | |||
744 | gui_synclist_draw(&playlist_lists); | 720 | gui_synclist_draw(&playlist_lists); |
745 | 721 | ||
746 | break; | 722 | break; |
747 | 723 | } | |
748 | case TREE_CONTEXT: | 724 | case ACTION_STD_CONTEXT: |
749 | #ifdef TREE_CONTEXT2 | ||
750 | case TREE_CONTEXT2: | ||
751 | #endif | ||
752 | #ifdef TREE_RC_CONTEXT | ||
753 | case TREE_RC_CONTEXT: | ||
754 | #endif | ||
755 | { | 725 | { |
756 | /* ON+PLAY menu */ | 726 | /* ON+PLAY menu */ |
757 | int ret; | 727 | int ret; |
@@ -774,14 +744,7 @@ bool playlist_viewer_ex(char* filename) | |||
774 | gui_synclist_draw(&playlist_lists); | 744 | gui_synclist_draw(&playlist_lists); |
775 | break; | 745 | break; |
776 | } | 746 | } |
777 | #ifdef TREE_MENU_PRE | 747 | case ACTION_STD_MENU: |
778 | case TREE_MENU_PRE: | ||
779 | #else | ||
780 | case TREE_MENU: | ||
781 | #endif | ||
782 | #ifdef TREE_RC_MENU | ||
783 | case TREE_RC_MENU: | ||
784 | #endif | ||
785 | if (viewer_menu()) | 748 | if (viewer_menu()) |
786 | { | 749 | { |
787 | ret = true; | 750 | ret = true; |
@@ -795,7 +758,7 @@ bool playlist_viewer_ex(char* filename) | |||
795 | gui_synclist_draw(&playlist_lists); | 758 | gui_synclist_draw(&playlist_lists); |
796 | break; | 759 | break; |
797 | 760 | ||
798 | case BUTTON_NONE: | 761 | case ACTION_NONE: |
799 | gui_syncstatusbar_draw(&statusbars, false); | 762 | gui_syncstatusbar_draw(&statusbars, false); |
800 | break; | 763 | break; |
801 | 764 | ||
@@ -807,12 +770,12 @@ bool playlist_viewer_ex(char* filename) | |||
807 | } | 770 | } |
808 | break; | 771 | break; |
809 | } | 772 | } |
810 | lastbutton = button; | ||
811 | } | 773 | } |
812 | 774 | ||
813 | exit: | 775 | exit: |
814 | if (viewer.playlist) | 776 | if (viewer.playlist) |
815 | playlist_close(viewer.playlist); | 777 | playlist_close(viewer.playlist); |
778 | action_signalscreenchange(); | ||
816 | return ret; | 779 | return ret; |
817 | } | 780 | } |
818 | char * playlist_search_callback_name(int selected_item, void * data, char *buffer) | 781 | char * playlist_search_callback_name(int selected_item, void * data, char *buffer) |
@@ -860,7 +823,7 @@ bool search_playlist(void) | |||
860 | str(LANG_OFF_ABORT) | 823 | str(LANG_OFF_ABORT) |
861 | #endif | 824 | #endif |
862 | ); | 825 | ); |
863 | if (SETTINGS_CANCEL == button_get(false)) | 826 | if (action_userabort(TIMEOUT_NOBLOCK)) |
864 | return ret; | 827 | return ret; |
865 | playlist_get_track_info(viewer.playlist,i,&track); | 828 | playlist_get_track_info(viewer.playlist,i,&track); |
866 | if (strcasestr(track.filename,search_str)) | 829 | if (strcasestr(track.filename,search_str)) |
@@ -883,35 +846,22 @@ bool search_playlist(void) | |||
883 | gui_synclist_draw(&playlist_lists); | 846 | gui_synclist_draw(&playlist_lists); |
884 | while (!exit) | 847 | while (!exit) |
885 | { | 848 | { |
886 | button = button_get(true); | 849 | button = get_action(CONTEXT_LIST,TIMEOUT_BLOCK); |
887 | if (gui_synclist_do_button(&playlist_lists, button)) | 850 | if (gui_synclist_do_button(&playlist_lists, button)) |
888 | continue; | 851 | continue; |
889 | switch (button) | 852 | switch (button) |
890 | { | 853 | { |
891 | case TREE_EXIT: | 854 | case ACTION_STD_CANCEL: |
892 | #ifdef TREE_RC_EXIT | ||
893 | case TREE_RC_EXIT: | ||
894 | #endif | ||
895 | #ifdef TREE_OFF | ||
896 | case TREE_OFF: | ||
897 | #endif | ||
898 | exit = true; | 855 | exit = true; |
899 | break; | 856 | break; |
900 | 857 | ||
901 | #ifdef TREE_ENTER | 858 | case ACTION_STD_OK: |
902 | case TREE_ENTER: | ||
903 | case TREE_ENTER | BUTTON_REPEAT: | ||
904 | #endif | ||
905 | #ifdef TREE_RC_RUN | ||
906 | case TREE_RC_RUN: | ||
907 | #endif | ||
908 | case TREE_RUN: | ||
909 | playlist_start( | 859 | playlist_start( |
910 | found_indicies[gui_synclist_get_sel_pos(&playlist_lists)] | 860 | found_indicies[gui_synclist_get_sel_pos(&playlist_lists)] |
911 | ,0); | 861 | ,0); |
912 | exit = 1; | 862 | exit = 1; |
913 | break; | 863 | break; |
914 | case BUTTON_NONE: | 864 | case ACTION_NONE: |
915 | break; | 865 | break; |
916 | default: | 866 | default: |
917 | if(default_event_handler(button) == SYS_USB_CONNECTED) | 867 | if(default_event_handler(button) == SYS_USB_CONNECTED) |
@@ -922,6 +872,7 @@ bool search_playlist(void) | |||
922 | break; | 872 | break; |
923 | } | 873 | } |
924 | } | 874 | } |
875 | action_signalscreenchange(); | ||
925 | return ret; | 876 | return ret; |
926 | } | 877 | } |
927 | 878 | ||
diff --git a/apps/plugin.c b/apps/plugin.c index c9278c8897..ea200b84ad 100644 --- a/apps/plugin.c +++ b/apps/plugin.c | |||
@@ -468,6 +468,11 @@ static const struct plugin_api rockbox_api = { | |||
468 | #endif | 468 | #endif |
469 | 469 | ||
470 | PREFIX(rmdir), | 470 | PREFIX(rmdir), |
471 | /* action handling */ | ||
472 | get_custom_action, | ||
473 | get_action, | ||
474 | action_signalscreenchange, | ||
475 | action_userabort, | ||
471 | }; | 476 | }; |
472 | 477 | ||
473 | int plugin_load(const char* plugin, void* parameter) | 478 | int plugin_load(const char* plugin, void* parameter) |
diff --git a/apps/plugin.h b/apps/plugin.h index 505e7ec666..8384d8b9aa 100644 --- a/apps/plugin.h +++ b/apps/plugin.h | |||
@@ -38,6 +38,7 @@ | |||
38 | #include "dir.h" | 38 | #include "dir.h" |
39 | #include "kernel.h" | 39 | #include "kernel.h" |
40 | #include "button.h" | 40 | #include "button.h" |
41 | #include "action.h" | ||
41 | #include "usb.h" | 42 | #include "usb.h" |
42 | #include "font.h" | 43 | #include "font.h" |
43 | #include "system.h" | 44 | #include "system.h" |
@@ -104,7 +105,7 @@ | |||
104 | #define PLUGIN_MAGIC 0x526F634B /* RocK */ | 105 | #define PLUGIN_MAGIC 0x526F634B /* RocK */ |
105 | 106 | ||
106 | /* increase this every time the api struct changes */ | 107 | /* increase this every time the api struct changes */ |
107 | #define PLUGIN_API_VERSION 28 | 108 | #define PLUGIN_API_VERSION 29 |
108 | 109 | ||
109 | /* update this to latest version if a change to the api struct breaks | 110 | /* update this to latest version if a change to the api struct breaks |
110 | backwards compatibility (and please take the opportunity to sort in any | 111 | backwards compatibility (and please take the opportunity to sort in any |
@@ -546,6 +547,12 @@ struct plugin_api { | |||
546 | #endif | 547 | #endif |
547 | 548 | ||
548 | int (*PREFIX(rmdir))(const char *name); | 549 | int (*PREFIX(rmdir))(const char *name); |
550 | /* action handling */ | ||
551 | int (*get_custom_action)(int context,int timeout, | ||
552 | struct button_mapping* (*get_context_map)(int)); | ||
553 | int (*get_action)(int context, int timeout); | ||
554 | void (*action_signalscreenchange)(void); | ||
555 | bool (*action_userabort)(int timeout); | ||
549 | }; | 556 | }; |
550 | 557 | ||
551 | /* plugin header */ | 558 | /* plugin header */ |
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 1d39fefd21..c292909b33 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c | |||
@@ -1359,6 +1359,7 @@ bool handle_radio_presets_menu(void) | |||
1359 | int handle_radio_presets_cb(int key, int m) | 1359 | int handle_radio_presets_cb(int key, int m) |
1360 | { | 1360 | { |
1361 | (void)m; | 1361 | (void)m; |
1362 | #if 0 /* this screen needs fixing! */ | ||
1362 | switch(key) | 1363 | switch(key) |
1363 | { | 1364 | { |
1364 | #ifdef FM_PRESET_ADD | 1365 | #ifdef FM_PRESET_ADD |
@@ -1372,7 +1373,7 @@ int handle_radio_presets_cb(int key, int m) | |||
1372 | #ifdef FM_PRESET | 1373 | #ifdef FM_PRESET |
1373 | case FM_PRESET: | 1374 | case FM_PRESET: |
1374 | menu_draw(m); | 1375 | menu_draw(m); |
1375 | key = MENU_EXIT; /* Fake an exit */ | 1376 | key = ACTION_STD_EXIT; /* Fake an exit */ |
1376 | break; | 1377 | break; |
1377 | #endif | 1378 | #endif |
1378 | #endif | 1379 | #endif |
@@ -1409,21 +1410,11 @@ int handle_radio_presets_cb(int key, int m) | |||
1409 | case MENU_ENTER2 | BUTTON_REL: | 1410 | case MENU_ENTER2 | BUTTON_REL: |
1410 | #endif | 1411 | #endif |
1411 | case MENU_ENTER | BUTTON_REL: | 1412 | case MENU_ENTER | BUTTON_REL: |
1412 | key = MENU_ENTER; /* fake enter for short press */ | 1413 | key = ACTION_STD_SELECT; /* fake enter for short press */ |
1413 | break; | 1414 | break; |
1414 | 1415 | ||
1415 | /* ignore down events */ | 1416 | /* ignore down events */ |
1416 | #ifdef MENU_RC_ENTER | 1417 | case ACTION_STD_SELECT: |
1417 | case MENU_RC_ENTER: | ||
1418 | #endif | ||
1419 | #ifdef MENU_RC_ENTER2 | ||
1420 | case MENU_RC_ENTER2: | ||
1421 | #endif | ||
1422 | |||
1423 | #ifdef MENU_ENTER2 | ||
1424 | case MENU_ENTER2: | ||
1425 | #endif | ||
1426 | case MENU_ENTER: | ||
1427 | /* Ignore the release events */ | 1418 | /* Ignore the release events */ |
1428 | #ifdef FM_PRESET_ADD | 1419 | #ifdef FM_PRESET_ADD |
1429 | case FM_PRESET_ADD | BUTTON_REL: | 1420 | case FM_PRESET_ADD | BUTTON_REL: |
@@ -1434,6 +1425,7 @@ int handle_radio_presets_cb(int key, int m) | |||
1434 | key = BUTTON_NONE; | 1425 | key = BUTTON_NONE; |
1435 | break; | 1426 | break; |
1436 | } | 1427 | } |
1428 | #endif | ||
1437 | return key; | 1429 | return key; |
1438 | } | 1430 | } |
1439 | 1431 | ||
@@ -1611,6 +1603,7 @@ static bool scan_presets(void) | |||
1611 | int radio_menu_cb(int key, int m) | 1603 | int radio_menu_cb(int key, int m) |
1612 | { | 1604 | { |
1613 | (void)m; | 1605 | (void)m; |
1606 | #if 0 /* this screen needs fixing! */ | ||
1614 | switch(key) | 1607 | switch(key) |
1615 | { | 1608 | { |
1616 | #if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) | 1609 | #if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) |
@@ -1631,7 +1624,7 @@ int radio_menu_cb(int key, int m) | |||
1631 | key = MENU_ENTER; /* fake downpress, next menu doesn't like release */ | 1624 | key = MENU_ENTER; /* fake downpress, next menu doesn't like release */ |
1632 | break; | 1625 | break; |
1633 | } | 1626 | } |
1634 | 1627 | #endif | |
1635 | return key; | 1628 | return key; |
1636 | } | 1629 | } |
1637 | 1630 | ||
diff --git a/apps/screens.c b/apps/screens.c index 5a2b58e853..6d9f79e6a5 100644 --- a/apps/screens.c +++ b/apps/screens.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <string.h> | 21 | #include <string.h> |
22 | #include <stdio.h> | 22 | #include <stdio.h> |
23 | #include "backlight.h" | 23 | #include "backlight.h" |
24 | #include "button.h" | 24 | #include "action.h" |
25 | #include "lcd.h" | 25 | #include "lcd.h" |
26 | #include "lang.h" | 26 | #include "lang.h" |
27 | #include "icons.h" | 27 | #include "icons.h" |
@@ -309,11 +309,7 @@ void charging_display_info(bool animate) | |||
309 | 2 if Off/Stop key was pressed | 309 | 2 if Off/Stop key was pressed |
310 | 3 if On key was pressed | 310 | 3 if On key was pressed |
311 | 4 if USB was connected */ | 311 | 4 if USB was connected */ |
312 | #if (CONFIG_KEYPAD==IPOD_3G_PAD) || (CONFIG_KEYPAD==IPOD_4G_PAD) | 312 | |
313 | # define CHARGE_SCREEN_RESUME BUTTON_SELECT | ||
314 | #else | ||
315 | # define CHARGE_SCREEN_RESUME BUTTON_ON | ||
316 | #endif | ||
317 | int charging_screen(void) | 313 | int charging_screen(void) |
318 | { | 314 | { |
319 | unsigned int button; | 315 | unsigned int button; |
@@ -338,8 +334,8 @@ int charging_screen(void) | |||
338 | { | 334 | { |
339 | gui_syncstatusbar_draw(&statusbars, false); | 335 | gui_syncstatusbar_draw(&statusbars, false); |
340 | charging_display_info(true); | 336 | charging_display_info(true); |
341 | button = button_get_w_tmo(HZ/3); | 337 | button = get_action(CONTEXT_STD,HZ/3); |
342 | if (button == CHARGE_SCREEN_RESUME) | 338 | if (button == ACTION_STD_OK) |
343 | rc = 2; | 339 | rc = 2; |
344 | else if (usb_detect()) | 340 | else if (usb_detect()) |
345 | rc = 3; | 341 | rc = 3; |
@@ -350,6 +346,7 @@ int charging_screen(void) | |||
350 | #ifdef HAVE_LCD_CHARCELLS | 346 | #ifdef HAVE_LCD_CHARCELLS |
351 | logo_lock_patterns(false); | 347 | logo_lock_patterns(false); |
352 | #endif | 348 | #endif |
349 | action_signalscreenchange(); | ||
353 | return rc; | 350 | return rc; |
354 | } | 351 | } |
355 | #endif /* CONFIG_CHARGING && !HAVE_POWEROFF_WHILE_CHARGING */ | 352 | #endif /* CONFIG_CHARGING && !HAVE_POWEROFF_WHILE_CHARGING */ |
@@ -423,15 +420,15 @@ bool pitch_screen(void) | |||
423 | { | 420 | { |
424 | pitch_screen_draw(pitch); | 421 | pitch_screen_draw(pitch); |
425 | 422 | ||
426 | button = button_get(true); | 423 | button = get_action(CONTEXT_SETTINGS,TIMEOUT_BLOCK); |
427 | switch (button) { | 424 | switch (button) { |
428 | case PITCH_UP: | 425 | case ACTION_SETTINGS_INC: |
429 | if ( pitch < 2000 ) | 426 | if ( pitch < 2000 ) |
430 | pitch++; | 427 | pitch++; |
431 | sound_set_pitch(pitch); | 428 | sound_set_pitch(pitch); |
432 | break; | 429 | break; |
433 | 430 | ||
434 | case PITCH_UP | BUTTON_REPEAT: | 431 | case ACTION_SETTINGS_INCREPEAT: |
435 | if ( pitch < 1990 ) | 432 | if ( pitch < 1990 ) |
436 | pitch += 10; | 433 | pitch += 10; |
437 | else | 434 | else |
@@ -439,13 +436,13 @@ bool pitch_screen(void) | |||
439 | sound_set_pitch(pitch); | 436 | sound_set_pitch(pitch); |
440 | break; | 437 | break; |
441 | 438 | ||
442 | case PITCH_DOWN: | 439 | case ACTION_SETTINGS_DEC: |
443 | if ( pitch > 500 ) | 440 | if ( pitch > 500 ) |
444 | pitch--; | 441 | pitch--; |
445 | sound_set_pitch(pitch); | 442 | sound_set_pitch(pitch); |
446 | break; | 443 | break; |
447 | 444 | ||
448 | case PITCH_DOWN | BUTTON_REPEAT: | 445 | case ACTION_SETTINGS_DECREPEAT: |
449 | if ( pitch > 510 ) | 446 | if ( pitch > 510 ) |
450 | pitch -= 10; | 447 | pitch -= 10; |
451 | else | 448 | else |
@@ -453,7 +450,7 @@ bool pitch_screen(void) | |||
453 | sound_set_pitch(pitch); | 450 | sound_set_pitch(pitch); |
454 | break; | 451 | break; |
455 | 452 | ||
456 | case PITCH_RIGHT: | 453 | case ACTION_STD_NEXT: |
457 | if ( pitch < 1980 ) | 454 | if ( pitch < 1980 ) |
458 | { | 455 | { |
459 | pitch += 20; | 456 | pitch += 20; |
@@ -461,15 +458,12 @@ bool pitch_screen(void) | |||
461 | 458 | ||
462 | pitch_screen_draw(pitch); | 459 | pitch_screen_draw(pitch); |
463 | 460 | ||
464 | while(button != (PITCH_RIGHT|BUTTON_REL)) | ||
465 | button = button_get(true); | ||
466 | |||
467 | pitch -= 20; | 461 | pitch -= 20; |
468 | sound_set_pitch(pitch); | 462 | sound_set_pitch(pitch); |
469 | } | 463 | } |
470 | break; | 464 | break; |
471 | 465 | ||
472 | case PITCH_LEFT: | 466 | case ACTION_STD_PREV: |
473 | if ( pitch > 520 ) | 467 | if ( pitch > 520 ) |
474 | { | 468 | { |
475 | pitch -= 20; | 469 | pitch -= 20; |
@@ -477,20 +471,17 @@ bool pitch_screen(void) | |||
477 | 471 | ||
478 | pitch_screen_draw(pitch); | 472 | pitch_screen_draw(pitch); |
479 | 473 | ||
480 | while(button != (PITCH_LEFT|BUTTON_REL)) | ||
481 | button = button_get(true);; | ||
482 | |||
483 | pitch += 20; | 474 | pitch += 20; |
484 | sound_set_pitch(pitch); | 475 | sound_set_pitch(pitch); |
485 | } | 476 | } |
486 | break; | 477 | break; |
487 | 478 | ||
488 | case PITCH_RESET: | 479 | case ACTION_STD_OK: |
489 | pitch = 1000; | 480 | pitch = 1000; |
490 | sound_set_pitch( pitch ); | 481 | sound_set_pitch( pitch ); |
491 | break; | 482 | break; |
492 | 483 | ||
493 | case PITCH_EXIT: | 484 | case ACTION_STD_CANCEL: |
494 | exit = true; | 485 | exit = true; |
495 | break; | 486 | break; |
496 | 487 | ||
@@ -504,6 +495,7 @@ bool pitch_screen(void) | |||
504 | pcmbuf_set_low_latency(false); | 495 | pcmbuf_set_low_latency(false); |
505 | #endif | 496 | #endif |
506 | lcd_setfont(FONT_UI); | 497 | lcd_setfont(FONT_UI); |
498 | action_signalscreenchange(); | ||
507 | return 0; | 499 | return 0; |
508 | } | 500 | } |
509 | #endif | 501 | #endif |
@@ -923,24 +915,22 @@ bool set_time_screen(const char* string, struct tm *tm) | |||
923 | say_time(cursorpos, tm); | 915 | say_time(cursorpos, tm); |
924 | } | 916 | } |
925 | 917 | ||
926 | button = button_get_w_tmo(HZ/2); | 918 | button = get_action(CONTEXT_SETTINGS,HZ/2); |
927 | switch ( button ) { | 919 | switch ( button ) { |
928 | case SETTINGS_PREV: | 920 | case ACTION_STD_PREV: |
929 | cursorpos = (cursorpos + 6 - 1) % 6; | 921 | cursorpos = (cursorpos + 6 - 1) % 6; |
930 | break; | 922 | break; |
931 | case SETTINGS_NEXT: | 923 | case ACTION_STD_NEXT: |
932 | cursorpos = (cursorpos + 6 + 1) % 6; | 924 | cursorpos = (cursorpos + 6 + 1) % 6; |
933 | break; | 925 | break; |
934 | case SETTINGS_INC: | 926 | case ACTION_SETTINGS_INC: |
935 | case SETTINGS_INC | BUTTON_REPEAT: | ||
936 | *valptr = (*valptr + steps - min + 1) % | 927 | *valptr = (*valptr + steps - min + 1) % |
937 | steps + min; | 928 | steps + min; |
938 | if(*valptr == 0) | 929 | if(*valptr == 0) |
939 | *valptr = min; | 930 | *valptr = min; |
940 | say_time(cursorpos, tm); | 931 | say_time(cursorpos, tm); |
941 | break; | 932 | break; |
942 | case SETTINGS_DEC: | 933 | case ACTION_SETTINGS_DEC: |
943 | case SETTINGS_DEC | BUTTON_REPEAT: | ||
944 | *valptr = (*valptr + steps - min - 1) % | 934 | *valptr = (*valptr + steps - min - 1) % |
945 | steps + min; | 935 | steps + min; |
946 | if(*valptr == 0) | 936 | if(*valptr == 0) |
@@ -948,11 +938,11 @@ bool set_time_screen(const char* string, struct tm *tm) | |||
948 | say_time(cursorpos, tm); | 938 | say_time(cursorpos, tm); |
949 | break; | 939 | break; |
950 | 940 | ||
951 | case SETTINGS_ACCEPT: | 941 | case ACTION_STD_OK: |
952 | done = true; | 942 | done = true; |
953 | break; | 943 | break; |
954 | 944 | ||
955 | case SETTINGS_CANCEL: | 945 | case ACTION_STD_CANCEL: |
956 | done = true; | 946 | done = true; |
957 | tm->tm_year = -1; | 947 | tm->tm_year = -1; |
958 | break; | 948 | break; |
@@ -963,7 +953,7 @@ bool set_time_screen(const char* string, struct tm *tm) | |||
963 | break; | 953 | break; |
964 | } | 954 | } |
965 | } | 955 | } |
966 | 956 | action_signalscreenchange(); | |
967 | lcd_set_drawmode(lastmode); | 957 | lcd_set_drawmode(lastmode); |
968 | return false; | 958 | return false; |
969 | } | 959 | } |
@@ -981,10 +971,10 @@ bool shutdown_screen(void) | |||
981 | 971 | ||
982 | while(!done) | 972 | while(!done) |
983 | { | 973 | { |
984 | button = button_get_w_tmo(HZ*2); | 974 | button = get_action(CONTEXT_STD,HZ*2); |
985 | switch(button) | 975 | switch(button) |
986 | { | 976 | { |
987 | case BUTTON_OFF: | 977 | case ACTION_STD_CANCEL: |
988 | sys_poweroff(); | 978 | sys_poweroff(); |
989 | break; | 979 | break; |
990 | 980 | ||
@@ -998,11 +988,14 @@ bool shutdown_screen(void) | |||
998 | not have released the button yet. | 988 | not have released the button yet. |
999 | We also ignore REPEAT events, since we don't want to | 989 | We also ignore REPEAT events, since we don't want to |
1000 | remove the splash when the user holds OFF to shut down. */ | 990 | remove the splash when the user holds OFF to shut down. */ |
991 | /* Is this still needed? commenting out so it compiles.. | ||
992 | CHECK ME!! | ||
1001 | if(!(button & (BUTTON_REL | BUTTON_REPEAT))) | 993 | if(!(button & (BUTTON_REL | BUTTON_REPEAT))) |
1002 | done = true; | 994 | */ done = true; |
1003 | break; | 995 | break; |
1004 | } | 996 | } |
1005 | } | 997 | } |
998 | action_signalscreenchange(); | ||
1006 | return false; | 999 | return false; |
1007 | } | 1000 | } |
1008 | #endif | 1001 | #endif |
@@ -1123,9 +1116,12 @@ bool browse_id3(void) | |||
1123 | gui_synclist_set_nb_items(&id3_lists, ID3_ITEMS*2); | 1116 | gui_synclist_set_nb_items(&id3_lists, ID3_ITEMS*2); |
1124 | gui_synclist_draw(&id3_lists); | 1117 | gui_synclist_draw(&id3_lists); |
1125 | while (true) { | 1118 | while (true) { |
1126 | key = button_get_w_tmo(HZ/2); | 1119 | key = get_action(CONTEXT_STD,HZ/2); |
1127 | if(key!=BUTTON_NONE && !(key&BUTTON_REL) && !gui_synclist_do_button(&id3_lists, key)) | 1120 | if(key!=ACTION_NONE && /* !(key&BUTTON_REL) && ?? */ !gui_synclist_do_button(&id3_lists, key)) |
1121 | { | ||
1122 | action_signalscreenchange(); | ||
1128 | return(default_event_handler(key) == SYS_USB_CONNECTED); | 1123 | return(default_event_handler(key) == SYS_USB_CONNECTED); |
1124 | } | ||
1129 | gui_syncstatusbar_draw(&statusbars, false); | 1125 | gui_syncstatusbar_draw(&statusbars, false); |
1130 | } | 1126 | } |
1131 | } | 1127 | } |
@@ -1147,29 +1143,24 @@ bool set_rating(void) | |||
1147 | snprintf(rating_text, sizeof(rating_text), "%d", id3->rating); | 1143 | snprintf(rating_text, sizeof(rating_text), "%d", id3->rating); |
1148 | lcd_puts(0, 1, (unsigned char *)rating_text); | 1144 | lcd_puts(0, 1, (unsigned char *)rating_text); |
1149 | lcd_update(); | 1145 | lcd_update(); |
1150 | button = button_get(true); | 1146 | button = get_action(CONTEXT_SETTINGS,TIMEOUT_BLOCK); |
1151 | 1147 | ||
1152 | switch(button) | 1148 | switch(button) |
1153 | { | 1149 | { |
1154 | case SETTINGS_DEC: | 1150 | case ACTION_SETTINGS_DEC: |
1155 | if (id3->rating > 0) | 1151 | if (id3->rating > 0) |
1156 | id3->rating--; | 1152 | id3->rating--; |
1157 | else | 1153 | else |
1158 | id3->rating = 10; | 1154 | id3->rating = 10; |
1159 | break; | 1155 | break; |
1160 | 1156 | ||
1161 | case SETTINGS_INC: | 1157 | case ACTION_SETTINGS_INC: |
1162 | if (id3->rating < 10) | 1158 | if (id3->rating < 10) |
1163 | id3->rating++; | 1159 | id3->rating++; |
1164 | else | 1160 | else |
1165 | id3->rating = 0; | 1161 | id3->rating = 0; |
1166 | break; | 1162 | break; |
1167 | case SETTINGS_CANCEL: | 1163 | case ACTION_STD_CANCEL: |
1168 | #ifdef SETTINGS_OK2 | ||
1169 | case SETTINGS_OK2: | ||
1170 | #endif | ||
1171 | /* eat release event */ | ||
1172 | button_get(true); | ||
1173 | exit = true; | 1164 | exit = true; |
1174 | break; | 1165 | break; |
1175 | 1166 | ||
@@ -1179,5 +1170,6 @@ bool set_rating(void) | |||
1179 | break; | 1170 | break; |
1180 | } | 1171 | } |
1181 | } | 1172 | } |
1173 | action_signalscreenchange(); | ||
1182 | return false; | 1174 | return false; |
1183 | } | 1175 | } |
diff --git a/apps/screens.h b/apps/screens.h index 34e7c9f603..deece8784d 100644 --- a/apps/screens.h +++ b/apps/screens.h | |||
@@ -22,51 +22,6 @@ | |||
22 | #include "config.h" | 22 | #include "config.h" |
23 | #include "timefuncs.h" | 23 | #include "timefuncs.h" |
24 | 24 | ||
25 | #if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IRIVER_H100_PAD) ||\ | ||
26 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
27 | #define PITCH_UP BUTTON_UP | ||
28 | #define PITCH_DOWN BUTTON_DOWN | ||
29 | #define PITCH_RIGHT BUTTON_RIGHT | ||
30 | #define PITCH_LEFT BUTTON_LEFT | ||
31 | #define PITCH_EXIT BUTTON_OFF | ||
32 | #define PITCH_RESET BUTTON_ON | ||
33 | #elif (CONFIG_KEYPAD == ONDIO_PAD) | ||
34 | #define PITCH_UP BUTTON_UP | ||
35 | #define PITCH_DOWN BUTTON_DOWN | ||
36 | #define PITCH_RIGHT BUTTON_RIGHT | ||
37 | #define PITCH_LEFT BUTTON_LEFT | ||
38 | #define PITCH_EXIT BUTTON_OFF | ||
39 | #define PITCH_RESET BUTTON_MENU | ||
40 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) | ||
41 | #define PITCH_UP BUTTON_SCROLL_FWD | ||
42 | #define PITCH_DOWN BUTTON_SCROLL_BACK | ||
43 | #define PITCH_RIGHT BUTTON_RIGHT | ||
44 | #define PITCH_LEFT BUTTON_LEFT | ||
45 | #define PITCH_EXIT BUTTON_SELECT | ||
46 | #define PITCH_RESET BUTTON_MENU | ||
47 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) | ||
48 | #define PITCH_UP BUTTON_UP | ||
49 | #define PITCH_DOWN BUTTON_DOWN | ||
50 | #define PITCH_RIGHT BUTTON_RIGHT | ||
51 | #define PITCH_LEFT BUTTON_LEFT | ||
52 | #define PITCH_EXIT BUTTON_SELECT | ||
53 | #define PITCH_RESET BUTTON_A | ||
54 | #elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) | ||
55 | #define PITCH_UP BUTTON_UP | ||
56 | #define PITCH_DOWN BUTTON_DOWN | ||
57 | #define PITCH_RIGHT BUTTON_RIGHT | ||
58 | #define PITCH_LEFT BUTTON_LEFT | ||
59 | #define PITCH_EXIT BUTTON_PLAY | ||
60 | #define PITCH_RESET BUTTON_POWER | ||
61 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) | ||
62 | #define PITCH_UP BUTTON_SCROLL_UP | ||
63 | #define PITCH_DOWN BUTTON_SCROLL_DOWN | ||
64 | #define PITCH_RIGHT BUTTON_RIGHT | ||
65 | #define PITCH_LEFT BUTTON_LEFT | ||
66 | #define PITCH_EXIT BUTTON_PLAY | ||
67 | #define PITCH_RESET BUTTON_POWER | ||
68 | #endif | ||
69 | |||
70 | struct screen; | 25 | struct screen; |
71 | 26 | ||
72 | void usb_display_info(struct screen * display); | 27 | void usb_display_info(struct screen * display); |
diff --git a/apps/settings.c b/apps/settings.c index 412fc4bfed..f70e29696b 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "config.h" | 24 | #include "config.h" |
25 | #include "kernel.h" | 25 | #include "kernel.h" |
26 | #include "thread.h" | 26 | #include "thread.h" |
27 | #include "button.h" | 27 | #include "action.h" |
28 | #include "settings.h" | 28 | #include "settings.h" |
29 | #include "disk.h" | 29 | #include "disk.h" |
30 | #include "panic.h" | 30 | #include "panic.h" |
@@ -612,6 +612,7 @@ static const struct bit_entry hd_bits[] = | |||
612 | {2, S_O(eq_hw_band4_cutoff), 1, "eq hardware band 4 cutoff", "5.3kHz,6.9kHz,9kHz,11.7kHz" }, | 612 | {2, S_O(eq_hw_band4_cutoff), 1, "eq hardware band 4 cutoff", "5.3kHz,6.9kHz,9kHz,11.7kHz" }, |
613 | {5|SIGNED, S_O(eq_hw_band4_gain), 12, "eq hardware band 4 gain", NULL }, | 613 | {5|SIGNED, S_O(eq_hw_band4_gain), 12, "eq hardware band 4 gain", NULL }, |
614 | #endif | 614 | #endif |
615 | {1, S_O(hold_lr_for_scroll_in_list), true, "hold_lr_for_scroll_in_list", off_on }, | ||
615 | 616 | ||
616 | {2, S_O(show_path_in_browser), 0, "show path in browser", "off,current directory,full path" }, | 617 | {2, S_O(show_path_in_browser), 0, "show path in browser", "off,current directory,full path" }, |
617 | 618 | ||
@@ -1799,7 +1800,7 @@ void settings_reset(void) { | |||
1799 | #ifdef HAVE_LCD_BITMAP | 1800 | #ifdef HAVE_LCD_BITMAP |
1800 | global_settings.kbd_file[0] = '\0'; | 1801 | global_settings.kbd_file[0] = '\0'; |
1801 | #endif | 1802 | #endif |
1802 | 1803 | global_settings.hold_lr_for_scroll_in_list = true; | |
1803 | } | 1804 | } |
1804 | 1805 | ||
1805 | bool set_bool(const char* string, bool* variable ) | 1806 | bool set_bool(const char* string, bool* variable ) |
@@ -1891,7 +1892,7 @@ bool do_set_setting(const unsigned char* string, void *variable, | |||
1891 | struct value_setting_data *cb_data, | 1892 | struct value_setting_data *cb_data, |
1892 | void (*function)(int)) | 1893 | void (*function)(int)) |
1893 | { | 1894 | { |
1894 | int button; | 1895 | int action; |
1895 | bool done = false; | 1896 | bool done = false; |
1896 | struct gui_synclist lists; | 1897 | struct gui_synclist lists; |
1897 | int oldvalue; | 1898 | int oldvalue; |
@@ -1918,11 +1919,11 @@ bool do_set_setting(const unsigned char* string, void *variable, | |||
1918 | while (!done) | 1919 | while (!done) |
1919 | { | 1920 | { |
1920 | 1921 | ||
1921 | button = button_get(true); | 1922 | action = get_action(CONTEXT_LIST,TIMEOUT_BLOCK); |
1922 | if (button == BUTTON_NONE) | 1923 | if (action == ACTION_NONE) |
1923 | continue; | 1924 | continue; |
1924 | 1925 | ||
1925 | if (gui_synclist_do_button(&lists,button)) | 1926 | if (gui_synclist_do_button(&lists,action)) |
1926 | { | 1927 | { |
1927 | if (global_settings.talk_menu) | 1928 | if (global_settings.talk_menu) |
1928 | { | 1929 | { |
@@ -1946,7 +1947,7 @@ bool do_set_setting(const unsigned char* string, void *variable, | |||
1946 | *(bool*)variable = gui_synclist_get_sel_pos(&lists) ? true : false; | 1947 | *(bool*)variable = gui_synclist_get_sel_pos(&lists) ? true : false; |
1947 | else *(int*)variable = gui_synclist_get_sel_pos(&lists); | 1948 | else *(int*)variable = gui_synclist_get_sel_pos(&lists); |
1948 | } | 1949 | } |
1949 | else if (button == SETTINGS_CANCEL) | 1950 | else if (action == ACTION_STD_CANCEL) |
1950 | { | 1951 | { |
1951 | gui_syncsplash(HZ/2,true,str(LANG_MENU_SETTING_CANCEL)); | 1952 | gui_syncsplash(HZ/2,true,str(LANG_MENU_SETTING_CANCEL)); |
1952 | if (cb_data->type == INT) | 1953 | if (cb_data->type == INT) |
@@ -1954,11 +1955,11 @@ bool do_set_setting(const unsigned char* string, void *variable, | |||
1954 | else *(bool*)variable = (bool)oldvalue; | 1955 | else *(bool*)variable = (bool)oldvalue; |
1955 | done = true; | 1956 | done = true; |
1956 | } | 1957 | } |
1957 | else if (button == SETTINGS_OK) | 1958 | else if (action == ACTION_STD_OK) |
1958 | { | 1959 | { |
1959 | done = true; | 1960 | done = true; |
1960 | } | 1961 | } |
1961 | else if(default_event_handler(button) == SYS_USB_CONNECTED) | 1962 | else if(default_event_handler(action) == SYS_USB_CONNECTED) |
1962 | return true; | 1963 | return true; |
1963 | gui_syncstatusbar_draw(&statusbars, false); | 1964 | gui_syncstatusbar_draw(&statusbars, false); |
1964 | if ( function ) | 1965 | if ( function ) |
diff --git a/apps/settings.h b/apps/settings.h index 439a43809a..27f00584a6 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -45,115 +45,6 @@ | |||
45 | 45 | ||
46 | #define MAX_FILENAME 20 | 46 | #define MAX_FILENAME 20 |
47 | 47 | ||
48 | /* button definitions */ | ||
49 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
50 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
51 | #define SETTINGS_INC BUTTON_UP | ||
52 | #define SETTINGS_DEC BUTTON_DOWN | ||
53 | #define SETTINGS_OK BUTTON_SELECT | ||
54 | #define SETTINGS_OK2 BUTTON_LEFT | ||
55 | #define SETTINGS_CANCEL BUTTON_OFF | ||
56 | #define SETTINGS_CANCEL2 BUTTON_MODE | ||
57 | #define SETTINGS_PREV BUTTON_LEFT | ||
58 | #define SETTINGS_NEXT BUTTON_RIGHT | ||
59 | #define SETTINGS_ACCEPT BUTTON_ON | ||
60 | |||
61 | #define SETTINGS_RC_INC BUTTON_RC_FF | ||
62 | #define SETTINGS_RC_DEC BUTTON_RC_REW | ||
63 | #define SETTINGS_RC_OK BUTTON_RC_MENU | ||
64 | #define SETTINGS_RC_OK2 BUTTON_RC_SOURCE | ||
65 | #define SETTINGS_RC_CANCEL BUTTON_RC_STOP | ||
66 | #define SETTINGS_RC_CANCEL2 BUTTON_RC_MODE | ||
67 | #define SETTINGS_RC_PREV BUTTON_RC_SOURCE | ||
68 | #define SETTINGS_RC_NEXT BUTTON_RC_BITRATE | ||
69 | #define SETTINGS_RC_ACCEPT BUTTON_RC_ON | ||
70 | |||
71 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
72 | #define SETTINGS_INC BUTTON_UP | ||
73 | #define SETTINGS_DEC BUTTON_DOWN | ||
74 | #define SETTINGS_OK BUTTON_PLAY | ||
75 | #define SETTINGS_OK2 BUTTON_LEFT | ||
76 | #define SETTINGS_CANCEL BUTTON_OFF | ||
77 | #define SETTINGS_CANCEL2 BUTTON_F1 | ||
78 | #define SETTINGS_PREV BUTTON_LEFT | ||
79 | #define SETTINGS_NEXT BUTTON_RIGHT | ||
80 | #define SETTINGS_ACCEPT BUTTON_ON | ||
81 | |||
82 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
83 | #define SETTINGS_INC BUTTON_RIGHT | ||
84 | #define SETTINGS_DEC BUTTON_LEFT | ||
85 | #define SETTINGS_OK BUTTON_PLAY | ||
86 | #define SETTINGS_CANCEL BUTTON_STOP | ||
87 | #define SETTINGS_CANCEL2 BUTTON_MENU | ||
88 | #define SETTINGS_ACCEPT BUTTON_ON | ||
89 | |||
90 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
91 | #define SETTINGS_INC BUTTON_UP | ||
92 | #define SETTINGS_DEC BUTTON_DOWN | ||
93 | #define SETTINGS_OK BUTTON_RIGHT | ||
94 | #define SETTINGS_OK2 BUTTON_LEFT | ||
95 | #define SETTINGS_CANCEL BUTTON_MENU | ||
96 | #define SETTINGS_CANCEL2 BUTTON_OFF | ||
97 | |||
98 | #elif CONFIG_KEYPAD == GMINI100_PAD | ||
99 | #define SETTINGS_INC BUTTON_UP | ||
100 | #define SETTINGS_DEC BUTTON_DOWN | ||
101 | #define SETTINGS_OK BUTTON_PLAY | ||
102 | #define SETTINGS_OK2 BUTTON_LEFT | ||
103 | #define SETTINGS_CANCEL BUTTON_OFF | ||
104 | #define SETTINGS_CANCEL2 BUTTON_MENU | ||
105 | #define SETTINGS_PREV BUTTON_LEFT | ||
106 | #define SETTINGS_NEXT BUTTON_RIGHT | ||
107 | #define SETTINGS_ACCEPT BUTTON_MENU | ||
108 | |||
109 | #elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) | ||
110 | #define SETTINGS_INC BUTTON_SCROLL_FWD | ||
111 | #define SETTINGS_DEC BUTTON_SCROLL_BACK | ||
112 | #define SETTINGS_OK BUTTON_SELECT | ||
113 | #define SETTINGS_CANCEL BUTTON_MENU | ||
114 | #define SETTINGS_PREV BUTTON_LEFT | ||
115 | #define SETTINGS_NEXT BUTTON_RIGHT | ||
116 | #define SETTINGS_ACCEPT BUTTON_PLAY | ||
117 | |||
118 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | ||
119 | #define SETTINGS_INC BUTTON_UP | ||
120 | #define SETTINGS_DEC BUTTON_DOWN | ||
121 | #define SETTINGS_OK BUTTON_SELECT | ||
122 | #define SETTINGS_CANCEL BUTTON_PLAY | ||
123 | #define SETTINGS_PREV BUTTON_LEFT | ||
124 | #define SETTINGS_NEXT BUTTON_RIGHT | ||
125 | |||
126 | #elif CONFIG_KEYPAD == IAUDIO_X5_PAD | ||
127 | #define SETTINGS_INC BUTTON_UP | ||
128 | #define SETTINGS_DEC BUTTON_DOWN | ||
129 | #define SETTINGS_OK BUTTON_SELECT | ||
130 | #define SETTINGS_OK2 BUTTON_LEFT | ||
131 | #define SETTINGS_CANCEL BUTTON_REC | ||
132 | #define SETTINGS_PREV BUTTON_LEFT | ||
133 | #define SETTINGS_NEXT BUTTON_RIGHT | ||
134 | #define SETTINGS_ACCEPT BUTTON_PLAY | ||
135 | |||
136 | #elif CONFIG_KEYPAD == GIGABEAT_PAD | ||
137 | #define SETTINGS_INC BUTTON_UP | ||
138 | #define SETTINGS_DEC BUTTON_DOWN | ||
139 | #define SETTINGS_OK BUTTON_MENU | ||
140 | #define SETTINGS_CANCEL BUTTON_A | ||
141 | #define SETTINGS_PREV BUTTON_LEFT | ||
142 | #define SETTINGS_NEXT BUTTON_RIGHT | ||
143 | #define SETTINGS_ACCEPT BUTTON_SELECT | ||
144 | |||
145 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | ||
146 | #define SETTINGS_INC BUTTON_SCROLL_UP | ||
147 | #define SETTINGS_DEC BUTTON_SCROLL_DOWN | ||
148 | #define SETTINGS_OK BUTTON_PLAY | ||
149 | #define SETTINGS_OK2 BUTTON_LEFT | ||
150 | #define SETTINGS_CANCEL BUTTON_REW | ||
151 | #define SETTINGS_PREV BUTTON_LEFT | ||
152 | #define SETTINGS_NEXT BUTTON_RIGHT | ||
153 | #define SETTINGS_ACCEPT BUTTON_FF | ||
154 | |||
155 | #endif | ||
156 | |||
157 | /* data structures */ | 48 | /* data structures */ |
158 | 49 | ||
159 | #define BOOKMARK_NO 0 | 50 | #define BOOKMARK_NO 0 |
@@ -564,7 +455,7 @@ struct user_settings | |||
564 | int eq_hw_band4_cutoff; | 455 | int eq_hw_band4_cutoff; |
565 | int eq_hw_band4_gain; | 456 | int eq_hw_band4_gain; |
566 | #endif | 457 | #endif |
567 | 458 | bool hold_lr_for_scroll_in_list; /* hold L/R scrolls the list left/right */ | |
568 | int show_path_in_browser; /* 0=off, 1=current directory, 2=full path */ | 459 | int show_path_in_browser; /* 0=off, 1=current directory, 2=full path */ |
569 | }; | 460 | }; |
570 | 461 | ||
diff --git a/apps/tagtree.c b/apps/tagtree.c index 0727b8ea45..405a1bbf34 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include "splash.h" | 29 | #include "splash.h" |
30 | #include "icons.h" | 30 | #include "icons.h" |
31 | #include "tree.h" | 31 | #include "tree.h" |
32 | #include "action.h" | ||
32 | #include "settings.h" | 33 | #include "settings.h" |
33 | #include "tagcache.h" | 34 | #include "tagcache.h" |
34 | #include "tagtree.h" | 35 | #include "tagtree.h" |
@@ -539,7 +540,7 @@ bool show_search_progress(bool init, int count) | |||
539 | str(LANG_OFF_ABORT) | 540 | str(LANG_OFF_ABORT) |
540 | #endif | 541 | #endif |
541 | ); | 542 | ); |
542 | if (SETTINGS_CANCEL == button_get(false)) | 543 | if (action_userabort(TIMEOUT_NOBLOCK)) |
543 | return false; | 544 | return false; |
544 | last_tick = current_tick; | 545 | last_tick = current_tick; |
545 | yield(); | 546 | yield(); |
diff --git a/apps/tree.c b/apps/tree.c index 2f1d140ad9..34d5d0b1bb 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -72,6 +72,7 @@ | |||
72 | #include "splash.h" | 72 | #include "splash.h" |
73 | #include "buttonbar.h" | 73 | #include "buttonbar.h" |
74 | #include "textarea.h" | 74 | #include "textarea.h" |
75 | #include "action.h" | ||
75 | 76 | ||
76 | #ifdef HAVE_LCD_BITMAP | 77 | #ifdef HAVE_LCD_BITMAP |
77 | #include "widgets.h" | 78 | #include "widgets.h" |
@@ -590,28 +591,11 @@ static bool dirbrowse(void) | |||
590 | boot_changed = false; | 591 | boot_changed = false; |
591 | } | 592 | } |
592 | #endif | 593 | #endif |
593 | button = button_get_w_tmo(HZ/5); | 594 | button = get_action(CONTEXT_TREE,HZ/5); |
594 | need_update = gui_synclist_do_button(&tree_lists, button); | 595 | need_update = gui_synclist_do_button(&tree_lists, button); |
595 | 596 | ||
596 | switch ( button ) { | 597 | switch ( button ) { |
597 | #ifdef TREE_ENTER | 598 | case ACTION_STD_OK: |
598 | case TREE_ENTER | BUTTON_REL: | ||
599 | if (lastbutton != TREE_ENTER) | ||
600 | break; | ||
601 | #endif | ||
602 | #ifdef TREE_RC_RUN | ||
603 | case TREE_RC_RUN: | ||
604 | #endif | ||
605 | case TREE_RUN: | ||
606 | #ifdef TREE_RUN_PRE | ||
607 | if (((button == TREE_RUN) | ||
608 | #ifdef TREE_RC_RUN_PRE | ||
609 | || (button == TREE_RC_RUN)) | ||
610 | && ((lastbutton != TREE_RC_RUN_PRE) | ||
611 | #endif | ||
612 | && (lastbutton != TREE_RUN_PRE))) | ||
613 | break; | ||
614 | #endif | ||
615 | /* nothing to do if no files to display */ | 599 | /* nothing to do if no files to display */ |
616 | if ( numentries == 0 ) | 600 | if ( numentries == 0 ) |
617 | break; | 601 | break; |
@@ -626,31 +610,27 @@ static bool dirbrowse(void) | |||
626 | restore = true; | 610 | restore = true; |
627 | break; | 611 | break; |
628 | 612 | ||
629 | case TREE_EXIT | BUTTON_REL: | 613 | case ACTION_STD_CANCEL: |
630 | if (lastbutton != TREE_EXIT) | ||
631 | break; | ||
632 | #ifdef TREE_RC_EXIT | ||
633 | case TREE_RC_EXIT: | ||
634 | #endif | ||
635 | if (*tc.dirfilter > NUM_FILTER_MODES && tc.dirlevel < 1) { | 614 | if (*tc.dirfilter > NUM_FILTER_MODES && tc.dirlevel < 1) { |
636 | exit_func = true; | 615 | exit_func = true; |
637 | break; | 616 | break; |
638 | } | 617 | } |
639 | /* if we are in /, nothing to do */ | 618 | /* if we are in /, stop playback |
640 | if (tc.dirlevel == 0 && !strcmp(currdir,"/")) | 619 | (skip this and fall into tree_stop)*/ |
620 | if (tc.dirlevel != 0 || strcmp(currdir,"/")) | ||
621 | { | ||
622 | if (id3db) | ||
623 | tagtree_exit(&tc); | ||
624 | else | ||
625 | if (ft_exit(&tc) == 3) | ||
626 | exit_func = true; | ||
627 | |||
628 | restore = true; | ||
641 | break; | 629 | break; |
630 | } | ||
631 | /* else fall through */ | ||
642 | 632 | ||
643 | if (id3db) | 633 | case ACTION_TREE_STOP: |
644 | tagtree_exit(&tc); | ||
645 | else | ||
646 | if (ft_exit(&tc) == 3) | ||
647 | exit_func = true; | ||
648 | |||
649 | restore = true; | ||
650 | break; | ||
651 | |||
652 | #ifdef TREE_OFF | ||
653 | case TREE_OFF: | ||
654 | if (*tc.dirfilter < NUM_FILTER_MODES) | 634 | if (*tc.dirfilter < NUM_FILTER_MODES) |
655 | { | 635 | { |
656 | /* Stop the music if it is playing */ | 636 | /* Stop the music if it is playing */ |
@@ -676,6 +656,7 @@ static bool dirbrowse(void) | |||
676 | #endif | 656 | #endif |
677 | } | 657 | } |
678 | break; | 658 | break; |
659 | /* ?? | ||
679 | #if defined(CONFIG_CHARGING) && !defined(HAVE_POWEROFF_WHILE_CHARGING) | 660 | #if defined(CONFIG_CHARGING) && !defined(HAVE_POWEROFF_WHILE_CHARGING) |
680 | case TREE_OFF | BUTTON_REPEAT: | 661 | case TREE_OFF | BUTTON_REPEAT: |
681 | if (charger_inserted()) { | 662 | if (charger_inserted()) { |
@@ -684,25 +665,15 @@ static bool dirbrowse(void) | |||
684 | } | 665 | } |
685 | break; | 666 | break; |
686 | #endif | 667 | #endif |
687 | #endif /* TREE_OFF */ | 668 | */ |
688 | case TREE_MENU: | 669 | case ACTION_STD_MENU: |
689 | #ifdef TREE_RC_MENU | ||
690 | case TREE_RC_MENU: | ||
691 | #endif | ||
692 | #ifdef TREE_MENU_PRE | ||
693 | if (lastbutton != TREE_MENU_PRE | ||
694 | #ifdef TREE_RC_MENU_PRE | ||
695 | && lastbutton != TREE_RC_MENU_PRE | ||
696 | #endif | ||
697 | ) | ||
698 | break; | ||
699 | #endif | ||
700 | /* don't enter menu from plugin browser */ | 670 | /* don't enter menu from plugin browser */ |
701 | if (*tc.dirfilter < NUM_FILTER_MODES) | 671 | if (*tc.dirfilter < NUM_FILTER_MODES) |
702 | { | 672 | { |
703 | int i; | 673 | int i; |
704 | FOR_NB_SCREENS(i) | 674 | FOR_NB_SCREENS(i) |
705 | screens[i].stop_scroll(); | 675 | screens[i].stop_scroll(); |
676 | action_signalscreenchange(); | ||
706 | if (main_menu()) | 677 | if (main_menu()) |
707 | reload_dir = true; | 678 | reload_dir = true; |
708 | restore = true; | 679 | restore = true; |
@@ -715,18 +686,7 @@ static bool dirbrowse(void) | |||
715 | exit_func = true; | 686 | exit_func = true; |
716 | break; | 687 | break; |
717 | 688 | ||
718 | case TREE_WPS: | 689 | case ACTION_TREE_WPS: |
719 | #ifdef TREE_RC_WPS | ||
720 | case TREE_RC_WPS: | ||
721 | #endif | ||
722 | #ifdef TREE_WPS_PRE | ||
723 | if ((lastbutton != TREE_WPS_PRE) | ||
724 | #ifdef TREE_RC_WPS | ||
725 | && (lastbutton != TREE_RC_WPS_PRE) | ||
726 | #endif | ||
727 | ) | ||
728 | break; | ||
729 | #endif | ||
730 | /* don't enter wps from plugin browser etc */ | 690 | /* don't enter wps from plugin browser etc */ |
731 | if (*tc.dirfilter < NUM_FILTER_MODES) | 691 | if (*tc.dirfilter < NUM_FILTER_MODES) |
732 | { | 692 | { |
@@ -741,12 +701,8 @@ static bool dirbrowse(void) | |||
741 | } | 701 | } |
742 | } | 702 | } |
743 | break; | 703 | break; |
744 | |||
745 | #ifdef HAVE_QUICKSCREEN | 704 | #ifdef HAVE_QUICKSCREEN |
746 | case TREE_QUICK: | 705 | case ACTION_STD_QUICKSCREEN: |
747 | #ifdef TREE_RC_QUICK | ||
748 | case TREE_RC_QUICK: | ||
749 | #endif | ||
750 | /* don't enter f2 from plugin browser */ | 706 | /* don't enter f2 from plugin browser */ |
751 | if (*tc.dirfilter < NUM_FILTER_MODES) | 707 | if (*tc.dirfilter < NUM_FILTER_MODES) |
752 | { | 708 | { |
@@ -759,7 +715,6 @@ static bool dirbrowse(void) | |||
759 | } | 715 | } |
760 | break; | 716 | break; |
761 | #endif | 717 | #endif |
762 | |||
763 | #ifdef BUTTON_F3 | 718 | #ifdef BUTTON_F3 |
764 | case BUTTON_F3: | 719 | case BUTTON_F3: |
765 | /* don't enter f3 from plugin browser */ | 720 | /* don't enter f3 from plugin browser */ |
@@ -772,13 +727,7 @@ static bool dirbrowse(void) | |||
772 | break; | 727 | break; |
773 | #endif | 728 | #endif |
774 | 729 | ||
775 | case TREE_CONTEXT: | 730 | case ACTION_STD_CONTEXT: |
776 | #ifdef TREE_RC_CONTEXT | ||
777 | case TREE_RC_CONTEXT: | ||
778 | #endif | ||
779 | #ifdef TREE_CONTEXT2 | ||
780 | case TREE_CONTEXT2: | ||
781 | #endif | ||
782 | { | 731 | { |
783 | int onplay_result; | 732 | int onplay_result; |
784 | int attr = 0; | 733 | int attr = 0; |
@@ -827,7 +776,7 @@ static bool dirbrowse(void) | |||
827 | break; | 776 | break; |
828 | } | 777 | } |
829 | 778 | ||
830 | case BUTTON_NONE: | 779 | case ACTION_NONE: |
831 | if (thumbnail_time != -1 && | 780 | if (thumbnail_time != -1 && |
832 | TIME_AFTER(current_tick, thumbnail_time)) | 781 | TIME_AFTER(current_tick, thumbnail_time)) |
833 | { /* a delayed hovering thumbnail is due now */ | 782 | { /* a delayed hovering thumbnail is due now */ |
@@ -947,7 +896,6 @@ static bool dirbrowse(void) | |||
947 | lastfilter = *tc.dirfilter; | 896 | lastfilter = *tc.dirfilter; |
948 | lastsortcase = global_settings.sort_case; | 897 | lastsortcase = global_settings.sort_case; |
949 | restore = true; | 898 | restore = true; |
950 | button_clear_queue(); /* clear button queue */ | ||
951 | } | 899 | } |
952 | 900 | ||
953 | if (exit_func) | 901 | if (exit_func) |
@@ -1045,7 +993,7 @@ static bool dirbrowse(void) | |||
1045 | } | 993 | } |
1046 | } | 994 | } |
1047 | } | 995 | } |
1048 | 996 | action_signalscreenchange(); | |
1049 | return true; | 997 | return true; |
1050 | } | 998 | } |
1051 | 999 | ||
@@ -1057,7 +1005,7 @@ static bool add_dir(char* dirname, int len, int fd) | |||
1057 | DIRCACHED* dir; | 1005 | DIRCACHED* dir; |
1058 | 1006 | ||
1059 | /* check for user abort */ | 1007 | /* check for user abort */ |
1060 | if (button_get(false) == TREE_ABORT) | 1008 | if (action_userabort(TIMEOUT_NOBLOCK)) |
1061 | return true; | 1009 | return true; |
1062 | 1010 | ||
1063 | dir = opendir_cached(dirname); | 1011 | dir = opendir_cached(dirname); |
diff --git a/apps/tree.h b/apps/tree.h index 43242d6633..ffe6d478c6 100644 --- a/apps/tree.h +++ b/apps/tree.h | |||
@@ -23,166 +23,6 @@ | |||
23 | #include <applimits.h> | 23 | #include <applimits.h> |
24 | #include <file.h> | 24 | #include <file.h> |
25 | 25 | ||
26 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
27 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
28 | #define TREE_EXIT BUTTON_LEFT | ||
29 | #define TREE_ABORT BUTTON_OFF | ||
30 | #define TREE_ENTER BUTTON_RIGHT | ||
31 | #define TREE_RUN (BUTTON_SELECT | BUTTON_REL) | ||
32 | #define TREE_RUN_PRE BUTTON_SELECT | ||
33 | #define TREE_MENU ( BUTTON_MODE | BUTTON_REL) | ||
34 | #define TREE_MENU_PRE BUTTON_MODE | ||
35 | #define TREE_OFF BUTTON_OFF | ||
36 | #define TREE_WPS (BUTTON_ON | BUTTON_REL) | ||
37 | #define TREE_WPS_PRE BUTTON_ON | ||
38 | #define TREE_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT) | ||
39 | #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_SELECT) | ||
40 | #define TREE_QUICK (BUTTON_MODE | BUTTON_REPEAT) | ||
41 | |||
42 | /* Remote keys */ | ||
43 | #define TREE_RC_NEXT BUTTON_RC_FF | ||
44 | #define TREE_RC_PREV BUTTON_RC_REW | ||
45 | #define TREE_RC_PGUP BUTTON_RC_SOURCE | ||
46 | #define TREE_RC_PGDN BUTTON_RC_BITRATE | ||
47 | #define TREE_RC_EXIT BUTTON_RC_STOP | ||
48 | #define TREE_RC_RUN (BUTTON_RC_MENU | BUTTON_REL) | ||
49 | #define TREE_RC_RUN_PRE BUTTON_RC_MENU | ||
50 | #define TREE_RC_MENU (BUTTON_RC_MODE | BUTTON_REL) | ||
51 | #define TREE_RC_MENU_PRE BUTTON_RC_MODE | ||
52 | #define TREE_RC_WPS (BUTTON_RC_ON | BUTTON_REL) | ||
53 | #define TREE_RC_WPS_PRE BUTTON_RC_ON | ||
54 | #define TREE_RC_CONTEXT (BUTTON_RC_ON | BUTTON_REPEAT) | ||
55 | #define TREE_RC_QUICK (BUTTON_RC_MODE | BUTTON_REPEAT) | ||
56 | |||
57 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
58 | #define TREE_EXIT BUTTON_LEFT | ||
59 | #define TREE_ABORT BUTTON_OFF | ||
60 | #define TREE_ENTER BUTTON_RIGHT | ||
61 | #define TREE_RUN (BUTTON_PLAY | BUTTON_REL) | ||
62 | #define TREE_RUN_PRE BUTTON_PLAY | ||
63 | #define TREE_MENU BUTTON_F1 | ||
64 | #define TREE_OFF BUTTON_OFF | ||
65 | #define TREE_WPS (BUTTON_ON | BUTTON_REL) | ||
66 | #define TREE_WPS_PRE BUTTON_ON | ||
67 | #define TREE_CONTEXT (BUTTON_PLAY | BUTTON_REPEAT) | ||
68 | #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_PLAY) | ||
69 | #define TREE_QUICK BUTTON_F2 | ||
70 | |||
71 | #define TREE_RC_NEXT BUTTON_RC_RIGHT | ||
72 | #define TREE_RC_PREV BUTTON_RC_LEFT | ||
73 | #define TREE_RC_EXIT BUTTON_RC_STOP | ||
74 | #define TREE_RC_RUN BUTTON_RC_PLAY | ||
75 | |||
76 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
77 | #define TREE_EXIT BUTTON_STOP | ||
78 | #define TREE_ABORT BUTTON_STOP | ||
79 | #define TREE_RUN (BUTTON_PLAY | BUTTON_REL) | ||
80 | #define TREE_RUN_PRE BUTTON_PLAY | ||
81 | #define TREE_MENU BUTTON_MENU | ||
82 | #define TREE_WPS (BUTTON_ON | BUTTON_REL) | ||
83 | #define TREE_WPS_PRE BUTTON_ON | ||
84 | #define TREE_CONTEXT (BUTTON_PLAY | BUTTON_REPEAT) | ||
85 | #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_PLAY) | ||
86 | |||
87 | #define TREE_RC_NEXT BUTTON_RC_RIGHT | ||
88 | #define TREE_RC_PREV BUTTON_RC_LEFT | ||
89 | #define TREE_RC_EXIT BUTTON_RC_STOP | ||
90 | #define TREE_RC_RUN BUTTON_RC_PLAY | ||
91 | |||
92 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
93 | #define TREE_EXIT BUTTON_LEFT | ||
94 | #define TREE_ABORT BUTTON_OFF | ||
95 | #define TREE_RUN (BUTTON_RIGHT | BUTTON_REL) | ||
96 | #define TREE_RUN_PRE BUTTON_RIGHT | ||
97 | #define TREE_MENU (BUTTON_MENU | BUTTON_REPEAT) | ||
98 | #define TREE_MENU_PRE BUTTON_MENU | ||
99 | #define TREE_OFF BUTTON_OFF | ||
100 | #define TREE_WPS (BUTTON_MENU | BUTTON_REL) | ||
101 | #define TREE_WPS_PRE BUTTON_MENU | ||
102 | #define TREE_CONTEXT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
103 | |||
104 | #elif CONFIG_KEYPAD == GMINI100_PAD | ||
105 | #define TREE_EXIT BUTTON_LEFT | ||
106 | #define TREE_ENTER BUTTON_RIGHT | ||
107 | #define TREE_RUN (BUTTON_PLAY | BUTTON_REL) | ||
108 | #define TREE_RUN_PRE BUTTON_PLAY | ||
109 | #define TREE_MENU BUTTON_MENU | ||
110 | #define TREE_WPS (BUTTON_ON | BUTTON_REL) | ||
111 | #define TREE_WPS_PRE BUTTON_ON | ||
112 | #define TREE_CONTEXT (BUTTON_PLAY | BUTTON_REPEAT) | ||
113 | #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_PLAY) | ||
114 | |||
115 | #elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) | ||
116 | |||
117 | #define TREE_EXIT BUTTON_LEFT | ||
118 | #define TREE_ABORT BUTTON_LEFT | ||
119 | #define TREE_ENTER BUTTON_RIGHT | ||
120 | #define TREE_RUN (BUTTON_SELECT | BUTTON_REL) | ||
121 | #define TREE_RUN_PRE BUTTON_SELECT | ||
122 | #define TREE_MENU (BUTTON_MENU | BUTTON_REL) | ||
123 | #define TREE_MENU_PRE BUTTON_MENU | ||
124 | #define TREE_WPS (BUTTON_PLAY | BUTTON_REL) | ||
125 | #define TREE_WPS_PRE BUTTON_PLAY | ||
126 | #define TREE_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT) | ||
127 | #define TREE_QUICK (BUTTON_MENU | BUTTON_REPEAT) | ||
128 | |||
129 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | ||
130 | |||
131 | #define TREE_EXIT BUTTON_LEFT | ||
132 | #define TREE_ABORT BUTTON_PLAY | ||
133 | #define TREE_RUN (BUTTON_RIGHT | BUTTON_REL) | ||
134 | #define TREE_RUN_PRE BUTTON_RIGHT | ||
135 | #define TREE_MENU (BUTTON_SELECT | BUTTON_REPEAT) | ||
136 | #define TREE_MENU_PRE BUTTON_SELECT | ||
137 | #define TREE_WPS (BUTTON_SELECT | BUTTON_REL) | ||
138 | #define TREE_WPS_PRE BUTTON_SELECT | ||
139 | #define TREE_CONTEXT (BUTTON_RIGHT | BUTTON_REPEAT) | ||
140 | |||
141 | #elif CONFIG_KEYPAD == IAUDIO_X5_PAD | ||
142 | |||
143 | #define TREE_EXIT BUTTON_LEFT | ||
144 | #define TREE_ABORT BUTTON_REC | ||
145 | #define TREE_ENTER BUTTON_RIGHT | ||
146 | #define TREE_RUN (BUTTON_SELECT | BUTTON_REL) | ||
147 | #define TREE_RUN_PRE BUTTON_SELECT | ||
148 | #define TREE_MENU (BUTTON_REC | BUTTON_REL) | ||
149 | #define TREE_MENU_PRE BUTTON_REC | ||
150 | #define TREE_WPS (BUTTON_PLAY | BUTTON_REL) | ||
151 | #define TREE_WPS_PRE BUTTON_PLAY | ||
152 | #define TREE_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT) | ||
153 | #define TREE_QUICK (BUTTON_REC | BUTTON_REPEAT) | ||
154 | |||
155 | #elif CONFIG_KEYPAD == GIGABEAT_PAD | ||
156 | |||
157 | #define TREE_NEXT BUTTON_DOWN | ||
158 | #define TREE_PREV BUTTON_UP | ||
159 | #define TREE_EXIT BUTTON_LEFT | ||
160 | #define TREE_ABORT BUTTON_A | ||
161 | #define TREE_ENTER BUTTON_RIGHT | ||
162 | #define TREE_RUN (BUTTON_SELECT | BUTTON_REL) | ||
163 | #define TREE_RUN_PRE BUTTON_SELECT | ||
164 | #define TREE_MENU (BUTTON_MENU | BUTTON_REL) | ||
165 | #define TREE_MENU_PRE BUTTON_MENU | ||
166 | #define TREE_WPS (BUTTON_POWER | BUTTON_REL) | ||
167 | #define TREE_WPS_PRE BUTTON_POWER | ||
168 | #define TREE_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT) | ||
169 | |||
170 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | ||
171 | |||
172 | #define TREE_EXIT BUTTON_LEFT | ||
173 | #define TREE_ABORT BUTTON_LEFT | ||
174 | #define TREE_ENTER BUTTON_RIGHT | ||
175 | #define TREE_RUN (BUTTON_PLAY | BUTTON_REL) | ||
176 | #define TREE_RUN_PRE BUTTON_PLAY | ||
177 | #define TREE_MENU (BUTTON_REW | BUTTON_REL) | ||
178 | #define TREE_MENU_PRE BUTTON_REW | ||
179 | #define TREE_WPS (BUTTON_FF | BUTTON_REL) | ||
180 | #define TREE_WPS_PRE BUTTON_FF | ||
181 | #define TREE_CONTEXT (BUTTON_PLAY | BUTTON_SCROLL_UP) | ||
182 | #define TREE_QUICK (BUTTON_PLAY | BUTTON_SCROLL_DOWN) | ||
183 | |||
184 | #endif | ||
185 | |||
186 | struct entry { | 26 | struct entry { |
187 | short attr; /* FAT attributes + file type flags */ | 27 | short attr; /* FAT attributes + file type flags */ |
188 | unsigned long time_write; /* Last write time */ | 28 | unsigned long time_write; /* Last write time */ |
diff --git a/firmware/drivers/lcd-h100-remote.c b/firmware/drivers/lcd-h100-remote.c index 8c1176bad8..6c1a1d4d0d 100644 --- a/firmware/drivers/lcd-h100-remote.c +++ b/firmware/drivers/lcd-h100-remote.c | |||
@@ -519,7 +519,12 @@ static void remote_tick(void) | |||
519 | if (cs_countdown == 0) | 519 | if (cs_countdown == 0) |
520 | CS_HI; | 520 | CS_HI; |
521 | } | 521 | } |
522 | #endif /* !SIMULATOR */ | 522 | #else |
523 | int remote_type(void) | ||
524 | { | ||
525 | return REMOTETYPE_UNPLUGGED; | ||
526 | } | ||
527 | #endif/* !SIMULATOR */ | ||
523 | 528 | ||
524 | /* LCD init */ | 529 | /* LCD init */ |
525 | #ifdef SIMULATOR | 530 | #ifdef SIMULATOR |