From fb00c2190bab443812581473032156eb1e804c30 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Fri, 21 May 2004 20:08:24 +0000 Subject: Plugin/file type association system. Patch #879411 by Henrik Backe git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4677 a1c6a512-1295-4272-9138-f99709370657 --- apps/onplay.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'apps/onplay.c') diff --git a/apps/onplay.c b/apps/onplay.c index b1b690222b..d864b3b2a9 100644 --- a/apps/onplay.c +++ b/apps/onplay.c @@ -43,11 +43,35 @@ #include "playlist_viewer.h" #include "talk.h" #include "onplay.h" +#include "filetypes.h" static char* selected_file = NULL; static int selected_file_attr = 0; static int onplay_result = ONPLAY_OK; +static bool list_viewers(void) +{ + struct menu_item menu[8]; + int m, i, result; + + i=filetype_load_menu(menu,sizeof(menu)/sizeof(*menu)); + if (i) + { + m = menu_init( menu, i, NULL, NULL, NULL, NULL ); + result = menu_show(m); + if (result >= 0) + { + menu_exit(m); + filetype_load_plugin(menu[result].desc,selected_file); + } + } + else + { + splash(HZ*2, true, "No viewers found"); + } + return false; +} + /* For playlist options */ struct playlist_args { int position; @@ -625,7 +649,7 @@ bool create_dir(void) int onplay(char* file, int attr) { - struct menu_item items[5]; /* increase this if you add entries! */ + struct menu_item items[6]; /* increase this if you add entries! */ int m, i=0, result; onplay_result = ONPLAY_OK; @@ -635,6 +659,14 @@ int onplay(char* file, int attr) selected_file = file; selected_file_attr = attr; + if (!(attr & ATTR_DIRECTORY)) + { + items[i].desc = str(LANG_ONPLAY_OPEN_WITH); + items[i].voice_id = LANG_ONPLAY_OPEN_WITH; + items[i].function = list_viewers; + i++; + } + if (((attr & TREE_ATTR_MASK) == TREE_ATTR_MPA) || (attr & ATTR_DIRECTORY) || ((attr & TREE_ATTR_MASK) == TREE_ATTR_M3U)) -- cgit v1.2.3