summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/playlist_viewer.c86
-rw-r--r--apps/settings_list.c5
3 files changed, 35 insertions, 70 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index a2592eb26b..8a8a98bd4a 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -10758,3 +10758,17 @@
10758 e200: "Wheel Light Timeout" 10758 e200: "Wheel Light Timeout"
10759 </voice> 10759 </voice>
10760</phrase> 10760</phrase>
10761<phrase>
10762 id: LANG_PLAYLISTVIEWER_SETTINGS
10763 desc: title for the playlist viewer settings menus
10764 user:
10765 <source>
10766 *: "Playlist Viewer Settings"
10767 </source>
10768 <dest>
10769 *: "Playlist Viewer Settings"
10770 </dest>
10771 <voice>
10772 *: "Playlist Viewer Settings"
10773 </voice>
10774</phrase>
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c
index 1d066bbedb..d9de123831 100644
--- a/apps/playlist_viewer.c
+++ b/apps/playlist_viewer.c
@@ -125,10 +125,7 @@ static void format_line(const struct playlist_entry* track, char* str,
125static bool update_playlist(bool force); 125static bool update_playlist(bool force);
126static int onplay_menu(int index); 126static int onplay_menu(int index);
127static bool viewer_menu(void); 127static bool viewer_menu(void);
128static bool show_icons(void); 128static int save_playlist_func(void);
129static bool show_indices(void);
130static bool track_display(void);
131static bool save_playlist(void);
132 129
133static void playlist_buffer_init(struct playlist_buffer *pb, char *names_buffer, 130static void playlist_buffer_init(struct playlist_buffer *pb, char *names_buffer,
134 int names_buffer_size) 131 int names_buffer_size)
@@ -422,26 +419,15 @@ static bool update_playlist(bool force)
422 changed. */ 419 changed. */
423static int onplay_menu(int index) 420static int onplay_menu(int index)
424{ 421{
425 struct menu_item items[4]; /* increase this if you add entries! */ 422 int result, ret = 0;
426 int m, i=0, result, ret = 0;
427 struct playlist_entry * current_track= 423 struct playlist_entry * current_track=
428 playlist_buffer_get_track(&viewer.buffer, index); 424 playlist_buffer_get_track(&viewer.buffer, index);
425 MENUITEM_STRINGLIST(menu_items, ID2P(LANG_PLAYLIST_MENU), NULL,
426 ID2P(LANG_REMOVE), ID2P(LANG_MOVE),
427 ID2P(LANG_CATALOG_ADD_TO), ID2P(LANG_CATALOG_ADD_TO_NEW));
429 bool current = (current_track->index == viewer.current_playing_track); 428 bool current = (current_track->index == viewer.current_playing_track);
430 429
431 items[i].desc = ID2P(LANG_REMOVE); 430 result = do_menu(&menu_items, NULL);
432 i++;
433
434 items[i].desc = ID2P(LANG_MOVE);
435 i++;
436
437 items[i].desc = ID2P(LANG_CATALOG_ADD_TO);
438 i++;
439
440 items[i].desc = ID2P(LANG_CATALOG_ADD_TO_NEW);
441 i++;
442
443 m = menu_init(items, i, NULL, str(LANG_PLAYLIST_MENU), NULL, NULL);
444 result = menu_show(m);
445 if (result == MENU_ATTACHED_USB) 431 if (result == MENU_ATTACHED_USB)
446 { 432 {
447 ret = -1; 433 ret = -1;
@@ -493,65 +479,29 @@ static int onplay_menu(int index)
493 break; 479 break;
494 } 480 }
495 } 481 }
496 menu_exit(m);
497 return ret; 482 return ret;
498} 483}
499 484
500/* Menu of viewer options. Invoked via F1(r) or Menu(p). */ 485/* Menu of viewer options. Invoked via F1(r) or Menu(p). */
486MENUITEM_SETTING(show_icons, &global_settings.playlist_viewer_icons, NULL);
487MENUITEM_SETTING(show_indices, &global_settings.playlist_viewer_indices, NULL);
488MENUITEM_SETTING(track_display,
489 &global_settings.playlist_viewer_track_display, NULL);
490MENUITEM_FUNCTION(save_playlist_item, 0, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST),
491 save_playlist_func, 0, NULL, Icon_NOICON);
492MAKE_MENU(viewer_settings_menu, ID2P(LANG_PLAYLISTVIEWER_SETTINGS),
493 NULL, Icon_Playlist,
494 &show_icons, &show_indices, &track_display, &save_playlist_item);
501static bool viewer_menu(void) 495static bool viewer_menu(void)
502{ 496{
503 int m; 497 return do_menu(&viewer_settings_menu, NULL) == SYS_USB_CONNECTED;
504 bool result;
505
506 static const struct menu_item items[] = {
507 { ID2P(LANG_SHOW_ICONS), show_icons },
508 { ID2P(LANG_SHOW_INDICES), show_indices },
509 { ID2P(LANG_TRACK_DISPLAY), track_display },
510 { ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), save_playlist },
511 };
512
513 m=menu_init( items, sizeof(items) / sizeof(*items), NULL,
514 NULL, NULL, NULL );
515 result = menu_run(m);
516 menu_exit(m);
517
518 settings_save();
519
520 return result;
521}
522
523/* Show icons in viewer? */
524static bool show_icons(void)
525{
526 return set_bool((char *)str(LANG_SHOW_ICONS),
527 &global_settings.playlist_viewer_icons);
528}
529
530/* Show indices of tracks? */
531static bool show_indices(void)
532{
533 return set_bool((char *)str(LANG_SHOW_INDICES),
534 &global_settings.playlist_viewer_indices);
535}
536
537/* How to display a track */
538static bool track_display(void)
539{
540 static const struct opt_items names[] = {
541 { STR(LANG_DISPLAY_TRACK_NAME_ONLY) },
542 { STR(LANG_DISPLAY_FULL_PATH) }
543 };
544
545 return set_option((char *)str(LANG_TRACK_DISPLAY),
546 &global_settings.playlist_viewer_track_display, INT, names, 2,
547 NULL);
548} 498}
549 499
550/* Save playlist to disk */ 500/* Save playlist to disk */
551static bool save_playlist(void) 501static int save_playlist_func(void)
552{ 502{
553 save_playlist_screen(viewer.playlist); 503 save_playlist_screen(viewer.playlist);
554 return false; 504 return 0;
555} 505}
556 506
557/* View current playlist */ 507/* View current playlist */
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 49ec5b5f32..dfb7c4ba08 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -625,8 +625,9 @@ const struct settings_list settings[] = {
625 "playlist viewer icons",NULL), 625 "playlist viewer icons",NULL),
626 OFFON_SETTING(0,playlist_viewer_indices,LANG_SHOW_INDICES,true, 626 OFFON_SETTING(0,playlist_viewer_indices,LANG_SHOW_INDICES,true,
627 "playlist viewer indices",NULL), 627 "playlist viewer indices",NULL),
628 {F_T_INT,&global_settings.playlist_viewer_track_display,LANG_TRACK_DISPLAY, 628 CHOICE_SETTING(0, playlist_viewer_track_display, LANG_TRACK_DISPLAY, 0,
629 INT(0),"playlist viewer track display","track name,full path",UNUSED}, 629 "playlist viewer track display","track name,full path", NULL, 2,
630 ID2P(LANG_DISPLAY_TRACK_NAME_ONLY), ID2P(LANG_DISPLAY_FULL_PATH)),
630 CHOICE_SETTING(0, recursive_dir_insert, LANG_RECURSE_DIRECTORY , RECURSE_OFF, 631 CHOICE_SETTING(0, recursive_dir_insert, LANG_RECURSE_DIRECTORY , RECURSE_OFF,
631 "recursive directory insert", off_on_ask, NULL , 3 , 632 "recursive directory insert", off_on_ask, NULL , 3 ,
632 ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_RESUME_SETTING_ASK)), 633 ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_RESUME_SETTING_ASK)),