From c4e2e2cfa438205154e7a074e46bd0fb267bb35d Mon Sep 17 00:00:00 2001 From: Alexey Kulakov Date: Sat, 5 Apr 2014 17:52:11 +0000 Subject: mRadio "Quick Open" added git-svn-id: http://svn.miranda-ng.org/main/trunk@8863 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- include/delphi/m_utils.inc | 1 + plugins/ExternalAPI/delphi/m_radio.inc | 5 ++ plugins/Watrack/players/pl_aimp.pas | 142 +++++++++++++++++---------------- plugins/mRadio/i_myservice.inc | 36 +++++++++ plugins/mRadio/i_optdlg.inc | 68 ---------------- plugins/mRadio/i_tray.inc | 8 ++ plugins/mRadio/i_visual.inc | 6 ++ plugins/mRadio/mr_rc.inc | 2 + plugins/mRadio/mradio.dpr | 28 ++++--- plugins/mRadio/mradio.rc | 34 +++++--- plugins/mRadio/rbass.pas | 68 ++++++++++++++++ plugins/mRadio/rframeapi.pas | 35 +++++--- plugins/mRadio/rglobal.pas | 2 +- 13 files changed, 264 insertions(+), 171 deletions(-) diff --git a/include/delphi/m_utils.inc b/include/delphi/m_utils.inc index d27e67064a..8308d0f815 100644 --- a/include/delphi/m_utils.inc +++ b/include/delphi/m_utils.inc @@ -381,6 +381,7 @@ const %nick% -> a contact nick name. %proto% -> internal protocol name for a given contact. NOT the user- defined account name. + %accountname% -> user-defined account name for a given contact. %userid% -> Unique ID for a given contact (UIN, JID etc.) the following variables are system variables - unrelated to miranda profiles. diff --git a/plugins/ExternalAPI/delphi/m_radio.inc b/plugins/ExternalAPI/delphi/m_radio.inc index 0d8775723f..361d1ce860 100644 --- a/plugins/ExternalAPI/delphi/m_radio.inc +++ b/plugins/ExternalAPI/delphi/m_radio.inc @@ -70,6 +70,11 @@ const } MS_RADIO_MUTE:PAnsiChar = 'mRadio/Mute'; +{ + wParam,lParam = 0 +} + MS_RADIO_QUICKOPEN:PAnsiChar = 'mRadio/QuickOpen'; + { Send command to mRadio wParam: command (see MRC_* constant) diff --git a/plugins/Watrack/players/pl_aimp.pas b/plugins/Watrack/players/pl_aimp.pas index 17c52bc5b6..1711490e33 100644 --- a/plugins/Watrack/players/pl_aimp.pas +++ b/plugins/Watrack/players/pl_aimp.pas @@ -34,7 +34,7 @@ type TAIMP2FileInfo = packed record cbSizeOF :dword; // - nActive :LONGBOOL; + nActive :LongBool; nBitRate :dword; nChannels :dword; nDuration :dword; @@ -142,28 +142,31 @@ begin s:=AIMP2_RemoteFileSize; p:=AIMP2_RemoteClass; FFile:=OpenFileMappingA(FILE_MAP_READ,True,p); - pStr:=MapViewOfFile(FFile,FILE_MAP_READ,0,0,s); - try + if FFile<>0 then + begin + pStr:=MapViewOfFile(FFile,FILE_MAP_READ,0,0,s); if pStr<>nil then begin - with PAIMP2FileInfo(pStr)^ do - begin - StrDupW(result, - pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo)+ - (nAlbumLen+nArtistLen+nDateLen)*SizeOf(WideChar)), - nFileNameLen); - // Delete rest index (like "filename.cue:3") - pw :=StrRScanW(result,':'); - if pw<>nil then - begin - pw1:=StrScanW (result,':'); - if pw<>pw1 then - pw^:=#0; - end; + try + with PAIMP2FileInfo(pStr)^ do + begin + StrDupW(result, + pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo)+ + (nAlbumLen+nArtistLen+nDateLen)*SizeOf(WideChar)), + nFileNameLen); + // Delete rest index (like "filename.cue:3") + pw :=StrRScanW(result,':'); + if pw<>nil then + begin + pw1:=StrScanW (result,':'); + if pw<>pw1 then + pw^:=#0; + end; + end; + except end; + UnmapViewOfFile(pStr); end; - finally - UnmapViewOfFile(pStr); CloseHandle(FFile); end; end; @@ -250,65 +253,68 @@ begin s:=AIMP2_RemoteFileSize; p:=AIMP2_RemoteClass; FFile:=OpenFileMappingA(FILE_MAP_READ,True,p); - pStr:=MapViewOfFile(FFile,FILE_MAP_READ,0,0,s); - try + if FFile<>0 then + begin + pStr:=MapViewOfFile(FFile,FILE_MAP_READ,0,0,s); if pStr<>nil then begin - with SongInfo do - begin - with pStr^ do + try + with SongInfo do begin - if channels=0 then channels:=nChannels; - if kbps =0 then kbps :=nBitRate div 1000; - if khz =0 then khz :=nSampleRate div 1000; - if total =0 then total :=nduration; - if fsize =0 then fsize :=nFileSize; - if track =0 then track :=nTrackID; - - with PAIMP2FileInfo(pStr)^ do + with pStr^ do begin - if (artist=nil) and (nArtistLen>0) then - begin - StrDupW(artist, - pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo))+ - nAlbumLen,nArtistLen); - end; - if (album=nil) and (nAlbumLen>0) then - begin - StrDupW(album, - pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo)), - nAlbumLen); - end; - if (title=nil) and (nTitleLen>0) then - begin - StrDupW(title, - pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo))+ - nAlbumLen+nArtistLen+nDateLen+nFileNameLen+nGenreLen, - nTitleLen); - end; - if (year=nil) and (nDateLen>0) then - begin - StrDupW(year, - pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo))+ - nAlbumLen+nArtistLen, - nDateLen); - end; - if (genre=nil) and (nGenreLen>0) then + if channels=0 then channels:=nChannels; + if kbps =0 then kbps :=nBitRate div 1000; + if khz =0 then khz :=nSampleRate div 1000; + if total =0 then total :=nduration; + if fsize =0 then fsize :=nFileSize; + if track =0 then track :=nTrackID; + + with PAIMP2FileInfo(pStr)^ do begin - StrDupW(genre, - pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo))+ - nAlbumLen+nArtistLen+nDateLen+nFileNameLen, - nGenreLen); - end; + if (artist=nil) and (nArtistLen>0) then + begin + StrDupW(artist, + pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo))+ + nAlbumLen,nArtistLen); + end; + if (album=nil) and (nAlbumLen>0) then + begin + StrDupW(album, + pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo)), + nAlbumLen); + end; + if (title=nil) and (nTitleLen>0) then + begin + StrDupW(title, + pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo))+ + nAlbumLen+nArtistLen+nDateLen+nFileNameLen+nGenreLen, + nTitleLen); + end; + if (year=nil) and (nDateLen>0) then + begin + StrDupW(year, + pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo))+ + nAlbumLen+nArtistLen, + nDateLen); + end; + if (genre=nil) and (nGenreLen>0) then + begin + StrDupW(genre, + pWideChar(PAnsiChar(pStr)+SizeOf(TAIMP2FileInfo))+ + nAlbumLen+nArtistLen+nDateLen+nFileNameLen, + nGenreLen); + end; - if StrPosW(mfile,'://')<>nil then - TranslateRadio(SongInfo); + if StrPosW(mfile,'://')<>nil then + TranslateRadio(SongInfo); + end; end; end; + except end; + UnmapViewOfFile(pStr); end; - finally - UnmapViewOfFile(pStr); CloseHandle(FFile); end; end diff --git a/plugins/mRadio/i_myservice.inc b/plugins/mRadio/i_myservice.inc index dc144b616d..74b4c11b4f 100644 --- a/plugins/mRadio/i_myservice.inc +++ b/plugins/mRadio/i_myservice.inc @@ -281,3 +281,39 @@ begin end; end; end; + +function QuickOpen(wParam:WPARAM;lParam:LPARAM):int; cdecl; +var + filter:pWideChar; + buf:array [0..MAX_PATH-1] of WideChar; +begin + filter:=ConstructFilter; + if ShowDlgW(@buf,nil,filter) then + begin + result:=CallService(MS_DB_CONTACT_ADD,0,0); + if result<>0 then + begin + CallService(MS_PROTO_ADDTOCONTACT,result,tlparam(PluginName)); + // +// DBWriteByte(result,strCList,'Hidden' ,0); + DBWriteByte(result,strCList,'NotOnList',1); + // URL + DBWriteUnicode(result,PluginName,optStationURL,@buf); + DBWriteUnicode(result,PluginName,optFirstName ,@buf); + // Name + DBWriteUnicode(result,strCList ,optMyHandle,@buf); + DBWriteUnicode(result,PluginName,optNick ,@buf); + + SetStatus(result,ID_STATUS_OFFLINE); + + CallService(MS_IGNORE_IGNORE,result,IGNOREEVENT_USERONLINE{IGNOREEVENT_ALL}); + + CallService(MS_RADIO_COMMAND,MRC_PLAY,result); + end; + end + else + begin + result:=0; + end; + mFreeMem(filter); +end; diff --git a/plugins/mRadio/i_optdlg.inc b/plugins/mRadio/i_optdlg.inc index c09e302e13..20e8b86786 100644 --- a/plugins/mRadio/i_optdlg.inc +++ b/plugins/mRadio/i_optdlg.inc @@ -1,72 +1,4 @@ {Options dialog} - -function MakeFilter(dst,descr,full,filter:PWideChar;show:bool=true):pWideChar; -var - p:PWideChar; -begin - if full<>nil then - begin - p:=StrEndW(full); - p^:=';'; - StrCopyW(p+1,filter); - end; - - dst:=StrCopyEW(dst,TranslateW(descr)); - if show then - begin - dst^ :=' '; - (dst+1)^:='('; - dst:=StrCopyEW(dst+2,filter); - dst^:=')'; - inc(dst); - dst^:=#0; - end; - inc(dst); - result:=StrCopyEW(dst,filter)+1; -end; - -function ConstructFilter:pointer; -var - pc:pWideChar; - ph:PDWord; - Info:PBASS_PLUGININFO; - i:integer; - full:array [0..511] of WideChar; - tmpbuf1,tmpbuf2:array [0..127] of WideChar; -begin - mGetMem(pc,4096); -// FillChar(pc^,4096,0); - result:=pc; - full[0]:=#0; - pc:=MakeFilter(pc,'All files' ,nil ,'*.*',false); - pc:=MakeFilter(pc,'Playlist files',full,'*.pls;*.m3u;*.m3u8;*.asx'); - pc:=MakeFilter(pc,'BASS built-in' ,full,'*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.aif'); - - if BassStatus=rbs_null then - MyLoadBass; - - if BassStatus<>rbs_null then - begin - ph:=pointer(BASS_PluginGetInfo(0)); - if ph<>nil then - begin - while ph^<>0 do - begin - Info:=BASS_PluginGetInfo(ph^); - for i:=0 to Info^.formatc-1 do - //!! need to translate Ansi -> wide - with Info^.Formats[i] do - begin - pc:=MakeFilter(pc,FastAnsiToWideBuf(name,tmpbuf1),full,FastAnsiToWideBuf(exts,tmpbuf2)); - end; - inc(ph); - end; - end; - end; - pc:=MakeFilter(pc,'All supported formats',nil,full,false); - pc^:=#0; -end; - procedure SetButtonIcons(Dialog:HWND); var ti:TTOOLINFOW; diff --git a/plugins/mRadio/i_tray.inc b/plugins/mRadio/i_tray.inc index ab0a04e41d..85d4841dcf 100644 --- a/plugins/mRadio/i_tray.inc +++ b/plugins/mRadio/i_tray.inc @@ -201,6 +201,14 @@ begin else Menu_AddMainMenuItem(@mi); + mi.szName.w :='Quick Open'; + mi.position :=4; + mi.pszService:=MS_RADIO_QUICKOPEN; + if doTray then + Menu_AddTrayMenuItem(@mi) + else + Menu_AddMainMenuItem(@mi); + mi.szName.w :='Play Station'; mi.position :=1000; mi.pszService:=nil; diff --git a/plugins/mRadio/i_visual.inc b/plugins/mRadio/i_visual.inc index 3c0b56ebb2..86ba8fb2c6 100644 --- a/plugins/mRadio/i_visual.inc +++ b/plugins/mRadio/i_visual.inc @@ -105,6 +105,12 @@ begin Skin_AddIcon(@sid); DestroyIcon(sid.hDefaultIcon); + sid.hDefaultIcon :=LoadImage(hInstance,MAKEINTRESOURCE(IDI_OPEN),IMAGE_ICON,16,16,0); + sid.pszName :=IcoBtnOpen; + sid.szDescription.a:='Quick Open'; + Skin_AddIcon(@sid); + DestroyIcon(sid.hDefaultIcon); + sid.hDefaultIcon :=LoadImage(hInstance,MAKEINTRESOURCE(IDI_ADD),IMAGE_ICON,16,16,0); sid.pszName :=IcoBtnAdd; sid.szDescription.a:='Add EQ preset'; diff --git a/plugins/mRadio/mr_rc.inc b/plugins/mRadio/mr_rc.inc index 9cabc91824..363a3a0d98 100644 --- a/plugins/mRadio/mr_rc.inc +++ b/plugins/mRadio/mr_rc.inc @@ -77,6 +77,7 @@ const IDC_RADIO_MUTE = 1025; IDC_RADIO_VOL = 1026; + IDC_RADIO_OPEN = 1027; BTN_RECUP = 202; BTN_RECDN = 203; @@ -86,3 +87,4 @@ const IDI_OFF = 304; IDI_ADD = 305; IDI_DEL = 306; + IDI_OPEN = 307; diff --git a/plugins/mRadio/mradio.dpr b/plugins/mRadio/mradio.dpr index de7d7219da..e20e020ffc 100644 --- a/plugins/mRadio/mradio.dpr +++ b/plugins/mRadio/mradio.dpr @@ -173,19 +173,21 @@ begin // hooks and services hhRadioStatus:=CreateHookableEvent(ME_RADIO_STATUS); - CreateServiceFunction(MS_RADIO_PLAYSTOP,@Service_RadioPlayStop); - CreateServiceFunction(MS_RADIO_RECORD ,@Service_RadioRecord); - CreateServiceFunction(MS_RADIO_SETTINGS,@Service_RadioSettings); - CreateServiceFunction(MS_RADIO_SETVOL ,@Service_RadioSetVolume); - CreateServiceFunction(MS_RADIO_GETVOL ,@Service_RadioGetVolume); - CreateServiceFunction(MS_RADIO_MUTE ,@Service_RadioMute); - CreateServiceFunction(MS_RADIO_COMMAND ,@ControlCenter); - CreateServiceFunction(MS_RADIO_EQONOFF ,@Service_EqOnOff); - - CreateServiceFunction(MS_RADIO_TRAYMENU,@CreateTrayMenu); - - CreateServiceFunction(MS_RADIO_EXPORT ,@ExportAll); - CreateServiceFunction(MS_RADIO_IMPORT ,@ImportAll); + CreateServiceFunction(MS_RADIO_PLAYSTOP ,@Service_RadioPlayStop); + CreateServiceFunction(MS_RADIO_RECORD ,@Service_RadioRecord); + CreateServiceFunction(MS_RADIO_SETTINGS ,@Service_RadioSettings); + CreateServiceFunction(MS_RADIO_SETVOL ,@Service_RadioSetVolume); + CreateServiceFunction(MS_RADIO_GETVOL ,@Service_RadioGetVolume); + CreateServiceFunction(MS_RADIO_MUTE ,@Service_RadioMute); + CreateServiceFunction(MS_RADIO_COMMAND ,@ControlCenter); + CreateServiceFunction(MS_RADIO_EQONOFF ,@Service_EqOnOff); + + CreateServiceFunction(MS_RADIO_TRAYMENU ,@CreateTrayMenu); + + CreateServiceFunction(MS_RADIO_QUICKOPEN,@QuickOpen); + + CreateServiceFunction(MS_RADIO_EXPORT ,@ExportAll); + CreateServiceFunction(MS_RADIO_IMPORT ,@ImportAll); CreateProtoServices; diff --git a/plugins/mRadio/mradio.rc b/plugins/mRadio/mradio.rc index 9d51638bc1..6a21f46294 100644 --- a/plugins/mRadio/mradio.rc +++ b/plugins/mRadio/mradio.rc @@ -108,7 +108,22 @@ FONT 8, "MS Shell Dlg", 0, 0 CONTROL "",IDC_EQ09,"msctls_trackbar32",TBS_LEFT|TBS_VERT|WS_TABSTOP,263,137,22,75 GROUPBOX "Equalizer",IDC_STATIC,2,131,298,92 } - +/* +IDD_INFO DIALOGEX 0, 0, 222, 132 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | DS_3DLOOK +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 0, 0 +BEGIN + LTEXT "Station",IDC_STATIC,8,1,98,8 + EDITTEXT IDC_STATION,4,11,102,12,ES_AUTOHSCROLL + LTEXT "URL",IDC_STATIC,8,27,98,8 + EDITTEXT IDC_STATIONURL,4,37,102,12,ES_AUTOHSCROLL + LTEXT "Genre",IDC_STATIC,8,53,98,8 + EDITTEXT IDC_GENRE,4,63,102,12,ES_AUTOHSCROLL + LTEXT "Bitrate",IDC_STATIC,8,79,72,8 + EDITTEXT IDC_BITRATE,4,89,76,12, ES_RIGHT | ES_NUMBER +END +*/ IDD_SEARCH DIALOGEX 0, 0, 110, 140 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT @@ -138,11 +153,9 @@ STYLE DS_SETFONT | WS_CHILD | DS_FIXEDSYS | WS_VISIBLE EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0 BEGIN - CONTROL "" ,IDC_RADIO_VOL ,"msctls_trackbar32", TBS_BOTTOM|TBS_NOTICKS|$100,0,2,98,11 -// CONTROL "*",IDC_RADIO_MUTE,"MButtonClass" ,WS_TABSTOP,100,1,12,12//,$18000000 - PUSHBUTTON "*" ,IDC_RADIO_MUTE, 100,1,12,12, - BS_OWNERDRAW -// BS_FLAT | BS_ICON | BS_PUSHLIKE | BS_CHECKBOX | BS_DEFPUSHBUTTON | BS_CENTER | BS_VCENTER + PUSHBUTTON "*" ,IDC_RADIO_OPEN, 2,1,12,12, BS_OWNERDRAW + CONTROL "" ,IDC_RADIO_VOL ,"msctls_trackbar32", TBS_BOTTOM|TBS_NOTICKS|$100,16,2,82,11 + PUSHBUTTON "*" ,IDC_RADIO_MUTE, 100,1,12,12, BS_OWNERDRAW END @@ -151,13 +164,14 @@ IDI_ON ICON "ico\on.ico" IDI_OFF ICON "ico\off.ico" IDI_ADD ICON "ico\new.ico" IDI_DEL ICON "ico\delete.ico" +IDI_OPEN ICON "ico\open.ico" BTN_RECUP ICON "ico\recon.ico" BTN_RECDN ICON "ico\recoff.ico" /* LANGUAGE 0,0 VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,0,2,4 - PRODUCTVERSION 0,0,2,4 + FILEVERSION 0,0,2,2 + PRODUCTVERSION 0,0,8,0 FILEFLAGSMASK $3F FILEOS 4 FILETYPE 2 @@ -170,11 +184,11 @@ BEGIN VALUE "CompanyName",""0 VALUE "Comments", "Plugin to play Internet radio"0 VALUE "FileDescription", "mRadio Mod plugin for Miranda NG"0 - VALUE "FileVersion", "0, 0, 2, 4 "0 + VALUE "FileVersion", "0, 0, 2, 2 "0 VALUE "InternalName", "mRadio Mod"0 VALUE "OriginalFilename", "mradio.dll"0 VALUE "ProductName", "mRadio Mod Dynamic Link Library (DLL)"0 - VALUE "ProductVersion", "0, 0, 2, 4 "0 + VALUE "ProductVersion", "0, 0, 8, 0 "0 VALUE "SpecialBuild", "10.05.2012 "0 END END diff --git a/plugins/mRadio/rbass.pas b/plugins/mRadio/rbass.pas index 77957f4a46..ebdb33f913 100644 --- a/plugins/mRadio/rbass.pas +++ b/plugins/mRadio/rbass.pas @@ -10,6 +10,7 @@ procedure BassError(text:PWideChar); procedure OpenURL(url:PWideChar); cdecl; procedure StopStation; function GetMusicFormat:PAnsiChar; +function ConstructFilter:pointer; procedure EQ_ON; procedure EQ_OFF; @@ -1115,4 +1116,71 @@ begin end; end; +function MakeFilter(dst,descr,full,filter:PWideChar;show:bool=true):pWideChar; +var + p:PWideChar; +begin + if full<>nil then + begin + p:=StrEndW(full); + p^:=';'; + StrCopyW(p+1,filter); + end; + + dst:=StrCopyEW(dst,TranslateW(descr)); + if show then + begin + dst^ :=' '; + (dst+1)^:='('; + dst:=StrCopyEW(dst+2,filter); + dst^:=')'; + inc(dst); + dst^:=#0; + end; + inc(dst); + result:=StrCopyEW(dst,filter)+1; +end; + +function ConstructFilter:pointer; +var + pc:pWideChar; + ph:PDWord; + Info:PBASS_PLUGININFO; + i:integer; + full:array [0..511] of WideChar; + tmpbuf1,tmpbuf2:array [0..127] of WideChar; +begin + mGetMem(pc,4096); +// FillChar(pc^,4096,0); + result:=pc; + full[0]:=#0; + pc:=MakeFilter(pc,'All files' ,nil ,'*.*',false); + pc:=MakeFilter(pc,'Playlist files',full,'*.pls;*.m3u;*.m3u8;*.asx'); + pc:=MakeFilter(pc,'BASS built-in' ,full,'*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.aif'); + + if BassStatus=rbs_null then + MyLoadBass; + + if BassStatus<>rbs_null then + begin + ph:=pointer(BASS_PluginGetInfo(0)); + if ph<>nil then + begin + while ph^<>0 do + begin + Info:=BASS_PluginGetInfo(ph^); + for i:=0 to Info^.formatc-1 do + //!! need to translate Ansi -> wide + with Info^.Formats[i] do + begin + pc:=MakeFilter(pc,FastAnsiToWideBuf(name,tmpbuf1),full,FastAnsiToWideBuf(exts,tmpbuf2)); + end; + inc(ph); + end; + end; + end; + pc:=MakeFilter(pc,'All supported formats',nil,full,false); + pc^:=#0; +end; + end. diff --git a/plugins/mRadio/rframeapi.pas b/plugins/mRadio/rframeapi.pas index dd44aaa353..84a5e25f76 100644 --- a/plugins/mRadio/rframeapi.pas +++ b/plugins/mRadio/rframeapi.pas @@ -35,6 +35,7 @@ var function QSDlgResizer(Dialog:HWND;lParam:LPARAM;urc:PUTILRESIZECONTROL):int; cdecl; begin case urc^.wId of + IDC_RADIO_OPEN: result:=RD_ANCHORX_LEFT or RD_ANCHORY_CENTRE; IDC_RADIO_MUTE: result:=RD_ANCHORX_RIGHT or RD_ANCHORY_CENTRE; IDC_RADIO_VOL : result:=RD_ANCHORX_WIDTH or RD_ANCHORY_CENTRE; else @@ -115,21 +116,30 @@ begin end; WM_DRAWITEM: begin - if wParam=IDC_RADIO_MUTE then - begin - result:=1; - if gVolume<0 then - tmp:=IcoBtnOff - else - tmp:=IcoBtnOn; - DrawIconEx(PDRAWITEMSTRUCT(lParam)^.hDC,0,0, - CallService(MS_SKIN2_GETICON,0,TLPARAM(tmp)), - 16,16,0,hbr,DI_NORMAL); + case wParam of + IDC_RADIO_OPEN: begin + result:=1; + DrawIconEx(PDRAWITEMSTRUCT(lParam)^.hDC,0,0, + CallService(MS_SKIN2_GETICON,0,TLPARAM(IcoBtnOpen)), + 16,16,0,hbr,DI_NORMAL); + end; + + IDC_RADIO_MUTE: begin + result:=1; + if gVolume<0 then + tmp:=IcoBtnOff + else + tmp:=IcoBtnOn; + DrawIconEx(PDRAWITEMSTRUCT(lParam)^.hDC,0,0, + CallService(MS_SKIN2_GETICON,0,TLPARAM(tmp)), + 16,16,0,hbr,DI_NORMAL); + end; end; end; WM_CTLCOLORBTN: begin - if THANDLE(lParam)=GetDlgItem(Dialog,IDC_RADIO_MUTE) then + if (THANDLE(lParam)=GetDlgItem(Dialog,IDC_RADIO_MUTE)) or + (THANDLE(lParam)=GetDlgItem(Dialog,IDC_RADIO_OPEN)) then begin SetBkColor(wParam, frm_bkg); result:=hbr; @@ -153,6 +163,9 @@ begin BN_CLICKED: begin case loword(wParam) of + IDC_RADIO_OPEN: begin + CallService(MS_RADIO_QUICKOPEN,0,0); + end; IDC_RADIO_MUTE: begin CallService(MS_RADIO_MUTE,0,1); end; diff --git a/plugins/mRadio/rglobal.pas b/plugins/mRadio/rglobal.pas index 313c62015c..04c36e8696 100644 --- a/plugins/mRadio/rglobal.pas +++ b/plugins/mRadio/rglobal.pas @@ -119,6 +119,7 @@ const IcoBtnRecDn :PAnsiChar = 'Radio_RecDn'; IcoBtnAdd :PAnsiChar = 'Radio_Add'; IcoBtnDel :PAnsiChar = 'Radio_Del'; + IcoBtnOpen :PAnsiChar = 'Radio_Open'; //----- EAX ----- @@ -163,7 +164,6 @@ procedure SetStatus(hContact:TMCONTACT;status:integer); function GetDefaultRecPath:pWideChar; function GetStatusText(status:integer;toCList:boolean=false):PWideChar; - implementation uses -- cgit v1.2.3