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;
}
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
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();
-
};
}
}
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
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
#include <windows.h>
#include <commctrl.h>
+#include <stdio.h>
+#include <rfb_win32/ProgressControl.h>
#include <vncviewer/resource.h>
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();
};
}
}
#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
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
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,
#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
/////////////////////////////////////////////////////////////////////////////
//
#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
/////////////////////////////////////////////////////////////////////////////
//