mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-12 11:28:26 -06:00
Linux/MacOSX: Implement waiting dialog for lengthy operations in order to have a better user experience.
This commit is contained in:
94
src/Main/Forms/WaitDialog.cpp
Executable file
94
src/Main/Forms/WaitDialog.cpp
Executable file
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user