[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,7 +163,8 @@ PackageModel::getPackages() const
|
|||||||
{
|
{
|
||||||
QList<PackageTreeItem*> items = getItemPackages( m_rootItem );
|
QList<PackageTreeItem*> items = getItemPackages( m_rootItem );
|
||||||
for ( auto package : m_hiddenItems )
|
for ( auto package : m_hiddenItems )
|
||||||
items.append( getItemPackages( package ) );
|
if ( package->hiddenSelected() )
|
||||||
|
items.append( getItemPackages( package ) );
|
||||||
QList<PackageTreeItem::ItemData> packages;
|
QList<PackageTreeItem::ItemData> packages;
|
||||||
for ( auto item : items )
|
for ( auto item : items )
|
||||||
{
|
{
|
||||||
|
@ -101,6 +101,13 @@ PackageTreeItem::parentItem()
|
|||||||
return m_parentItem;
|
return m_parentItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const PackageTreeItem*
|
||||||
|
PackageTreeItem::parentItem() const
|
||||||
|
{
|
||||||
|
return m_parentItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString
|
QString
|
||||||
PackageTreeItem::prettyName() const
|
PackageTreeItem::prettyName() const
|
||||||
{
|
{
|
||||||
@ -143,6 +150,26 @@ PackageTreeItem::setHidden( bool isHidden )
|
|||||||
m_data.isHidden = 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
|
bool
|
||||||
PackageTreeItem::isCritical() const
|
PackageTreeItem::isCritical() const
|
||||||
{
|
{
|
||||||
|
@ -49,16 +49,30 @@ public:
|
|||||||
int columnCount() const;
|
int columnCount() const;
|
||||||
QVariant data( int column ) const override;
|
QVariant data( int column ) const override;
|
||||||
int row() const;
|
int row() const;
|
||||||
|
|
||||||
PackageTreeItem* parentItem();
|
PackageTreeItem* parentItem();
|
||||||
|
const PackageTreeItem* parentItem() const;
|
||||||
|
|
||||||
QString prettyName() const;
|
QString prettyName() const;
|
||||||
QString description() const;
|
QString description() const;
|
||||||
QString preScript() const;
|
QString preScript() const;
|
||||||
QString packageName() const;
|
QString packageName() const;
|
||||||
QString postScript() const;
|
QString postScript() const;
|
||||||
|
|
||||||
bool isHidden() const;
|
bool isHidden() const;
|
||||||
void setHidden( bool isHidden );
|
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;
|
bool isCritical() const;
|
||||||
void setCritical( bool isCritical );
|
void setCritical( bool isCritical );
|
||||||
|
|
||||||
Qt::CheckState isSelected() const;
|
Qt::CheckState isSelected() const;
|
||||||
void setSelected( Qt::CheckState isSelected );
|
void setSelected( Qt::CheckState isSelected );
|
||||||
void setChildrenSelected( Qt::CheckState isSelected );
|
void setChildrenSelected( Qt::CheckState isSelected );
|
||||||
|
Loading…
Reference in New Issue
Block a user