diff options
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/installer/loggingutils.cpp | 2 | ||||
-rw-r--r-- | src/libs/installer/loggingutils.h | 2 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 33 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 10 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 18 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.h | 2 | ||||
-rw-r--r-- | src/libs/installer/qinstallerglobal.h | 2 | ||||
-rw-r--r-- | src/libs/kdtools/localpackagehub.cpp | 7 | ||||
-rw-r--r-- | src/libs/kdtools/localpackagehub.h | 2 |
9 files changed, 43 insertions, 35 deletions
diff --git a/src/libs/installer/loggingutils.cpp b/src/libs/installer/loggingutils.cpp index c2e707928..2c5d918d5 100644 --- a/src/libs/installer/loggingutils.cpp +++ b/src/libs/installer/loggingutils.cpp @@ -316,7 +316,7 @@ void LoggingHandler::printLocalPackageInformation(const QList<KDUpdater::LocalPa depending on the current verbosity level. If a package is also present in \a installedPackages, the installed version will be included in printed information. */ -void LoggingHandler::printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesHash &installedPackages) const +void LoggingHandler::printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesMap &installedPackages) const { QString output; QXmlStreamWriter stream(&output); diff --git a/src/libs/installer/loggingutils.h b/src/libs/installer/loggingutils.h index f0e76037c..f41a18663 100644 --- a/src/libs/installer/loggingutils.h +++ b/src/libs/installer/loggingutils.h @@ -66,7 +66,7 @@ public: void printUpdateInformation(const QList<Component *> components) const; void printLocalPackageInformation(const QList<KDUpdater::LocalPackage> &packages) const; - void printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesHash &installedPackages) const; + void printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesMap &installedPackages) const; friend VerbosityLevel &operator++(VerbosityLevel &level, int); friend VerbosityLevel &operator--(VerbosityLevel &level, int); diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 041c0fd31..1b1ca1eec 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -1484,7 +1484,7 @@ bool PackageManagerCore::fetchLocalPackagesTree() return false; } - LocalPackagesHash installedPackages = d->localInstalledPackages(); + LocalPackagesMap installedPackages = d->localInstalledPackages(); if (installedPackages.isEmpty()) { if (status() != Failure) d->setStatus(Failure, tr("No installed packages found.")); @@ -1564,7 +1564,7 @@ bool PackageManagerCore::fetchLocalPackagesTree() /*! Returns a list of local installed packages. The list can be empty. */ -LocalPackagesHash PackageManagerCore::localInstalledPackages() +LocalPackagesMap PackageManagerCore::localInstalledPackages() { return d->localInstalledPackages(); } @@ -1635,7 +1635,7 @@ PackagesList PackageManagerCore::remotePackages() */ bool PackageManagerCore::fetchCompressedPackagesTree() { - const LocalPackagesHash installedPackages = d->localInstalledPackages(); + const LocalPackagesMap installedPackages = d->localInstalledPackages(); if (!isInstaller() && status() == Failure) return false; @@ -1671,7 +1671,7 @@ bool PackageManagerCore::fetchRemotePackagesTree() return false; } - const LocalPackagesHash installedPackages = d->localInstalledPackages(); + const LocalPackagesMap installedPackages = d->localInstalledPackages(); if (!isInstaller() && status() == Failure) return false; @@ -1687,11 +1687,10 @@ bool PackageManagerCore::fetchRemotePackagesTree() const PackagesList &packages = d->remotePackages(); if (packages.isEmpty()) return false; - return fetchPackagesTree(packages, installedPackages); } -bool PackageManagerCore::fetchPackagesTree(const PackagesList &packages, const LocalPackagesHash installedPackages) { +bool PackageManagerCore::fetchPackagesTree(const PackagesList &packages, const LocalPackagesMap installedPackages) { bool success = false; if (!isUpdater()) { @@ -2427,7 +2426,7 @@ void PackageManagerCore::listAvailablePackages(const QString ®exp, const QHas QRegularExpression re(regexp); re.setPatternOptions(QRegularExpression::CaseInsensitiveOption); const PackagesList &packages = d->remotePackages(); - if (!fetchAllPackages(packages, LocalPackagesHash())) { + if (!fetchAllPackages(packages, LocalPackagesMap())) { qCWarning(QInstaller::lcInstallerInstallLog) << "There was a problem with loading the package data."; return; @@ -2567,7 +2566,7 @@ bool PackageManagerCore::checkComponentsForInstallation(const QStringList &compo void PackageManagerCore::listInstalledPackages(const QString ®exp) { setPackageViewer(); - LocalPackagesHash installedPackages = this->localInstalledPackages(); + LocalPackagesMap installedPackages = this->localInstalledPackages(); if (!regexp.isEmpty()) { qCDebug(QInstaller::lcInstallerInstallLog) @@ -2808,7 +2807,7 @@ PackageManagerCore::Status PackageManagerCore::installSelectedComponentsSilently setPackageManager(); //Check that packages are not already installed - const LocalPackagesHash installedPackages = this->localInstalledPackages(); + const LocalPackagesMap installedPackages = this->localInstalledPackages(); QStringList helperStrList; helperStrList << components << installedPackages.keys(); helperStrList.removeDuplicates(); @@ -3992,7 +3991,7 @@ void PackageManagerCore::storeReplacedComponents(QHash<QString, Component *> &co } } -bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const LocalPackagesHash &locals) +bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const LocalPackagesMap &locals) { emit startAllComponentsReset(); @@ -4051,6 +4050,11 @@ bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const Loc allTreeNameComponents = remoteTreeNameComponents; foreach (auto &package, locals) { + if (package.virtualComp && package.autoDependencies.isEmpty()) { + if (!d->m_localVirtualComponents.contains(package.name)) + d->m_localVirtualComponents.append(package.name); + } + QScopedPointer<QInstaller::Component> localComponent(new QInstaller::Component(this)); localComponent->loadDataFromPackage(package); const QString name = localComponent->treeName(); @@ -4124,7 +4128,7 @@ bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const Loc return true; } -bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const LocalPackagesHash &locals) +bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const LocalPackagesMap &locals) { emit startUpdaterComponentsReset(); @@ -4136,7 +4140,7 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const data.installedPackages = &locals; setFoundEssentialUpdate(false); - LocalPackagesHash installedPackages = locals; + LocalPackagesMap installedPackages = locals; QStringList replaceMes; foreach (Package *const update, remotes) { @@ -4206,6 +4210,11 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const } foreach (const QString &key, locals.keys()) { + LocalPackage package = locals.value(key); + if (package.virtualComp && package.autoDependencies.isEmpty()) { + if (!d->m_localVirtualComponents.contains(package.name)) + d->m_localVirtualComponents.append(package.name); + } // Keep a list of local components that should be replaced // Remove from components list - we don't want to update the component // as it is replaced by other component diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index bebfc191d..50cdac486 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -127,7 +127,7 @@ public: bool directoryWritable(const QString &path) const; bool fetchLocalPackagesTree(); - LocalPackagesHash localInstalledPackages(); + LocalPackagesMap localInstalledPackages(); void networkSettingsChanged(); PackageManagerProxyFactory *proxyFactory() const; @@ -411,15 +411,15 @@ private: struct Data { Package *package; QHash<QString, Component*> *components; - const LocalPackagesHash *installedPackages; + const LocalPackagesMap *installedPackages; QHash<Component*, QStringList> replacementToExchangeables; }; bool updateComponentData(struct Data &data, QInstaller::Component *component); void storeReplacedComponents(QHash<QString, Component*> &components, const struct Data &data, QMap<QString, QString> *const treeNameComponents = nullptr); - bool fetchAllPackages(const PackagesList &remotePackages, const LocalPackagesHash &localPackages); - bool fetchUpdaterPackages(const PackagesList &remotePackages, const LocalPackagesHash &localPackages); + bool fetchAllPackages(const PackagesList &remotePackages, const LocalPackagesMap &localPackages); + bool fetchUpdaterPackages(const PackagesList &remotePackages, const LocalPackagesMap &localPackages); void createAutoTreeNames(QHash<QString, Component *> &components, const QMap<QString, QString> &treeNameComponents); @@ -430,7 +430,7 @@ private: ComponentModel *componentModel(PackageManagerCore *core, const QString &objectName) const; QList<Component *> componentsMarkedForInstallation() const; - bool fetchPackagesTree(const PackagesList &packages, const LocalPackagesHash installedPackages); + bool fetchPackagesTree(const PackagesList &packages, const LocalPackagesMap installedPackages); bool componentUninstallableFromCommandLine(const QString &componentName); bool checkComponentsForInstallation(const QStringList &components, QString &errorMessage); diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index c532e2cbd..cfe2cfe09 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -2744,12 +2744,12 @@ PackagesList PackageManagerCorePrivate::remotePackages() the application is running in installer mode or the local components file could not be parsed, the hash is empty. */ -LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages() +LocalPackagesMap PackageManagerCorePrivate::localInstalledPackages() { if (isInstaller()) - return LocalPackagesHash(); + return LocalPackagesMap(); + - LocalPackagesHash installedPackages; if (m_localPackageHub->error() != LocalPackageHub::NoError) { if (m_localPackageHub->fileName().isEmpty()) m_localPackageHub->setFileName(componentsXmlPath()); @@ -2766,17 +2766,7 @@ LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages() setStatus(PackageManagerCore::Failure, tr("Failure to read packages from %1.") .arg(componentsXmlPath())); } - - foreach (const LocalPackage &package, m_localPackageHub->packageInfos()) { - if (statusCanceledOrFailed()) - break; - installedPackages.insert(package.name, package); - if (package.virtualComp && package.autoDependencies.isEmpty()) { - if (!m_localVirtualComponents.contains(package.name)) - m_localVirtualComponents.append(package.name); - } - } - return installedPackages; + return m_localPackageHub->localPackages(); } bool PackageManagerCorePrivate::fetchMetaInformationFromRepositories(DownloadType type) diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h index 0699bce3d..1a15c6f6c 100644 --- a/src/libs/installer/packagemanagercore_p.h +++ b/src/libs/installer/packagemanagercore_p.h @@ -255,7 +255,7 @@ private: bool adminRightsGained, bool deleteOperation); PackagesList remotePackages(); - LocalPackagesHash localInstalledPackages(); + LocalPackagesMap localInstalledPackages(); bool fetchMetaInformationFromRepositories(DownloadType type = DownloadType::All); bool addUpdateResourcesFromRepositories(bool parseChecksum, bool compressedRepository = false); void processFilesForDelayedDeletion(); diff --git a/src/libs/installer/qinstallerglobal.h b/src/libs/installer/qinstallerglobal.h index 98a81f092..5bc87e21d 100644 --- a/src/libs/installer/qinstallerglobal.h +++ b/src/libs/installer/qinstallerglobal.h @@ -55,7 +55,7 @@ typedef QList<QInstaller::Operation*> OperationList; typedef KDUpdater::Update Package; typedef QList<QInstaller::Package*> PackagesList; -typedef QHash<QString, KDUpdater::LocalPackage> LocalPackagesHash; +typedef QMap<QString, KDUpdater::LocalPackage> LocalPackagesMap; typedef QHash<QString, QStringList> AutoDependencyHash; typedef QHash<QString, QStringList> DependencyHash; diff --git a/src/libs/kdtools/localpackagehub.cpp b/src/libs/kdtools/localpackagehub.cpp index 60a11f1a3..f63f6c974 100644 --- a/src/libs/kdtools/localpackagehub.cpp +++ b/src/libs/kdtools/localpackagehub.cpp @@ -124,6 +124,13 @@ bool LocalPackageHub::isValid() const } /*! + Returns a map of all local installed packages. Map key is the package name. +*/ +QMap<QString, LocalPackage> LocalPackageHub::localPackages() const +{ + return d->m_packageInfoMap; +} +/*! Returns a list of all local installed packages. */ QStringList LocalPackageHub::packageNames() const diff --git a/src/libs/kdtools/localpackagehub.h b/src/libs/kdtools/localpackagehub.h index 6b6744491..11ed200a5 100644 --- a/src/libs/kdtools/localpackagehub.h +++ b/src/libs/kdtools/localpackagehub.h @@ -77,6 +77,8 @@ public: }; bool isValid() const; + + QMap<QString, LocalPackage> localPackages() const; QStringList packageNames() const; Error error() const; |