|
|
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.