[netinstall] Refactor: kill ItemData
- This doesn't compile right now. - The nested class ItemData doesn't do anything useful or meaningful that having model items with the right data wouldn't.
This commit is contained in:
parent
8825c9c995
commit
c66ef5a201
@ -21,55 +21,26 @@
|
||||
|
||||
#include "utils/Logger.h"
|
||||
|
||||
QVariant
|
||||
PackageTreeItem::ItemData::toOperation() const
|
||||
{
|
||||
// If it's a package with a pre- or post-script, replace
|
||||
// with the more complicated datastructure.
|
||||
if ( !preScript.isEmpty() || !postScript.isEmpty() )
|
||||
{
|
||||
QMap< QString, QVariant > sdetails;
|
||||
sdetails.insert( "pre-script", preScript );
|
||||
sdetails.insert( "package", packageName );
|
||||
sdetails.insert( "post-script", postScript );
|
||||
return sdetails;
|
||||
}
|
||||
else
|
||||
{
|
||||
return packageName;
|
||||
}
|
||||
}
|
||||
|
||||
PackageTreeItem::PackageTreeItem( const ItemData& data, PackageTreeItem* parent )
|
||||
: m_parentItem( parent )
|
||||
, m_data( data )
|
||||
{
|
||||
}
|
||||
|
||||
PackageTreeItem::PackageTreeItem( const QString packageName, PackageTreeItem* parent )
|
||||
PackageTreeItem::PackageTreeItem( const QString& packageName, PackageTreeItem* parent )
|
||||
: m_parentItem( parent )
|
||||
{
|
||||
m_data.packageName = packageName;
|
||||
m_packageName = packageName;
|
||||
if ( parent != nullptr )
|
||||
{
|
||||
m_data.selected = parent->isSelected();
|
||||
// Avoid partially-checked .. a package can't be partial
|
||||
m_selected = parent->isSelected() == Qt::Unchecked ? Qt::Unchecked : Qt::Checked;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_data.selected = Qt::Unchecked;
|
||||
m_selected = Qt::Unchecked;
|
||||
}
|
||||
}
|
||||
|
||||
PackageTreeItem::PackageTreeItem( PackageTreeItem* parent )
|
||||
: m_parentItem( parent )
|
||||
{
|
||||
}
|
||||
|
||||
PackageTreeItem::PackageTreeItem::PackageTreeItem()
|
||||
: PackageTreeItem( QString(), nullptr )
|
||||
{
|
||||
m_data.selected = Qt::Checked;
|
||||
m_data.name = QLatin1String( "<root>" );
|
||||
m_selected = Qt::Checked;
|
||||
m_name = QLatin1String( "<root>" );
|
||||
}
|
||||
|
||||
PackageTreeItem::~PackageTreeItem()
|
||||
@ -123,7 +94,7 @@ PackageTreeItem::data( int column ) const
|
||||
switch ( column ) // group
|
||||
{
|
||||
case 0:
|
||||
return QVariant( prettyName() );
|
||||
return QVariant( name() );
|
||||
case 1:
|
||||
return QVariant( description() );
|
||||
default:
|
||||
@ -145,47 +116,15 @@ PackageTreeItem::parentItem() const
|
||||
}
|
||||
|
||||
|
||||
QString
|
||||
PackageTreeItem::prettyName() const
|
||||
{
|
||||
return m_data.name;
|
||||
}
|
||||
|
||||
QString
|
||||
PackageTreeItem::description() const
|
||||
{
|
||||
return m_data.description;
|
||||
}
|
||||
|
||||
QString
|
||||
PackageTreeItem::preScript() const
|
||||
{
|
||||
return m_data.preScript;
|
||||
}
|
||||
|
||||
QString
|
||||
PackageTreeItem::packageName() const
|
||||
{
|
||||
return m_data.packageName;
|
||||
}
|
||||
|
||||
QString
|
||||
PackageTreeItem::postScript() const
|
||||
{
|
||||
return m_data.postScript;
|
||||
}
|
||||
|
||||
bool
|
||||
PackageTreeItem::isHidden() const
|
||||
{
|
||||
return m_data.isHidden;
|
||||
}
|
||||
|
||||
bool
|
||||
PackageTreeItem::hiddenSelected() const
|
||||
{
|
||||
Q_ASSERT( m_data.isHidden );
|
||||
if ( !m_data.selected )
|
||||
if ( !m_isHidden )
|
||||
{
|
||||
return m_selected;
|
||||
}
|
||||
|
||||
if ( !m_selected )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -201,32 +140,20 @@ PackageTreeItem::hiddenSelected() const
|
||||
}
|
||||
|
||||
/* Has no non-hiddent parents */
|
||||
return m_data.selected;
|
||||
return m_selected;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
PackageTreeItem::isCritical() const
|
||||
{
|
||||
return m_data.isCritical;
|
||||
}
|
||||
|
||||
Qt::CheckState
|
||||
PackageTreeItem::isSelected() const
|
||||
{
|
||||
return m_data.selected;
|
||||
}
|
||||
|
||||
void
|
||||
PackageTreeItem::setSelected( Qt::CheckState isSelected )
|
||||
{
|
||||
if ( parentItem() == nullptr )
|
||||
// This is the root, it is always checked so don't change state
|
||||
{
|
||||
// This is the root, it is always checked so don't change state
|
||||
return;
|
||||
}
|
||||
|
||||
m_data.selected = isSelected;
|
||||
m_selected = isSelected;
|
||||
setChildrenSelected( isSelected );
|
||||
|
||||
// Look for suitable parent item which may change checked-state
|
||||
@ -277,7 +204,7 @@ PackageTreeItem::setChildrenSelected( Qt::CheckState isSelected )
|
||||
// Children are never root; don't need to use setSelected on them.
|
||||
for ( auto child : m_childItems )
|
||||
{
|
||||
child->m_data.selected = isSelected;
|
||||
child->m_selected = isSelected;
|
||||
child->setChildrenSelected( isSelected );
|
||||
}
|
||||
}
|
||||
@ -287,3 +214,22 @@ PackageTreeItem::type() const
|
||||
{
|
||||
return QStandardItem::UserType;
|
||||
}
|
||||
|
||||
QVariant
|
||||
PackageTreeItem::toOperation() const
|
||||
{
|
||||
// If it's a package with a pre- or post-script, replace
|
||||
// with the more complicated datastructure.
|
||||
if ( !m_preScript.isEmpty() || !m_postScript.isEmpty() )
|
||||
{
|
||||
QMap< QString, QVariant > sdetails;
|
||||
sdetails.insert( "pre-script", m_preScript );
|
||||
sdetails.insert( "package", m_packageName );
|
||||
sdetails.insert( "post-script", m_postScript );
|
||||
return sdetails;
|
||||
}
|
||||
else
|
||||
{
|
||||
return m_packageName;
|
||||
}
|
||||
}
|
||||
|
@ -27,29 +27,12 @@
|
||||
class PackageTreeItem : public QStandardItem
|
||||
{
|
||||
public:
|
||||
struct ItemData
|
||||
{
|
||||
QString name;
|
||||
QString description;
|
||||
QString preScript;
|
||||
QString packageName;
|
||||
QString postScript;
|
||||
bool isCritical = false;
|
||||
bool isHidden = false;
|
||||
bool startExpanded = false; // Only for groups
|
||||
Qt::CheckState selected = Qt::Unchecked;
|
||||
using PackageList = QList< PackageTreeItem* >;
|
||||
|
||||
/** @brief Turns this item into a variant for PackageOperations use
|
||||
*
|
||||
* For "plain" items, this is just the package name; items with
|
||||
* scripts return a map. See the package module for how it's interpreted.
|
||||
*/
|
||||
QVariant toOperation() const;
|
||||
};
|
||||
explicit PackageTreeItem( const ItemData& data, PackageTreeItem* parent = nullptr );
|
||||
explicit PackageTreeItem( const QString packageName, PackageTreeItem* parent = nullptr );
|
||||
explicit PackageTreeItem( PackageTreeItem* parent );
|
||||
explicit PackageTreeItem(); // The root of the tree; always selected, named <root>
|
||||
///@brief A package (individual package)
|
||||
explicit PackageTreeItem( const QString& packageName, PackageTreeItem* parent = nullptr );
|
||||
///@brief A root item, always selected, named "<root>"
|
||||
explicit PackageTreeItem();
|
||||
~PackageTreeItem() override;
|
||||
|
||||
void appendChild( PackageTreeItem* child );
|
||||
@ -61,18 +44,19 @@ public:
|
||||
PackageTreeItem* parentItem();
|
||||
const PackageTreeItem* parentItem() const;
|
||||
|
||||
QString prettyName() const;
|
||||
QString description() const;
|
||||
QString preScript() const;
|
||||
QString packageName() const;
|
||||
QString postScript() const;
|
||||
QString name() const { return m_name; }
|
||||
QString packageName() const { return m_packageName; }
|
||||
|
||||
QString description() const { return m_description; }
|
||||
QString preScript() const { return m_preScript; }
|
||||
QString postScript() const { return m_postScript; }
|
||||
|
||||
/** @brief Is this item hidden?
|
||||
*
|
||||
* Hidden items (generally only groups) are maintained separately,
|
||||
* not shown to the user, but do enter into the package-installation process.
|
||||
*/
|
||||
bool isHidden() const;
|
||||
bool isHidden() const { return m_isHidden; }
|
||||
|
||||
/** @brief Is this hidden item, considered "selected"?
|
||||
*
|
||||
@ -87,7 +71,7 @@ public:
|
||||
* A critical group must be successfully installed, for the Calamares
|
||||
* installation to continue.
|
||||
*/
|
||||
bool isCritical() const;
|
||||
bool isCritical() const { return m_isCritical; }
|
||||
|
||||
/** @brief Is this group expanded on start?
|
||||
*
|
||||
@ -95,17 +79,38 @@ public:
|
||||
* that expands on start is shown expanded (not collapsed)
|
||||
* in the treeview when the page is loaded.
|
||||
*/
|
||||
bool expandOnStart() const { return m_data.startExpanded; }
|
||||
bool expandOnStart() const { return m_startExpanded; }
|
||||
|
||||
/** @brief Turns this item into a variant for PackageOperations use
|
||||
*
|
||||
* For "plain" items, this is just the package name; items with
|
||||
* scripts return a map. See the package module for how it's interpreted.
|
||||
*/
|
||||
QVariant toOperation() const;
|
||||
|
||||
Qt::CheckState isSelected() const;
|
||||
void setSelected( Qt::CheckState isSelected );
|
||||
void setChildrenSelected( Qt::CheckState isSelected );
|
||||
|
||||
// QStandardItem methods
|
||||
int type() const override;
|
||||
|
||||
private:
|
||||
PackageTreeItem* m_parentItem;
|
||||
QList< PackageTreeItem* > m_childItems;
|
||||
ItemData m_data;
|
||||
PackageList m_childItems;
|
||||
|
||||
// An entry can be a packkage, or a group.
|
||||
QString m_name;
|
||||
QString m_packageName;
|
||||
Qt::CheckState m_selected = Qt::Unchecked;
|
||||
|
||||
// These are only useful for groups
|
||||
QString m_description;
|
||||
QString m_preScript;
|
||||
QString m_postScript;
|
||||
bool m_isCritical = false;
|
||||
bool m_isHidden = false;
|
||||
bool m_startExpanded = false;
|
||||
};
|
||||
|
||||
#endif // PACKAGETREEITEM_H
|
||||
|
Loading…
Reference in New Issue
Block a user