summaryrefslogtreecommitdiff
path: root/plugins/mRadio/roptions.pas
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/mRadio/roptions.pas')
-rw-r--r--plugins/mRadio/roptions.pas251
1 files changed, 251 insertions, 0 deletions
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.