From 91a29c58855b125e96d91da3a28ba59498d7ea55 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 17 Apr 2021 14:36:33 +0200 Subject: [PATCH] [packagechooser] Add getters for the *packages* members to the model --- src/modules/packagechooser/PackageModel.cpp | 27 +++++++++++++++++++++ src/modules/packagechooser/PackageModel.h | 13 ++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/modules/packagechooser/PackageModel.cpp b/src/modules/packagechooser/PackageModel.cpp index 05a90f220..239705490 100644 --- a/src/modules/packagechooser/PackageModel.cpp +++ b/src/modules/packagechooser/PackageModel.cpp @@ -79,6 +79,33 @@ PackageListModel::addPackage( PackageItem&& p ) } } +QStringList +PackageListModel::getInstallPackagesForName( const QString& id ) const +{ + for ( const auto& p : qAsConst( m_packages ) ) + { + if ( p.id == id ) + { + return p.packageNames; + } + } + return QStringList(); +} + +QStringList +PackageListModel::getInstallPackagesForNames( const QStringList& ids ) const +{ + QStringList l; + for ( const auto& p : qAsConst( m_packages ) ) + { + if ( ids.contains( p.id ) ) + { + l.append( p.packageNames ); + } + } + return l; +} + int PackageListModel::rowCount( const QModelIndex& index ) const { diff --git a/src/modules/packagechooser/PackageModel.h b/src/modules/packagechooser/PackageModel.h index b27c0ed3b..71003197d 100644 --- a/src/modules/packagechooser/PackageModel.h +++ b/src/modules/packagechooser/PackageModel.h @@ -98,6 +98,19 @@ public: /// @brief Direct (non-abstract) count of package data int packageCount() const { return m_packages.count(); } + /** @brief Does a name lookup (based on id) and returns the packages member + * + * If there is a package with the given @p id, returns its packages + * (e.g. the names of underlying packages to install for it); returns + * an empty list if the id is not found. + */ + QStringList getInstallPackagesForName( const QString& id ) const; + /** @brief Name-lookup all the @p ids and returns the packages members + * + * Concatenates installPackagesForName() for each id in @p ids. + */ + QStringList getInstallPackagesForNames( const QStringList& ids ) const; + enum Roles : int { NameRole = Qt::DisplayRole,