Index: src/ch/StatusDlg.cpp =================================================================== diff -u -N -r17059054c69cd5726f4c7d35357f3b9556471783 -r11621f18af6a7b1d486a7d6a576b97d4d09e8e96 --- src/ch/StatusDlg.cpp (.../StatusDlg.cpp) (revision 17059054c69cd5726f4c7d35357f3b9556471783) +++ src/ch/StatusDlg.cpp (.../StatusDlg.cpp) (revision 11621f18af6a7b1d486a7d6a576b97d4d09e8e96) @@ -316,13 +316,15 @@ +CString(GetSizeString(td.m_lTimeElapsed ? td.m_ullProcessedSize/td.m_lTimeElapsed : 0, m_szData, _MAX_PATH))+_T("/s )") ); - // elapsed time/estimated time + // elapsed time / estimated total time (estimated time left) FormatTime(td.m_lTimeElapsed, m_szTimeBuffer1, 40); - FormatTime( (td.m_ullProcessedSize == 0) ? 0 : static_cast((static_cast<__int64>(td.m_ullSizeAll)*static_cast<__int64>(td.m_lTimeElapsed))/td.m_ullProcessedSize), m_szTimeBuffer2, 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); - _sntprintf(m_szData, _MAX_PATH, _T("%s / %s"), m_szTimeBuffer1, m_szTimeBuffer2); + _sntprintf(m_szData, _MAX_PATH, _T("%s / %s (%s)"), m_szTimeBuffer1, m_szTimeBuffer2, m_szTimeBuffer3); GetDlgItem(IDC_TIME_STATIC)->SetWindowText(m_szData); - + // remember current processed data (used for calculating transfer) m_i64LastProcessed=td.m_ullProcessedSize; Index: src/ch/StatusDlg.h =================================================================== diff -u -N -r17059054c69cd5726f4c7d35357f3b9556471783 -r11621f18af6a7b1d486a7d6a576b97d4d09e8e96 --- src/ch/StatusDlg.h (.../StatusDlg.h) (revision 17059054c69cd5726f4c7d35357f3b9556471783) +++ src/ch/StatusDlg.h (.../StatusDlg.h) (revision 11621f18af6a7b1d486a7d6a576b97d4d09e8e96) @@ -54,6 +54,7 @@ TCHAR m_szData[_MAX_PATH]; TCHAR m_szTimeBuffer1[40]; TCHAR m_szTimeBuffer2[40]; + TCHAR m_szTimeBuffer3[40]; __int64 m_i64LastProcessed; __int64 m_i64LastAllTasksProcessed; Index: src/ch/ch.rc =================================================================== diff -u -N -r3251fd2886cbf7422afa6ab7a3868e86d100b6c7 -r11621f18af6a7b1d486a7d6a576b97d4d09e8e96 --- src/ch/ch.rc (.../ch.rc) (revision 3251fd2886cbf7422afa6ab7a3868e86d100b6c7) +++ src/ch/ch.rc (.../ch.rc) (revision 11621f18af6a7b1d486a7d6a576b97d4d09e8e96) @@ -842,7 +842,7 @@ IDS_EMPTYERRORTEXT_STRING "empty" IDS_EMPTYPROCESSEDTEXT_STRING "empty" IDS_EMPTYTRANSFERTEXT_STRING "unknown" - IDS_EMPTYTIMETEXT_STRING "00:00 / 00:00" + IDS_EMPTYTIMETEXT_STRING "00:00 / 00:00 (00:00)" IDS_CURRENTPASS_STRING "pass: " IDS_AVERAGEWORD_STRING "avg: " IDS_STATUSTITLE_STRING "Status" Index: src/ch/help/english/status.htm =================================================================== diff -u -N -r5f4ef9387368390412ff8852b54067b1f7dc8a28 -r11621f18af6a7b1d486a7d6a576b97d4d09e8e96 --- src/ch/help/english/status.htm (.../status.htm) (revision 5f4ef9387368390412ff8852b54067b1f7dc8a28) +++ src/ch/help/english/status.htm (.../status.htm) (revision 11621f18af6a7b1d486a7d6a576b97d4d09e8e96) @@ -26,33 +26,33 @@
  • Remove/all button - removes all the cancelled and finished tasks from the list.
  • Restart/all button - restarts all the tasks from the list.
  • Stick button - causes the status dialog to be positioned in right-bottom corner of the screen.
  • -
  • '<<' button - changes the dialog view to simple/advanced.
  • +
  • '<<' '>>' button - changes the dialog view to simple/advanced.
  • Advanced button - Shows menu with advanced options regarding one or more tasks from the list.
  • Current selection statistics - statistics for the task selected in Operations list window.
  • Global statistics