Index » Empathy Jukebox : Blob cd9929 / prefs.pas
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.