summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-08-15 12:27:07 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-08-15 12:27:07 +0000
commit224c0a13ebb5828b9bc06a9c1c23ae17f0ac19f9 (patch)
treebae2154b272f786983cf8e6de28d33f98f327560 /apps/gui
parentc0f8b187706364f5e4bda2ac26750d14454c901d (diff)
downloadrockbox-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.c98
-rw-r--r--apps/gui/gwps-common.c37
-rw-r--r--apps/gui/gwps-common.h3
-rw-r--r--apps/gui/gwps.c316
-rw-r--r--apps/gui/list.c90
-rw-r--r--apps/gui/list.h87
-rw-r--r--apps/gui/quickscreen.c70
-rw-r--r--apps/gui/quickscreen.h36
-rw-r--r--apps/gui/select.c45
-rw-r--r--apps/gui/select.h98
-rw-r--r--apps/gui/yesno.c15
-rw-r--r--apps/gui/yesno.h35
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,