From ad60a5e41aa8bf9f8d6f71398575c7252705967a Mon Sep 17 00:00:00 2001 From: Lars Frost <larsf@fsmpi.rwth-aachen.de> Date: Thu, 22 Sep 2022 21:02:49 +0200 Subject: [PATCH] allow multiple default options --- src/modules/packagechooser/Config.cpp | 16 +++++++++++----- src/modules/packagechooser/Config.h | 4 ++-- .../packagechooser/PackageChooserViewStep.cpp | 4 +++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/modules/packagechooser/Config.cpp b/src/modules/packagechooser/Config.cpp index 6676215978..db7086c434 100644 --- a/src/modules/packagechooser/Config.cpp +++ b/src/modules/packagechooser/Config.cpp @@ -321,22 +321,28 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) cDebug() << "Using module ID" << m_defaultId; } + m_defaultModelIndex = QModelIndexList(); if ( configurationMap.contains( "items" ) ) { fillModel( m_model, configurationMap.value( "items" ).toList() ); - QString default_item_id = CalamaresUtils::getString( configurationMap, "default" ); - if ( !default_item_id.isEmpty() ) + QStringList default_item_ids = CalamaresUtils::getStringList( configurationMap, "default" ); + if ( default_item_ids.isEmpty() ) { + const QString& default_item_id = CalamaresUtils::getString( configurationMap, "default" ); + if ( !default_item_id.isEmpty() ) { + default_item_ids.push_back( default_item_id ); + } + } + if ( !default_item_ids.isEmpty() ) { for ( int item_n = 0; item_n < m_model->packageCount(); ++item_n ) { QModelIndex item_idx = m_model->index( item_n, 0 ); QVariant item_id = m_model->data( item_idx, PackageListModel::IdRole ); - if ( item_id.toString() == default_item_id ) + if ( default_item_ids.contains( item_id.toString() ) ) { - m_defaultModelIndex = item_idx; - break; + m_defaultModelIndex.push_back( item_idx ); } } } diff --git a/src/modules/packagechooser/Config.h b/src/modules/packagechooser/Config.h index d1b783a8d0..b1ca882066 100644 --- a/src/modules/packagechooser/Config.h +++ b/src/modules/packagechooser/Config.h @@ -71,7 +71,7 @@ public: PackageChooserMode mode() const { return m_mode; } PackageListModel* model() const { return m_model; } - QModelIndex defaultSelectionIndex() const { return m_defaultModelIndex; } + QModelIndexList defaultSelectionIndex() const { return m_defaultModelIndex; } /** @brief Returns an "introductory package" which describes packagechooser * @@ -107,7 +107,7 @@ signals: private: PackageListModel* m_model = nullptr; - QModelIndex m_defaultModelIndex; + QModelIndexList m_defaultModelIndex; /// Selection mode for this module PackageChooserMode m_mode = PackageChooserMode::Optional; diff --git a/src/modules/packagechooser/PackageChooserViewStep.cpp b/src/modules/packagechooser/PackageChooserViewStep.cpp index e3b27df5c7..620c45d648 100644 --- a/src/modules/packagechooser/PackageChooserViewStep.cpp +++ b/src/modules/packagechooser/PackageChooserViewStep.cpp @@ -114,7 +114,9 @@ PackageChooserViewStep::onActivate() { if ( !m_widget->hasSelection() ) { - m_widget->setSelection( m_config->defaultSelectionIndex() ); + for ( const auto& item : m_config->defaultSelectionIndex() ) { + m_widget->setSelection( item ); + } } } -- GitLab