2 * Copyright (c) 2001, Gary R. Van Sickle.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
12 * Written by Gary R. Van Sickle <g.r.vansickle@worldnet.att.net>
16 // This is the implementation of the ThreeBarProgressPage class. It is a fairly generic
17 // progress indicator property page with three progress bars.
26 #include "propsheet.h"
30 ThreeBarProgressPage::Create ()
32 return PropertyPage::Create (IDD_INSTATUS
);
36 ThreeBarProgressPage::OnInit ()
38 // Get HWNDs to the dialog controls
39 ins_action
= GetDlgItem (IDC_INS_ACTION
);
40 ins_pkgname
= GetDlgItem (IDC_INS_PKG
);
41 ins_filename
= GetDlgItem (IDC_INS_FILE
);
43 ins_pprogress
= GetDlgItem (IDC_INS_PPROGRESS
);
44 ins_iprogress
= GetDlgItem (IDC_INS_IPROGRESS
);
45 ins_diskfull
= GetDlgItem (IDC_INS_DISKFULL
);
47 ins_bl_package
= GetDlgItem (IDC_INS_BL_PACKAGE
);
48 ins_bl_total
= GetDlgItem (IDC_INS_BL_TOTAL
);
49 ins_bl_disk
= GetDlgItem (IDC_INS_BL_DISK
);
53 ThreeBarProgressPage::SetText1 (const TCHAR
* t
)
55 SetWindowText (ins_action
, t
);
59 ThreeBarProgressPage::SetText2 (const TCHAR
* t
)
61 SetWindowText (ins_pkgname
, t
);
65 ThreeBarProgressPage::SetText3 (const TCHAR
* t
)
67 SetWindowText (ins_filename
, t
);
71 ThreeBarProgressPage::SetBar1 (long progress
, long max
)
73 int percent
= (int) (100.0 * ((double) progress
) / (double) max
);
74 SendMessage (ins_pprogress
, PBM_SETPOS
, (WPARAM
) percent
, 0);
78 ThreeBarProgressPage::SetBar2 (long progress
, long max
)
80 int percent
= (int) (100.0 * ((double) progress
) / (double) max
);
81 SendMessage (ins_iprogress
, PBM_SETPOS
, (WPARAM
) percent
, 0);
85 ThreeBarProgressPage::SetBar3 (long progress
, long max
)
87 int percent
= (int) (100.0 * ((double) progress
) / (double) max
);
88 SendMessage (ins_diskfull
, PBM_SETPOS
, (WPARAM
) percent
, 0);
92 ThreeBarProgressPage::EnableSingleBar (bool enable
)
94 // Switch to/from single bar mode
95 ShowWindow (ins_bl_total
, enable
? SW_HIDE
: SW_SHOW
);
96 ShowWindow (ins_bl_disk
, enable
? SW_HIDE
: SW_SHOW
);
97 ShowWindow (ins_iprogress
, enable
? SW_HIDE
: SW_SHOW
);
98 ShowWindow (ins_diskfull
, enable
? SW_HIDE
: SW_SHOW
);
102 ThreeBarProgressPage::OnActivate ()
104 // Disable back and next buttons
105 GetOwner ()->SetButtons (0);
114 case WM_APP_START_SITE_INFO_DOWNLOAD
:
115 case WM_APP_START_SETUP_INI_DOWNLOAD
:
116 // For these tasks, show only a single progress bar.
120 // Show the normal 3-bar view by default
121 EnableSingleBar (false);
125 Window::PostMessage (task
);
129 ThreeBarProgressPage::OnMessageApp (UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
133 case WM_APP_START_DOWNLOAD
:
135 // Start the package download thread.
136 do_download (GetInstance (), GetHWND ());
139 case WM_APP_DOWNLOAD_THREAD_COMPLETE
:
141 if (lParam
== IDD_S_INSTALL
)
143 // Download is complete and we want to go on to the install.
144 Window::PostMessage (WM_APP_START_INSTALL
);
146 else if (lParam
!= 0)
148 // Download failed for some reason, go back to site selection page
149 GetOwner ()->SetActivePageByID (lParam
);
153 // Was a download-only, and is complete or failed.
154 GetOwner ()->PressButton (PSBTN_CANCEL
);
158 case WM_APP_START_INSTALL
:
160 // Start the install thread.
161 do_install (GetInstance (), GetHWND ());
164 case WM_APP_INSTALL_THREAD_COMPLETE
:
166 // Re-enable and "Push" the Next button
167 GetOwner ()->SetButtons (PSWIZB_NEXT
);
168 GetOwner ()->PressButton (PSBTN_NEXT
);
171 case WM_APP_START_SITE_INFO_DOWNLOAD
:
173 do_download_site_info (GetInstance (), GetHWND ());
176 case WM_APP_SITE_INFO_DOWNLOAD_COMPLETE
:
178 GetOwner ()->SetActivePageByID (lParam
);
181 case WM_APP_START_SETUP_INI_DOWNLOAD
:
183 do_ini (GetInstance (), GetHWND ());
186 case WM_APP_SETUP_INI_DOWNLOAD_COMPLETE
:
188 if (lParam
== IDD_S_FROM_CWD
)
190 // There isn't actually a dialog template named this
191 do_fromcwd (GetInstance (), GetHWND ());
195 GetOwner ()->SetActivePageByID (lParam
);