summaryrefslogtreecommitdiff
path: root/apps/onplay.c
diff options
context:
space:
mode:
authorHardeep Sidhu <dyp@pobox.com>2004-01-26 17:05:21 +0000
committerHardeep Sidhu <dyp@pobox.com>2004-01-26 17:05:21 +0000
commit107ebc5ba950acee1108a5cb52f25be371b2ec8f (patch)
tree08a833f8f7a1242612cb2ef8cf97299048f46743 /apps/onplay.c
parent1c7a88de787c612598ac47a59b99e00e9a2e3106 (diff)
downloadrockbox-107ebc5ba950acee1108a5cb52f25be371b2ec8f.zip
rockbox-107ebc5ba950acee1108a5cb52f25be371b2ec8f.tar.gz
rockbox-107ebc5ba950acee1108a5cb52f25be371b2ec8f.tar.bz2
rockbox-107ebc5ba950acee1108a5cb52f25be371b2ec8f.tar.xz
Modified playlist handling to allow for multiple playlists to be edited at the same time. Added support in playlist viewer for viewing/editing playlists on disk (accessed via ON+PLAY->Playlist->View on a playlist). Added menu in playlist viewer for changing a few settings and saving playlist. Added File Options menu in playlist viewer ON+PLAY menu.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4276 a1c6a512-1295-4272-9138-f99709370657
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 3e085ce..2f0ee3b 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -40,6 +40,7 @@
#include "buffer.h"
#include "settings.h"
#include "status.h"
+#include "playlist_viewer.h"
#include "onplay.h"
static char* selected_file = NULL;
@@ -60,7 +61,7 @@ static bool add_to_playlist(int position, bool queue)
playlist_create(NULL, NULL);
if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_MPA)
- playlist_insert_track(selected_file, position, queue);
+ playlist_insert_track(NULL, selected_file, position, queue);
else if (selected_file_attr & ATTR_DIRECTORY)
{
bool recurse = false;
@@ -99,10 +100,11 @@ static bool add_to_playlist(int position, bool queue)
}
}
- playlist_insert_directory(selected_file, position, queue, recurse);
+ playlist_insert_directory(NULL, selected_file, position, queue,
+ recurse);
}
else if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_M3U)
- playlist_insert_playlist(selected_file, position, queue);
+ playlist_insert_playlist(NULL, selected_file, position, queue);
if (new_playlist && (playlist_amount() > 0))
{
@@ -119,12 +121,36 @@ static bool add_to_playlist(int position, bool queue)
return false;
}
+static bool view_playlist(void)
+{
+ bool was_playing = mpeg_status() & MPEG_STATUS_PLAY;
+ bool result;
+
+ result = playlist_viewer_ex(selected_file);
+
+ if (!was_playing && (mpeg_status() & MPEG_STATUS_PLAY) &&
+ onplay_result == ONPLAY_OK)
+ /* playlist was started from viewer */
+ onplay_result = ONPLAY_START_PLAY;
+
+ return result;
+}
+
/* Sub-menu for playlist options */
static bool playlist_options(void)
{
- struct menu_items menu[6];
- struct playlist_args args[6]; /* increase these 2 if you add entries! */
- int m, i=0, result;
+ struct menu_items menu[7];
+ struct playlist_args args[7]; /* increase these 2 if you add entries! */
+ int m, i=0, pstart=0, result;
+ bool ret = false;
+
+ if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_M3U)
+ {
+ menu[i].desc = str(LANG_VIEW);
+ menu[i].function = view_playlist;
+ i++;
+ pstart++;
+ }
if (mpeg_status() & MPEG_STATUS_PLAY)
{
@@ -169,11 +195,13 @@ static bool playlist_options(void)
m = menu_init( menu, i );
result = menu_show(m);
- if (result >= 0)
- add_to_playlist(args[result].position, args[result].queue);
+ if (result >= 0 && result < pstart)
+ ret = menu[result].function();
+ else if (result >= pstart)
+ ret = add_to_playlist(args[result].position, args[result].queue);
menu_exit(m);
- return false;
+ return ret;
}
static bool delete_file(void)
@@ -489,8 +517,9 @@ int onplay(char* file, int attr)
selected_file = file;
selected_file_attr = attr;
- if (((attr & TREE_ATTR_MASK) == TREE_ATTR_MPA) || (attr & ATTR_DIRECTORY) ||
- (((attr & TREE_ATTR_MASK) == TREE_ATTR_M3U) && (mpeg_status() & MPEG_STATUS_PLAY)))
+ if (((attr & TREE_ATTR_MASK) == TREE_ATTR_MPA) ||
+ (attr & ATTR_DIRECTORY) ||
+ ((attr & TREE_ATTR_MASK) == TREE_ATTR_M3U))
{
menu[i].desc = str(LANG_PLAYINDICES_PLAYLIST);
menu[i].function = playlist_options;