diff options
Diffstat (limited to 'Src/nu/MediaLibraryInterface.h')
-rw-r--r-- | Src/nu/MediaLibraryInterface.h | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/Src/nu/MediaLibraryInterface.h b/Src/nu/MediaLibraryInterface.h new file mode 100644 index 00000000..45e6d2f9 --- /dev/null +++ b/Src/nu/MediaLibraryInterface.h @@ -0,0 +1,157 @@ + +#ifndef MEDIALIBRARYINTERFACEH +#define MEDIALIBRARYINTERFACEH + +#include <windows.h> +#include <tchar.h> + +#include "..\Plugins\General\gen_ml/ml.h" +#include "../winamp/wa_ipc.h" + +#ifndef REPLICANT_COMPAT +#include <vector> +#endif + + +class MediaLibraryInterface +{ +public: + MediaLibraryInterface() : httpRetrieveFile( 0 ) {} + + // children communicate back to the media library by SendMessage(plugin.hwndLibraryParent,WM_ML_IPC,param,ML_IPC_X); + int AddTreeImage( int resourceId ); // returns index of the image. + int AddTreeImage( int resourceId, int imageIndex, BMPFILTERPROC filter ); + int AddTreeImageBmp( int resourceId ); + void AddTreeItem( MLTREEITEM &newItem ); + void AddTreeItem( MLTREEITEMW &newItem ); + void SetTreeItem( MLTREEITEM &item ); + void SetTreeItem( MLTREEITEMW &item ); + void RemoveTreeItem( INT_PTR treeId ); + void SelectTreeItem( INT_PTR treeId ); + void UpdateTreeItem( MLTREEITEMINFO &newItem ); + void UpdateTreeItem( MLTREEITEMINFOW &newItem ); + INT_PTR GetSelectedTreeItem( void ); + void RenameTreeId( INT_PTR treeId, const wchar_t *newName ); + + INT_PTR GetChildId( INT_PTR id ); + INT_PTR GetNextId( INT_PTR id ); + + void AddToSendTo( char description[], INT_PTR context, INT_PTR unique ); + void AddToSendTo( wchar_t description[], INT_PTR context, INT_PTR unique ); + void BranchSendTo( INT_PTR context ); + void AddToBranchSendTo( const wchar_t description[], INT_PTR context, INT_PTR unique ); + void EndBranchSendTo( const wchar_t description[], INT_PTR context ); + + const char *GetIniDirectory(); + const wchar_t *GetIniDirectoryW(); + const char *GetWinampIni(); + const wchar_t *GetWinampIniW(); + void BuildPath( const wchar_t *pathEnd, wchar_t *path, size_t numChars ); + + + int SkinList( HWND list ); + void UnskinList( int token ); + void ListViewShowSort( int token, BOOL show ); + void ListViewSort( int token, int columnIndex, BOOL ascending ); + void ListSkinUpdateView( int listSkin ); + + void OpenURL( const wchar_t *url ) { SendMessage( winamp, WM_WA_IPC, (WPARAM)url, IPC_OPEN_URL ); } + + int SkinComboBox( HWND comboBox ); + void UnskinComboBox( int token ); + + void *GetWADLGFunc( int num ); + + #ifndef REPLICANT_COMPAT + void PlayStreams( std::vector<const wchar_t *> &urls, bool force = false ); + #endif + + void PlayStream( wchar_t *url, bool force = false ); + void PlayFile( const wchar_t *url ); + void EnqueueFile( const wchar_t *url ); + void EnqueueStream( wchar_t *url, bool force = true ); + void GetFileInfo( const char *filename, char *title, int titleCch, int *length ); + void GetFileInfo( const wchar_t *filename, wchar_t *title, int titleCch, int *length ); + + void ClearPlaylist() { SendMessage( winamp, WM_WA_IPC, 0, IPC_DELETE ); } + void SwitchToPluginView( int itemId ) { SendMessage( library, WM_ML_IPC, itemId, ML_IPC_SETCURTREEITEM ); } + int GetWinampVersion() { return (int)(INT_PTR)SendMessage( winamp, WM_WA_IPC, 0, IPC_GETVERSION ); } + + HWND library = 0; + HWND winamp = 0; + + HINSTANCE instance = 0; + + const char *iniDirectory = 0; + const wchar_t *iniDirectoryW = 0; + + const char *winampIni = 0; + const wchar_t *winampIniW = 0; + + const char *pluginDirectory = 0; + + void AddPreferences( prefsDlgRec &prefs ) { SendMessage( winamp, WM_WA_IPC, (WPARAM)&prefs, IPC_ADD_PREFS_DLG ); } + void AddPreferences( prefsDlgRecW &prefs ) { SendMessage( winamp, WM_WA_IPC, (WPARAM)&prefs, IPC_ADD_PREFS_DLGW ); } + void InsertTreeItem( MLTREEITEM &newItem ); + void InsertTreeItem( MLTREEITEMW &newItem ); + + char *GetProxy() + { + char *proxy = (char *)SendMessage( winamp, WM_WA_IPC, 0, IPC_GET_PROXY_STRING ); + if ( proxy == (char *)1 || strlen(proxy) == 0 ) + return 0; + else + return proxy; + } + + void BuildPluginPath( const TCHAR *filename, TCHAR *path, size_t pathSize ); + + int ( *httpRetrieveFile )( HWND hwnd, const char *url, const char *file, const char *dlgtitle ); + + IDispatch *GetDispatchObject(); + int GetUniqueDispatchId(); + void ListSkinDisableHorizontalScrollbar( int listSkin ); + + void AddToMediaLibrary( const char *filename ); + void AddToMediaLibrary( const wchar_t *filename ); + + void GoToPreferences( int id ) { SendMessage( winamp, WM_WA_IPC, id, IPC_OPENPREFSTOPAGE ); } + void GoToPreferences( prefsDlgRec &prefs ) { SendMessage( winamp, WM_WA_IPC, (WPARAM)&prefs, IPC_OPENPREFSTOPAGE ); } + void GoToPreferences( prefsDlgRecW &prefs ) { SendMessage( winamp, WM_WA_IPC, (WPARAM)&prefs, IPC_OPENPREFSTOPAGE ); } + + const char *GetFontName() { return (const char *)SendMessage( winamp, WM_WA_IPC, 1, IPC_GET_GENSKINBITMAP ); } + int GetFontSize() { return (int)SendMessage( winamp, WM_WA_IPC, 3, IPC_GET_GENSKINBITMAP ); } + + void AddBookmark( char *bookmark ) + { + COPYDATASTRUCT cds; + cds.dwData = IPC_ADDBOOKMARK; + cds.lpData = bookmark; + cds.cbData = (int)strlen( bookmark ) + 1; + + SendMessage( winamp, WM_COPYDATA, NULL, (LPARAM)&cds ); + } + + void AddBookmarkW( wchar_t *bookmark ) + { + COPYDATASTRUCT cds; + cds.dwData = IPC_ADDBOOKMARKW; + cds.lpData = bookmark; + cds.cbData = (int)( sizeof( wchar_t ) * wcslen( bookmark ) + sizeof( wchar_t ) ); + + SendMessage( winamp, WM_COPYDATA, NULL, (LPARAM)&cds ); + } + + void ShowMediaLibrary() { SendMessage( library, WM_ML_IPC, 0, ML_IPC_ENSURE_VISIBLE ); } + + const char *GetExtensionList() { return (const char *)SendMessage( winamp, WM_WA_IPC, 0, IPC_GET_EXTLIST ); } + bool IsShowing() { return !!SendMessage( library, WM_ML_IPC, 0, ML_IPC_IS_VISIBLE ); } + void RefreshPrefs( int prefs ) { SendMessage( library, WM_ML_IPC, prefs, ML_IPC_REFRESH_PREFS ); } + void GracenoteCancelRequest() { SendMessage( library, WM_ML_IPC, GRACENOTE_CANCEL_REQUEST, ML_IPC_GRACENOTE ); }// TODO: should we post this? + + DWORD AddDispatch( wchar_t *name, IDispatch *object ); +}; + +extern MediaLibraryInterface mediaLibrary; + +#endif |