From 516cbadd7bf814823e626433f881ca2f9d84cb33 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 9 Jul 2011 19:37:49 +0000 Subject: ExternalAPI: update git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@143 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- ExternalAPI/m_music.h | 339 +++++++++++++++++++++----------------- ExternalAPI/m_proto_listeningto.h | 3 +- ExternalAPI/m_radio.h | 75 ++++++--- 3 files changed, 247 insertions(+), 170 deletions(-) (limited to 'ExternalAPI') diff --git a/ExternalAPI/m_music.h b/ExternalAPI/m_music.h index 4f10475..0246fab 100644 --- a/ExternalAPI/m_music.h +++ b/ExternalAPI/m_music.h @@ -4,74 +4,73 @@ #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; + CHAR* artist; + CHAR* title; + CHAR* album; + CHAR* genre; + CHAR* comment; + CHAR* year; + CHAR* mfile; // media file + DWORD kbps; + DWORD khz; + DWORD channels; + DWORD track; + DWORD total; // music length + DWORD time; // elapsed time + CHAR* wndtext; // window title + CHAR* player; // player name + DWORD plyver; // player version + HANDLE icon; // player icon + DWORD fsize; // media file size + DWORD vbr; + int status; // WAT_MES_* const + HWND plwnd; // player window + // video part + DWORD codec; + DWORD width; + DWORD height; + DWORD fps; + __int64 date; + CHAR* txtver; + CHAR* lyric; + CHAR* cover; + DWORD volume; + CHAR* url; // player homepage } SONGINFOA, *LPSONGINFOA; typedef struct tSongInfo { - WCHAR *artist; - WCHAR *title; - WCHAR *album; - WCHAR *genre; - WCHAR *comment; - WCHAR *year; - WCHAR *mfile; // media file - int kbps; - int khz; - int channels; - int track; - int total; // music length - int time; // elapsed time - WCHAR *wndtext; // window title - WCHAR *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 txtver; - // not implemented yet - WCHAR *lyric; - WCHAR *cover; - int volume; - WCHAR *url; + WCHAR* artist; + WCHAR* title; + WCHAR* album; + WCHAR* genre; + WCHAR* comment; + WCHAR* year; + WCHAR* mfile; // media file + DWORD kbps; + DWORD khz; + DWORD channels; + DWORD track; + DWORD total; // music length + DWORD time; // elapsed time + WCHAR* wndtext; // window title + WCHAR* player; // player name + DWORD* plyver; // player version + HANDLE icon; // player icon + DWORD fsize; // media file size + DWORD vbr; + int status; // WAT_MES_* const + HWND plwnd; // player window + // video part + DWORD codec; + DWORD width; + DWORD height; + DWORD fps; + __int64 date; + WCHAR* txtver; + WCHAR* lyric; + WCHAR* cover; // cover path + DWORD volume; + WCHAR* url; // player homepage } SONGINFO, *LPSONGINFO; #if defined(_UNICODE) @@ -91,15 +90,17 @@ typedef struct tSongInfo { #define WAT_RES_DISABLED 1 // internal #define WAT_RES_NEWFILE 3 +#define WAT_RES_NEWPLAYER 4 -#define WAT_PLS_NORMAL WAT_RES_OK -#define WAT_PLS_NOMUSIC WAT_RES_DISABLED -#define WAT_PLS_NOTFOUND WAT_RES_NOTFOUND +// result for MS_WAT_GETMUSICINFO service +#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 +#define WAT_INF_UNICODE 0 +#define WAT_INF_ANSI 1 +#define WAT_INF_UTF8 2 +#define WAT_INF_CHANGES 0x100 /* wParam : WAT_INF_* constant @@ -113,7 +114,6 @@ typedef struct tSongInfo { LPSONGINFO p; PluginLink->CallService(MS_WAT_GETMUSICINFO,0,(DWORD)&p); */ - #define MS_WAT_GETMUSICINFO "WATrack/GetMusicInfo" /* @@ -127,25 +127,38 @@ typedef struct tSongInfo { #define MS_WAT_GETFILEINFO "WATrack/GetFileInfo" /* - Get user's Music Info + 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_GETCONTACTINFO = "WATrack/GetContactInfo" - -#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) +#define MS_WAT_RETURNGLOBAL "WATrack/GetMainStructure" + +//!! DON'T CHANGE THESE VALUES! +#define WAT_CTRL_FIRST 1 + +#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) + +#define WAT_CTRL_LAST 8 + /* 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" +#define MS_WAT_PRESSBUTTON "WATrack/PressButton" + +/* + Get user's Music Info +*/ +#define MS_WAT_GETCONTACTINFO "WATrack/GetContactInfo" // ------------ Plugin/player status ------------ @@ -153,23 +166,28 @@ typedef struct tSongInfo { 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: old plugin status, 0, if was enabled */ - #define MS_WAT_PLUGINSTATUS "WATrack/PluginStatus" +// ---------- events ------------ + +/*ME_WAT_MODULELOADED + wParam: 0, lParam: 0 +*/ #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_PLAYERSTATUS 1 //lParam: WAT_PLS_* const +#define WAT_EVENT_NEWTRACK 2 //lParam: LPSONGINFO +#define WAT_EVENT_PLUGINSTATUS 3 //lParam: 0-enabled; 1-dis.temporary; 2-dis.permanent #define WAT_EVENT_NEWPLAYER 4 // -#define WAT_EVENT_NEWTEMPLATE 5 // TM_* constant +#define WAT_EVENT_NEWTEMPLATE 5 //lParam: TM_* constant -/* +/*ME_WAT_NEWSTATUS Plugin or player status changed: wParam: type of event (see above) lParam: value @@ -184,7 +202,6 @@ typedef struct tSongInfo { 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 ------------- @@ -214,35 +231,39 @@ typedef struct tSongInfo { // 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_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_GETSTATUS 5 // not found/enabled/disabled #define WAT_ACT_SETACTIVE 6 -#define WAT_ACT_REPLACE 0x10000 // can be combined with WAT_REGISTERFORMAT +#define WAT_ACT_REPLACE 0x10000 // can be combined with WAT_REGISTERFORMAT // flags -#define WAT_OPT_DISABLED 0x0001 // format registered but disabled -#define WAT_OPT_ONLYONE 0x0002 // format can't be overwriten -#define WAT_OPT_PLAYERINFO 0x0004 // song info from player -#define WAT_OPT_WINAMPAPI 0x0008 // Winamp API support -#define WAT_OPT_CHECKTIME 0x0010 // check file time for changes -#define WAT_OPT_VIDEO 0x0020 // only for format registering used -#define WAT_OPT_LAST 0x0040 // (internal) -#define WAT_OPT_FIRS 0x0080 // (internal) -#define WAT_OPT_TEMPLATE 0x0100 // (internal) -#define WAT_OPT_IMPLANTANT 0x0200 // use process implantation -#define WAT_OPT_HASURL 0x0400 // (player registration) URL field present -#define WAT_OPT_CHANGES 0x0800 // obtain only chaged values - // (volume, status, window text, elapsed time) -#define WAT_OPT_MULTITHREAD 0x8000 // Use multithread scan -#define WAT_OPT_KEEPOLD 0x4000 // Keep Old opened file +#define WAT_OPT_DISABLED 0x00001 // format registered but disabled +#define WAT_OPT_ONLYONE 0x00002 // format can't be overwriten +#define WAT_OPT_PLAYERINFO 0x00004 // song info from player +#define WAT_OPT_WINAMPAPI 0x00008 // Winamp API support +#define WAT_OPT_CHECKTIME 0x00010 // check file time for changes +#define WAT_OPT_VIDEO 0x00020 // only for format registering used +#define WAT_OPT_LAST 0x00040 // (internal) +#define WAT_OPT_FIRST 0x00080 // (internal) +#define WAT_OPT_TEMPLATE 0x00100 // (internal) +#define WAT_OPT_IMPLANTANT 0x00200 // use process implantation +#define WAT_OPT_HASURL 0x00400 // (player registration) URL field present +#define WAT_OPT_CHANGES 0x00800 // obtain only chaged values + // (volume, status, window text, elapsed time) +#define WAT_OPT_APPCOMMAND 0x01000 // Special (multimedia) key support +#define WAT_OPT_CHECKALL 0x02000 // Check all players +#define WAT_OPT_KEEPOLD 0x04000 // Keep Old opened file +#define WAT_OPT_MULTITHREAD 0x08000 // Use multithread scan +#define WAT_OPT_SINGLEINST 0x10000 // Single player instance +#define WAT_OPT_PLAYERDATA 0x20000 // (internal) to obtain player data typedef BOOL (__cdecl *LPREADFORMATPROC)(LPSONGINFO Info); @@ -250,7 +271,7 @@ typedef BOOL (__cdecl *LPREADFORMATPROC)(LPSONGINFO Info); typedef struct tMusicFormat { LPREADFORMATPROC proc; CHAR ext[8]; - int flags; + UINT flags; } MUSICFORMAT, *LPMUSICFORMAT; /* @@ -259,37 +280,42 @@ typedef struct tMusicFormat { 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 + Affects: trying to fill SongInfo using Winamp API */ - #define MS_WAT_WINAMPINFO "WATrack/WinampInfo" /* wParam: window lParam: LoWord - command; HiWord - value */ - #define MS_WAT_WINAMPCOMMAND "WATrack/WinampCommand" -typedef WCHAR (__cdecl *LPNAMEPROC)(); -typedef HWND (__cdecl *LPCHECKPROC)(int flags); -typedef int (__cdecl *LPINFOPROC)(LPSONGINFO Info, int flags); -typedef int (__cdecl *LPCOMMANDPROC)(int command, int value); +typedef int (__cdecl *LPINITPROC) (); +typedef int (__cdecl *LPDEINITPROC) (); +typedef int (__cdecl *LPSTATUSPROC) (HWND wnd); +typedef WCHAR (__cdecl *LPNAMEPROC) (HWND wnd, int flags); +typedef HWND (__cdecl *LPCHECKPROC) (HWND wnd,int flags); +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 - LPCHECKPROC Check; // check player - 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 + CHAR* Desc; // Short player name + UINT flags; + HICON Icon; // can be 0. for registration only + LPINITPROC Init; // LPINITPROC; can be NULL. initialize any data + LPDEINITPROC DeInit; // LPDEINITPROC; can be NULL. finalize player processing + LPCHECKPROC Check; // check player + LPSTATUSPROC GetStatus; // tStatusProc; can be NULL. get player status + 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* Notes; // any tips, notes etc for this player } PLAYERCELL, *LPPLAYERCELL; /* @@ -297,27 +323,44 @@ typedef struct tPlayerCell { 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 ---------- +// --------- Last FM --------- + +/* + Toggle LastFM scrobbling status + wParam,lParam=0 + Returns: previous state +*/ +#define MS_WAT_LASTFM "WATrack/LastFM" -//templates -#define TM_MESSAGE 0 // privat message -#define TM_CHANNEL 1 // chat -#define TM_STAT_TITLE 2 // xstatus title -#define TM_STAT_TEXT 3 // [x]status text -#define TM_POPTITLE 4 // popup title -#define TM_POPTEXT 5 // popup text -#define TM_EXPORT 6 // other app -#define TM_FRAMEINFO 7 // frame +/* + Get Info based on currently played song + wParam: pLastFMInfo + lParam: int language (first 2 bytes - 2-letters language code) +*/ +typedef struct tLastFMInfo { + UINT request; // 0 - artist, 1 - album, 2 - track + WCHAR* artist; // artist + WCHAR* album; // album or similar artists for Artist info request + WCHAR* title; // track title + WCHAR* tags; // tags + WCHAR* info; // artist bio or wiki article + WCHAR* image; // photo/cover link + WCHAR* similar; + WCHAR* release; + UINT trknum; +}PLASTFMINFO, *LPLASTFMINFO; + +#define MS_WAT_LASTFMINFO "WATrack/LastFMInfo" -#define TM_SETTEXT 0x100 // only for service -#define TM_GETTEXT 0 // only for service +// --------- Templates ---------- /* - wParam: not used + wParam: 0 (standard Info) or pSongInfo lParam: Unicode template returns: New Unicode (replaced) string */ @@ -334,12 +377,10 @@ typedef struct tPlayerCell { #define EVENTTYPE_WAT_MESSAGE 9604 /* - wParam: Template type (TM_* constants). - lParam: Template string for template setup, or not used - returns: pointer to statically allocated string (DON'T free!) - note: Template set if wParam with TM_SETTEXT combined. If used for - Protocol-dependent templates, used only for default templates. + wParam: 0 or parent window + lParam: 0 + note: Shows Macro help window with edit aliases ability */ -#define MS_WAT_TEMPLATE = "WATrack/Templates" +#define MS_WAT_MACROHELP "WATrack/MacroHelp" #endif diff --git a/ExternalAPI/m_proto_listeningto.h b/ExternalAPI/m_proto_listeningto.h index 53e1184..66d3b77 100644 --- a/ExternalAPI/m_proto_listeningto.h +++ b/ExternalAPI/m_proto_listeningto.h @@ -43,7 +43,7 @@ typedef struct { TCHAR* ptszArtist; }; union { - char* pszAlbum; // Algum name + char* pszAlbum; // Album name TCHAR* ptszAlbum; }; union { @@ -141,4 +141,3 @@ typedef struct { #endif // M_PROTO_LISTENINGTO_H__ - diff --git a/ExternalAPI/m_radio.h b/ExternalAPI/m_radio.h index 0adc12a..53381ab 100644 --- a/ExternalAPI/m_radio.h +++ b/ExternalAPI/m_radio.h @@ -15,15 +15,24 @@ #define MRC_SEEK 6 // lParam is value in sec; -1 mean obtain current position #define MRC_RECORD 7 // lParam is 0 - switch; 1 - on; 2 - off -// please, do not use these commands, internal using only -#define RD_STATUS_NOSTATION 0 // no active station found -#define RD_STATUS_PLAYING 1 // media is playing -#define RD_STATUS_PAUSED 2 // media is paused -#define RD_STATUS_STOPPED 3 // media is stopped (only for playlists) -#define RD_STATUS_CONNECT 4 // plugin try to connect to the station -#define RD_STATUS_ABORT 5 // plugin want to abort while try to connect -// next command is for users -#define RD_STATUS_GET 6 // to get current status +/* RD_STATUS_* constands + [C]used as command [E]used as event + [-]do not use [+]used as command and event +*/ +#define RD_STATUS_NOSTATION 0 // [E] no active station found +#define RD_STATUS_PLAYING 1 // [-] media is playing +#define RD_STATUS_PAUSED 2 // [E] media is paused +#define RD_STATUS_STOPPED 3 // [E] media is stopped (only for playlists) +#define RD_STATUS_CONNECT 4 // [E] plugin try to connect to the station +#define RD_STATUS_ABORT 5 // [E] plugin want to abort while try to connect +#define RD_STATUS_GET 6 // [C] to get current status +// next is for events only +0.0.2.1 +#define RD_STATUS_POSITION 107 // [E] position was changed +#define RD_STATUS_MUTED 108 // [E] Mute/Unmute command was sent +#define RD_STATUS_RECORD 109 // [E] "Record" action called +#define RD_STATUS_NEWTRACK 110 // [E] new track/station +#define RD_STATUS_NEWTAG 111 // [E] tag data changed +#define RD_STATUS_NEWSTATION 112 // [E] new station (contact) /* Open radio Options, if Main Options window not opened @@ -33,9 +42,13 @@ #define MS_RADIO_SETTINGS "mRadio/Settings" /* Switch 'record' mode + +0.0.1.x (deprecatet) !!! wParam: 0 - switch mode; else - get record status lParam: 0 - Return: Current status: 1 - record is ON + +0.0.2.x + wParam: not used + lParam: 0 - switch mode; else - get record status + Return: Current status: 1 - record is ON, 0 - OFF */ #define MS_RADIO_RECORD "mRadio/REC" @@ -43,9 +56,23 @@ Set current radio volume wParam: volume (0-100) lParam: must be 0 + Return: previous value */ #define MS_RADIO_SETVOL "mRadio/SetVol" +/* + Get current radio volume + wParam: 0 + lParam: 0 + Return: volime value (negative if muted) +*/ +#define MS_RADIO_GETVOL "mRadio/GetVol" + +/* + wParam,lParam = 0 +*/ +#define MS_RADIO_MUTE "mRadio/Mute" + /* Send command to mRadio wParam: command (see MRC_* constant) @@ -61,14 +88,14 @@ */ #define MS_RADIO_PLAYSTOP "mRadio/PlayStop" -/* +/* +0.0.1.4 wParam: station handle (0 - all) lParam: nil (through dialog, radio.ini by default) or ansi string with filename Return: exported stations amount */ #define MS_RADIO_EXPORT "mRadio/Export" -/* +/* +0.0.1.4 wParam: group to import radio or 0 lParam: nil (through dialog, radio.ini by default) or ansi string with filename Return: imported stations amount @@ -76,19 +103,29 @@ #define MS_RADIO_IMPORT "mRadio/Import" /* + wParam: 0 - switch; 1 - switch on; -1 - switch off + lParam: 0 + Return: last state (0 - was off, 1 - was on) +*/ +#define MS_RADIO_EQONOFF "mRadio/EqOnOff" + +//////event///// + +/* +0.0.1.4 (deprecatet only used in 0.0.1.4+) + wParam: MRC_STOP , LParam - 0 MRC_PLAY , LParam - url MRC_PAUSE , LParam - 0 (pause) / 1 (play) MRC_SEEK , LParam - lParam is value in sec MRC_RECORD , LParam - 0 (stop) / 1 (record) -*/ -#define ME_RADIO_STATUS "mRadio/Status" -/* - wParam: 0 - switch; 1 - switch on; -1 - switch off - lParam: 0 - Return: last state (0 - was off, 1 - was on) + +0.0.2.1 new event constants !! + wParam: RD_STATUS_* (see constants) + RD_STATUS_NEWSTATION , lParam: contact handle + RD_STATUS_NEWTRACK , lParam: URL (unicode) + RD_STATUS_PAUSED , lParam: 1 - pause, 0 - continued + RD_STATUS_RECORD , lParam: 0 - off, 1 - on */ -#define MS_RADIO_EQONOFF "mRadio/EqOnOff" +#define ME_RADIO_STATUS "mRadio/Status" #endif -- cgit v1.2.3