summaryrefslogtreecommitdiff
path: root/apps/menus
diff options
context:
space:
mode:
authorTeruaki Kawashima <teru@rockbox.org>2010-12-14 13:37:58 +0000
committerTeruaki Kawashima <teru@rockbox.org>2010-12-14 13:37:58 +0000
commit08af5d84044a7f18a619e1cb38cd183819be41b9 (patch)
treee441cf84b0268e5b008d044902641f063f218152 /apps/menus
parentfbd75fcc86304ccf44ad8174c91684b687a877ec (diff)
downloadrockbox-08af5d84044a7f18a619e1cb38cd183819be41b9.tar.gz
rockbox-08af5d84044a7f18a619e1cb38cd183819be41b9.zip
FS#11777: enhancement for rockbox_browse()
* Add struct browse_context to be passed to rockbox_browse. * Show proper title when selecting e.g. .wps file or .sbs file from the settings menu. * Add select only mode to rockbox_browse(). when a file is selected, it's path is stored to buffer and the browser exits without 'playing' the file. this will allow to use the browser in more places to select file including plugins. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28831 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/menus')
-rw-r--r--apps/menus/theme_menu.c78
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
247int browse_folder(void *param) 247int 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