]> source.dussan.org Git - tigervnc.git/commitdiff
Added methods to FTProgress class for creating, destroying
authorDennis Syrovatsky <dennis@tightvnc.com>
Mon, 7 Nov 2005 08:09:54 +0000 (08:09 +0000)
committerDennis Syrovatsky <dennis@tightvnc.com>
Mon, 7 Nov 2005 08:09:54 +0000 (08:09 +0000)
and intialization the progress bar controls.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@379 3789f03b-4d11-0410-bbf8-ca57d06f2519

rfb_win32/ProgressControl.cxx
rfb_win32/ProgressControl.h
vncviewer/FTProgress.cxx
vncviewer/FTProgress.h
vncviewer/resource.h
vncviewer/vncviewer.rc

index dd6a79f90c4f1a87c11ec715ee043035baebb457..1beced0ddf11b9de3e8c9278a695269fb0a78034 100644 (file)
@@ -45,7 +45,8 @@ ProgressControl::init(DWORD64 maxValue, DWORD64 position)
   m_dw64CurrentValue = position;
   m_dw64MaxValue = maxValue;
   
-  SendMessage(m_hwndProgress, PBM_SETRANGE, (WPARAM) 0, MAKELPARAM(0, MAX_RANGE)); 
+  if (!SendMessage(m_hwndProgress, PBM_SETRANGE, (WPARAM) 0, MAKELPARAM(0, MAX_RANGE))) 
+    return false;
   
   return true;
 }
@@ -72,7 +73,15 @@ bool
 ProgressControl::show()
 {
   DWORD curPos = (DWORD) ((m_dw64CurrentValue * MAX_RANGE) / m_dw64MaxValue);
-  SendMessage(m_hwndProgress, PBM_SETPOS, (WPARAM) curPos, (LPARAM) 0);
+  
+  if (!SendMessage(m_hwndProgress, PBM_SETPOS, (WPARAM) curPos, (LPARAM) 0))
+    return false;
   
   return true;
 }
+
+int 
+ProgressControl::getCurrentPercent()
+{
+  return ((int) ((m_dw64CurrentValue * 100) / m_dw64MaxValue));
+}
\ No newline at end of file
index 480c4c89eeb79c53e1b583457c1867c8ac2114f0..ceeb153fd0226f0a21a0c8cce552a704d36d7149 100644 (file)
@@ -39,18 +39,16 @@ namespace rfb {
       
       bool increase(DWORD64 value);
       bool clear();
+
+      int getCurrentPercent();
       
     private:
       HWND m_hwndProgress;
       
-      DWORD m_dwBarValue;
-      DWORD m_dwBarValueMax;
-      
       DWORD64 m_dw64MaxValue;
       DWORD64 m_dw64CurrentValue;
       
       bool show();
-      
     };
   }
 }
index 309c8cdd7be4b05eca2c092d6ab15f35b9c89929..63b104b0cc644a4ac7f880598c461e825b35910c 100644 (file)
 using namespace rfb;
 using namespace rfb::win32;
 
-FTProgress::FTProgress()
+FTProgress::FTProgress(HWND hwndParent)
 {
+  m_bInitialized = false;
+  m_hwndParent = hwndParent;
 
+  m_pSingleProgress = NULL;
+  m_pGeneralProgress = NULL;
 }
 
 FTProgress::~FTProgress()
 {
+
 }
 
 bool
 FTProgress::initialize(DWORD64 totalMaxValue, DWORD maxValue)
 {
-  return false;
+  m_bInitialized = false;
+
+  m_hwndSinglePercent = GetDlgItem(m_hwndParent, IDC_FTSINGLEPERCENT);
+  m_hwndGeneralPercent = GetDlgItem(m_hwndParent, IDC_FTGENERALPERCENT);
+
+  if ((m_hwndSinglePercent == NULL) || (m_hwndGeneralPercent == NULL)) return false;
+  if (!createProgressBarObjects()) return false;
+
+  if (!initProgressControls(totalMaxValue, maxValue)) return false;
+
+  m_bInitialized = true;
+  return true;
 }
 
 void
@@ -51,4 +68,70 @@ void
 FTProgress::clear()
 {
 
+}
+
+bool 
+FTProgress::createProgressBarObjects()
+{
+  if ((m_pSingleProgress != NULL) || (m_pGeneralProgress != NULL)) {
+    return false;
+  } else {
+    HWND hwndSingleProgr = GetDlgItem(m_hwndParent, IDC_FTSINGLEPROGRESS);
+    HWND hwndGeneralProgr = GetDlgItem(m_hwndParent, IDC_FTGENERALPROGRESS);
+    
+    m_pSingleProgress = new ProgressControl(hwndSingleProgr);
+    if (m_pSingleProgress == NULL) return false;
+    
+    m_pGeneralProgress = new ProgressControl(hwndGeneralProgr);
+    if (m_pGeneralProgress == NULL) {
+      delete m_pSingleProgress;
+      m_pSingleProgress = NULL;
+      return false;
+    }
+  }
+  return true;
+}
+
+bool 
+FTProgress::destroyProgressBarObjects()
+{
+  if (m_pSingleProgress != NULL) {
+    delete m_pSingleProgress;
+  }
+
+  if (m_pGeneralProgress != NULL) {
+    delete m_pGeneralProgress;
+  }
+
+  return true;
+}
+
+bool
+FTProgress::initProgressControls(DWORD64 totalMaxValue, DWORD maxValue)
+{
+  bool bResult = true;
+
+  if ((m_pSingleProgress != NULL) && (m_pGeneralProgress != NULL)) {
+    if (!m_pSingleProgress->init(totalMaxValue, 0)) return false;
+    if (!m_pGeneralProgress->init(maxValue, 0)) return false;
+  } else {
+    return false;
+  }
+
+  setProgressText();
+  return true;
+}
+
+void
+FTProgress::setProgressText()
+{
+       char buf[16];
+
+    int percent = m_pSingleProgress->getCurrentPercent();
+       sprintf(buf, "%d%%", percent);
+       SetWindowText(m_hwndSinglePercent, buf);
+
+    percent = m_pGeneralProgress->getCurrentPercent();
+       sprintf(buf, "%d%%", percent);
+       SetWindowText(m_hwndGeneralPercent, buf);
 }
