From 37c3d8b6106a50d8dbfb790807be0ba82b2cd58d Mon Sep 17 00:00:00 2001 From: Christi Scarborough Date: Sun, 26 Jun 2005 20:16:26 +0000 Subject: [PATCH] Quick menu for iRiver: A long press on the PLAY key in the browser or the WPS will take you into the quick menu screen where certain common settings can be adjusted. Works just the same as F2 menu on Archos. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6880 a1c6a512-1295-4272-9138-f99709370657 --- apps/screens.c | 37 +++++++++++++++++++++++++------------ apps/screens.h | 7 +++++++ apps/tree.c | 9 ++++++--- apps/tree.h | 2 ++ apps/wps.c | 11 ++++++++--- apps/wps.h | 5 ++++- firmware/export/button.h | 2 ++ 7 files changed, 54 insertions(+), 19 deletions(-) diff --git a/apps/screens.c b/apps/screens.c index 81366141bb..6849384cda 100644 --- a/apps/screens.c +++ b/apps/screens.c @@ -513,7 +513,9 @@ int pitch_screen(void) else return 0; } +#endif +#if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IRIVER_H100_PAD) bool quick_screen(int context, int button) { bool exit = false; @@ -535,7 +537,12 @@ bool quick_screen(int context, int button) switch(button) { - case BUTTON_F2: +#if CONFIG_KEYPAD == RECORDER_PAD + case SCREENS_QUICK: +#endif +#if CONFIG_KEYPAD == IRIVER_H100_PAD + case SCREENS_QUICK | BUTTON_REPEAT: +#endif /* Shuffle mode */ lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_SHUFFLE)); lcd_putsxy(0, LCD_HEIGHT/2 - h, str(LANG_F2_MODE)); @@ -596,6 +603,7 @@ bool quick_screen(int context, int button) lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F2_MODE)); lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, ptr); break; +#ifdef BUTTON_F3 case BUTTON_F3: /* Scrollbar */ lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_F3_SCROLL)); @@ -620,6 +628,7 @@ bool quick_screen(int context, int button) lcd_getstringsize(ptr,&w,&h); lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr); break; +#endif } lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], @@ -641,8 +650,8 @@ bool quick_screen(int context, int button) key = button | key; switch (key) { - case BUTTON_F2 | BUTTON_LEFT: - case BUTTON_F2 | BUTTON_LEFT | BUTTON_REPEAT: + case SCREENS_QUICK | BUTTON_LEFT: + case SCREENS_QUICK | BUTTON_LEFT | BUTTON_REPEAT: global_settings.playlist_shuffle = !global_settings.playlist_shuffle; @@ -656,22 +665,23 @@ bool quick_screen(int context, int button) used = true; break; - case BUTTON_F2 | BUTTON_DOWN: - case BUTTON_F2 | BUTTON_DOWN | BUTTON_REPEAT: + case SCREENS_QUICK | BUTTON_DOWN: + case SCREENS_QUICK | BUTTON_DOWN | BUTTON_REPEAT: global_settings.dirfilter++; if ( global_settings.dirfilter >= NUM_FILTER_MODES ) global_settings.dirfilter = 0; used = true; break; - case BUTTON_F2 | BUTTON_RIGHT: - case BUTTON_F2 | BUTTON_RIGHT | BUTTON_REPEAT: + case SCREENS_QUICK | BUTTON_RIGHT: + case SCREENS_QUICK | BUTTON_RIGHT | BUTTON_REPEAT: global_settings.repeat_mode++; if ( global_settings.repeat_mode >= NUM_REPEAT_MODES ) global_settings.repeat_mode = 0; used = true; break; +#ifdef BUTTON_F3 case BUTTON_F3 | BUTTON_LEFT: case BUTTON_F3 | BUTTON_LEFT | BUTTON_REPEAT: global_settings.scrollbar = !global_settings.scrollbar; @@ -679,15 +689,15 @@ bool quick_screen(int context, int button) break; case BUTTON_F3 | BUTTON_RIGHT: - case BUTTON_F3 | BUTTON_RIGHT | BUTTON_REPEAT: +// case BUTTON_F3 | BUTTON_RIGHT | BUTTON_REPEAT: global_settings.statusbar = !global_settings.statusbar; used = true; break; case BUTTON_F3 | BUTTON_DOWN: - case BUTTON_F3 | BUTTON_DOWN | BUTTON_REPEAT: +// case BUTTON_F3 | BUTTON_DOWN | BUTTON_REPEAT: case BUTTON_F3 | BUTTON_UP: - case BUTTON_F3 | BUTTON_UP | BUTTON_REPEAT: +// case BUTTON_F3 | BUTTON_UP | BUTTON_REPEAT: global_settings.flip_display = !global_settings.flip_display; button_set_flip(global_settings.flip_display); lcd_set_flip(global_settings.flip_display); @@ -695,7 +705,8 @@ bool quick_screen(int context, int button) break; case BUTTON_F3 | BUTTON_REL: - case BUTTON_F2 | BUTTON_REL: +#endif + case SCREENS_QUICK | BUTTON_REL: if( used ) exit = true; @@ -719,12 +730,13 @@ bool quick_screen(int context, int button) switch( button ) { - case BUTTON_F2: + case SCREENS_QUICK: if ( oldrepeat != global_settings.repeat_mode ) audio_flush_and_reload_tracks(); break; +#ifdef BUTTON_F3 case BUTTON_F3: if (global_settings.statusbar) @@ -733,6 +745,7 @@ bool quick_screen(int context, int button) lcd_setmargins(0, 0); break; +#endif } lcd_setfont(FONT_UI); diff --git a/apps/screens.h b/apps/screens.h index 8940bb590c..88eb3bdfec 100644 --- a/apps/screens.h +++ b/apps/screens.h @@ -33,6 +33,13 @@ int mmc_remove_request(void); #if CONFIG_KEYPAD == RECORDER_PAD int pitch_screen(void); bool quick_screen(const int, const int); +#define SCREENS_QUICK BUTTON_F2 +#endif + +#if CONFIG_KEYPAD == IRIVER_H100_PAD +bool quick_screen(const int, const int); +#define SCREENS_QUICK BUTTON_ON + /* Long press already detected so not needed here */ #endif void splash(int ticks, /* how long */ diff --git a/apps/tree.c b/apps/tree.c index e6b79889c6..be4edf7065 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -1066,12 +1066,12 @@ static bool dirbrowse(void) } break; -#ifdef BUTTON_F2 - case BUTTON_F2: +#ifdef TREE_QUICK + case TREE_QUICK: /* don't enter f2 from plugin browser */ if (*tc.dirfilter < NUM_FILTER_MODES) { - if (quick_screen(curr_context, BUTTON_F2)) + if (quick_screen(curr_context, TREE_QUICK)) reload_dir = true; restore = true; @@ -1079,6 +1079,9 @@ static bool dirbrowse(void) break; } +#endif + +#ifdef BUTTON_F3 case BUTTON_F3: /* don't enter f3 from plugin browser */ if (*tc.dirfilter < NUM_FILTER_MODES) diff --git a/apps/tree.h b/apps/tree.h index cf578fd0bb..2c973cc358 100644 --- a/apps/tree.h +++ b/apps/tree.h @@ -39,6 +39,7 @@ #define TREE_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT) #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_SELECT) #define TREE_POWER_BTN BUTTON_ON +#define TREE_QUICK (BUTTON_ON | BUTTON_REPEAT) #define TREE_RC_NEXT BUTTON_RC_FF #define TREE_RC_PREV BUTTON_RC_REW @@ -66,6 +67,7 @@ #define TREE_CONTEXT (BUTTON_PLAY | BUTTON_REPEAT) #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_PLAY) #define TREE_POWER_BTN BUTTON_ON +#define TREE_QUICK BUTTON_F2 #define TREE_RC_NEXT BUTTON_RC_RIGHT #define TREE_RC_PREV BUTTON_RC_LEFT diff --git a/apps/wps.c b/apps/wps.c index a685d58ba0..f05109872d 100644 --- a/apps/wps.c +++ b/apps/wps.c @@ -655,27 +655,32 @@ long wps_show(void) break; #endif -#if CONFIG_KEYPAD == RECORDER_PAD +#if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IRIVER_H100_PAD) /* play settings */ - case BUTTON_F2: - if (quick_screen(CONTEXT_WPS, BUTTON_F2)) + case WPS_QUICK: + if (quick_screen(CONTEXT_WPS, WPS_QUICK)) return SYS_USB_CONNECTED; restore = true; + lastbutton = 0; break; /* screen settings */ +#ifdef BUTTON_F3 case BUTTON_F3: if (quick_screen(CONTEXT_WPS, BUTTON_F3)) return SYS_USB_CONNECTED; restore = true; break; +#endif /* pitch screen */ +#if CONFIG_KEYPAD == RECORDER_PAD case BUTTON_ON | BUTTON_REPEAT: if (2 == pitch_screen()) return SYS_USB_CONNECTED; restore = true; break; +#endif #endif /* stop and exit wps */ diff --git a/apps/wps.h b/apps/wps.h index 4f869794b2..94a6b04859 100644 --- a/apps/wps.h +++ b/apps/wps.h @@ -31,7 +31,8 @@ #define WPS_REW (BUTTON_LEFT | BUTTON_REPEAT) #define WPS_INCVOL BUTTON_UP #define WPS_DECVOL BUTTON_DOWN -#define WPS_PAUSE BUTTON_ON +#define WPS_PAUSE (BUTTON_ON | BUTTON_REL) +#define WPS_PAUSE_PRE BUTTON_ON #define WPS_MENU (BUTTON_MODE | BUTTON_REL) #define WPS_MENU_PRE BUTTON_MODE #define WPS_BROWSE (BUTTON_SELECT | BUTTON_REL) @@ -39,6 +40,7 @@ #define WPS_EXIT BUTTON_OFF #define WPS_ID3 (BUTTON_MODE | BUTTON_ON) #define WPS_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT) +#define WPS_QUICK (BUTTON_ON | BUTTON_REPEAT) #define WPS_RC_NEXT BUTTON_RC_FF #define WPS_RC_PREV BUTTON_RC_REW @@ -70,6 +72,7 @@ #define WPS_KEYLOCK (BUTTON_F1 | BUTTON_DOWN) #define WPS_ID3 (BUTTON_F1 | BUTTON_ON) #define WPS_CONTEXT (BUTTON_PLAY | BUTTON_REPEAT) +#define WPS_QUICK BUTTON_F2 #define WPS_RC_NEXT BUTTON_RC_RIGHT #define WPS_RC_PREV BUTTON_RC_LEFT diff --git a/firmware/export/button.h b/firmware/export/button.h index 14cd195d3c..ddacb5a49d 100644 --- a/firmware/export/button.h +++ b/firmware/export/button.h @@ -67,6 +67,8 @@ bool remote_button_hold(void); #define BUTTON_OFF 0x0002 #define BUTTON_UP 0x0010 #define BUTTON_DOWN 0x0020 +#define BUTTON_QUICK BUTTON_ON +#define BUTTON_QUICK_LONG (BUTTON_ON | BUTTON_REPEAT) #define BUTTON_RC_ON (BUTTON_REMOTE | 0x00010000) #define BUTTON_RC_STOP (BUTTON_REMOTE | 0x00020000)