diff options
Diffstat (limited to 'apps/menus')
-rw-r--r-- | apps/menus/theme_menu.c | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/apps/menus/theme_menu.c b/apps/menus/theme_menu.c index 983eca9445..b483a7ef11 100644 --- a/apps/menus/theme_menu.c +++ b/apps/menus/theme_menu.c | |||
@@ -246,9 +246,85 @@ static struct browse_folder_info themes = {THEME_DIR, SHOW_CFG}; | |||
246 | 246 | ||
247 | int browse_folder(void *param) | 247 | int browse_folder(void *param) |
248 | { | 248 | { |
249 | const char *ext, *setting; | ||
250 | int lang_id = -1; | ||
251 | char selected[MAX_FILENAME+10]; | ||
249 | const struct browse_folder_info *info = | 252 | const struct browse_folder_info *info = |
250 | (const struct browse_folder_info*)param; | 253 | (const struct browse_folder_info*)param; |
251 | return rockbox_browse(info->dir, info->show_options); | 254 | struct browse_context browse; |
255 | browse_context_init(&browse, info->show_options, 0, | ||
256 | NULL, NOICON, info->dir, NULL); | ||
257 | |||
258 | /* if we are in a special settings folder, center the current setting */ | ||
259 | switch(info->show_options) | ||
260 | { | ||
261 | case SHOW_LNG: | ||
262 | ext = "lng"; | ||
263 | if (global_settings.lang_file[0]) | ||
264 | setting = global_settings.lang_file; | ||
265 | else | ||
266 | setting = "english"; | ||
267 | lang_id = LANG_LANGUAGE; | ||
268 | break; | ||
269 | case SHOW_WPS: | ||
270 | ext = "wps"; | ||
271 | setting = global_settings.wps_file; | ||
272 | lang_id = LANG_WHILE_PLAYING; | ||
273 | break; | ||
274 | #ifdef HAVE_LCD_BITMAP | ||
275 | case SHOW_FONT: | ||
276 | ext = "fnt"; | ||
277 | setting = global_settings.font_file; | ||
278 | lang_id = LANG_CUSTOM_FONT; | ||
279 | break; | ||
280 | case SHOW_SBS: | ||
281 | ext = "sbs"; | ||
282 | setting = global_settings.sbs_file; | ||
283 | lang_id = LANG_BASE_SKIN; | ||
284 | break; | ||
285 | #if CONFIG_TUNER | ||
286 | case SHOW_FMS: | ||
287 | ext = "fms"; | ||
288 | setting = global_settings.fms_file; | ||
289 | lang_id = LANG_RADIOSCREEN; | ||
290 | break; | ||
291 | #endif /* CONFIG_TUNER */ | ||
292 | #endif | ||
293 | #ifdef HAVE_REMOTE_LCD | ||
294 | case SHOW_RWPS: | ||
295 | ext = "rwps"; | ||
296 | setting = global_settings.rwps_file; | ||
297 | lang_id = LANG_REMOTE_WHILE_PLAYING; | ||
298 | break; | ||
299 | case SHOW_RSBS: | ||
300 | ext = "rsbs"; | ||
301 | setting = global_settings.rsbs_file; | ||
302 | lang_id = LANG_REMOTE_BASE_SKIN; | ||
303 | break; | ||
304 | #if CONFIG_TUNER | ||
305 | case SHOW_RFMS: | ||
306 | ext = "rfms"; | ||
307 | setting = global_settings.rfms_file; | ||
308 | lang_id = LANG_REMOTE_RADIOSCREEN; | ||
309 | break; | ||
310 | #endif /* CONFIG_TUNER */ | ||
311 | #endif | ||
312 | default: | ||
313 | ext = setting = NULL; | ||
314 | break; | ||
315 | } | ||
316 | |||
317 | /* If we've found a file to center on, do it */ | ||
318 | if (setting) | ||
319 | { | ||
320 | /* if setting != NULL, ext is initialized */ | ||
321 | snprintf(selected, sizeof(selected), "%s.%s", setting, ext); | ||
322 | browse.selected = selected; | ||
323 | browse.icon = Icon_Questionmark; | ||
324 | browse.title = str(lang_id); | ||
325 | } | ||
326 | |||
327 | return rockbox_browse(&browse); | ||
252 | } | 328 | } |
253 | 329 | ||
254 | #ifdef HAVE_LCD_BITMAP | 330 | #ifdef HAVE_LCD_BITMAP |