Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 1 | /*************************************************************************** |
| 2 | * __________ __ ___. |
| 3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| 4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| 5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| 6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| 7 | * \/ \/ \/ \/ \/ |
| 8 | * $Id$ |
| 9 | * |
| 10 | * Copyright (C) 2002 Robert Hak |
| 11 | * |
| 12 | * All files in this archive are subject to the GNU General Public License. |
| 13 | * See the file COPYING in the source tree root for full license agreement. |
| 14 | * |
| 15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| 16 | * KIND, either express or implied. |
| 17 | * |
| 18 | ****************************************************************************/ |
| 19 | |
| 20 | #include "config.h" |
| 21 | |
| 22 | #include <stdio.h> |
| 23 | #include <stdbool.h> |
Linus Nielsen Feltzing | 7ddf0d6 | 2004-04-20 10:23:57 +0000 | [diff] [blame] | 24 | #include <string.h> |
Justin Heiner | b5025a8 | 2002-08-31 04:58:35 +0000 | [diff] [blame] | 25 | |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 26 | #include "lcd.h" |
| 27 | #include "menu.h" |
| 28 | #include "mpeg.h" |
Linus Nielsen Feltzing | 8a237a8 | 2005-04-04 12:06:29 +0000 | [diff] [blame] | 29 | #include "audio.h" |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 30 | #include "button.h" |
| 31 | #include "kernel.h" |
Björn Stenberg | c4d8d97 | 2003-02-14 09:44:34 +0000 | [diff] [blame] | 32 | #include "thread.h" |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 33 | #include "sprintf.h" |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 34 | #include "settings.h" |
| 35 | #include "settings_menu.h" |
| 36 | #include "backlight.h" |
Robert Hak | ea8a4cf | 2002-10-14 09:12:52 +0000 | [diff] [blame] | 37 | #include "playlist.h" /* for playlist_shuffle */ |
Daniel Stenberg | 053d904 | 2002-08-22 15:47:30 +0000 | [diff] [blame] | 38 | #include "fat.h" /* For dotfile settings */ |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 39 | #include "sleeptimer.h" |
Heikki Hannikainen | 6eb4254 | 2002-08-06 10:52:51 +0000 | [diff] [blame] | 40 | #include "powermgmt.h" |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 41 | #include "rtc.h" |
Björn Stenberg | 457b8a0 | 2002-08-26 13:21:14 +0000 | [diff] [blame] | 42 | #include "ata.h" |
Björn Stenberg | de5477c | 2003-09-29 21:26:53 +0000 | [diff] [blame] | 43 | #include "tree.h" |
Robert Hak | 8f4c504 | 2002-10-14 11:55:20 +0000 | [diff] [blame] | 44 | #include "screens.h" |
Jörg Hohensohn | fa97f16 | 2004-03-19 22:15:53 +0000 | [diff] [blame] | 45 | #include "talk.h" |
Linus Nielsen Feltzing | 7ddf0d6 | 2004-04-20 10:23:57 +0000 | [diff] [blame] | 46 | #include "timefuncs.h" |
Linus Nielsen Feltzing | ade5d7b | 2004-07-26 16:06:59 +0000 | [diff] [blame] | 47 | #include "misc.h" |
Daniel Stenberg | f7c3ffa | 2002-09-27 10:18:48 +0000 | [diff] [blame] | 48 | #ifdef HAVE_LCD_BITMAP |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 49 | #include "peakmeter.h" |
Daniel Stenberg | f7c3ffa | 2002-09-27 10:18:48 +0000 | [diff] [blame] | 50 | #endif |
Björn Stenberg | 505eca7 | 2002-09-18 14:08:05 +0000 | [diff] [blame] | 51 | #include "lang.h" |
Jörg Hohensohn | 593cc00 | 2004-09-28 22:13:26 +0000 | [diff] [blame] | 52 | #if CONFIG_HWCODEC == MAS3507D |
Linus Nielsen Feltzing | 54a7e20 | 2003-11-04 00:18:19 +0000 | [diff] [blame] | 53 | void dac_line_in(bool enable); |
Linus Nielsen Feltzing | c22b411 | 2003-11-03 23:36:36 +0000 | [diff] [blame] | 54 | #endif |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 55 | #ifdef HAVE_ALARM_MOD |
| 56 | #include "alarm_menu.h" |
| 57 | #endif |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 58 | |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 59 | #ifdef HAVE_REMOTE_LCD |
| 60 | #include "lcd-remote.h" |
| 61 | #endif |
| 62 | |
Linus Nielsen Feltzing | 6271b2b | 2005-06-09 09:47:00 +0000 | [diff] [blame] | 63 | #if CONFIG_HWCODEC == MASNONE |
| 64 | #include "pcm_playback.h" |
| 65 | #endif |
| 66 | |
Jens Arnold | ccfa4cd | 2004-10-10 01:25:32 +0000 | [diff] [blame] | 67 | #ifdef HAVE_CHARGING |
Björn Stenberg | b1c429e | 2003-10-17 14:49:00 +0000 | [diff] [blame] | 68 | static bool car_adapter_mode(void) |
| 69 | { |
| 70 | return set_bool_options( str(LANG_CAR_ADAPTER_MODE), |
| 71 | &global_settings.car_adapter_mode, |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 72 | STR(LANG_SET_BOOL_YES), |
| 73 | STR(LANG_SET_BOOL_NO), |
Linus Nielsen Feltzing | 3d21781 | 2005-04-06 11:12:22 +0000 | [diff] [blame] | 74 | NULL); |
Björn Stenberg | b1c429e | 2003-10-17 14:49:00 +0000 | [diff] [blame] | 75 | } |
Jens Arnold | ccfa4cd | 2004-10-10 01:25:32 +0000 | [diff] [blame] | 76 | #endif |
Björn Stenberg | b1c429e | 2003-10-17 14:49:00 +0000 | [diff] [blame] | 77 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 78 | static bool contrast(void) |
Linus Nielsen Feltzing | 638184f | 2002-08-13 11:10:11 +0000 | [diff] [blame] | 79 | { |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 80 | return set_int( str(LANG_CONTRAST), "", UNIT_INT, |
| 81 | &global_settings.contrast, |
Linus Nielsen Feltzing | 9fb2d34 | 2003-06-25 23:24:47 +0000 | [diff] [blame] | 82 | lcd_set_contrast, 1, MIN_CONTRAST_SETTING, |
| 83 | MAX_CONTRAST_SETTING ); |
Linus Nielsen Feltzing | 638184f | 2002-08-13 11:10:11 +0000 | [diff] [blame] | 84 | } |
| 85 | |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 86 | #ifdef HAVE_REMOTE_LCD |
| 87 | static bool remote_contrast(void) |
| 88 | { |
| 89 | return set_int( str(LANG_CONTRAST), "", UNIT_INT, |
| 90 | &global_settings.remote_contrast, |
| 91 | lcd_remote_set_contrast, 1, MIN_CONTRAST_SETTING, |
| 92 | MAX_CONTRAST_SETTING ); |
| 93 | } |
| 94 | |
| 95 | static bool remote_invert(void) |
| 96 | { |
| 97 | bool rc = set_bool_options(str(LANG_INVERT), |
| 98 | &global_settings.remote_invert, |
| 99 | STR(LANG_INVERT_LCD_INVERSE), |
| 100 | STR(LANG_INVERT_LCD_NORMAL), |
| 101 | lcd_remote_set_invert_display); |
| 102 | return rc; |
| 103 | } |
Jens Arnold | bd1bb5f | 2005-06-17 21:43:00 +0000 | [diff] [blame^] | 104 | |
| 105 | static bool remote_flip_display(void) |
| 106 | { |
| 107 | bool rc = set_bool( str(LANG_FLIP_DISPLAY), |
| 108 | &global_settings.remote_flip_display); |
| 109 | |
| 110 | lcd_remote_set_flip(global_settings.remote_flip_display); |
| 111 | lcd_remote_update(); |
| 112 | |
| 113 | return rc; |
| 114 | } |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 115 | #endif |
| 116 | |
Jörg Hohensohn | fee8617 | 2004-12-18 10:29:47 +0000 | [diff] [blame] | 117 | #ifdef CONFIG_BACKLIGHT |
Björn Stenberg | 8d4471d | 2003-04-24 08:27:11 +0000 | [diff] [blame] | 118 | static bool caption_backlight(void) |
| 119 | { |
| 120 | bool rc = set_bool( str(LANG_CAPTION_BACKLIGHT), |
| 121 | &global_settings.caption_backlight); |
| 122 | |
| 123 | return rc; |
| 124 | } |
Jens Arnold | a1a08d0 | 2004-10-09 19:56:27 +0000 | [diff] [blame] | 125 | #endif |
Björn Stenberg | 8d4471d | 2003-04-24 08:27:11 +0000 | [diff] [blame] | 126 | |
Björn Stenberg | d1a6fa1 | 2003-06-05 09:38:26 +0000 | [diff] [blame] | 127 | /** |
| 128 | * Menu to set icon visibility |
| 129 | */ |
| 130 | static bool show_icons(void) |
| 131 | { |
| 132 | return set_bool( str(LANG_SHOW_ICONS), &global_settings.show_icons ); |
| 133 | } |
| 134 | |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 135 | #ifdef HAVE_LCD_BITMAP |
Robert Hak | da40726 | 2002-10-26 05:46:53 +0000 | [diff] [blame] | 136 | |
Björn Stenberg | d1a6fa1 | 2003-06-05 09:38:26 +0000 | [diff] [blame] | 137 | /** |
| 138 | * Menu to set LCD Mode (normal/inverse) |
| 139 | */ |
Björn Stenberg | b107920 | 2003-02-27 14:22:30 +0000 | [diff] [blame] | 140 | static bool invert(void) |
| 141 | { |
Björn Stenberg | 233b7f3 | 2003-04-24 13:13:16 +0000 | [diff] [blame] | 142 | bool rc = set_bool_options(str(LANG_INVERT), |
| 143 | &global_settings.invert, |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 144 | STR(LANG_INVERT_LCD_INVERSE), |
| 145 | STR(LANG_INVERT_LCD_NORMAL), |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 146 | lcd_set_invert_display); |
Björn Stenberg | 233b7f3 | 2003-04-24 13:13:16 +0000 | [diff] [blame] | 147 | return rc; |
Björn Stenberg | b107920 | 2003-02-27 14:22:30 +0000 | [diff] [blame] | 148 | } |
| 149 | |
Björn Stenberg | d1a6fa1 | 2003-06-05 09:38:26 +0000 | [diff] [blame] | 150 | /** |
| 151 | * Menu to set Line Selector Type (Pointer/Bar) |
| 152 | */ |
Linus Nielsen Feltzing | e43b78a | 2003-04-16 00:12:31 +0000 | [diff] [blame] | 153 | static bool invert_cursor(void) |
| 154 | { |
Björn Stenberg | 233b7f3 | 2003-04-24 13:13:16 +0000 | [diff] [blame] | 155 | return set_bool_options(str(LANG_INVERT_CURSOR), |
| 156 | &global_settings.invert_cursor, |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 157 | STR(LANG_INVERT_CURSOR_BAR), |
| 158 | STR(LANG_INVERT_CURSOR_POINTER), |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 159 | NULL); |
Linus Nielsen Feltzing | e43b78a | 2003-04-16 00:12:31 +0000 | [diff] [blame] | 160 | } |
| 161 | |
Robert Hak | da40726 | 2002-10-26 05:46:53 +0000 | [diff] [blame] | 162 | /** |
Jörg Hohensohn | a5e1d06 | 2003-12-20 10:00:37 +0000 | [diff] [blame] | 163 | * Menu to turn the display+buttons by 180 degrees |
| 164 | */ |
| 165 | static bool flip_display(void) |
| 166 | { |
| 167 | bool rc = set_bool( str(LANG_FLIP_DISPLAY), |
| 168 | &global_settings.flip_display); |
| 169 | |
| 170 | button_set_flip(global_settings.flip_display); |
| 171 | lcd_set_flip(global_settings.flip_display); |
| 172 | |
| 173 | return rc; |
| 174 | } |
| 175 | |
| 176 | /** |
Robert Hak | da40726 | 2002-10-26 05:46:53 +0000 | [diff] [blame] | 177 | * Menu to configure the battery display on status bar |
| 178 | */ |
Jens Arnold | 9d42e2b | 2005-01-30 13:48:44 +0000 | [diff] [blame] | 179 | static bool battery_display(void) |
Robert Hak | da40726 | 2002-10-26 05:46:53 +0000 | [diff] [blame] | 180 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 181 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 182 | { STR(LANG_DISPLAY_GRAPHIC) }, |
| 183 | { STR(LANG_DISPLAY_NUMERIC) } |
| 184 | }; |
Robert Hak | da40726 | 2002-10-26 05:46:53 +0000 | [diff] [blame] | 185 | return set_option( str(LANG_BATTERY_DISPLAY), |
Jens Arnold | 9d42e2b | 2005-01-30 13:48:44 +0000 | [diff] [blame] | 186 | &global_settings.battery_display, INT, names, 2, NULL); |
Robert Hak | da40726 | 2002-10-26 05:46:53 +0000 | [diff] [blame] | 187 | } |
| 188 | |
| 189 | /** |
| 190 | * Menu to configure the volume display on status bar |
| 191 | */ |
| 192 | static bool volume_type(void) |
| 193 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 194 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 195 | { STR(LANG_DISPLAY_GRAPHIC) }, |
| 196 | { STR(LANG_DISPLAY_NUMERIC) } |
| 197 | }; |
Robert Hak | da40726 | 2002-10-26 05:46:53 +0000 | [diff] [blame] | 198 | return set_option( str(LANG_VOLUME_DISPLAY), &global_settings.volume_type, |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 199 | INT, names, 2, NULL); |
Robert Hak | da40726 | 2002-10-26 05:46:53 +0000 | [diff] [blame] | 200 | } |
| 201 | |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 202 | #ifdef PM_DEBUG |
| 203 | static bool peak_meter_fps_menu(void) { |
| 204 | bool retval = false; |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 205 | retval = set_int( "Refresh rate", "/s", UNIT_PER_SEC, |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 206 | &peak_meter_fps, |
| 207 | NULL, 1, 5, 40); |
| 208 | return retval; |
| 209 | } |
| 210 | #endif /* PM_DEBUG */ |
| 211 | |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 212 | /** |
| 213 | * Menu to set the hold time of normal peaks. |
| 214 | */ |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 215 | static bool peak_meter_hold(void) { |
| 216 | bool retval = false; |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 217 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 218 | { STR(LANG_OFF) }, |
Jörg Hohensohn | fa97f16 | 2004-03-19 22:15:53 +0000 | [diff] [blame] | 219 | { "200 ms " , TALK_ID(200, UNIT_MS) }, |
| 220 | { "300 ms " , TALK_ID(300, UNIT_MS) }, |
| 221 | { "500 ms " , TALK_ID(500, UNIT_MS) }, |
| 222 | { "1 s" , TALK_ID(1, UNIT_SEC) }, |
| 223 | { "2 s" , TALK_ID(2, UNIT_SEC) }, |
| 224 | { "3 s" , TALK_ID(3, UNIT_SEC) }, |
| 225 | { "4 s" , TALK_ID(4, UNIT_SEC) }, |
| 226 | { "5 s" , TALK_ID(5, UNIT_SEC) }, |
| 227 | { "6 s" , TALK_ID(6, UNIT_SEC) }, |
| 228 | { "7 s" , TALK_ID(7, UNIT_SEC) }, |
| 229 | { "8 s" , TALK_ID(8, UNIT_SEC) }, |
| 230 | { "9 s" , TALK_ID(9, UNIT_SEC) }, |
| 231 | { "10 s" , TALK_ID(10, UNIT_SEC) }, |
| 232 | { "15 s" , TALK_ID(15, UNIT_SEC) }, |
| 233 | { "20 s" , TALK_ID(20, UNIT_SEC) }, |
| 234 | { "30 s" , TALK_ID(30, UNIT_SEC) }, |
| 235 | { "1 min" , TALK_ID(1, UNIT_MIN) } |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 236 | }; |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 237 | retval = set_option( str(LANG_PM_PEAK_HOLD), |
| 238 | &global_settings.peak_meter_hold, INT, names, |
| 239 | 18, NULL); |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 240 | |
| 241 | peak_meter_init_times(global_settings.peak_meter_release, |
| 242 | global_settings.peak_meter_hold, |
| 243 | global_settings.peak_meter_clip_hold); |
| 244 | |
| 245 | return retval; |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 246 | } |
| 247 | |
| 248 | /** |
| 249 | * Menu to set the hold time of clips. |
| 250 | */ |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 251 | static bool peak_meter_clip_hold(void) { |
| 252 | bool retval = false; |
| 253 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 254 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 255 | { STR(LANG_PM_ETERNAL) }, |
Jörg Hohensohn | fa97f16 | 2004-03-19 22:15:53 +0000 | [diff] [blame] | 256 | { "1s " , TALK_ID(1, UNIT_SEC) }, |
| 257 | { "2s " , TALK_ID(2, UNIT_SEC) }, |
| 258 | { "3s " , TALK_ID(3, UNIT_SEC) }, |
| 259 | { "4s " , TALK_ID(4, UNIT_SEC) }, |
| 260 | { "5s " , TALK_ID(5, UNIT_SEC) }, |
| 261 | { "6s " , TALK_ID(6, UNIT_SEC) }, |
| 262 | { "7s " , TALK_ID(7, UNIT_SEC) }, |
| 263 | { "8s " , TALK_ID(8, UNIT_SEC) }, |
| 264 | { "9s " , TALK_ID(9, UNIT_SEC) }, |
| 265 | { "10s" , TALK_ID(10, UNIT_SEC) }, |
| 266 | { "15s" , TALK_ID(15, UNIT_SEC) }, |
| 267 | { "20s" , TALK_ID(20, UNIT_SEC) }, |
| 268 | { "25s" , TALK_ID(25, UNIT_SEC) }, |
| 269 | { "30s" , TALK_ID(30, UNIT_SEC) }, |
| 270 | { "45s" , TALK_ID(45, UNIT_SEC) }, |
| 271 | { "60s" , TALK_ID(60, UNIT_SEC) }, |
| 272 | { "90s" , TALK_ID(90, UNIT_SEC) }, |
| 273 | { "2min" , TALK_ID(2, UNIT_MIN) }, |
| 274 | { "3min" , TALK_ID(3, UNIT_MIN) }, |
| 275 | { "5min" , TALK_ID(5, UNIT_MIN) }, |
| 276 | { "10min" , TALK_ID(10, UNIT_MIN) }, |
| 277 | { "20min" , TALK_ID(20, UNIT_MIN) }, |
| 278 | { "45min" , TALK_ID(45, UNIT_MIN) }, |
| 279 | { "90min" , TALK_ID(90, UNIT_MIN) } |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 280 | }; |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 281 | retval = set_option( str(LANG_PM_CLIP_HOLD), |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 282 | &global_settings.peak_meter_clip_hold, INT, names, |
| 283 | 25, peak_meter_set_clip_hold); |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 284 | |
| 285 | peak_meter_init_times(global_settings.peak_meter_release, |
| 286 | global_settings.peak_meter_hold, |
| 287 | global_settings.peak_meter_clip_hold); |
| 288 | |
| 289 | return retval; |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 290 | } |
| 291 | |
| 292 | /** |
| 293 | * Menu to set the release time of the peak meter. |
| 294 | */ |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 295 | static bool peak_meter_release(void) { |
| 296 | bool retval = false; |
| 297 | |
| 298 | /* The range of peak_meter_release is restricted so that it |
| 299 | fits into a 7 bit number. The 8th bit is used for storing |
| 300 | something else in the rtc ram. |
| 301 | Also, the max value is 0x7e, since the RTC value 0xff is reserved */ |
Jens Arnold | 359ef77 | 2004-11-19 01:13:33 +0000 | [diff] [blame] | 302 | retval = set_int( str(LANG_PM_RELEASE), str(LANG_PM_UNITS_PER_READ), |
| 303 | LANG_PM_UNITS_PER_READ, |
| 304 | &global_settings.peak_meter_release, |
| 305 | NULL, 1, 1, 0x7e); |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 306 | |
| 307 | peak_meter_init_times(global_settings.peak_meter_release, |
| 308 | global_settings.peak_meter_hold, |
| 309 | global_settings.peak_meter_clip_hold); |
| 310 | |
| 311 | return retval; |
| 312 | } |
| 313 | |
| 314 | /** |
| 315 | * Menu to select wether the scale of the meter |
| 316 | * displays dBfs of linear values. |
| 317 | */ |
| 318 | static bool peak_meter_scale(void) { |
| 319 | bool retval = false; |
| 320 | bool use_dbfs = global_settings.peak_meter_dbfs; |
| 321 | retval = set_bool_options(str(LANG_PM_SCALE), |
| 322 | &use_dbfs, |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 323 | STR(LANG_PM_DBFS), STR(LANG_PM_LINEAR), |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 324 | NULL); |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 325 | |
| 326 | /* has the user really changed the scale? */ |
| 327 | if (use_dbfs != global_settings.peak_meter_dbfs) { |
| 328 | |
| 329 | /* store the change */ |
| 330 | global_settings.peak_meter_dbfs = use_dbfs; |
| 331 | peak_meter_set_use_dbfs(use_dbfs); |
| 332 | |
| 333 | /* If the user changed the scale mode the meaning of |
| 334 | peak_meter_min (peak_meter_max) has changed. Thus we have |
| 335 | to convert the values stored in global_settings. */ |
| 336 | if (use_dbfs) { |
| 337 | |
| 338 | /* we only store -dBfs */ |
| 339 | global_settings.peak_meter_min = -peak_meter_get_min() / 100; |
| 340 | global_settings.peak_meter_max = -peak_meter_get_max() / 100; |
| 341 | } else { |
| 342 | int max; |
| 343 | |
| 344 | /* linear percent */ |
| 345 | global_settings.peak_meter_min = peak_meter_get_min(); |
| 346 | |
| 347 | /* converting dBfs -> percent results in a precision loss. |
| 348 | I assume that the user doesn't bother that conversion |
| 349 | dBfs <-> percent isn't symmetrical for odd values but that |
| 350 | he wants 0 dBfs == 100%. Thus I 'correct' the percent value |
| 351 | resulting from dBfs -> percent manually here */ |
| 352 | max = peak_meter_get_max(); |
| 353 | global_settings.peak_meter_max = max < 99 ? max : 100; |
| 354 | } |
| 355 | settings_apply_pm_range(); |
| 356 | } |
| 357 | return retval; |
| 358 | } |
| 359 | |
| 360 | /** |
| 361 | * Adjust the min value of the value range that |
| 362 | * the peak meter shall visualize. |
| 363 | */ |
| 364 | static bool peak_meter_min(void) { |
| 365 | bool retval = false; |
| 366 | if (global_settings.peak_meter_dbfs) { |
| 367 | |
| 368 | /* for dBfs scale */ |
| 369 | int range_max = -global_settings.peak_meter_max; |
| 370 | int min = -global_settings.peak_meter_min; |
| 371 | |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 372 | retval = set_int(str(LANG_PM_MIN), str(LANG_PM_DBFS), UNIT_DB, |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 373 | &min, NULL, 1, -89, range_max); |
| 374 | |
| 375 | global_settings.peak_meter_min = - min; |
| 376 | } |
| 377 | |
| 378 | /* for linear scale */ |
| 379 | else { |
| 380 | int min = global_settings.peak_meter_min; |
| 381 | |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 382 | retval = set_int(str(LANG_PM_MIN), "%", UNIT_PERCENT, |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 383 | &min, NULL, |
| 384 | 1, 0, global_settings.peak_meter_max - 1); |
| 385 | |
| 386 | global_settings.peak_meter_min = (unsigned char)min; |
| 387 | } |
| 388 | |
| 389 | settings_apply_pm_range(); |
| 390 | return retval; |
| 391 | } |
| 392 | |
| 393 | |
| 394 | /** |
| 395 | * Adjust the max value of the value range that |
| 396 | * the peak meter shall visualize. |
| 397 | */ |
| 398 | static bool peak_meter_max(void) { |
| 399 | bool retval = false; |
| 400 | if (global_settings.peak_meter_dbfs) { |
| 401 | |
| 402 | /* for dBfs scale */ |
| 403 | int range_min = -global_settings.peak_meter_min; |
| 404 | int max = -global_settings.peak_meter_max;; |
| 405 | |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 406 | retval = set_int(str(LANG_PM_MAX), str(LANG_PM_DBFS), UNIT_DB, |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 407 | &max, NULL, 1, range_min, 0); |
| 408 | |
| 409 | global_settings.peak_meter_max = - max; |
| 410 | |
| 411 | } |
| 412 | |
| 413 | /* for linear scale */ |
| 414 | else { |
| 415 | int max = global_settings.peak_meter_max; |
| 416 | |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 417 | retval = set_int(str(LANG_PM_MAX), "%", UNIT_PERCENT, |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 418 | &max, NULL, |
| 419 | 1, global_settings.peak_meter_min + 1, 100); |
| 420 | |
| 421 | global_settings.peak_meter_max = (unsigned char)max; |
| 422 | } |
| 423 | |
| 424 | settings_apply_pm_range(); |
| 425 | return retval; |
| 426 | } |
| 427 | |
| 428 | /** |
| 429 | * Menu to select wether the meter is in |
| 430 | * precision or in energy saver mode |
| 431 | */ |
| 432 | static bool peak_meter_performance(void) { |
| 433 | bool retval = false; |
| 434 | retval = set_bool_options(str(LANG_PM_PERFORMANCE), |
| 435 | &global_settings.peak_meter_performance, |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 436 | STR(LANG_PM_HIGH_PERFORMANCE), STR(LANG_PM_ENERGY_SAVER), |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 437 | NULL); |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 438 | |
| 439 | if (global_settings.peak_meter_performance) { |
| 440 | peak_meter_fps = 25; |
| 441 | } else { |
| 442 | peak_meter_fps = 20; |
| 443 | } |
| 444 | return retval; |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 445 | } |
| 446 | |
| 447 | /** |
| 448 | * Menu to configure the peak meter |
| 449 | */ |
| 450 | static bool peak_meter_menu(void) |
| 451 | { |
| 452 | int m; |
| 453 | bool result; |
| 454 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 455 | static const struct menu_item items[] = { |
| 456 | { ID2P(LANG_PM_RELEASE) , peak_meter_release }, |
| 457 | { ID2P(LANG_PM_PEAK_HOLD), peak_meter_hold }, |
| 458 | { ID2P(LANG_PM_CLIP_HOLD), peak_meter_clip_hold }, |
| 459 | { ID2P(LANG_PM_PERFORMANCE), peak_meter_performance }, |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 460 | #ifdef PM_DEBUG |
Jörg Hohensohn | 4f36ea8 | 2004-03-14 21:33:53 +0000 | [diff] [blame] | 461 | { "Refresh rate" , -1 , peak_meter_fps_menu }, |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 462 | #endif |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 463 | { ID2P(LANG_PM_SCALE) , peak_meter_scale }, |
| 464 | { ID2P(LANG_PM_MIN) , peak_meter_min }, |
| 465 | { ID2P(LANG_PM_MAX) , peak_meter_max }, |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 466 | }; |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 467 | |
| 468 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 469 | NULL, NULL, NULL ); |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 470 | result = menu_run(m); |
| 471 | menu_exit(m); |
| 472 | return result; |
| 473 | } |
Linus Nielsen Feltzing | fd0cc3b | 2002-10-29 12:09:15 +0000 | [diff] [blame] | 474 | #endif /* HAVE_LCD_BITMAP */ |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 475 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 476 | static bool shuffle(void) |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 477 | { |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 478 | return set_bool( str(LANG_SHUFFLE), &global_settings.playlist_shuffle ); |
Björn Stenberg | 60b356e | 2002-06-27 01:08:11 +0000 | [diff] [blame] | 479 | } |
Björn Stenberg | a6d0abb | 2002-10-04 08:48:20 +0000 | [diff] [blame] | 480 | |
| 481 | static bool repeat_mode(void) |
| 482 | { |
| 483 | bool result; |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 484 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 485 | { STR(LANG_OFF) }, |
| 486 | { STR(LANG_REPEAT_ALL) }, |
| 487 | { STR(LANG_REPEAT_ONE) } |
| 488 | }; |
Björn Stenberg | a6d0abb | 2002-10-04 08:48:20 +0000 | [diff] [blame] | 489 | int old_repeat = global_settings.repeat_mode; |
| 490 | |
| 491 | result = set_option( str(LANG_REPEAT), &global_settings.repeat_mode, |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 492 | INT, names, 3, NULL ); |
Björn Stenberg | a6d0abb | 2002-10-04 08:48:20 +0000 | [diff] [blame] | 493 | |
| 494 | if (old_repeat != global_settings.repeat_mode) |
Linus Nielsen Feltzing | 8a237a8 | 2005-04-04 12:06:29 +0000 | [diff] [blame] | 495 | audio_flush_and_reload_tracks(); |
Björn Stenberg | a6d0abb | 2002-10-04 08:48:20 +0000 | [diff] [blame] | 496 | |
| 497 | return result; |
| 498 | } |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 499 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 500 | static bool play_selected(void) |
Linus Nielsen Feltzing | 25316c5 | 2002-09-18 10:13:09 +0000 | [diff] [blame] | 501 | { |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 502 | return set_bool( str(LANG_PLAY_SELECTED), &global_settings.play_selected ); |
Linus Nielsen Feltzing | 25316c5 | 2002-09-18 10:13:09 +0000 | [diff] [blame] | 503 | } |
| 504 | |
Björn Stenberg | a7dcf91 | 2002-09-24 19:12:09 +0000 | [diff] [blame] | 505 | static bool dir_filter(void) |
Björn Stenberg | 60b356e | 2002-06-27 01:08:11 +0000 | [diff] [blame] | 506 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 507 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 508 | { STR(LANG_FILTER_ALL) }, |
| 509 | { STR(LANG_FILTER_SUPPORTED) }, |
| 510 | { STR(LANG_FILTER_MUSIC) }, |
Björn Stenberg | fc53fd7 | 2005-01-17 11:37:36 +0000 | [diff] [blame] | 511 | { STR(LANG_FILTER_PLAYLIST) }, |
| 512 | { STR(LANG_FILTER_ID3DB) } |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 513 | }; |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 514 | return set_option( str(LANG_FILTER), &global_settings.dirfilter, INT, |
Björn Stenberg | fc53fd7 | 2005-01-17 11:37:36 +0000 | [diff] [blame] | 515 | names, 5, NULL ); |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 516 | } |
| 517 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 518 | static bool sort_case(void) |
Linus Nielsen Feltzing | c132c48 | 2002-07-22 16:39:17 +0000 | [diff] [blame] | 519 | { |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 520 | return set_bool( str(LANG_SORT_CASE), &global_settings.sort_case ); |
Linus Nielsen Feltzing | c132c48 | 2002-07-22 16:39:17 +0000 | [diff] [blame] | 521 | } |
| 522 | |
Jörg Hohensohn | 5c8a2f5 | 2004-06-22 09:16:44 +0000 | [diff] [blame] | 523 | static bool sort_file(void) |
| 524 | { |
Jörg Hohensohn | d79b1f5 | 2004-06-23 07:28:35 +0000 | [diff] [blame] | 525 | int oldval = global_settings.sort_file; |
| 526 | bool ret; |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 527 | static const struct opt_items names[] = { |
Jörg Hohensohn | 5c8a2f5 | 2004-06-22 09:16:44 +0000 | [diff] [blame] | 528 | { STR(LANG_SORT_ALPHA) }, |
| 529 | { STR(LANG_SORT_DATE) }, |
| 530 | { STR(LANG_SORT_DATE_REVERSE) }, |
| 531 | { STR(LANG_SORT_TYPE) } |
| 532 | }; |
Jörg Hohensohn | d79b1f5 | 2004-06-23 07:28:35 +0000 | [diff] [blame] | 533 | ret = set_option( str(LANG_SORT_FILE), &global_settings.sort_file, INT, |
Jörg Hohensohn | 5c8a2f5 | 2004-06-22 09:16:44 +0000 | [diff] [blame] | 534 | names, 4, NULL ); |
Jörg Hohensohn | d79b1f5 | 2004-06-23 07:28:35 +0000 | [diff] [blame] | 535 | if (global_settings.sort_file != oldval) |
| 536 | reload_directory(); /* force reload if this has changed */ |
| 537 | return ret; |
Jörg Hohensohn | 5c8a2f5 | 2004-06-22 09:16:44 +0000 | [diff] [blame] | 538 | } |
| 539 | |
| 540 | static bool sort_dir(void) |
| 541 | { |
Jörg Hohensohn | d79b1f5 | 2004-06-23 07:28:35 +0000 | [diff] [blame] | 542 | int oldval = global_settings.sort_dir; |
| 543 | bool ret; |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 544 | static const struct opt_items names[] = { |
Jörg Hohensohn | 5c8a2f5 | 2004-06-22 09:16:44 +0000 | [diff] [blame] | 545 | { STR(LANG_SORT_ALPHA) }, |
| 546 | { STR(LANG_SORT_DATE) }, |
| 547 | { STR(LANG_SORT_DATE_REVERSE) } |
| 548 | }; |
Jörg Hohensohn | d79b1f5 | 2004-06-23 07:28:35 +0000 | [diff] [blame] | 549 | ret = set_option( str(LANG_SORT_DIR), &global_settings.sort_dir, INT, |
Jörg Hohensohn | 5c8a2f5 | 2004-06-22 09:16:44 +0000 | [diff] [blame] | 550 | names, 3, NULL ); |
Jörg Hohensohn | d79b1f5 | 2004-06-23 07:28:35 +0000 | [diff] [blame] | 551 | if (global_settings.sort_dir != oldval) |
| 552 | reload_directory(); /* force reload if this has changed */ |
| 553 | return ret; |
Jörg Hohensohn | 5c8a2f5 | 2004-06-22 09:16:44 +0000 | [diff] [blame] | 554 | } |
| 555 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 556 | static bool resume(void) |
Björn Stenberg | 6224cdb | 2002-08-16 14:41:47 +0000 | [diff] [blame] | 557 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 558 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 559 | { STR(LANG_SET_BOOL_NO) }, |
| 560 | { STR(LANG_RESUME_SETTING_ASK) }, |
| 561 | { STR(LANG_RESUME_SETTING_ASK_ONCE) }, |
| 562 | { STR(LANG_SET_BOOL_YES) } |
| 563 | }; |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 564 | return set_option( str(LANG_RESUME), &global_settings.resume, INT, |
Robert Hak | c88751f | 2002-10-16 07:25:33 +0000 | [diff] [blame] | 565 | names, 4, NULL ); |
Björn Stenberg | 6224cdb | 2002-08-16 14:41:47 +0000 | [diff] [blame] | 566 | } |
| 567 | |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 568 | static bool autocreatebookmark(void) |
| 569 | { |
Henrik Backe | e735356 | 2004-04-19 17:51:47 +0000 | [diff] [blame] | 570 | bool retval = false; |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 571 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 572 | { STR(LANG_SET_BOOL_NO) }, |
| 573 | { STR(LANG_SET_BOOL_YES) }, |
| 574 | { STR(LANG_RESUME_SETTING_ASK) }, |
| 575 | { STR(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES) }, |
| 576 | { STR(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK) } |
| 577 | }; |
Henrik Backe | e735356 | 2004-04-19 17:51:47 +0000 | [diff] [blame] | 578 | |
| 579 | retval = set_option( str(LANG_BOOKMARK_SETTINGS_AUTOCREATE), |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 580 | &global_settings.autocreatebookmark, INT, |
| 581 | names, 5, NULL ); |
Henrik Backe | e735356 | 2004-04-19 17:51:47 +0000 | [diff] [blame] | 582 | if(global_settings.autocreatebookmark == BOOKMARK_RECENT_ONLY_YES || |
| 583 | global_settings.autocreatebookmark == BOOKMARK_RECENT_ONLY_ASK) |
| 584 | { |
| 585 | if(global_settings.usemrb == BOOKMARK_NO) |
| 586 | global_settings.usemrb = BOOKMARK_YES; |
| 587 | |
| 588 | } |
| 589 | return retval; |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 590 | } |
| 591 | |
| 592 | static bool autoloadbookmark(void) |
| 593 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 594 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 595 | { STR(LANG_SET_BOOL_NO) }, |
| 596 | { STR(LANG_SET_BOOL_YES) }, |
| 597 | { STR(LANG_RESUME_SETTING_ASK) } |
| 598 | }; |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 599 | return set_option( str(LANG_BOOKMARK_SETTINGS_AUTOLOAD), |
| 600 | &global_settings.autoloadbookmark, INT, |
| 601 | names, 3, NULL ); |
| 602 | } |
| 603 | |
| 604 | static bool useMRB(void) |
| 605 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 606 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 607 | { STR(LANG_SET_BOOL_NO) }, |
| 608 | { STR(LANG_SET_BOOL_YES) }, |
| 609 | { STR(LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY) } |
| 610 | }; |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 611 | return set_option( str(LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS), |
| 612 | &global_settings.usemrb, INT, |
| 613 | names, 3, NULL ); |
| 614 | } |
Jens Arnold | a1a08d0 | 2004-10-09 19:56:27 +0000 | [diff] [blame] | 615 | |
Jörg Hohensohn | fee8617 | 2004-12-18 10:29:47 +0000 | [diff] [blame] | 616 | #ifdef CONFIG_BACKLIGHT |
| 617 | #ifdef HAVE_CHARGING |
Daniel Stenberg | b95fe1a | 2002-10-01 10:59:36 +0000 | [diff] [blame] | 618 | static bool backlight_on_when_charging(void) |
| 619 | { |
| 620 | bool result = set_bool(str(LANG_BACKLIGHT_ON_WHEN_CHARGING), |
| 621 | &global_settings.backlight_on_when_charging); |
| 622 | backlight_set_on_when_charging(global_settings.backlight_on_when_charging); |
| 623 | return result; |
| 624 | } |
Jörg Hohensohn | fee8617 | 2004-12-18 10:29:47 +0000 | [diff] [blame] | 625 | #endif |
Daniel Stenberg | b95fe1a | 2002-10-01 10:59:36 +0000 | [diff] [blame] | 626 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 627 | static bool backlight_timer(void) |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 628 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 629 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 630 | { STR(LANG_OFF) }, |
| 631 | { STR(LANG_ON) }, |
Jörg Hohensohn | fa97f16 | 2004-03-19 22:15:53 +0000 | [diff] [blame] | 632 | { "1s ", TALK_ID(1, UNIT_SEC) }, |
| 633 | { "2s ", TALK_ID(2, UNIT_SEC) }, |
| 634 | { "3s ", TALK_ID(3, UNIT_SEC) }, |
| 635 | { "4s ", TALK_ID(4, UNIT_SEC) }, |
| 636 | { "5s ", TALK_ID(5, UNIT_SEC) }, |
| 637 | { "6s ", TALK_ID(6, UNIT_SEC) }, |
| 638 | { "7s ", TALK_ID(7, UNIT_SEC) }, |
| 639 | { "8s ", TALK_ID(8, UNIT_SEC) }, |
| 640 | { "9s ", TALK_ID(9, UNIT_SEC) }, |
| 641 | { "10s", TALK_ID(10, UNIT_SEC) }, |
| 642 | { "15s", TALK_ID(15, UNIT_SEC) }, |
| 643 | { "20s", TALK_ID(20, UNIT_SEC) }, |
| 644 | { "25s", TALK_ID(25, UNIT_SEC) }, |
| 645 | { "30s", TALK_ID(30, UNIT_SEC) }, |
| 646 | { "45s", TALK_ID(45, UNIT_SEC) }, |
| 647 | { "60s", TALK_ID(60, UNIT_SEC) }, |
| 648 | { "90s", TALK_ID(90, UNIT_SEC) } |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 649 | }; |
Daniel Stenberg | b95fe1a | 2002-10-01 10:59:36 +0000 | [diff] [blame] | 650 | return set_option(str(LANG_BACKLIGHT), &global_settings.backlight_timeout, |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 651 | INT, names, 19, backlight_set_timeout ); |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 652 | } |
Jörg Hohensohn | fee8617 | 2004-12-18 10:29:47 +0000 | [diff] [blame] | 653 | #endif /* CONFIG_BACKLIGHT */ |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 654 | |
Christian Gmeiner | 7477c09 | 2005-05-30 00:00:22 +0000 | [diff] [blame] | 655 | #ifdef HAVE_REMOTE_LCD |
| 656 | |
| 657 | static bool remote_backlight_timer(void) |
| 658 | { |
| 659 | static const struct opt_items names[] = { |
| 660 | { STR(LANG_OFF) }, |
| 661 | { STR(LANG_ON) }, |
| 662 | { "1s ", TALK_ID(1, UNIT_SEC) }, |
| 663 | { "2s ", TALK_ID(2, UNIT_SEC) }, |
| 664 | { "3s ", TALK_ID(3, UNIT_SEC) }, |
| 665 | { "4s ", TALK_ID(4, UNIT_SEC) }, |
| 666 | { "5s ", TALK_ID(5, UNIT_SEC) }, |
| 667 | { "6s ", TALK_ID(6, UNIT_SEC) }, |
| 668 | { "7s ", TALK_ID(7, UNIT_SEC) }, |
| 669 | { "8s ", TALK_ID(8, UNIT_SEC) }, |
| 670 | { "9s ", TALK_ID(9, UNIT_SEC) }, |
| 671 | { "10s", TALK_ID(10, UNIT_SEC) }, |
| 672 | { "15s", TALK_ID(15, UNIT_SEC) }, |
| 673 | { "20s", TALK_ID(20, UNIT_SEC) }, |
| 674 | { "25s", TALK_ID(25, UNIT_SEC) }, |
| 675 | { "30s", TALK_ID(30, UNIT_SEC) }, |
| 676 | { "45s", TALK_ID(45, UNIT_SEC) }, |
| 677 | { "60s", TALK_ID(60, UNIT_SEC) }, |
| 678 | { "90s", TALK_ID(90, UNIT_SEC) } |
| 679 | }; |
| 680 | return set_option(str(LANG_BACKLIGHT), &global_settings.remote_backlight_timeout, |
Christian Gmeiner | ca98052 | 2005-05-30 00:45:46 +0000 | [diff] [blame] | 681 | INT, names, 19, remote_backlight_set_timeout ); |
Christian Gmeiner | 7477c09 | 2005-05-30 00:00:22 +0000 | [diff] [blame] | 682 | } |
| 683 | |
| 684 | #endif /* HAVE_REMOTE_LCD */ |
| 685 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 686 | static bool poweroff_idle_timer(void) |
Linus Nielsen Feltzing | 083a6db | 2002-09-23 11:42:48 +0000 | [diff] [blame] | 687 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 688 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 689 | { STR(LANG_OFF) }, |
Jörg Hohensohn | fa97f16 | 2004-03-19 22:15:53 +0000 | [diff] [blame] | 690 | { "1m ", TALK_ID(1, UNIT_MIN) }, |
| 691 | { "2m ", TALK_ID(2, UNIT_MIN) }, |
| 692 | { "3m ", TALK_ID(3, UNIT_MIN) }, |
| 693 | { "4m ", TALK_ID(4, UNIT_MIN) }, |
| 694 | { "5m ", TALK_ID(5, UNIT_MIN) }, |
| 695 | { "6m ", TALK_ID(6, UNIT_MIN) }, |
| 696 | { "7m ", TALK_ID(7, UNIT_MIN) }, |
| 697 | { "8m ", TALK_ID(8, UNIT_MIN) }, |
| 698 | { "9m ", TALK_ID(9, UNIT_MIN) }, |
| 699 | { "10m", TALK_ID(10, UNIT_MIN) }, |
| 700 | { "15m", TALK_ID(15, UNIT_MIN) }, |
| 701 | { "30m", TALK_ID(30, UNIT_MIN) }, |
| 702 | { "45m", TALK_ID(45, UNIT_MIN) }, |
| 703 | { "60m", TALK_ID(60, UNIT_MIN) } |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 704 | }; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 705 | return set_option(str(LANG_POWEROFF_IDLE), &global_settings.poweroff, |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 706 | INT, names, 15, set_poweroff_timeout); |
Linus Nielsen Feltzing | 083a6db | 2002-09-23 11:42:48 +0000 | [diff] [blame] | 707 | } |
| 708 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 709 | static bool scroll_speed(void) |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 710 | { |
Jens Arnold | 566eae2 | 2004-10-15 20:30:29 +0000 | [diff] [blame] | 711 | return set_int(str(LANG_SCROLL), "", UNIT_INT, |
| 712 | &global_settings.scroll_speed, |
| 713 | &lcd_scroll_speed, 1, 0, 15 ); |
Robert Hak | 048fa13 | 2002-12-12 17:20:37 +0000 | [diff] [blame] | 714 | } |
| 715 | |
| 716 | |
| 717 | static bool scroll_delay(void) |
| 718 | { |
| 719 | int dummy = global_settings.scroll_delay * (HZ/10); |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 720 | int rc = set_int(str(LANG_SCROLL_DELAY), "ms", UNIT_MS, |
| 721 | &dummy, |
Robert Hak | 89d8f76 | 2002-12-12 20:34:30 +0000 | [diff] [blame] | 722 | &lcd_scroll_delay, 100, 0, 2500 ); |
Robert Hak | 048fa13 | 2002-12-12 17:20:37 +0000 | [diff] [blame] | 723 | global_settings.scroll_delay = dummy / (HZ/10); |
| 724 | return rc; |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 725 | } |
| 726 | |
Björn Stenberg | a2e98c1 | 2002-12-12 15:20:37 +0000 | [diff] [blame] | 727 | #ifdef HAVE_LCD_BITMAP |
| 728 | static bool scroll_step(void) |
| 729 | { |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 730 | return set_int(str(LANG_SCROLL_STEP_EXAMPLE), "pixels", UNIT_PIXEL, |
Björn Stenberg | a2e98c1 | 2002-12-12 15:20:37 +0000 | [diff] [blame] | 731 | &global_settings.scroll_step, |
| 732 | &lcd_scroll_step, 1, 1, LCD_WIDTH ); |
| 733 | } |
Mats Lidell | c65dadf | 2003-01-14 10:48:01 +0000 | [diff] [blame] | 734 | #endif |
Björn Stenberg | a2e98c1 | 2002-12-12 15:20:37 +0000 | [diff] [blame] | 735 | |
Björn Stenberg | a2e98c1 | 2002-12-12 15:20:37 +0000 | [diff] [blame] | 736 | static bool bidir_limit(void) |
| 737 | { |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 738 | return set_int(str(LANG_BIDIR_SCROLL), "%", UNIT_PERCENT, |
| 739 | &global_settings.bidir_limit, |
Björn Stenberg | a2e98c1 | 2002-12-12 15:20:37 +0000 | [diff] [blame] | 740 | &lcd_bidir_scroll, 25, 0, 200 ); |
| 741 | } |
Björn Stenberg | a2e98c1 | 2002-12-12 15:20:37 +0000 | [diff] [blame] | 742 | |
Kjell Ericson | 53f156a | 2003-05-22 06:42:14 +0000 | [diff] [blame] | 743 | #ifdef HAVE_LCD_CHARCELLS |
| 744 | static bool jump_scroll(void) |
| 745 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 746 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 747 | { STR(LANG_OFF) }, |
| 748 | { STR(LANG_ONE_TIME) }, |
Jörg Hohensohn | fa97f16 | 2004-03-19 22:15:53 +0000 | [diff] [blame] | 749 | { "2", TALK_ID(2, UNIT_INT) }, |
| 750 | { "3", TALK_ID(3, UNIT_INT) }, |
| 751 | { "4", TALK_ID(4, UNIT_INT) }, |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 752 | { STR(LANG_ALWAYS) } |
| 753 | }; |
Kjell Ericson | 6143eeb | 2003-05-27 12:54:11 +0000 | [diff] [blame] | 754 | bool ret; |
| 755 | ret=set_option(str(LANG_JUMP_SCROLL), &global_settings.jump_scroll, |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 756 | INT, names, 6, lcd_jump_scroll); |
Kjell Ericson | 6143eeb | 2003-05-27 12:54:11 +0000 | [diff] [blame] | 757 | return ret; |
| 758 | } |
| 759 | static bool jump_scroll_delay(void) |
| 760 | { |
| 761 | int dummy = global_settings.jump_scroll_delay * (HZ/10); |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 762 | int rc = set_int(str(LANG_JUMP_SCROLL_DELAY), "ms", UNIT_MS, |
| 763 | &dummy, |
Kjell Ericson | 6143eeb | 2003-05-27 12:54:11 +0000 | [diff] [blame] | 764 | &lcd_jump_scroll_delay, 100, 0, 2500 ); |
| 765 | global_settings.jump_scroll_delay = dummy / (HZ/10); |
| 766 | return rc; |
Kjell Ericson | 53f156a | 2003-05-22 06:42:14 +0000 | [diff] [blame] | 767 | } |
| 768 | #endif |
| 769 | |
Uwe Freese | 0bf70e6 | 2002-12-16 22:58:48 +0000 | [diff] [blame] | 770 | #ifndef SIMULATOR |
Uwe Freese | 4cff030 | 2002-12-15 18:12:00 +0000 | [diff] [blame] | 771 | /** |
| 772 | * Menu to set the battery capacity |
| 773 | */ |
Uwe Freese | 0bf70e6 | 2002-12-16 22:58:48 +0000 | [diff] [blame] | 774 | static bool battery_capacity(void) |
| 775 | { |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 776 | return set_int(str(LANG_BATTERY_CAPACITY), "mAh", UNIT_MAH, |
| 777 | &global_settings.battery_capacity, |
Jens Arnold | fe32456 | 2004-10-10 10:28:21 +0000 | [diff] [blame] | 778 | &set_battery_capacity, 50, BATTERY_CAPACITY_MIN, |
| 779 | BATTERY_CAPACITY_MAX ); |
Uwe Freese | 4cff030 | 2002-12-15 18:12:00 +0000 | [diff] [blame] | 780 | } |
Jens Arnold | 91846a1 | 2005-01-30 16:25:46 +0000 | [diff] [blame] | 781 | |
| 782 | #if BATTERY_TYPES_COUNT > 1 |
| 783 | static bool battery_type(void) |
| 784 | { |
| 785 | static const struct opt_items names[] = { |
| 786 | { STR(LANG_BATTERY_TYPE_ALKALINE) }, |
| 787 | { STR(LANG_BATTERY_TYPE_NIMH) } |
| 788 | }; |
| 789 | |
| 790 | return set_option(str(LANG_BATTERY_TYPE), &global_settings.battery_type, |
| 791 | INT, names, 2, set_battery_type); |
| 792 | } |
| 793 | #endif |
Uwe Freese | 0bf70e6 | 2002-12-16 22:58:48 +0000 | [diff] [blame] | 794 | #endif |
Uwe Freese | 4cff030 | 2002-12-15 18:12:00 +0000 | [diff] [blame] | 795 | |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 796 | #ifdef HAVE_RTC |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 797 | static bool timedate_set(void) |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 798 | { |
Linus Nielsen Feltzing | 7ddf0d6 | 2004-04-20 10:23:57 +0000 | [diff] [blame] | 799 | struct tm tm; |
| 800 | int timedate[8]; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 801 | bool result; |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 802 | |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 803 | timedate[0] = rtc_read(0x03); /* hour */ |
| 804 | timedate[1] = rtc_read(0x02); /* minute */ |
| 805 | timedate[2] = rtc_read(0x01); /* second */ |
Markus Braun | 2012acf | 2002-08-09 13:50:58 +0000 | [diff] [blame] | 806 | timedate[3] = rtc_read(0x07); /* year */ |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 807 | timedate[4] = rtc_read(0x06); /* month */ |
Markus Braun | 2012acf | 2002-08-09 13:50:58 +0000 | [diff] [blame] | 808 | timedate[5] = rtc_read(0x05); /* day */ |
Markus Braun | 44ee2ab | 2003-05-27 14:28:08 +0000 | [diff] [blame] | 809 | |
Linus Nielsen Feltzing | 7ddf0d6 | 2004-04-20 10:23:57 +0000 | [diff] [blame] | 810 | /* Make a local copy of the time struct */ |
| 811 | memcpy(&tm, get_time(), sizeof(struct tm)); |
Markus Braun | 44ee2ab | 2003-05-27 14:28:08 +0000 | [diff] [blame] | 812 | |
| 813 | /* do some range checks */ |
| 814 | /* This prevents problems with time/date setting after a power loss */ |
Linus Nielsen Feltzing | 7ddf0d6 | 2004-04-20 10:23:57 +0000 | [diff] [blame] | 815 | if (!valid_time(&tm)) |
Markus Braun | 44ee2ab | 2003-05-27 14:28:08 +0000 | [diff] [blame] | 816 | { |
| 817 | /* hour */ |
Linus Nielsen Feltzing | 7ddf0d6 | 2004-04-20 10:23:57 +0000 | [diff] [blame] | 818 | tm.tm_hour = 0; |
| 819 | tm.tm_min = 0; |
| 820 | tm.tm_sec = 0; |
| 821 | tm.tm_mday = 1; |
| 822 | tm.tm_mon = 0; |
| 823 | tm.tm_wday = 1; |
| 824 | tm.tm_year = 100; |
Markus Braun | 44ee2ab | 2003-05-27 14:28:08 +0000 | [diff] [blame] | 825 | } |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 826 | |
Linus Nielsen Feltzing | 7ddf0d6 | 2004-04-20 10:23:57 +0000 | [diff] [blame] | 827 | result = set_time_screen(str(LANG_TIME), &tm); |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 828 | |
Linus Nielsen Feltzing | 7ddf0d6 | 2004-04-20 10:23:57 +0000 | [diff] [blame] | 829 | if(tm.tm_year != -1) { |
| 830 | set_time(&tm); |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 831 | } |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 832 | return result; |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 833 | } |
Markus Braun | 22a7a2d | 2002-10-14 12:50:20 +0000 | [diff] [blame] | 834 | |
| 835 | static bool timeformat_set(void) |
| 836 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 837 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 838 | { STR(LANG_24_HOUR_CLOCK) }, |
| 839 | { STR(LANG_12_HOUR_CLOCK) } |
| 840 | }; |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 841 | return set_option(str(LANG_TIMEFORMAT), &global_settings.timeformat, |
| 842 | INT, names, 2, NULL); |
Markus Braun | 22a7a2d | 2002-10-14 12:50:20 +0000 | [diff] [blame] | 843 | } |
Markus Braun | 3181f68 | 2002-08-09 12:38:45 +0000 | [diff] [blame] | 844 | #endif |
| 845 | |
Jens Arnold | dd937dc | 2004-10-09 22:04:47 +0000 | [diff] [blame] | 846 | #ifndef HAVE_MMC |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 847 | static bool spindown(void) |
Björn Stenberg | 457b8a0 | 2002-08-26 13:21:14 +0000 | [diff] [blame] | 848 | { |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 849 | return set_int(str(LANG_SPINDOWN), "s", UNIT_SEC, |
| 850 | &global_settings.disk_spindown, |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 851 | ata_spindown, 1, 3, 254 ); |
Björn Stenberg | 0570497 | 2002-08-14 19:23:34 +0000 | [diff] [blame] | 852 | } |
| 853 | |
Daniel Stenberg | 39c5474 | 2002-11-29 07:05:46 +0000 | [diff] [blame] | 854 | #ifdef HAVE_ATA_POWER_OFF |
Björn Stenberg | 2b77b4f | 2002-11-28 22:46:19 +0000 | [diff] [blame] | 855 | static bool poweroff(void) |
| 856 | { |
| 857 | bool rc = set_bool(str(LANG_POWEROFF), &global_settings.disk_poweroff); |
| 858 | ata_poweroff(global_settings.disk_poweroff); |
| 859 | return rc; |
| 860 | } |
Jens Arnold | dd937dc | 2004-10-09 22:04:47 +0000 | [diff] [blame] | 861 | #endif /* HAVE_ATA_POWEROFF */ |
| 862 | #endif /* !HAVE_MMC */ |
| 863 | |
| 864 | #if CONFIG_HWCODEC == MAS3507D |
| 865 | static bool line_in(void) |
| 866 | { |
| 867 | bool rc = set_bool(str(LANG_LINE_IN), &global_settings.line_in); |
| 868 | dac_line_in(global_settings.line_in); |
| 869 | return rc; |
| 870 | } |
Daniel Stenberg | 39c5474 | 2002-11-29 07:05:46 +0000 | [diff] [blame] | 871 | #endif |
Björn Stenberg | 2b77b4f | 2002-11-28 22:46:19 +0000 | [diff] [blame] | 872 | |
Linus Nielsen Feltzing | 20d031f | 2003-05-09 16:01:21 +0000 | [diff] [blame] | 873 | static bool max_files_in_dir(void) |
| 874 | { |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 875 | return set_int(str(LANG_MAX_FILES_IN_DIR), "", UNIT_INT, |
Linus Nielsen Feltzing | 20d031f | 2003-05-09 16:01:21 +0000 | [diff] [blame] | 876 | &global_settings.max_files_in_dir, |
| 877 | NULL, 50, 50, 10000 ); |
| 878 | } |
| 879 | |
| 880 | static bool max_files_in_playlist(void) |
| 881 | { |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 882 | return set_int(str(LANG_MAX_FILES_IN_PLAYLIST), "", UNIT_INT, |
Linus Nielsen Feltzing | 20d031f | 2003-05-09 16:01:21 +0000 | [diff] [blame] | 883 | &global_settings.max_files_in_playlist, |
Linus Nielsen Feltzing | 2ce9ba5 | 2003-05-09 21:59:04 +0000 | [diff] [blame] | 884 | NULL, 1000, 1000, 20000 ); |
Linus Nielsen Feltzing | 20d031f | 2003-05-09 16:01:21 +0000 | [diff] [blame] | 885 | } |
| 886 | |
Linus Nielsen Feltzing | b8ff5f8 | 2002-12-05 13:09:51 +0000 | [diff] [blame] | 887 | static bool buffer_margin(void) |
| 888 | { |
Jörg Hohensohn | beec2e9 | 2004-03-20 16:49:58 +0000 | [diff] [blame] | 889 | return set_int(str(LANG_MP3BUFFER_MARGIN), "s", UNIT_SEC, |
Linus Nielsen Feltzing | b8ff5f8 | 2002-12-05 13:09:51 +0000 | [diff] [blame] | 890 | &global_settings.buffer_margin, |
Linus Nielsen Feltzing | 8a237a8 | 2005-04-04 12:06:29 +0000 | [diff] [blame] | 891 | audio_set_buffer_margin, 1, 0, 7 ); |
Linus Nielsen Feltzing | b8ff5f8 | 2002-12-05 13:09:51 +0000 | [diff] [blame] | 892 | } |
| 893 | |
Linus Nielsen Feltzing | 20d031f | 2003-05-09 16:01:21 +0000 | [diff] [blame] | 894 | static bool ff_rewind_min_step(void) |
Eric Linenberg | 7eb2711 | 2002-09-04 03:38:37 +0000 | [diff] [blame] | 895 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 896 | static const struct opt_items names[] = { |
Jörg Hohensohn | fa97f16 | 2004-03-19 22:15:53 +0000 | [diff] [blame] | 897 | { "1s", TALK_ID(1, UNIT_SEC) }, |
| 898 | { "2s", TALK_ID(2, UNIT_SEC) }, |
| 899 | { "3s", TALK_ID(3, UNIT_SEC) }, |
| 900 | { "4s", TALK_ID(4, UNIT_SEC) }, |
| 901 | { "5s", TALK_ID(5, UNIT_SEC) }, |
| 902 | { "6s", TALK_ID(6, UNIT_SEC) }, |
| 903 | { "8s", TALK_ID(8, UNIT_SEC) }, |
| 904 | { "10s", TALK_ID(10, UNIT_SEC) }, |
| 905 | { "15s", TALK_ID(15, UNIT_SEC) }, |
| 906 | { "20s", TALK_ID(20, UNIT_SEC) }, |
| 907 | { "25s", TALK_ID(25, UNIT_SEC) }, |
| 908 | { "30s", TALK_ID(30, UNIT_SEC) }, |
| 909 | { "45s", TALK_ID(45, UNIT_SEC) }, |
| 910 | { "60s", TALK_ID(60, UNIT_SEC) } |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 911 | }; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 912 | return set_option(str(LANG_FFRW_STEP), &global_settings.ff_rewind_min_step, |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 913 | INT, names, 14, NULL ); |
Eric Linenberg | 7eb2711 | 2002-09-04 03:38:37 +0000 | [diff] [blame] | 914 | } |
| 915 | |
Björn Stenberg | e2628d9 | 2003-02-14 15:54:52 +0000 | [diff] [blame] | 916 | static bool set_fade_on_stop(void) |
| 917 | { |
| 918 | return set_bool( str(LANG_FADE_ON_STOP), &global_settings.fade_on_stop ); |
| 919 | } |
| 920 | |
| 921 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 922 | static bool ff_rewind_accel(void) |
Justin Heiner | 8097ee6 | 2002-08-29 05:41:35 +0000 | [diff] [blame] | 923 | { |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 924 | static const struct opt_items names[] = { |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 925 | { STR(LANG_OFF) }, |
Jörg Hohensohn | fa97f16 | 2004-03-19 22:15:53 +0000 | [diff] [blame] | 926 | { "2x/1s", TALK_ID(1, UNIT_SEC) }, |
| 927 | { "2x/2s", TALK_ID(2, UNIT_SEC) }, |
| 928 | { "2x/3s", TALK_ID(3, UNIT_SEC) }, |
| 929 | { "2x/4s", TALK_ID(4, UNIT_SEC) }, |
| 930 | { "2x/5s", TALK_ID(5, UNIT_SEC) }, |
| 931 | { "2x/6s", TALK_ID(6, UNIT_SEC) }, |
| 932 | { "2x/7s", TALK_ID(7, UNIT_SEC) }, |
| 933 | { "2x/8s", TALK_ID(8, UNIT_SEC) }, |
| 934 | { "2x/9s", TALK_ID(9, UNIT_SEC) }, |
| 935 | { "2x/10s", TALK_ID(10, UNIT_SEC) }, |
| 936 | { "2x/11s", TALK_ID(11, UNIT_SEC) }, |
| 937 | { "2x/12s", TALK_ID(12, UNIT_SEC) }, |
| 938 | { "2x/13s", TALK_ID(13, UNIT_SEC) }, |
| 939 | { "2x/14s", TALK_ID(14, UNIT_SEC) }, |
| 940 | { "2x/15s", TALK_ID(15, UNIT_SEC) } |
Jörg Hohensohn | 42ffbf9 | 2004-03-15 08:27:51 +0000 | [diff] [blame] | 941 | }; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 942 | return set_option(str(LANG_FFRW_ACCEL), &global_settings.ff_rewind_accel, |
Björn Stenberg | 26712d5 | 2003-06-05 11:11:10 +0000 | [diff] [blame] | 943 | INT, names, 16, NULL ); |
Justin Heiner | 8097ee6 | 2002-08-29 05:41:35 +0000 | [diff] [blame] | 944 | } |
Eric Linenberg | 6524076 | 2002-08-28 19:34:07 +0000 | [diff] [blame] | 945 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 946 | static bool browse_current(void) |
Eric Linenberg | ecca123 | 2002-09-09 14:25:39 +0000 | [diff] [blame] | 947 | { |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 948 | return set_bool( str(LANG_FOLLOW), &global_settings.browse_current ); |
Eric Linenberg | ecca123 | 2002-09-09 14:25:39 +0000 | [diff] [blame] | 949 | } |
| 950 | |
Björn Stenberg | de5477c | 2003-09-29 21:26:53 +0000 | [diff] [blame] | 951 | static bool custom_wps_browse(void) |
| 952 | { |
| 953 | return rockbox_browse(ROCKBOX_DIR, SHOW_WPS); |
| 954 | } |
| 955 | |
| 956 | static bool custom_cfg_browse(void) |
| 957 | { |
| 958 | return rockbox_browse(ROCKBOX_DIR, SHOW_CFG); |
| 959 | } |
| 960 | |
| 961 | static bool language_browse(void) |
| 962 | { |
Jens Arnold | 3badc7d | 2005-01-17 23:55:55 +0000 | [diff] [blame] | 963 | return rockbox_browse(ROCKBOX_DIR LANG_DIR, SHOW_LNG); |
Björn Stenberg | de5477c | 2003-09-29 21:26:53 +0000 | [diff] [blame] | 964 | } |
| 965 | |
Jörg Hohensohn | 3aa99e1 | 2004-03-27 00:11:01 +0000 | [diff] [blame] | 966 | static bool voice_menus(void) |
| 967 | { |
| 968 | bool ret; |
| 969 | bool temp = global_settings.talk_menu; |
| 970 | /* work on a temp variable first, avoid "life" disabling */ |
| 971 | ret = set_bool( str(LANG_VOICE_MENU), &temp ); |
| 972 | global_settings.talk_menu = temp; |
| 973 | return ret; |
| 974 | } |
| 975 | |
Jörg Hohensohn | d484420 | 2004-10-06 21:37:46 +0000 | [diff] [blame] | 976 | /* this is used 2 times below, so it saves memory to put it in global scope */ |
| 977 | static const struct opt_items voice_names[] = { |
| 978 | { STR(LANG_OFF) }, |
| 979 | { STR(LANG_VOICE_NUMBER) }, |
| 980 | { STR(LANG_VOICE_SPELL) }, |
| 981 | { STR(LANG_VOICE_DIR_HOVER) } |
| 982 | }; |
| 983 | |
Jörg Hohensohn | 3aa99e1 | 2004-03-27 00:11:01 +0000 | [diff] [blame] | 984 | static bool voice_dirs(void) |
| 985 | { |
Jörg Hohensohn | 3aa99e1 | 2004-03-27 00:11:01 +0000 | [diff] [blame] | 986 | return set_option( str(LANG_VOICE_DIR), |
Jörg Hohensohn | d484420 | 2004-10-06 21:37:46 +0000 | [diff] [blame] | 987 | &global_settings.talk_dir, INT, voice_names, 4, NULL); |
Jörg Hohensohn | 3aa99e1 | 2004-03-27 00:11:01 +0000 | [diff] [blame] | 988 | } |
| 989 | |
| 990 | static bool voice_files(void) |
| 991 | { |
Jörg Hohensohn | 40ae63b | 2004-10-21 18:34:48 +0000 | [diff] [blame] | 992 | int oldval = global_settings.talk_file; |
| 993 | bool ret; |
| 994 | ret = set_option( str(LANG_VOICE_FILE), |
Jörg Hohensohn | d484420 | 2004-10-06 21:37:46 +0000 | [diff] [blame] | 995 | &global_settings.talk_file, INT, voice_names, 4, NULL); |
Jörg Hohensohn | 40ae63b | 2004-10-21 18:34:48 +0000 | [diff] [blame] | 996 | if (oldval != 3 && global_settings.talk_file == 3) |
| 997 | { /* force reload if newly talking thumbnails, |
| 998 | because the clip presence is cached only if enabled */ |
| 999 | reload_directory(); |
| 1000 | } |
| 1001 | return ret; |
Jörg Hohensohn | 3aa99e1 | 2004-03-27 00:11:01 +0000 | [diff] [blame] | 1002 | } |
| 1003 | |
| 1004 | static bool voice_menu(void) |
| 1005 | { |
| 1006 | int m; |
| 1007 | bool result; |
| 1008 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1009 | static const struct menu_item items[] = { |
| 1010 | { ID2P(LANG_VOICE_MENU), voice_menus }, |
| 1011 | { ID2P(LANG_VOICE_DIR), voice_dirs }, |
| 1012 | { ID2P(LANG_VOICE_FILE), voice_files } |
Jörg Hohensohn | 3aa99e1 | 2004-03-27 00:11:01 +0000 | [diff] [blame] | 1013 | }; |
| 1014 | |
| 1015 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1016 | NULL, NULL, NULL); |
| 1017 | result = menu_run(m); |
| 1018 | menu_exit(m); |
| 1019 | return result; |
| 1020 | } |
| 1021 | |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1022 | #ifdef HAVE_LCD_BITMAP |
Björn Stenberg | de5477c | 2003-09-29 21:26:53 +0000 | [diff] [blame] | 1023 | static bool font_browse(void) |
| 1024 | { |
Daniel Stenberg | 0f68958 | 2004-01-08 12:40:25 +0000 | [diff] [blame] | 1025 | return rockbox_browse(ROCKBOX_DIR FONT_DIR, SHOW_FONT); |
Björn Stenberg | de5477c | 2003-09-29 21:26:53 +0000 | [diff] [blame] | 1026 | } |
Björn Stenberg | de5477c | 2003-09-29 21:26:53 +0000 | [diff] [blame] | 1027 | |
Jörg Hohensohn | 459abc2 | 2003-04-21 12:39:36 +0000 | [diff] [blame] | 1028 | static bool scroll_bar(void) |
| 1029 | { |
| 1030 | return set_bool( str(LANG_SCROLL_BAR), &global_settings.scrollbar ); |
| 1031 | } |
| 1032 | |
| 1033 | static bool status_bar(void) |
| 1034 | { |
| 1035 | return set_bool( str(LANG_STATUS_BAR), &global_settings.statusbar ); |
| 1036 | } |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1037 | |
Jens Arnold | 1f0908d | 2004-10-09 20:54:15 +0000 | [diff] [blame] | 1038 | #if CONFIG_KEYPAD == RECORDER_PAD |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1039 | static bool button_bar(void) |
| 1040 | { |
| 1041 | return set_bool( str(LANG_BUTTON_BAR), &global_settings.buttonbar ); |
| 1042 | } |
Jens Arnold | 1f0908d | 2004-10-09 20:54:15 +0000 | [diff] [blame] | 1043 | #endif /* CONFIG_KEYPAD == RECORDER_PAD */ |
| 1044 | #endif /* HAVE_LCD_BITMAP */ |
Jörg Hohensohn | 459abc2 | 2003-04-21 12:39:36 +0000 | [diff] [blame] | 1045 | |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1046 | static bool ff_rewind_settings_menu(void) |
| 1047 | { |
| 1048 | int m; |
| 1049 | bool result; |
| 1050 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1051 | static const struct menu_item items[] = { |
| 1052 | { ID2P(LANG_FFRW_STEP), ff_rewind_min_step }, |
| 1053 | { ID2P(LANG_FFRW_ACCEL), ff_rewind_accel }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1054 | }; |
| 1055 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1056 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1057 | NULL, NULL, NULL); |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1058 | result = menu_run(m); |
| 1059 | menu_exit(m); |
| 1060 | |
| 1061 | return result; |
| 1062 | } |
| 1063 | |
Linus Nielsen Feltzing | 4cdcbb9 | 2004-07-27 19:20:51 +0000 | [diff] [blame] | 1064 | static bool id3_order(void) |
| 1065 | { |
| 1066 | return set_bool_options( str(LANG_ID3_ORDER), |
| 1067 | &global_settings.id3_v1_first, |
| 1068 | STR(LANG_ID3_V1_FIRST), |
| 1069 | STR(LANG_ID3_V2_FIRST), |
| 1070 | mpeg_id3_options); |
| 1071 | } |
| 1072 | |
Linus Nielsen Feltzing | 6271b2b | 2005-06-09 09:47:00 +0000 | [diff] [blame] | 1073 | #if CONFIG_HWCODEC == MASNONE |
| 1074 | static bool crossfade(void) |
| 1075 | { |
| 1076 | bool rc = set_bool( str(LANG_CROSSFADE), &global_settings.crossfade ); |
| 1077 | #ifndef SIMULATOR |
| 1078 | pcm_crossfade_enable(global_settings.crossfade); |
| 1079 | #endif |
| 1080 | return rc; |
| 1081 | } |
| 1082 | #endif |
| 1083 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1084 | static bool playback_settings_menu(void) |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1085 | { |
| 1086 | int m; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1087 | bool result; |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1088 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1089 | static const struct menu_item items[] = { |
| 1090 | { ID2P(LANG_SHUFFLE), shuffle }, |
| 1091 | { ID2P(LANG_REPEAT), repeat_mode }, |
| 1092 | { ID2P(LANG_PLAY_SELECTED), play_selected }, |
| 1093 | { ID2P(LANG_RESUME), resume }, |
| 1094 | { ID2P(LANG_WIND_MENU), ff_rewind_settings_menu }, |
| 1095 | { ID2P(LANG_MP3BUFFER_MARGIN), buffer_margin }, |
| 1096 | { ID2P(LANG_FADE_ON_STOP), set_fade_on_stop }, |
Linus Nielsen Feltzing | 6271b2b | 2005-06-09 09:47:00 +0000 | [diff] [blame] | 1097 | #if CONFIG_HWCODEC == MASNONE |
| 1098 | { ID2P(LANG_CROSSFADE), crossfade }, |
| 1099 | #endif |
Linus Nielsen Feltzing | 4cdcbb9 | 2004-07-27 19:20:51 +0000 | [diff] [blame] | 1100 | { ID2P(LANG_ID3_ORDER), id3_order }, |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 1101 | }; |
Björn Stenberg | 505eca7 | 2002-09-18 14:08:05 +0000 | [diff] [blame] | 1102 | |
Daniel Stenberg | 360ae3e | 2002-08-02 13:20:03 +0000 | [diff] [blame] | 1103 | bool old_shuffle = global_settings.playlist_shuffle; |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1104 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1105 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1106 | NULL, NULL, NULL); |
Daniel Stenberg | b285076 | 2002-08-23 12:32:52 +0000 | [diff] [blame] | 1107 | result = menu_run(m); |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 1108 | menu_exit(m); |
Daniel Stenberg | 360ae3e | 2002-08-02 13:20:03 +0000 | [diff] [blame] | 1109 | |
Jens Arnold | d6587f9 | 2005-05-01 19:13:47 +0000 | [diff] [blame] | 1110 | if ((old_shuffle != global_settings.playlist_shuffle) |
| 1111 | && (audio_status() & AUDIO_STATUS_PLAY)) |
Daniel Stenberg | 360ae3e | 2002-08-02 13:20:03 +0000 | [diff] [blame] | 1112 | { |
| 1113 | if (global_settings.playlist_shuffle) |
| 1114 | { |
Hardeep Sidhu | 107ebc5 | 2004-01-26 17:05:21 +0000 | [diff] [blame] | 1115 | playlist_randomise(NULL, current_tick, true); |
Daniel Stenberg | 360ae3e | 2002-08-02 13:20:03 +0000 | [diff] [blame] | 1116 | } |
| 1117 | else |
| 1118 | { |
Hardeep Sidhu | 107ebc5 | 2004-01-26 17:05:21 +0000 | [diff] [blame] | 1119 | playlist_sort(NULL, true); |
Daniel Stenberg | 360ae3e | 2002-08-02 13:20:03 +0000 | [diff] [blame] | 1120 | } |
| 1121 | } |
Daniel Stenberg | b285076 | 2002-08-23 12:32:52 +0000 | [diff] [blame] | 1122 | return result; |
Robert Hak | 84a6ba2 | 2002-06-24 21:39:48 +0000 | [diff] [blame] | 1123 | } |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1124 | |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 1125 | static bool bookmark_settings_menu(void) |
| 1126 | { |
| 1127 | int m; |
| 1128 | bool result; |
| 1129 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1130 | static const struct menu_item items[] = { |
| 1131 | { ID2P(LANG_BOOKMARK_SETTINGS_AUTOCREATE), autocreatebookmark}, |
| 1132 | { ID2P(LANG_BOOKMARK_SETTINGS_AUTOLOAD), autoloadbookmark}, |
| 1133 | { ID2P(LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS), useMRB}, |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 1134 | }; |
| 1135 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1136 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1137 | NULL, NULL, NULL); |
Björn Stenberg | a108ec2 | 2004-01-14 00:13:04 +0000 | [diff] [blame] | 1138 | result = menu_run(m); |
| 1139 | menu_exit(m); |
| 1140 | |
| 1141 | return result; |
| 1142 | } |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1143 | static bool reset_settings(void) |
Justin Heiner | 2f9b54b | 2002-09-06 07:00:20 +0000 | [diff] [blame] | 1144 | { |
Robert Hak | ea8a4cf | 2002-10-14 09:12:52 +0000 | [diff] [blame] | 1145 | bool done=false; |
| 1146 | int line; |
Linus Nielsen Feltzing | ade5d7b | 2004-07-26 16:06:59 +0000 | [diff] [blame] | 1147 | int button; |
Robert Hak | ea8a4cf | 2002-10-14 09:12:52 +0000 | [diff] [blame] | 1148 | |
| 1149 | lcd_clear_display(); |
| 1150 | |
| 1151 | #ifdef HAVE_LCD_CHARCELLS |
| 1152 | line = 0; |
| 1153 | #else |
| 1154 | line = 1; |
| 1155 | lcd_puts(0,0,str(LANG_RESET_ASK_RECORDER)); |
| 1156 | #endif |
| 1157 | lcd_puts(0,line,str(LANG_RESET_CONFIRM)); |
| 1158 | lcd_puts(0,line+1,str(LANG_RESET_CANCEL)); |
| 1159 | |
| 1160 | lcd_update(); |
Robert Hak | ea8a4cf | 2002-10-14 09:12:52 +0000 | [diff] [blame] | 1161 | |
| 1162 | while(!done) { |
Linus Nielsen Feltzing | ade5d7b | 2004-07-26 16:06:59 +0000 | [diff] [blame] | 1163 | button = button_get(true); |
| 1164 | switch(button) { |
Björn Stenberg | 6c33c51 | 2004-09-19 21:58:37 +0000 | [diff] [blame] | 1165 | case SETTINGS_OK: |
| 1166 | settings_reset(); |
| 1167 | settings_apply(); |
| 1168 | lcd_clear_display(); |
| 1169 | lcd_puts(0,1,str(LANG_RESET_DONE_CLEAR)); |
| 1170 | done = true; |
| 1171 | break; |
Robert Hak | ea8a4cf | 2002-10-14 09:12:52 +0000 | [diff] [blame] | 1172 | |
Björn Stenberg | 6c33c51 | 2004-09-19 21:58:37 +0000 | [diff] [blame] | 1173 | case SETTINGS_CANCEL: |
| 1174 | lcd_clear_display(); |
| 1175 | lcd_puts(0,1,str(LANG_RESET_DONE_CANCEL)); |
| 1176 | done = true; |
| 1177 | break; |
Robert Hak | ea8a4cf | 2002-10-14 09:12:52 +0000 | [diff] [blame] | 1178 | |
Björn Stenberg | 6c33c51 | 2004-09-19 21:58:37 +0000 | [diff] [blame] | 1179 | default: |
| 1180 | if(default_event_handler(button) == SYS_USB_CONNECTED) |
| 1181 | return true; |
Robert Hak | ea8a4cf | 2002-10-14 09:12:52 +0000 | [diff] [blame] | 1182 | } |
Justin Heiner | 2f9b54b | 2002-09-06 07:00:20 +0000 | [diff] [blame] | 1183 | } |
Robert Hak | ea8a4cf | 2002-10-14 09:12:52 +0000 | [diff] [blame] | 1184 | |
| 1185 | lcd_puts(0,0,str(LANG_RESET_DONE_SETTING)); |
| 1186 | lcd_update(); |
| 1187 | sleep(HZ); |
| 1188 | return false; |
Justin Heiner | 2f9b54b | 2002-09-06 07:00:20 +0000 | [diff] [blame] | 1189 | } |
| 1190 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1191 | static bool fileview_settings_menu(void) |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1192 | { |
| 1193 | int m; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1194 | bool result; |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1195 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1196 | static const struct menu_item items[] = { |
| 1197 | { ID2P(LANG_SORT_CASE), sort_case }, |
| 1198 | { ID2P(LANG_SORT_DIR), sort_dir }, |
| 1199 | { ID2P(LANG_SORT_FILE), sort_file }, |
| 1200 | { ID2P(LANG_FILTER), dir_filter }, |
| 1201 | { ID2P(LANG_FOLLOW), browse_current }, |
| 1202 | { ID2P(LANG_SHOW_ICONS), show_icons }, |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1203 | }; |
| 1204 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1205 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1206 | NULL, NULL, NULL); |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1207 | result = menu_run(m); |
| 1208 | menu_exit(m); |
| 1209 | return result; |
| 1210 | } |
| 1211 | |
Robert Hak | 65002e8 | 2002-12-12 16:56:19 +0000 | [diff] [blame] | 1212 | |
| 1213 | static bool scroll_settings_menu(void) |
| 1214 | { |
| 1215 | int m; |
| 1216 | bool result; |
| 1217 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1218 | static const struct menu_item items[] = { |
| 1219 | { ID2P(LANG_SCROLL_SPEED), scroll_speed }, |
| 1220 | { ID2P(LANG_SCROLL_DELAY), scroll_delay }, |
Robert Hak | 65002e8 | 2002-12-12 16:56:19 +0000 | [diff] [blame] | 1221 | #ifdef HAVE_LCD_BITMAP |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1222 | { ID2P(LANG_SCROLL_STEP), scroll_step }, |
Robert Hak | 65002e8 | 2002-12-12 16:56:19 +0000 | [diff] [blame] | 1223 | #endif |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1224 | { ID2P(LANG_BIDIR_SCROLL), bidir_limit }, |
Kjell Ericson | 53f156a | 2003-05-22 06:42:14 +0000 | [diff] [blame] | 1225 | #ifdef HAVE_LCD_CHARCELLS |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1226 | { ID2P(LANG_JUMP_SCROLL), jump_scroll }, |
| 1227 | { ID2P(LANG_JUMP_SCROLL_DELAY), jump_scroll_delay }, |
Kjell Ericson | 53f156a | 2003-05-22 06:42:14 +0000 | [diff] [blame] | 1228 | #endif |
Robert Hak | 65002e8 | 2002-12-12 16:56:19 +0000 | [diff] [blame] | 1229 | }; |
| 1230 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1231 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1232 | NULL, NULL, NULL); |
Robert Hak | 65002e8 | 2002-12-12 16:56:19 +0000 | [diff] [blame] | 1233 | result = menu_run(m); |
| 1234 | menu_exit(m); |
| 1235 | return result; |
| 1236 | } |
| 1237 | |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1238 | static bool lcd_settings_menu(void) |
| 1239 | { |
| 1240 | int m; |
| 1241 | bool result; |
| 1242 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1243 | static const struct menu_item items[] = { |
Jörg Hohensohn | fee8617 | 2004-12-18 10:29:47 +0000 | [diff] [blame] | 1244 | #ifdef CONFIG_BACKLIGHT |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1245 | { ID2P(LANG_BACKLIGHT), backlight_timer }, |
Jörg Hohensohn | fee8617 | 2004-12-18 10:29:47 +0000 | [diff] [blame] | 1246 | #ifdef HAVE_CHARGING |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1247 | { ID2P(LANG_BACKLIGHT_ON_WHEN_CHARGING), backlight_on_when_charging }, |
Jens Arnold | a1a08d0 | 2004-10-09 19:56:27 +0000 | [diff] [blame] | 1248 | #endif |
Jörg Hohensohn | fee8617 | 2004-12-18 10:29:47 +0000 | [diff] [blame] | 1249 | { ID2P(LANG_CAPTION_BACKLIGHT), caption_backlight }, |
| 1250 | #endif /* CONFIG_BACKLIGHT */ |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1251 | { ID2P(LANG_CONTRAST), contrast }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1252 | #ifdef HAVE_LCD_BITMAP |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1253 | { ID2P(LANG_INVERT), invert }, |
| 1254 | { ID2P(LANG_FLIP_DISPLAY), flip_display }, |
| 1255 | { ID2P(LANG_INVERT_CURSOR), invert_cursor }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1256 | #endif |
| 1257 | }; |
| 1258 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1259 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1260 | NULL, NULL, NULL); |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1261 | result = menu_run(m); |
| 1262 | menu_exit(m); |
| 1263 | return result; |
| 1264 | } |
| 1265 | |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 1266 | #ifdef HAVE_REMOTE_LCD |
| 1267 | static bool lcd_remote_settings_menu(void) |
| 1268 | { |
| 1269 | int m; |
| 1270 | bool result; |
| 1271 | |
| 1272 | static const struct menu_item items[] = { |
Christian Gmeiner | 7477c09 | 2005-05-30 00:00:22 +0000 | [diff] [blame] | 1273 | { ID2P(LANG_BACKLIGHT), remote_backlight_timer }, |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 1274 | { ID2P(LANG_CONTRAST), remote_contrast }, |
| 1275 | { ID2P(LANG_INVERT), remote_invert }, |
Jens Arnold | bd1bb5f | 2005-06-17 21:43:00 +0000 | [diff] [blame^] | 1276 | { ID2P(LANG_FLIP_DISPLAY), remote_flip_display }, |
| 1277 | /* { ID2P(LANG_INVERT_CURSOR), invert_cursor },*/ |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 1278 | }; |
| 1279 | |
| 1280 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1281 | NULL, NULL, NULL); |
| 1282 | result = menu_run(m); |
| 1283 | menu_exit(m); |
| 1284 | return result; |
| 1285 | } |
| 1286 | #endif |
| 1287 | |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1288 | #ifdef HAVE_LCD_BITMAP |
| 1289 | static bool bars_settings_menu(void) |
| 1290 | { |
| 1291 | int m; |
| 1292 | bool result; |
| 1293 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1294 | static const struct menu_item items[] = { |
| 1295 | { ID2P(LANG_SCROLL_BAR), scroll_bar }, |
| 1296 | { ID2P(LANG_STATUS_BAR), status_bar }, |
Jens Arnold | 1f0908d | 2004-10-09 20:54:15 +0000 | [diff] [blame] | 1297 | #if CONFIG_KEYPAD == RECORDER_PAD |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1298 | { ID2P(LANG_BUTTON_BAR), button_bar }, |
Jens Arnold | 1f0908d | 2004-10-09 20:54:15 +0000 | [diff] [blame] | 1299 | #endif |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1300 | { ID2P(LANG_VOLUME_DISPLAY), volume_type }, |
Jens Arnold | 9d42e2b | 2005-01-30 13:48:44 +0000 | [diff] [blame] | 1301 | { ID2P(LANG_BATTERY_DISPLAY), battery_display }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1302 | }; |
| 1303 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1304 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1305 | NULL, NULL, NULL); |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1306 | result = menu_run(m); |
| 1307 | menu_exit(m); |
| 1308 | return result; |
| 1309 | } |
| 1310 | #endif |
Robert Hak | 65002e8 | 2002-12-12 16:56:19 +0000 | [diff] [blame] | 1311 | |
| 1312 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1313 | static bool display_settings_menu(void) |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1314 | { |
| 1315 | int m; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1316 | bool result; |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1317 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1318 | static const struct menu_item items[] = { |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 1319 | #ifdef HAVE_LCD_BITMAP |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1320 | { ID2P(LANG_CUSTOM_FONT), font_browse }, |
Linus Nielsen Feltzing | bb572c4 | 2002-09-27 09:31:31 +0000 | [diff] [blame] | 1321 | #endif |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1322 | { ID2P(LANG_WHILE_PLAYING), custom_wps_browse }, |
| 1323 | { ID2P(LANG_LCD_MENU), lcd_settings_menu }, |
Christian Gmeiner | 7c1879b | 2005-04-15 12:08:49 +0000 | [diff] [blame] | 1324 | #ifdef HAVE_REMOTE_LCD |
| 1325 | { ID2P(LANG_LCD_REMOTE_MENU), lcd_remote_settings_menu }, |
| 1326 | #endif |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1327 | { ID2P(LANG_SCROLL_MENU), scroll_settings_menu }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1328 | #ifdef HAVE_LCD_BITMAP |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1329 | { ID2P(LANG_BARS_MENU), bars_settings_menu }, |
| 1330 | { ID2P(LANG_PM_MENU), peak_meter_menu }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1331 | #endif |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1332 | }; |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1333 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1334 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1335 | NULL, NULL, NULL); |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1336 | result = menu_run(m); |
| 1337 | menu_exit(m); |
| 1338 | return result; |
| 1339 | } |
| 1340 | |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1341 | |
| 1342 | static bool firmware_browse(void) |
| 1343 | { |
| 1344 | return rockbox_browse(ROCKBOX_DIR, SHOW_MOD); |
| 1345 | } |
| 1346 | |
| 1347 | static bool battery_settings_menu(void) |
| 1348 | { |
| 1349 | int m; |
| 1350 | bool result; |
| 1351 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1352 | static const struct menu_item items[] = { |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1353 | #ifndef SIMULATOR |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1354 | { ID2P(LANG_BATTERY_CAPACITY), battery_capacity }, |
Jens Arnold | 91846a1 | 2005-01-30 16:25:46 +0000 | [diff] [blame] | 1355 | #if BATTERY_TYPES_COUNT > 1 |
| 1356 | { ID2P(LANG_BATTERY_TYPE), battery_type }, |
| 1357 | #endif |
Jörg Hohensohn | 00898c6 | 2004-06-14 07:23:48 +0000 | [diff] [blame] | 1358 | #else |
| 1359 | #ifndef HAVE_CHARGE_CTRL |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1360 | { "Dummy", NULL }, /* to have an entry at all, in the simulator */ |
Jörg Hohensohn | 00898c6 | 2004-06-14 07:23:48 +0000 | [diff] [blame] | 1361 | #endif |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1362 | #endif |
| 1363 | }; |
| 1364 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1365 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1366 | NULL, NULL, NULL); |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1367 | result = menu_run(m); |
| 1368 | menu_exit(m); |
| 1369 | return result; |
| 1370 | } |
| 1371 | |
Jens Arnold | dd937dc | 2004-10-09 22:04:47 +0000 | [diff] [blame] | 1372 | #ifndef HAVE_MMC |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1373 | static bool disk_settings_menu(void) |
| 1374 | { |
| 1375 | int m; |
| 1376 | bool result; |
| 1377 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1378 | static const struct menu_item items[] = { |
| 1379 | { ID2P(LANG_SPINDOWN), spindown }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1380 | #ifdef HAVE_ATA_POWER_OFF |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1381 | { ID2P(LANG_POWEROFF), poweroff }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1382 | #endif |
| 1383 | }; |
| 1384 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1385 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1386 | NULL, NULL, NULL); |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1387 | result = menu_run(m); |
| 1388 | menu_exit(m); |
| 1389 | return result; |
| 1390 | } |
Jens Arnold | dd937dc | 2004-10-09 22:04:47 +0000 | [diff] [blame] | 1391 | #endif /* !HAVE_MMC */ |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1392 | |
Jörg Hohensohn | 24c7c04 | 2004-09-10 10:51:54 +0000 | [diff] [blame] | 1393 | #ifdef HAVE_RTC |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1394 | static bool time_settings_menu(void) |
| 1395 | { |
| 1396 | int m; |
| 1397 | bool result; |
| 1398 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1399 | static const struct menu_item items[] = { |
| 1400 | { ID2P(LANG_TIME), timedate_set }, |
| 1401 | { ID2P(LANG_TIMEFORMAT), timeformat_set }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1402 | }; |
| 1403 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1404 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1405 | NULL, NULL, NULL); |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1406 | result = menu_run(m); |
| 1407 | menu_exit(m); |
| 1408 | return result; |
| 1409 | } |
| 1410 | #endif |
| 1411 | |
| 1412 | static bool manage_settings_menu(void) |
| 1413 | { |
| 1414 | int m; |
| 1415 | bool result; |
| 1416 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1417 | static const struct menu_item items[] = { |
| 1418 | { ID2P(LANG_CUSTOM_CFG), custom_cfg_browse }, |
| 1419 | { ID2P(LANG_FIRMWARE), firmware_browse }, |
| 1420 | { ID2P(LANG_RESET), reset_settings }, |
| 1421 | { ID2P(LANG_SAVE_SETTINGS), settings_save_config }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1422 | }; |
| 1423 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1424 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1425 | NULL, NULL, NULL); |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1426 | result = menu_run(m); |
| 1427 | menu_exit(m); |
| 1428 | return result; |
| 1429 | } |
| 1430 | |
| 1431 | static bool limits_settings_menu(void) |
| 1432 | { |
| 1433 | int m; |
| 1434 | bool result; |
| 1435 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1436 | static const struct menu_item items[] = { |
| 1437 | { ID2P(LANG_MAX_FILES_IN_DIR), max_files_in_dir }, |
| 1438 | { ID2P(LANG_MAX_FILES_IN_PLAYLIST), max_files_in_playlist }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1439 | }; |
| 1440 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1441 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1442 | NULL, NULL, NULL); |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1443 | result = menu_run(m); |
| 1444 | menu_exit(m); |
| 1445 | return result; |
| 1446 | } |
| 1447 | |
| 1448 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1449 | static bool system_settings_menu(void) |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1450 | { |
| 1451 | int m; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1452 | bool result; |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1453 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1454 | static const struct menu_item items[] = { |
| 1455 | { ID2P(LANG_BATTERY_MENU), battery_settings_menu }, |
Jens Arnold | dd937dc | 2004-10-09 22:04:47 +0000 | [diff] [blame] | 1456 | #ifndef HAVE_MMC |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1457 | { ID2P(LANG_DISK_MENU), disk_settings_menu }, |
Jens Arnold | dd937dc | 2004-10-09 22:04:47 +0000 | [diff] [blame] | 1458 | #endif |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1459 | #ifdef HAVE_RTC |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1460 | { ID2P(LANG_TIME_MENU), time_settings_menu }, |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1461 | #endif |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1462 | { ID2P(LANG_POWEROFF_IDLE), poweroff_idle_timer }, |
| 1463 | { ID2P(LANG_SLEEP_TIMER), sleeptimer_screen }, |
Björn Stenberg | a73cc6a | 2004-01-15 08:25:42 +0000 | [diff] [blame] | 1464 | #ifdef HAVE_ALARM_MOD |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1465 | { ID2P(LANG_ALARM_MOD_ALARM_MENU), alarm_screen }, |
Björn Stenberg | a73cc6a | 2004-01-15 08:25:42 +0000 | [diff] [blame] | 1466 | #endif |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1467 | { ID2P(LANG_LIMITS_MENU), limits_settings_menu }, |
Jörg Hohensohn | 593cc00 | 2004-09-28 22:13:26 +0000 | [diff] [blame] | 1468 | #if CONFIG_HWCODEC == MAS3507D |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1469 | { ID2P(LANG_LINE_IN), line_in }, |
Linus Nielsen Feltzing | c22b411 | 2003-11-03 23:36:36 +0000 | [diff] [blame] | 1470 | #endif |
Jens Arnold | ccfa4cd | 2004-10-10 01:25:32 +0000 | [diff] [blame] | 1471 | #ifdef HAVE_CHARGING |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1472 | { ID2P(LANG_CAR_ADAPTER_MODE), car_adapter_mode }, |
Jens Arnold | ccfa4cd | 2004-10-10 01:25:32 +0000 | [diff] [blame] | 1473 | #endif |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1474 | { ID2P(LANG_MANAGE_MENU), manage_settings_menu }, |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1475 | }; |
Björn Stenberg | fe375a0 | 2004-01-14 14:42:31 +0000 | [diff] [blame] | 1476 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1477 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1478 | NULL, NULL, NULL); |
Eric Linenberg | c5b645b | 2002-09-05 04:42:12 +0000 | [diff] [blame] | 1479 | result = menu_run(m); |
| 1480 | menu_exit(m); |
| 1481 | return result; |
| 1482 | } |
Björn Stenberg | 94afb54 | 2002-09-07 12:28:46 +0000 | [diff] [blame] | 1483 | |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1484 | bool settings_menu(void) |
Björn Stenberg | 94afb54 | 2002-09-07 12:28:46 +0000 | [diff] [blame] | 1485 | { |
| 1486 | int m; |
Björn Stenberg | b1b8bd4 | 2002-09-24 17:22:12 +0000 | [diff] [blame] | 1487 | bool result; |
Björn Stenberg | 94afb54 | 2002-09-07 12:28:46 +0000 | [diff] [blame] | 1488 | |
Jörg Hohensohn | b1403ee | 2004-07-23 23:01:20 +0000 | [diff] [blame] | 1489 | static const struct menu_item items[] = { |
| 1490 | { ID2P(LANG_PLAYBACK), playback_settings_menu }, |
| 1491 | { ID2P(LANG_FILE), fileview_settings_menu }, |
| 1492 | { ID2P(LANG_DISPLAY), display_settings_menu }, |
| 1493 | { ID2P(LANG_SYSTEM), system_settings_menu }, |
| 1494 | { ID2P(LANG_BOOKMARK_SETTINGS),bookmark_settings_menu }, |
| 1495 | { ID2P(LANG_LANGUAGE), language_browse }, |
| 1496 | { ID2P(LANG_VOICE), voice_menu }, |
Björn Stenberg | 94afb54 | 2002-09-07 12:28:46 +0000 | [diff] [blame] | 1497 | }; |
| 1498 | |
Linus Nielsen Feltzing | 77936e6 | 2004-03-16 13:44:56 +0000 | [diff] [blame] | 1499 | m=menu_init( items, sizeof(items) / sizeof(*items), NULL, |
| 1500 | NULL, NULL, NULL); |
Björn Stenberg | 94afb54 | 2002-09-07 12:28:46 +0000 | [diff] [blame] | 1501 | result = menu_run(m); |
| 1502 | menu_exit(m); |
| 1503 | return result; |
| 1504 | } |