summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;