aboutsummaryrefslogtreecommitdiff
path: root/Src/playlist/Playlist.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/playlist/Playlist.h')
-rw-r--r--Src/playlist/Playlist.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/Src/playlist/Playlist.h b/Src/playlist/Playlist.h
new file mode 100644
index 00000000..0368b57c
--- /dev/null
+++ b/Src/playlist/Playlist.h
@@ -0,0 +1,48 @@
+#ifndef NULLSOFT_ML_PLAYLISTS_PLAYLIST_H
+#define NULLSOFT_ML_PLAYLISTS_PLAYLIST_H
+
+#include "ifc_playlist.h"
+
+#include <windows.h> // for MAX_PATH
+#include "pl_entry.h"
+#include "ifc_playlistT.h"
+#include "ifc_playlistloadercallbackT.h"
+#include <vector>
+
+
+class Playlist : public ifc_playlistloadercallbackT<Playlist>, public ifc_playlistT<Playlist>
+{
+public:
+ virtual ~Playlist();
+
+ void Clear();
+ int OnFile( const wchar_t *p_filename, const wchar_t *p_title, int p_lengthInMS, ifc_plentryinfo *p_info );
+ void AppendWithInfo( const wchar_t *p_filename, const wchar_t *p_title, int p_lengthInMS );
+ void Insert( size_t p_index, const wchar_t *p_filename, const wchar_t *p_title, int p_lengthInMS );
+
+ size_t GetNumItems();
+
+ size_t GetItem( size_t item, wchar_t *filename, size_t filenameCch );
+ size_t GetItemTitle( size_t item, wchar_t *title, size_t titleCch );
+ const wchar_t *ItemTitle( size_t item );
+ const wchar_t *ItemName( size_t item );
+ int GetItemLengthMilliseconds( size_t item ); // TODO: maybe microsecond for better resolution?
+ size_t GetItemExtendedInfo( size_t item, const wchar_t *metadata, wchar_t *info, size_t infoCch );
+
+ void SetItemFilename( size_t item, const wchar_t *filename );
+ void SetItemTitle( size_t item, const wchar_t *title );
+ void SetItemLengthMilliseconds( size_t item, int length );
+
+ int Reverse();
+ int Swap( size_t item1, size_t item2 );
+ int Randomize( int ( *generator )( ) );
+ void Remove( size_t item );
+ int SortByTitle();
+ int SortByFilename();
+ int SortByDirectory(); //sorts by directory and then by filename
+
+private:
+ typedef std::vector<pl_entry*> PlaylistEntries;
+ PlaylistEntries entries;
+};
+#endif \ No newline at end of file