summaryrefslogtreecommitdiff
path: root/apps/onplay.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/onplay.c')
-rw-r--r--apps/onplay.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/apps/onplay.c b/apps/onplay.c
index a2a3671d3e..da06f937b6 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -315,7 +315,7 @@ MENUITEM_FUNCTION(view_playlist_item, 0, ID2P(LANG_VIEW),
315 view_playlist, NULL, 315 view_playlist, NULL,
316 treeplaylist_callback, Icon_Playlist); 316 treeplaylist_callback, Icon_Playlist);
317 317
318MAKE_ONPLAYMENU( tree_playlist_menu, ID2P(LANG_PLAYLIST), 318MAKE_ONPLAYMENU( tree_playlist_menu, ID2P(LANG_CURRENT_PLAYLIST),
319 treeplaylist_callback, Icon_Playlist, 319 treeplaylist_callback, Icon_Playlist,
320 320
321 /* view */ 321 /* view */
@@ -382,6 +382,12 @@ static int treeplaylist_callback(int action,
382 return action; 382 return action;
383} 383}
384 384
385void onplay_show_playlist_menu(char* track_name)
386{
387 selected_file = track_name;
388 selected_file_attr = FILE_ATTR_AUDIO;
389 do_menu(&tree_playlist_menu, NULL, NULL, false);
390}
385 391
386/* playlist catalog options */ 392/* playlist catalog options */
387static bool cat_add_to_a_playlist(void) 393static bool cat_add_to_a_playlist(void)
@@ -395,23 +401,37 @@ static bool cat_add_to_a_new_playlist(void)
395 return catalog_add_to_a_playlist(selected_file, selected_file_attr, 401 return catalog_add_to_a_playlist(selected_file, selected_file_attr,
396 true, NULL); 402 true, NULL);
397} 403}
404static int clipboard_callback(int action,const struct menu_item_ex *this_item);
405static bool set_catalogdir(void)
406{
407 catalog_set_directory(selected_file);
408 settings_save();
409 return false;
410}
411MENUITEM_FUNCTION(set_catalogdir_item, 0, ID2P(LANG_SET_AS_PLAYLISTCAT_DIR),
412 set_catalogdir, NULL, clipboard_callback, Icon_Playlist);
398 413
399static int cat_playlist_callback(int action, 414static int cat_playlist_callback(int action,
400 const struct menu_item_ex *this_item); 415 const struct menu_item_ex *this_item);
401MENUITEM_FUNCTION(cat_view_lists, 0, ID2P(LANG_CATALOG_VIEW),
402 catalog_view_playlists, 0,
403 cat_playlist_callback, Icon_Playlist);
404MENUITEM_FUNCTION(cat_add_to_list, 0, ID2P(LANG_CATALOG_ADD_TO), 416MENUITEM_FUNCTION(cat_add_to_list, 0, ID2P(LANG_CATALOG_ADD_TO),
405 cat_add_to_a_playlist, 0, NULL, Icon_Playlist); 417 cat_add_to_a_playlist, 0, NULL, Icon_Playlist);
406MENUITEM_FUNCTION(cat_add_to_new, 0, ID2P(LANG_CATALOG_ADD_TO_NEW), 418MENUITEM_FUNCTION(cat_add_to_new, 0, ID2P(LANG_CATALOG_ADD_TO_NEW),
407 cat_add_to_a_new_playlist, 0, NULL, Icon_Playlist); 419 cat_add_to_a_new_playlist, 0, NULL, Icon_Playlist);
408MAKE_ONPLAYMENU(cat_playlist_menu, ID2P(LANG_CATALOG), 420MAKE_ONPLAYMENU(cat_playlist_menu, ID2P(LANG_CATALOG),
409 cat_playlist_callback, Icon_Playlist, 421 cat_playlist_callback, Icon_Playlist,
410 &cat_view_lists, &cat_add_to_list, &cat_add_to_new); 422 &cat_add_to_list, &cat_add_to_new, &set_catalogdir_item);
423
424void onplay_show_playlist_cat_menu(char* track_name)
425{
426 selected_file = track_name;
427 selected_file_attr = FILE_ATTR_AUDIO;
428 do_menu(&cat_playlist_menu, NULL, NULL, false);
429}
411 430
412static int cat_playlist_callback(int action, 431static int cat_playlist_callback(int action,
413 const struct menu_item_ex *this_item) 432 const struct menu_item_ex *this_item)
414{ 433{
434 (void)this_item;
415 if (!selected_file || 435 if (!selected_file ||
416 (((selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) && 436 (((selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) &&
417 ((selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) && 437 ((selected_file_attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) &&
@@ -430,12 +450,7 @@ static int cat_playlist_callback(int action,
430 switch (action) 450 switch (action)
431 { 451 {
432 case ACTION_REQUEST_MENUITEM: 452 case ACTION_REQUEST_MENUITEM:
433 if (this_item == &cat_view_lists) 453 if ((audio_status() & AUDIO_STATUS_PLAY) || context != CONTEXT_WPS)
434 {
435 return action;
436 }
437 else if ((audio_status() & AUDIO_STATUS_PLAY) ||
438 context != CONTEXT_WPS)
439 { 454 {
440 return action; 455 return action;
441 } 456 }
@@ -1100,7 +1115,8 @@ static int clipboard_callback(int action,const struct menu_item_ex *this_item)
1100 { 1115 {
1101 /* only for directories */ 1116 /* only for directories */
1102 if (this_item == &delete_dir_item || 1117 if (this_item == &delete_dir_item ||
1103 this_item == &set_startdir_item 1118 this_item == &set_startdir_item ||
1119 this_item == &set_catalogdir_item
1104#ifdef HAVE_RECORDING 1120#ifdef HAVE_RECORDING
1105 || this_item == &set_recdir_item 1121 || this_item == &set_recdir_item
1106#endif 1122#endif