mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-28 10:02:14 +00:00
UPD: Finish TestArchive operation
This commit is contained in:
parent
d521ff20b3
commit
60a6ec5fc5
4 changed files with 58 additions and 25 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue