unit prefs; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,registry, ComCtrls,comobj, Buttons, ExtCtrls,windowsversion,shellapi,global; type Tpreferences = class(TForm) OK: TButton; cancel: TButton; prefstab: TPageControl; generaltab: TTabSheet; Jukebox: TTabSheet; GroupBox2: TGroupBox; Label1: TLabel; audpos: TTrackBar; audtext: TEdit; GroupBox4: TGroupBox; Label3: TLabel; screensaverpath: TEdit; GroupBox1: TGroupBox; path: TEdit; browse: TButton; Colors: TGroupBox; colbg: TPanel; colborder: TPanel; Background: TLabel; Label4: TLabel; colpick: TColorDialog; Label5: TLabel; Bevel1: TBevel; Style: TLabel; Bevel2: TBevel; Bevel3: TBevel; bgstyle: TComboBox; bg: TShape; bord: TShape; cdburningoptions: TTabSheet; GroupBox3: TGroupBox; cdopt1: TRadioButton; cdopt2: TRadioButton; help: TButton; DJ: TTabSheet; commentspanel: TGroupBox; commentslb: TListBox; Label2: TLabel; commentedit: TEdit; add: TButton; del: TButton; djstartup: TCheckBox; djcomment: TCheckBox; announcetime: TCheckBox; Bevel4: TBevel; Label6: TLabel; showexit: TCheckBox; hidepanel: TCheckBox; procedure OKClick(Sender: TObject); procedure cancelClick(Sender: TObject); procedure browseClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure audposChange(Sender: TObject); procedure helpClick(Sender: TObject); procedure bgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure bordMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure bgstyleChange(Sender: TObject); procedure bordstyleChange(Sender: TObject); procedure djcommentClick(Sender: TObject); procedure commenteditChange(Sender: TObject); procedure addClick(Sender: TObject); procedure commentslbClick(Sender: TObject); procedure delClick(Sender: TObject); private { Private declarations } public { Public declarations } end; function showprefs(firstrun : boolean) : integer; export; var preferences: Tpreferences; resp : integer; url : string; implementation uses main, filectrl; {$R *.DFM} procedure updatecomments; var n : integer; begin preferences.commentslb.clear; for n:=0 to phrases.count-1 do begin preferences.commentslb.items.add(phrases.data[n]); end; end; function showprefs(firstrun : boolean) : integer; export; begin preferences := Tpreferences.Create(application); url:='http://www.myjukebox.co.uk/otherstuff'; try preferences.Showmodal; finally result:=resp; // mainform.Options.checked:=false; preferences.Free; end; end; procedure Tpreferences.OKClick(Sender: TObject); begin resp:=0; if config.path=path.text then resp:=-1; config.path:=path.text; if config.path='' then config.path:=getcurrentdir; if config.path[length(config.path)]<>'\' then config.path:=config.path+'\'; config.auditiontimeout:=audpos.position; config.Dj_default:=djstartup.checked; config.Dj_comment:=djcomment.checked; //config.burnpath:=burnpath.text; config.timeannounce:=announcetime.checked; config.screensaverpath:=screensaverpath.text; config.bordercolor:=bord.brush.Color; config.bgcolor:=bg.brush.color; config.bgstyle:=bgstyle.ItemIndex; config.borderstyle:=0; config.showexit:=showexit.checked; config.hidepanel:=hidepanel.checked; if cdopt1.checked=true then config.cdopt:=0 else config.cdopt:=1; writeini; mainform.Options.checked:=false; preferences.close; end; procedure Tpreferences.cancelClick(Sender: TObject); begin resp:=-1; preferences.close; end; procedure Tpreferences.browseClick(Sender: TObject); var dir : string; begin try dir:=path.text; if SelectDirectory(dir,[],0)=true then begin path.text:=dir; end; except end; end; procedure Tpreferences.FormActivate(Sender: TObject); begin //ofa if getwindowsversion<6 then begin cdopt2.enabled:=false; config.cdopt:=0; end; prefstab.activepage:=generaltab; audpos.position:=config.auditiontimeout; audtext.text:=inttostr(audpos.position); path.text:=config.path; announcetime.checked:=config.timeannounce; //burnpath.text:=config.burnpath; screensaverpath.text:=config.screensaverpath; if config.Dj_default=true then Djstartup.checked:=true else Djstartup.checked:=false; if config.Dj_comment=true then begin djcomment.checked:=true; commentspanel.visible:=true; end else begin djcomment.checked:=false; commentspanel.visible:=false; end; updatecomments; try bg.brush.color:=config.bgcolor; bord.brush.color:=config.bordercolor; if config.showexit=true then showexit.checked:=true else showexit.checked:=false; if config.hidepanel=true then hidepanel.checked:=true else hidepanel.checked:=false; if (config.bgstyle>-1) and (config.bgstyle<=bgstyle.items.count-1) then bgstyle.itemindex:=config.bgstyle else bgstyle.itemindex:=0; //border style deprectated if (config.borderstyle>-1) and (config.borderstyle<=bordstyle.items.count-1) then bordstyle.itemindex:=config.borderstyle else bordstyle.itemindex:=0; except end; if config.cdopt=0 then cdopt1.checked:=true else cdopt2.checked:=true; path.setfocus; application.bringtofront; end; procedure Tpreferences.audposChange(Sender: TObject); begin audtext.text:=inttostr(audpos.position); end; procedure Tpreferences.helpClick(Sender: TObject); begin ShellExecute (0, nil, pchar(WEBSITEURL+'?sec=2&sub=2'), nil, nil, SW_SHOWNORMAL); end; procedure Tpreferences.bgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if colpick.execute=true then begin config.bgcolor:=colpick.color; bg.brush.color:=config.bgcolor; end; end; procedure Tpreferences.bordMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if colpick.execute=true then begin config.bordercolor:=colpick.color; bord.brush.color:=config.bordercolor; end; end; procedure Tpreferences.bgstyleChange(Sender: TObject); begin bg.brush.color:=config.bgcolor; case bgstyle.itemindex of 0 : bg.Brush.style:=bsSolid; 1 : bg.Brush.style:=bsClear; 2 : bg.Brush.style:=bsBDiagonal; 3 : bg.Brush.style:=bsFDiagonal; 4 : bg.Brush.style:=bsCross; 5 : bg.Brush.style:=bsDiagcross; 6 : bg.Brush.style:=bsHorizontal; 7 : bg.Brush.style:=bsVertical; end; end; procedure Tpreferences.bordstyleChange(Sender: TObject); begin {bord.brush.color:=config.bordercolor; case bordstyle.itemindex of 0 : bord.Brush.style:=bsSolid; 1 : bord.Brush.style:=bsClear; 2 : bord.Brush.style:=bsBDiagonal; 3 : bord.Brush.style:=bsFDiagonal; 4 : bord.Brush.style:=bsCross; 5 : bord.Brush.style:=bsDiagcross; 6 : bord.Brush.style:=bsHorizontal; 7 : bord.Brush.style:=bsVertical; end; } end; procedure Tpreferences.djcommentClick(Sender: TObject); begin commentedit.text:=''; if djcomment.Checked=true then commentspanel.visible:=true else commentspanel.visible:=false; end; procedure Tpreferences.commenteditChange(Sender: TObject); begin if trim(commentedit.text)='' then add.enabled:=false else add.enabled:=true; end; procedure Tpreferences.addClick(Sender: TObject); begin inc(phrases.count); setlength(phrases.data,phrases.count); phrases.data[phrases.count-1]:=commentedit.text; updatecomments; end; procedure Tpreferences.commentslbClick(Sender: TObject); begin if commentslb.itemindex>-1 then del.enabled:=true else del.enabled:=false; end; procedure Tpreferences.delClick(Sender: TObject); var n : integer; begin setlength(phrases.data,phrases.count+1); for n:=commentslb.itemindex to phrases.count-1 do begin phrases.data[n]:=phrases.data[n+1]; end; dec(phrases.count); setlength(phrases.data,phrases.count); updatecomments; if commentslb.items.count>0 then commentslb.itemindex:=0; commentslbclick(nil); end; end.