\ No newline at end of file
index 74243dec89a79c5e68ba6bbb5294ce5e43554a95..2aef36d77d3c28cb9b13338d00ee9a39c219c643 100644 (file)
@@ -26,7 +26,9 @@
 
 #include <windows.h>
 #include <commctrl.h>
+#include <stdio.h>
 
+#include <rfb_win32/ProgressControl.h>
 #include <vncviewer/resource.h>
 
 namespace rfb {
@@ -34,12 +36,28 @@ namespace rfb {
     class FTProgress
     {
     public:
-      FTProgress();
+      FTProgress(HWND hwndParent);
       ~FTProgress();
       
       bool initialize(DWORD64 totalMaxValue, DWORD maxValue);
       void increase(DWORD value);
       void clear();
+
+    private:
+      ProgressControl *m_pSingleProgress;
+      ProgressControl *m_pGeneralProgress;
+
+      HWND m_hwndParent;
+      HWND m_hwndSinglePercent;
+      HWND m_hwndGeneralPercent;
+
+      bool m_bInitialized;
+
+      bool initProgressControls(DWORD64 totalMaxValue, DWORD maxValue);
+
+      void setProgressText();
+      bool createProgressBarObjects();
+      bool destroyProgressBarObjects();
     };
   }
 }
index bb19dcc79656ebb5ebf0118000f8ca8f610d2e1d..fb23e8e4d42f26acf9629a373541c2a220bacf66 100644 (file)
 #define IDC_FTREMOTEUP                  1061
 #define IDC_FTREMOTEBROWSE              1062
 #define IDC_FTPROGRESS                  1063
+#define IDC_FTGENERALPROGRESS           1063
 #define IDC_PROGRESS                    1064
+#define IDC_FTSINGLEPROGRESS            1064
 #define IDC_FTSTATUS                    1065
 #define IDC_FTCURRENTPROCENT            1066
+#define IDC_FTSINGLEPERCENT             1066
 #define IDC_FTTOTALPROCENT              1067
+#define IDC_FTGENERALPERCENT            1067
 #define IDC_FTUPLOAD                    1072
 #define IDC_FTCANCEL                    1073
 #define IDC_FTDOWNLOAD                  1074
index 784fa5ff24506a16909485b3ddb57fd3fe2310ab..cf3c512af281a33c0848d4a4b35aaa6b559ab267 100644 (file)
@@ -31,7 +31,7 @@ STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION |
     WS_SYSMENU
 EXSTYLE WS_EX_CONTEXTHELP | WS_EX_CONTROLPARENT
 CAPTION "TightVNC File Transfers"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Sans Serif"
 BEGIN
     CTEXT           "Local Computer",IDC_FTLOCALLABEL,7,7,200,10
     CTEXT           "TightVNC Server",IDC_FTREMOTELABEL,323,7,200,10
@@ -53,12 +53,12 @@ BEGIN
     PUSHBUTTON      "...",IDC_FTREMOTEBROWSE,481,20,14,12
     LTEXT           "File Transfer",IDC_STATIC,7,245,40,8
     LTEXT           "Current File",IDC_STATIC,323,245,36,8
-    CONTROL         "Progress1",IDC_FTPROGRESS,"msctls_progress32",WS_BORDER,
-                    55,244,128,10
-    CONTROL         "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,
-                    370,244,128,10
-    CTEXT           "0%",IDC_FTTOTALPROCENT,189,245,18,8
-    CTEXT           "0%",IDC_FTCURRENTPROCENT,505,245,18,8
+    CONTROL         "Progress1",IDC_FTGENERALPROGRESS,"msctls_progress32",
+                    WS_BORDER,55,244,128,10
+    CONTROL         "Progress1",IDC_FTSINGLEPROGRESS,"msctls_progress32",
+                    WS_BORDER,370,244,128,10
+    CTEXT           "0%",IDC_FTGENERALPERCENT,189,245,18,8
+    CTEXT           "0%",IDC_FTSINGLEPERCENT,505,245,18,8
     COMBOBOX        IDC_FTSTATUS,7,262,516,30,CBS_DROPDOWNLIST | CBS_SORT | 
                     WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "Upload Files and Folders",IDC_FTUPLOAD,218,66,94,12,
@@ -510,6 +510,15 @@ END
 #endif    // APSTUDIO_INVOKED
 
 
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON                ICON    DISCARDABLE     "vncviewer.ico"
+
 #ifdef APSTUDIO_INVOKED
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -536,15 +545,6 @@ END
 #endif    // APSTUDIO_INVOKED
 
 
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_ICON                ICON    DISCARDABLE     "vncviewer.ico"
-
 #ifndef _MAC
 /////////////////////////////////////////////////////////////////////////////
 //