From a00ebc01e71818f20d3506afe3c605ba4ffa432c Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 10 Jun 2016 14:45:26 +0200 Subject: [PATCH] Use EncryptWidget for relevant partition types in CreatePartitionDialog. --- .../partition/gui/CreatePartitionDialog.cpp | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 7c56d3480..61cb85bb1 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -35,6 +35,7 @@ #include #include #include +#include // Qt #include @@ -59,6 +60,8 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par , m_parent( parentPartition ) { m_ui->setupUi( this ); + m_ui->encryptWidget->setText( tr( "En&crypt" ) ); + m_ui->encryptWidget->hide(); QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" }; if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) @@ -178,11 +181,28 @@ CreatePartitionDialog::createPartition() FileSystem::Type fsType = m_role.has( PartitionRole::Extended ) ? FileSystem::Extended : FileSystem::typeForName( m_ui->fsComboBox->currentText() ); - Partition* partition = KPMHelpers::createNewPartition( - m_parent, - *m_device, - m_role, - fsType, first, last, newFlags() ); + + Partition* partition = nullptr; + QString luksPassphrase = m_ui->encryptWidget->passphrase(); + if ( m_ui->encryptWidget->isVisible() && + !luksPassphrase.isEmpty() ) + { + partition = KPMHelpers::createNewEncryptedPartition( + m_parent, + *m_device, + m_role, + fsType, first, last, luksPassphrase, newFlags() + ); + } + else + { + partition = KPMHelpers::createNewPartition( + m_parent, + *m_device, + m_role, + fsType, first, last, newFlags() + ); + } PartitionInfo::setMountPoint( partition, m_ui->mountPointComboBox->currentText() ); PartitionInfo::setFormat( partition, true ); @@ -198,6 +218,17 @@ CreatePartitionDialog::updateMountPointUi() { FileSystem::Type type = FileSystem::typeForName( m_ui->fsComboBox->currentText() ); enabled = !s_unmountableFS.contains( type ); + + if ( FS::luks::canEncryptType( type ) ) + { + m_ui->encryptWidget->show(); + m_ui->encryptWidget->reset(); + } + else + { + m_ui->encryptWidget->reset(); + m_ui->encryptWidget->hide(); + } } m_ui->mountPointLabel->setEnabled( enabled ); m_ui->mountPointComboBox->setEnabled( enabled );