diff options
author | Katja Marttila <katja.marttila@qt.io> | 2018-12-18 07:44:20 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2018-12-18 07:44:20 +0000 |
commit | 72d55882da62de7f10b8cbca19281824fff9ebe4 (patch) | |
tree | 4817a8e7e9766e877cb54be216359c0b9509d056 /src/libs/installer | |
parent | 9215e91d7a0701d63e28e04d5f0984bfebd81dc0 (diff) | |
parent | b4772841a90f8d9cf48416552703ba2b6a7c577b (diff) |
Merge "Merge remote-tracking branch 'origin/3.0' into master"
Diffstat (limited to 'src/libs/installer')
-rw-r--r-- | src/libs/installer/extractarchiveoperation.cpp | 13 | ||||
-rw-r--r-- | src/libs/installer/extractarchiveoperation.h | 1 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 21 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 2 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 9 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.cpp | 15 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.h | 1 |
7 files changed, 42 insertions, 20 deletions
diff --git a/src/libs/installer/extractarchiveoperation.cpp b/src/libs/installer/extractarchiveoperation.cpp index c41f029e3..12608a0d1 100644 --- a/src/libs/installer/extractarchiveoperation.cpp +++ b/src/libs/installer/extractarchiveoperation.cpp @@ -30,6 +30,7 @@ #include <QEventLoop> #include <QThreadPool> +#include <QFileInfo> namespace QInstaller { @@ -67,6 +68,11 @@ bool ExtractArchiveOperation::performOperation() connect(runnable, &Runnable::finished, &receiver, &Receiver::runnableFinished, Qt::QueuedConnection); + m_files.clear(); + + QFileInfo fileInfo(archivePath); + emit outputTextChanged(tr("Extracting \"%1\"").arg(fileInfo.fileName())); + QEventLoop loop; connect(&receiver, &Receiver::finished, &loop, &QEventLoop::quit); if (QThreadPool::globalInstance()->tryStart(runnable)) { @@ -77,6 +83,8 @@ bool ExtractArchiveOperation::performOperation() receiver.runnableFinished(true, QString()); } + setValue(QLatin1String("files"), m_files); + // TODO: Use backups for rollback, too? Doesn't work for uninstallation though. // delete all backups we can delete right now, remember the rest @@ -121,10 +129,7 @@ bool ExtractArchiveOperation::testOperation() */ void ExtractArchiveOperation::fileFinished(const QString &filename) { - QStringList files = value(QLatin1String("files")).toStringList(); - files.prepend(filename); - setValue(QLatin1String("files"), files); - emit outputTextChanged(QDir::toNativeSeparators(filename)); + m_files.prepend(filename); } } // namespace QInstaller diff --git a/src/libs/installer/extractarchiveoperation.h b/src/libs/installer/extractarchiveoperation.h index 45c67a9cb..3e75a9bb9 100644 --- a/src/libs/installer/extractarchiveoperation.h +++ b/src/libs/installer/extractarchiveoperation.h @@ -56,6 +56,7 @@ private Q_SLOTS: void fileFinished(const QString &progress); private: + QStringList m_files; class Callback; class Runnable; class Receiver; diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 0e20ff8e9..0c814288e 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -433,6 +433,7 @@ void PackageManagerCore::writeMaintenanceTool() dropAdminRights(); d->m_needToWriteMaintenanceTool = false; } catch (const Error &error) { + qCritical() << "Error writing Maintenance Tool: " << error.message(); MessageBoxHandler::critical(MessageBoxHandler::currentBestSuitParent(), QLatin1String("WriteError"), tr("Error writing Maintenance Tool"), error.message(), QMessageBox::Ok, QMessageBox::Ok); @@ -449,17 +450,16 @@ void PackageManagerCore::writeMaintenanceConfigFiles() } /*! - Resets the class to its initial state and applies the values of the - parameters specified by \a params. + Resets the class to its initial state. */ -void PackageManagerCore::reset(const QHash<QString, QString> ¶ms) +void PackageManagerCore::reset() { d->m_completeUninstall = false; d->m_needsHardRestart = false; d->m_status = PackageManagerCore::Unfinished; d->m_installerBaseBinaryUnreplaced.clear(); - - d->initialize(params); + d->m_coreCheckedHash.clear(); + d->m_componentsToInstallCalculated = false; } /*! @@ -868,14 +868,9 @@ PackageManagerCore::PackageManagerCore(qint64 magicmaker, const QList<OperationB if (!packagesWithoutOperation.isEmpty() || !orphanedOperations.isEmpty()) { qCritical() << "Operations missing for installed packages" << packagesWithoutOperation.toList(); qCritical() << "Orphaned operations" << orphanedOperations.toList(); - MessageBoxHandler::critical( - MessageBoxHandler::currentBestSuitParent(), - QLatin1String("Corrupt_Installation_Error"), - QCoreApplication::translate("QInstaller", "Corrupt installation"), - QCoreApplication::translate("QInstaller", - "Your installation seems to be corrupted. " - "Please consider re-installing from scratch." - )); + qCritical() << "Your installation seems to be corrupted. Please consider re-installing from scratch, " + "remove the packages from components.xml which operations are missing, " + "or reinstall the packages."; } else { qDebug() << "Operations sanity check succeeded."; } diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index c05374ce9..9f8d1a304 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -133,7 +133,7 @@ public: bool fetchCompressedPackagesTree(); bool run(); - void reset(const QHash<QString, QString> ¶ms); + void reset(); void setGuiObject(QObject *gui); QObject *guiObject() const; diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 3869711af..ccb80306e 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -1854,9 +1854,11 @@ void PackageManagerCorePrivate::installComponent(Component *component, double pr const int opCount = operations.count(); // show only components which do something, MinimumProgress is only for progress calculation safeness + bool showDetailsLog = false; if (opCount > 1 || (opCount == 1 && operations.at(0)->name() != QLatin1String("MinimumProgress"))) { - ProgressCoordinator::instance()->emitLabelAndDetailTextChanged(tr("\nInstalling component %1") - .arg(component->displayName())); + ProgressCoordinator::instance()->emitLabelAndDetailTextChanged(tr("\nInstalling component %1...") + .arg(component->displayName())); + showDetailsLog = true; } foreach (Operation *operation, operations) { @@ -1941,6 +1943,9 @@ void PackageManagerCorePrivate::installComponent(Component *component, double pr component->setInstalled(); component->markAsPerformedInstallation(); + + if (showDetailsLog) + ProgressCoordinator::instance()->emitDetailTextChanged(tr("Done")); } // -- private diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp index 39235317d..0e2577850 100644 --- a/src/libs/installer/packagemanagergui.cpp +++ b/src/libs/installer/packagemanagergui.cpp @@ -1988,6 +1988,21 @@ void ComponentSelectionPage::allowCompressedRepositoryInstall() d->allowCompressedRepositoryInstall(); } +bool ComponentSelectionPage::addVirtualComponentToUninstall(const QString &name) +{ + PackageManagerCore *core = packageManagerCore(); + const QList<Component *> allComponents = core->components(PackageManagerCore::ComponentType::All); + Component *component = PackageManagerCore::componentByName( + name, allComponents); + if (component && component->isInstalled() && component->isVirtual()) { + component->setCheckState(Qt::Unchecked); + core->componentsToInstallNeedsRecalculation(); + qDebug() << "Virtual component " << name << " was selected for uninstall by script."; + return true; + } + return false; +} + void ComponentSelectionPage::setModified(bool modified) { setComplete(modified); diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h index 48f5089c0..b233086c3 100644 --- a/src/libs/installer/packagemanagergui.h +++ b/src/libs/installer/packagemanagergui.h @@ -312,6 +312,7 @@ public: Q_INVOKABLE void selectComponent(const QString &id); Q_INVOKABLE void deselectComponent(const QString &id); Q_INVOKABLE void allowCompressedRepositoryInstall(); + Q_INVOKABLE bool addVirtualComponentToUninstall(const QString &name); protected: void entering(); |