From 2bb81f70f5a0be8b8b0dc27aaf2d6d5e611686c4 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Sat, 29 Jan 2011 15:01:28 +0000 Subject: Move fm radio related menus out of radio.c into apps/menus/. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29162 a1c6a512-1295-4272-9138-f99709370657 --- apps/menus/exported_menus.h | 3 + apps/menus/radio_menu.c | 145 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 apps/menus/radio_menu.c (limited to 'apps/menus') diff --git a/apps/menus/exported_menus.h b/apps/menus/exported_menus.h index 3d253e7dd9..568791b1f0 100644 --- a/apps/menus/exported_menus.h +++ b/apps/menus/exported_menus.h @@ -30,17 +30,20 @@ extern const struct menu_item_ex playback_settings, /* playback_menu.c */ #ifdef HAVE_RECORDING recording_settings, /* recording_menu.c */ + recording_settings_menu, #ifdef HAVE_LCD_BITMAP peak_meter_menu, /* also used from within recording_menu */ #endif #endif sound_settings, /* sound_menu.c */ settings_menu_item, /* settings_menu.c */ + bookmark_settings_menu, playlist_settings, /* playlist_menu.c */ equalizer_menu, /* eq_menu.c */ #ifdef AUDIOHW_HAVE_EQ audiohw_eq_tone_controls, /* audiohw_eq_menu.c */ #endif + radio_settings_menu, /* radio_menu.c */ theme_menu; /* theme_menu.c */ struct browse_folder_info { diff --git a/apps/menus/radio_menu.c b/apps/menus/radio_menu.c new file mode 100644 index 0000000000..2a15fe8ee5 --- /dev/null +++ b/apps/menus/radio_menu.c @@ -0,0 +1,145 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2003 Linus Nielsen Feltzing + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include +#include "config.h" +#include "menu.h" +#include "icon.h" +#include "radio.h" +#include "lang.h" +#include "settings.h" +#include "presets.h" +#include "exported_menus.h" +#include "recording.h" /* recording_screen() */ +#include "sound_menu.h" /* recording_menu() */ + + +#if defined(HAVE_FMRADIO_REC) && CONFIG_CODEC == SWCODEC +#define FM_RECORDING_SCREEN +static int fm_recording_screen(void) +{ + bool ret; + + /* switch recording source to FMRADIO for the duration */ + int rec_source = global_settings.rec_source; + global_settings.rec_source = AUDIO_SRC_FMRADIO; + ret = recording_screen(true); + + /* safe to reset as changing sources is prohibited here */ + global_settings.rec_source = rec_source; + + return ret; +} + +MENUITEM_FUNCTION(recscreen_item, 0, ID2P(LANG_RECORDING), + fm_recording_screen, NULL, NULL, Icon_Recording); +#endif /* defined(HAVE_FMRADIO_REC) && CONFIG_CODEC == SWCODEC */ + +#if defined(HAVE_FMRADIO_REC) || CONFIG_CODEC != SWCODEC +#define FM_RECORDING_SETTINGS +static int fm_recording_settings(void) +{ + bool ret = recording_menu(true); + +#if CONFIG_CODEC != SWCODEC + if (!ret) + { + struct audio_recording_options rec_options; + rec_init_recording_options(&rec_options); + rec_options.rec_source = AUDIO_SRC_LINEIN; + rec_set_recording_options(&rec_options); + } +#endif + + return ret; +} + +MENUITEM_FUNCTION(recsettings_item, 0, ID2P(LANG_RECORDING_SETTINGS), + fm_recording_settings, NULL, NULL, Icon_Recording); +#endif /* defined(HAVE_FMRADIO_REC) || CONFIG_CODEC != SWCODEC */ + +#ifndef FM_PRESET +MENUITEM_FUNCTION(radio_presets_item, 0, ID2P(LANG_PRESET), + handle_radio_presets, NULL, NULL, Icon_NOICON); +#endif +#ifndef FM_PRESET_ADD +MENUITEM_FUNCTION(radio_addpreset_item, 0, ID2P(LANG_FM_ADD_PRESET), + handle_radio_add_preset, NULL, NULL, Icon_NOICON); +#endif + +MENUITEM_FUNCTION(presetload_item, 0, ID2P(LANG_FM_PRESET_LOAD), + preset_list_load, NULL, NULL, Icon_NOICON); +MENUITEM_FUNCTION(presetsave_item, 0, ID2P(LANG_FM_PRESET_SAVE), + preset_list_save, NULL, NULL, Icon_NOICON); +MENUITEM_FUNCTION(presetclear_item, 0, ID2P(LANG_FM_PRESET_CLEAR), + preset_list_clear, NULL, NULL, Icon_NOICON); + +MENUITEM_SETTING(set_region, &global_settings.fm_region, NULL); +MENUITEM_SETTING(force_mono, &global_settings.fm_force_mono, NULL); + +#ifndef FM_MODE +extern int radio_mode; +static char* get_mode_text(int selected_item, void * data, char *buffer) +{ + (void)selected_item; + (void)data; + snprintf(buffer, MAX_PATH, "%s %s", str(LANG_MODE), + radio_mode ? str(LANG_PRESET) : + str(LANG_RADIO_SCAN_MODE)); + return buffer; +} +static int toggle_radio_mode(void) +{ + radio_mode = (radio_mode == RADIO_SCAN_MODE) ? + RADIO_PRESET_MODE : RADIO_SCAN_MODE; + return 0; +} +MENUITEM_FUNCTION_DYNTEXT(radio_mode_item, 0, + toggle_radio_mode, NULL, + get_mode_text, NULL, NULL, NULL, Icon_NOICON); +#endif + +MENUITEM_FUNCTION(scan_presets_item, MENU_FUNC_USEPARAM, + ID2P(LANG_FM_SCAN_PRESETS), + presets_scan, NULL, NULL, Icon_NOICON); + +MAKE_MENU(radio_settings_menu, ID2P(LANG_FM_MENU), NULL, + Icon_Radio_screen, +#ifndef FM_PRESET + &radio_presets_item, +#endif +#ifndef FM_PRESET_ADD + &radio_addpreset_item, +#endif + &presetload_item, &presetsave_item, &presetclear_item, + &force_mono, +#ifndef FM_MODE + &radio_mode_item, +#endif + &set_region, &sound_settings, +#ifdef FM_RECORDING_SCREEN + &recscreen_item, +#endif +#ifdef FM_RECORDING_SETTINGS + &recsettings_item, +#endif + &scan_presets_item); + -- cgit v1.2.3