diff options
Diffstat (limited to 'plugins/Watrack_MPD/src')
-rwxr-xr-x | plugins/Watrack_MPD/src/commonheaders.h | 17 | ||||
-rwxr-xr-x | plugins/Watrack_MPD/src/globals.h | 11 | ||||
-rwxr-xr-x | plugins/Watrack_MPD/src/init.cpp | 23 | ||||
-rwxr-xr-x | plugins/Watrack_MPD/src/m_music.h | 351 | ||||
-rwxr-xr-x | plugins/Watrack_MPD/src/main.cpp | 350 | ||||
-rwxr-xr-x | plugins/Watrack_MPD/src/options.cpp | 41 |
6 files changed, 214 insertions, 579 deletions
diff --git a/plugins/Watrack_MPD/src/commonheaders.h b/plugins/Watrack_MPD/src/commonheaders.h index 85eb73a335..c71f36b977 100755 --- a/plugins/Watrack_MPD/src/commonheaders.h +++ b/plugins/Watrack_MPD/src/commonheaders.h @@ -15,13 +15,16 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef COMMONHEADERS_H #define COMMONHEADERS_H + +#define _CRT_SECURE_NO_WARNINGS + #include <windows.h> #include <tchar.h> #include <malloc.h> #include <time.h> +#include <uxtheme.h> -#define MIRANDA_VER 0x0800 #include <newpluginapi.h> #include <m_netlib.h> //#include <m_clist.h> @@ -36,8 +39,18 @@ #include "resource.h" #include "constants.h" -#include "globals.h" #include "main.h" #include "m_music.h" #include "utilities.h" + +extern HINSTANCE hInst; +extern HANDLE ghNetlibUser; +extern BOOL bWatrackService; +extern TCHAR *gbHost, *gbPassword; +extern WORD gbPort; + +extern char *date(); +extern int WaMpdOptInit(WPARAM wParam,LPARAM lParam); +extern void RegisterPlayer(); + #endif diff --git a/plugins/Watrack_MPD/src/globals.h b/plugins/Watrack_MPD/src/globals.h deleted file mode 100755 index edc5bd10c3..0000000000 --- a/plugins/Watrack_MPD/src/globals.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef GLOBALS_H -#define GLOBALS_H -HANDLE ghNetlibUser; -HANDLE ghConnection; -HANDLE ghPacketReciever; -BOOL bWatrackService; -TCHAR *gbHost, *gbPassword; -WORD gbPort; -BOOL Connected; -int gbState; -#endif diff --git a/plugins/Watrack_MPD/src/init.cpp b/plugins/Watrack_MPD/src/init.cpp index bfd7199856..13e0b85351 100755 --- a/plugins/Watrack_MPD/src/init.cpp +++ b/plugins/Watrack_MPD/src/init.cpp @@ -21,9 +21,9 @@ HINSTANCE hInst; BOOL bWatrackService = FALSE; int hLangpack = 0; -static int OnModulesLoaded(WPARAM wParam,LPARAM lParam); -extern char *date(); -extern int WaMpdOptInit(WPARAM wParam,LPARAM lParam); +TCHAR *gbHost, *gbPassword; +WORD gbPort; +HANDLE ghNetlibUser; PLUGININFOEX pluginInfo={ sizeof(PLUGININFOEX), @@ -50,13 +50,6 @@ __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) return &pluginInfo; } -int __declspec(dllexport) Load() -{ - mir_getLP(&pluginInfo); - HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); - return 0; -} - void InitVars() { gbPort = DBGetContactSettingWord(NULL, szModuleName, "Port", 6600); @@ -66,9 +59,7 @@ void InitVars() gbPassword = UniGetContactSettingUtf(NULL, szModuleName, "Password", _T("")); } - -extern void RegisterPlayer(); -static int OnModulesLoaded(WPARAM wParam,LPARAM lParam) +static int OnModulesLoaded(WPARAM wParam, LPARAM lParam) { HANDLE hHookOptionInit; NETLIBUSER nlu = {0}; @@ -86,6 +77,12 @@ static int OnModulesLoaded(WPARAM wParam,LPARAM lParam) return 0; } +int __declspec(dllexport) Load() +{ + mir_getLP(&pluginInfo); + HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); + return 0; +} int __declspec(dllexport) Unload(void) { diff --git a/plugins/Watrack_MPD/src/m_music.h b/plugins/Watrack_MPD/src/m_music.h deleted file mode 100755 index 283910dfce..0000000000 --- a/plugins/Watrack_MPD/src/m_music.h +++ /dev/null @@ -1,351 +0,0 @@ -#ifndef M_MUSIC -#define M_MUSIC - -#define MIID_WATRACK {0xfc6c81f4, 0x837e, 0x4430, {0x96, 0x01, 0xa0, 0xaa, 0x43, 0x17, 0x7a, 0xe3}} - -typedef struct tSongInfoA { - char *artist; - char *title; - char *album; - char *genre; - char *comment; - char *year; - char *mfile; // media file - int kbps; - int khz; - int channels; - int track; - int total; // music length - int time; // elapsed time - char *wndtext; // window title - char *player; // player name - int plyver; // player version - HANDLE icon; // player icon - int fsize; // media file size - int vbr; - int status; // player status: 0 - stopped; 1 - playing; 2 - paused - HWND plwnd; // player window - // video part - int codec; - int width; - int height; - int fps; - __int64 date; - char *txtver; - char *lyric; - char *cover; - int volume; - char *url; -} SONGINFOA, *LPSONGINFOA; - -typedef struct tSongInfo { - wchar_t *artist; - wchar_t *title; - wchar_t *album; - wchar_t *genre; - wchar_t *comment; - wchar_t *year; - wchar_t *mfile; // media file - int kbps; - int khz; - int channels; - int track; - int total; // music length - int time; // elapsed time - wchar_t *wndtext; // window title - wchar_t *player; // player name - int plyver; // player version - HANDLE icon; // player icon - int fsize; // media file size - int vbr; - int status; // player status: 0 - stopped; 1 - playing; 2 - paused - HWND plwnd; // player window - // video part - int codec; - int width; - int height; - int fps; - __int64 date; - wchar_t *txtver; - // not implemented yet - wchar_t *lyric; - wchar_t *cover; - int volume; - wchar_t *url; -} SONGINFO, *LPSONGINFO; - -#define WAT_INF_TCHAR WAT_INF_UNICODE -#define SongInfoT tSongInfo - - - // result codes -#define WAT_RES_UNKNOWN -2 -#define WAT_RES_NOTFOUND -1 -#define WAT_RES_ERROR WAT_RES_NOTFOUND -#define WAT_RES_OK 0 -#define WAT_RES_ENABLED WAT_RES_OK -#define WAT_RES_DISABLED 1 - // internal -#define WAT_RES_NEWFILE 3 - -#define WAT_PLS_NORMAL WAT_RES_OK -#define WAT_PLS_NOMUSIC WAT_RES_DISABLED -#define WAT_PLS_NOTFOUND WAT_RES_NOTFOUND - -#define WAT_INF_UNICODE 0 -#define WAT_INF_ANSI 1 -#define WAT_INF_UTF8 2 -#define WAT_INF_CHANGES 0x100 - -/* - wParam : WAT_INF_* constant - lParam : pointer to LPSONGINGO (Unicode) or LPSONGINFOA (ANSI/UTF8) - Affects: Fill structure by currently played music info - returns: WAT_PLS_* constant - note: pointer will be point to global SONGINFO structure of plugin - warning: Non-Unicode data filled only by request - if lParam=0 only internal SongInfo structure will be filled - Example: - LPSONGINFO p; - PluginLink->CallService(MS_WAT_GETMUSICINFO,0,(DWORD)&p); -*/ - -#define MS_WAT_GETMUSICINFO "WATrack/GetMusicInfo" - -/* - wParam:0 - lParam : pointer to pSongInfo (Unicode) - Affects: Fill structure by info from file named in SongInfo.mfile - returns: 0, if success - note: fields, which values can't be obtained, leaves old values. - you must free given strings by miranda mmi.free -*/ -#define MS_WAT_GETFILEINFO "WATrack/GetFileInfo" - -/* - wParam: encoding (WAT_INF_* consts, 0 = WAT_INF_UNICODE) - lParam: codepage (0 = ANSI) - Returns Global unicode SongInfo pointer or tranlated to Ansi/UTF8 structure -*/ -#define MS_WAT_RETURNGLOBAL "WATrack/GetMainStructure" - -#define WAT_CTRL_PREV 1 -#define WAT_CTRL_PLAY 2 -#define WAT_CTRL_PAUSE 3 -#define WAT_CTRL_STOP 4 -#define WAT_CTRL_NEXT 5 -#define WAT_CTRL_VOLDN 6 -#define WAT_CTRL_VOLUP 7 -#define WAT_CTRL_SEEK 8 // lParam is new position (sec) -/* - wParam: button code (WAT_CTRL_* const) - lParam: 0, or value (see WAT_CTRL_* const comments) - Affects: emulate player button pressing - returns: 0 if unsuccesful -*/ -#define MS_WAT_PRESSBUTTON "WATrack/PressButton" - -/* - Get user's Music Info -*/ -#define MS_WAT_GETCONTACTINFO = "WATrack/GetContactInfo" - -// ------------ Plugin/player status ------------ - -/* - wParam: 1 - switch off plugin - 0 - switch on plugin - -1 - switch plugin status - 2 - get plugin version - other - get plugin status - lParam: 0 - Affects: Switch plugin status to enabled or disabled - returns: version, old plugin status, 0, if was enabled -*/ - -#define MS_WAT_PLUGINSTATUS "WATrack/PluginStatus" - -#define ME_WAT_MODULELOADED "WATrack/ModuleLoaded" - -#define WAT_EVENT_PLAYERSTATUS 1 // 0-normal; 1-no music (possibly stopped); 2-not found -#define WAT_EVENT_NEWTRACK 2 -#define WAT_EVENT_PLUGINSTATUS 3 // 0-enabled; 1-dis.temporary; 2-dis.permanent -#define WAT_EVENT_NEWPLAYER 4 // -#define WAT_EVENT_NEWTEMPLATE 5 // TM_* constant - -/* - Plugin or player status changed: - wParam: type of event (see above) - lParam: value -*/ -#define ME_WAT_NEWSTATUS "WATrack/NewStatus" - -// ---------- Popup module ------------ - -/* - wParam: not used - lParam: not used - Affects: Show popup or Info window with current music information - note: Only Info window will be showed if Popup plugin disabled -*/ - -#define MS_WAT_SHOWMUSICINFO "WATrack/ShowMusicInfo" - -// --------- Statistic (report) module ------------- - -/* - wParam: pointer to log file name or NULL - lParam: pointer to report file name or NULL - Affects: Create report from log and run it (if option is set) - returns: 0 if unsuccesful - note: if wParam or lParam is a NULL then file names from options are used -*/ -#define MS_WAT_MAKEREPORT "WATrack/MakeReport" - -/* - wParam, lParam - not used - Affects: pack statistic file -*/ -#define MS_WAT_PACKLOG = "WATrack/PackLog" - -/* - wParam: not used - lParam: pointer to SongInfo -*/ -#define MS_WAT_ADDTOLOG = "WATrack/AddToLog" - -// ----------- Formats and players ----------- - -// media file status - -#define WAT_MES_STOPPED 0 -#define WAT_MES_PLAYING 1 -#define WAT_MES_PAUSED 2 -#define WAT_MES_UNKNOWN -1 - -#define WAT_ACT_REGISTER 1 -#define WAT_ACT_UNREGISTER 2 -#define WAT_ACT_DISABLE 3 -#define WAT_ACT_ENABLE 4 -#define WAT_ACT_GETSTATUS 5 // not found/enabled/disabled -#define WAT_ACT_SETACTIVE 6 -#define WAT_ACT_REPLACE 0x10000 // can be combined with WAT_REGISTERFORMAT - - // flags -#define WAT_OPT_DISABLED 0x00000001 // format registered but disabled -#define WAT_OPT_ONLYONE 0x00000002 // format can't be overwriten -#define WAT_OPT_PLAYERINFO 0x00000004 // song info from player -#define WAT_OPT_WINAMPAPI 0x00000008 // Winamp API support -#define WAT_OPT_CHECKTIME 0x00000010 // check file time for changes -#define WAT_OPT_VIDEO 0x00000020 // only for format registering used -#define WAT_OPT_LAST 0x00000040 // (internal) -#define WAT_OPT_FIRST 0x00000080 // (internal) -#define WAT_OPT_TEMPLATE 0x00000100 // (internal) -#define WAT_OPT_IMPLANTANT 0x00000200 // use process implantation -#define WAT_OPT_HASURL 0x00000400 // (player registration) URL field present -#define WAT_OPT_CHANGES 0x00000800 // obtain only chaged values - // (volume, status, window text, elapsed time) -#define WAT_OPT_APPCOMMAND 0x00001000 // Special (multimedia) key support -#define WAT_OPT_CHECKALL 0x00002000 // Check all players -#define WAT_OPT_KEEPOLD 0x00004000 // Keep Old opened file -#define WAT_OPT_MULTITHREAD 0x00008000 // Use multithread scan -#define WAT_OPT_SINGLEINST 0x00010000 // Single player instance - - -typedef BOOL (__cdecl *LPREADFORMATPROC)(LPSONGINFO Info); - -typedef struct tMusicFormat { - LPREADFORMATPROC proc; - char ext[8]; - int flags; -} MUSICFORMAT, *LPMUSICFORMAT; - -/* - wParam: action - lParam: pointer to MUSICFORMAT if wParam = WAT_ACT_REGISTER, - else - pointer to extension string (ANSI) - returns: see result codes -*/ - -#define MS_WAT_FORMAT "WATrack/Format" - -/* - wParam - pointer to SONGINFO structure (plwind field must be initialized) - lParam - flags -*/ - -#define MS_WAT_WINAMPINFO "WATrack/WinampInfo" - -/* - wParam: window - lParam: LoWord - command; HiWord - value -*/ - -#define MS_WAT_WINAMPCOMMAND "WATrack/WinampCommand" - -int tInitProc(); -int tDeInitProc(); -int tStatusProc(); - -typedef int (__cdecl *LPINITPROC)(); -typedef int (__cdecl *LPDEINITPROC)(); -typedef int (__cdecl *LPSTATUSPROC)(HWND wnd); -typedef wchar_t (__cdecl *LPNAMEPROC)(HWND wnd, int flags); -typedef HWND (__cdecl *LPCHECKPROC)(HWND wnd, int flags); -typedef int (__cdecl *LPGETSTATUSPROC) (HWND wnd); -typedef int (__cdecl *LPINFOPROC)(LPSONGINFO Info, int flags); -typedef int (__cdecl *LPCOMMANDPROC)(HWND wnd, int command, int value); - -typedef struct tPlayerCell { - char *Desc; - int flags; - HICON Icon; // can be 0. for registration only - LPINITPROC Init; - LPDEINITPROC DeInit; - LPCHECKPROC Check; // check player - LPGETSTATUSPROC GetStatus; - LPNAMEPROC GetName; // can be NULL. get media filename - LPINFOPROC GetInfo; // can be NULL. get info from player - LPCOMMANDPROC Command; // can be NULL. send command to player - char *URL; // only if WAT_OPT_HASURL flag present - wchar_t *Notes; -} PLAYERCELL, *LPPLAYERCELL; - -/* - wParam: action - lParam: pointer to PLAYERCELL if wParam = WAT_ACT_REGISTER, - else - pointer to player description string (ANSI) - returns: player window handle or value>0 if found - note: If you use GetName or GetInfo field, please, do not return empty - filename even when mediafile is remote! -*/ - -#define MS_WAT_PLAYER "WATrack/Player" - -// --------- Templates ---------- - -/* - wParam: not used - lParam: Unicode template - returns: New Unicode (replaced) string -*/ -#define MS_WAT_REPLACETEXT "WATrack/ReplaceText" - -/* - event types for History - Blob structure for EVENTTYPE_WAT_ANSWER: - Uniciode artist#0title#0album#0answer -*/ -#define EVENTTYPE_WAT_REQUEST 9601 -#define EVENTTYPE_WAT_ANSWER 9602 -#define EVENTTYPE_WAT_ERROR 9603 -#define EVENTTYPE_WAT_MESSAGE 9604 - -/* - wParam: 0 or parent window - lParam: 0 - note: Shows Macro help window with edit aliases ability -*/ -#define MS_WAT_MACROHELP "WATrack/MacroHelp" - -#endif diff --git a/plugins/Watrack_MPD/src/main.cpp b/plugins/Watrack_MPD/src/main.cpp index 17a8c29d64..eec0a6b1af 100755 --- a/plugins/Watrack_MPD/src/main.cpp +++ b/plugins/Watrack_MPD/src/main.cpp @@ -14,169 +14,38 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - - #include "commonheaders.h" - -//maybe add mutex ? -void Start(void *param); -int Parser(); - -LPINITPROC Init() -{ - mir_forkthread(&Start, 0); - return 0; -} -void Stop(); -LPDEINITPROC DeInit() -{ - Stop(); - return 0; -} -LPCHECKPROC CheckPlayer(HWND wnd, int flags) -{ - if(!ghConnection) - { - mir_forkthread(&Start, 0); - return 0; - } - if(Parser()) - return (LPCHECKPROC)WAT_MES_STOPPED; - if(Connected) - return (LPCHECKPROC)WAT_MES_PLAYING; - return 0; -} -LPGETSTATUSPROC GetStatus() -{ - if(!ghConnection) - { - mir_forkthread(&Start, 0); - return 0; - } - if(Parser()) - return (LPGETSTATUSPROC)-1; - return (LPGETSTATUSPROC)(gbState); -} -LPNAMEPROC GetFileName(HWND wnd, int flags) -{ - if(!ghConnection) - { - mir_forkthread(&Start, 0); - return 0; - } - return 0; -} +HANDLE ghConnection; +HANDLE ghPacketReciever; +BOOL Connected; +int gbState; SONGINFO SongInfo = {0}; -LPINFOPROC GetPlayerInfo(LPSONGINFO info, int flags) -{ - if(!ghConnection) - { - mir_forkthread(&Start, 0); - return 0; - } - if(Parser()) - return (LPINFOPROC)-1; -/* - - info->channels = SongInfo.channels; - info->codec = SongInfo.codec; - info->comment = SongInfo.comment; - info->cover = SongInfo.cover; - info->date = SongInfo.date; - info->fps = SongInfo.fps; - info->fsize = SongInfo.fsize; - - info->icon = SongInfo.icon; - info->kbps = SongInfo.kbps; - info->khz = SongInfo.khz; - info->lyric = SongInfo.lyric; - info->mfile = SongInfo.mfile; - info->player = SongInfo.player; - info->plyver = SongInfo.plyver; - info->status = SongInfo.status; - info->time = SongInfo.time; - info->title = SongInfo.title; - info->total = SongInfo.total; - info->track = SongInfo.track;*/ - info->total = SongInfo.total; - info->time = SongInfo.time; - info->mfile = SongInfo.mfile; - info->txtver = SongInfo.txtver; - info->title = SongInfo.title; - info->artist = SongInfo.artist; - info->genre = SongInfo.genre; - info->album = SongInfo.album; - info->year = SongInfo.year; - info->kbps = SongInfo.kbps; - info->track = SongInfo.track; - info->khz = SongInfo.khz; - info->volume = SongInfo.volume; -/* info->url = SongInfo.url; //?? - info->vbr = SongInfo.vbr; - info->volume = SongInfo.volume; - */ - return 0; -} -LPCOMMANDPROC SendCommand(HWND wnd, int command, int value) +void Start(void* param) { - switch (command) - { - case WAT_CTRL_PREV: - Netlib_Send(ghConnection, "previous\n", strlen("previous\n"), 0); - break; - case WAT_CTRL_PLAY: //add resuming support - if(gbState != WAT_MES_PAUSED) - Netlib_Send(ghConnection, "play\n", strlen("play\n"), 0); - else - Netlib_Send(ghConnection, "pause 0\n", strlen("pause 0\n"), 0); - break; - case WAT_CTRL_PAUSE: - Netlib_Send(ghConnection, "pause 1\n", strlen("pause 1\n"), 0); - break; - case WAT_CTRL_STOP: - Netlib_Send(ghConnection, "stop\n", strlen("stop\n"), 0); - break; - case WAT_CTRL_NEXT: - Netlib_Send(ghConnection, "next\n", strlen("next\n"), 0); - break; - case WAT_CTRL_VOLDN: - break; - case WAT_CTRL_VOLUP: - break; - case WAT_CTRL_SEEK: - break; - default: - break; - } - return 0; + NETLIBOPENCONNECTION nloc = {0}; + char *tmp = (char*)mir_u2a(gbHost); + nloc.cbSize = sizeof(nloc); + nloc.szHost = tmp; + nloc.timeout = 5; + nloc.wPort = gbPort; + Connected = FALSE; + ghConnection = NetLib_CreateConnection(ghNetlibUser, &nloc); + if(ghConnection) + ghPacketReciever = (HANDLE)CallService(MS_NETLIB_CREATEPACKETRECVER,(WPARAM)ghConnection,2048); } - -void RegisterPlayer() +void ReStart(void *param) { - if(!bWatrackService) - return; - { - PLAYERCELL player = {0}; - player.Desc = "Music Player Daemon"; - player.Check = (LPCHECKPROC)CheckPlayer; - player.Init = (LPINITPROC)Init; - player.DeInit = (LPDEINITPROC)DeInit; - player.GetStatus = (LPGETSTATUSPROC)GetStatus; - player.Command = (LPCOMMANDPROC)SendCommand; - player.flags = (WAT_OPT_HASURL|WAT_OPT_SINGLEINST|WAT_OPT_PLAYERINFO); - player.GetName = (LPNAMEPROC)GetFileName; - player.GetInfo = (LPINFOPROC)GetPlayerInfo; -// player.Icon = //TODO:implement icon support - player.Notes = _T("mpd is a nice music player for *nix which have not any gui, just daemon.\nuses very small amount of ram, cpu."); - player.URL = "http://www.musicpd.org"; - CallService(MS_WAT_PLAYER, (WPARAM)WAT_ACT_REGISTER, (LPARAM)&player); - } + if(ghPacketReciever) + Netlib_CloseHandle(ghPacketReciever); + if(ghConnection) + Netlib_CloseHandle(ghConnection); + Sleep(500); + mir_forkthread(&Start, 0); } -void ReStart(void *data); + int Parser() { static NETLIBPACKETRECVER nlpr = {0}; @@ -246,7 +115,7 @@ int Parser() } nlpr.bytesUsed = nlpr.bytesAvailable; } - buf = nlpr.buffer; + buf = (char*)nlpr.buffer; if(ptr = strstr(buf, "MPD")) { Connected = TRUE; @@ -398,20 +267,6 @@ int Parser() return 0; } - -void Start(void* param) -{ - NETLIBOPENCONNECTION nloc = {0}; - char *tmp = (char*)mir_u2a(gbHost); - nloc.cbSize = sizeof(nloc); - nloc.szHost = tmp; - nloc.timeout = 5; - nloc.wPort = gbPort; - Connected = FALSE; - ghConnection = NetLib_CreateConnection(ghNetlibUser, &nloc); - if(ghConnection) - ghPacketReciever = (HANDLE)CallService(MS_NETLIB_CREATEPACKETRECVER,(WPARAM)ghConnection,2048); -} void Stop() { if(ghPacketReciever) @@ -421,13 +276,158 @@ void Stop() if(ghNetlibUser && (ghNetlibUser != INVALID_HANDLE_VALUE)) CallService(MS_NETLIB_SHUTDOWN,(WPARAM)ghNetlibUser,0); } -void ReStart(void *param) + +LPINITPROC Init() { - if(ghPacketReciever) - Netlib_CloseHandle(ghPacketReciever); - if(ghConnection) - Netlib_CloseHandle(ghConnection); - Sleep(500); mir_forkthread(&Start, 0); + return 0; +} + +LPDEINITPROC DeInit() +{ + Stop(); + return 0; +} + +LPCHECKPROC CheckPlayer(HWND wnd, int flags) +{ + if(!ghConnection) + { + mir_forkthread(&Start, 0); + return 0; + } + if(Parser()) + return (LPCHECKPROC)WAT_MES_STOPPED; + if(Connected) + return (LPCHECKPROC)WAT_MES_PLAYING; + return 0; } +LPSTATUSPROC GetStatus() +{ + if(!ghConnection) + { + mir_forkthread(&Start, 0); + return 0; + } + if(Parser()) + return (LPSTATUSPROC)-1; + return (LPSTATUSPROC)(gbState); +} + +LPNAMEPROC GetFileName(HWND wnd, int flags) +{ + if(!ghConnection) + { + mir_forkthread(&Start, 0); + return 0; + } + return 0; +} + +LPINFOPROC GetPlayerInfo(LPSONGINFO info, int flags) +{ + if(!ghConnection) + { + mir_forkthread(&Start, 0); + return 0; + } + if(Parser()) + return (LPINFOPROC)-1; +/* + + info->channels = SongInfo.channels; + info->codec = SongInfo.codec; + info->comment = SongInfo.comment; + info->cover = SongInfo.cover; + info->date = SongInfo.date; + info->fps = SongInfo.fps; + info->fsize = SongInfo.fsize; + + info->icon = SongInfo.icon; + info->kbps = SongInfo.kbps; + info->khz = SongInfo.khz; + info->lyric = SongInfo.lyric; + info->mfile = SongInfo.mfile; + info->player = SongInfo.player; + info->plyver = SongInfo.plyver; + info->status = SongInfo.status; + info->time = SongInfo.time; + info->title = SongInfo.title; + info->total = SongInfo.total; + info->track = SongInfo.track;*/ + info->total = SongInfo.total; + info->time = SongInfo.time; + info->mfile = SongInfo.mfile; + info->txtver = SongInfo.txtver; + info->title = SongInfo.title; + info->artist = SongInfo.artist; + info->genre = SongInfo.genre; + info->album = SongInfo.album; + info->year = SongInfo.year; + info->kbps = SongInfo.kbps; + info->track = SongInfo.track; + info->khz = SongInfo.khz; + info->volume = SongInfo.volume; +/* info->url = SongInfo.url; //?? + info->vbr = SongInfo.vbr; + info->volume = SongInfo.volume; + */ + return 0; +} + +LPCOMMANDPROC SendCommand(HWND wnd, int command, int value) +{ + switch (command) + { + case WAT_CTRL_PREV: + Netlib_Send(ghConnection, "previous\n", strlen("previous\n"), 0); + break; + case WAT_CTRL_PLAY: //add resuming support + if(gbState != WAT_MES_PAUSED) + Netlib_Send(ghConnection, "play\n", strlen("play\n"), 0); + else + Netlib_Send(ghConnection, "pause 0\n", strlen("pause 0\n"), 0); + break; + case WAT_CTRL_PAUSE: + Netlib_Send(ghConnection, "pause 1\n", strlen("pause 1\n"), 0); + break; + case WAT_CTRL_STOP: + Netlib_Send(ghConnection, "stop\n", strlen("stop\n"), 0); + break; + case WAT_CTRL_NEXT: + Netlib_Send(ghConnection, "next\n", strlen("next\n"), 0); + break; + case WAT_CTRL_VOLDN: + break; + case WAT_CTRL_VOLUP: + break; + case WAT_CTRL_SEEK: + break; + default: + break; + } + return 0; +} + +void RegisterPlayer() +{ + if(!bWatrackService) + return; + { + PLAYERCELL player = {0}; + player.Desc = "Music Player Daemon"; + player.Check = (LPCHECKPROC)CheckPlayer; + player.Init = (LPINITPROC)Init; + player.DeInit = (LPDEINITPROC)DeInit; + player.GetStatus = (LPSTATUSPROC)GetStatus; + player.Command = (LPCOMMANDPROC)SendCommand; + player.flags = (WAT_OPT_HASURL|WAT_OPT_SINGLEINST|WAT_OPT_PLAYERINFO); + player.GetName = (LPNAMEPROC)GetFileName; + player.GetInfo = (LPINFOPROC)GetPlayerInfo; +// player.Icon = //TODO:implement icon support + player.Notes = _T("mpd is a nice music player for *nix which have not any gui, just daemon.\nuses very small amount of ram, cpu."); + player.URL = "http://www.musicpd.org"; + CallService(MS_WAT_PLAYER, (WPARAM)WAT_ACT_REGISTER, (LPARAM)&player); + } +}
\ No newline at end of file diff --git a/plugins/Watrack_MPD/src/options.cpp b/plugins/Watrack_MPD/src/options.cpp index ef607d78ed..770d5988b0 100755 --- a/plugins/Watrack_MPD/src/options.cpp +++ b/plugins/Watrack_MPD/src/options.cpp @@ -15,26 +15,6 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "commonheaders.h" -#include <uxtheme.h> - -HINSTANCE hInst; -static INT_PTR CALLBACK DlgProcWaMpdOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); - -int WaMpdOptInit(WPARAM wParam,LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { 0 }; - odp.cbSize = sizeof(odp); - odp.hInstance = hInst; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_WA_MPD); - odp.ptszTitle = LPGENT("Winamp Track"); - odp.ptszGroup = LPGENT("Plugins"); - odp.ptszTab = LPGENT("Watrack MPD"); - odp.flags=ODPF_BOLDGROUPS|ODPF_TCHAR; - odp.pfnDlgProc = DlgProcWaMpdOpts; - Options_AddPage(wParam, &odp); - return 0; -} - static INT_PTR CALLBACK DlgProcWaMpdOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { @@ -52,11 +32,6 @@ static INT_PTR CALLBACK DlgProcWaMpdOpts(HWND hwndDlg, UINT msg, WPARAM wParam, case WM_COMMAND: { - switch (LOWORD(wParam)) - { - - } - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } @@ -87,5 +62,17 @@ static INT_PTR CALLBACK DlgProcWaMpdOpts(HWND hwndDlg, UINT msg, WPARAM wParam, return FALSE; } - - +int WaMpdOptInit(WPARAM wParam,LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp = { 0 }; + odp.cbSize = sizeof(odp); + odp.hInstance = hInst; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_WA_MPD); + odp.ptszTitle = LPGENT("Winamp Track"); + odp.ptszGroup = LPGENT("Plugins"); + odp.ptszTab = LPGENT("Watrack MPD"); + odp.flags=ODPF_BOLDGROUPS|ODPF_TCHAR; + odp.pfnDlgProc = DlgProcWaMpdOpts; + Options_AddPage(wParam, &odp); + return 0; +} |