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 1beced0..85bd15f 100644
--- a/rfb_win32/ProgressControl.cxx
+++ b/rfb_win32/ProgressControl.cxx
@@ -31,6 +31,9 @@
 ProgressControl::ProgressControl(HWND hwndProgress)
 {
   m_hwndProgress = hwndProgress;
+  
+  m_dw64MaxValue = 0;
+  m_dw64CurrentValue = 0;
 }
 
 ProgressControl::~ProgressControl()
@@ -72,7 +75,12 @@
 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 @@
 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 63b104b..b4c461a 100644
--- a/vncviewer/FTProgress.cxx
+++ b/vncviewer/FTProgress.cxx
@@ -37,7 +37,7 @@
 
 FTProgress::~FTProgress()
 {
-
+  destroyProgressBarObjects();
 }
 
 bool
@@ -61,13 +61,33 @@
 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 @@
 bool 
 FTProgress::destroyProgressBarObjects()
 {
+  clearAll();
+
   if (m_pSingleProgress != NULL) {
     delete m_pSingleProgress;
   }
diff --git a/vncviewer/FTProgress.h b/vncviewer/FTProgress.h
index 2aef36d..bcfb02c 100644
--- a/vncviewer/FTProgress.h
+++ b/vncviewer/FTProgress.h
@@ -41,7 +41,8 @@
       
       bool initialize(DWORD64 totalMaxValue, DWORD maxValue);
       void increase(DWORD value);
-      void clear();
+      void clearSingle();
+      void clearAll();
 
     private:
       ProgressControl *m_pSingleProgress;