From d90d9f0c401a21c85a525aaca0b97df8f7955db8 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Thu, 25 Dec 2014 22:54:14 +0100 Subject: Linux/MacOSX: Implement waiting dialog for lengthy operations in order to have a better user experience. --- src/Main/UserInterface.cpp | 73 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) (limited to 'src/Main/UserInterface.cpp') diff --git a/src/Main/UserInterface.cpp b/src/Main/UserInterface.cpp index 4306dec2..73db03dc 100755 --- a/src/Main/UserInterface.cpp +++ b/src/Main/UserInterface.cpp @@ -17,6 +17,7 @@ #include "Platform/Unix/Process.h" #endif #include "Platform/SystemInfo.h" +#include "Platform/SystemException.h" #include "Common/SecurityToken.h" #include "Volume/EncryptionTest.h" #include "Application.h" @@ -729,7 +730,8 @@ namespace VeraCrypt try { - volume = Core->MountVolume (options); + volume = MountVolumeThread (options); + } catch (VolumeHostInUse&) { @@ -1496,4 +1498,73 @@ namespace VeraCrypt return L"?"; } } + + #define VC_CONVERT_EXCEPTION(NAME) if (dynamic_cast (ex)) throw (NAME&) *ex; + + void UserInterface::ThrowException (Exception* 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); + VC_CONVERT_EXCEPTION (SystemException); + throw *ex; + } } -- cgit v1.2.3