VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main/Forms/VolumePimWizardPage.h
blob: 542a2e3aec131a0f0d31e3495e5ea7dca2cd021f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
 Copyright (c) 2015-2016 Mounir IDRASSI for the VeraCrypt project.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
*/

#ifndef VC_HEADER_Main_Forms_VolumePimWizardPage
#define VC_HEADER_Main_Forms_VolumePimWizardPage

#include "Forms.h"

namespace VeraCrypt
{
	class VolumePimWizardPage : public VolumePimWizardPageBase
	{
	public:
		VolumePimWizardPage (wxPanel* parent);
		~VolumePimWizardPage ();

		int GetVolumePim () const;
		void SetVolumePim (int pim);
		bool IsValid ();
		void SetMaxStaticTextWidth (int width) { InfoStaticText->Wrap (width); }
		void SetPageText (const wxString &text) { InfoStaticText->SetLabel (text); }
		void OnDisplayPimCheckBoxClick( wxCommandEvent& event );

	protected:
		void SetPimValidator ();
		void OnPimChanged  (wxCommandEvent& event);
		void OnPimValueChanged  (int pim);
	};
}

#endif // VC_HEADER_Main_Forms_VolumePimWizardPage
ions to the original source code (contained in this file) and all other portions of this file are Copyright (c) 2013-2017 IDRIX and are governed by the Apache License 2.0 the full text of which is contained in the file License.txt included in VeraCrypt binary and source code distribution packages. */ #include "System.h" #include "Main/GraphicUserInterface.h" #include "KeyfilesPanel.h" #include "SecurityTokenKeyfilesDialog.h" namespace VeraCrypt { KeyfilesPanel::KeyfilesPanel (wxWindow* parent, shared_ptr <KeyfileList> keyfiles) : KeyfilesPanelBase (parent) { KeyfilesListCtrl->InsertColumn (0, LangString["KEYFILE"], wxLIST_FORMAT_LEFT, 1); Gui->SetListCtrlHeight (KeyfilesListCtrl, 10); Layout(); Fit(); if (keyfiles) { foreach_ref (const Keyfile &k, *keyfiles) { vector <wstring> fields; fields.push_back (FilesystemPath (k)); Gui->AppendToListCtrl (KeyfilesListCtrl, fields); } } class FileDropTarget : public wxFileDropTarget { public: FileDropTarget (KeyfilesPanel *panel) : Panel (panel) { } wxDragResult OnDragOver (wxCoord x, wxCoord y, wxDragResult def) { return wxDragLink; } bool OnDropFiles (wxCoord x, wxCoord y, const wxArrayString &filenames) { foreach (const wxString &f, filenames) Panel->AddKeyfile (make_shared <Keyfile> (wstring (f))); return true; } protected: KeyfilesPanel *Panel; }; SetDropTarget (new FileDropTarget (this)); KeyfilesListCtrl->SetDropTarget (new FileDropTarget (this)); #ifdef TC_MACOSX foreach (wxWindow *c, GetChildren()) c->SetDropTarget (new FileDropTarget (this)); #endif UpdateButtons(); } void KeyfilesPanel::AddKeyfile (shared_ptr <Keyfile> keyfile) { vector <wstring> fields; fields.push_back (FilesystemPath (*keyfile)); Gui->AppendToListCtrl (KeyfilesListCtrl, fields); UpdateButtons(); } shared_ptr <KeyfileList> KeyfilesPanel::GetKeyfiles () const { make_shared_auto (KeyfileList, keyfiles); for (long i = 0; i < KeyfilesListCtrl->GetItemCount(); i++) keyfiles->push_back (make_shared <Keyfile> (wstring (KeyfilesListCtrl->GetItemText (i)))); return keyfiles; } void KeyfilesPanel::OnAddDirectoryButtonClick (wxCommandEvent& event) { DirectoryPath dir = Gui->SelectDirectory (this, LangString["SELECT_KEYFILE_PATH"]); if (!dir.IsEmpty()) { vector <wstring> fields; fields.push_back (dir); Gui->AppendToListCtrl (KeyfilesListCtrl, fields); UpdateButtons(); } } void KeyfilesPanel::OnAddFilesButtonClick (wxCommandEvent& event) { FilePathList files = Gui->SelectFiles (this, LangString["SELECT_KEYFILES"], false, true); foreach_ref (const FilePath &f, files) { vector <wstring> fields; fields.push_back (f); Gui->AppendToListCtrl (KeyfilesListCtrl, fields); } UpdateButtons(); } void KeyfilesPanel::OnAddSecurityTokenSignatureButtonClick (wxCommandEvent& event) { try { SecurityTokenKeyfilesDialog dialog (this); if (dialog.ShowModal() == wxID_OK) { foreach (const SecurityTokenKeyfilePath &path, dialog.GetSelectedSecurityTokenKeyfilePaths()) { vector <wstring> fields; fields.push_back (path); Gui->AppendToListCtrl (KeyfilesListCtrl, fields); } UpdateButtons(); } } catch (exception &e) { Gui->ShowError (e); } } void KeyfilesPanel::OnListSizeChanged (wxSizeEvent& event) { list <int> colPermilles; colPermilles.push_back (1000); Gui->SetListCtrlColumnWidths (KeyfilesListCtrl, colPermilles); event.Skip(); } void KeyfilesPanel::OnRemoveAllButtonClick (wxCommandEvent& event) { KeyfilesListCtrl->DeleteAllItems(); UpdateButtons(); } void KeyfilesPanel::OnRemoveButtonClick (wxCommandEvent& event) { long offset = 0; foreach (long item, Gui->GetListCtrlSelectedItems (KeyfilesListCtrl)) KeyfilesListCtrl->DeleteItem (item - offset++); UpdateButtons(); } void KeyfilesPanel::UpdateButtons () { RemoveAllButton->Enable (KeyfilesListCtrl->GetItemCount() > 0); RemoveButton->Enable (KeyfilesListCtrl->GetSelectedItemCount() > 0); } }