diff options
Diffstat (limited to 'protocols/mRadio/i_myservice.inc')
-rw-r--r-- | protocols/mRadio/i_myservice.inc | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/protocols/mRadio/i_myservice.inc b/protocols/mRadio/i_myservice.inc new file mode 100644 index 0000000000..b8338a0d81 --- /dev/null +++ b/protocols/mRadio/i_myservice.inc @@ -0,0 +1,178 @@ +{My services}
+
+function Service_RadioPlayStop(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+var
+ p:PAnsiChar;
+ lnew:bool;
+ hContact:THANDLE;
+ cni:TCONTACTINFO;
+ i:integer;
+begin
+ result:=0;
+ if lParam=0 then
+ begin
+ if wParam=0 then
+ wParam:=GetCListSelContact;
+ p:=GetContactProtoAcc(wParam);
+ if (p=nil) or (StrCmp(p,PluginName)<>0) then
+ exit;
+ hContact:=wParam;
+ end
+ // wParam = station name
+ else
+ begin
+ FillChar(cni,SizeOf(cni),0);
+ cni.cbSize :=sizeof(cni);
+ if lParam=1 then
+ cni.dwFlag:=CNF_DISPLAY
+ else
+ cni.dwFlag:=CNF_DISPLAY or CNF_UNICODE;
+ cni.szProto :=PluginName;
+
+ hContact:=CallService(MS_DB_CONTACT_FINDFIRST,0,0);
+ while hContact<>0 do
+ begin
+ p:=PAnsiChar(CallService(MS_PROTO_GETCONTACTBASEPROTO,hContact,0));
+ if (p<>nil) and (StrCmp(p,PluginName)=0) then
+ begin
+ cni.hContact:=hContact;
+ if CallService(MS_CONTACT_GETCONTACTINFO,0,tlparam(@cni))=0 then
+ begin
+ if lParam=1 then
+ i:=StrCmp(pAnsiChar(wParam),cni.retval.szVal.a)
+ else
+ i:=StrCmpW(pWideChar(wParam),cni.retval.szVal.w);
+ mir_free(cni.retval.szVal.w);
+ if i=0 then
+ break;
+ end;
+ end;
+ hContact:=CallService(MS_DB_CONTACT_FINDNEXT,hContact,0);
+ end;
+ end;
+
+ if hContact<>0 then
+ begin
+ result:=1;
+ if PluginStatus=ID_STATUS_OFFLINE then
+ Service_SetStatus(ID_STATUS_ONLINE,0);
+
+ case CallService(MS_RADIO_COMMAND,MRC_STATUS,RD_STATUS_GET) of
+ RD_STATUS_CONNECT: begin //break while connect
+ CallService(MS_RADIO_COMMAND,MRC_STATUS,RD_STATUS_ABORT);
+ exit;
+ end;
+ RD_STATUS_ABORT: exit;
+ end;
+
+ lnew:=ActiveContact<>hContact;
+
+ if ActiveContact<>0 then
+ CallService(MS_RADIO_COMMAND,MRC_STOP,1);
+
+ if lnew then
+ CallService(MS_RADIO_COMMAND,MRC_PLAY,hContact);
+ end;
+end;
+
+function Service_RadioSettings(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+var
+ ood:TOPENOPTIONSDIALOG;
+begin
+ result:=0;
+ ood.cbSize:=SizeOf(ood);
+ ood.pszGroup:='Network';
+ ood.pszPage :=PluginName;
+ ood.pszTab :=Translate('Advanced');
+ CallService(MS_OPT_OPENOPTIONS,0,tlparam(@ood));
+end;
+
+function Service_RadioRecord(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+begin
+ if lParam<>0 then lParam:=TLPARAM(-1) else lParam:=0;
+
+ result:=CallService(MS_RADIO_COMMAND,MRC_RECORD,lParam);
+end;
+
+function Service_RadioGetVolume(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+begin
+ result:=gVolume;
+end;
+
+function Service_RadioSetVolume(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+begin
+ result:=Service_RadioGetVolume(0,0);
+ SetSndVol(wParam);
+
+ DBWriteByte(0,PluginName,optVolume,ABS(wParam));
+ if lParam<>2 then // not from Frame
+ if hVolFrmCtrl<>0 then
+ SendMessage(hVolFrmCtrl,TBM_SETPOS,1,ABS(wParam));
+
+ if lParam<>1 then // not from Settings
+ if hVolCtrl<>0 then
+ SendMessage(hVolCtrl,TBM_SETPOS,1,ABS(wParam));
+
+end;
+
+function Service_RadioMute(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+var
+{$IFDEF KOL_MCK}
+ med:TMouseEventData;
+{$ELSE}
+ tmp:pAnsiChar;
+{$ENDIF}
+begin
+ if gVolume=0 then
+ gVolume:=-1
+ else
+ gVolume:=-gVolume;
+ Result:=Service_RadioSetVolume(gVolume,0);
+ if hVolFrmCtrl<>0 then
+ EnableWindow(hVolFrmCtrl,gVolume>=0);
+
+{$IFDEF KOL_MCK}
+ if lParam=0 then // 0 - from Service, not frame
+ begin
+ if btnMute<>nil then
+ begin
+ FillChar(med,SizeOf(med),0);
+ med.Button:=mbLeft;
+ med.StopHandling:=true;
+ btnMute.OnMouseDown(btnMute,med);
+ // btnMute.Click; // without click processing
+ btnMute.OnMouseUp (btnMute,med);
+ btnMute.Invalidate;
+ end
+ end;
+{$ELSE}
+ if hMuteFrmCtrl<>0 then
+ begin
+ if gVolume<0 then
+ tmp:=IcoBtnOff
+ else
+ tmp:=IcoBtnOn;
+ SetButtonIcon(hMuteFrmCtrl,tmp);
+ end;
+{$ENDIF}
+end;
+
+function Service_EqOnOff(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+begin
+ result:=ord(isEQ_OFF=BST_UNCHECKED);
+ case wParam of
+ 0: begin
+ if isEQ_OFF=BST_UNCHECKED then
+ EQ_OFF
+ else
+ EQ_ON;
+ end;
+ 1: EQ_ON;
+ else
+ EQ_OFF;
+ end;
+ if eq[0].wnd<>0 then // if options opened
+ begin
+ CheckDlgButton(GetParent(eq[0].wnd),IDC_EQOFF,isEQ_OFF);
+ end;
+end;
|