123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- #ifndef NULLSOFT_API_PLAYLISTMANAGER_H
- #define NULLSOFT_API_PLAYLISTMANAGER_H
- #include <bfc/dispatch.h>
- class ifc_playlistloadercallback;
- class ifc_playlist;
- class ifc_playlistdirectorycallback;
- enum
- {
- PLAYLISTMANAGER_SUCCESS = 0,
- PLAYLISTMANAGER_FAILED = 1,
- PLAYLISTMANAGER_LOAD_NO_LOADER = 1,
- PLAYLISTMANAGER_LOAD_LOADER_OPEN_FAILED = 2,
- };
- class api_playlistmanager : public Dispatchable
- {
- protected:
- api_playlistmanager() {}
- ~api_playlistmanager() {}
- public:
- int Load( const wchar_t *filename, ifc_playlistloadercallback *playlist );
- int LoadAs( const wchar_t *filename, const wchar_t *ext, ifc_playlistloadercallback *playlist ); // call with ext in the format ".pls"
- int LoadFromDialog( const wchar_t *fns, ifc_playlistloadercallback *playlist );
- int LoadFromANSIDialog( const char *fns, ifc_playlistloadercallback *playlist );
-
- int Save( const wchar_t *filename, ifc_playlist *playlist );
-
- size_t Copy( const wchar_t *destFn, const wchar_t *srcFn ); // returns number of items copied
-
- size_t CountItems( const wchar_t *filename );
-
- int GetLengthMilliseconds( const wchar_t *filename );
- uint64_t GetLongLengthMilliseconds( const wchar_t *filename );
-
- void Randomize( ifc_playlist *playlist );
- void Reverse( ifc_playlist *playlist );
-
- void LoadDirectory( const wchar_t *directory, ifc_playlistloadercallback *callback, ifc_playlistdirectorycallback *dirCallback );
-
- bool CanLoad( const wchar_t *filename );
-
- void GetExtensionList( wchar_t *extensionList, size_t extensionListCch );
- void GetFilterList( wchar_t *extensionList, size_t extensionListCch );
- const wchar_t *EnumExtension( size_t num );
- public:
- DISPATCH_CODES
- {
- API_PLAYLISTMANAGER_LOAD = 10,
- API_PLAYLISTMANAGER_LOADNULLDELIMITED = 11,
- API_PLAYLISTMANAGER_LOADNULLDELIMITED_ANSI = 12,
- API_PLAYLISTMANAGER_LOADAS = 13,
- API_PLAYLISTMANAGER_SAVE = 20,
- API_PLAYLISTMANAGER_COPY = 30,
- API_PLAYLISTMANAGER_COUNT = 40,
- API_PLAYLISTMANAGER_GETLENGTH = 50,
- API_PLAYLISTMANAGER_GETLONGLENGTH = 51,
- API_PLAYLISTMANAGER_LOADDIRECTORY = 60,
- API_PLAYLISTMANAGER_RANDOMIZE = 100,
- API_PLAYLISTMANAGER_REVERSE = 110,
- API_PLAYLISTMANAGER_CANLOAD = 120,
- API_PLAYLISTMANAGER_GETEXTENSIONLIST = 130,
- API_PLAYLISTMANAGER_GETFILTERLIST = 140,
- API_PLAYLISTMANAGER_ENUMEXTENSION = 150,
- };
- };
- inline void api_playlistmanager::GetFilterList( wchar_t *extensionList, size_t extensionListCch )
- {
- extensionList[ 0 ] = 0; // just in case no one implements it
- extensionList[ 1 ] = 0;
- _voidcall( API_PLAYLISTMANAGER_GETFILTERLIST, extensionList, extensionListCch );
- }
- inline int api_playlistmanager::LoadAs( const wchar_t *filename, const wchar_t *ext, ifc_playlistloadercallback *playlist )
- {
- return _call( API_PLAYLISTMANAGER_LOADAS, (int)PLAYLISTMANAGER_FAILED, filename, ext, playlist );
- }
- inline void api_playlistmanager::GetExtensionList( wchar_t *extensionList, size_t extensionListCch )
- {
- extensionList[ 0 ] = 0; // just in case no one implements it
- _voidcall( API_PLAYLISTMANAGER_GETEXTENSIONLIST, extensionList, extensionListCch );
- }
- inline int api_playlistmanager::Load( const wchar_t *filename, ifc_playlistloadercallback *playlist )
- {
- return _call( API_PLAYLISTMANAGER_LOAD, (int)PLAYLISTMANAGER_FAILED, filename, playlist );
- }
- inline int api_playlistmanager::LoadFromDialog( const wchar_t *filename, ifc_playlistloadercallback *playlist )
- {
- return _call( API_PLAYLISTMANAGER_LOADNULLDELIMITED, (int)PLAYLISTMANAGER_FAILED, filename, playlist );
- }
- inline int api_playlistmanager::LoadFromANSIDialog( const char *filename, ifc_playlistloadercallback *playlist )
- {
- return _call( API_PLAYLISTMANAGER_LOADNULLDELIMITED_ANSI, (int)PLAYLISTMANAGER_FAILED, filename, playlist );
- }
- inline int api_playlistmanager::Save( const wchar_t *filename, ifc_playlist *playlist )
- {
- return _call( API_PLAYLISTMANAGER_SAVE, (int)PLAYLISTMANAGER_FAILED, filename, playlist );
- }
- inline size_t api_playlistmanager::Copy( const wchar_t *destFn, const wchar_t *srcFn )
- {
- return _call( API_PLAYLISTMANAGER_COPY, (size_t)0, destFn, srcFn );
- }
- inline size_t api_playlistmanager::CountItems( const wchar_t *filename )
- {
- return _call( API_PLAYLISTMANAGER_COUNT, (size_t)0, filename );
- }
- inline int api_playlistmanager::GetLengthMilliseconds( const wchar_t *filename )
- {
- return _call( API_PLAYLISTMANAGER_GETLENGTH, (int)0, filename );
- }
- inline uint64_t api_playlistmanager::GetLongLengthMilliseconds( const wchar_t *filename )
- {
- return _call( API_PLAYLISTMANAGER_GETLONGLENGTH, (uint64_t)0, filename );
- }
- inline void api_playlistmanager::Randomize( ifc_playlist *playlist )
- {
- _voidcall( API_PLAYLISTMANAGER_RANDOMIZE, playlist );
- }
- inline void api_playlistmanager::Reverse( ifc_playlist *playlist )
- {
- _voidcall( API_PLAYLISTMANAGER_REVERSE, playlist );
- }
- inline void api_playlistmanager::LoadDirectory( const wchar_t *directory, ifc_playlistloadercallback *callback, ifc_playlistdirectorycallback *dirCallback )
- {
- _voidcall( API_PLAYLISTMANAGER_LOADDIRECTORY, directory, callback, dirCallback );
- }
- inline bool api_playlistmanager::CanLoad( const wchar_t *filename )
- {
- return _call( API_PLAYLISTMANAGER_CANLOAD, (bool)true, filename );
- }
- inline const wchar_t *api_playlistmanager::EnumExtension( size_t num )
- {
- return _call( API_PLAYLISTMANAGER_ENUMEXTENSION, (const wchar_t *)0, num );
- }
- // {C5618774-7177-43aa-9906-933C9F40EBDC}
- static const GUID api_playlistmanagerGUID =
- { 0xc5618774, 0x7177, 0x43aa, { 0x99, 0x6, 0x93, 0x3c, 0x9f, 0x40, 0xeb, 0xdc } };
- #endif
|