From 7c53c3c262dd67bbe9bcac3971621face2455f82 Mon Sep 17 00:00:00 2001 From: Alexey Kulakov Date: Sun, 2 Feb 2014 09:39:36 +0000 Subject: Miranda API update mRadio:refactoring git-svn-id: http://svn.miranda-ng.org/main/trunk@8000 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/mRadio/roptions.pas | 251 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 plugins/mRadio/roptions.pas (limited to 'plugins/mRadio/roptions.pas') diff --git a/plugins/mRadio/roptions.pas b/plugins/mRadio/roptions.pas new file mode 100644 index 0000000000..347747521c --- /dev/null +++ b/plugins/mRadio/roptions.pas @@ -0,0 +1,251 @@ +{Different settings} +unit roptions; + +interface + +//----- Presets ----- + +type + tPreset = record + name :PWideChar; + preset:array [0..9] of shortint; + end; +var + Presets: array of tPreset; + OldEQPreset:integer; + +procedure LoadPresets; +procedure SavePresets; +procedure FreePresets; + +procedure FreeSettings; +procedure LoadSettings; +procedure SaveCommonSettings; +procedure SaveTechSettings; + + +implementation + +uses + windows, + common,dbsettings,mirutils, + rglobal; + +const + optRecPath :PAnsiChar = 'RecordPath'; + optStatusTmpl :PAnsiChar = 'StatusTmpl'; + + optLoop :PAnsiChar = 'Loop'; + optShuffle :PAnsiChar = 'Shuffle'; + optPlayFirst :PAnsiChar = 'PlayFromFirst'; + optContRec :PAnsiChar = 'ContRec'; + optConnect :PAnsiChar = 'AutoConnect'; + optAutoMute :PAnsiChar = 'AutoMute'; + optOffline :PAnsiChar = 'asOffline'; + + optEQ_OFF :PAnsiChar = 'eqoff'; + optForcedMono :PAnsiChar = 'ForcedMono'; + optPreBuf :PAnsiChar = 'PreBuf'; + optBuffer :PAnsiChar = 'Buffer'; + optTimeout :PAnsiChar = 'Timeout'; + optNumTries :PAnsiChar = 'NumTries'; + optDevice :PAnsichar = 'Device'; + +{ +const + optVolume :PAnsiChar = 'Volume'; +} +//----- Presets ----- + +const + optOldPreset:pAnsiChar='oldpreset'; + optPresets :pAnsiChar='numpreset'; + optPreset :pAnsiChar='preset_'; + optPreDescr :pAnsiChar='predescr_'; + +const + PresetMax = 17; + +procedure InitPresets; +type + tP = array [0..9] of AnsiChar; +begin + StrDupW(Presets[00].name,'Acoustic' ); tP(Presets[00].preset):=#$01#$02#$00#$00#$00#$00#$00#$01#$01#$03; + StrDupW(Presets[01].name,'Blues' ); tP(Presets[01].preset):=#$01#$02#$01#$00#$00#$00#$00#$00#$00#$FE; + StrDupW(Presets[02].name,'Classical'); tP(Presets[02].preset):=#$01#$04#$01#$00#$00#$00#$00#$00#$01#$01; + StrDupW(Presets[03].name,'Country' ); tP(Presets[03].preset):=#$00#$00#$01#$01#$00#$00#$01#$01#$01#$01; + StrDupW(Presets[04].name,'Dance' ); tP(Presets[04].preset):=#$04#$03#$02#$01#$FF#$FF#$02#$04#$05#$05; + StrDupW(Presets[05].name,'Folk' ); tP(Presets[05].preset):=#$FF#$00#$00#$01#$01#$00#$01#$01#$01#$00; + StrDupW(Presets[06].name,'Grunge' ); tP(Presets[06].preset):=#$01#$00#$FF#$00#$00#$02#$01#$FF#$FE#$FD; + StrDupW(Presets[07].name,'Jazz' ); tP(Presets[07].preset):=#$00#$01#$02#$03#$03#$01#$01#$03#$04#$05; + StrDupW(Presets[08].name,'Metall' ); tP(Presets[08].preset):=#$FE#$00#$00#$00#$00#$03#$02#$04#$06#$05; + StrDupW(Presets[09].name,'New Age' ); tP(Presets[09].preset):=#$03#$03#$00#$00#$00#$00#$00#$00#$02#$02; + StrDupW(Presets[10].name,'Opera' ); tP(Presets[10].preset):=#$00#$01#$02#$04#$01#$02#$00#$00#$00#$00; + StrDupW(Presets[11].name,'Rap' ); tP(Presets[11].preset):=#$00#$04#$04#$00#$00#$00#$01#$04#$05#$07; + StrDupW(Presets[12].name,'Reggae' ); tP(Presets[12].preset):=#$03#$00#$FD#$00#$05#$00#$02#$03#$04#$05; + StrDupW(Presets[13].name,'Rock' ); tP(Presets[13].preset):=#$00#$02#$04#$00#$00#$00#$02#$04#$05#$06; + StrDupW(Presets[14].name,'Speech' ); tP(Presets[14].preset):=#$FE#$02#$00#$00#$00#$00#$FF#$FE#$FD#$FC; + StrDupW(Presets[15].name,'Swing' ); tP(Presets[15].preset):=#$FF#$00#$00#$02#$02#$00#$02#$02#$03#$03; + StrDupW(Presets[16].name,'Techno' ); tP(Presets[16].preset):=#$05#$08#$FF#$FE#$FD#$FF#$04#$06#$06#$06; +end; + +procedure LoadPresets; +var + num,preset,descr:array [0..63] of AnsiChar; + i:integer; + p,pd:pAnsiChar; +begin + p :=StrCopyE(preset,optPreset); + pd:=StrCopyE(descr ,optPreDescr); + + i:=DBReadByte(0,PluginName,optPresets); + if i=0 then + begin + SetLength(Presets,PresetMax); + InitPresets; + OldEQPreset:=-1; + end + else + begin + OldEQPreset:=integer(DBReadByte(0,PluginName,optOldPreset,byte(-1))); + SetLength(Presets,i); + for i:=0 to HIGH(Presets) do + begin + StrCopy(p ,IntToStr(num,i)); DBReadStruct (0,PluginName,preset,@Presets[i].preset,10); + StrCopy(pd,num); Presets[i].name:=DBReadUnicode(0,PluginName,descr); + end; + end; +end; + +procedure SavePresets; +var + num,preset,descr:array [0..63] of AnsiChar; + i,j:integer; + p,pd:pAnsiChar; +begin + p :=StrCopyE(preset,optPreset); + pd:=StrCopyE(descr ,optPreDescr); + j:=DBReadByte(0,PluginName,optPresets); + for i:=0 to HIGH(Presets) do + begin + StrCopy(p ,IntToStr(num,i)); DBWriteStruct (0,PluginName,preset,@Presets[i].preset,10); + StrCopy(pd,num); DBWriteUnicode(0,PluginName,descr ,Presets[i].name); + end; + while j>Length(Presets) do + begin + dec(j); + StrCopy(p ,IntToStr(num,j)); DBDeleteSetting(0,PluginName,preset); + StrCopy(pd,num); DBDeleteSetting(0,PluginName,descr); + end; + DBWriteByte(0,PluginName,optOldPreset,OldEQPreset); + DBWriteByte(0,PluginName,optPresets ,Length(Presets)); +end; + +procedure FreePresets; +var + i:integer; +begin + for i:=0 to HIGH(Presets) do + mFreeMem(Presets[i].name); +end; + +//----- Common settings ----- + +procedure FreeSettings; +begin + mFreeMem(recpath); + mFreeMem(StatusTmpl); + mFreeMem(usedevice); +end; + +procedure LoadSettings; +var + szTemp:array [0..7] of AnsiChar; + i:integer; +begin + //-- record + recpath:=DBReadUnicode(0,PluginName,optRecPath); + if recpath=nil then + recpath:=GetDefaultRecPath; + + //-- mRadio settings + doLoop :=DBReadByte(0,PluginName,optLoop); + doShuffle :=DBReadByte(0,PluginName,optShuffle); + doContRec :=DBReadByte(0,PluginName,optContRec); + PlayFirst :=DBReadByte(0,PluginName,optPlayFirst); + AuConnect :=DBReadByte(0,PluginName,optConnect); + AuMute :=DBReadByte(0,PluginName,optAutoMute); + AsOffline :=DBReadByte(0,PluginName,optOffline); + StatusTmpl:=DBReadUnicode(0,PluginName,optStatusTmpl,'%radio_title%'); + + //-- Tech settings + usedevice :=DBReadString(0,PluginName,optDevice); + + sPreBuf :=DBReadWord(0,PluginName,optPreBuf ,75); + sBuffer :=DBReadWord(0,PluginName,optBuffer ,5000); + sTimeout :=DBReadWord(0,PluginName,optTimeout,5000); + + isEQ_OFF :=DBReadByte(0,PluginName,optEQ_OFF); + gVolume :=DBReadByte(0,PluginName,optVolume,50); + ForcedMono:=DBReadByte(0,PluginName,optForcedMono); + NumTries :=DBReadByte(0,PluginName,optNumTries,1); + if NumTries<1 then NumTries:=1; + + //-- Equalizer + szTemp[0]:='E'; + szTemp[1]:='Q'; + szTemp[2]:='_'; + szTemp[4]:=#0; + for i:=0 to 9 do + begin + szTemp[3]:=AnsiChar(ORD('0')+i); + eq[i].param.fGain:=DBReadByte(0,PluginName,szTemp,15)-15; + end; + + if AuConnect<>BST_UNCHECKED then + ActiveContact:=LoadContact(PluginName,optLastStn) + else + ActiveContact:=0; +end; + +procedure SaveCommonSettings; +begin + DBWriteByte(0,PluginName,optLoop ,doLoop); + DBWriteByte(0,PluginName,optShuffle ,doShuffle); + DBWriteByte(0,PluginName,optContRec ,doContRec); + DBWriteByte(0,PluginName,optPlayFirst,PlayFirst); + DBWriteByte(0,PluginName,optConnect ,AuConnect); + DBWriteByte(0,PluginName,optAutoMute ,AuMute); + DBWriteByte(0,PluginName,optOffline ,AsOffline); + + DBWriteUnicode(0,PluginName,optStatusTmpl,StatusTmpl); + DBWriteUnicode(0,PluginName,optRecPath ,recpath); +end; + +procedure SaveTechSettings; +var + szTemp:array [0..7] of AnsiChar; + i:integer; +begin + DBWriteWord(0,PluginName,optTimeout,sTimeout); + DBWriteWord(0,PluginName,optBuffer,sBuffer); + DBWriteWord(0,PluginName,optPreBuf,sPreBuf); + + DBWriteByte(0,PluginName,optForcedMono,ForcedMono); + DBWriteByte(0,PluginName,optNumTries,NumTries); + DBWriteByte(0,PluginName,optEQ_OFF ,isEQ_OFF); + + DBWriteString(0,PluginName,optDevice,usedevice); + + szTemp[0]:='E'; + szTemp[1]:='Q'; + szTemp[2]:='_'; + szTemp[4]:=#0; + for i:=0 to 9 do + begin + szTemp[3]:=AnsiChar(ORD('0')+i); + DBWriteByte(0,PluginName,szTemp,trunc(eq[i].param.fGain)+15); + end; +end; + +end. -- cgit v1.2.3