diff options
author | Alexey Kulakov <panda75@bk.ru> | 2014-02-02 09:39:36 +0000 |
---|---|---|
committer | Alexey Kulakov <panda75@bk.ru> | 2014-02-02 09:39:36 +0000 |
commit | 7c53c3c262dd67bbe9bcac3971621face2455f82 (patch) | |
tree | dc3ac8c5fb55a284a82a2b55968bf6d6d3de19b5 /plugins/mRadio/rglobal.pas | |
parent | 5abedf89d15719fb5e2ba394363ad85264ac2f58 (diff) |
Miranda API update
mRadio:refactoring
git-svn-id: http://svn.miranda-ng.org/main/trunk@8000 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/mRadio/rglobal.pas')
-rw-r--r-- | plugins/mRadio/rglobal.pas | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/plugins/mRadio/rglobal.pas b/plugins/mRadio/rglobal.pas new file mode 100644 index 0000000000..283daae17c --- /dev/null +++ b/plugins/mRadio/rglobal.pas @@ -0,0 +1,257 @@ +{used variables}
+unit rglobal;
+
+interface
+
+uses
+ windows,
+ Dynamic_Bass,
+ playlist;
+
+{$include m_radio.inc}
+
+const
+ cPluginName = 'mRadio';
+const
+ PluginName:PAnsiChar = cPluginName;
+
+const
+ BassStatus:(rbs_null,rbs_load,rbs_init) = rbs_null;
+
+const
+ chan :HSTREAM = 0;
+ ActiveContact:THANDLE = 0;
+ ActiveURL :PWideChar = nil;
+
+const
+ optVolume :PAnsiChar = 'Volume';
+
+ optVersion :PAnsiChar = 'version'; //??
+
+ // mRadio compatibility
+//optStationurl <<
+ optMyHandle :PAnsiChar = 'MyHandle';
+ optGenre :PAnsiChar = 'Genre';
+ optBitrate :PAnsiChar = 'Bitrate';
+ // UserInfo compatibility
+ optFirstName :PAnsiChar = 'FirstName';
+ optNick :PAnsiChar = 'Nick';
+ optLastName :PAnsiChar = 'LastName';
+ optAge :PAnsiChar = 'Age';
+
+ optGroup :PAnsiChar = 'Group';
+
+const
+ optEAXType :PAnsiChar = 'EAXtype';
+ optStatusMsg :PAnsiChar = 'StatusMsg';
+ optBASSPath :PAnsiChar = 'BASSpath';
+
+ optLastStn :PAnsiChar = 'LastStation';
+ optActiveCodec:PAnsiChar = 'ActiveCodec';
+ optStationURL :PAnsiChar = 'StationURL'; // mRadio compatibility
+const
+ optTitle :PAnsiChar = 'Title';
+ optArtist :PAnsiChar = 'Artist';
+ optStatus :PAnsiChar = 'Status';
+
+var
+ hhRadioStatus,
+ hNetLib:THANDLE;
+var
+ plist:tPlaylist;
+// plFile:pWideChar; // playlist file name (for delete after using?)
+// plLocal:boolean; // true - no need to delete playlist
+var
+ RemoteSong:bool;
+ gVolume:integer;
+ NumTries:cardinal;
+ doLoop:cardinal;
+ PlayFirst:cardinal;
+ doShuffle:cardinal;
+ ForcedMono:cardinal;
+ doContRec:cardinal;
+ AuConnect:cardinal;
+ AuMute:cardinal;
+ AsOffline:cardinal;
+ isEQ_OFF:cardinal;
+ PluginStatus:integer;
+ storagep,storage:PAnsiChar;
+ recpath:pWideChar;
+ StatusTmpl:pWideChar;
+ sBuffer,
+ sTimeout,
+ sPreBuf:cardinal;
+ usedevice:PAnsiChar;
+
+const // inside INC files only
+ hVolCtrl:HWND=0;
+
+//----- Equalizer -----
+
+type
+ tEQRec = record
+ fx :HFX;
+ wnd :HWND;
+ param :BASS_DX8_PARAMEQ;
+ text :PAnsiChar;
+ end;
+var
+ eq:array [0..9] of tEQRec = (
+ (fx:0;wnd:0;param:(fCenter:80 ;fBandwidth:18;fGain:0);text:'80'),
+ (fx:0;wnd:0;param:(fCenter:170 ;fBandwidth:18;fGain:0);text:'170'),
+ (fx:0;wnd:0;param:(fCenter:310 ;fBandwidth:18;fGain:0);text:'310'),
+ (fx:0;wnd:0;param:(fCenter:600 ;fBandwidth:18;fGain:0);text:'600'),
+ (fx:0;wnd:0;param:(fCenter:1000 ;fBandwidth:18;fGain:0);text:'1k'),
+ (fx:0;wnd:0;param:(fCenter:3000 ;fBandwidth:18;fGain:0);text:'3k'),
+ (fx:0;wnd:0;param:(fCenter:6000 ;fBandwidth:18;fGain:0);text:'6k'),
+ (fx:0;wnd:0;param:(fCenter:12000;fBandwidth:18;fGain:0);text:'12k'),
+ (fx:0;wnd:0;param:(fCenter:14000;fBandwidth:18;fGain:0);text:'14k'),
+ (fx:0;wnd:0;param:(fCenter:16000;fBandwidth:18;fGain:0);text:'16k'));
+
+//----- Button icons -----
+
+const
+ IcoBtnSettings:PAnsiChar = 'Radio_Setting';
+ IcoBtnOn :PAnsiChar = 'Radio_On';
+ IcoBtnOff :PAnsiChar = 'Radio_Off';
+ IcoBtnRecUp :PAnsiChar = 'Radio_RecUp';
+ IcoBtnRecDn :PAnsiChar = 'Radio_RecDn';
+ IcoBtnAdd :PAnsiChar = 'Radio_Add';
+ IcoBtnDel :PAnsiChar = 'Radio_Del';
+
+//----- EAX -----
+
+type
+ TEAXItem = record
+ name:PWideChar;
+ code:dword;
+ end;
+const
+ EAXItems:array [0..EAX_ENVIRONMENT_COUNT] of TEAXItem=(
+ (name:'Off' ; code:0),
+ (name:'Generic' ; code:EAX_ENVIRONMENT_GENERIC),
+ (name:'Padded Cell' ; code:EAX_ENVIRONMENT_PADDEDCELL),
+ (name:'Room' ; code:EAX_ENVIRONMENT_ROOM),
+ (name:'Bathroom' ; code:EAX_ENVIRONMENT_BATHROOM),
+ (name:'Living Room' ; code:EAX_ENVIRONMENT_LIVINGROOM),
+ (name:'Stone Room' ; code:EAX_ENVIRONMENT_STONEROOM),
+ (name:'Auditorium' ; code:EAX_ENVIRONMENT_AUDITORIUM),
+ (name:'Concert Hall' ; code:EAX_ENVIRONMENT_CONCERTHALL),
+ (name:'Cave' ; code:EAX_ENVIRONMENT_CAVE),
+ (name:'Arena' ; code:EAX_ENVIRONMENT_ARENA),
+ (name:'Hangar' ; code:EAX_ENVIRONMENT_HANGAR),
+ (name:'Carpeted Hallway'; code:EAX_ENVIRONMENT_CARPETEDHALLWAY),
+ (name:'Hallway' ; code:EAX_ENVIRONMENT_HALLWAY),
+ (name:'Stone Corridor' ; code:EAX_ENVIRONMENT_STONECORRIDOR),
+ (name:'Alley' ; code:EAX_ENVIRONMENT_ALLEY),
+ (name:'Forrest' ; code:EAX_ENVIRONMENT_FOREST),
+ (name:'City' ; code:EAX_ENVIRONMENT_CITY),
+ (name:'Mountains' ; code:EAX_ENVIRONMENT_MOUNTAINS),
+ (name:'Quarry' ; code:EAX_ENVIRONMENT_QUARRY),
+ (name:'Plain' ; code:EAX_ENVIRONMENT_PLAIN),
+ (name:'Parking Lot' ; code:EAX_ENVIRONMENT_PARKINGLOT),
+ (name:'Sewer Pipe' ; code:EAX_ENVIRONMENT_SEWERPIPE),
+ (name:'Under Water' ; code:EAX_ENVIRONMENT_UNDERWATER),
+ (name:'Drugged' ; code:EAX_ENVIRONMENT_DRUGGED),
+ (name:'Dizzy' ; code:EAX_ENVIRONMENT_DIZZY),
+ (name:'Psychotic' ; code:EAX_ENVIRONMENT_PSYCHOTIC));
+
+
+function MakeMessage:pWideChar;
+procedure SetStatus(hContact:THANDLE;status:integer);
+function GetDefaultRecPath:pWideChar;
+function GetStatusText(status:integer;toCList:boolean=false):PWideChar;
+
+
+implementation
+
+uses
+ m_api, common, dbsettings;
+
+procedure SetStatus(hContact:THANDLE;status:integer);
+begin
+// if Status=ID_STATUS_OFFLINE then
+// MyStopBass;
+
+ if status=ID_STATUS_OFFLINE then
+ begin
+ if (AsOffline=BST_UNCHECKED) or (PluginStatus<>ID_STATUS_OFFLINE) then
+ status:=ID_STATUS_INVISIBLE;
+ end;
+
+ if hContact=0 then
+ begin
+ hContact:=db_find_first(PluginName);
+ while hContact<>0 do
+ begin
+ DBWriteWord(hContact,PluginName,optStatus,status);
+ hContact:=db_find_next(hContact,PluginName);
+ end;
+ end
+ else
+ DBWriteWord(hContact,PluginName,optStatus,status);
+end;
+
+function MakeMessage:pWideChar;
+var
+ p,artist,title:pWideChar;
+ len:cardinal;
+begin
+ artist:=DBReadUnicode(0,PluginName,optArtist);
+ title :=DBReadUnicode(0,PluginName,optTitle);
+ len:=StrLenW(artist);
+ if (artist<>nil) and (title<>nil) then
+ inc(len,3);
+ inc(len,StrLenW(title));
+
+ if len>0 then
+ begin
+ mGetMem(result,(len+1)*SizeOf(WideChar));
+ p:=result;
+ if artist<>nil then
+ begin
+ p:=StrCopyEW(p,artist);
+ if title<>nil then
+ p:=StrCopyEW(p,' - ');
+ mFreeMem(artist);
+ end;
+ if title<>nil then
+ begin
+ StrCopyW(p,title);
+ mFreeMem(title);
+ end;
+ end
+ else
+ result:=nil;
+end;
+
+function GetDefaultRecPath:pWideChar;
+var
+ dat:TREPLACEVARSDATA;
+ mstr,szData:pWideChar;
+ buf:array [0..MAX_PATH-1] of WideChar;
+begin
+ FillChar(dat,SizeOf(dat),0);
+ dat.cbSize :=SizeOf(TREPLACEVARSDATA);
+ dat.dwFlags:=RVF_UNICODE;
+ szData:='%miranda_userdata%'+'\'+cPluginName;
+ mstr:=pWideChar(CallService(MS_UTILS_REPLACEVARS, WPARAM(szData), LPARAM(@dat)));
+ PathToRelativeW(mstr,buf);
+ StrDupW(result,buf);
+ mir_free(mstr);
+end;
+
+function GetStatusText(status:integer;toCList:boolean=false):PWideChar;
+begin
+ case status of
+ RD_STATUS_PAUSED : result:='paused';
+ RD_STATUS_STOPPED: if toCList then result:=nil else result:='stopped';
+ RD_STATUS_CONNECT: result:='connecting';
+ RD_STATUS_ABORT : result:='aborting';
+ RD_STATUS_PLAYING: if toCList then result:=nil else result:='playing';
+ else
+ result:=nil;
+ end;
+end;
+
+end.
|