blob: b4c461ad99e67d3963f0b9feee945f1eb13c7cde [file] [log] [blame]
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +00001/* Copyright (C) 2005 TightVNC Team. All Rights Reserved.
2 *
3 * This is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This software is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this software; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 * USA.
17 *
18 * TightVNC distribution homepage on the Web: http://www.tightvnc.com/
19 *
20 */
21
22// -=- FTProgress.cxx
23
24#include <vncviewer/FTProgress.h>
25
26using namespace rfb;
27using namespace rfb::win32;
28
Dennis Syrovatsky93196042005-11-07 08:09:54 +000029FTProgress::FTProgress(HWND hwndParent)
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000030{
Dennis Syrovatsky93196042005-11-07 08:09:54 +000031 m_bInitialized = false;
32 m_hwndParent = hwndParent;
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000033
Dennis Syrovatsky93196042005-11-07 08:09:54 +000034 m_pSingleProgress = NULL;
35 m_pGeneralProgress = NULL;
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000036}
37
38FTProgress::~FTProgress()
39{
Dennis Syrovatsky2d350412005-11-07 08:21:03 +000040 destroyProgressBarObjects();
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000041}
42
43bool
44FTProgress::initialize(DWORD64 totalMaxValue, DWORD maxValue)
45{
Dennis Syrovatsky93196042005-11-07 08:09:54 +000046 m_bInitialized = false;
47
48 m_hwndSinglePercent = GetDlgItem(m_hwndParent, IDC_FTSINGLEPERCENT);
49 m_hwndGeneralPercent = GetDlgItem(m_hwndParent, IDC_FTGENERALPERCENT);
50
51 if ((m_hwndSinglePercent == NULL) || (m_hwndGeneralPercent == NULL)) return false;
52
53 if (!createProgressBarObjects()) return false;
54
55 if (!initProgressControls(totalMaxValue, maxValue)) return false;
56
57 m_bInitialized = true;
58 return true;
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000059}
60
61void
62FTProgress::increase(DWORD value)
63{
Dennis Syrovatsky2d350412005-11-07 08:21:03 +000064 if (!m_bInitialized) return;
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000065
Dennis Syrovatsky2d350412005-11-07 08:21:03 +000066 m_pSingleProgress->increase(value);
67 m_pGeneralProgress->increase(value);
68
69 setProgressText();
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000070}
71
72void
Dennis Syrovatsky2d350412005-11-07 08:21:03 +000073FTProgress::clearSingle()
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000074{
Dennis Syrovatsky2d350412005-11-07 08:21:03 +000075 if (!m_bInitialized) return;
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +000076
Dennis Syrovatsky2d350412005-11-07 08:21:03 +000077 m_pSingleProgress->clear();
78
79 setProgressText();
80}
81
82void
83FTProgress::clearAll()
84{
85 if (!m_bInitialized) return;
86
87 m_pSingleProgress->clear();
88 m_pGeneralProgress->clear();
89
90 setProgressText();
Dennis Syrovatsky93196042005-11-07 08:09:54 +000091}
92
93bool
94FTProgress::createProgressBarObjects()
95{
96 if ((m_pSingleProgress != NULL) || (m_pGeneralProgress != NULL)) {
97 return false;
98 } else {
99 HWND hwndSingleProgr = GetDlgItem(m_hwndParent, IDC_FTSINGLEPROGRESS);
100 HWND hwndGeneralProgr = GetDlgItem(m_hwndParent, IDC_FTGENERALPROGRESS);
101
102 m_pSingleProgress = new ProgressControl(hwndSingleProgr);
103 if (m_pSingleProgress == NULL) return false;
104
105 m_pGeneralProgress = new ProgressControl(hwndGeneralProgr);
106 if (m_pGeneralProgress == NULL) {
107 delete m_pSingleProgress;
108 m_pSingleProgress = NULL;
109 return false;
110 }
111 }
112 return true;
113}
114
115bool
116FTProgress::destroyProgressBarObjects()
117{
Dennis Syrovatsky2d350412005-11-07 08:21:03 +0000118 clearAll();
119
Dennis Syrovatsky93196042005-11-07 08:09:54 +0000120 if (m_pSingleProgress != NULL) {
121 delete m_pSingleProgress;
122 }
123
124 if (m_pGeneralProgress != NULL) {
125 delete m_pGeneralProgress;
126 }
127
128 return true;
129}
130
131bool
132FTProgress::initProgressControls(DWORD64 totalMaxValue, DWORD maxValue)
133{
134 bool bResult = true;
135
136 if ((m_pSingleProgress != NULL) && (m_pGeneralProgress != NULL)) {
137 if (!m_pSingleProgress->init(totalMaxValue, 0)) return false;
138 if (!m_pGeneralProgress->init(maxValue, 0)) return false;
139 } else {
140 return false;
141 }
142
143 setProgressText();
144 return true;
145}
146
147void
148FTProgress::setProgressText()
149{
150 char buf[16];
151
152 int percent = m_pSingleProgress->getCurrentPercent();
153 sprintf(buf, "%d%%", percent);
154 SetWindowText(m_hwndSinglePercent, buf);
155
156 percent = m_pGeneralProgress->getCurrentPercent();
157 sprintf(buf, "%d%%", percent);
158 SetWindowText(m_hwndGeneralPercent, buf);
Dennis Syrovatsky803e02c2005-11-06 05:35:27 +0000159}