From: Dennis Syrovatsky Date: Mon, 7 Nov 2005 08:21:03 +0000 (+0000) Subject: Added clearAll and clearSingle methods to FTProgress class. X-Git-Tag: v0.0.90~384^2~455 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2d35041048ca00d0ad055297081853ca8f98f620;p=tigervnc.git Added clearAll and clearSingle methods to FTProgress class. Code improvements. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@380 3789f03b-4d11-0410-bbf8-ca57d06f2519 --- diff --git a/rfb_win32/ProgressControl.cxx b/rfb_win32/ProgressControl.cxx index 1beced0d..85bd15f3 100644 --- a/rfb_win32/ProgressControl.cxx +++ b/rfb_win32/ProgressControl.cxx @@ -31,6 +31,9 @@ using namespace rfb::win32; ProgressControl::ProgressControl(HWND hwndProgress) { m_hwndProgress = hwndProgress; + + m_dw64MaxValue = 0; + m_dw64CurrentValue = 0; } ProgressControl::~ProgressControl() @@ -72,7 +75,12 @@ ProgressControl::increase(DWORD64 value) bool ProgressControl::show() { - DWORD curPos = (DWORD) ((m_dw64CurrentValue * MAX_RANGE) / m_dw64MaxValue); + DWORD curPos; + if (m_dw64MaxValue != 0) { + curPos = (DWORD) ((m_dw64CurrentValue * MAX_RANGE) / m_dw64MaxValue); + } else { + curPos = 0; + } if (!SendMessage(m_hwndProgress, PBM_SETPOS, (WPARAM) curPos, (LPARAM) 0)) return false; @@ -83,5 +91,7 @@ ProgressControl::show() int ProgressControl::getCurrentPercent() { + if (m_dw64MaxValue == 0) return 0; + return ((int) ((m_dw64CurrentValue * 100) / m_dw64MaxValue)); } \ No newline at end of file diff --git a/vncviewer/FTProgress.cxx b/vncviewer/FTProgress.cxx index 63b104b0..b4c461ad 100644 --- a/vncviewer/FTProgress.cxx +++ b/vncviewer/FTProgress.cxx @@ -37,7 +37,7 @@ FTProgress::FTProgress(HWND hwndParent) FTProgress::~FTProgress() { - + destroyProgressBarObjects(); } bool @@ -61,13 +61,33 @@ FTProgress::initialize(DWORD64 totalMaxValue, DWORD maxValue) void FTProgress::increase(DWORD value) { + if (!m_bInitialized) return; + + m_pSingleProgress->increase(value); + m_pGeneralProgress->increase(value); + setProgressText(); } void -FTProgress::clear() +FTProgress::clearSingle() { + if (!m_bInitialized) return; + + m_pSingleProgress->clear(); + setProgressText(); +} + +void +FTProgress::clearAll() +{ + if (!m_bInitialized) return; + + m_pSingleProgress->clear(); + m_pGeneralProgress->clear(); + + setProgressText(); } bool @@ -95,6 +115,8 @@ FTProgress::createProgressBarObjects() bool FTProgress::destroyProgressBarObjects() { + clearAll(); + if (m_pSingleProgress != NULL) { delete m_pSingleProgress; } diff --git a/vncviewer/FTProgress.h b/vncviewer/FTProgress.h index 2aef36d7..bcfb02c8 100644 --- a/vncviewer/FTProgress.h +++ b/vncviewer/FTProgress.h @@ -41,7 +41,8 @@ namespace rfb { bool initialize(DWORD64 totalMaxValue, DWORD maxValue); void increase(DWORD value); - void clear(); + void clearSingle(); + void clearAll(); private: ProgressControl *m_pSingleProgress;