Index: src/ch/StatusDlg.cpp =================================================================== diff -u -r4797e4b6b266900bfdcdf4ca6eda47c216ad9db1 -rdb26c9ac6945d5c754c3460dd55bd6d53e2c9e7e --- src/ch/StatusDlg.cpp (.../StatusDlg.cpp) (revision 4797e4b6b266900bfdcdf4ca6eda47c216ad9db1) +++ src/ch/StatusDlg.cpp (.../StatusDlg.cpp) (revision db26c9ac6945d5c754c3460dd55bd6d53e2c9e7e) @@ -18,17 +18,15 @@ ***************************************************************************/ #include "stdafx.h" #include "ch.h" -#include "../libchcore/TTaskManager.h" -#include "../libchcore/TTask.h" #include "resource.h" #include "StatusDlg.h" #include "BufferSizeDlg.h" #include "StringHelpers.h" #include "StaticEx.h" #include "Structs.h" -#include "../libchcore/TTaskStatsSnapshot.h" -#include "../libchcore/TTaskManagerStatsSnapshot.h" #include "CfgProperties.h" +#include "../libchengine/TTaskManager.h" +#include "../libchengine/TLocalFilesystem.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -41,10 +39,10 @@ ///////////////////////////////////////////////////////////////////////////// // CStatusDlg dialog -CStatusDlg::CStatusDlg(chcore::TTaskManager* pTasks, CWnd* pParent /*=nullptr*/) +CStatusDlg::CStatusDlg(chengine::TTaskManager* pTasks, CWnd* pParent /*=nullptr*/) : ictranslate::CLanguageDialog(IDD_STATUS_DIALOG, pParent, &m_bLock), - m_spTaskMgrStats(new chcore::TTaskManagerStatsSnapshot), - m_pTasks(pTasks) + m_pTasks(pTasks), + m_spTaskMgrStats(new chengine::TTaskManagerStatsSnapshot) { RegisterStaticExControl(AfxGetInstanceHandle()); } @@ -114,25 +112,25 @@ lvc.mask=LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; lvc.fmt=LVCFMT_LEFT; - lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSTATUS_STRING); /*_T("Status")*/; + lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSTATUS_STRING); lvc.cchTextMax = lstrlen(lvc.pszText); lvc.cx = static_cast(0.27*iWidth); lvc.iSubItem=-1; m_ctlStatusList.InsertColumn(1, &lvc); - lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSOURCE_STRING);/*_T("File");*/ + lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSOURCE_STRING); lvc.cchTextMax = lstrlen(lvc.pszText); lvc.cx = static_cast(0.3*iWidth); lvc.iSubItem=0; m_ctlStatusList.InsertColumn(2, &lvc); - lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNDESTINATION_STRING);/*_T("To:");*/ + lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNDESTINATION_STRING); lvc.cchTextMax = lstrlen(lvc.pszText); lvc.cx = static_cast(0.27*iWidth); lvc.iSubItem=1; m_ctlStatusList.InsertColumn(3, &lvc); - lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNPROGRESS_STRING);/*_T("Progress");*/ + lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNPROGRESS_STRING); lvc.cchTextMax = lstrlen(lvc.pszText); lvc.cx = static_cast(0.15*iWidth); lvc.iSubItem=2; @@ -162,22 +160,48 @@ RefreshStatus(); // select needed element + SelectInitialTask(); + + // refresh data timer + SetTimer(777, GetPropValue(GetConfig()), nullptr); + + return TRUE; +} + +void CStatusDlg::SelectInitialTask() +{ size_t stIndex = 0; + bool bSelected = false; while(stIndex < m_pTasks->GetSize()) { - if(m_pTasks->GetAt(stIndex) == m_spInitialSelection) + chengine::TTaskPtr spTask = m_pTasks->GetAt(stIndex); + if(m_spInitialSelection) { - m_ctlStatusList.SetItemState(boost::numeric_cast(stIndex), LVIS_SELECTED, LVIS_SELECTED); - break; + if(spTask == m_spInitialSelection) + { + m_ctlStatusList.SetItemState(boost::numeric_cast(stIndex), LVIS_SELECTED, LVIS_SELECTED); + bSelected = true; + break; + } } + else + { + if(spTask->IsRunning()) + { + m_ctlStatusList.SetItemState(boost::numeric_cast(stIndex), LVIS_SELECTED, LVIS_SELECTED); + bSelected = true; + break; + } + } stIndex++; } - // refresh data timer - SetTimer(777, GetPropValue(GetConfig()), nullptr); - - return TRUE; + if(!bSelected && m_pTasks->GetSize() > 0) + { + stIndex = m_pTasks->GetSize() - 1; + m_ctlStatusList.SetItemState(boost::numeric_cast(stIndex), LVIS_SELECTED, LVIS_SELECTED); + } } void CStatusDlg::EnableControls(bool bEnable) @@ -233,38 +257,38 @@ void CStatusDlg::OnSetBuffersizeButton() { - chcore::TTaskPtr spTask = GetSelectedItemPointer(); + chengine::TTaskPtr spTask = GetSelectedItemPointer(); if(!spTask) return; int iCurrentBufferIndex = 0; - chcore::TTaskStatsSnapshotPtr spTaskStats = m_spTaskMgrStats->GetTaskStatsForTaskID(boost::numeric_cast(GetSelectedItemSessionUniqueID())); + chengine::TTaskStatsSnapshotPtr spTaskStats = m_spTaskMgrStats->GetTaskStatsForTaskID(boost::numeric_cast(GetSelectedItemSessionUniqueID())); if(spTaskStats) { - chcore::TSubTaskStatsSnapshotPtr spSubTaskStats = spTaskStats->GetSubTasksStats().GetCurrentSubTaskSnapshot(); + chengine::TSubTaskStatsSnapshotPtr spSubTaskStats = spTaskStats->GetSubTasksStats().GetCurrentSubTaskSnapshot(); if(spSubTaskStats) iCurrentBufferIndex = spSubTaskStats->GetCurrentBufferIndex(); } - chcore::TBufferSizes tBufferSizes; + chengine::TBufferSizes tBufferSizes; spTask->GetBufferSizes(tBufferSizes); - CBufferSizeDlg dlg(&tBufferSizes, (chcore::TBufferSizes::EBufferType)iCurrentBufferIndex); + CBufferSizeDlg dlg(&tBufferSizes, (chengine::TBufferSizes::EBufferType)iCurrentBufferIndex); if(dlg.DoModal() == IDOK) spTask->SetBufferSizes(dlg.GetBufferSizes()); } -chcore::TTaskPtr CStatusDlg::GetSelectedItemPointer() +chengine::TTaskPtr CStatusDlg::GetSelectedItemPointer() { // returns ptr to a TTask for a given element in listview if(m_ctlStatusList.GetSelectedCount() == 1) { POSITION pos = m_ctlStatusList.GetFirstSelectedItemPosition(); int nPos = m_ctlStatusList.GetNextSelectedItem(pos); - return m_pTasks->GetTaskByTaskID(boost::numeric_cast(m_ctlStatusList.GetItemData(nPos))); + return m_pTasks->GetTaskByTaskID(boost::numeric_cast(m_ctlStatusList.GetItemData(nPos))); } - return chcore::TTaskPtr(); + return chengine::TTaskPtr(); } size_t CStatusDlg::GetSelectedItemSessionUniqueID() @@ -295,12 +319,12 @@ void CStatusDlg::ApplyButtonsState() { // remember ptr to TTask - chcore::TTaskPtr spSelectedTask = GetSelectedItemPointer(); + chengine::TTaskPtr spSelectedTask = GetSelectedItemPointer(); // set status of buttons pause/resume/cancel if (spSelectedTask != nullptr) { - if(spSelectedTask->GetTaskState() == chcore::eTaskState_LoadError) + if(spSelectedTask->GetTaskState() == chengine::eTaskState_LoadError) { GetDlgItem(IDC_SHOW_LOG_BUTTON)->EnableWindow(true); GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(false); @@ -315,7 +339,7 @@ GetDlgItem(IDC_SHOW_LOG_BUTTON)->EnableWindow(true); GetDlgItem(IDC_DELETE_BUTTON)->EnableWindow(true); - if (spSelectedTask->GetTaskState() == chcore::eTaskState_Finished || spSelectedTask->GetTaskState() == chcore::eTaskState_Cancelled) + if (spSelectedTask->GetTaskState() == chengine::eTaskState_Finished || spSelectedTask->GetTaskState() == chengine::eTaskState_Cancelled) { GetDlgItem(IDC_CANCEL_BUTTON)->EnableWindow(false); GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(false); @@ -324,15 +348,15 @@ else { // pause/resume - if (spSelectedTask->GetTaskState() == chcore::eTaskState_Paused) + if (spSelectedTask->GetTaskState() == chengine::eTaskState_Paused) { GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(false); GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(true); } else { GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(true); - if (spSelectedTask->GetTaskState() == chcore::eTaskState_Waiting) + if (spSelectedTask->GetTaskState() == chengine::eTaskState_Waiting) GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(true); else GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(false); @@ -404,7 +428,7 @@ if (LOWORD(wParam) >= ID_POPUP_TIME_CRITICAL && LOWORD(wParam) <= ID_POPUP_IDLE) { // processing priority - chcore::TTaskPtr spSelectedTask = GetSelectedItemPointer(); + chengine::TTaskPtr spSelectedTask = GetSelectedItemPointer(); if(spSelectedTask == nullptr) return ictranslate::CLanguageDialog::OnCommand(wParam, lParam); @@ -444,7 +468,7 @@ else if(LOWORD(wParam) == ID_POPUP_RESET_APPLY_TO_ALL) { // processing priority - chcore::TTaskPtr spSelectedTask = GetSelectedItemPointer(); + chengine::TTaskPtr spSelectedTask = GetSelectedItemPointer(); if(spSelectedTask == nullptr) return ictranslate::CLanguageDialog::OnCommand(wParam, lParam); @@ -457,7 +481,7 @@ void CStatusDlg::OnPauseButton() { - chcore::TTaskPtr spTask = GetSelectedItemPointer(); + chengine::TTaskPtr spTask = GetSelectedItemPointer(); if(spTask) { TRACE("PauseProcessing call...\n"); @@ -469,10 +493,10 @@ void CStatusDlg::OnResumeButton() { - chcore::TTaskPtr spTask = GetSelectedItemPointer(); + chengine::TTaskPtr spTask = GetSelectedItemPointer(); if(spTask) { - if(spTask->GetTaskState() == chcore::eTaskState_Waiting) + if(spTask->GetTaskState() == chengine::eTaskState_Waiting) spTask->SetForceFlag(); else spTask->ResumeProcessing(); @@ -483,7 +507,7 @@ void CStatusDlg::OnCancelButton() { - chcore::TTaskPtr spTask = GetSelectedItemPointer(); + chengine::TTaskPtr spTask = GetSelectedItemPointer(); if(spTask) { spTask->CancelProcessing(); @@ -493,7 +517,7 @@ void CStatusDlg::OnRestartButton() { - chcore::TTaskPtr spTask = GetSelectedItemPointer(); + chengine::TTaskPtr spTask = GetSelectedItemPointer(); if(spTask) { spTask->RestartProcessing(); @@ -503,15 +527,15 @@ void CStatusDlg::OnDeleteButton() { - chcore::TTaskPtr spTask = GetSelectedItemPointer(); + chengine::TTaskPtr spTask = GetSelectedItemPointer(); if(spTask) { - chcore::ETaskCurrentState eTaskState = spTask->GetTaskState(); + chengine::ETaskCurrentState eTaskState = spTask->GetTaskState(); switch(eTaskState) { - case chcore::eTaskState_Finished: - case chcore::eTaskState_Cancelled: - case chcore::eTaskState_LoadError: + case chengine::eTaskState_Finished: + case chengine::eTaskState_Cancelled: + case chengine::eTaskState_LoadError: break; // allow processing as-is default: @@ -571,11 +595,11 @@ break; case VK_SPACE: { - chcore::TTaskPtr spTask = GetSelectedItemPointer(); + chengine::TTaskPtr spTask = GetSelectedItemPointer(); if (!spTask) return; - if(spTask->GetTaskState() == chcore::eTaskState_Paused) + if(spTask->GetTaskState() == chengine::eTaskState_Paused) OnResumeButton(); else OnPauseButton(); @@ -586,20 +610,20 @@ *pResult = 0; } -int CStatusDlg::GetImageFromStatus(chcore::ETaskCurrentState eState) +int CStatusDlg::GetImageFromStatus(chengine::ETaskCurrentState eState) { switch(eState) { - case chcore::eTaskState_Cancelled: + case chengine::eTaskState_Cancelled: return 4; - case chcore::eTaskState_Finished: + case chengine::eTaskState_Finished: return 3; - case chcore::eTaskState_Waiting: + case chengine::eTaskState_Waiting: return 5; - case chcore::eTaskState_Paused: + case chengine::eTaskState_Paused: return 2; - case chcore::eTaskState_Error: - case chcore::eTaskState_LoadError: + case chengine::eTaskState_Error: + case chengine::eTaskState_LoadError: return 1; default: return 0; @@ -652,7 +676,7 @@ // add task info for(size_t stIndex = 0; stIndex < m_spTaskMgrStats->GetTaskStatsCount(); ++stIndex) { - chcore::TTaskStatsSnapshotPtr spTaskStats = m_spTaskMgrStats->GetTaskStatsAt(stIndex); + chengine::TTaskStatsSnapshotPtr spTaskStats = m_spTaskMgrStats->GetTaskStatsAt(stIndex); // set (update/add new) entry in the task list (on the left) SetTaskListEntry(stIndex, spTaskStats); @@ -686,6 +710,9 @@ // apply state of the resume, cancel, ... buttons ApplyButtonsState(); + + // update taskbar progress + UpdateTaskBarProgress(); } void CStatusDlg::OnSelectionChanged(NMHDR* /*pNMHDR*/, LRESULT* /*pResult*/) @@ -703,17 +730,25 @@ void CStatusDlg::OnShowLogButton() { // show log - chcore::TTaskPtr spTask = GetSelectedItemPointer(); + chengine::TTaskPtr spTask = GetSelectedItemPointer(); if(!spTask) return; - ULONG_PTR hResult = (ULONG_PTR)ShellExecute(this->m_hWnd, _T("open"), _T("notepad.exe"), spTask->GetLogPath().ToString(), nullptr, SW_SHOWNORMAL); + chcore::TSmartPath logPath = spTask->GetLogPath(); + chengine::TLocalFilesystem localFilesystem(GetLogFileData()); + if(!localFilesystem.PathExist(logPath)) + { + MsgBox(IDS_LOGFILEEMPTY_STRING, MB_OK | MB_ICONINFORMATION); + return; + } + + ULONG_PTR hResult = (ULONG_PTR)ShellExecute(this->m_hWnd, _T("open"), _T("notepad.exe"), logPath.ToString(), nullptr, SW_SHOWNORMAL); if(hResult < 32) { ictranslate::CFormat fmt(GetResManager().LoadString(IDS_SHELLEXECUTEERROR_STRING)); fmt.SetParam(_T("%errno"), hResult); fmt.SetParam(_T("%path"), spTask->GetLogPath().ToString()); - AfxMessageBox(fmt); + AfxMessageBox(fmt.ToString()); } } @@ -737,19 +772,19 @@ CString strResult; switch(iIndex) { - case chcore::TBufferSizes::eBuffer_Default: + case chengine::TBufferSizes::eBuffer_Default: strResult = GetResManager().LoadString(IDS_BSDEFAULT_STRING); break; - case chcore::TBufferSizes::eBuffer_OneDisk: + case chengine::TBufferSizes::eBuffer_OneDisk: strResult = GetResManager().LoadString(IDS_BSONEDISK_STRING); break; - case chcore::TBufferSizes::eBuffer_TwoDisks: + case chengine::TBufferSizes::eBuffer_TwoDisks: strResult = GetResManager().LoadString(IDS_BSTWODISKS_STRING); break; - case chcore::TBufferSizes::eBuffer_CD: + case chengine::TBufferSizes::eBuffer_CD: strResult = GetResManager().LoadString(IDS_BSCD_STRING); break; - case chcore::TBufferSizes::eBuffer_LAN: + case chengine::TBufferSizes::eBuffer_LAN: strResult = GetResManager().LoadString(IDS_BSLAN_STRING); break; default: @@ -785,25 +820,25 @@ lvc.mask=LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; lvc.fmt=LVCFMT_LEFT; - lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSTATUS_STRING); /*_T("Status")*/; + lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSTATUS_STRING); lvc.cchTextMax = lstrlen(lvc.pszText); lvc.cx = static_cast(0.27*iWidth); lvc.iSubItem=-1; m_ctlStatusList.InsertColumn(1, &lvc); - lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSOURCE_STRING);/*_T("File");*/ + lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSOURCE_STRING); lvc.cchTextMax = lstrlen(lvc.pszText); lvc.cx = static_cast(0.3*iWidth); lvc.iSubItem=0; m_ctlStatusList.InsertColumn(2, &lvc); - lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNDESTINATION_STRING);/*_T("To:");*/ + lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNDESTINATION_STRING); lvc.cchTextMax = lstrlen(lvc.pszText); lvc.cx = static_cast(0.27*iWidth); lvc.iSubItem=1; m_ctlStatusList.InsertColumn(3, &lvc); - lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNPROGRESS_STRING);/*_T("Progress");*/ + lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNPROGRESS_STRING); lvc.cchTextMax = lstrlen(lvc.pszText); lvc.cx = static_cast(0.15*iWidth); lvc.iSubItem=2; @@ -921,76 +956,76 @@ InitializeResizableControls(); } -CString CStatusDlg::GetStatusString(const chcore::TTaskStatsSnapshotPtr& spTaskStats) +CString CStatusDlg::GetStatusString(const chengine::TTaskStatsSnapshotPtr& spTaskStats) { CString strStatusText; // status string // first switch(spTaskStats->GetTaskState()) { - case chcore::eTaskState_Error: + case chengine::eTaskState_Error: { strStatusText = GetResManager().LoadString(IDS_STATUS_ERROR_STRING); strStatusText += _T("/"); break; } - case chcore::eTaskState_LoadError: + case chengine::eTaskState_LoadError: { strStatusText = GetResManager().LoadString(IDS_STATUS_LOADERROR_STRING); strStatusText += _T("/"); break; } - case chcore::eTaskState_Paused: + case chengine::eTaskState_Paused: { strStatusText = GetResManager().LoadString(IDS_STATUS_PAUSED_STRING); strStatusText += _T("/"); break; } - case chcore::eTaskState_Finished: + case chengine::eTaskState_Finished: { strStatusText = GetResManager().LoadString(IDS_STATUS_FINISHED_STRING); strStatusText += _T("/"); break; } - case chcore::eTaskState_Waiting: + case chengine::eTaskState_Waiting: { strStatusText = GetResManager().LoadString(IDS_STATUS_WAITING_STRING); strStatusText += _T("/"); break; } - case chcore::eTaskState_Cancelled: + case chengine::eTaskState_Cancelled: { strStatusText = GetResManager().LoadString(IDS_STATUS_CANCELLED_STRING); strStatusText += _T("/"); break; } - case chcore::eTaskState_None: + case chengine::eTaskState_None: { strStatusText = GetResManager().LoadString(IDS_STATUS_INITIALIZING_STRING); strStatusText += _T("/"); break; } - case chcore::eTaskState_Processing: + case chengine::eTaskState_Processing: break; default: BOOST_ASSERT(false); // not implemented state } // second part - chcore::ESubOperationType eSubOperationType = chcore::eSubOperation_None; - chcore::TSubTaskStatsSnapshotPtr spSubtaskStats = spTaskStats->GetSubTasksStats().GetCurrentSubTaskSnapshot(); + chengine::ESubOperationType eSubOperationType = chengine::eSubOperation_None; + chengine::TSubTaskStatsSnapshotPtr spSubtaskStats = spTaskStats->GetSubTasksStats().GetCurrentSubTaskSnapshot(); if(spSubtaskStats) eSubOperationType = spSubtaskStats->GetSubOperationType(); - if(eSubOperationType == chcore::eSubOperation_Deleting) + if(eSubOperationType == chengine::eSubOperation_Deleting) strStatusText += GetResManager().LoadString(IDS_STATUS_DELETING_STRING); - else if(eSubOperationType == chcore::eSubOperation_Scanning) + else if(eSubOperationType == chengine::eSubOperation_Scanning) strStatusText += GetResManager().LoadString(IDS_STATUS_SEARCHING_STRING); - else if(eSubOperationType == chcore::eSubOperation_FastMove) + else if(eSubOperationType == chengine::eSubOperation_FastMove) strStatusText += GetResManager().LoadString(IDS_STATUS_FASTMOVE_STRING); - else if(spTaskStats->GetOperationType() == chcore::eOperation_Copy) + else if(spTaskStats->GetOperationType() == chengine::eOperation_Copy) strStatusText += GetResManager().LoadString(IDS_STATUS_COPYING_STRING); - else if(spTaskStats->GetOperationType() == chcore::eOperation_Move) + else if(spTaskStats->GetOperationType() == chengine::eOperation_Move) strStatusText += GetResManager().LoadString(IDS_STATUS_MOVING_STRING); else strStatusText += GetResManager().LoadString(IDS_STATUS_UNKNOWN_STRING); @@ -1013,21 +1048,21 @@ return strStatusText; } -CString CStatusDlg::GetSubtaskName(chcore::ESubOperationType eSubtask) const +CString CStatusDlg::GetSubtaskName(chengine::ESubOperationType eSubtask) const { - if(eSubtask == chcore::eSubOperation_Deleting) + if(eSubtask == chengine::eSubOperation_Deleting) return GetResManager().LoadString(IDS_STATUS_DELETING_STRING); - else if(eSubtask == chcore::eSubOperation_Scanning) + if(eSubtask == chengine::eSubOperation_Scanning) return GetResManager().LoadString(IDS_STATUS_SEARCHING_STRING); - else if(eSubtask == chcore::eSubOperation_FastMove) + if(eSubtask == chengine::eSubOperation_FastMove) return GetResManager().LoadString(IDS_STATUS_FASTMOVE_STRING); - else if(eSubtask == chcore::eSubOperation_Copying) + if(eSubtask == chengine::eSubOperation_Copying) return GetResManager().LoadString(IDS_STATUS_COPYING_STRING); - else - return GetResManager().LoadString(IDS_STATUS_UNKNOWN_STRING); + + return GetResManager().LoadString(IDS_STATUS_UNKNOWN_STRING); } -void CStatusDlg::SetTaskListEntry(size_t stPos, const chcore::TTaskStatsSnapshotPtr& spTaskStats) +void CStatusDlg::SetTaskListEntry(size_t stPos, const chengine::TTaskStatsSnapshotPtr& spTaskStats) { // index subitem CString strStatusText = GetStatusString(spTaskStats); @@ -1044,21 +1079,21 @@ else m_ctlStatusList.InsertItem(&lvi); - chcore::TString strCurrentPath = spTaskStats->GetSourcePath(); + string::TString strCurrentPath = spTaskStats->GetSourcePath(); // input file lvi.mask=LVIF_TEXT; lvi.iSubItem = 1; if(strCurrentPath.IsEmpty()) strCurrentPath = GetResManager().LoadString(IDS_NONEINPUTFILE_STRING); - lvi.pszText = (PTSTR)strCurrentPath.c_str();; + lvi.pszText = (PTSTR)strCurrentPath.c_str(); lvi.cchTextMax = lstrlen(lvi.pszText); m_ctlStatusList.SetItem(&lvi); // destination path lvi.iSubItem = 2; - chcore::TString strDestinationPath = spTaskStats->GetDestinationPath(); + string::TString strDestinationPath = spTaskStats->GetDestinationPath(); lvi.pszText = (PTSTR)strDestinationPath.c_str(); lvi.cchTextMax = lstrlen(lvi.pszText); m_ctlStatusList.SetItem(&lvi); @@ -1100,13 +1135,13 @@ return strFmt; } -void CStatusDlg::UpdateTaskStatsDetails(const chcore::TTaskStatsSnapshotPtr& spTaskStats) +void CStatusDlg::UpdateTaskStatsDetails(const chengine::TTaskStatsSnapshotPtr& spTaskStats) { unsigned long long timeTotalEstimated = 0; unsigned long long timeElapsed = 0; unsigned long long timeRemaining = 0; - chcore::TSubTaskStatsSnapshotPtr spSubTaskStats = spTaskStats->GetSubTasksStats().GetCurrentSubTaskSnapshot(); + chengine::TSubTaskStatsSnapshotPtr spSubTaskStats = spTaskStats->GetSubTasksStats().GetCurrentSubTaskSnapshot(); if(spSubTaskStats) { // text progress @@ -1136,12 +1171,12 @@ GetDlgItem(IDC_SUBTASKTRANSFER_STATIC)->SetWindowText(strSpeed); // subtask name - chcore::ESubOperationType eSubOperationType = spSubTaskStats->GetSubOperationType(); + chengine::ESubOperationType eSubOperationType = spSubTaskStats->GetSubOperationType(); CString strSubtaskName = GetSubtaskName(eSubOperationType); GetDlgItem(IDC_SUBTASKNAME_STATIC)->SetWindowText(strSubtaskName); // current path - chcore::TString strPath = spSubTaskStats->GetCurrentPath(); + string::TString strPath = spSubTaskStats->GetCurrentPath(); if(strPath.IsEmpty()) strPath = GetResManager().LoadString(IDS_NONEINPUTFILE_STRING); @@ -1221,3 +1256,16 @@ return strTitleText; } + +void CStatusDlg::UpdateTaskBarProgress() const +{ + if(m_spTaskMgrStats->GetRunningTasks() != 0) + { + unsigned long long ullProgress = (unsigned long long)(m_spTaskMgrStats->GetCombinedProgress() * 100.0); + + m_taskBarProgress.SetState(m_hWnd, TBPF_NORMAL); + m_taskBarProgress.SetPosition(m_hWnd, ullProgress, 100); + } + else + m_taskBarProgress.SetState(m_hWnd, TBPF_NOPROGRESS); +}