VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main/Forms/WaitDialog.cpp
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2014-12-25 22:54:14 +0100
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2014-12-26 00:51:52 +0100
commitd90d9f0c401a21c85a525aaca0b97df8f7955db8 (patch)
tree699016cd3928010352b3cbad97c1a7c94c4e8f13 /src/Main/Forms/WaitDialog.cpp
parentbbcc944855d7824812af3a10fd447ccefc534a71 (diff)
downloadVeraCrypt-d90d9f0c401a21c85a525aaca0b97df8f7955db8.tar.gz
VeraCrypt-d90d9f0c401a21c85a525aaca0b97df8f7955db8.zip
Linux/MacOSX: Implement waiting dialog for lengthy operations in order to have a better user experience.
Diffstat (limited to 'src/Main/Forms/WaitDialog.cpp')
-rwxr-xr-xsrc/Main/Forms/WaitDialog.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/Main/Forms/WaitDialog.cpp b/src/Main/Forms/WaitDialog.cpp
new file mode 100755
index 00000000..a8290d10
--- /dev/null
+++ b/src/Main/Forms/WaitDialog.cpp
@@ -0,0 +1,94 @@
+/*
+ Copyright (c) 2014 IDRIX. All rights reserved.
+
+ Governed by the VeraCrypt License 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 "Volume/EncryptionModeXTS.h"
+#include "Main/GraphicUserInterface.h"
+#include "Common/SecurityToken.h"
+#include "WaitDialog.h"
+
+namespace VeraCrypt
+{
+ DEFINE_EVENT_TYPE(wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED)
+
+ wxThread::ExitCode WaitThread::Entry()
+ {
+ wxCommandEvent finishEvent( wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED,0);
+
+ m_pRoutine->Execute();
+ wxQueueEvent (m_pHandler, new wxCommandEvent( wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED,0));
+ return (wxThread::ExitCode)0; // success
+ }
+
+ void WaitDialog::ThrowException(Exception* ex)
+ {
+ #define VC_CONVERT_EXCEPTION(NAME) if (dynamic_cast<NAME*> (ex)) throw (NAME&) *ex;
+ VC_CONVERT_EXCEPTION (PasswordIncorrect);
+ VC_CONVERT_EXCEPTION (PasswordKeyfilesIncorrect);
+ VC_CONVERT_EXCEPTION (PasswordOrKeyboardLayoutIncorrect);
+ VC_CONVERT_EXCEPTION (PasswordOrMountOptionsIncorrect);
+ VC_CONVERT_EXCEPTION (ProtectionPasswordIncorrect);
+ VC_CONVERT_EXCEPTION (ProtectionPasswordKeyfilesIncorrect);
+ VC_CONVERT_EXCEPTION (PasswordEmpty);
+ VC_CONVERT_EXCEPTION (PasswordTooLong);
+ VC_CONVERT_EXCEPTION (UnportablePassword);
+ VC_CONVERT_EXCEPTION (ElevationFailed);
+ VC_CONVERT_EXCEPTION (RootDeviceUnavailable);
+ VC_CONVERT_EXCEPTION (DriveLetterUnavailable);
+ VC_CONVERT_EXCEPTION (DriverError);
+ VC_CONVERT_EXCEPTION (EncryptedSystemRequired);
+ VC_CONVERT_EXCEPTION (HigherFuseVersionRequired);
+ VC_CONVERT_EXCEPTION (KernelCryptoServiceTestFailed);
+ VC_CONVERT_EXCEPTION (LoopDeviceSetupFailed);
+ VC_CONVERT_EXCEPTION (MountPointRequired);
+ VC_CONVERT_EXCEPTION (MountPointUnavailable);
+ VC_CONVERT_EXCEPTION (NoDriveLetterAvailable);
+ VC_CONVERT_EXCEPTION (TemporaryDirectoryFailure);
+ VC_CONVERT_EXCEPTION (UnsupportedSectorSizeHiddenVolumeProtection);
+ VC_CONVERT_EXCEPTION (UnsupportedSectorSizeNoKernelCrypto);
+ VC_CONVERT_EXCEPTION (VolumeAlreadyMounted);
+ VC_CONVERT_EXCEPTION (VolumeSlotUnavailable);
+ VC_CONVERT_EXCEPTION (UserInterfaceException);
+ VC_CONVERT_EXCEPTION (MissingArgument);
+ VC_CONVERT_EXCEPTION (NoItemSelected);
+ VC_CONVERT_EXCEPTION (StringFormatterException);
+ VC_CONVERT_EXCEPTION (ExecutedProcessFailed);
+ VC_CONVERT_EXCEPTION (AlreadyInitialized);
+ VC_CONVERT_EXCEPTION (AssertionFailed);
+ VC_CONVERT_EXCEPTION (ExternalException);
+ VC_CONVERT_EXCEPTION (InsufficientData);
+ VC_CONVERT_EXCEPTION (NotApplicable);
+ VC_CONVERT_EXCEPTION (NotImplemented);
+ VC_CONVERT_EXCEPTION (NotInitialized);
+ VC_CONVERT_EXCEPTION (ParameterIncorrect);
+ VC_CONVERT_EXCEPTION (ParameterTooLarge);
+ VC_CONVERT_EXCEPTION (PartitionDeviceRequired);
+ VC_CONVERT_EXCEPTION (StringConversionFailed);
+ VC_CONVERT_EXCEPTION (TestFailed);
+ VC_CONVERT_EXCEPTION (TimeOut);
+ VC_CONVERT_EXCEPTION (UnknownException);
+ VC_CONVERT_EXCEPTION (UserAbort)
+ VC_CONVERT_EXCEPTION (CipherInitError);
+ VC_CONVERT_EXCEPTION (WeakKeyDetected);
+ VC_CONVERT_EXCEPTION (HigherVersionRequired);
+ VC_CONVERT_EXCEPTION (KeyfilePathEmpty);
+ VC_CONVERT_EXCEPTION (MissingVolumeData);
+ VC_CONVERT_EXCEPTION (MountedVolumeInUse);
+ VC_CONVERT_EXCEPTION (UnsupportedSectorSize);
+ VC_CONVERT_EXCEPTION (VolumeEncryptionNotCompleted);
+ VC_CONVERT_EXCEPTION (VolumeHostInUse);
+ VC_CONVERT_EXCEPTION (VolumeProtected);
+ VC_CONVERT_EXCEPTION (VolumeReadOnly);
+ VC_CONVERT_EXCEPTION (Pkcs11Exception);
+ VC_CONVERT_EXCEPTION (InvalidSecurityTokenKeyfilePath);
+ VC_CONVERT_EXCEPTION (SecurityTokenLibraryNotInitialized);
+ VC_CONVERT_EXCEPTION (SecurityTokenKeyfileAlreadyExists);
+ VC_CONVERT_EXCEPTION (SecurityTokenKeyfileNotFound);
+ throw *ex;
+ }
+}