UPD: Finish TestArchive operation

This commit is contained in:
Alexander Koblov 2010-02-03 21:41:08 +00:00
commit 60a6ec5fc5
4 changed files with 58 additions and 25 deletions

View file

@ -8,7 +8,7 @@
contributors:
Copyright (C) 2008-2009 Koblov Alexander (Alexx2000@mail.ru)
Copyright (C) 2008-2010 Koblov Alexander (Alexx2000@mail.ru)
}
unit fFileOpDlg;
@ -67,11 +67,13 @@ type
procedure InitializeDeleteOperation(Operation: TFileSourceOperation);
procedure InitializeWipeOperation(Operation: TFileSourceOperation);
procedure InitializeCalcChecksumOperation(Operation: TFileSourceOperation);
procedure InitializeTestArchiveOperation(Operation: TFileSourceOperation);
procedure UpdateCopyOperation(Operation: TFileSourceOperation);
procedure UpdateMoveOperation(Operation: TFileSourceOperation);
procedure UpdateDeleteOperation(Operation: TFileSourceOperation);
procedure UpdateWipeOperation(Operation: TFileSourceOperation);
procedure UpdateCalcChecksumOperation(Operation: TFileSourceOperation);
procedure UpdateTestArchiveOperation(Operation: TFileSourceOperation);
public
// Change to override later.
@ -93,6 +95,7 @@ uses
uFileSourceDeleteOperation,
uFileSourceWipeOperation,
uFileSourceCalcChecksumOperation,
uFileSourceTestArchiveOperation,
uFileSourceOperationMessageBoxesUI;
procedure TfrmFileOp.btnCancelClick(Sender: TObject);
@ -162,6 +165,8 @@ begin
InitializeWipeOperation(Operation);
fsoCalcChecksum:
InitializeCalcChecksumOperation(Operation);
fsoTestArchive:
InitializeTestArchiveOperation(Operation);
else
begin
@ -257,6 +262,8 @@ begin
UpdateWipeOperation(Operation);
fsoCalcChecksum:
UpdateCalcChecksumOperation(Operation);
fsoTestArchive:
UpdateTestArchiveOperation(Operation);
else
begin
@ -389,6 +396,12 @@ begin
lblFrom.Visible := False;
end;
procedure TfrmFileOp.InitializeTestArchiveOperation(Operation: TFileSourceOperation);
begin
Caption := rsDlgTest;
InitializeControls([fodl_from_lbl, fodl_to_lbl, fodl_first_pb, fodl_second_pb]);
end;
procedure TfrmFileOp.UpdateCopyOperation(Operation: TFileSourceOperation);
var
CopyOperation: TFileSourceCopyOperation;
@ -480,6 +493,25 @@ begin
end;
end;
procedure TfrmFileOp.UpdateTestArchiveOperation(Operation: TFileSourceOperation);
var
TestArchiveOperation: TFileSourceTestArchiveOperation;
TestArchiveStatistics: TFileSourceTestArchiveOperationStatistics;
begin
TestArchiveOperation := Operation as TFileSourceTestArchiveOperation;
TestArchiveStatistics := TestArchiveOperation.RetrieveStatistics;
with TestArchiveStatistics do
begin
lblFileNameFrom.Caption := ArchiveFile;
lblFileNameTo.Caption := CurrentFile;
SetProgress(pbFirst, CurrentFileDoneBytes, CurrentFileTotalBytes);
SetProgress(pbSecond, DoneBytes, TotalBytes);
SetSpeedAndTime(Operation, RemainingTime, cnvFormatFileSize(BytesPerSecond));
end;
end;
procedure TfrmFileOp.ToggleProgressBarStyle;
begin
if (pbFirst.Style = pbstMarquee) and (pbSecond.Style = pbstMarquee) then

View file

