diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2021-06-02 16:40:24 +0300 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2021-06-02 16:40:24 +0300 |
commit | 3fdbd475202703530ca4b8f7f2a0e731d5f87f8b (patch) | |
tree | 516a9c48a004fc471fe8bc5dedd4efa72550cab9 /src/libs/installer/packagemanagercore.cpp | |
parent | 35f79da9cb99c7c0456f002829dc0fdfe55b4f8d (diff) | |
parent | 45e77c3a1eb790d89f2ded5b7fbe556ed4b5271c (diff) |
Merge remote-tracking branch 'origin/4.1'
Change-Id: I86049138466399411ba36791330f4a94faad8c52
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 663304367..61b2273af 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -897,11 +897,10 @@ void PackageManagerCore::rollBackInstallation() } d->m_localPackageHub->writeToDisk(); - if (isInstaller()) { - if (d->m_localPackageHub->packageInfoCount() == 0) { - QFile file(d->m_localPackageHub->fileName()); + if (isInstaller() && d->m_localPackageHub->packageInfoCount() == 0) { + QFile file(d->m_localPackageHub->fileName()); + if (!file.fileName().isEmpty() && file.exists()) file.remove(); - } } if (becameAdmin) @@ -1863,8 +1862,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 +1885,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; } |