[netinstall] Implement immutable groups

- An immutable group doesn't show a checkbox at all
This commit is contained in:
Adriaan de Groot 2020-03-27 16:47:33 +01:00
parent 7a42a4d71f
commit 63b940a623
3 changed files with 14 additions and 1 deletions

View File

@ -119,7 +119,7 @@ PackageModel::data( const QModelIndex& index, int role ) const
switch ( role ) switch ( role )
{ {
case Qt::CheckStateRole: case Qt::CheckStateRole:
return index.column() == NameColumn ? item->isSelected() : QVariant(); return index.column() == NameColumn ? ( item->isImmutable() ? QVariant() : item->isSelected() ) : QVariant();
case Qt::DisplayRole: case Qt::DisplayRole:
return item->isHidden() ? QVariant() : item->data( index.column() ); return item->isHidden() ? QVariant() : item->data( index.column() );
case MetaExpandRole: case MetaExpandRole:
@ -158,6 +158,11 @@ PackageModel::flags( const QModelIndex& index ) const
} }
if ( index.column() == NameColumn ) 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 Qt::ItemIsUserCheckable | QAbstractItemModel::flags( index );
} }
return QAbstractItemModel::flags( index ); return QAbstractItemModel::flags( index );

View File

@ -41,6 +41,7 @@ PackageTreeItem::PackageTreeItem( const QString& packageName, PackageTreeItem* p
, m_packageName( packageName ) , m_packageName( packageName )
, m_selected( parentCheckState( parent ) ) , m_selected( parentCheckState( parent ) )
, m_isGroup( false ) , m_isGroup( false )
, m_showReadOnly( parent ? parent->isImmutable() : false )
{ {
} }

View File

@ -97,6 +97,13 @@ public:
*/ */
bool expandOnStart() const { return m_startExpanded; } 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? /** @brief is this item selected?
* *
* Groups may be partially selected; packages are only on or off. * Groups may be partially selected; packages are only on or off.