From ca03dad67beddfb59be1434cc4ce9451712fa4ba Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 16 May 2018 09:04:47 -0400 Subject: [PATCH] [partition] Refactor setting the flags UI - Setup the lsit of flags consistently, by providing the available and to-be-checked flags. - In CreatePartitionDialog, assume that ~0 is all the flags. --- .../partition/gui/CreatePartitionDialog.cpp | 22 ++-------------- .../partition/gui/CreatePartitionDialog.h | 1 - .../gui/EditExistingPartitionDialog.cpp | 26 +------------------ .../gui/EditExistingPartitionDialog.h | 1 - .../partition/gui/PartitionDialogHelpers.cpp | 21 +++++++++++++++ .../partition/gui/PartitionDialogHelpers.h | 1 + 6 files changed, 25 insertions(+), 47 deletions(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index a2bd3fa66..7c1f98c0b 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -121,7 +121,8 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par m_ui->fsComboBox->setCurrentIndex( defaultFsIndex ); updateMountPointUi(); - setupFlagsList(); + setFlagList( *(m_ui->m_listFlags), static_cast< PartitionTable::Flags >( ~PartitionTable::Flags::Int(0) ), PartitionTable::Flags() ); + // Checks the initial selection. checkMountPointSelection(); } @@ -136,25 +137,6 @@ CreatePartitionDialog::newFlags() const return flagsFromList( *(m_ui->m_listFlags) ); } - -void -CreatePartitionDialog::setupFlagsList() -{ - int f = 1; - QString s; - while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() ) - { - QListWidgetItem* item = new QListWidgetItem( s ); - m_ui->m_listFlags->addItem( item ); - item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); - item->setData( Qt::UserRole, f ); - item->setCheckState( Qt::Unchecked ); - - f <<= 1; - } -} - - void CreatePartitionDialog::initMbrPartitionTypeUi() { diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index 6e8e9b6fd..174d91c88 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -64,7 +64,6 @@ private Q_SLOTS: void checkMountPointSelection(); private: - void setupFlagsList(); QScopedPointer< Ui_CreatePartitionDialog > m_ui; PartitionSizeController* m_partitionSizeController; Device* m_device; diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index c930cdf74..c0fff50a8 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -106,7 +106,7 @@ EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partit m_ui->fileSystemLabel->setEnabled( m_ui->formatRadioButton->isChecked() ); m_ui->fileSystemComboBox->setEnabled( m_ui->formatRadioButton->isChecked() ); - setupFlagsList(); + setFlagList( *(m_ui->m_listFlags), m_partition->availableFlags(), PartitionInfo::flags( m_partition ) ); } @@ -120,30 +120,6 @@ EditExistingPartitionDialog::newFlags() const return flagsFromList( *(m_ui->m_listFlags) ); } - -void -EditExistingPartitionDialog::setupFlagsList() -{ - int f = 1; - QString s; - while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() ) - { - if ( m_partition->availableFlags() & f ) - { - QListWidgetItem* item = new QListWidgetItem( s ); - m_ui->m_listFlags->addItem( item ); - item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); - item->setData( Qt::UserRole, f ); - item->setCheckState( ( PartitionInfo::flags( m_partition ) & f ) ? - Qt::Checked : - Qt::Unchecked ); - } - - f <<= 1; - } -} - - void EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) { diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.h b/src/modules/partition/gui/EditExistingPartitionDialog.h index b933e90ce..106ba6639 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.h +++ b/src/modules/partition/gui/EditExistingPartitionDialog.h @@ -56,7 +56,6 @@ private: QStringList m_usedMountPoints; PartitionTable::Flags newFlags() const; - void setupFlagsList(); void replacePartResizerWidget(); void updateMountPointPicker(); }; diff --git a/src/modules/partition/gui/PartitionDialogHelpers.cpp b/src/modules/partition/gui/PartitionDialogHelpers.cpp index ee08412c7..3dcf41f58 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.cpp +++ b/src/modules/partition/gui/PartitionDialogHelpers.cpp @@ -95,3 +95,24 @@ flagsFromList( const QListWidget& list ) return flags; } +void +setFlagList( QListWidget& list, PartitionTable::Flags available, PartitionTable::Flags checked ) +{ + int f = 1; + QString s; + while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() ) + { + if ( available & f ) + { + QListWidgetItem* item = new QListWidgetItem( s ); + list.addItem( item ); + item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled ); + item->setData( Qt::UserRole, f ); + item->setCheckState( ( checked & f ) ? + Qt::Checked : + Qt::Unchecked ); + } + + f <<= 1; + } +} diff --git a/src/modules/partition/gui/PartitionDialogHelpers.h b/src/modules/partition/gui/PartitionDialogHelpers.h index 124c10463..594142993 100644 --- a/src/modules/partition/gui/PartitionDialogHelpers.h +++ b/src/modules/partition/gui/PartitionDialogHelpers.h @@ -63,5 +63,6 @@ static inline void setSelectedMountPoint(QComboBox* combo, const QString& select * Get the flags that have been checked in the list widget. */ PartitionTable::Flags flagsFromList( const QListWidget& list ); +void setFlagList( QListWidget& list, PartitionTable::Flags available, PartitionTable::Flags checked ); #endif