diff options
author | Katja Marttila <katja.marttila@qt.io> | 2021-04-15 15:52:33 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2021-05-21 12:09:32 +0300 |
commit | be2c54531eeb00822259d6f6bfcb90b43768cea3 (patch) | |
tree | cece9822ae77972f4382f8f99031ee761b4aa92f /src | |
parent | eb4b39099231254c850d897ede4ceaf79b91b4b6 (diff) |
Add possibility to list components with regexp
Task-number: QTIFW-2225
Change-Id: I6a7fdfc1070ad54d520563cae7d2446e97e2e87c
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 14 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 2 | ||||
-rw-r--r-- | src/libs/installer/scriptengine.cpp | 6 | ||||
-rw-r--r-- | src/libs/installer/scriptengine_p.h | 4 |
4 files changed, 19 insertions, 7 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index a18374f0c..145eb30d7 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -1863,8 +1863,9 @@ void PackageManagerCore::appendRootComponent(Component *component) /*! Returns a list of components depending on the component types passed in \a mask. + Optionally, a \a regexp expression can be used to further filter the listed packages. */ -QList<Component *> PackageManagerCore::components(ComponentTypes mask) const +QList<Component *> PackageManagerCore::components(ComponentTypes mask, const QString ®exp) const { QList<Component *> components; @@ -1885,6 +1886,17 @@ QList<Component *> PackageManagerCore::components(ComponentTypes mask) const // No descendants here, updates are always a flat list and cannot have children! } + if (!regexp.isEmpty()) { + QRegularExpression re(regexp); + QList<Component*>::iterator iter = components.begin(); + while (iter != components.end()) { + if (!re.match(iter.i->t()->name()).hasMatch()) + iter = components.erase(iter); + else + iter++; + } + } + return components; } diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index 9d89e4763..d4833a979 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -224,7 +224,7 @@ public: void appendRootComponent(Component *components); void appendUpdaterComponent(Component *components); - QList<Component *> components(ComponentTypes mask) const; + QList<Component *> components(ComponentTypes mask, const QString ®exp = QString()) const; Component *componentByName(const QString &identifier) const; Q_INVOKABLE bool calculateComponentsToInstall() const; diff --git a/src/libs/installer/scriptengine.cpp b/src/libs/installer/scriptengine.cpp index 5dd56939c..c8fc65d34 100644 --- a/src/libs/installer/scriptengine.cpp +++ b/src/libs/installer/scriptengine.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -75,10 +75,10 @@ namespace QInstaller { \internal */ -QJSValue InstallerProxy::components() const +QJSValue InstallerProxy::components(const QString ®exp) const { if (m_core) { - const QList<Component*> all = m_core->components(PackageManagerCore::ComponentType::All); + const QList<Component*> all = m_core->components(PackageManagerCore::ComponentType::All, regexp); QJSValue scriptComponentsObject = m_engine->newArray(all.count()); for (int i = 0; i < all.count(); ++i) { Component *const component = all.at(i); diff --git a/src/libs/installer/scriptengine_p.h b/src/libs/installer/scriptengine_p.h index c5f04c0dc..e5c39663c 100644 --- a/src/libs/installer/scriptengine_p.h +++ b/src/libs/installer/scriptengine_p.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -63,7 +63,7 @@ public: : m_engine(engine), m_core(core) {} public slots: - QJSValue components() const; + QJSValue components(const QString ®exp = QString()) const; QJSValue componentByName(const QString &componentName); private: |