diff --git a/src/calamares/progresstree/ViewStepItem.cpp b/src/calamares/progresstree/ViewStepItem.cpp index b056cdaa5..bfc07a820 100644 --- a/src/calamares/progresstree/ViewStepItem.cpp +++ b/src/calamares/progresstree/ViewStepItem.cpp @@ -23,13 +23,24 @@ #include "viewpages/ViewStep.h" -ViewStepItem::ViewStepItem( const Calamares::ViewStep* step, ProgressTreeItem* parent ) +ViewStepItem::ViewStepItem( const QString& prettyName, + std::function< const Calamares::ViewStep*() > accessor, + ProgressTreeItem* parent ) : ProgressTreeItem( parent ) + , m_step( 0 ) + , m_prettyName( prettyName ) { - m_step = step; + m_accessor = accessor; } +ViewStepItem::ViewStepItem( const Calamares::ViewStep* step, + ProgressTreeItem* parent ) + : ProgressTreeItem( parent ) +{ + m_step = step; +} + void ViewStepItem::appendChild( ProgressTreeItem* item ) { @@ -43,8 +54,10 @@ ViewStepItem::data( int role ) const if ( role == ProgressTreeModel::ProgressTreeItemRole ) return this; if ( role == Qt::DisplayRole ) - return m_step->prettyName(); + return m_step ? m_step->prettyName() : m_prettyName; if ( role == ProgressTreeModel::ProgressTreeItemCurrentRole ) - return Calamares::ViewManager::instance()->currentStep() == m_step; + return m_step ? + ( Calamares::ViewManager::instance()->currentStep() == m_step ) : + ( Calamares::ViewManager::instance()->currentStep() == m_accessor() ); return QVariant(); } diff --git a/src/calamares/progresstree/ViewStepItem.h b/src/calamares/progresstree/ViewStepItem.h index e465d88d9..8235a5a82 100644 --- a/src/calamares/progresstree/ViewStepItem.h +++ b/src/calamares/progresstree/ViewStepItem.h @@ -21,6 +21,8 @@ #include "ProgressTreeItem.h" +#include + namespace Calamares { class ViewStep; @@ -29,13 +31,20 @@ class ViewStep; class ViewStepItem : public ProgressTreeItem { public: - explicit ViewStepItem( const Calamares::ViewStep* step, ProgressTreeItem* parent = nullptr ); + explicit ViewStepItem( const QString& prettyName, + std::function< const Calamares::ViewStep*() > accessor, + ProgressTreeItem* parent = nullptr ); + + explicit ViewStepItem( const Calamares::ViewStep* step, + ProgressTreeItem* parent = nullptr ); void appendChild( ProgressTreeItem* item ) override; QVariant data( int role ) const override; private: + std::function< const Calamares::ViewStep*() > m_accessor; + QString m_prettyName; const Calamares::ViewStep* m_step; };