summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/action.h14
-rw-r--r--apps/keymaps/keymap-h1x0_h3x0.c40
-rw-r--r--apps/keymaps/keymap-ondio.c11
-rw-r--r--apps/keymaps/keymap-recorder.c15
-rw-r--r--apps/keymaps/keymap-x5.c12
-rw-r--r--apps/recorder/radio.c294
6 files changed, 152 insertions, 234 deletions
diff --git a/apps/action.h b/apps/action.h
index 1bbe6fc6e8..99612c1ea1 100644
--- a/apps/action.h
+++ b/apps/action.h
@@ -69,6 +69,7 @@ enum {
69 CONTEXT_YESNOSCREEN, /*NOTE: make sure your target has this and ACTION_YESNO_ACCEPT */ 69 CONTEXT_YESNOSCREEN, /*NOTE: make sure your target has this and ACTION_YESNO_ACCEPT */
70 CONTEXT_RECSCREEN, 70 CONTEXT_RECSCREEN,
71 CONTEXT_KEYBOARD, 71 CONTEXT_KEYBOARD,
72 CONTEXT_FM,
72}; 73};
73 74
74 75
@@ -127,6 +128,19 @@ enum {
127 ACTION_TREE_STOP, 128 ACTION_TREE_STOP,
128 ACTION_TREE_WPS, 129 ACTION_TREE_WPS,
129 130
131 /* radio */
132 ACTION_FM_MENU,
133 ACTION_FM_PRESET,
134 ACTION_FM_RECORD,
135 ACTION_FM_FREEZE,
136 ACTION_FM_STOP,
137 ACTION_FM_MODE,
138 ACTION_FM_EXIT,
139 ACTION_FM_PLAY,
140 ACTION_FM_RECORD_DBLPRE,
141 ACTION_FM_NEXT_PRESET,
142 ACTION_FM_PREV_PRESET,
143
130 /* recording screen */ 144 /* recording screen */
131 ACTION_REC_LCD, 145 ACTION_REC_LCD,
132 ACTION_REC_PAUSE, 146 ACTION_REC_PAUSE,
diff --git a/apps/keymaps/keymap-h1x0_h3x0.c b/apps/keymaps/keymap-h1x0_h3x0.c
index 0c0b61d201..af52b5c60d 100644
--- a/apps/keymaps/keymap-h1x0_h3x0.c
+++ b/apps/keymaps/keymap-h1x0_h3x0.c
@@ -259,6 +259,18 @@ const struct button_mapping button_context_keyboard[] = {
259 LAST_ITEM_IN_LIST 259 LAST_ITEM_IN_LIST
260}; /* button_context_keyboard */ 260}; /* button_context_keyboard */
261 261
262const struct button_mapping button_context_radio[] = {
263 { ACTION_FM_MENU, BUTTON_SELECT | BUTTON_REPEAT, BUTTON_NONE },
264 { ACTION_FM_PRESET, BUTTON_SELECT | BUTTON_REL, BUTTON_SELECT },
265 { ACTION_FM_STOP, BUTTON_OFF, BUTTON_NONE },
266 { ACTION_FM_MODE, BUTTON_ON | BUTTON_REPEAT, BUTTON_ON },
267 { ACTION_FM_EXIT, BUTTON_MODE | BUTTON_REL, BUTTON_MODE },
268 { ACTION_FM_PLAY, BUTTON_ON | BUTTON_REL, BUTTON_ON },
269
270 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
271
272};
273
262/***************************************************************************** 274/*****************************************************************************
263 * Remote control mappings 275 * Remote control mappings
264 *****************************************************************************/ 276 *****************************************************************************/
@@ -650,6 +662,21 @@ const struct button_mapping button_context_keyboard_h300lcdremote[] = {
650 LAST_ITEM_IN_LIST 662 LAST_ITEM_IN_LIST
651}; /* button_context_keyboard_h300lcdremote */ 663}; /* button_context_keyboard_h300lcdremote */
652 664
665const struct button_mapping button_context_radio_h100remote[] = {
666 { ACTION_FM_MENU, BUTTON_RC_MENU | BUTTON_REPEAT, BUTTON_NONE },
667 { ACTION_FM_PRESET, BUTTON_RC_MENU | BUTTON_REL, BUTTON_RC_MENU },
668 { ACTION_FM_STOP, BUTTON_RC_STOP, BUTTON_NONE },
669 { ACTION_FM_MODE, BUTTON_RC_ON | BUTTON_REPEAT, BUTTON_RC_ON },
670 { ACTION_FM_EXIT, BUTTON_RC_MODE | BUTTON_REL, BUTTON_RC_MODE },
671 { ACTION_FM_PLAY, BUTTON_RC_ON | BUTTON_REL, BUTTON_RC_ON },
672 { ACTION_FM_NEXT_PRESET, BUTTON_RC_BITRATE, BUTTON_NONE },
673 { ACTION_FM_PREV_PRESET, BUTTON_RC_SOURCE, BUTTON_NONE },
674
675 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
676};
677
678const struct button_mapping *button_context_radio_h300lcdremote =
679 button_context_radio_h100remote;
653 680
654/* the actual used tables */ 681/* the actual used tables */
655static const struct button_mapping 682static const struct button_mapping
@@ -667,6 +694,7 @@ static const struct button_mapping
667 *remote_btn_ctxt_pitchscreen = 0, 694 *remote_btn_ctxt_pitchscreen = 0,
668 *remote_btn_ctxt_recscreen = 0, 695 *remote_btn_ctxt_recscreen = 0,
669 *remote_btn_ctxt_keyboard = 0; 696 *remote_btn_ctxt_keyboard = 0;
697 *remote_btn_ctxt_radio = 0;
670 698
671static int _remote_type = -1; /*safe value, forces the first press to init the mappings */ 699static int _remote_type = -1; /*safe value, forces the first press to init the mappings */
672 700
@@ -690,6 +718,7 @@ static void remap_remote(void)
690 remote_btn_ctxt_pitchscreen = NULL; 718 remote_btn_ctxt_pitchscreen = NULL;
691 remote_btn_ctxt_recscreen = NULL; 719 remote_btn_ctxt_recscreen = NULL;
692 remote_btn_ctxt_keyboard = NULL; 720 remote_btn_ctxt_keyboard = NULL;
721 remote_btn_ctxt_radio = NULL;
693 break; 722 break;
694 723
695 case REMOTETYPE_H100_LCD: 724 case REMOTETYPE_H100_LCD:
@@ -714,6 +743,8 @@ static void remap_remote(void)
714 = button_context_recscreen_h100remote, 743 = button_context_recscreen_h100remote,
715 remote_btn_ctxt_keyboard 744 remote_btn_ctxt_keyboard
716 = button_context_keyboard_h100remote; 745 = button_context_keyboard_h100remote;
746 remote_btn_ctxt_radio
747 = button_context_radio_h100remote;
717 break; 748 break;
718 749
719 case REMOTETYPE_H300_LCD: 750 case REMOTETYPE_H300_LCD:
@@ -738,6 +769,8 @@ static void remap_remote(void)
738 = button_context_recscreen_h300lcdremote, 769 = button_context_recscreen_h300lcdremote,
739 remote_btn_ctxt_keyboard 770 remote_btn_ctxt_keyboard
740 = button_context_keyboard_h300lcdremote; 771 = button_context_keyboard_h300lcdremote;
772 remote_btn_ctxt_radio
773 = button_context_radio_h300lcdremote;
741 break; 774 break;
742 775
743 case REMOTETYPE_H300_NONLCD: /* FIXME: add its tables */ 776 case REMOTETYPE_H300_NONLCD: /* FIXME: add its tables */
@@ -762,6 +795,8 @@ static void remap_remote(void)
762 = button_context_recscreen_h300lcdremote, 795 = button_context_recscreen_h300lcdremote,
763 remote_btn_ctxt_keyboard 796 remote_btn_ctxt_keyboard
764 = button_context_keyboard_h300lcdremote; 797 = button_context_keyboard_h300lcdremote;
798 remote_btn_ctxt_radio
799 = button_context_radio_h300lcdremote;
765#if 0 800#if 0
766 remote_btn_ctxt_std = 801 remote_btn_ctxt_std =
767 remote_btn_ctxt_wps = 802 remote_btn_ctxt_wps =
@@ -777,6 +812,7 @@ static void remap_remote(void)
777 remote_btn_ctxt_pitchscreen = 812 remote_btn_ctxt_pitchscreen =
778 remote_btn_ctxt_recscreen = 813 remote_btn_ctxt_recscreen =
779 remote_btn_ctxt_keyboard = 814 remote_btn_ctxt_keyboard =
815 remote_btn_ctxt_radio =
780#endif 816#endif
781 break; 817 break;
782 818
@@ -827,6 +863,8 @@ const struct button_mapping* get_context_mapping_remote(int context)
827 return remote_btn_ctxt_recscreen; 863 return remote_btn_ctxt_recscreen;
828 case CONTEXT_KEYBOARD: 864 case CONTEXT_KEYBOARD:
829 return remote_btn_ctxt_keyboard; 865 return remote_btn_ctxt_keyboard;
866 case CONTEXT_FM:
867 return remote_btn_ctxt_radio;
830 } 868 }
831 return remote_btn_ctxt_std; 869 return remote_btn_ctxt_std;
832} 870}
@@ -879,6 +917,8 @@ const struct button_mapping* get_context_mapping(int context)
879 return button_context_recscreen; 917 return button_context_recscreen;
880 case CONTEXT_KEYBOARD: 918 case CONTEXT_KEYBOARD:
881 return button_context_keyboard; 919 return button_context_keyboard;
920 case CONTEXT_FM:
921 return button_context_radio;
882 } 922 }
883 return button_context_standard; 923 return button_context_standard;
884} 924}
diff --git a/apps/keymaps/keymap-ondio.c b/apps/keymaps/keymap-ondio.c
index ca1ae8d457..80b6923ffa 100644
--- a/apps/keymaps/keymap-ondio.c
+++ b/apps/keymaps/keymap-ondio.c
@@ -156,6 +156,17 @@ const struct button_mapping button_context_keyboard[] = {
156 LAST_ITEM_IN_LIST 156 LAST_ITEM_IN_LIST
157}; /* button_context_keyboard */ 157}; /* button_context_keyboard */
158 158
159const struct button_mapping button_context_radio[] = {
160 { ACTION_FM_MENU, BUTTON_MENU | BUTTON_REPEAT, BUTTON_NONE },
161 { ACTION_FM_RECORD_DBLPRE, BUTTON_MENU, BUTTON_NONE},
162 { ACTION_FM_RECORD, BUTTON_MENU | BUTTON_REL, BUTTON_NONE },
163 { ACTION_FM_STOP, BUTTON_OFF | BUTTON_REL, BUTTON_OFF },
164 { ACTION_FM_EXIT, BUTTON_OFF | BUTTON_REPEAT, BUTTON_OFF },
165
166 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
167
168};
169
159const struct button_mapping* get_context_mapping( int context ) 170const struct button_mapping* get_context_mapping( int context )
160{ 171{
161 switch( context ) 172 switch( context )
diff --git a/apps/keymaps/keymap-recorder.c b/apps/keymaps/keymap-recorder.c
index af28e51095..489f9fbd44 100644
--- a/apps/keymaps/keymap-recorder.c
+++ b/apps/keymaps/keymap-recorder.c
@@ -191,7 +191,22 @@ struct button_mapping button_context_bmark[] = {
191 { ACTION_BMS_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, 191 { ACTION_BMS_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
192 192
193 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), 193 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
194
194}; /* button_context_settings_bmark */ 195}; /* button_context_settings_bmark */
196
197const struct button_mapping button_context_radio[] = {
198 { ACTION_FM_MENU, BUTTON_F1, BUTTON_NONE },
199 { ACTION_FM_PRESET, BUTTON_F2, BUTTON_NONE },
200 { ACTION_FM_RECORD, BUTTON_F3, BUTTON_NONE },
201 { ACTION_FM_FREEZE, BUTTON_PLAY, BUTTON_NONE },
202 { ACTION_FM_STOP, BUTTON_OFF, BUTTON_NONE },
203 { ACTION_FM_MODE, BUTTON_ON | BUTTON_REPEAT, BUTTON_ON },
204 { ACTION_FM_EXIT, BUTTON_ON | BUTTON_REL, BUTTON_ON },
205
206 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
207
208};
209
195/***************************************************************************** 210/*****************************************************************************
196 * Remote control mappings 211 * Remote control mappings
197 *****************************************************************************/ 212 *****************************************************************************/
diff --git a/apps/keymaps/keymap-x5.c b/apps/keymaps/keymap-x5.c
index 05985fedb1..1ef7d6a5c9 100644
--- a/apps/keymaps/keymap-x5.c
+++ b/apps/keymaps/keymap-x5.c
@@ -242,6 +242,18 @@ const struct button_mapping button_context_bmark[] = {
242 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS), 242 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
243}; /* button_context_settings_bmark */ 243}; /* button_context_settings_bmark */
244 244
245const struct button_mapping button_context_radio[] = {
246 { ACTION_FM_MENU, BUTTON_SELECT | BUTTON_REPEAT, BUTTON_NONE },
247 { ACTION_FM_PRESET, BUTTON_SELECT | BUTTON_REL, BUTTON_SELECT },
248 { ACTION_FM_STOP, BUTTON_POWER, BUTTON_NONE },
249 { ACTION_FM_MODE, BUTTON_PLAY | BUTTON_REPEAT, BUTTON_PLAY },
250 { ACTION_FM_EXIT, BUTTON_REC | BUTTON_REL, BUTTON_REC },
251 { ACTION_FM_PLAY, BUTTON_PLAY | BUTTON_REL, BUTTON_PLAY },
252
253 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
254
255};
256
245static const struct button_mapping* get_context_mapping_remote( int context ) 257static const struct button_mapping* get_context_mapping_remote( int context )
246{ 258{
247 context ^= CONTEXT_REMOTE; 259 context ^= CONTEXT_REMOTE;
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index caaba67404..6410bdbc10 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -59,86 +59,25 @@
59#include "power.h" 59#include "power.h"
60#include "tree.h" 60#include "tree.h"
61#include "dir.h" 61#include "dir.h"
62#include "action.h"
62 63
63#ifdef CONFIG_TUNER 64#ifdef CONFIG_TUNER
64 65
65#if CONFIG_KEYPAD == RECORDER_PAD 66#if CONFIG_KEYPAD == RECORDER_PAD
66#define FM_MENU BUTTON_F1 67#define FM_RECORD
67#define FM_PRESET BUTTON_F2 68#define FM_PRESET_ADD
68#define FM_RECORD BUTTON_F3 69#define FM_PRESET_ACTION
69#define FM_FREEZE BUTTON_PLAY 70#define FM_PRESET
70#define FM_STOP BUTTON_OFF
71#define FM_MODE (BUTTON_ON | BUTTON_REPEAT)
72#define FM_EXIT_PRE BUTTON_ON
73#define FM_EXIT (BUTTON_ON | BUTTON_REL)
74#define FM_PRESET_ADD BUTTON_F1
75#define FM_PRESET_ACTION BUTTON_F3
76 71
77#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) 72#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
78/* pause/play - short PLAY */ 73#define FM_PRESET
79#define FM_PLAY_PRE BUTTON_ON
80#define FM_RC_PLAY_PRE BUTTON_RC_ON
81#define FM_PLAY (BUTTON_ON | BUTTON_REL)
82#define FM_RC_PLAY (BUTTON_RC_ON | BUTTON_REL)
83/* preset/scan mode - long PLAY */
84#define FM_MODE (BUTTON_ON | BUTTON_REPEAT)
85#define FM_RC_MODE (BUTTON_RC_ON | BUTTON_REPEAT)
86/* preset menu - short SELECT */
87#define FM_PRESET_PRE BUTTON_SELECT
88#define FM_RC_PRESET_PRE BUTTON_RC_MENU
89#define FM_PRESET (BUTTON_SELECT | BUTTON_REL)
90#define FM_RC_PRESET (BUTTON_RC_MENU | BUTTON_REL)
91/* fm menu - long SELECT */
92#define FM_MENU (BUTTON_SELECT | BUTTON_REPEAT)
93#define FM_RC_MENU (BUTTON_RC_MENU | BUTTON_REPEAT)
94/* main menu(exit radio while playing) - A-B */
95#define FM_EXIT_PRE BUTTON_MODE
96#define FM_EXIT (BUTTON_MODE | BUTTON_REL)
97#define FM_RC_EXIT_PRE BUTTON_RC_MODE
98#define FM_RC_EXIT (BUTTON_RC_MODE | BUTTON_REL)
99/* prev/next preset on the remote - BITRATE/SOURCE */
100#define FM_NEXT_PRESET (BUTTON_RC_BITRATE | BUTTON_REL)
101#define FM_PREV_PRESET (BUTTON_RC_SOURCE | BUTTON_REL)
102/* stop and exit radio - STOP */
103#define FM_STOP BUTTON_OFF
104#define FM_RC_STOP BUTTON_RC_STOP
105 74
106#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) 75#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
107/* pause/play - short PLAY */ 76#define FM_PRESET
108#define FM_PLAY_PRE BUTTON_PLAY 77
109#define FM_RC_PLAY_PRE BUTTON_RC_PLAY 78#elif CONFIG_KEYPAD == ONDIO_PAD
110#define FM_PLAY (BUTTON_PLAY | BUTTON_REL) 79#define FM_RECORD_DBLPRE
111#define FM_RC_PLAY (BUTTON_RC_PLAY | BUTTON_REL) 80#define FM_RECORD
112/* preset/scan mode - long PLAY */
113#define FM_MODE (BUTTON_PLAY | BUTTON_REPEAT)
114#define FM_RC_MODE (BUTTON_RC_PLAY | BUTTON_REPEAT)
115/* preset menu - short SELECT */
116#define FM_PRESET_PRE BUTTON_SELECT
117#define FM_RC_PRESET_PRE BUTTON_RC_MENU
118#define FM_PRESET (BUTTON_SELECT | BUTTON_REL)
119#define FM_RC_PRESET (BUTTON_RC_MENU | BUTTON_REL)
120/* fm menu - long SELECT */
121#define FM_MENU (BUTTON_SELECT | BUTTON_REPEAT)
122#define FM_RC_MENU (BUTTON_RC_MENU | BUTTON_REPEAT)
123/* main menu(exit radio while playing) - REC */
124#define FM_EXIT_PRE BUTTON_REC
125#define FM_EXIT (BUTTON_REC | BUTTON_REL)
126#define FM_RC_EXIT_PRE BUTTON_RC_MODE
127#define FM_RC_EXIT (BUTTON_RC_MODE | BUTTON_REL)
128/* prev/next preset on the remote - REW/FF */
129#define FM_NEXT_PRESET (BUTTON_RC_FF | BUTTON_REL)
130#define FM_PREV_PRESET (BUTTON_RC_REW | BUTTON_REL)
131/* stop and exit radio - ON */
132#define FM_STOP BUTTON_POWER
133#define FM_RC_STOP (BUTTON_RC_MODE | BUTTON_REPEAT)
134
135#elif CONFIG_KEYPAD == ONDIO_PAD /* restricted keypad */
136#define FM_MENU (BUTTON_MENU | BUTTON_REPEAT)
137#define FM_RECORD_DBLPRE BUTTON_MENU
138#define FM_RECORD (BUTTON_MENU | BUTTON_REL)
139#define FM_STOP_PRE BUTTON_OFF
140#define FM_STOP (BUTTON_OFF | BUTTON_REL)
141#define FM_EXIT (BUTTON_OFF | BUTTON_REPEAT)
142#endif 81#endif
143 82
144#define MAX_FREQ (108000000) 83#define MAX_FREQ (108000000)
@@ -537,22 +476,15 @@ bool radio_screen(void)
537 if(search_dir) 476 if(search_dir)
538 button = button_get(false); 477 button = button_get(false);
539 else 478 else
540 button = button_get_w_tmo(HZ / PEAK_METER_FPS); 479 button = get_action(CONTEXT_FM, HZ / PEAK_METER_FPS);
541 if (button != BUTTON_NONE) 480 if (button != ACTION_NONE)
542 { 481 {
543 cpu_idle_mode(false); 482 cpu_idle_mode(false);
544 button_timeout = current_tick + (2*HZ); 483 button_timeout = current_tick + (2*HZ);
545 } 484 }
546 switch(button) 485 switch(button)
547 { 486 {
548#ifdef FM_RC_STOP 487 case ACTION_FM_STOP:
549 case FM_RC_STOP:
550#endif
551 case FM_STOP:
552#ifdef FM_STOP_PRE
553 if (lastbutton != FM_STOP_PRE)
554 break;
555#endif
556#if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR) 488#if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR)
557 if(audio_status() == AUDIO_STATUS_RECORD) 489 if(audio_status() == AUDIO_STATUS_RECORD)
558 { 490 {
@@ -579,9 +511,9 @@ bool radio_screen(void)
579 break; 511 break;
580 512
581#ifdef FM_RECORD 513#ifdef FM_RECORD
582 case FM_RECORD: 514 case ACTION_FM_RECORD:
583#ifdef FM_RECORD_DBLPRE 515#ifdef FM_RECORD_DBLPRE
584 if (lastbutton != FM_RECORD_DBLPRE) 516 if (lastbutton != ACTION_FM_RECORD_DBLPRE)
585 { 517 {
586 rec_lastclick = 0; 518 rec_lastclick = 0;
587 break; 519 break;
@@ -609,18 +541,7 @@ bool radio_screen(void)
609 break; 541 break;
610#endif /* #ifdef FM_RECORD */ 542#endif /* #ifdef FM_RECORD */
611 543
612#ifdef FM_RC_EXIT 544 case ACTION_FM_EXIT:
613 case FM_RC_EXIT:
614#endif
615 case FM_EXIT:
616#ifdef FM_EXIT_PRE
617 if(lastbutton != FM_EXIT_PRE
618#ifdef FM_RC_EXIT_PRE
619 && lastbutton != FM_RC_EXIT_PRE
620#endif
621 )
622 break;
623#endif
624#if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR) 545#if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR)
625 if(audio_status() == AUDIO_STATUS_RECORD) 546 if(audio_status() == AUDIO_STATUS_RECORD)
626 audio_stop(); 547 audio_stop();
@@ -643,11 +564,8 @@ bool radio_screen(void)
643 clear_preset_list(); 564 clear_preset_list();
644 565
645 break; 566 break;
646 567
647#ifdef BUTTON_RC_REW 568 case ACTION_STD_PREV:
648 case BUTTON_RC_REW:
649#endif
650 case BUTTON_LEFT:
651 if(radio_mode == RADIO_SCAN_MODE) 569 if(radio_mode == RADIO_SCAN_MODE)
652 { 570 {
653 curr_freq -= FREQ_STEP; 571 curr_freq -= FREQ_STEP;
@@ -663,10 +581,7 @@ bool radio_screen(void)
663 update_screen = true; 581 update_screen = true;
664 break; 582 break;
665 583
666#ifdef BUTTON_RC_FF 584 case ACTION_STD_NEXT:
667 case BUTTON_RC_FF:
668#endif
669 case BUTTON_RIGHT:
670 if(radio_mode == RADIO_SCAN_MODE) 585 if(radio_mode == RADIO_SCAN_MODE)
671 { 586 {
672 curr_freq += FREQ_STEP; 587 curr_freq += FREQ_STEP;
@@ -682,10 +597,7 @@ bool radio_screen(void)
682 update_screen = true; 597 update_screen = true;
683 break; 598 break;
684 599
685#ifdef BUTTON_RC_REW 600 case ACTION_STD_PREVREPEAT:
686 case BUTTON_RC_REW | BUTTON_REPEAT:
687#endif
688 case BUTTON_LEFT | BUTTON_REPEAT:
689 if(radio_mode == RADIO_SCAN_MODE) 601 if(radio_mode == RADIO_SCAN_MODE)
690 search_dir = -1; 602 search_dir = -1;
691 else 603 else
@@ -695,11 +607,8 @@ bool radio_screen(void)
695 } 607 }
696 608
697 break; 609 break;
698 610
699#ifdef BUTTON_RC_FF 611 case ACTION_STD_NEXTREPEAT:
700 case BUTTON_RC_FF | BUTTON_REPEAT:
701#endif
702 case BUTTON_RIGHT | BUTTON_REPEAT:
703 if(radio_mode == RADIO_SCAN_MODE) 612 if(radio_mode == RADIO_SCAN_MODE)
704 search_dir = 1; 613 search_dir = 1;
705 else 614 else
@@ -710,12 +619,9 @@ bool radio_screen(void)
710 619
711 break; 620 break;
712 621
713#ifdef BUTTON_RC_VOL_UP 622
714 case BUTTON_RC_VOL_UP: 623 case ACTION_SETTINGS_INC:
715 case BUTTON_RC_VOL_UP | BUTTON_REPEAT: 624 case ACTION_SETTINGS_INCREPEAT:
716#endif
717 case BUTTON_UP:
718 case BUTTON_UP | BUTTON_REPEAT:
719 global_settings.volume++; 625 global_settings.volume++;
720 if(global_settings.volume > sound_max(SOUND_VOLUME)) 626 if(global_settings.volume > sound_max(SOUND_VOLUME))
721 global_settings.volume = sound_max(SOUND_VOLUME); 627 global_settings.volume = sound_max(SOUND_VOLUME);
@@ -724,12 +630,8 @@ bool radio_screen(void)
724 settings_save(); 630 settings_save();
725 break; 631 break;
726 632
727#ifdef BUTTON_RC_VOL_DOWN 633 case ACTION_SETTINGS_DEC:
728 case BUTTON_RC_VOL_DOWN: 634 case ACTION_SETTINGS_DECREPEAT:
729 case BUTTON_RC_VOL_DOWN | BUTTON_REPEAT:
730#endif
731 case BUTTON_DOWN:
732 case BUTTON_DOWN | BUTTON_REPEAT:
733 global_settings.volume--; 635 global_settings.volume--;
734 if(global_settings.volume < sound_min(SOUND_VOLUME)) 636 if(global_settings.volume < sound_min(SOUND_VOLUME))
735 global_settings.volume = sound_min(SOUND_VOLUME); 637 global_settings.volume = sound_min(SOUND_VOLUME);
@@ -738,19 +640,7 @@ bool radio_screen(void)
738 settings_save(); 640 settings_save();
739 break; 641 break;
740 642
741#ifdef FM_PLAY 643 case ACTION_FM_PLAY:
742#ifdef FM_RC_PLAY
743 case FM_RC_PLAY:
744#endif
745 case FM_PLAY:
746#ifdef FM_PLAY_PRE
747 if(lastbutton != FM_PLAY_PRE
748#ifdef FM_RC_PLAY_PRE
749 && lastbutton != FM_RC_PLAY_PRE
750#endif
751 )
752 break;
753#endif
754 if (radio_status == FMRADIO_PLAYING) 644 if (radio_status == FMRADIO_PLAYING)
755 radio_pause(); 645 radio_pause();
756 else 646 else
@@ -758,12 +648,8 @@ bool radio_screen(void)
758 648
759 update_screen = true; 649 update_screen = true;
760 break; 650 break;
761#endif 651
762#ifdef FM_MENU 652 case ACTION_FM_MENU:
763#ifdef FM_RC_MENU
764 case FM_RC_MENU:
765#endif
766 case FM_MENU:
767 radio_menu(); 653 radio_menu();
768 curr_preset = find_preset(curr_freq); 654 curr_preset = find_preset(curr_freq);
769 FOR_NB_SCREENS(i){ 655 FOR_NB_SCREENS(i){
@@ -777,21 +663,9 @@ bool radio_screen(void)
777#endif 663#endif
778 update_screen = true; 664 update_screen = true;
779 break; 665 break;
780#endif 666
781
782#ifdef FM_RC_PRESET
783 case FM_RC_PRESET:
784#endif
785#ifdef FM_PRESET 667#ifdef FM_PRESET
786 case FM_PRESET: 668 case ACTION_FM_PRESET:
787#ifdef FM_PRESET_PRE
788 if(lastbutton != FM_PRESET_PRE
789#ifdef FM_RC_PRESET_PRE
790 && lastbutton != FM_RC_PRESET_PRE
791#endif
792 )
793 break;
794#endif
795 if(num_presets < 1) 669 if(num_presets < 1)
796 { 670 {
797 gui_syncsplash(HZ, true, str(LANG_FM_NO_PRESETS)); 671 gui_syncsplash(HZ, true, str(LANG_FM_NO_PRESETS));
@@ -823,7 +697,7 @@ bool radio_screen(void)
823#endif 697#endif
824 698
825#ifdef FM_FREEZE 699#ifdef FM_FREEZE
826 case FM_FREEZE: 700 case ACTION_FM_FREEZE:
827 if(!screen_freeze) 701 if(!screen_freeze)
828 { 702 {
829 gui_syncsplash(HZ, true, str(LANG_FM_FREEZE)); 703 gui_syncsplash(HZ, true, str(LANG_FM_FREEZE));
@@ -847,38 +721,28 @@ bool radio_screen(void)
847 } 721 }
848 break; 722 break;
849 723
850#ifdef FM_RC_MODE
851 case FM_RC_MODE:
852#endif
853#ifdef FM_MODE 724#ifdef FM_MODE
854 case FM_MODE: 725 case ACTION_FM_MODE:
855 if(lastbutton != FM_MODE 726 if(radio_mode == RADIO_SCAN_MODE)
856#ifdef FM_RC_MODE
857 && lastbutton != FM_RC_MODE
858#endif
859 )
860 { 727 {
861 if(radio_mode == RADIO_SCAN_MODE) 728 /* Force scan mode if there are no presets. */
862 { 729 if(num_presets > 0)
863 /* Force scan mode if there are no presets. */ 730 radio_mode = RADIO_PRESET_MODE;
864 if(num_presets > 0)
865 radio_mode = RADIO_PRESET_MODE;
866 }
867 else
868 radio_mode = RADIO_SCAN_MODE;
869 update_screen = true;
870 } 731 }
732 else
733 radio_mode = RADIO_SCAN_MODE;
734 update_screen = true;
871 break; 735 break;
872#endif 736#endif
873#ifdef FM_NEXT_PRESET 737#ifdef FM_NEXT_PRESET
874 case FM_NEXT_PRESET: 738 case ACTION_FM_NEXT_PRESET:
875 next_preset(1); 739 next_preset(1);
876 search_dir = 0; 740 search_dir = 0;
877 update_screen = true; 741 update_screen = true;
878 break; 742 break;
879#endif 743#endif
880#ifdef FM_PREV_PRESET 744#ifdef FM_PREV_PRESET
881 case FM_PREV_PRESET: 745 case ACTION_FM_PREV_PRESET:
882 next_preset(-1); 746 next_preset(-1);
883 search_dir = 0; 747 search_dir = 0;
884 update_screen = true; 748 update_screen = true;
@@ -890,9 +754,11 @@ bool radio_screen(void)
890 break; 754 break;
891 } /*switch(button)*/ 755 } /*switch(button)*/
892 756
893 if (button != BUTTON_NONE) 757 if (button != ACTION_NONE)
894 lastbutton = button; 758 lastbutton = button;
895 759
760 // action_signalscreenchange();
761
896#if CONFIG_CODEC != SWCODEC 762#if CONFIG_CODEC != SWCODEC
897 peak_meter_peek(); 763 peak_meter_peek();
898#endif 764#endif
@@ -1023,8 +889,8 @@ bool radio_screen(void)
1023 889
1024 while(1) 890 while(1)
1025 { 891 {
1026 button = button_get(true); 892 button = get_action(CONTEXT_FM, TIMEOUT_BLOCK);
1027 if(button == (FM_STOP | BUTTON_REL)) 893 if(button == (ACTION_FM_STOP | BUTTON_REL))
1028 break; 894 break;
1029 } 895 }
1030 } 896 }
@@ -1205,13 +1071,9 @@ static int handle_radio_presets_menu_cb(int key, int m)
1205#ifdef FM_PRESET_ACTION 1071#ifdef FM_PRESET_ACTION
1206 switch(key) 1072 switch(key)
1207 { 1073 {
1208 case FM_PRESET_ACTION: 1074 case ACTION_F3:
1209 key = MENU_EXIT; /* Fake an exit */ 1075 key = ACTION_STD_CANCEL; /* Fake an exit */
1210 break; 1076 action_signalscreenchange();
1211
1212 case FM_PRESET_ACTION | BUTTON_REL:
1213 /* Ignore the release events */
1214 key = BUTTON_NONE;
1215 break; 1077 break;
1216 } 1078 }
1217#endif 1079#endif
@@ -1361,11 +1223,11 @@ bool handle_radio_presets_menu(void)
1361int handle_radio_presets_cb(int key, int m) 1223int handle_radio_presets_cb(int key, int m)
1362{ 1224{
1363 (void)m; 1225 (void)m;
1364#if 0 /* this screen needs fixing! */ 1226
1365 switch(key) 1227 switch(key)
1366 { 1228 {
1367#ifdef FM_PRESET_ADD 1229#ifdef FM_PRESET_ADD
1368 case FM_PRESET_ADD: 1230 case ACTION_STD_MENU:
1369 radio_add_preset(); 1231 radio_add_preset();
1370 menu_draw(m); 1232 menu_draw(m);
1371 key = BUTTON_NONE; 1233 key = BUTTON_NONE;
@@ -1373,61 +1235,25 @@ int handle_radio_presets_cb(int key, int m)
1373#endif 1235#endif
1374#if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) 1236#if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD)
1375#ifdef FM_PRESET 1237#ifdef FM_PRESET
1376 case FM_PRESET: 1238 case ACTION_STD_QUICKSCREEN:
1377 menu_draw(m); 1239 menu_draw(m);
1378 key = ACTION_STD_EXIT; /* Fake an exit */ 1240 key = ACTION_STD_EXIT; /* Fake an exit */
1379 break; 1241 break;
1380#endif 1242#endif
1381#endif 1243#endif
1382#ifdef FM_PRESET_ACTION 1244 case ACTION_F3:
1383 case FM_PRESET_ACTION: 1245 case ACTION_STD_CONTEXT:
1384#endif
1385#ifdef MENU_RC_ENTER
1386 case MENU_RC_ENTER | BUTTON_REPEAT:
1387#endif
1388#ifdef MENU_RC_ENTER2
1389 case MENU_RC_ENTER2 | BUTTON_REPEAT:
1390#endif
1391#ifdef MENU_ENTER2
1392 case MENU_ENTER2 | BUTTON_REPEAT:
1393#endif
1394 case MENU_ENTER | BUTTON_REPEAT: /* long gives options */
1395 { 1246 {
1396 bool ret; 1247 bool ret;
1397 ret = handle_radio_presets_menu(); 1248 ret = handle_radio_presets_menu();
1398 menu_draw(m); 1249 menu_draw(m);
1399 if(ret) 1250 if(ret)
1400 key = MENU_ATTACHED_USB; 1251 key = SYS_USB_CONNECTED;
1401 else 1252 else
1402 key = BUTTON_NONE; 1253 key = ACTION_NONE;
1403 break; 1254 break;
1404 } 1255 }
1405#ifdef MENU_RC_ENTER
1406 case MENU_RC_ENTER | BUTTON_REL:
1407#endif
1408#ifdef MENU_RC_ENTER2
1409 case MENU_RC_ENTER2 | BUTTON_REL:
1410#endif
1411#ifdef MENU_ENTER2
1412 case MENU_ENTER2 | BUTTON_REL:
1413#endif
1414 case MENU_ENTER | BUTTON_REL:
1415 key = ACTION_STD_SELECT; /* fake enter for short press */
1416 break;
1417
1418/* ignore down events */
1419 case ACTION_STD_SELECT:
1420 /* Ignore the release events */
1421#ifdef FM_PRESET_ADD
1422 case FM_PRESET_ADD | BUTTON_REL:
1423#endif
1424#ifdef FM_PRESET_ACTION
1425 case FM_PRESET_ACTION | BUTTON_REL:
1426#endif
1427 key = BUTTON_NONE;
1428 break;
1429 } 1256 }
1430#endif
1431 return key; 1257 return key;
1432} 1258}
1433 1259