diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2014-12-25 22:54:14 +0100 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2014-12-26 00:51:52 +0100 |
commit | d90d9f0c401a21c85a525aaca0b97df8f7955db8 (patch) | |
tree | 699016cd3928010352b3cbad97c1a7c94c4e8f13 /src/Main/Forms/WaitDialog.cpp | |
parent | bbcc944855d7824812af3a10fd447ccefc534a71 (diff) | |
download | VeraCrypt-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-x | src/Main/Forms/WaitDialog.cpp | 94 |
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; + } +} |