2011-07-21 09:39:48 +00:00
|
|
|
|
|
|
|
{
|
|
|
|
Directory/library manager dialog for Cactus Jukebox
|
|
|
|
|
|
|
|
written by Sebastian Kraft, <c> 2006-2008
|
|
|
|
|
|
|
|
Contact the author at: sebastian_kraft@gmx.de
|
|
|
|
|
|
|
|
This Software is published under the GPL
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Unit directories;
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
Interface
|
|
|
|
|
|
|
|
Uses
|
|
|
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls,
|
|
|
|
Buttons, CheckLst, StdCtrls;
|
|
|
|
|
|
|
|
Type
|
|
|
|
|
|
|
|
{ Tdirwin }
|
|
|
|
|
|
|
|
Tdirwin = Class(TForm)
|
|
|
|
add: TButton;
|
|
|
|
Button1: TButton;
|
|
|
|
dirlistview: TListBox;
|
|
|
|
removebut: TButton;
|
|
|
|
rescan: TButton;
|
|
|
|
rescanall: TButton;
|
|
|
|
SelectDirectoryDialog1: TSelectDirectoryDialog;
|
|
|
|
Procedure Button1Click(Sender: TObject);
|
|
|
|
Procedure FormCreate(Sender: TObject);
|
|
|
|
Procedure addClick(Sender: TObject);
|
|
|
|
Procedure removeClick(Sender: TObject);
|
|
|
|
Procedure rescanClick(Sender: TObject);
|
|
|
|
Procedure rescanallClick(Sender: TObject);
|
|
|
|
Private
|
|
|
|
{ private declarations }
|
|
|
|
Public
|
|
|
|
{ public declarations }
|
|
|
|
End;
|
|
|
|
|
|
|
|
Var
|
|
|
|
dirwin: Tdirwin;
|
|
|
|
|
|
|
|
Implementation
|
|
|
|
|
|
|
|
Uses mainform,status,mediacol, config;
|
|
|
|
{ Tdirwin }
|
|
|
|
|
|
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
|
|
Procedure Tdirwin.FormCreate(Sender: TObject);
|
|
|
|
|
|
|
|
Var i: integer;
|
|
|
|
Begin
|
|
|
|
dirlistview.Clear;
|
|
|
|
For i:= 0 To MediaCollection.dirlist.Count-1 Do
|
|
|
|
Begin
|
|
|
|
dirlistview.Items.Add(MediaCollection.dirlist[i]);
|
|
|
|
End;
|
|
|
|
End;
|
|
|
|
|
|
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
|
|
Procedure Tdirwin.addClick(Sender: TObject);
|
|
|
|
|
|
|
|
Var
|
|
|
|
i: integer;
|
|
|
|
Begin
|
|
|
|
SelectDirectoryDialog1.InitialDir := CactusConfig.HomeDir;
|
|
|
|
|
|
|
|
|
|
|
|
If SelectDirectoryDialog1.Execute=true Then
|
|
|
|
Begin
|
|
|
|
For i:= 0 To MediaCollection.dirlist.Count-1 Do
|
|
|
|
Begin
|
|
|
|
If pos(MediaCollection.dirlist[i], SelectDirectoryDialog1.FileName)=1 Then
|
|
|
|
Begin
|
|
|
|
ShowMessage('Directory '+SelectDirectoryDialog1.FileName+
|
|
|
|
' is still part of directorylist');
|
|
|
|
exit;
|
|
|
|
End;
|
|
|
|
End;
|
|
|
|
Caption := 'Please wait... Scanning...';
|
|
|
|
Enabled := false;
|
|
|
|
Application.ProcessMessages;
|
|
|
|
MediaCollection.add_directory(SelectDirectoryDialog1.FileName);
|
|
|
|
dirlistview.Items.Add(SelectDirectoryDialog1.FileName);
|
|
|
|
|
2011-07-26 06:36:09 +00:00
|
|
|
If MediaCollection.ItemCount>0 Then
|
2011-07-21 09:39:48 +00:00
|
|
|
Begin
|
|
|
|
Main.ArtistTree.Selected := Nil;
|
|
|
|
main.update_artist_view;
|
|
|
|
update_title_view;
|
|
|
|
End;
|
|
|
|
Caption := 'Directories';
|
|
|
|
Enabled := true;
|
|
|
|
End;
|
|
|
|
End;
|
|
|
|
|
|
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
|
|
Procedure Tdirwin.removeClick(Sender: TObject);
|
|
|
|
|
|
|
|
Var removedir: string;
|
|
|
|
i: integer;
|
|
|
|
Begin
|
|
|
|
|
|
|
|
removedir := dirlistview.Items[dirlistview.ItemIndex];
|
|
|
|
If removedir[length(removedir)]=DirectorySeparator Then delete(removedir,length(removedir), 1);
|
|
|
|
i := 0;
|
|
|
|
|
|
|
|
Repeat
|
|
|
|
Begin
|
|
|
|
If pos(removedir, ExtractFileDir(MediaCollection.items[i].path))=1 Then
|
|
|
|
Begin
|
|
|
|
MediaCollection.remove(i);
|
|
|
|
dec(i);
|
|
|
|
End;
|
|
|
|
inc(i);
|
|
|
|
End;
|
|
|
|
Until i>=MediaCollection.ItemCount;
|
|
|
|
MediaCollection.DirList.Delete(dirlistview.ItemIndex);
|
|
|
|
dirlistview.Items.Delete(dirlistview.ItemIndex);
|
|
|
|
|
|
|
|
Main.ArtistTree.Selected := Nil;
|
|
|
|
main.update_artist_view;
|
|
|
|
update_title_view;
|
|
|
|
End;
|
|
|
|
|
|
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
|
|
Procedure Tdirwin.rescanClick(Sender: TObject);
|
|
|
|
|
|
|
|
Var rescandir: string;
|
|
|
|
i, n: integer;
|
|
|
|
Begin
|
|
|
|
Main.clear_listClick(nil);
|
2011-07-26 06:36:09 +00:00
|
|
|
|
2011-07-21 09:39:48 +00:00
|
|
|
For n:= 0 To dirlistview.Items.Count-1 Do
|
|
|
|
Begin
|
|
|
|
If dirlistview.Selected[n] Then
|
|
|
|
Begin
|
2011-07-26 06:36:09 +00:00
|
|
|
rescandir := ExcludeTrailingPathDelimiter(dirlistview.Items[n]);
|
2011-07-21 09:39:48 +00:00
|
|
|
dirlistview.show;
|
|
|
|
i := 0;
|
|
|
|
Repeat
|
|
|
|
Begin
|
|
|
|
If pos(rescandir, ExtractFileDir(MediaCollection.items[i].path))=1 Then
|
|
|
|
Begin
|
|
|
|
MediaCollection.remove(i);
|
|
|
|
dec(i);
|
|
|
|
End;
|
|
|
|
inc(i);
|
|
|
|
End;
|
|
|
|
Until i>=MediaCollection.ItemCount;
|
|
|
|
MediaCollection.DirList.Delete(n);
|
|
|
|
Caption := 'Please wait... Scanning...';
|
|
|
|
Enabled := false;
|
|
|
|
main.update_artist_view;
|
|
|
|
update_title_view;
|
|
|
|
Application.ProcessMessages;
|
|
|
|
MediaCollection.add_directory(rescandir);
|
2011-07-26 06:36:09 +00:00
|
|
|
|
2011-07-21 09:39:48 +00:00
|
|
|
End;
|
|
|
|
|
2011-07-26 06:36:09 +00:00
|
|
|
If MediaCollection.ItemCount>0 Then
|
2011-07-21 09:39:48 +00:00
|
|
|
Begin
|
|
|
|
Main.ArtistTree.Selected := Nil;
|
|
|
|
main.update_artist_view;
|
|
|
|
update_title_view;
|
|
|
|
End;
|
|
|
|
Caption := 'Directories';
|
|
|
|
Enabled := true;
|
|
|
|
End;
|
|
|
|
End;
|
|
|
|
|
|
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
|
|
Procedure Tdirwin.rescanallClick(Sender: TObject);
|
|
|
|
|
|
|
|
Var i: integer;
|
|
|
|
Begin
|
|
|
|
For i:= 0 To dirlistview.Items.Count-1 Do
|
|
|
|
dirlistview.Selected[i] := true;
|
|
|
|
rescanClick(Nil);
|
|
|
|
End;
|
|
|
|
|
|
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
|
|
Procedure Tdirwin.Button1Click(Sender: TObject);
|
|
|
|
Begin
|
|
|
|
Close;
|
|
|
|
End;
|
|
|
|
|
|
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
|
|
|
initialization
|
|
|
|
{$I directories.lrs}
|
|
|
|
|
|
|
|
End.
|