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 bool 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::SetText4 (const TCHAR
* t
)
73 ::SetWindowText (ins_bl_package
, t
);
77 ThreeBarProgressPage::SetBar1 (long progress
, long max
)
79 int percent
= (int) (100.0 * ((double) progress
) / (double) max
);
80 SendMessage (ins_pprogress
, PBM_SETPOS
, (WPARAM
) percent
, 0);
84 ThreeBarProgressPage::SetBar2 (long progress
, long max
)
86 int percent
= (int) (100.0 * ((double) progress
) / (double) max
);
87 SendMessage (ins_iprogress
, PBM_SETPOS
, (WPARAM
) percent
, 0);
89 s
.Format (IDS_CYGWIN_SETUP_WITH_PROGRESS
, percent
);
90 GetOwner ()->SetWindowText (s
.c_str ());
94 ThreeBarProgressPage::SetBar3 (long progress
, long max
)
96 int percent
= (int) (100.0 * ((double) progress
) / (double) max
);
97 SendMessage (ins_diskfull
, PBM_SETPOS
, (WPARAM
) percent
, 0);
101 ThreeBarProgressPage::EnableSingleBar (bool enable
)
103 // Switch to/from single bar mode
104 ShowWindow (ins_bl_total
, enable
? SW_HIDE
: SW_SHOW
);
105 ShowWindow (ins_bl_disk
, enable
? SW_HIDE
: SW_SHOW
);
106 ShowWindow (ins_iprogress
, enable
? SW_HIDE
: SW_SHOW
);
107 ShowWindow (ins_diskfull
, enable
? SW_HIDE
: SW_SHOW
);
111 ThreeBarProgressPage::OnActivate ()
113 // Disable back and next buttons
114 GetOwner ()->SetButtons (0);
123 case WM_APP_START_SITE_INFO_DOWNLOAD
:
124 case WM_APP_START_SETUP_INI_DOWNLOAD
:
125 // For these tasks, show only a single progress bar.
129 // Show the normal 3-bar view by default
130 EnableSingleBar (false);
134 Window::PostMessage (task
);
138 ThreeBarProgressPage::OnMessageApp (UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
142 case WM_APP_START_DOWNLOAD
:
144 // Start the package download thread.
145 do_download (GetInstance (), GetHWND ());
148 case WM_APP_DOWNLOAD_THREAD_COMPLETE
:
150 if (lParam
== IDD_S_INSTALL
)
152 // Download is complete and we want to go on to the install.
153 Window::PostMessage (WM_APP_START_INSTALL
);
155 else if (lParam
!= 0)
157 // Download failed for some reason, go back to site selection page
158 GetOwner ()->SetActivePageByID (lParam
);
162 // Was a download-only, and is complete or failed.
163 GetOwner ()->PressButton (PSBTN_CANCEL
);
167 case WM_APP_START_INSTALL
:
169 // Start the install thread.
170 do_install (GetInstance (), GetHWND ());
173 case WM_APP_INSTALL_THREAD_COMPLETE
:
175 // Re-enable and "Push" the Next button
176 GetOwner ()->SetButtons (PSWIZB_NEXT
);
177 GetOwner ()->PressButton (PSBTN_NEXT
);
180 case WM_APP_START_SITE_INFO_DOWNLOAD
:
182 do_download_site_info (GetInstance (), GetHWND ());
185 case WM_APP_SITE_INFO_DOWNLOAD_COMPLETE
:
187 GetOwner ()->SetActivePageByID (lParam
);
190 case WM_APP_START_SETUP_INI_DOWNLOAD
:
192 do_ini (GetInstance (), GetHWND ());
195 case WM_APP_SETUP_INI_DOWNLOAD_COMPLETE
:
197 if (lParam
== IDD_S_FROM_CWD
)
199 // There isn't actually a dialog template named this
200 do_fromcwd (GetInstance (), GetHWND ());
204 GetOwner ()->SetActivePageByID (lParam
);