diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2006-08-15 12:27:07 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2006-08-15 12:27:07 +0000 |
| commit | 224c0a13ebb5828b9bc06a9c1c23ae17f0ac19f9 (patch) | |
| tree | bae2154b272f786983cf8e6de28d33f98f327560 /apps/gui | |
| parent | c0f8b187706364f5e4bda2ac26750d14454c901d (diff) | |
| download | rockbox-224c0a13ebb5828b9bc06a9c1c23ae17f0ac19f9.zip rockbox-224c0a13ebb5828b9bc06a9c1c23ae17f0ac19f9.tar.gz rockbox-224c0a13ebb5828b9bc06a9c1c23ae17f0ac19f9.tar.bz2 rockbox-224c0a13ebb5828b9bc06a9c1c23ae17f0ac19f9.tar.xz | |
Finally, the new button action system is here, thanks to Jonathan Gordon. Some button mappings have changed and other things may break. Comments should go to the forum, http://forums.rockbox.org/index.php?topic=5829.0 or the mailing list.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10582 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui')
| -rw-r--r-- | apps/gui/color_picker.c | 98 | ||||
| -rw-r--r-- | apps/gui/gwps-common.c | 37 | ||||
| -rw-r--r-- | apps/gui/gwps-common.h | 3 | ||||
| -rw-r--r-- | apps/gui/gwps.c | 316 | ||||
| -rw-r--r-- | apps/gui/list.c | 90 | ||||
| -rw-r--r-- | apps/gui/list.h | 87 | ||||
| -rw-r--r-- | apps/gui/quickscreen.c | 70 | ||||
| -rw-r--r-- | apps/gui/quickscreen.h | 36 | ||||
| -rw-r--r-- | apps/gui/select.c | 45 | ||||
| -rw-r--r-- | apps/gui/select.h | 98 | ||||
| -rw-r--r-- | apps/gui/yesno.c | 15 | ||||
| -rw-r--r-- | apps/gui/yesno.h | 35 |
12 files changed, 149 insertions, 781 deletions
diff --git a/apps/gui/color_picker.c b/apps/gui/color_picker.c index 4618cb6..3decd30 100644 --- a/apps/gui/color_picker.c +++ b/apps/gui/color_picker.c @@ -29,64 +29,11 @@ #include "scrollbar.h" #include "lang.h" #include "splash.h" +#include "action.h" #define TEXT_MARGIN display->char_width+2 #define SLIDER_START 20 -#if (CONFIG_KEYPAD == IRIVER_H300_PAD) -#define SLIDER_UP BUTTON_UP -#define SLIDER_DOWN BUTTON_DOWN -#define SLIDER_LEFT BUTTON_LEFT -#define SLIDER_RIGHT BUTTON_RIGHT -#define SLIDER_OK BUTTON_ON -#define SLIDER_OK2 BUTTON_SELECT -#define SLIDER_CANCEL BUTTON_OFF - -#define SLIDER_RC_UP BUTTON_RC_REW -#define SLIDER_RC_DOWN BUTTON_RC_FF -#define SLIDER_RC_LEFT BUTTON_RC_SOURCE -#define SLIDER_RC_RIGHT BUTTON_RC_BITRATE -#define SLIDER_RC_OK BUTTON_RC_ON -#define SLIDER_RC_CANCEL BUTTON_RC_STOP - -#elif (CONFIG_KEYPAD == GIGABEAT_PAD) -#define SLIDER_UP BUTTON_UP -#define SLIDER_DOWN BUTTON_DOWN -#define SLIDER_LEFT BUTTON_LEFT -#define SLIDER_RIGHT BUTTON_RIGHT -#define SLIDER_OK BUTTON_POWER -#define SLIDER_CANCEL BUTTON_A - -#elif (CONFIG_KEYPAD == IPOD_4G_PAD) -#define SLIDER_UP BUTTON_LEFT -#define SLIDER_DOWN BUTTON_RIGHT -#define SLIDER_LEFT BUTTON_SCROLL_BACK -#define SLIDER_RIGHT BUTTON_SCROLL_FWD -#define SLIDER_OK BUTTON_SELECT -#define SLIDER_CANCEL BUTTON_MENU - -#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) -#define SLIDER_UP BUTTON_UP -#define SLIDER_DOWN BUTTON_DOWN -#define SLIDER_LEFT BUTTON_LEFT -#define SLIDER_RIGHT BUTTON_RIGHT -#define SLIDER_OK BUTTON_SELECT -#define SLIDER_CANCEL BUTTON_PLAY - -/* FIXME: chosen at will to make it compile */ -#define SLIDER_RC_OK BUTTON_RC_PLAY -#define SLIDER_RC_CANCEL BUTTON_RC_REC - -#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) -#define SLIDER_UP BUTTON_SCROLL_UP -#define SLIDER_DOWN BUTTON_SCROLL_DOWN -#define SLIDER_LEFT BUTTON_LEFT -#define SLIDER_RIGHT BUTTON_RIGHT -#define SLIDER_OK BUTTON_PLAY -#define SLIDER_CANCEL BUTTON_POWER - -#endif - static const int max_val[3] = {LCD_MAX_RED,LCD_MAX_GREEN,LCD_MAX_BLUE}; 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) draw_screen(&screens[i], title, rgb_val, newcolor, slider); } - button = button_get(true); + button = get_action(CONTEXT_SETTINGSGRAPHICAL,TIMEOUT_BLOCK); switch (button) { - case SLIDER_UP: -#ifdef SLIDER_RC_UP - case SLIDER_RC_UP: -#endif + case ACTION_STD_PREV: slider = (slider+2)%3; break; - case SLIDER_DOWN: -#ifdef SLIDER_RC_DOWN - case SLIDER_RC_DOWN: -#endif + case ACTION_STD_NEXT: slider = (slider+1)%3; break; - case SLIDER_RIGHT: - case SLIDER_RIGHT|BUTTON_REPEAT: -#ifdef SLIDER_RC_RIGHT - case SLIDER_RC_RIGHT: - case SLIDER_RC_RIGHT|BUTTON_REPEAT: -#endif + case ACTION_SETTINGS_INC: + case ACTION_SETTINGS_INCREPEAT: if (rgb_val[slider] < max_val[slider]) rgb_val[slider]++; break; - case SLIDER_LEFT: - case SLIDER_LEFT|BUTTON_REPEAT: -#ifdef SLIDER_RC_LEFT - case SLIDER_RC_LEFT: - case SLIDER_RC_LEFT|BUTTON_REPEAT: -#endif + case ACTION_SETTINGS_DEC: + case ACTION_SETTINGS_DECREPEAT: if (rgb_val[slider] > 0) rgb_val[slider]--; break; - case SLIDER_OK: -#ifdef HAVE_REMOTE_LCD - case SLIDER_RC_OK: -#endif -#ifdef SLIDER_OK2 - case SLIDER_OK2: -#endif + case ACTION_STD_OK: if ((banned_color!=-1) && (banned_color == newcolor)) { 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) exit = 1; break; - case SLIDER_CANCEL: -#ifdef HAVE_REMOTE_LCD - case SLIDER_RC_CANCEL: -#endif + case ACTION_STD_CANCEL: exit = 1; break; @@ -306,6 +230,6 @@ bool set_color(struct screen *display,char *title, int* color, int banned_color) } } display->set_foreground(fgcolor); - + action_signalscreenchange(); return false; } diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index d83ac55..72ad4d6 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c @@ -52,6 +52,7 @@ #include "backdrop.h" #endif #include "dsp.h" +#include "action.h" #ifdef HAVE_LCD_CHARCELLS static bool draw_player_progress(struct gui_wps *gwps); @@ -2319,19 +2320,18 @@ bool ffwd_rew(int button) bool usb = false; int i = 0; + if (button == ACTION_NONE) + { + status_set_ffmode(0); + return usb; + } while (!exit) { switch ( button ) { - case WPS_FFWD: -#ifdef WPS_RC_FFWD - case WPS_RC_FFWD: -#endif + case ACTION_WPS_SEEKFWD: direction = 1; - case WPS_REW: -#ifdef WPS_RC_REW - case WPS_RC_REW: -#endif + case ACTION_WPS_SEEKBACK: if (wps_state.ff_rewind) { if (direction == 1) @@ -2415,12 +2415,7 @@ bool ffwd_rew(int button) break; - case WPS_PREV: - case WPS_NEXT: -#ifdef WPS_RC_PREV - case WPS_RC_PREV: - case WPS_RC_NEXT: -#endif + case ACTION_WPS_STOPSEEK: wps_state.id3->elapsed = wps_state.id3->elapsed+ff_rewind_count; audio_ff_rewind(wps_state.id3->elapsed); ff_rewind_count = 0; @@ -2445,9 +2440,9 @@ bool ffwd_rew(int button) break; } if (!exit) - button = button_get(true); + button = get_action(CONTEXT_WPS,TIMEOUT_BLOCK); } - + action_signalscreenchange(); return usb; } @@ -2547,7 +2542,7 @@ bool update(struct gui_wps *gwps) return retcode; } -#ifdef WPS_KEYLOCK + void display_keylock_text(bool locked) { char* s; @@ -2569,11 +2564,3 @@ void display_keylock_text(bool locked) gui_syncsplash(HZ, true, s); } -void waitfor_nokey(void) -{ - /* wait until all keys are released */ - while (button_get(false) != BUTTON_NONE) - yield(); -} -#endif - diff --git a/apps/gui/gwps-common.h b/apps/gui/gwps-common.h index ecda1d4..b4d6df5 100644 --- a/apps/gui/gwps-common.h +++ b/apps/gui/gwps-common.h @@ -35,9 +35,6 @@ bool update(struct gui_wps *gwps); bool ffwd_rew(int button); bool wps_data_preload_tags(struct wps_data *data, char *buf, const char *bmpdir, size_t bmpdirlen); -#ifdef WPS_KEYLOCK void display_keylock_text(bool locked); -void waitfor_nokey(void); -#endif #endif diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c index 1b19c13..bd9bb5e 100644 --- a/apps/gui/gwps.c +++ b/apps/gui/gwps.c @@ -25,7 +25,7 @@ #include "lcd.h" #include "font.h" #include "backlight.h" -#include "button.h" +#include "action.h" #include "kernel.h" #include "tree.h" #include "debug.h" @@ -84,14 +84,11 @@ static void gui_wps_set_margin(struct gui_wps *gwps) long gui_wps_show(void) { - long button = 0, lastbutton = 0; - bool ignore_keyup = true; + long button = 0; bool restore = false; long restoretimer = 0; /* timer to delay screen redraw temporarily */ bool exit = false; bool update_track = false; - unsigned long right_lastclick = 0; - unsigned long left_lastclick = 0; int i; wps_state_init(); @@ -163,8 +160,8 @@ long gui_wps_show(void) long next_big_refresh = current_tick + HZ / 5; button = BUTTON_NONE; while (TIME_BEFORE(current_tick, next_big_refresh)) { - button = button_get(false); - if (button != BUTTON_NONE) { + button = get_action(CONTEXT_WPS,TIMEOUT_NOBLOCK); + if (button != ACTION_NONE) { break; } peak_meter_peek(); @@ -186,35 +183,10 @@ long gui_wps_show(void) /* The peak meter is disabled -> no additional screen updates needed */ else { - button = button_get_w_tmo(HZ/5); + button = get_action(CONTEXT_WPS,HZ/5); } #else - button = button_get_w_tmo(HZ/5); -#endif - - /* discard first event if it's a button release */ - if (button && ignore_keyup) - { - ignore_keyup = false; - /* Negative events are system events */ - if (button >= 0 && button & BUTTON_REL ) - continue; - } - -#ifdef WPS_KEYLOCK - /* ignore non-remote buttons when keys are locked */ - if (keys_locked && - ! ((button < 0) || - (button == BUTTON_NONE) || - ((button & WPS_KEYLOCK) == WPS_KEYLOCK) || - (button & BUTTON_REMOTE) - )) - { - if (!(button & BUTTON_REL)) - display_keylock_text(true); - restore = true; - button = BUTTON_NONE; - } + button = get_action(CONTEXT_WPS,HZ/5); #endif /* Exit if audio has stopped playing. This can happen if using the @@ -222,17 +194,14 @@ long gui_wps_show(void) from F1 */ if (!audio_status()) exit = true; - + switch(button) { -#ifdef WPS_CONTEXT - case WPS_CONTEXT: -#ifdef WPS_RC_CONTEXT - case WPS_RC_CONTEXT: -#endif + case ACTION_WPS_CONTEXT: #ifdef HAVE_LCD_COLOR show_main_backdrop(); #endif + action_signalscreenchange(); onplay(wps_state.id3->path, TREE_ATTR_MPA, CONTEXT_WPS); #ifdef HAVE_LCD_COLOR show_wps_backdrop(); @@ -245,20 +214,8 @@ long gui_wps_show(void) #endif restore = true; break; -#endif -#ifdef WPS_RC_BROWSE - case WPS_RC_BROWSE: -#endif - case WPS_BROWSE: -#ifdef WPS_BROWSE_PRE - if ((lastbutton != WPS_BROWSE_PRE) -#ifdef WPS_RC_BROWSE_PRE - && (lastbutton != WPS_RC_BROWSE_PRE) -#endif - ) - break; -#endif + case ACTION_WPS_BROWSE: #ifdef HAVE_LCD_CHARCELLS status_set_record(false); status_set_audio(false); @@ -270,26 +227,14 @@ long gui_wps_show(void) if (global_settings.browse_current && wps_state.current_track_path[0] != '\0') set_current_file(wps_state.current_track_path); - + action_signalscreenchange(); return 0; break; /* play/pause */ - case WPS_PAUSE: -#ifdef WPS_PAUSE_PRE - if (lastbutton != WPS_PAUSE_PRE) - break; -#endif -#ifdef WPS_RC_PAUSE - case WPS_RC_PAUSE: + case ACTION_WPS_PLAY: if (global_settings.party_mode) break; -#ifdef WPS_RC_PAUSE_PRE - if ((button == WPS_RC_PAUSE) && - (lastbutton != WPS_RC_PAUSE_PRE)) - break; -#endif -#endif if ( wps_state.paused ) { wps_state.paused = false; @@ -313,12 +258,7 @@ long gui_wps_show(void) break; /* volume up */ - case WPS_INCVOL: - case WPS_INCVOL | BUTTON_REPEAT: -#ifdef WPS_RC_INCVOL - case WPS_RC_INCVOL: - case WPS_RC_INCVOL | BUTTON_REPEAT: -#endif + case ACTION_WPS_VOLUP: { global_settings.volume++; bool res = false; @@ -336,12 +276,7 @@ long gui_wps_show(void) break; /* volume down */ - case WPS_DECVOL: - case WPS_DECVOL | BUTTON_REPEAT: -#ifdef WPS_RC_DECVOL - case WPS_RC_DECVOL: - case WPS_RC_DECVOL | BUTTON_REPEAT: -#endif + case ACTION_WPS_VOLDOWN: { global_settings.volume--; setvol(); @@ -357,59 +292,18 @@ long gui_wps_show(void) } } break; - /* fast forward / rewind */ -#ifdef WPS_RC_FFWD - case WPS_RC_FFWD: -#endif - case WPS_FFWD: - if (global_settings.party_mode) - break; - -#ifdef HAVE_DIR_NAVIGATION - if (current_tick - right_lastclick < HZ) - { - audio_next_dir(); - right_lastclick = 0; - break; - } -#endif - -#ifdef WPS_RC_REW - case WPS_RC_REW: -#endif - case WPS_REW: + case ACTION_WPS_SEEKFWD: + case ACTION_WPS_SEEKBACK: if (global_settings.party_mode) break; - -#ifdef HAVE_DIR_NAVIGATION - if (current_tick - left_lastclick < HZ) - { - audio_prev_dir(); - left_lastclick = 0; - break; - } -#endif - ffwd_rew(button); break; /* prev / restart */ - case WPS_PREV: -#ifdef WPS_PREV_PRE - if (lastbutton != WPS_PREV_PRE) - break; -#endif -#ifdef WPS_RC_PREV - case WPS_RC_PREV: + case ACTION_WPS_SKIPPREV: if (global_settings.party_mode) break; -#ifdef WPS_RC_PREV_PRE - if ((button == WPS_RC_PREV) && (lastbutton != WPS_RC_PREV_PRE)) - break; -#endif -#endif - left_lastclick = current_tick; update_track = true; #ifdef AB_REPEAT_ENABLE @@ -450,61 +344,10 @@ long gui_wps_show(void) } break; -#ifdef WPS_NEXT_DIR -#ifdef WPS_RC_NEXT_DIR - case WPS_RC_NEXT_DIR: -#endif - case WPS_NEXT_DIR: - if (global_settings.party_mode) - break; -#if defined(AB_REPEAT_ENABLE) && defined(WPS_AB_SHARE_DIR_BUTTONS) - if (ab_repeat_mode_enabled()) - { - ab_set_B_marker(wps_state.id3->elapsed); - ab_jump_to_A_marker(); - update_track = true; - } - else -#endif - { - audio_next_dir(); - } - break; -#endif -#ifdef WPS_PREV_DIR -#ifdef WPS_RC_PREV_DIR - case WPS_RC_PREV_DIR: -#endif - case WPS_PREV_DIR: - if (global_settings.party_mode) - break; -#if defined(AB_REPEAT_ENABLE) && defined(WPS_AB_SHARE_DIR_BUTTONS) - if (ab_repeat_mode_enabled()) - ab_set_A_marker(wps_state.id3->elapsed); - else -#endif - { - audio_prev_dir(); - } - break; -#endif - /* next */ - case WPS_NEXT: -#ifdef WPS_NEXT_PRE - if (lastbutton != WPS_NEXT_PRE) - break; -#endif -#ifdef WPS_RC_NEXT - case WPS_RC_NEXT: + case ACTION_WPS_SKIPNEXT: if (global_settings.party_mode) break; -#ifdef WPS_RC_NEXT_PRE - if ((button == WPS_RC_NEXT) && (lastbutton != WPS_RC_NEXT_PRE)) - break; -#endif -#endif - right_lastclick = current_tick; update_track = true; #ifdef AB_REPEAT_ENABLE @@ -527,27 +370,44 @@ long gui_wps_show(void) audio_next(); break; - -#ifdef WPS_MENU - /* menu key functions */ - case WPS_MENU: -#ifdef WPS_MENU_PRE - if (lastbutton != WPS_MENU_PRE) + /* next / prev directories */ + case ACTION_WPS_NEXTDIR: + if (global_settings.party_mode) break; +#if defined(AB_REPEAT_ENABLE) && defined(WPS_AB_SHARE_DIR_BUTTONS) + if (ab_repeat_mode_enabled()) + { + ab_set_B_marker(wps_state.id3->elapsed); + ab_jump_to_A_marker(); + update_track = true; + } + else #endif -#ifdef WPS_RC_MENU - case WPS_RC_MENU: -#ifdef WPS_RC_MENU_PRE - if ((button == WPS_RC_MENU) && (lastbutton != WPS_RC_MENU_PRE)) + { + audio_next_dir(); + } + break; + case ACTION_WPS_PREVDIR: + if (global_settings.party_mode) break; +#if defined(AB_REPEAT_ENABLE) && defined(WPS_AB_SHARE_DIR_BUTTONS) + if (ab_repeat_mode_enabled()) + ab_set_A_marker(wps_state.id3->elapsed); + else #endif -#endif + { + audio_prev_dir(); + } + break; + /* menu key functions */ + case ACTION_WPS_MENU: FOR_NB_SCREENS(i) gui_wps[i].display->stop_scroll(); #ifdef HAVE_LCD_COLOR show_main_backdrop(); #endif + action_signalscreenchange(); if (main_menu()) return true; #ifdef HAVE_LCD_COLOR @@ -561,25 +421,17 @@ long gui_wps_show(void) #endif restore = true; break; -#endif /* WPS_MENU */ -#ifdef WPS_KEYLOCK /* key lock */ - case WPS_KEYLOCK: - case WPS_KEYLOCK | BUTTON_REPEAT: - keys_locked = !keys_locked; - display_keylock_text(keys_locked); + case ACTION_STD_KEYLOCK: + action_setsoftwarekeylock(ACTION_STD_KEYLOCK,true); + display_keylock_text(true); restore = true; - waitfor_nokey(); break; -#endif + #ifdef HAVE_QUICKSCREEN - /* play settings */ - case WPS_QUICK: -#ifdef WPS_RC_QUICK - case WPS_RC_QUICK: -#endif + case ACTION_WPS_QUICKSCREEN: #ifdef HAVE_LCD_COLOR show_main_backdrop(); #endif @@ -595,8 +447,8 @@ long gui_wps_show(void) } #endif restore = true; - lastbutton = 0; break; +#endif /* HAVE_QUICKSCREEN */ /* screen settings */ #ifdef BUTTON_F3 @@ -611,17 +463,14 @@ long gui_wps_show(void) { gui_wps_set_margin(&gui_wps[i]); } -#endif +#endif /* BUTTON_F3 */ restore = true; - lastbutton = 0; break; #endif /* pitch screen */ -#if CONFIG_KEYPAD == RECORDER_PAD || CONFIG_KEYPAD == IRIVER_H100_PAD \ - || CONFIG_KEYPAD == IRIVER_H300_PAD - case BUTTON_ON | BUTTON_UP: - case BUTTON_ON | BUTTON_DOWN: +#ifdef HAVE_PITCHSCREEN + case ACTION_WPS_PITCHSCREEN: #ifdef HAVE_LCD_COLOR show_main_backdrop(); #endif @@ -632,17 +481,10 @@ long gui_wps_show(void) #endif restore = true; break; -#endif -#endif +#endif /* HAVE_PITCHSCREEN */ #ifdef AB_REPEAT_ENABLE - -#ifdef WPS_AB_SINGLE - case WPS_AB_SINGLE: -#ifdef WPS_AB_SINGLE_PRE - if (lastbutton != WPS_AB_SINGLE_PRE) - break; -#endif + case ACTION_WPSAB_SINGLE: /* If we are using the menu option to enable ab_repeat mode, don't do anything * when it's disabled */ #if (AB_REPEAT_ENABLE == 1) @@ -661,20 +503,15 @@ long gui_wps_show(void) } ab_set_A_marker(wps_state.id3->elapsed); break; -#endif -#ifdef WPS_AB_SET_A_MARKER /* set A marker for A-B repeat */ - case WPS_AB_SET_A_MARKER: + case ACTION_WPSAB_SETA: if (ab_repeat_mode_enabled()) ab_set_A_marker(wps_state.id3->elapsed); break; -#endif - -#ifdef WPS_AB_SET_B_MARKER /* set B marker for A-B repeat and jump to A */ - case WPS_AB_SET_B_MARKER: + case ACTION_WPSAB_SETB: if (ab_repeat_mode_enabled()) { ab_set_B_marker(wps_state.id3->elapsed); @@ -682,46 +519,24 @@ long gui_wps_show(void) update_track = true; } break; -#endif - -#ifdef WPS_AB_RESET_AB_MARKERS /* reset A&B markers */ - case WPS_AB_RESET_AB_MARKERS: + case ACTION_WPSAB_RESET: if (ab_repeat_mode_enabled()) { ab_reset_markers(); update_track = true; } break; -#endif - #endif /* AB_REPEAT_ENABLE */ /* stop and exit wps */ -#ifdef WPS_EXIT - case WPS_EXIT: -# ifdef WPS_EXIT_PRE - if ((lastbutton & ~BUTTON_REPEAT) != WPS_EXIT_PRE) - break; -# endif - if (global_settings.party_mode) - break; - exit = true; -#ifdef WPS_RC_EXIT - case WPS_RC_EXIT: -#ifdef WPS_RC_EXIT_PRE - if ((lastbutton & ~BUTTON_REPEAT) != WPS_RC_EXIT_PRE) - break; -#endif + case ACTION_WPS_STOP: if (global_settings.party_mode) break; exit = true; -#endif break; -#endif -#ifdef WPS_ID3 - case WPS_ID3: + case ACTION_WPS_ID3SCREEN: #ifdef HAVE_LCD_COLOR show_main_backdrop(); #endif @@ -737,10 +552,10 @@ long gui_wps_show(void) #endif restore = true; break; -#endif - case BUTTON_NONE: /* Timeout */ + case ACTION_NONE: /* Timeout */ update_track = true; + ffwd_rew(button); /* hopefully fix the ffw/rwd bug */ break; case SYS_POWEROFF: @@ -779,6 +594,7 @@ long gui_wps_show(void) } if (exit) { + action_signalscreenchange(); #ifdef HAVE_LCD_CHARCELLS status_set_record(false); status_set_audio(false); @@ -830,8 +646,6 @@ long gui_wps_show(void) gui_wps_refresh(&gui_wps[i], 0, WPS_REFRESH_NON_STATIC); } } - if (button != BUTTON_NONE) - lastbutton = button; } return 0; /* unreachable - just to reduce compiler warnings */ } diff --git a/apps/gui/list.c b/apps/gui/list.c index b17e01e..f48d4d9 100644 --- a/apps/gui/list.c +++ b/apps/gui/list.c @@ -26,6 +26,7 @@ #include "settings.h" #include "kernel.h" +#include "action.h" #include "screen_access.h" #include "list.h" #include "scrollbar.h" @@ -683,106 +684,65 @@ unsigned gui_synclist_do_button(struct gui_synclist * lists, unsigned button) gui_synclist_limit_scroll(lists, true); switch(button) { - case LIST_PREV: -#ifdef LIST_RC_PREV - case LIST_RC_PREV: -#endif + case ACTION_STD_PREV: gui_synclist_limit_scroll(lists, false); - case LIST_PREV | BUTTON_REPEAT: -#ifdef LIST_RC_PREV - case LIST_RC_PREV | BUTTON_REPEAT: -#endif + case ACTION_STD_PREVREPEAT: gui_synclist_select_previous(lists); gui_synclist_draw(lists); yield(); - return LIST_PREV; + return ACTION_STD_PREV; - case LIST_NEXT: -#ifdef LIST_RC_NEXT - case LIST_RC_NEXT: -#endif + case ACTION_STD_NEXT: gui_synclist_limit_scroll(lists, false); - case LIST_NEXT | BUTTON_REPEAT: -#ifdef LIST_RC_NEXT - - case LIST_RC_NEXT | BUTTON_REPEAT: -#endif + case ACTION_STD_NEXTREPEAT: gui_synclist_select_next(lists); gui_synclist_draw(lists); yield(); - return LIST_NEXT; + return ACTION_STD_NEXT; -#ifdef LIST_PGRIGHT - case LIST_PGRIGHT: -#if !(LIST_PGRIGHT & BUTTON_REPEAT) - case LIST_PGRIGHT | BUTTON_REPEAT: -#endif -#ifdef LIST_RC_PGRIGHT - case LIST_RC_PGRIGHT: - case LIST_RC_PGRIGHT | BUTTON_REPEAT: -#endif +#ifdef HAVE_LCD_BITMAP + case ACTION_TREE_PGRIGHT: gui_synclist_scroll_right(lists); gui_synclist_draw(lists); - return LIST_PGRIGHT; -#endif - -#ifdef LIST_PGLEFT - case LIST_PGLEFT: -#if !(LIST_PGLEFT & BUTTON_REPEAT) - case LIST_PGLEFT | BUTTON_REPEAT: -#endif -#ifdef LIST_RC_PGLEFT - case LIST_RC_PGLEFT: - case LIST_RC_PGLEFT | BUTTON_REPEAT: -#endif + return ACTION_TREE_PGRIGHT; + case ACTION_TREE_PGLEFT: gui_synclist_scroll_left(lists); gui_synclist_draw(lists); - return LIST_PGLEFT; + return ACTION_TREE_PGLEFT; #endif /* for pgup / pgdown, we are obliged to have a different behaviour depending on the screen * for which the user pressed the key since for example, remote and main screen doesn't * have the same number of lines*/ -#ifdef LIST_PGUP - case LIST_PGUP: + case ACTION_LISTTREE_PGUP: gui_synclist_limit_scroll(lists, false); - case LIST_PGUP | BUTTON_REPEAT: gui_synclist_select_previous_page(lists, SCREEN_MAIN); gui_synclist_draw(lists); yield(); - return LIST_NEXT; -#endif - -#ifdef LIST_RC_PGUP - case LIST_RC_PGUP: + return ACTION_STD_NEXT; + + case ACTION_LISTTREE_PGDOWN: gui_synclist_limit_scroll(lists, false); - case LIST_RC_PGUP | BUTTON_REPEAT: - gui_synclist_select_previous_page(lists, SCREEN_REMOTE); + gui_synclist_select_next_page(lists, SCREEN_MAIN); gui_synclist_draw(lists); yield(); - return LIST_NEXT; -#endif - -#ifdef LIST_PGDN - case LIST_PGDN: + return ACTION_STD_PREV; +#if (REMOTE_BUTTON != 0 ) + case ACTION_LISTTREE_RC_PGUP: gui_synclist_limit_scroll(lists, false); - case LIST_PGDN | BUTTON_REPEAT: - gui_synclist_select_next_page(lists, SCREEN_MAIN); + gui_synclist_select_previous_page(lists, SCREEN_REMOTE); gui_synclist_draw(lists); yield(); - return LIST_PREV; -#endif - -#ifdef LIST_RC_PGDN - case LIST_RC_PGDN: + return ACTION_STD_NEXT; + + case ACTION_LISTTREE_RC_PGDOWN: gui_synclist_limit_scroll(lists, false); - case LIST_RC_PGDN | BUTTON_REPEAT: gui_synclist_select_next_page(lists, SCREEN_REMOTE); gui_synclist_draw(lists); yield(); - return LIST_PREV; + return ACTION_STD_PREV; #endif } return 0; diff --git a/apps/gui/list.h b/apps/gui/list.h index 8d3ac9a..2a80298 100644 --- a/apps/gui/list.h +++ b/apps/gui/list.h @@ -26,89 +26,6 @@ #define SCROLLBAR_WIDTH 6 -/* Key assignement */ -#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ - (CONFIG_KEYPAD == IRIVER_H300_PAD) -#define LIST_NEXT BUTTON_DOWN -#define LIST_PREV BUTTON_UP -#define LIST_PGUP (BUTTON_ON | BUTTON_UP) -#define LIST_PGDN (BUTTON_ON | BUTTON_DOWN) -#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) -#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) - -#ifdef CONFIG_REMOTE_KEYPAD -#define LIST_RC_NEXT BUTTON_RC_FF -#define LIST_RC_PREV BUTTON_RC_REW -#define LIST_RC_PGUP BUTTON_RC_SOURCE -#define LIST_RC_PGDN BUTTON_RC_BITRATE -#define LIST_RC_PGRIGHT (BUTTON_RC_VOL_UP) -#define LIST_RC_PGLEFT (BUTTON_RC_VOL_DOWN) -#endif /* CONFIG_REMOTE_KEYPAD */ - -#elif CONFIG_KEYPAD == RECORDER_PAD -#define LIST_NEXT BUTTON_DOWN -#define LIST_PREV BUTTON_UP -#define LIST_PGUP (BUTTON_ON | BUTTON_UP) -#define LIST_PGDN (BUTTON_ON | BUTTON_DOWN) -#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) -#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) - -#define LIST_RC_NEXT BUTTON_RC_RIGHT -#define LIST_RC_PREV BUTTON_RC_LEFT - -#elif CONFIG_KEYPAD == PLAYER_PAD -#define LIST_NEXT BUTTON_RIGHT -#define LIST_PREV BUTTON_LEFT - -#define LIST_RC_NEXT BUTTON_RC_RIGHT -#define LIST_RC_PREV BUTTON_RC_LEFT - -#elif CONFIG_KEYPAD == ONDIO_PAD -#define LIST_NEXT BUTTON_DOWN -#define LIST_PREV BUTTON_UP -#define LIST_PGRIGHT (BUTTON_MENU | BUTTON_RIGHT) -#define LIST_PGLEFT (BUTTON_MENU | BUTTON_LEFT) - -#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) -#define LIST_NEXT BUTTON_SCROLL_FWD -#define LIST_PREV BUTTON_SCROLL_BACK -#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) -#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) - -#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD -#define LIST_NEXT BUTTON_DOWN -#define LIST_PREV BUTTON_UP -//#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_) -//#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_) Todo: define those - -#elif CONFIG_KEYPAD == GMINI100_PAD -#define LIST_NEXT BUTTON_DOWN -#define LIST_PREV BUTTON_UP -#define LIST_PGUP (BUTTON_ON | BUTTON_UP) -#define LIST_PGDN (BUTTON_ON | BUTTON_DOWN) -#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) -#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) - -#elif CONFIG_KEYPAD == IAUDIO_X5_PAD -#define LIST_NEXT BUTTON_DOWN -#define LIST_PREV BUTTON_UP -#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) -#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) - -#elif CONFIG_KEYPAD == GIGABEAT_PAD -#define LIST_NEXT BUTTON_DOWN -#define LIST_PREV BUTTON_UP -#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) -#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) - -#elif CONFIG_KEYPAD == IRIVER_H10_PAD -#define LIST_NEXT BUTTON_SCROLL_DOWN -#define LIST_PREV BUTTON_SCROLL_UP -#define LIST_PGRIGHT (BUTTON_RIGHT | BUTTON_REPEAT) -#define LIST_PGLEFT (BUTTON_LEFT | BUTTON_REPEAT) - -#endif - /* * The gui_list is based on callback functions, if you want the list * to display something you have to provide it a function that @@ -390,8 +307,8 @@ void gui_synclist_scroll_left(struct gui_synclist * lists); * - lists : the synchronized lists * - button : the keycode of a pressed button * returned value : - * - LIST_NEXT when moving forward (next item or pgup) - * - LIST_PREV when moving backward (previous item or pgdown) + * - ACTION_STD_NEXT when moving forward (next item or pgup) + * - ACTION_STD_PREV when moving backward (previous item or pgdown) */ extern unsigned gui_synclist_do_button(struct gui_synclist * lists, unsigned button); diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index e998ee6..9465a2e 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c @@ -29,6 +29,7 @@ #include "kernel.h" #include "misc.h" #include "statusbar.h" +#include "action.h" void gui_quickscreen_init(struct gui_quickscreen * qs, struct option_select *left_option, @@ -128,59 +129,28 @@ bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button) switch(button) { - case QUICKSCREEN_LEFT : - case QUICKSCREEN_LEFT | BUTTON_REPEAT : -#ifdef QUICKSCREEN_RC_LEFT - case QUICKSCREEN_RC_LEFT : - case QUICKSCREEN_RC_LEFT | BUTTON_REPEAT : -#endif + case ACTION_QS_LEFT: option_select_next(qs->left_option); return(true); - case QUICKSCREEN_BOTTOM : - case QUICKSCREEN_BOTTOM | BUTTON_REPEAT : -#ifdef QUICKSCREEN_RC_BOTTOM - case QUICKSCREEN_RC_BOTTOM : - case QUICKSCREEN_RC_BOTTOM | BUTTON_REPEAT : -#endif + case ACTION_QS_DOWN: option_select_next(qs->bottom_option); return(true); - case QUICKSCREEN_RIGHT : - case QUICKSCREEN_RIGHT | BUTTON_REPEAT : -#ifdef QUICKSCREEN_RC_RIGHT - case QUICKSCREEN_RC_RIGHT : - case QUICKSCREEN_RC_RIGHT | BUTTON_REPEAT : -#endif + case ACTION_QS_RIGHT: option_select_next(qs->right_option); return(true); -#ifdef QUICKSCREEN_BOTTOM_INV - case QUICKSCREEN_BOTTOM_INV : - case QUICKSCREEN_BOTTOM_INV | BUTTON_REPEAT : -#endif -#ifdef QUICKSCREEN_RC_BOTTOM_INV - case QUICKSCREEN_RC_BOTTOM_INV : - case QUICKSCREEN_RC_BOTTOM_INV | BUTTON_REPEAT : -#endif -#if defined(QUICKSCREEN_RC_BOTTOM_INV) || defined(QUICKSCREEN_BOTTOM_INV) + case ACTION_QS_DOWNINV: option_select_prev(qs->bottom_option); return(true); -#endif } return(false); } -#ifdef BUTTON_REMOTE -#define uncombine_button(key_read, combined_button) \ - key_read & ~(combined_button & ~BUTTON_REMOTE) -#else -#define uncombine_button(key_read, combined_button) \ - key_read & ~combined_button -#endif bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) { - int raw_key, button; + int button; /* To quit we need either : * - a second press on the button that made us enter * - an action taken while pressing the enter button, @@ -188,9 +158,9 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) bool can_quit=false; gui_syncquickscreen_draw(qs); gui_syncstatusbar_draw(&statusbars, true); + action_signalscreenchange(); while (true) { - raw_key = button_get(true); - button=uncombine_button(raw_key, button_enter); + button = get_action(CONTEXT_QUICKSCREEN,TIMEOUT_BLOCK); if(default_event_handler(button) == SYS_USB_CONNECTED) return(true); if(gui_quickscreen_do_button(qs, button)) @@ -200,23 +170,19 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) qs->callback(qs); gui_syncquickscreen_draw(qs); } - else if(raw_key==button_enter) + else if(button==button_enter) can_quit=true; - if(raw_key==(button_enter | BUTTON_REL) && can_quit) - return(false); -#ifdef QUICKSCREEN_QUIT - if(raw_key==QUICKSCREEN_QUIT -#ifdef QUICKSCREEN_QUIT2 - || raw_key==QUICKSCREEN_QUIT2 -#endif -#if QUICKSCREEN_RC_QUIT - || raw_key==QUICKSCREEN_RC_QUIT -#endif - ) - return(false); -#endif /* QUICKSCREEN_QUIT */ + + if((button == button_enter) && can_quit) + break; + + if(button==ACTION_STD_CANCEL) + break; + gui_syncstatusbar_draw(&statusbars, false); } + action_signalscreenchange(); + return false; } #endif /* HAVE_QUICKSCREEN */ diff --git a/apps/gui/quickscreen.h b/apps/gui/quickscreen.h index 63214f3..ebc7cef 100644 --- a/apps/gui/quickscreen.h +++ b/apps/gui/quickscreen.h @@ -27,42 +27,6 @@ #include "option_select.h" #include "screen_access.h" -#define QUICKSCREEN_LEFT BUTTON_LEFT -#define QUICKSCREEN_RIGHT BUTTON_RIGHT - -#if (CONFIG_KEYPAD == RECORDER_PAD) -#define QUICKSCREEN_BOTTOM BUTTON_DOWN -#define QUICKSCREEN_BOTTOM_INV BUTTON_UP -#define QUICKSCREEN_QUIT BUTTON_F3 -#define QUICKSCREEN_QUIT2 BUTTON_OFF -#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) -#define QUICKSCREEN_BOTTOM BUTTON_DOWN -#define QUICKSCREEN_BOTTOM_INV BUTTON_UP -#define QUICKSCREEN_QUIT BUTTON_MODE -#define QUICKSCREEN_QUIT2 BUTTON_OFF -#define QUICKSCREEN_RC_QUIT BUTTON_RC_MODE -#ifdef CONFIG_REMOTE_KEYPAD -#define QUICKSCREEN_RC_LEFT BUTTON_RC_REW -#define QUICKSCREEN_RC_BOTTOM BUTTON_RC_VOL_DOWN -#define QUICKSCREEN_RC_BOTTOM_INV BUTTON_RC_VOL_UP -#define QUICKSCREEN_RC_RIGHT BUTTON_RC_FF -#endif -#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) -#define QUICKSCREEN_BOTTOM BUTTON_PLAY -#define QUICKSCREEN_QUIT BUTTON_MENU -#define QUICKSCREEN_QUIT2 BUTTON_SELECT -#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) -#define QUICKSCREEN_BOTTOM BUTTON_DOWN -#define QUICKSCREEN_BOTTOM_INV BUTTON_UP -#define QUICKSCREEN_QUIT BUTTON_REC -#define QUICKSCREEN_QUIT2 BUTTON_POWER -#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) -#define QUICKSCREEN_BOTTOM BUTTON_SCROLL_DOWN -#define QUICKSCREEN_BOTTOM_INV BUTTON_SCROLL_UP -#define QUICKSCREEN_QUIT BUTTON_REW -#define QUICKSCREEN_QUIT2 BUTTON_POWER -#endif - struct gui_quickscreen; /* * Callback function called each time the quickscreen gets modified diff --git a/apps/gui/select.c b/apps/gui/select.c index 89a0478..12a93fc 100644 --- a/apps/gui/select.c +++ b/apps/gui/select.c @@ -23,6 +23,7 @@ #include "textarea.h" #include "screen_access.h" #include "kernel.h" +#include "action.h" void gui_select_init_numeric(struct gui_select * select, @@ -79,56 +80,28 @@ bool gui_syncselect_do_button(struct gui_select * select, int button) { switch(button) { - case SELECT_INC | BUTTON_REPEAT : -#ifdef SELECT_RC_INC - case SELECT_RC_INC | BUTTON_REPEAT : -#endif + case ACTION_SETTINGS_INCREPEAT: select->options.limit_loop = true; - case SELECT_INC : -#ifdef SELECT_RC_INC - case SELECT_RC_INC : -#endif + case ACTION_SETTINGS_INC: option_select_next(&select->options); return(true); - case SELECT_DEC | BUTTON_REPEAT : -#ifdef SELECT_RC_DEC - case SELECT_RC_DEC | BUTTON_REPEAT : -#endif + case ACTION_SETTINGS_DECREPEAT: select->options.limit_loop = true; - case SELECT_DEC : -#ifdef SELECT_RC_DEC - case SELECT_RC_DEC : -#endif + case ACTION_SETTINGS_DEC: option_select_prev(&select->options); return(true); - case SELECT_OK : -#ifdef SELECT_RC_OK - case SELECT_RC_OK : -#endif -#ifdef SELECT_RC_OK2 - case SELECT_RC_OK2 : -#endif -#ifdef SELECT_OK2 - case SELECT_OK2 : -#endif + case ACTION_STD_OK: + case ACTION_STD_PREV: /*NOTE: this is in CONTEXT_SETTINGS ! */ select->validated=true; return(false); - case SELECT_CANCEL : -#ifdef SELECT_CANCEL2 - case SELECT_CANCEL2 : -#endif -#ifdef SELECT_RC_CANCEL - case SELECT_RC_CANCEL : -#endif -#ifdef SELECT_RC_CANCEL2 - case SELECT_RC_CANCEL2 : -#endif + case ACTION_STD_CANCEL: select->canceled = true; gui_syncselect_draw(select); sleep(HZ/2); + action_signalscreenchange(); return(false); } return(false); diff --git a/apps/gui/select.h b/apps/gui/select.h index 9270214..2556a68 100644 --- a/apps/gui/select.h +++ b/apps/gui/select.h @@ -23,104 +23,6 @@ #include "settings.h" #include "option_select.h" -#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ - (CONFIG_KEYPAD == IRIVER_H300_PAD) -#define SELECT_INC BUTTON_UP -#define SELECT_DEC BUTTON_DOWN -#define SELECT_OK BUTTON_SELECT -#define SELECT_OK2 BUTTON_LEFT -#define SELECT_CANCEL BUTTON_OFF -#define SELECT_CANCEL2 BUTTON_MODE - -#define SELECT_RC_INC BUTTON_RC_FF -#define SELECT_RC_DEC BUTTON_RC_REW -#define SELECT_RC_OK BUTTON_RC_ON -#define SELECT_RC_OK2 BUTTON_RC_MENU -#define SELECT_RC_CANCEL BUTTON_RC_STOP -#define SELECT_RC_CANCEL2 BUTTON_RC_MODE - -#elif CONFIG_KEYPAD == RECORDER_PAD -#define SELECT_INC BUTTON_UP -#define SELECT_DEC BUTTON_DOWN -#define SELECT_OK BUTTON_PLAY -#define SELECT_OK2 BUTTON_LEFT -#define SELECT_CANCEL BUTTON_OFF -#define SELECT_CANCEL2 BUTTON_F1 - -#define SELECT_RC_INC BUTTON_RC_RIGHT -#define SELECT_RC_DEC BUTTON_RC_LEFT -#define SELECT_RC_OK BUTTON_RC_PLAY -#define SELECT_RC_CANCEL BUTTON_RC_STOP - -#elif CONFIG_KEYPAD == PLAYER_PAD -#define SELECT_INC BUTTON_RIGHT -#define SELECT_DEC BUTTON_LEFT -#define SELECT_OK BUTTON_PLAY -#define SELECT_CANCEL BUTTON_STOP -#define SELECT_CANCEL2 BUTTON_MENU - -#define SELECT_RC_INC BUTTON_RC_RIGHT -#define SELECT_RC_DEC BUTTON_RC_LEFT -#define SELECT_RC_OK BUTTON_RC_PLAY -#define SELECT_RC_CANCEL BUTTON_RC_STOP - -#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) -#define SELECT_INC BUTTON_SCROLL_FWD -#define SELECT_DEC BUTTON_SCROLL_BACK -#define SELECT_OK BUTTON_SELECT -#define SELECT_OK2 BUTTON_LEFT -#define SELECT_CANCEL BUTTON_MENU - -#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD -#define SELECT_INC BUTTON_UP -#define SELECT_DEC BUTTON_DOWN -#define SELECT_OK BUTTON_RIGHT -#define SELECT_OK2 BUTTON_LEFT -#define SELECT_CANCEL BUTTON_PLAY -#define SELECT_CANCEL2 BUTTON_MODE - -#elif CONFIG_KEYPAD == ONDIO_PAD -#define SELECT_INC BUTTON_UP -#define SELECT_DEC BUTTON_DOWN -#define SELECT_OK BUTTON_RIGHT -#define SELECT_OK2 BUTTON_LEFT -#define SELECT_CANCEL BUTTON_MENU -#define SELECT_CANCEL2 BUTTON_OFF - -#elif CONFIG_KEYPAD == GMINI100_PAD -#define SELECT_INC BUTTON_UP -#define SELECT_DEC BUTTON_DOWN -#define SELECT_OK BUTTON_PLAY -#define SELECT_OK2 BUTTON_LEFT -#define SELECT_CANCEL BUTTON_OFF -#define SELECT_CANCEL2 BUTTON_MENU - -#elif CONFIG_KEYPAD == IAUDIO_X5_PAD -#define SELECT_INC BUTTON_UP -#define SELECT_DEC BUTTON_DOWN -#define SELECT_OK BUTTON_SELECT -#define SELECT_OK2 BUTTON_LEFT -#define SELECT_CANCEL BUTTON_PLAY -#define SELECT_CANCEL2 BUTTON_POWER - -#elif CONFIG_KEYPAD == GIGABEAT_PAD -#define SELECT_INC BUTTON_UP -#define SELECT_DEC BUTTON_DOWN -#define SELECT_OK BUTTON_MENU -#define SELECT_OK2 BUTTON_LEFT -#define SELECT_CANCEL BUTTON_A -#define SELECT_CANCEL2 BUTTON_POWER - -#elif CONFIG_KEYPAD == IRIVER_H10_PAD -#define SELECT_INC BUTTON_SCROLL_UP -#define SELECT_DEC BUTTON_SCROLL_DOWN -#define SELECT_OK BUTTON_PLAY -#define SELECT_OK2 BUTTON_RIGHT -#define SELECT_CANCEL BUTTON_POWER -#define SELECT_CANCEL2 BUTTON_LEFT - -#endif - struct gui_select { bool canceled; diff --git a/apps/gui/yesno.c b/apps/gui/yesno.c index 225f6d3..d567cf9 100644 --- a/apps/gui/yesno.c +++ b/apps/gui/yesno.c @@ -3,6 +3,7 @@ #include "kernel.h" #include "misc.h" #include "lang.h" +#include "action.h" void gui_yesno_init(struct gui_yesno * yn, struct text_message * main_message, @@ -54,7 +55,7 @@ bool gui_yesno_draw_result(struct gui_yesno * yn, enum yesno_res result) gui_textarea_put_message(yn->display, message, 0); return(true); } - +#include "debug.h" enum yesno_res gui_syncyesno_run(struct text_message * main_message, struct text_message * yes_message, struct text_message * no_message) @@ -72,23 +73,21 @@ enum yesno_res gui_syncyesno_run(struct text_message * main_message, } while (result==-1) { - button = button_get(true); + button = get_action(CONTEXT_YESNOSCREEN,TIMEOUT_BLOCK); + DEBUGF("button=%x\n",button); switch (button) { - case YESNO_OK: -#ifdef YESNO_RC_OK - case YESNO_RC_OK: -#endif + case ACTION_YESNO_ACCEPT: result=YESNO_YES; break; default: if(default_event_handler(button) == SYS_USB_CONNECTED) return(YESNO_USB); - if(!(button & BUTTON_REL)) - result=YESNO_NO; + result = YESNO_NO; } } + action_signalscreenchange(); FOR_NB_SCREENS(i) result_displayed=gui_yesno_draw_result(&(yn[i]), result); if(result_displayed) diff --git a/apps/gui/yesno.h b/apps/gui/yesno.h index 71658a5..7b60cab 100644 --- a/apps/gui/yesno.h +++ b/apps/gui/yesno.h @@ -4,41 +4,6 @@ #include "screen_access.h" #include "textarea.h" -#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ - (CONFIG_KEYPAD == IRIVER_H300_PAD) -#define YESNO_OK BUTTON_SELECT -#define YESNO_RC_OK BUTTON_RC_MENU - -#elif CONFIG_KEYPAD == RECORDER_PAD -#define YESNO_OK BUTTON_PLAY -#define YESNO_RC_OK BUTTON_RC_PLAY - -#elif CONFIG_KEYPAD == PLAYER_PAD -#define YESNO_OK BUTTON_PLAY -#define YESNO_RC_OK BUTTON_RC_PLAY - -#elif CONFIG_KEYPAD == ONDIO_PAD -#define YESNO_OK BUTTON_RIGHT - -#elif CONFIG_KEYPAD == GMINI100_PAD -#define YESNO_OK BUTTON_PLAY - -#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) -#define YESNO_OK BUTTON_PLAY - -#elif (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) -#define YESNO_OK BUTTON_RIGHT - -#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) -#define YESNO_OK BUTTON_RIGHT - -#elif (CONFIG_KEYPAD == GIGABEAT_PAD) -#define YESNO_OK BUTTON_RIGHT - -#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) -#define YESNO_OK BUTTON_RIGHT - -#endif enum yesno_res { YESNO_YES, |