[netinstall] Hidden groups follow selectedness of parents.
If a subgroup is hidden, then it should be considered selected if its parent is selected or partially-selected. If the parent group is totally unselected, then the hidden subgroup shouldn't be installed either. This allows putting required-packages into a group, without cluttering the interface. FIXES #864
This commit is contained in:
parent
71e80f680e
commit
aa0fa37492
@ -163,6 +163,7 @@ PackageModel::getPackages() const
|
||||
{
|
||||
QList<PackageTreeItem*> items = getItemPackages( m_rootItem );
|
||||
for ( auto package : m_hiddenItems )
|
||||
if ( package->hiddenSelected() )
|
||||
items.append( getItemPackages( package ) );
|
||||
QList<PackageTreeItem::ItemData> packages;
|
||||
for ( auto item : items )
|
||||
|
@ -101,6 +101,13 @@ PackageTreeItem::parentItem()
|
||||
return m_parentItem;
|
||||
}
|
||||
|
||||
const PackageTreeItem*
|
||||
PackageTreeItem::parentItem() const
|
||||
{
|
||||
return m_parentItem;
|
||||
}
|
||||
|
||||
|
||||
QString
|
||||
PackageTreeItem::prettyName() const
|
||||
{
|
||||
@ -143,6 +150,26 @@ PackageTreeItem::setHidden( bool isHidden )
|
||||
m_data.isHidden = isHidden;
|
||||
}
|
||||
|
||||
bool
|
||||
PackageTreeItem::hiddenSelected() const
|
||||
{
|
||||
Q_ASSERT( m_data.isHidden );
|
||||
if (! m_data.selected )
|
||||
return false;
|
||||
|
||||
const PackageTreeItem* currentItem = parentItem();
|
||||
while ( currentItem != nullptr )
|
||||
{
|
||||
if ( !currentItem->isHidden() )
|
||||
return currentItem->isSelected() != Qt::Unchecked;
|
||||
currentItem = currentItem->parentItem();
|
||||
}
|
||||
|
||||
/* Has no non-hiddent parents */
|
||||
return m_data.selected;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
PackageTreeItem::isCritical() const
|
||||
{
|
||||
|
@ -49,16 +49,30 @@ public:
|
||||
int columnCount() const;
|
||||
QVariant data( int column ) const override;
|
||||
int row() const;
|
||||
|
||||
PackageTreeItem* parentItem();
|
||||
const PackageTreeItem* parentItem() const;
|
||||
|
||||
QString prettyName() const;
|
||||
QString description() const;
|
||||
QString preScript() const;
|
||||
QString packageName() const;
|
||||
QString postScript() const;
|
||||
|
||||
bool isHidden() const;
|
||||
void setHidden( bool isHidden );
|
||||
/**
|
||||
* @brief Is this hidden item, considered "selected"?
|
||||
*
|
||||
* This asserts when called on a non-hidden item.
|
||||
* A hidden item has its own selected state, but really
|
||||
* falls under the selectedness of the parent item.
|
||||
*/
|
||||
bool hiddenSelected() const;
|
||||
|
||||
bool isCritical() const;
|
||||
void setCritical( bool isCritical );
|
||||
|
||||
Qt::CheckState isSelected() const;
|
||||
void setSelected( Qt::CheckState isSelected );
|
||||
void setChildrenSelected( Qt::CheckState isSelected );
|
||||
|
Loading…
Reference in New Issue
Block a user