|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
4: Governed by the TrueCrypt License 2.4 the full text of which is contained
5: in the file License.txt included in TrueCrypt binary and source code
6: distribution packages.
7: */
8:
9: #include "System.h"
10: #include "Main/GraphicUserInterface.h"
11: #include "ProgressWizardPage.h"
12:
13: namespace TrueCrypt
14: {
15: ProgressWizardPage::ProgressWizardPage (wxPanel* parent, bool enableAbort)
16: : ProgressWizardPageBase (parent),
17: PreviousGaugeValue (0),
18: ProgressBarRange (1),
19: RealProgressBarRange (1)
20: {
21: #ifdef TC_MACOSX
22: ProgressGauge->SetMinSize (wxSize (-1, 12)); // OS X apparently supports only up to 12px thick progress bars
23: #else
24: ProgressGauge->SetMinSize (wxSize (-1, Gui->GetCharHeight (this) * 2));
25: #endif
26:
27: ProgressValue.Set (0);
28: ProgressGauge->SetValue (0);
29:
30: AbortButton->Show (enableAbort);
31:
32: class Timer : public wxTimer
33: {
34: public:
35: Timer (ProgressWizardPage *page) : Page (page) { }
36:
37: void Notify()
38: {
39: Page->OnTimer();
40: }
41:
42: ProgressWizardPage *Page;
43: };
44:
45: mTimer.reset (dynamic_cast <wxTimer *> (new Timer (this)));
46: mTimer->Start (30);
47: }
48:
49: void ProgressWizardPage::OnAbortButtonClick (wxCommandEvent& event)
50: {
51: AbortEvent.Raise();
52: }
53:
54: void ProgressWizardPage::OnTimer ()
55: {
56: uint64 value = ProgressValue.Get();
57: int gaugeValue = static_cast <int> (value * RealProgressBarRange / ProgressBarRange);
58:
59: if (value == ProgressBarRange)
60: gaugeValue = RealProgressBarRange; // Prevent round-off error
61:
62: if (gaugeValue != PreviousGaugeValue)
63: {
64: ProgressGauge->SetValue (gaugeValue);
65: PreviousGaugeValue = gaugeValue;
66: }
67: }
68:
69: void ProgressWizardPage::SetMaxStaticTextWidth (int width)
70: {
71: InfoStaticText->Wrap (width);
72: }
73:
74: void ProgressWizardPage::SetProgressRange (uint64 progressBarRange)
75: {
76: ProgressBarRange = progressBarRange;
77: RealProgressBarRange = ProgressGauge->GetSize().GetWidth();
78: ProgressGauge->SetRange (RealProgressBarRange);
79: }
80: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.