diff options
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 14 |
1 files changed, 13 insertions, 1 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; } |