void CApp::CalculateCrc() { int srcPanelIndex = GetFocusedPanelIndex(); CPanel &srcPanel = Panels[srcPanelIndex]; if (!srcPanel.IsFsOrDrivesFolder()) { srcPanel.MessageBoxErrorLang(IDS_OPERATION_IS_NOT_SUPPORTED, 0x03020208); return; } CRecordVector<UInt32> indices; srcPanel.GetOperatedItemIndices(indices); if (indices.IsEmpty()) return; { CThreadCrc t; for (int i = 0; i < indices.Size(); i++) t.Enumerator.FileNames.Add(us2fs(srcPanel.GetItemRelPath(indices[i]))); t.Enumerator.BasePrefix = us2fs(srcPanel.GetFsPath()); t.Enumerator.FlatMode = GetFlatMode(); t.ProgressDialog.ShowCompressionInfo = false; UString title = LangString(IDS_CHECKSUM_CALCULATING, 0x03020710); t.ProgressDialog.MainWindow = _window; t.ProgressDialog.MainTitle = LangString(IDS_APP_TITLE, 0x03000000); t.ProgressDialog.MainAddTitle = title + UString(L' '); if (t.Create(title, _window) != S_OK) return; } RefreshTitleAlways(); }
HRESULT CContentsView::CalculateCrc2(const UString &methodName) { CContentsView &srcPanel = *this; CRecordVector<UInt32> indices; srcPanel.GetOperatedIndicesSmart(indices); if (indices.IsEmpty()) return S_OK; if (!srcPanel.Is_IO_FS_Folder()) { CCopyToOptions options; options.streamMode = true; options.showErrorMessages = true; options.hashMethods.Add(methodName); UStringVector messages; return srcPanel.CopyTo(options, indices, &messages); } #ifdef EXTERNAL_CODECS LoadGlobalCodecs(); #endif { CThreadCrc t; { UStringVector methods; methods.Add(methodName); RINOK(t.Hash.SetMethods(EXTERNAL_CODECS_VARS_G methods)); } FOR_VECTOR (i, indices) t.Enumerator.FilePaths.Add(us2fs(srcPanel.GetItemRelPath(indices[i]))); UString basePrefix = srcPanel.GetFsPath(); UString basePrefix2 = basePrefix; if (basePrefix2.Back() == ':') { int pos = basePrefix2.ReverseFind_PathSepar(); if (pos >= 0) basePrefix2.DeleteFrom(pos + 1); } t.Enumerator.BasePrefix = us2fs(basePrefix); t.Enumerator.BasePrefix_for_Open = us2fs(basePrefix2); t.Enumerator.EnterToDirs = !GetFlatMode(); t.ProgressDialog.ShowCompressionInfo = false; UString title = LangString(IDS_CHECKSUM_CALCULATING); t.ProgressDialog.MainWindow = *GetTopLevelParent(); t.ProgressDialog.MainTitle = L"7-Zip"; // LangString(IDS_APP_TITLE); t.ProgressDialog.MainAddTitle = title; t.ProgressDialog.MainAddTitle.Add_Space(); RINOK(t.Create(title, *GetTopLevelParent())); } RefreshTitle(); return S_OK; }
void CApp::CalculateCrc(const UString &methodName) { int srcPanelIndex = GetFocusedPanelIndex(); CPanel &srcPanel = Panels[srcPanelIndex]; CRecordVector<UInt32> indices; srcPanel.GetOperatedIndicesSmart(indices); if (indices.IsEmpty()) return; if (!srcPanel.IsFsOrDrivesFolder()) { CCopyToOptions options; options.streamMode = true; options.showErrorMessages = true; options.hashMethods.Add(methodName); UStringVector messages; HRESULT res = srcPanel.CopyTo(options, indices, &messages); if (res != S_OK) { if (res != E_ABORT) srcPanel.MessageBoxError(res); } return; } CCodecs *codecs = new CCodecs; #ifdef EXTERNAL_CODECS CExternalCodecs __externalCodecs; __externalCodecs.GetCodecs = codecs; __externalCodecs.GetHashers = codecs; #else CMyComPtr<IUnknown> compressCodecsInfo = codecs; #endif ThrowException_if_Error(codecs->Load()); #ifdef EXTERNAL_CODECS ThrowException_if_Error(__externalCodecs.LoadCodecs()); #endif { CThreadCrc t; { UStringVector methods; methods.Add(methodName); t.Hash.SetMethods(EXTERNAL_CODECS_VARS methods); } FOR_VECTOR (i, indices) t.Enumerator.FilePaths.Add(us2fs(srcPanel.GetItemRelPath(indices[i]))); t.Enumerator.BasePrefix = us2fs(srcPanel.GetFsPath()); t.Enumerator.EnterToDirs = !GetFlatMode(); t.ProgressDialog.ShowCompressionInfo = false; UString title = LangString(IDS_CHECKSUM_CALCULATING); t.ProgressDialog.MainWindow = _window; t.ProgressDialog.MainTitle = L"7-Zip"; // LangString(IDS_APP_TITLE); t.ProgressDialog.MainAddTitle = title + UString(L' '); if (t.Create(title, _window) != S_OK) return; } RefreshTitleAlways(); }