diff --git a/src/plugins/boot2qt/qdbmakedefaultappstep.cpp b/src/plugins/boot2qt/qdbmakedefaultappstep.cpp index f8b50b22e32..70c1c40acba 100644 --- a/src/plugins/boot2qt/qdbmakedefaultappstep.cpp +++ b/src/plugins/boot2qt/qdbmakedefaultappstep.cpp @@ -11,7 +11,6 @@ #include #include -#include #include #include diff --git a/src/plugins/boot2qt/qdbstopapplicationstep.cpp b/src/plugins/boot2qt/qdbstopapplicationstep.cpp index 85b513e95af..60d891beafb 100644 --- a/src/plugins/boot2qt/qdbstopapplicationstep.cpp +++ b/src/plugins/boot2qt/qdbstopapplicationstep.cpp @@ -11,7 +11,6 @@ #include #include -#include #include #include diff --git a/src/plugins/remotelinux/CMakeLists.txt b/src/plugins/remotelinux/CMakeLists.txt index 7f486510e97..2899475f13d 100644 --- a/src/plugins/remotelinux/CMakeLists.txt +++ b/src/plugins/remotelinux/CMakeLists.txt @@ -2,7 +2,6 @@ add_qtc_plugin(RemoteLinux DEPENDS QmlDebug PLUGIN_DEPENDS Core Debugger ProjectExplorer SOURCES - abstractremotelinuxdeployservice.cpp abstractremotelinuxdeployservice.h abstractremotelinuxdeploystep.cpp abstractremotelinuxdeploystep.h customcommanddeploystep.cpp customcommanddeploystep.h deploymenttimeinfo.cpp deploymenttimeinfo.h diff --git a/src/plugins/remotelinux/abstractremotelinuxdeployservice.cpp b/src/plugins/remotelinux/abstractremotelinuxdeployservice.cpp deleted file mode 100644 index 57485c3d33b..00000000000 --- a/src/plugins/remotelinux/abstractremotelinuxdeployservice.cpp +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "abstractremotelinuxdeployservice.h" - -#include "deploymenttimeinfo.h" -#include "remotelinuxtr.h" - -#include -#include -#include -#include - -#include -#include - -#include -#include - -using namespace ProjectExplorer; -using namespace Utils; - -namespace RemoteLinux { -namespace Internal { - -class AbstractRemoteLinuxDeployServicePrivate -{ -public: - IDevice::ConstPtr deviceConfiguration; - QPointer target; - - DeploymentTimeInfo deployTimes; - std::unique_ptr m_taskTree; -}; - -} // namespace Internal - -using namespace Internal; - -AbstractRemoteLinuxDeployService::AbstractRemoteLinuxDeployService(QObject *parent) - : QObject(parent), d(new AbstractRemoteLinuxDeployServicePrivate) -{ -} - -AbstractRemoteLinuxDeployService::~AbstractRemoteLinuxDeployService() -{ - delete d; -} - -const Target *AbstractRemoteLinuxDeployService::target() const -{ - return d->target; -} - -const Kit *AbstractRemoteLinuxDeployService::kit() const -{ - return d->target ? d->target->kit() : nullptr; -} - -IDevice::ConstPtr AbstractRemoteLinuxDeployService::deviceConfiguration() const -{ - return d->deviceConfiguration; -} - -void AbstractRemoteLinuxDeployService::saveDeploymentTimeStamp(const DeployableFile &deployableFile, - const QDateTime &remoteTimestamp) -{ - d->deployTimes.saveDeploymentTimeStamp(deployableFile, kit(), remoteTimestamp); -} - -bool AbstractRemoteLinuxDeployService::hasLocalFileChanged( - const DeployableFile &deployableFile) const -{ - return d->deployTimes.hasLocalFileChanged(deployableFile, kit()); -} - -bool AbstractRemoteLinuxDeployService::hasRemoteFileChanged( - const DeployableFile &deployableFile, const QDateTime &remoteTimestamp) const -{ - return d->deployTimes.hasRemoteFileChanged(deployableFile, kit(), remoteTimestamp); -} - -void AbstractRemoteLinuxDeployService::setTarget(Target *target) -{ - d->target = target; - d->deviceConfiguration = DeviceKitAspect::device(kit()); -} - -void AbstractRemoteLinuxDeployService::setDevice(const IDevice::ConstPtr &device) -{ - d->deviceConfiguration = device; -} - -void AbstractRemoteLinuxDeployService::start() -{ - QTC_ASSERT(!d->m_taskTree, return); - - const CheckResult check = isDeploymentPossible(); - if (!check) { - emit errorMessage(check.errorMessage()); - emit finished(); - return; - } - - if (!isDeploymentNecessary()) { - emit progressMessage(Tr::tr("No deployment action necessary. Skipping.")); - emit finished(); - return; - } - - d->m_taskTree.reset(new TaskTree(deployRecipe())); - const auto endHandler = [this] { - d->m_taskTree.release()->deleteLater(); - emit finished(); - }; - connect(d->m_taskTree.get(), &TaskTree::done, this, endHandler); - connect(d->m_taskTree.get(), &TaskTree::errorOccurred, this, endHandler); - d->m_taskTree->start(); -} - -void AbstractRemoteLinuxDeployService::stop() -{ - if (!d->m_taskTree) - return; - d->m_taskTree.reset(); - emit finished(); -} - -CheckResult AbstractRemoteLinuxDeployService::isDeploymentPossible() const -{ - if (!deviceConfiguration()) - return CheckResult::failure(Tr::tr("No device configuration set.")); - return CheckResult::success(); -} - -QVariantMap AbstractRemoteLinuxDeployService::exportDeployTimes() const -{ - return d->deployTimes.exportDeployTimes(); -} - -void AbstractRemoteLinuxDeployService::importDeployTimes(const QVariantMap &map) -{ - d->deployTimes.importDeployTimes(map); -} - -} // namespace RemoteLinux diff --git a/src/plugins/remotelinux/abstractremotelinuxdeployservice.h b/src/plugins/remotelinux/abstractremotelinuxdeployservice.h deleted file mode 100644 index f0b7fa6c0a8..00000000000 --- a/src/plugins/remotelinux/abstractremotelinuxdeployservice.h +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include "remotelinux_export.h" - -#include - -#include -#include - -namespace ProjectExplorer { -class DeployableFile; -class Kit; -class Target; -} - -namespace Utils::Tasking { class Group; } - -namespace RemoteLinux { -namespace Internal { class AbstractRemoteLinuxDeployServicePrivate; } - -class REMOTELINUX_EXPORT CheckResult -{ -public: - static CheckResult success() { return {true, {}}; } - static CheckResult failure(const QString &error = {}) { return {false, error}; } - - operator bool() const { return m_ok; } - QString errorMessage() const { return m_error; } - -private: - CheckResult(bool ok, const QString &error) : m_ok(ok), m_error(error) {} - - bool m_ok = false; - QString m_error; -}; - -class REMOTELINUX_EXPORT AbstractRemoteLinuxDeployService : public QObject -{ - Q_OBJECT - Q_DISABLE_COPY(AbstractRemoteLinuxDeployService) -public: - explicit AbstractRemoteLinuxDeployService(QObject *parent = nullptr); - ~AbstractRemoteLinuxDeployService() override; - - void setTarget(ProjectExplorer::Target *bc); - // Only use setDevice() as fallback if no target is available - void setDevice(const ProjectExplorer::IDeviceConstPtr &device); - void start(); - void stop(); - - QVariantMap exportDeployTimes() const; - void importDeployTimes(const QVariantMap &map); - - virtual CheckResult isDeploymentPossible() const; - -signals: - void errorMessage(const QString &message); - void progressMessage(const QString &message); - void warningMessage(const QString &message); - void stdOutData(const QString &data); - void stdErrData(const QString &data); - void finished(); // Used by Qnx. - -protected: - const ProjectExplorer::Target *target() const; - const ProjectExplorer::Kit *kit() const; - ProjectExplorer::IDeviceConstPtr deviceConfiguration() const; - - void saveDeploymentTimeStamp(const ProjectExplorer::DeployableFile &deployableFile, - const QDateTime &remoteTimestamp); - bool hasLocalFileChanged(const ProjectExplorer::DeployableFile &deployableFile) const; - bool hasRemoteFileChanged(const ProjectExplorer::DeployableFile &deployableFile, - const QDateTime &remoteTimestamp) const; - -private: - virtual bool isDeploymentNecessary() const = 0; - virtual Utils::Tasking::Group deployRecipe() = 0; - - Internal::AbstractRemoteLinuxDeployServicePrivate * const d; -}; - -} // namespace RemoteLinux diff --git a/src/plugins/remotelinux/abstractremotelinuxdeploystep.cpp b/src/plugins/remotelinux/abstractremotelinuxdeploystep.cpp index b97ffcb2698..270b95eb229 100644 --- a/src/plugins/remotelinux/abstractremotelinuxdeploystep.cpp +++ b/src/plugins/remotelinux/abstractremotelinuxdeploystep.cpp @@ -3,17 +3,37 @@ #include "abstractremotelinuxdeploystep.h" -#include "abstractremotelinuxdeployservice.h" +#include "deploymenttimeinfo.h" #include "remotelinuxtr.h" -#include +#include +#include #include +#include +#include + +#include +#include + +#include +#include using namespace ProjectExplorer; +using namespace Utils; namespace RemoteLinux { namespace Internal { +class AbstractRemoteLinuxDeployServicePrivate +{ +public: + IDevice::ConstPtr deviceConfiguration; + QPointer target; + + DeploymentTimeInfo deployTimes; + std::unique_ptr m_taskTree; +}; + class AbstractRemoteLinuxDeployStepPrivate { public: @@ -23,7 +43,117 @@ public: AbstractRemoteLinuxDeployService *deployService = nullptr; }; -} // namespace Internal +} // Internal + +using namespace Internal; + +AbstractRemoteLinuxDeployService::AbstractRemoteLinuxDeployService(QObject *parent) + : QObject(parent), d(new AbstractRemoteLinuxDeployServicePrivate) +{ +} + +AbstractRemoteLinuxDeployService::~AbstractRemoteLinuxDeployService() +{ + delete d; +} + +const Target *AbstractRemoteLinuxDeployService::target() const +{ + return d->target; +} + +const Kit *AbstractRemoteLinuxDeployService::kit() const +{ + return d->target ? d->target->kit() : nullptr; +} + +IDevice::ConstPtr AbstractRemoteLinuxDeployService::deviceConfiguration() const +{ + return d->deviceConfiguration; +} + +void AbstractRemoteLinuxDeployService::saveDeploymentTimeStamp(const DeployableFile &deployableFile, + const QDateTime &remoteTimestamp) +{ + d->deployTimes.saveDeploymentTimeStamp(deployableFile, kit(), remoteTimestamp); +} + +bool AbstractRemoteLinuxDeployService::hasLocalFileChanged( + const DeployableFile &deployableFile) const +{ + return d->deployTimes.hasLocalFileChanged(deployableFile, kit()); +} + +bool AbstractRemoteLinuxDeployService::hasRemoteFileChanged( + const DeployableFile &deployableFile, const QDateTime &remoteTimestamp) const +{ + return d->deployTimes.hasRemoteFileChanged(deployableFile, kit(), remoteTimestamp); +} + +void AbstractRemoteLinuxDeployService::setTarget(Target *target) +{ + d->target = target; + d->deviceConfiguration = DeviceKitAspect::device(kit()); +} + +void AbstractRemoteLinuxDeployService::setDevice(const IDevice::ConstPtr &device) +{ + d->deviceConfiguration = device; +} + +void AbstractRemoteLinuxDeployService::start() +{ + QTC_ASSERT(!d->m_taskTree, return); + + const CheckResult check = isDeploymentPossible(); + if (!check) { + emit errorMessage(check.errorMessage()); + emit finished(); + return; + } + + if (!isDeploymentNecessary()) { + emit progressMessage(Tr::tr("No deployment action necessary. Skipping.")); + emit finished(); + return; + } + + d->m_taskTree.reset(new TaskTree(deployRecipe())); + const auto endHandler = [this] { + d->m_taskTree.release()->deleteLater(); + emit finished(); + }; + connect(d->m_taskTree.get(), &TaskTree::done, this, endHandler); + connect(d->m_taskTree.get(), &TaskTree::errorOccurred, this, endHandler); + d->m_taskTree->start(); +} + +void AbstractRemoteLinuxDeployService::stop() +{ + if (!d->m_taskTree) + return; + d->m_taskTree.reset(); + emit finished(); +} + +CheckResult AbstractRemoteLinuxDeployService::isDeploymentPossible() const +{ + if (!deviceConfiguration()) + return CheckResult::failure(Tr::tr("No device configuration set.")); + return CheckResult::success(); +} + +QVariantMap AbstractRemoteLinuxDeployService::exportDeployTimes() const +{ + return d->deployTimes.exportDeployTimes(); +} + +void AbstractRemoteLinuxDeployService::importDeployTimes(const QVariantMap &map) +{ + d->deployTimes.importDeployTimes(map); +} + + AbstractRemoteLinuxDeployStep::AbstractRemoteLinuxDeployStep(BuildStepList *bsl, Utils::Id id) : BuildStep(bsl, id), d(new Internal::AbstractRemoteLinuxDeployStepPrivate) diff --git a/src/plugins/remotelinux/abstractremotelinuxdeploystep.h b/src/plugins/remotelinux/abstractremotelinuxdeploystep.h index e866c511184..258d4b9e7f9 100644 --- a/src/plugins/remotelinux/abstractremotelinuxdeploystep.h +++ b/src/plugins/remotelinux/abstractremotelinuxdeploystep.h @@ -6,6 +6,18 @@ #include "remotelinux_export.h" #include +#include + +#include +#include + +namespace ProjectExplorer { +class DeployableFile; +class Kit; +class Target; +} + +namespace Utils::Tasking { class Group; } namespace RemoteLinux { @@ -13,6 +25,7 @@ class AbstractRemoteLinuxDeployService; class CheckResult; namespace Internal { class AbstractRemoteLinuxDeployStepPrivate; } +namespace Internal { class AbstractRemoteLinuxDeployServicePrivate; } class REMOTELINUX_EXPORT AbstractRemoteLinuxDeployStep : public ProjectExplorer::BuildStep { @@ -45,4 +58,65 @@ private: Internal::AbstractRemoteLinuxDeployStepPrivate *d; }; -} // namespace RemoteLinux +class REMOTELINUX_EXPORT CheckResult +{ +public: + static CheckResult success() { return {true, {}}; } + static CheckResult failure(const QString &error = {}) { return {false, error}; } + + operator bool() const { return m_ok; } + QString errorMessage() const { return m_error; } + +private: + CheckResult(bool ok, const QString &error) : m_ok(ok), m_error(error) {} + + bool m_ok = false; + QString m_error; +}; + +class REMOTELINUX_EXPORT AbstractRemoteLinuxDeployService : public QObject +{ + Q_OBJECT + Q_DISABLE_COPY(AbstractRemoteLinuxDeployService) +public: + explicit AbstractRemoteLinuxDeployService(QObject *parent = nullptr); + ~AbstractRemoteLinuxDeployService() override; + + void setTarget(ProjectExplorer::Target *bc); + // Only use setDevice() as fallback if no target is available + void setDevice(const ProjectExplorer::IDeviceConstPtr &device); + void start(); + void stop(); + + QVariantMap exportDeployTimes() const; + void importDeployTimes(const QVariantMap &map); + + virtual CheckResult isDeploymentPossible() const; + +signals: + void errorMessage(const QString &message); + void progressMessage(const QString &message); + void warningMessage(const QString &message); + void stdOutData(const QString &data); + void stdErrData(const QString &data); + void finished(); // Used by Qnx. + +protected: + const ProjectExplorer::Target *target() const; + const ProjectExplorer::Kit *kit() const; + ProjectExplorer::IDeviceConstPtr deviceConfiguration() const; + + void saveDeploymentTimeStamp(const ProjectExplorer::DeployableFile &deployableFile, + const QDateTime &remoteTimestamp); + bool hasLocalFileChanged(const ProjectExplorer::DeployableFile &deployableFile) const; + bool hasRemoteFileChanged(const ProjectExplorer::DeployableFile &deployableFile, + const QDateTime &remoteTimestamp) const; + +private: + virtual bool isDeploymentNecessary() const = 0; + virtual Utils::Tasking::Group deployRecipe() = 0; + + Internal::AbstractRemoteLinuxDeployServicePrivate * const d; +}; + +} // RemoteLinux diff --git a/src/plugins/remotelinux/customcommanddeploystep.cpp b/src/plugins/remotelinux/customcommanddeploystep.cpp index 7c538bb51b1..b7abdd83044 100644 --- a/src/plugins/remotelinux/customcommanddeploystep.cpp +++ b/src/plugins/remotelinux/customcommanddeploystep.cpp @@ -3,7 +3,6 @@ #include "customcommanddeploystep.h" -#include "abstractremotelinuxdeployservice.h" #include "abstractremotelinuxdeploystep.h" #include "remotelinux_constants.h" #include "remotelinuxtr.h" diff --git a/src/plugins/remotelinux/genericdirectuploadservice.h b/src/plugins/remotelinux/genericdirectuploadservice.h index a584bfec89e..31799f063ad 100644 --- a/src/plugins/remotelinux/genericdirectuploadservice.h +++ b/src/plugins/remotelinux/genericdirectuploadservice.h @@ -5,7 +5,7 @@ #include "remotelinux_export.h" -#include "abstractremotelinuxdeployservice.h" +#include "abstractremotelinuxdeploystep.h" #include diff --git a/src/plugins/remotelinux/killappstep.cpp b/src/plugins/remotelinux/killappstep.cpp index e719108252f..03473d95a23 100644 --- a/src/plugins/remotelinux/killappstep.cpp +++ b/src/plugins/remotelinux/killappstep.cpp @@ -4,7 +4,6 @@ #include "killappstep.h" #include "abstractremotelinuxdeploystep.h" -#include "abstractremotelinuxdeployservice.h" #include "remotelinux_constants.h" #include "remotelinuxtr.h" diff --git a/src/plugins/remotelinux/remotelinux.qbs b/src/plugins/remotelinux/remotelinux.qbs index cea281f43c1..3dad98eb88c 100644 --- a/src/plugins/remotelinux/remotelinux.qbs +++ b/src/plugins/remotelinux/remotelinux.qbs @@ -13,8 +13,6 @@ Project { Depends { name: "ProjectExplorer" } files: [ - "abstractremotelinuxdeployservice.cpp", - "abstractremotelinuxdeployservice.h", "abstractremotelinuxdeploystep.cpp", "abstractremotelinuxdeploystep.h", "deploymenttimeinfo.cpp", diff --git a/src/plugins/remotelinux/rsyncdeploystep.cpp b/src/plugins/remotelinux/rsyncdeploystep.cpp index e19ef52d1d8..b20eaf90499 100644 --- a/src/plugins/remotelinux/rsyncdeploystep.cpp +++ b/src/plugins/remotelinux/rsyncdeploystep.cpp @@ -3,8 +3,6 @@ #include "rsyncdeploystep.h" -#include "abstractremotelinuxdeploystep.h" -#include "abstractremotelinuxdeployservice.h" #include "abstractremotelinuxdeploystep.h" #include "remotelinux_constants.h" #include "remotelinuxtr.h" diff --git a/src/plugins/remotelinux/tarpackagedeploystep.cpp b/src/plugins/remotelinux/tarpackagedeploystep.cpp index ef7e1dc166b..ee276666ac8 100644 --- a/src/plugins/remotelinux/tarpackagedeploystep.cpp +++ b/src/plugins/remotelinux/tarpackagedeploystep.cpp @@ -3,7 +3,6 @@ #include "tarpackagedeploystep.h" -#include "abstractremotelinuxdeployservice.h" #include "abstractremotelinuxdeploystep.h" #include "remotelinux_constants.h" #include "remotelinuxtr.h"