Ga naar de hoofdnavigatie Ga naar de hoofdinhoud Ga naar de voettekst van de pagina
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.