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