@ -14,32 +14,32 @@ function TestArchive(aFileView: TFileView; aFiles: TFiles): Boolean;
implementation
uses
fFileOpDlg,
uShowMsg,
uLng,
uFileSource,
uArchiveFileSource,
uWcxArchiveFileSource,
uFileSystemFileSource,
uFileSourceOperation,
uFileSourceTestArchiveOperation,
uFileSourceOperationTypes,
uOperationsManager;
fFileOpDlg,
uShowMsg,
uLng,
uFileSource,
uArchiveFileSource,
uWcxArchiveFileSource,
uFileSystemFileSource,
uFileSourceOperation,
uFileSourceTestArchiveOperation,
uFileSourceOperationTypes,
uOperationsManager;
function TestArchive(aFileView: TFileView; aFiles: TFiles): Boolean;
var
I: Integer;
FilesToTest: TFiles;
Operation: TFileSourceOperation;
FilesToTest: TFiles = nil;
Operation: TFileSourceOperation = nil;
OperationHandle: TOperationHandle;
ProgressDialog: TfrmFileOp;
ProgressDialog: TfrmFileOp = nil;
ArchiveFileSource: IArchiveFileSource;
begin
try
// if in archive
if aFileView.FileSource.IsClass(TArchiveFileSource) then
begin
FilesToTest := aFiles;
FilesToTest := aFiles.Clone;
if fsoTestArchive in aFileView.FileSource.GetOperationsTypes then
begin
Operation := aFileView.FileSource.CreateTestArchiveOperation(FilesToTest);

View file

@ -178,7 +178,6 @@ procedure TWcxArchiveTestArchiveOperation.MainExecute;
var
ArcHandle: TArcHandle;
Header: TWCXHeader;
TargetFileName: String;
OpenResult: Longint;
iResult: Integer;
Files: TFiles = nil;
@ -238,9 +237,9 @@ begin
if iResult <> E_SUCCESS then
begin
ShowError(Format(rsMsgLogError + rsMsgLogExtract,
ShowError(Format(rsMsgLogError + rsMsgLogTest,
[FWcxArchiveFileSource.ArchiveFileName + PathDelim +
Header.FileName + ' -> ' + TargetFileName +
Header.FileName +
' - ' + GetErrorMsg(iResult)]), [log_arc_op]);
// User aborted operation.
@ -249,21 +248,21 @@ begin
end // Error
else
begin
LogMessage(Format(rsMsgLogSuccess + rsMsgLogExtract,
LogMessage(Format(rsMsgLogSuccess + rsMsgLogTest,
[FWcxArchiveFileSource.ArchiveFileName + PathDelim +
Header.FileName +' -> ' + TargetFileName]), [log_arc_op], lmtSuccess);
Header.FileName]), [log_arc_op], lmtSuccess);
end; // Success
end // Extract
else // Skip
begin
iResult := WcxModule.ProcessFile(ArcHandle, PK_SKIP, nil, nil);
iResult := WcxModule.WcxProcessFile(ArcHandle, PK_SKIP, EmptyStr, EmptyStr);
//Check for errors
if iResult <> E_SUCCESS then
begin
ShowError(Format(rsMsgLogError + rsMsgLogExtract,
ShowError(Format(rsMsgLogError + rsMsgLogTest,
[FWcxArchiveFileSource.ArchiveFileName + PathDelim +
Header.FileName + ' -> ' + TargetFileName +
Header.FileName +
' - ' + GetErrorMsg(iResult)]), [log_arc_op]);
end;
end; // Skip

View file

@ -139,6 +139,7 @@ resourcestring
rsMsgLogRmDir = 'Remove directory %s';
rsMsgLogPack = 'Pack to file %s';
rsMsgLogExtract = 'Extract file %s';
rsMsgLogTest = 'Test file integrity %s';
rsQuickSearchPanel = 'Find:';
rsQuickFilterPanel = 'Filter:';
@ -150,6 +151,7 @@ resourcestring
rsDlgMv = 'Move file(s)';
rsDlgPack = 'Packing...';
rsDlgExtract = 'Extracting...';
rsDlgTest = 'Testing...';
rsDlgDeleting = 'Deleting';
rsDlgCheckSumCalc = 'Calculate check sum...';
rsDlgCheckSumVerify = 'Verify check sum...';
@ -396,4 +398,4 @@ finalization
if Assigned(LRSTranslator) then
FreeAndNil(LRSTranslator);
end.
end.