VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main/Forms/VolumeLocationWizardPage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Main/Forms/VolumeLocationWizardPage.cpp')
-rw-r--r--src/Main/Forms/VolumeLocationWizardPage.cpp98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/Main/Forms/VolumeLocationWizardPage.cpp b/src/Main/Forms/VolumeLocationWizardPage.cpp
new file mode 100644
index 00000000..c3992827
--- /dev/null
+++ b/src/Main/Forms/VolumeLocationWizardPage.cpp
@@ -0,0 +1,98 @@
+/*
+ Copyright (c) 2008 TrueCrypt Developers Association. All rights reserved.
+
+ Governed by the TrueCrypt License 3.0 the full text of which is contained in
+ the file License.txt included in TrueCrypt binary and source code distribution
+ packages.
+*/
+
+#include "System.h"
+#include "Main/GraphicUserInterface.h"
+#include "Main/VolumeHistory.h"
+#include "VolumeLocationWizardPage.h"
+
+namespace TrueCrypt
+{
+ VolumeLocationWizardPage::VolumeLocationWizardPage (wxPanel* parent, VolumeHostType::Enum hostType, bool selectExisting)
+ : VolumeLocationWizardPageBase (parent),
+ SelectExisting (selectExisting)
+ {
+ switch (hostType)
+ {
+ case VolumeHostType::Device:
+ SelectFileButton->Show (false);
+ break;
+
+ case VolumeHostType::File:
+ SelectDeviceButton->Show (false);
+ break;
+
+ default:
+ break;
+ }
+
+ Gui->PreferencesUpdatedEvent.Connect (EventConnector <VolumeLocationWizardPage> (this, &VolumeLocationWizardPage::OnPreferencesUpdated));
+ VolumeHistory::ConnectComboBox (VolumePathComboBox);
+
+ NoHistoryCheckBox->SetValue (!Gui->GetPreferences().SaveHistory);
+ }
+
+ VolumeLocationWizardPage::~VolumeLocationWizardPage ()
+ {
+ Gui->PreferencesUpdatedEvent.Disconnect (this);
+ VolumeHistory::DisconnectComboBox (VolumePathComboBox);
+ }
+
+ void VolumeLocationWizardPage::OnNoHistoryCheckBoxClick (wxCommandEvent& event)
+ {
+ UserPreferences prefs = Gui->GetPreferences();
+ prefs.SaveHistory = !event.IsChecked();
+ Gui->SetPreferences (prefs);
+
+ if (event.IsChecked())
+ {
+ try
+ {
+ VolumeHistory::Clear();
+ }
+ catch (exception &e) { Gui->ShowError (e); }
+ }
+ }
+
+ void VolumeLocationWizardPage::OnPageChanging (bool forward)
+ {
+ if (forward)
+ {
+ VolumePath path = GetVolumePath();
+ if (!path.IsEmpty())
+ VolumeHistory::Add (path);
+ }
+ }
+
+ void VolumeLocationWizardPage::OnPreferencesUpdated (EventArgs &args)
+ {
+ NoHistoryCheckBox->SetValue (!Gui->GetPreferences().SaveHistory);
+ }
+
+ void VolumeLocationWizardPage::OnSelectFileButtonClick (wxCommandEvent& event)
+ {
+ FilePath path = Gui->SelectVolumeFile (this, !SelectExisting);
+
+ if (!path.IsEmpty())
+ SetVolumePath (path);
+ }
+
+ void VolumeLocationWizardPage::OnSelectDeviceButtonClick (wxCommandEvent& event)
+ {
+ DevicePath path = Gui->SelectDevice (this);
+
+ if (!path.IsEmpty())
+ SetVolumePath (path);
+ }
+
+ void VolumeLocationWizardPage::SetVolumePath (const VolumePath &path)
+ {
+ VolumePathComboBox->SetValue (wstring (path));
+ PageUpdatedEvent.Raise();
+ }
+}