From ada0a080fce8fff450009a46ff78e54771cb51d6 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 8 Mar 2016 12:44:01 +0100 Subject: [PATCH] Add flags setting support when creating a partition. --- .../partition/gui/CreatePartitionDialog.cpp | 39 ++++++++++++++++++- .../partition/gui/CreatePartitionDialog.h | 4 ++ .../partition/gui/CreatePartitionDialog.ui | 28 +++++++++++-- 3 files changed, 66 insertions(+), 5 deletions(-) diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 697d82e65..a6ef98943 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -39,6 +39,7 @@ #include #include #include +#include static QSet< FileSystem::Type > s_unmountableFS( { @@ -83,11 +84,46 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par // Connections connect( m_ui->fsComboBox, SIGNAL( activated( int ) ), SLOT( updateMountPointUi() ) ); connect( m_ui->extendedRadioButton, SIGNAL( toggled( bool ) ), SLOT( updateMountPointUi() ) ); + + setupFlagsList(); } CreatePartitionDialog::~CreatePartitionDialog() {} + +PartitionTable::Flags +CreatePartitionDialog::newFlags() const +{ + PartitionTable::Flags flags; + + for ( int i = 0; i < m_ui->m_listFlags->count(); i++ ) + if ( m_ui->m_listFlags->item( i )->checkState() == Qt::Checked ) + flags |= static_cast< PartitionTable::Flag >( + m_ui->m_listFlags->item( i )->data( Qt::UserRole ).toInt() ); + + return flags; +} + + +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() { @@ -145,10 +181,11 @@ CreatePartitionDialog::createPartition() m_parent, *m_device, m_role, - fsType, first, last ); + fsType, first, last, newFlags() ); PartitionInfo::setMountPoint( partition, m_ui->mountPointComboBox->currentText() ); PartitionInfo::setFormat( partition, true ); + return partition; } diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index 360f3b42b..6be9a5a7e 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -21,6 +21,7 @@ // KPMcore #include +#include #include #include @@ -55,10 +56,13 @@ public: void initFromPartitionToCreate( Partition* partition ); Partition* createPartition(); + PartitionTable::Flags newFlags() const; + private Q_SLOTS: void updateMountPointUi(); private: + void setupFlagsList(); QScopedPointer< Ui_CreatePartitionDialog > m_ui; PartitionSizeController* m_partitionSizeController; Device* m_device; diff --git a/src/modules/partition/gui/CreatePartitionDialog.ui b/src/modules/partition/gui/CreatePartitionDialog.ui index e5cc5179b..c5ff9e1ea 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.ui +++ b/src/modules/partition/gui/CreatePartitionDialog.ui @@ -6,8 +6,8 @@ 0 0 - 425 - 208 + 642 + 489 @@ -86,7 +86,7 @@ - F&ile System: + Fi&le System: fsComboBox @@ -132,7 +132,7 @@ - + Qt::Vertical @@ -175,6 +175,26 @@ + + + + Flags: + + + + + + + true + + + QAbstractItemView::NoSelection + + + true + + +