From 63b940a62365f262e050b4f1ce0e4541d504dd58 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 27 Mar 2020 16:47:33 +0100 Subject: [PATCH] [netinstall] Implement immutable groups - An immutable group doesn't show a checkbox at all --- src/modules/netinstall/PackageModel.cpp | 7 ++++++- src/modules/netinstall/PackageTreeItem.cpp | 1 + src/modules/netinstall/PackageTreeItem.h | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/modules/netinstall/PackageModel.cpp b/src/modules/netinstall/PackageModel.cpp index 88a06a1bb..3339a7284 100644 --- a/src/modules/netinstall/PackageModel.cpp +++ b/src/modules/netinstall/PackageModel.cpp @@ -119,7 +119,7 @@ PackageModel::data( const QModelIndex& index, int role ) const switch ( role ) { case Qt::CheckStateRole: - return index.column() == NameColumn ? item->isSelected() : QVariant(); + return index.column() == NameColumn ? ( item->isImmutable() ? QVariant() : item->isSelected() ) : QVariant(); case Qt::DisplayRole: return item->isHidden() ? QVariant() : item->data( index.column() ); case MetaExpandRole: @@ -158,6 +158,11 @@ PackageModel::flags( const QModelIndex& index ) const } if ( index.column() == NameColumn ) { + PackageTreeItem* item = static_cast< PackageTreeItem* >( index.internalPointer() ); + if ( item->isImmutable() ) + { + return QAbstractItemModel::flags( index ); //Qt::NoItemFlags; + } return Qt::ItemIsUserCheckable | QAbstractItemModel::flags( index ); } return QAbstractItemModel::flags( index ); diff --git a/src/modules/netinstall/PackageTreeItem.cpp b/src/modules/netinstall/PackageTreeItem.cpp index e611da477..3c5ed0a85 100644 --- a/src/modules/netinstall/PackageTreeItem.cpp +++ b/src/modules/netinstall/PackageTreeItem.cpp @@ -41,6 +41,7 @@ PackageTreeItem::PackageTreeItem( const QString& packageName, PackageTreeItem* p , m_packageName( packageName ) , m_selected( parentCheckState( parent ) ) , m_isGroup( false ) + , m_showReadOnly( parent ? parent->isImmutable() : false ) { } diff --git a/src/modules/netinstall/PackageTreeItem.h b/src/modules/netinstall/PackageTreeItem.h index 3f7dcce86..3c3aca814 100644 --- a/src/modules/netinstall/PackageTreeItem.h +++ b/src/modules/netinstall/PackageTreeItem.h @@ -97,6 +97,13 @@ public: */ bool expandOnStart() const { return m_startExpanded; } + /** @brief Is this an immutable item? + * + * Groups can be immutable: then you can't toggle the selected + * state of any of its items. + */ + bool isImmutable() const { return m_showReadOnly; } + /** @brief is this item selected? * * Groups may be partially selected; packages are only on or off.