diff options
author | Jörg Hohensohn <hohensoh@rockbox.org> | 2004-10-19 22:50:34 +0000 |
---|---|---|
committer | Jörg Hohensohn <hohensoh@rockbox.org> | 2004-10-19 22:50:34 +0000 |
commit | c100a42ac01271dffee0cb18e8fb22df1e735b28 (patch) | |
tree | 84dc8fddc703fe94f40e66b9cc0b15b32b0dfd0f /apps/recorder/radio.c | |
parent | 8b1c8c6e81dfb45ae9a3486f6edc72efb5aa77d8 (diff) | |
download | rockbox-c100a42ac01271dffee0cb18e8fb22df1e735b28.tar.gz rockbox-c100a42ac01271dffee0cb18e8fb22df1e735b28.zip |
Phew, all features available to Ondio, too. What an #ifdef monster. New feature: long select press on a preset opens a context menu to edit/delete. Since it's also useful to FMR, I made it available for that as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5313 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/recorder/radio.c')
-rw-r--r-- | apps/recorder/radio.c | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 29ad662ea1..29138ecc89 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c @@ -662,6 +662,7 @@ static bool radio_add_preset(void) return true; } +/* button preprocessor for preset option submenu */ static int handle_radio_presets_menu_cb(int key, int m) { (void)m; @@ -715,6 +716,7 @@ bool radio_delete_preset(void) return true; /* Make the menu return immediately */ } +/* little menu on what to do with a preset entry */ bool handle_radio_presets_menu(void) { static const struct menu_item preset_menu_items[] = { @@ -732,6 +734,7 @@ bool handle_radio_presets_menu(void) return false; } +/* button preprocessor for list of preset stations menu */ int handle_radio_presets_cb(int key, int m) { (void)m; @@ -752,6 +755,11 @@ int handle_radio_presets_cb(int key, int m) #endif #ifdef FM_PRESET_ACTION case FM_PRESET_ACTION: +#endif +#ifdef MENU_ENTER2 + case MENU_ENTER2 | BUTTON_REPEAT: +#endif + case MENU_ENTER | BUTTON_REPEAT: /* long gives options */ { bool ret; ret = handle_radio_presets_menu(); @@ -762,19 +770,31 @@ int handle_radio_presets_cb(int key, int m) key = BUTTON_NONE; break; } +#ifdef MENU_ENTER2 + case MENU_ENTER2 | BUTTON_REL: #endif + case MENU_ENTER | BUTTON_REL: + key = MENU_ENTER; /* fake enter for short press */ + break; +#ifdef MENU_ENTER2 + case MENU_ENTER2: +#endif + case MENU_ENTER: /* ignore down event */ /* Ignore the release events */ -#if defined (FM_PRESET_ADD) || defined (FM_PRESET_ACTION) +#ifdef FM_PRESET_ADD case FM_PRESET_ADD | BUTTON_REL: +#endif +#ifdef FM_PRESET_ACTION case FM_PRESET_ACTION | BUTTON_REL: +#endif key = BUTTON_NONE; break; -#endif } return key; } +/* present a list of preset stations */ bool handle_radio_presets(void) { int result; @@ -850,13 +870,39 @@ static bool toggle_mono_mode(void) return false; } + +/* button preprocessor for the main menu */ +int radio_menu_cb(int key, int m) +{ + (void)m; + switch(key) + { +#ifdef MENU_ENTER2 + case MENU_ENTER2: +#endif + case MENU_ENTER: + key = BUTTON_NONE; /* eat the downpress, next menu reacts on release */ + break; + +#ifdef MENU_ENTER2 + case MENU_ENTER2 | BUTTON_REL: +#endif + case MENU_ENTER | BUTTON_REL: + key = MENU_ENTER; /* fake downpress, next menu doesn't like release */ + break; + } + + return key; +} + +/* main menu of the radio screen */ bool radio_menu(void) { struct menu_item items[5]; int m; bool result; - m = menu_init(items, 0, NULL, NULL, NULL, NULL); + m = menu_init(items, 0, radio_menu_cb, NULL, NULL, NULL); #if CONFIG_KEYPAD == ONDIO_PAD /* Ondio has no key for presets, put it in menu */ /* fixme: make real string table entries */ |