Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/7zip/UI/FileManager/PanelCrc.cpp')
-rw-r--r--CPP/7zip/UI/FileManager/PanelCrc.cpp52
1 files changed, 41 insertions, 11 deletions
diff --git a/CPP/7zip/UI/FileManager/PanelCrc.cpp b/CPP/7zip/UI/FileManager/PanelCrc.cpp
index 227c4533..7b918a02 100644
--- a/CPP/7zip/UI/FileManager/PanelCrc.cpp
+++ b/CPP/7zip/UI/FileManager/PanelCrc.cpp
@@ -139,18 +139,44 @@ DWORD CDirEnumerator::GetNextFile(NFind::CFileInfo &fi, bool &filled, FString &r
class CThreadCrc: public CProgressThreadVirt
{
+ bool ResultsWereShown;
+ bool WasFinished;
+
HRESULT ProcessVirt();
+ virtual void ProcessWasFinished_GuiVirt();
public:
CDirEnumerator Enumerator;
CHashBundle Hash;
+ FString FirstFilePath;
void SetStatus(const UString &s);
void AddErrorMessage(DWORD systemError, const FChar *name);
+ void ShowFinalResults(HWND hwnd);
+
+ CThreadCrc():
+ ResultsWereShown(false),
+ WasFinished(false)
+ {}
};
+void CThreadCrc::ShowFinalResults(HWND hwnd)
+{
+ if (WasFinished)
+ if (!ResultsWereShown)
+ {
+ ResultsWereShown = true;
+ ShowHashResults(Hash, fs2us(FirstFilePath), hwnd);
+ }
+}
+
+void CThreadCrc::ProcessWasFinished_GuiVirt()
+{
+ ShowFinalResults(*this);
+}
+
void CThreadCrc::AddErrorMessage(DWORD systemError, const FChar *name)
{
- ProgressDialog.Sync.AddError_Code_Name(systemError, fs2us(Enumerator.BasePrefix + name));
+ Sync.AddError_Code_Name(systemError, fs2us(Enumerator.BasePrefix + name));
Hash.NumErrors++;
}
@@ -162,7 +188,7 @@ void CThreadCrc::SetStatus(const UString &s2)
s.Add_Space_if_NotEmpty();
s += fs2us(Enumerator.BasePrefix);
}
- ProgressDialog.Sync.Set_Status(s);
+ Sync.Set_Status(s);
}
HRESULT CThreadCrc::ProcessVirt()
@@ -173,7 +199,7 @@ HRESULT CThreadCrc::ProcessVirt()
if (!buf.Allocate(kBufSize))
return E_OUTOFMEMORY;
- CProgressSync &sync = ProgressDialog.Sync;
+ CProgressSync &sync = Sync;
SetStatus(LangString(IDS_SCANNING));
@@ -233,7 +259,6 @@ HRESULT CThreadCrc::ProcessVirt()
Enumerator.Init();
FString tempPath;
- FString firstFilePath;
bool isFirstFile = true;
UInt64 errorsFilesSize = 0;
@@ -264,7 +289,7 @@ HRESULT CThreadCrc::ProcessVirt()
}
if (isFirstFile)
{
- firstFilePath = path;
+ FirstFilePath = path;
isFirstFile = false;
}
sync.Set_FilePath(fs2us(path));
@@ -303,12 +328,13 @@ HRESULT CThreadCrc::ProcessVirt()
SetStatus(L"");
CProgressMessageBoxPair &pair = GetMessagePair(Hash.NumErrors != 0);
- AddHashBundleRes(pair.Message, Hash, fs2us(firstFilePath));
+ WasFinished = true;
LangString(IDS_CHECKSUM_INFORMATION, pair.Title);
return S_OK;
}
+
HRESULT CApp::CalculateCrc2(const UString &methodName)
{
unsigned srcPanelIndex = GetFocusedPanelIndex();
@@ -338,6 +364,7 @@ HRESULT CApp::CalculateCrc2(const UString &methodName)
{
CThreadCrc t;
+
{
UStringVector methods;
methods.Add(methodName);
@@ -360,17 +387,20 @@ HRESULT CApp::CalculateCrc2(const UString &methodName)
t.Enumerator.EnterToDirs = !GetFlatMode();
- t.ProgressDialog.ShowCompressionInfo = false;
+ t.ShowCompressionInfo = false;
UString title = LangString(IDS_CHECKSUM_CALCULATING);
- t.ProgressDialog.MainWindow = _window;
- t.ProgressDialog.MainTitle = "7-Zip"; // LangString(IDS_APP_TITLE);
- t.ProgressDialog.MainAddTitle = title;
- t.ProgressDialog.MainAddTitle.Add_Space();
+ t.MainWindow = _window;
+ t.MainTitle = "7-Zip"; // LangString(IDS_APP_TITLE);
+ t.MainAddTitle = title;
+ t.MainAddTitle.Add_Space();
RINOK(t.Create(title, _window));
+
+ t.ShowFinalResults(_window);
}
+
RefreshTitleAlways();
return S_OK;
}