summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2022-11-19 16:15:22 +0100
committerChristian Soffke <christian.soffke@gmail.com>2022-11-19 17:08:39 +0100
commitdcde5aa89daaa9906b04770ab18def9c146474c4 (patch)
tree41d54e5956638a61c58697e0c097733c1c5b6684
parentb3a464c9d1f70a377a6edf2b7058da0748e842e5 (diff)
downloadrockbox-dcde5aa89daaa9906b04770ab18def9c146474c4.tar.gz
rockbox-dcde5aa89daaa9906b04770ab18def9c146474c4.zip
Database & Playlist Viewer: Fix return to WPS from plugin
After calling up PictureFlow from the database or from the Playlist Viewer, you would not be returned to the WPS as would be expected when picking a new song, selecting "Go to WPS" or pressing the WPS action button. Change-Id: I902ac9185ebe092d0c4c08804db0a813a32cc39c
-rw-r--r--apps/filetypes.c2
-rw-r--r--apps/onplay.c18
-rw-r--r--apps/playlist_viewer.c34
3 files changed, 44 insertions, 10 deletions
diff --git a/apps/filetypes.c b/apps/filetypes.c
index 02d2af282e..24dc0f2e4d 100644
--- a/apps/filetypes.c
+++ b/apps/filetypes.c
@@ -618,7 +618,7 @@ int filetype_list_viewers(const char* current_file)
618 int i = viewers[info.selection]; 618 int i = viewers[info.selection];
619 snprintf(plugin, MAX_PATH, "%s/%s." ROCK_EXTENSION, 619 snprintf(plugin, MAX_PATH, "%s/%s." ROCK_EXTENSION,
620 PLUGIN_DIR, filetypes[i].plugin); 620 PLUGIN_DIR, filetypes[i].plugin);
621 plugin_load(plugin, current_file); 621 ret = plugin_load(plugin, current_file);
622 } 622 }
623 return ret; 623 return ret;
624} 624}
diff --git a/apps/onplay.c b/apps/onplay.c
index 0bb3b6ae3c..0172f96c21 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -1558,6 +1558,8 @@ static bool onplay_load_plugin(void *param)
1558 onplay_result = ONPLAY_RELOAD_DIR; 1558 onplay_result = ONPLAY_RELOAD_DIR;
1559 else if (ret == PLUGIN_GOTO_PLUGIN) 1559 else if (ret == PLUGIN_GOTO_PLUGIN)
1560 onplay_result = ONPLAY_PLUGIN; 1560 onplay_result = ONPLAY_PLUGIN;
1561 else if (ret == PLUGIN_GOTO_WPS)
1562 onplay_result = ONPLAY_START_PLAY;
1561 return false; 1563 return false;
1562} 1564}
1563 1565
@@ -1818,6 +1820,14 @@ static int playlist_insert_shuffled(void)
1818 return ONPLAY_RELOAD_DIR; 1820 return ONPLAY_RELOAD_DIR;
1819} 1821}
1820 1822
1823static int tree_hotkey_run_plugin(void *param)
1824{
1825 if (filetype_load_plugin((const char*)param, selected_file) == PLUGIN_GOTO_WPS)
1826 return ONPLAY_START_PLAY;
1827
1828 return ONPLAY_RELOAD_DIR;
1829}
1830
1821static void hotkey_run_plugin(void) 1831static void hotkey_run_plugin(void)
1822{ 1832{
1823 open_plugin_run(ID2P(LANG_HOTKEY_WPS)); 1833 open_plugin_run(ID2P(LANG_HOTKEY_WPS));
@@ -1866,12 +1876,12 @@ static struct hotkey_assignment hotkey_items[] = {
1866 HOTKEY_FUNC(bookmark_create_menu, NULL), 1876 HOTKEY_FUNC(bookmark_create_menu, NULL),
1867 ONPLAY_OK }, 1877 ONPLAY_OK },
1868 { HOTKEY_PROPERTIES, LANG_PROPERTIES, 1878 { HOTKEY_PROPERTIES, LANG_PROPERTIES,
1869 HOTKEY_FUNC(onplay_load_plugin, (void *)"properties"), 1879 HOTKEY_FUNC(tree_hotkey_run_plugin, (void *)"properties"),
1870 ONPLAY_RELOAD_DIR }, 1880 ONPLAY_OK },
1871#ifdef HAVE_TAGCACHE 1881#ifdef HAVE_TAGCACHE
1872 { HOTKEY_PICTUREFLOW, LANG_ONPLAY_PICTUREFLOW, 1882 { HOTKEY_PICTUREFLOW, LANG_ONPLAY_PICTUREFLOW,
1873 HOTKEY_FUNC(onplay_load_plugin, (void *)"pictureflow"), 1883 HOTKEY_FUNC(tree_hotkey_run_plugin, (void *)"pictureflow"),
1874 ONPLAY_RELOAD_DIR }, 1884 ONPLAY_OK },
1875#endif 1885#endif
1876}; 1886};
1877 1887
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c
index 5b6e2991bc..0eaf559c66 100644
--- a/apps/playlist_viewer.c
+++ b/apps/playlist_viewer.c
@@ -76,6 +76,7 @@ enum direction
76enum pv_onplay_result { 76enum pv_onplay_result {
77 PV_ONPLAY_USB, 77 PV_ONPLAY_USB,
78 PV_ONPLAY_USB_CLOSED, 78 PV_ONPLAY_USB_CLOSED,
79 PV_ONPLAY_WPS_CLOSED,
79 PV_ONPLAY_CLOSED, 80 PV_ONPLAY_CLOSED,
80 PV_ONPLAY_ITEM_REMOVED, 81 PV_ONPLAY_ITEM_REMOVED,
81 PV_ONPLAY_CHANGED, 82 PV_ONPLAY_CHANGED,
@@ -519,9 +520,17 @@ static enum pv_onplay_result open_with(const struct playlist_entry *current_trac
519 520
520 strmemccpy(selected_track, current_track->name, sizeof(selected_track)); 521 strmemccpy(selected_track, current_track->name, sizeof(selected_track));
521 522
523 int plugin_return = filetype_list_viewers(selected_track);
522 524
523 return (filetype_list_viewers(selected_track) == 525 switch (plugin_return)
524 PLUGIN_USB_CONNECTED ? PV_ONPLAY_USB_CLOSED : PV_ONPLAY_CLOSED); 526 {
527 case PLUGIN_USB_CONNECTED:
528 return PV_ONPLAY_USB_CLOSED;
529 case PLUGIN_GOTO_WPS:
530 return PV_ONPLAY_WPS_CLOSED;
531 default:
532 return PV_ONPLAY_CLOSED;
533 }
525} 534}
526#endif /* HAVE_HOTKEY */ 535#endif /* HAVE_HOTKEY */
527 536
@@ -533,8 +542,17 @@ static enum pv_onplay_result open_pictureflow(const struct playlist_entry *curre
533 542
534 strmemccpy(selected_track, current_track->name, sizeof(selected_track)); 543 strmemccpy(selected_track, current_track->name, sizeof(selected_track));
535 544
536 return (filetype_load_plugin((void *)"pictureflow", selected_track) == 545 int plugin_return = filetype_load_plugin((void *)"pictureflow", selected_track);
537 PLUGIN_USB_CONNECTED ? PV_ONPLAY_USB_CLOSED : PV_ONPLAY_CLOSED); 546
547 switch (plugin_return)
548 {
549 case PLUGIN_USB_CONNECTED:
550 return PV_ONPLAY_USB_CLOSED;
551 case PLUGIN_GOTO_WPS:
552 return PV_ONPLAY_WPS_CLOSED;
553 default:
554 return PV_ONPLAY_CLOSED;
555 }
538} 556}
539#endif 557#endif
540 558
@@ -959,6 +977,8 @@ enum playlist_viewer_result playlist_viewer_ex(const char* filename)
959 } 977 }
960 else if (pv_onplay_result == PV_ONPLAY_USB_CLOSED) 978 else if (pv_onplay_result == PV_ONPLAY_USB_CLOSED)
961 return PLAYLIST_VIEWER_USB; 979 return PLAYLIST_VIEWER_USB;
980 else if (pv_onplay_result == PV_ONPLAY_WPS_CLOSED)
981 return PLAYLIST_VIEWER_OK;
962 else if (pv_onplay_result == PV_ONPLAY_CLOSED) 982 else if (pv_onplay_result == PV_ONPLAY_CLOSED)
963 { 983 {
964 if (!open_playlist_viewer(filename, &playlist_lists, true)) 984 if (!open_playlist_viewer(filename, &playlist_lists, true))
@@ -1004,8 +1024,12 @@ enum playlist_viewer_result playlist_viewer_ex(const char* filename)
1004 1024
1005 if (do_plugin != NULL) 1025 if (do_plugin != NULL)
1006 { 1026 {
1007 if (do_plugin(current_track) == PV_ONPLAY_USB_CLOSED) 1027 int plugin_result = do_plugin(current_track);
1028
1029 if (plugin_result == PV_ONPLAY_USB_CLOSED)
1008 return PLAYLIST_VIEWER_USB; 1030 return PLAYLIST_VIEWER_USB;
1031 else if (plugin_result == PV_ONPLAY_WPS_CLOSED)
1032 return PLAYLIST_VIEWER_OK;
1009 else if (!open_playlist_viewer(filename, &playlist_lists, true)) 1033 else if (!open_playlist_viewer(filename, &playlist_lists, true))
1010 { 1034 {
1011 ret = PLAYLIST_VIEWER_CANCEL; 1035 ret = PLAYLIST_VIEWER_CANCEL;