unit StatusForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, System.Types, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.DBCtrls, Vcl.ExtCtrls, Vcl.ComCtrls,
Util, StrUtils;
type
TfrmStatus = class(TForm)
Panel1: TPanel;
ProgressBar1: TProgressBar;
ProgressBar2: TProgressBar;
Label6: TLabel;
lblState: TLabel;
Label7: TLabel;
Panel2: TPanel;
btnOk: TButton;
btnCancel: TButton;
Panel3: TPanel;
lblFilesDetected: TLabel;
lblFilesProcessed: TLabel;
lblFilesMoved: TLabel;
lblDuplicateFiles: TLabel;
lblProcessingFile: TLabel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label8: TLabel;
Label9: TLabel;
procedure FormCreate(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
FTotalFilesDetected: integer;
FState: Tstate;
FProcessingFile: string;
FFileAction: TFileAction;
function GetFilesDetected: integer;
procedure SetFilesDetected(const Value: integer);
function GetFilesProcessed: integer;
procedure SetFilesProcessed(const Value: integer);
function GetFilesMoved: integer;
procedure SetFilesMoved(const Value: integer);
function GetDuplicateFiles: integer;
procedure SetDuplicateFiles(const Value: integer);
function GetProcessingFile: string;
procedure SetProcessingFile(const Value: string);
function GetProgress: integer;
procedure SetProgress(const Value: integer);
procedure SetState(const Value: TState);
procedure SetFileAction(Action: TFileAction);
{ Private declarations }
public
{ Public declarations }
Cancel: bool;
property FilesDetected: integer read GetFilesDetected write SetFilesDetected;
property FilesProcessed: integer read GetFilesProcessed write SetFilesProcessed;
property FilesMoved: integer read GetFilesMoved write SetFilesMoved;
property DuplicateFiles: integer read GetDuplicateFiles write SetDuplicateFiles;
property ProcessingFile: string read GetProcessingFile write SetProcessingFile;
property Progress: integer read GetProgress write SetProgress;
property TotalFilesDetected: integer read FTotalFilesDetected write FTotalFilesDetected;
property State: TState read FState write SetState;
property FileAction: TFileAction read FFileAction write SetFileAction;
end;
implementation
{$R *.dfm}
{ TForm2 }
procedure TfrmStatus.SetFileAction(Action: TFileAction);
begin
FFileAction:= Action;
Label3.Caption:= FileActionStr[Action];
end;
procedure TfrmStatus.btnCancelClick(Sender: TObject);
begin
Cancel:= TRUE;
end;
procedure TfrmStatus.FormCreate(Sender: TObject);
begin
lblFilesDetected.Caption:= '0';
lblFilesProcessed.Caption:= '0';
lblFilesMoved.Caption:= '0';
lblDuplicateFiles.Caption:= '0';
lblProcessingFile.Caption:= '';
btnOk.Enabled:= FALSE;
Cancel:= FALSE;
end;
function TfrmStatus.GetProgress: integer;
begin
Result:= ProgressBar1.Position;
end;
procedure TfrmStatus.SetProgress(const Value: integer);
begin
ProgressBar1.Position:= Round(Value / FTotalFilesDetected * 100);
case FState of
stNone: ;
stScan: ProgressBar2.Position:= Round(Value / FTotalFilesDetected * 20);
stGetExif: ProgressBar2.Position:= 20 + Round(Value / FTotalFilesDetected * 80);
stRestructure: ProgressBar2.Position:= Round(Value / FTotalFilesDetected * 100);
stCompleted: begin
ProgressBar1.Position:= 100;
ProgressBar2.Position:= 100;
end;
end;
Label8.Caption:= ProgressBar1.Position.ToString + '%';
Label9.Caption:= ProgressBar2.Position.ToString + '%';
end;
function TfrmStatus.GetDuplicateFiles: integer;
begin
Result:= StrToInt(lblDuplicateFiles.Caption);
end;
function TfrmStatus.GetFilesDetected: integer;
begin
Result:= StrToInt(lblFilesDetected.Caption);
end;
function TfrmStatus.GetFilesMoved: integer;
begin
Result:= StrToInt(lblFilesMoved.Caption);
end;
function TfrmStatus.GetFilesProcessed: integer;
begin
Result:= StrToInt(lblFilesProcessed.Caption);
end;
function TfrmStatus.GetProcessingFile: String;
begin
Result:= FProcessingFile;
end;
procedure TfrmStatus.SetDuplicateFiles(const Value: integer);
begin
lblDuplicateFiles.Caption:= Value.ToString;
end;
procedure TfrmStatus.SetFilesDetected(const Value: integer);
begin
lblFilesDetected.Caption:= Value.ToString;
end;
procedure TfrmStatus.SetFilesMoved(const Value: integer);
begin
lblFilesMoved.Caption:= Value.ToString;
end;
procedure TfrmStatus.SetFilesProcessed(const Value: integer);
begin
SetProgress(Value);
lblFilesProcessed.Caption:= Value.ToString;
end;
procedure TfrmStatus.SetProcessingFile(const Value: string);
begin
lblProcessingFile.Caption:= TruncateFileName(Value, 100);
FProcessingFile:= Value;
end;
procedure TfrmStatus.SetState(const Value: TState);
begin
FState:= Value;
lblState.Caption:= StateStr[FState];
end;
end.