unit AddTrackToSystem; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,id3,global,albumartist,jpeg, ExtCtrls; type TAddTrack = class(TForm) Ok: TButton; Cancel: TButton; oldalbum: TRadioButton; newalbum: TRadioButton; newalbumframe: TGroupBox; Label1: TLabel; Label2: TLabel; ebartist: TEdit; ebalbum: TEdit; ebtrack: TEdit; Label3: TLabel; repeataction: TCheckBox; actiontimer: TTimer; procedure CancelClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure newalbumClick(Sender: TObject); procedure oldalbumClick(Sender: TObject); procedure OkClick(Sender: TObject); procedure repeatactionClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure actiontimerTimer(Sender: TObject); private { Private declarations } public { Public declarations } end; var AddTrack: TAddTrack; art,alb,path : string; id : tid3tag; repeatactionset : boolean = false; function addtrackdialog(aart : string;aalb : string;apath : string;var oart,oalb : string;firstrun : boolean) : integer; implementation {$R *.dfm} function addtrackdialog(aart : string;aalb : string;apath : string;var oart,oalb : string;firstrun : boolean) : integer; begin art:=aart; alb:=aalb; path:=apath; Addtrack := TAddTrack.Create(Application); try //NB: Pete is the swine that got me writing this after two cans of larger! AddTrack.repeataction.checked:=repeatactionset; if firstrun=true then begin AddTrack.repeataction.checked:=false; repeatactionset:=false; end; Addtrack.Showmodal; finally result := addtrack.modalresult; oalb:=alb; oart:=art; screen.Cursor:=crDefault; Addtrack.free; end; end; function getmp3count(pth : string) : integer; var sr : TSearchRec; begin result:=0; if findfirst(pth+'\Track*.mp?',faAnyfile,sr)=0 then inc(result); while(findnext(sr)=0) do inc(result); end; procedure TAddTrack.CancelClick(Sender: TObject); begin modalresult:=mrCancel; end; procedure TAddTrack.FormCreate(Sender: TObject); var s : string; begin screen.Cursor:=crHourGlass; caption:='Add Track'+' - '+path; oldalbum.Caption:='Add Track To: '+art+' '+alb; id:=readtag(path); screen.Cursor:=crDefault; ebalbum.Text:=trim(id.album); ebartist.Text:=trim(id.artist); ebtrack.Text:=trim(id.track); if ebtrack.text='' then begin s:=ExtractFileDir(path); s:=copy(path,length(s)+2,(length(path)-length(s))); s:=copy(s,1,length(s)-4); ebtrack.text:=s; end; end; procedure TAddTrack.FormShow(Sender: TObject); begin if (repeataction.checked=true) then actiontimer.enabled:=true; end; procedure TAddTrack.newalbumClick(Sender: TObject); begin newalbumframe.Enabled:=true; ebartist.SetFocus; end; procedure TAddTrack.OkClick(Sender: TObject); var fl : textfile; wpath : string; bp : Tbitmap; jpg : TJpegImage; trk : string; c : integer; begin if ebtrack.text='' then begin messagebox(self.handle,'You must specify a name for the track.','Error',MB_OK); exit; end; if oldalbum.Checked=true then begin wpath:=config.path+'\'+art+'__'+alb; end else begin if (validname(ebartist.Text+' '+ebalbum.text) = false) or (ebartist.Text='') or (ebalbum.Text='') then begin messagebox(self.handle,'Album and Artist fields must be filled in and cannot contain special characters (\/:*?"<>|)','Error',MB_OK); exit; end; art:=ebartist.Text; alb:=ebalbum.Text; wpath:=config.path+'\'+ebartist.Text+'__'+ebalbum.text; try if directoryexists(wpath)=false then begin mkdir(wpath); bp:=tbitmap.create; bp.width:=300; bp.height:=300; generatecover(bp,ebartist.Text+' '+ebalbum.text); jpg:=TJpegImage.Create; jpg.Assign(bp); bp.free; jpg.SaveToFile(wpath+'\title.jpg'); addalbum(ebartist.Text,ebalbum.text); end; except; messagebox(self.handle,'Could not create folder. Possibly it already exists','Error',MB_OK); exit; end; end; screen.Cursor:=crHourGlass; c:=getmp3count(wpath); trk:=wpath+'\'+'track'+format('%.2d',[c+1])+'.mp'; if (uppercase(copy(path,length(path),1))='G') then trk:=trk+'G' else trk:=trk+'3'; try assignfile(fl,wpath+'\title.dat'); if fileexists(wpath+'\title.dat') then append(fl) else rewrite(fl); writeln(fl,ebtrack.text); closefile(fl); except messagebox(self.handle,'Error writing title file.','Error',MB_OK); ModalResult:=mrCancel; end; screen.Cursor:=crHourGlass; copyfile(pchar(path),pchar(trk),false); screen.Cursor:=crDefault; modalresult:=MrOk; end; procedure TAddTrack.oldalbumClick(Sender: TObject); begin newalbumframe.Enabled:=false; end; procedure TAddTrack.repeatactionClick(Sender: TObject); begin repeatactionset:=repeataction.checked; end; procedure TAddTrack.actiontimerTimer(Sender: TObject); begin okclick(nil); end; end.