Index: src/ch/StatusDlg.cpp =================================================================== diff -u -r11621f18af6a7b1d486a7d6a576b97d4d09e8e96 -rc435ab507c8b8280264188b49e9ada56d46c0261 --- src/ch/StatusDlg.cpp (.../StatusDlg.cpp) (revision 11621f18af6a7b1d486a7d6a576b97d4d09e8e96) +++ src/ch/StatusDlg.cpp (.../StatusDlg.cpp) (revision c435ab507c8b8280264188b49e9ada56d46c0261) @@ -1,5 +1,5 @@ /*************************************************************************** -* Copyright (C) 2001-2008 by J�zef Starosczyk * +* Copyright (C) 2001-2008 by Jozef Starosczyk * * ixen@copyhandler.com * * * * This program is free software; you can redistribute it and/or modify * @@ -59,7 +59,6 @@ { CLanguageDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CStatusDlg) - DDX_Control(pDX, IDC_ERRORS_EDIT, m_ctlErrors); DDX_Control(pDX, IDC_TASK_PROGRESS, m_ctlCurrentProgress); DDX_Control(pDX, IDC_STATUS_LIST, m_ctlStatusList); DDX_Control(pDX, IDC_ALL_PROGRESS, m_ctlProgressAll); @@ -114,26 +113,26 @@ lvc.fmt=LVCFMT_LEFT; lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSTATUS_STRING); /*_T("Status")*/; - lvc.cchTextMax = lstrlen(lvc.pszText); - lvc.cx = static_cast(0.27*iWidth); + 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.cchTextMax = lstrlen(lvc.pszText); - lvc.cx = static_cast(0.3*iWidth); + 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.cchTextMax = lstrlen(lvc.pszText); - lvc.cx = static_cast(0.27*iWidth); + 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.cchTextMax = lstrlen(lvc.pszText); - lvc.cx = static_cast(0.15*iWidth); + lvc.cchTextMax = lstrlen(lvc.pszText); + lvc.cx = static_cast(0.15*iWidth); lvc.iSubItem=2; m_ctlStatusList.InsertColumn(4, &lvc); @@ -161,16 +160,16 @@ RefreshStatus(); // select needed element - int i=0; - while (i < m_pTasks->GetSize()) + size_t stIndex = 0; + while(stIndex < m_pTasks->GetSize()) { - if (m_pTasks->GetAt(i) == m_pInitialSelection) + if(m_pTasks->GetAt(stIndex) == m_spInitialSelection) { - m_ctlStatusList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); + m_ctlStatusList.SetItemState(boost::numeric_cast(stIndex), LVIS_SELECTED, LVIS_SELECTED); break; } - i++; + stIndex++; }; // refresh data timer @@ -194,11 +193,6 @@ GetDlgItem(IDC_BUFFERSIZE_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYBUFFERSIZETEXT_STRING)); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYPRIORITYTEXT_STRING)); - const TCHAR *pszText=GetResManager().LoadString(IDS_EMPTYERRORTEXT_STRING); - m_ctlErrors.GetWindowText(m_strTemp); - if (m_strTemp != pszText) - m_ctlErrors.SetWindowText(pszText); - GetDlgItem(IDC_PROGRESS_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYPROCESSEDTEXT_STRING)); GetDlgItem(IDC_TRANSFER_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYTRANSFERTEXT_STRING)); GetDlgItem(IDC_TIME_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYTIMETEXT_STRING)); @@ -224,31 +218,35 @@ CLanguageDialog::OnTimer(nIDEvent); } -void CStatusDlg::AddTaskInfo(int nPos, CTask *pTask, DWORD dwCurrentTime) +void CStatusDlg::AddTaskInfo(int nPos, const CTaskPtr& spTask, DWORD dwCurrentTime) { + _ASSERTE(spTask != NULL); + if(spTask == NULL) + return; + // index to string _itot(nPos, m_szData, 10); // get data snapshot from task - pTask->GetSnapshot(&td); + spTask->GetSnapshot(&td); // index subitem lvi.mask=LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE; lvi.iItem=nPos; lvi.iSubItem=0; lvi.pszText=td.m_szStatusText; lvi.cchTextMax=lstrlen(lvi.pszText); - lvi.lParam=reinterpret_cast(pTask); + lvi.lParam = spTask->GetSessionUniqueID(); lvi.iImage=GetImageFromStatus(td.m_uiStatus); if (nPos < m_ctlStatusList.GetItemCount()) m_ctlStatusList.SetItem(&lvi); else m_ctlStatusList.InsertItem(&lvi); // status subitem - lvi.mask=LVIF_TEXT; // zmie� mask� + lvi.mask=LVIF_TEXT; lvi.iSubItem=1; - m_strTemp=td.m_fi.GetFileName(); + m_strTemp = td.m_strFileName; lvi.pszText=m_strTemp.GetBuffer(0); m_strTemp.ReleaseBuffer(); lvi.cchTextMax=lstrlen(lvi.pszText); @@ -271,30 +269,14 @@ m_ctlStatusList.SetItem(&lvi); // right side update - if (pTask == pSelectedItem && GetConfig().get_bool(PP_STATUSSHOWDETAILS)) + if(spTask == m_spSelectedItem && GetConfig().get_bool(PP_STATUSSHOWDETAILS)) { // data that can be changed by a thread GetDlgItem(IDC_OPERATION_STATIC)->SetWindowText(td.m_szStatusText); // operation - GetDlgItem(IDC_SOURCE_STATIC)->SetWindowText(td.m_fi.GetFullFilePath()); // src object + GetDlgItem(IDC_SOURCE_STATIC)->SetWindowText(td.m_strFullFilePath); // src object - // error message - if ( (td.m_uiStatus & ST_WORKING_MASK) == ST_ERROR ) - { - m_ctlErrors.GetWindowText(m_strTemp); - if (m_strTemp != td.m_strErrorDesc) - m_ctlErrors.SetWindowText(td.m_strErrorDesc); - } - else - { - const TCHAR *pszText=GetResManager().LoadString(IDS_EMPTYERRORTEXT_STRING); - - m_ctlErrors.GetWindowText(m_strTemp2); - if (m_strTemp2 != pszText) - m_ctlErrors.SetWindowText(pszText); - } - // count of processed data/overall count of data - _sntprintf(m_szData, _MAX_PATH, _T("%d/%d ("), td.m_iIndex, td.m_iSize); + _sntprintf(m_szData, _MAX_PATH, _T("%d/%d ("), td.m_stIndex, td.m_stSize); m_strTemp=CString(m_szData); m_strTemp+=GetSizeString(td.m_ullProcessedSize, m_szData, _MAX_PATH)+CString(_T("/")); m_strTemp+=GetSizeString(td.m_ullSizeAll, m_szData, _MAX_PATH)+CString(_T(")")); @@ -304,7 +286,7 @@ // transfer if (m_i64LastProcessed == 0) // if first time - show average - m_strTemp=GetSizeString( td.m_lTimeElapsed ? td.m_ullProcessedSize/td.m_lTimeElapsed : 0, m_szData, _MAX_PATH); // last avg + m_strTemp=GetSizeString( td.m_timeElapsed ? td.m_ullProcessedSize/td.m_timeElapsed : 0, m_szData, _MAX_PATH); // last avg else if ( (dwCurrentTime-m_dwLastUpdate) != 0) m_strTemp=GetSizeString( (static_cast(td.m_ullProcessedSize) - static_cast(m_i64LastProcessed))/(static_cast(dwCurrentTime-m_dwLastUpdate)/1000.0), m_szData, _MAX_PATH); @@ -313,14 +295,14 @@ // avg transfer GetDlgItem(IDC_TRANSFER_STATIC)->SetWindowText(m_strTemp+_T("/s (")+CString(GetResManager().LoadString(IDS_AVERAGEWORD_STRING)) - +CString(GetSizeString(td.m_lTimeElapsed ? td.m_ullProcessedSize/td.m_lTimeElapsed : 0, m_szData, _MAX_PATH))+_T("/s )") + +CString(GetSizeString(td.m_timeElapsed ? td.m_ullProcessedSize/td.m_timeElapsed : 0, m_szData, _MAX_PATH))+_T("/s )") ); // elapsed time / estimated total time (estimated time left) - FormatTime(td.m_lTimeElapsed, m_szTimeBuffer1, 40); - long lTotalTime = (td.m_ullProcessedSize == 0) ? 0 : (long)(td.m_ullSizeAll * td.m_lTimeElapsed / td.m_ullProcessedSize); - FormatTime(lTotalTime, m_szTimeBuffer2, 40); - FormatTime(max(0, lTotalTime - td.m_lTimeElapsed), m_szTimeBuffer3, 40); + FormatTime(td.m_timeElapsed, m_szTimeBuffer1, 40); + time_t timeTotal = (td.m_ullProcessedSize == 0) ? 0 : (long)(td.m_ullSizeAll * td.m_timeElapsed / td.m_ullProcessedSize); + FormatTime(timeTotal, m_szTimeBuffer2, 40); + FormatTime(std::max((time_t)0l, timeTotal - td.m_timeElapsed), m_szTimeBuffer3, 40); _sntprintf(m_szData, _MAX_PATH, _T("%s / %s (%s)"), m_szTimeBuffer1, m_szTimeBuffer2, m_szTimeBuffer3); GetDlgItem(IDC_TIME_STATIC)->SetWindowText(m_szData); @@ -335,56 +317,42 @@ // data that can be changed only by user from outside the thread // refresh only when there are new selected item -// if (pTask != m_pLastSelected) +// if (spTask != m_spLastSelected) { GetDlgItem(IDC_DESTINATION_STATIC)->SetWindowText(td.m_pdpDestPath->GetPath()); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_PRIORITY0_STRING+PriorityToIndex(td.m_nPriority))); GetDlgItem(IDC_ASSOCIATEDFILES__STATIC)->SetWindowText(*td.m_pstrUniqueName+_T(".atd (.atp, .log)")); } - // refresh m_pLastSelected - m_pLastSelected=pTask; + // refresh m_spLastSelected + m_spLastSelected = spTask; } } void CStatusDlg::OnSetBuffersizeButton() { - CTask* pTask; - if ( (pTask=GetSelectedItemPointer()) == NULL ) + CTaskPtr spTask = GetSelectedItemPointer(); + if(!spTask) return; CBufferSizeDlg dlg; - dlg.m_bsSizes=*pTask->GetBufferSizes(); - dlg.m_iActiveIndex=pTask->GetCurrentBufferIndex(); - if (dlg.DoModal() == IDOK) - { - // if the task has been deleted - skip - if ( pTask != GetSelectedItemPointer() ) - { - TRACE("Task were finished and deleted when trying to change buffer sizes"); - return; - } - - TRACE("bOnlyDefault=%d\n", dlg.m_bsSizes.m_bOnlyDefault); - pTask->SetBufferSizes(&dlg.m_bsSizes); - } + dlg.m_bsSizes = *spTask->GetBufferSizes(); + dlg.m_iActiveIndex = spTask->GetCurrentBufferIndex(); + if(dlg.DoModal() == IDOK) + spTask->SetBufferSizes(&dlg.m_bsSizes); } -CTask* CStatusDlg::GetSelectedItemPointer() +CTaskPtr CStatusDlg::GetSelectedItemPointer() { -// TRACE("inside GetSelectedItemPointer()\n"); // returns ptr to a CTask for a given element in listview - if (m_ctlStatusList.GetSelectedCount() == 1) + if(m_ctlStatusList.GetSelectedCount() == 1) { - POSITION pos=m_ctlStatusList.GetFirstSelectedItemPosition(); - int nPos=m_ctlStatusList.GetNextSelectedItem(pos); - CTask* pSelectedItem=reinterpret_cast(m_ctlStatusList.GetItemData(nPos)); -// if (AfxIsValidAddress(pSelectedItem, sizeof(CTask))) - return pSelectedItem; + POSITION pos = m_ctlStatusList.GetFirstSelectedItemPosition(); + int nPos = m_ctlStatusList.GetNextSelectedItem(pos); + return m_pTasks->GetTaskBySessionUniqueID(m_ctlStatusList.GetItemData(nPos)); } -// TRACE("exiting GetSelectedItemPointer()\n"); - return NULL; + return CTaskPtr(); } void CStatusDlg::OnRollUnrollButton() @@ -437,18 +405,18 @@ void CStatusDlg::ApplyButtonsState() { // remember ptr to CTask - pSelectedItem=GetSelectedItemPointer(); + m_spSelectedItem=GetSelectedItemPointer(); bool bShowLog=GetConfig().get_bool(PP_CMCREATELOG); // set status of buttons pause/resume/cancel - if (pSelectedItem != NULL) + if (m_spSelectedItem != NULL) { GetDlgItem(IDC_RESTART_BUTTON)->EnableWindow(true); GetDlgItem(IDC_SHOW_LOG_BUTTON)->EnableWindow(bShowLog); GetDlgItem(IDC_DELETE_BUTTON)->EnableWindow(true); - if (pSelectedItem->GetStatus(ST_STEP_MASK) == ST_FINISHED - || pSelectedItem->GetStatus(ST_STEP_MASK) == ST_CANCELLED) + if (m_spSelectedItem->GetStatus(ST_STEP_MASK) == ST_FINISHED + || m_spSelectedItem->GetStatus(ST_STEP_MASK) == ST_CANCELLED) { GetDlgItem(IDC_CANCEL_BUTTON)->EnableWindow(false); GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(false); @@ -457,15 +425,15 @@ else { // pause/resume - if (pSelectedItem->GetStatus(ST_WORKING_MASK) & ST_PAUSED) + if (m_spSelectedItem->GetStatus(ST_WORKING_MASK) & ST_PAUSED) { GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(false); GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(true); } else { GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(true); - if (pSelectedItem->GetStatus(ST_WAITING_MASK) & ST_WAITING) + if (m_spSelectedItem->GetStatus(ST_WAITING_MASK) & ST_WAITING) GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(true); else GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(false); @@ -514,37 +482,37 @@ if (LOWORD(wParam) >= ID_POPUP_TIME_CRITICAL && LOWORD(wParam) <= ID_POPUP_IDLE) { // processing priority - if ( (pSelectedItem=GetSelectedItemPointer()) == NULL ) + if ( (m_spSelectedItem=GetSelectedItemPointer()) == NULL ) return ictranslate::CLanguageDialog::OnCommand(wParam, lParam); switch (LOWORD(wParam)) { case ID_POPUP_TIME_CRITICAL: - pSelectedItem->SetPriority(THREAD_PRIORITY_TIME_CRITICAL); + m_spSelectedItem->SetPriority(THREAD_PRIORITY_TIME_CRITICAL); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_PRIORITY0_STRING+PriorityToIndex(THREAD_PRIORITY_TIME_CRITICAL))); break; case ID_POPUP_HIGHEST: - pSelectedItem->SetPriority(THREAD_PRIORITY_HIGHEST); + m_spSelectedItem->SetPriority(THREAD_PRIORITY_HIGHEST); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_PRIORITY0_STRING+PriorityToIndex(THREAD_PRIORITY_HIGHEST))); break; case ID_POPUP_ABOVE_NORMAL: - pSelectedItem->SetPriority(THREAD_PRIORITY_ABOVE_NORMAL); + m_spSelectedItem->SetPriority(THREAD_PRIORITY_ABOVE_NORMAL); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_PRIORITY0_STRING+PriorityToIndex(THREAD_PRIORITY_ABOVE_NORMAL))); break; case ID_POPUP_NORMAL: - pSelectedItem->SetPriority(THREAD_PRIORITY_NORMAL); + m_spSelectedItem->SetPriority(THREAD_PRIORITY_NORMAL); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_PRIORITY0_STRING+PriorityToIndex(THREAD_PRIORITY_NORMAL))); break; case ID_POPUP_BELOW_NORMAL: - pSelectedItem->SetPriority(THREAD_PRIORITY_BELOW_NORMAL); + m_spSelectedItem->SetPriority(THREAD_PRIORITY_BELOW_NORMAL); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_PRIORITY0_STRING+PriorityToIndex(THREAD_PRIORITY_BELOW_NORMAL))); break; case ID_POPUP_LOWEST: - pSelectedItem->SetPriority(THREAD_PRIORITY_LOWEST); + m_spSelectedItem->SetPriority(THREAD_PRIORITY_LOWEST); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_PRIORITY0_STRING+PriorityToIndex(THREAD_PRIORITY_LOWEST))); break; case ID_POPUP_IDLE: - pSelectedItem->SetPriority(THREAD_PRIORITY_IDLE); + m_spSelectedItem->SetPriority(THREAD_PRIORITY_IDLE); GetDlgItem(IDC_PRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_PRIORITY0_STRING+PriorityToIndex(THREAD_PRIORITY_IDLE))); break; } @@ -555,83 +523,71 @@ void CStatusDlg::OnPauseButton() { - CTask* pTask; - if ( (pTask=GetSelectedItemPointer()) == NULL ) - return; + CTaskPtr spTask = GetSelectedItemPointer(); + if(spTask) + { + TRACE("PauseProcessing call...\n"); + spTask->PauseProcessing(); - TRACE("PauseProcessing call...\n"); - pTask->PauseProcessing(); - - RefreshStatus(); + RefreshStatus(); + } } void CStatusDlg::OnResumeButton() { - CTask* pTask; - if ( (pTask=GetSelectedItemPointer()) == NULL ) - return; - - TRACE("ResumeProcessing call "); - if (pTask->GetStatus(ST_WAITING_MASK) & ST_WAITING) + CTaskPtr spTask = GetSelectedItemPointer(); + if(spTask) { - TRACE("by setting force flag\n"); - pTask->SetForceFlag(); - } - else - { - TRACE("by function ResumeProcessing\n"); - pTask->ResumeProcessing(); - } + if(spTask->GetStatus(ST_WAITING_MASK) & ST_WAITING) + spTask->SetForceFlag(); + else + spTask->ResumeProcessing(); - RefreshStatus(); + RefreshStatus(); + } } void CStatusDlg::OnCancelButton() { - CTask* pTask; - if ( (pTask=GetSelectedItemPointer()) != NULL ) + CTaskPtr spTask = GetSelectedItemPointer(); + if(spTask) { - TRACE("CancelProcessing call...\n"); - pTask->CancelProcessing(); + spTask->CancelProcessing(); + RefreshStatus(); } - RefreshStatus(); } void CStatusDlg::OnRestartButton() { - CTask* pTask; - if ( (pTask=GetSelectedItemPointer()) == NULL ) - return; - - TRACE("RestartProcessing call...\n"); - pTask->RestartProcessing(); - RefreshStatus(); + CTaskPtr spTask = GetSelectedItemPointer(); + if(spTask) + { + spTask->RestartProcessing(); + RefreshStatus(); + } } void CStatusDlg::OnDeleteButton() { - CTask* pTask; - if ( (pTask=GetSelectedItemPointer()) == NULL ) - return; - - UINT uiStatus=pTask->GetStatus(ST_STEP_MASK); - if ( (uiStatus & ST_STEP_MASK) != ST_FINISHED && (uiStatus & ST_STEP_MASK) != ST_CANCELLED ) + CTaskPtr spTask = GetSelectedItemPointer(); + if(spTask) { - // ask if cancel - if (MsgBox(IDS_CONFIRMCANCEL_STRING, MB_OKCANCEL | MB_ICONQUESTION) == IDOK) + UINT uiStatus = spTask->GetStatus(ST_STEP_MASK); + if((uiStatus & ST_STEP_MASK) != ST_FINISHED && (uiStatus & ST_STEP_MASK) != ST_CANCELLED) { - // cancel - if ( (pTask=GetSelectedItemPointer()) == NULL ) + // ask if cancel + if(MsgBox(IDS_CONFIRMCANCEL_STRING, MB_OKCANCEL | MB_ICONQUESTION) == IDOK) + { + // cancel + spTask->CancelProcessing(); + } + else return; - - pTask->CancelProcessing(); } - else - return; - } - m_pTasks->RemoveFinished(&pTask); - RefreshStatus(); + m_pTasks->RemoveFinished(spTask); + RefreshStatus(); + } } void CStatusDlg::OnPauseAllButton() @@ -678,11 +634,11 @@ break; case VK_SPACE: { - CTask* pTask; - if ( (pTask=GetSelectedItemPointer()) == NULL ) + CTaskPtr spTask = GetSelectedItemPointer(); + if (!spTask) return; - if (pTask->GetStatus(ST_WORKING_MASK) & ST_PAUSED) + if(spTask->GetStatus(ST_WORKING_MASK) & ST_PAUSED) OnResumeButton(); else OnPauseButton(); @@ -708,44 +664,48 @@ return 0; } -LPTSTR CStatusDlg::FormatTime(long lSeconds, LPTSTR lpszBuffer, size_t stMaxBufferSize) +LPTSTR CStatusDlg::FormatTime(time_t timeSeconds, LPTSTR lpszBuffer, size_t stMaxBufferSize) { - long lDays=lSeconds/86400; - lSeconds%=86400; - long lHours=lSeconds/3600; - lSeconds%=3600; - long lMinutes=lSeconds/60; - lSeconds%=60; + long lDays = boost::numeric_cast(timeSeconds/86400); + timeSeconds %= 86400; + long lHours = boost::numeric_cast(timeSeconds/3600); + timeSeconds %= 3600; + long lMinutes = boost::numeric_cast(timeSeconds/60); + timeSeconds %= 60; - if (lDays != 0) - _sntprintf(lpszBuffer, stMaxBufferSize, _T("%02d:%02d:%02d:%02d"), lDays, lHours, lMinutes, lSeconds); + if(lDays != 0) + _sntprintf(lpszBuffer, stMaxBufferSize, _T("%02d:%02d:%02d:%02d"), lDays, lHours, lMinutes, timeSeconds); else + { if (lHours != 0) - _sntprintf(lpszBuffer, stMaxBufferSize, _T("%02d:%02d:%02d"), lHours, lMinutes, lSeconds); + _sntprintf(lpszBuffer, stMaxBufferSize, _T("%02d:%02d:%02d"), lHours, lMinutes, timeSeconds); else - _sntprintf(lpszBuffer, stMaxBufferSize, _T("%02d:%02d"), lMinutes, lSeconds); + _sntprintf(lpszBuffer, stMaxBufferSize, _T("%02d:%02d"), lMinutes, timeSeconds); + } return lpszBuffer; } void CStatusDlg::RefreshStatus() { // remember address of a current selection - pSelectedItem=GetSelectedItemPointer(); + m_spSelectedItem=GetSelectedItemPointer(); // current time DWORD dwCurrentTime=GetTickCount(); - + // get rid of item after the current part - m_ctlStatusList.LimitItems(m_pTasks->GetSize()); - + m_ctlStatusList.LimitItems(boost::numeric_cast(m_pTasks->GetSize())); + // add task info - for (int i=0;iGetSize();i++) - AddTaskInfo(i, m_pTasks->GetAt(i), dwCurrentTime); - + for(size_t stIndex = 0; stIndex < m_pTasks->GetSize(); ++stIndex) + { + AddTaskInfo(boost::numeric_cast(stIndex), m_pTasks->GetAt(stIndex), dwCurrentTime); + } + // percent int nPercent=m_pTasks->GetPercent(); - + // set title if (m_pTasks->GetSize() != 0) _sntprintf(m_szData, _MAX_PATH, _T("%s [%d %%]"), GetResManager().LoadString(IDS_STATUSTITLE_STRING), m_pTasks->GetPercent()); @@ -785,7 +745,7 @@ if (m_ctlStatusList.GetSelectedCount() == 0) { EnableControls(false); - m_pLastSelected=NULL; + m_spLastSelected.reset(); m_i64LastProcessed=0; } else @@ -832,24 +792,24 @@ void CStatusDlg::OnPopupReplacePaths() { // check if there's a selection currently - if ( (pSelectedItem=GetSelectedItemPointer()) != NULL ) + if ( (m_spSelectedItem=GetSelectedItemPointer()) != NULL ) { - if (pSelectedItem->GetStatus(ST_WORKING_MASK) & ST_PAUSED) + if (m_spSelectedItem->GetStatus(ST_WORKING_MASK) & ST_PAUSED) { bool bContinue=false; - if (pSelectedItem->GetStatus(ST_WORKING_MASK) == ST_ERROR) + if (m_spSelectedItem->GetStatus(ST_WORKING_MASK) == ST_ERROR) { - pSelectedItem->PauseProcessing(); + m_spSelectedItem->PauseProcessing(); bContinue=true; } // assuming here that there's selection and task is paused CReplacePathsDlg dlg; - dlg.m_pTask=pSelectedItem; + dlg.m_spTask=m_spSelectedItem; if (dlg.DoModal() == IDOK) { // change 'no case' - int iClipboard=pSelectedItem->ReplaceClipboardStrings(dlg.m_strSource, dlg.m_strDest); + int iClipboard=m_spSelectedItem->ReplaceClipboardStrings(dlg.m_strSource, dlg.m_strDest); ictranslate::CFormat fmt(GetResManager().LoadString(IDS_REPLACEPATHSTEXT_STRING)); fmt.SetParam(_t("%count"), iClipboard); @@ -858,7 +818,7 @@ // resume if earlier was an error if (bContinue) - pSelectedItem->ResumeProcessing(); + m_spSelectedItem->ResumeProcessing(); } else MsgBox(IDS_TASKNOTPAUSED_STRING); @@ -870,16 +830,15 @@ void CStatusDlg::OnShowLogButton() { // show log - CTask* pTask; - if ( (pTask=GetSelectedItemPointer()) == NULL || !GetConfig().get_bool(PP_CMCREATELOG)) + CTaskPtr spTask = GetSelectedItemPointer(); + if (!spTask || !GetConfig().get_bool(PP_CMCREATELOG)) return; - // call what's needed - unsigned long lResult=(unsigned long)(ShellExecute(this->m_hWnd, _T("open"), _T("notepad.exe"), - CString(pTask->GetTaskPath())+pTask->GetUniqueName()+_T(".log"), NULL, SW_SHOWNORMAL)); - if (lResult < 32) + unsigned long lResult = (unsigned long)(ShellExecute(this->m_hWnd, _T("open"), _T("notepad.exe"), + CString(spTask->GetTaskPath()) + spTask->GetUniqueName() + _T(".log"), NULL, SW_SHOWNORMAL)); + if(lResult < 32) { - CString str=CString(pTask->GetTaskPath())+pTask->GetUniqueName()+_T(".log"); + CString str = CString(spTask->GetTaskPath()) + spTask->GetUniqueName()+_T(".log"); ictranslate::CFormat fmt(GetResManager().LoadString(IDS_SHELLEXECUTEERROR_STRING)); fmt.SetParam(_t("%errno"), lResult); fmt.SetParam(_t("%path"), str); @@ -957,26 +916,26 @@ lvc.fmt=LVCFMT_LEFT; lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_COLUMNSTATUS_STRING); /*_T("Status")*/; - lvc.cchTextMax = lstrlen(lvc.pszText); - lvc.cx = static_cast(0.27*iWidth); + 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.cchTextMax = lstrlen(lvc.pszText); - lvc.cx = static_cast(0.3*iWidth); + 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.cchTextMax = lstrlen(lvc.pszText); - lvc.cx = static_cast(0.27*iWidth); + 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.cchTextMax = lstrlen(lvc.pszText); - lvc.cx = static_cast(0.15*iWidth); + lvc.cchTextMax = lstrlen(lvc.pszText); + lvc.cx = static_cast(0.15*iWidth); lvc.iSubItem=2; m_ctlStatusList.InsertColumn(4, &lvc); @@ -1027,7 +986,6 @@ AddResizableControl(IDC_005_STATIC, 0.5, 0.0, 0.0, 0); AddResizableControl(IDC_006_STATIC, 0.5, 0.0, 0.0, 0); AddResizableControl(IDC_007_STATIC, 0.5, 0.0, 0.0, 0); - AddResizableControl(IDC_008_STATIC, 0.5, 0.0, 0.0, 0); AddResizableControl(IDC_009_STATIC, 0.5, 0.0, 0.0, 0); AddResizableControl(IDC_010_STATIC, 0.5, 0.0, 0.0, 0); AddResizableControl(IDC_011_STATIC, 0.5, 0.0, 0.0, 0); @@ -1043,7 +1001,6 @@ AddResizableControl(IDC_TASK_PROGRESS, 0.5, 0.0, 0.5, 0); // right part of right column - AddResizableControl(IDC_ERRORS_EDIT, 0.5, 0.0, 0.5, 0); AddResizableControl(IDC_ASSOCIATEDFILES__STATIC, 0.5, 0.0, 0.5, 0); AddResizableControl(IDC_OPERATION_STATIC, 0.5, 0.0, 0.5, 0); AddResizableControl(IDC_SOURCE_STATIC, 0.5, 0.0, 0.5, 0);