summaryrefslogtreecommitdiff
path: root/apps/onplay.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/onplay.c')
-rw-r--r--apps/onplay.c51
1 files changed, 40 insertions, 11 deletions
diff --git a/apps/onplay.c b/apps/onplay.c
index 3e085cea59..2f0ee3b861 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -40,6 +40,7 @@
40#include "buffer.h" 40#include "buffer.h"
41#include "settings.h" 41#include "settings.h"
42#include "status.h" 42#include "status.h"
43#include "playlist_viewer.h"
43#include "onplay.h" 44#include "onplay.h"
44 45
45static char* selected_file = NULL; 46static char* selected_file = NULL;
@@ -60,7 +61,7 @@ static bool add_to_playlist(int position, bool queue)
60 playlist_create(NULL, NULL); 61 playlist_create(NULL, NULL);
61 62
62 if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_MPA) 63 if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_MPA)
63 playlist_insert_track(selected_file, position, queue); 64 playlist_insert_track(NULL, selected_file, position, queue);
64 else if (selected_file_attr & ATTR_DIRECTORY) 65 else if (selected_file_attr & ATTR_DIRECTORY)
65 { 66 {
66 bool recurse = false; 67 bool recurse = false;
@@ -99,10 +100,11 @@ static bool add_to_playlist(int position, bool queue)
99 } 100 }
100 } 101 }
101 102
102 playlist_insert_directory(selected_file, position, queue, recurse); 103 playlist_insert_directory(NULL, selected_file, position, queue,
104 recurse);
103 } 105 }
104 else if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_M3U) 106 else if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_M3U)
105 playlist_insert_playlist(selected_file, position, queue); 107 playlist_insert_playlist(NULL, selected_file, position, queue);
106 108
107 if (new_playlist && (playlist_amount() > 0)) 109 if (new_playlist && (playlist_amount() > 0))
108 { 110 {
@@ -119,12 +121,36 @@ static bool add_to_playlist(int position, bool queue)
119 return false; 121 return false;
120} 122}
121 123
124static bool view_playlist(void)
125{
126 bool was_playing = mpeg_status() & MPEG_STATUS_PLAY;
127 bool result;
128
129 result = playlist_viewer_ex(selected_file);
130
131 if (!was_playing && (mpeg_status() & MPEG_STATUS_PLAY) &&
132 onplay_result == ONPLAY_OK)
133 /* playlist was started from viewer */
134 onplay_result = ONPLAY_START_PLAY;
135
136 return result;
137}
138
122/* Sub-menu for playlist options */ 139/* Sub-menu for playlist options */
123static bool playlist_options(void) 140static bool playlist_options(void)
124{ 141{
125 struct menu_items menu[6]; 142 struct menu_items menu[7];
126 struct playlist_args args[6]; /* increase these 2 if you add entries! */ 143 struct playlist_args args[7]; /* increase these 2 if you add entries! */
127 int m, i=0, result; 144 int m, i=0, pstart=0, result;
145 bool ret = false;
146
147 if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_M3U)
148 {
149 menu[i].desc = str(LANG_VIEW);
150 menu[i].function = view_playlist;
151 i++;
152 pstart++;
153 }
128 154
129 if (mpeg_status() & MPEG_STATUS_PLAY) 155 if (mpeg_status() & MPEG_STATUS_PLAY)
130 { 156 {
@@ -169,11 +195,13 @@ static bool playlist_options(void)
169 195
170 m = menu_init( menu, i ); 196 m = menu_init( menu, i );
171 result = menu_show(m); 197 result = menu_show(m);
172 if (result >= 0) 198 if (result >= 0 && result < pstart)
173 add_to_playlist(args[result].position, args[result].queue); 199 ret = menu[result].function();
200 else if (result >= pstart)
201 ret = add_to_playlist(args[result].position, args[result].queue);
174 menu_exit(m); 202 menu_exit(m);
175 203
176 return false; 204 return ret;
177} 205}
178 206
179static bool delete_file(void) 207static bool delete_file(void)
@@ -489,8 +517,9 @@ int onplay(char* file, int attr)
489 selected_file = file; 517 selected_file = file;
490 selected_file_attr = attr; 518 selected_file_attr = attr;
491 519
492 if (((attr & TREE_ATTR_MASK) == TREE_ATTR_MPA) || (attr & ATTR_DIRECTORY) || 520 if (((attr & TREE_ATTR_MASK) == TREE_ATTR_MPA) ||
493 (((attr & TREE_ATTR_MASK) == TREE_ATTR_M3U) && (mpeg_status() & MPEG_STATUS_PLAY))) 521 (attr & ATTR_DIRECTORY) ||
522 ((attr & TREE_ATTR_MASK) == TREE_ATTR_M3U))
494 { 523 {
495 menu[i].desc = str(LANG_PLAYINDICES_PLAYLIST); 524 menu[i].desc = str(LANG_PLAYINDICES_PLAYLIST);
496 menu[i].function = playlist_options; 525 menu[i].function = playlist_options;