ProjectExplorer: Show non-desktop device names in remote run config names

So far we used device type in some cases, not even following a specific
pattern.

Showing the device name gives a bit more detail in cases of multiple devices
of the same type and offers the user a bit more control on what it shown.

Change-Id: I2bd6bbd404577db3afca0f84b8a976cb07b1cfd0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2018-02-14 10:25:47 +01:00
parent 9f2bb5d0c5
commit 018581a8c2
10 changed files with 33 additions and 49 deletions

View File

@@ -59,8 +59,8 @@ QList<RunConfigurationCreationInfo> BareMetalRunConfigurationFactory::availableC
// BareMetalCustomRunConfigurationFactory // BareMetalCustomRunConfigurationFactory
BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory(QObject *parent) : BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory(QObject *parent) :
FixedRunConfigurationFactory(BareMetalCustomRunConfiguration::tr("Custom Executable (on GDB server or hardware debugger)"), FixedRunConfigurationFactory(BareMetalCustomRunConfiguration::tr("Custom Executable)"),
parent) true, parent)
{ {
setObjectName("BareMetalCustomRunConfigurationFactory"); setObjectName("BareMetalCustomRunConfigurationFactory");
registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal.CustomRunConfig"); registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal.CustomRunConfig");

View File

@@ -448,12 +448,24 @@ const QList<IRunConfigurationFactory *> IRunConfigurationFactory::allRunConfigur
return g_runConfigurationFactories; return g_runConfigurationFactories;
} }
QString IRunConfigurationFactory::decoratedTargetName(const QString targetName, Target *target)
{
QString displayName = QFileInfo(targetName).completeBaseName();
Core::Id devType = DeviceTypeKitInformation::deviceTypeId(target->kit());
if (devType != Constants::DESKTOP_DEVICE_TYPE) {
if (IDevice::ConstPtr dev = DeviceKitInformation::device(target->kit()))
//: Shown in Run configuration, Add menu: "name of runnable (on device name)"
displayName = tr("%1 (on %2)").arg(displayName, dev->displayName());
}
return displayName;
}
QList<RunConfigurationCreationInfo> QList<RunConfigurationCreationInfo>
IRunConfigurationFactory::availableCreators(Target *parent) const IRunConfigurationFactory::availableCreators(Target *parent) const
{ {
return Utils::transform(parent->applicationTargets().list, [this](const BuildTargetInfo &ti) { return Utils::transform(parent->applicationTargets().list, [parent, this](const BuildTargetInfo &ti) {
return RunConfigurationCreationInfo(this, m_runConfigBaseId, ti.targetName, const QString displayName = decoratedTargetName(ti.targetName, parent);
QFileInfo(ti.targetName).completeBaseName()); return RunConfigurationCreationInfo(this, m_runConfigBaseId, ti.targetName, displayName);
}); });
} }
@@ -604,15 +616,19 @@ QList<IRunConfigurationFactory *> IRunConfigurationFactory::find(Target *parent)
} }
FixedRunConfigurationFactory::FixedRunConfigurationFactory(const QString &displayName, FixedRunConfigurationFactory::FixedRunConfigurationFactory(const QString &displayName,
bool addDeviceName,
QObject *parent) : QObject *parent) :
IRunConfigurationFactory(parent), m_fixedBuildTarget(displayName) IRunConfigurationFactory(parent),
m_fixedBuildTarget(displayName),
m_decorateTargetName(addDeviceName)
{ } { }
QList<RunConfigurationCreationInfo> QList<RunConfigurationCreationInfo>
FixedRunConfigurationFactory::availableCreators(Target *parent) const FixedRunConfigurationFactory::availableCreators(Target *parent) const
{ {
Q_UNUSED(parent); QString displayName = m_decorateTargetName ? decoratedTargetName(m_fixedBuildTarget, parent)
return {RunConfigurationCreationInfo(this, runConfigurationBaseId(), QString(), m_fixedBuildTarget)}; : m_fixedBuildTarget;
return {RunConfigurationCreationInfo(this, runConfigurationBaseId(), QString(), displayName)};
} }
using WorkerFactories = std::vector<RunControl::WorkerFactory>; using WorkerFactories = std::vector<RunControl::WorkerFactory>;

View File

@@ -324,6 +324,8 @@ public:
Core::Id runConfigurationBaseId() const { return m_runConfigBaseId; } Core::Id runConfigurationBaseId() const { return m_runConfigBaseId; }
static QString decoratedTargetName(const QString targetName, Target *kit);
protected: protected:
virtual bool canCreateHelper(Target *parent, const QString &buildTarget) const; virtual bool canCreateHelper(Target *parent, const QString &buildTarget) const;
@@ -355,12 +357,15 @@ class PROJECTEXPLORER_EXPORT FixedRunConfigurationFactory : public IRunConfigura
Q_OBJECT Q_OBJECT
public: public:
explicit FixedRunConfigurationFactory(const QString &displayName, QObject *parent = nullptr); explicit FixedRunConfigurationFactory(const QString &displayName,
bool addDeviceName = false,
QObject *parent = nullptr);
QList<RunConfigurationCreationInfo> availableCreators(Target *parent) const override; QList<RunConfigurationCreationInfo> availableCreators(Target *parent) const override;
private: private:
const QString m_fixedBuildTarget; const QString m_fixedBuildTarget;
const bool m_decorateTargetName;
}; };
class PROJECTEXPLORER_EXPORT RunConfigWidget : public QWidget class PROJECTEXPLORER_EXPORT RunConfigWidget : public QWidget

View File

@@ -32,7 +32,7 @@ namespace QmlProjectManager {
namespace Internal { namespace Internal {
QmlProjectRunConfigurationFactory::QmlProjectRunConfigurationFactory(QObject *parent) : QmlProjectRunConfigurationFactory::QmlProjectRunConfigurationFactory(QObject *parent) :
ProjectExplorer::FixedRunConfigurationFactory(tr("QML Scene"), parent) ProjectExplorer::FixedRunConfigurationFactory(tr("QML Scene"), false, parent)
{ {
setObjectName("QmlProjectRunConfigurationFactory"); setObjectName("QmlProjectRunConfigurationFactory");
registerRunConfiguration<QmlProjectRunConfiguration>(Constants::QML_SCENE_RC_ID); registerRunConfiguration<QmlProjectRunConfiguration>(Constants::QML_SCENE_RC_ID);

View File

@@ -29,13 +29,6 @@
#include "qnxrunconfiguration.h" #include "qnxrunconfiguration.h"
#include "qnxdevicefactory.h" #include "qnxdevicefactory.h"
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/target.h>
#include <QFileInfo>
using namespace ProjectExplorer;
namespace Qnx { namespace Qnx {
namespace Internal { namespace Internal {
@@ -46,12 +39,5 @@ QnxRunConfigurationFactory::QnxRunConfigurationFactory(QObject *parent) :
setSupportedTargetDeviceTypes({Constants::QNX_QNX_OS_TYPE}); setSupportedTargetDeviceTypes({Constants::QNX_QNX_OS_TYPE});
} }
QList<RunConfigurationCreationInfo> QnxRunConfigurationFactory::availableCreators(Target *parent) const
{
return Utils::transform(parent->applicationTargets().list, [this](const BuildTargetInfo &bti) {
return convert(tr("%1 on QNX Device").arg(QFileInfo(bti.targetName).completeBaseName()), bti.targetName);
});
}
} // namespace Internal } // namespace Internal
} // namespace Qnx } // namespace Qnx

View File

@@ -35,9 +35,6 @@ class QnxRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFact
Q_OBJECT Q_OBJECT
public: public:
explicit QnxRunConfigurationFactory(QObject *parent = nullptr); explicit QnxRunConfigurationFactory(QObject *parent = nullptr);
QList<ProjectExplorer::RunConfigurationCreationInfo>
availableCreators(ProjectExplorer::Target *parent) const override;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -154,7 +154,7 @@ Core::Id RemoteLinuxCustomRunConfiguration::runConfigId()
QString RemoteLinuxCustomRunConfiguration::runConfigDefaultDisplayName() QString RemoteLinuxCustomRunConfiguration::runConfigDefaultDisplayName()
{ {
return tr("Custom Executable (on Remote Generic Linux Host)"); return tr("Custom Executable");
} }
static QString localExeKey() static QString localExeKey()

View File

@@ -158,8 +158,7 @@ bool RemoteLinuxRunConfiguration::fromMap(const QVariantMap &map)
QString RemoteLinuxRunConfiguration::defaultDisplayName() QString RemoteLinuxRunConfiguration::defaultDisplayName()
{ {
if (!d->targetName.isEmpty()) if (!d->targetName.isEmpty())
//: %1 is the name of a project which is being run on remote Linux return IRunConfigurationFactory::decoratedTargetName(d->targetName, target());
return tr("%1 (on Remote Device)").arg(d->targetName);
//: Remote Linux run configuration default display name //: Remote Linux run configuration default display name
return tr("Run on Remote Device"); return tr("Run on Remote Device");
} }

View File

@@ -29,12 +29,6 @@
#include "remotelinuxcustomrunconfiguration.h" #include "remotelinuxcustomrunconfiguration.h"
#include "remotelinuxrunconfiguration.h" #include "remotelinuxrunconfiguration.h"
#include <projectexplorer/buildtargetinfo.h>
#include <projectexplorer/target.h>
#include <utils/qtcassert.h>
#include <QFileInfo>
using namespace ProjectExplorer; using namespace ProjectExplorer;
namespace RemoteLinux { namespace RemoteLinux {
@@ -50,16 +44,6 @@ RemoteLinuxRunConfigurationFactory::RemoteLinuxRunConfigurationFactory(QObject *
setSupportedTargetDeviceTypes({RemoteLinux::Constants::GenericLinuxOsType}); setSupportedTargetDeviceTypes({RemoteLinux::Constants::GenericLinuxOsType});
} }
QList<RunConfigurationCreationInfo>
RemoteLinuxRunConfigurationFactory::availableCreators(Target *parent) const
{
return Utils::transform(parent->applicationTargets().list, [this](const BuildTargetInfo &bti) {
return convert(tr("%1 (on Remote Generic Linux Host)").arg(bti.targetName),
QFileInfo(bti.targetName).completeBaseName());
});
}
// RemoteLinuxCustomRunConfigurationFactory // RemoteLinuxCustomRunConfigurationFactory
RemoteLinuxCustomRunConfigurationFactory::RemoteLinuxCustomRunConfigurationFactory(QObject *parent) RemoteLinuxCustomRunConfigurationFactory::RemoteLinuxCustomRunConfigurationFactory(QObject *parent)

View File

@@ -36,9 +36,6 @@ class RemoteLinuxRunConfigurationFactory : public ProjectExplorer::IRunConfigura
public: public:
explicit RemoteLinuxRunConfigurationFactory(QObject *parent = nullptr); explicit RemoteLinuxRunConfigurationFactory(QObject *parent = nullptr);
QList<ProjectExplorer::RunConfigurationCreationInfo>
availableCreators(ProjectExplorer::Target *parent) const override;
}; };
class RemoteLinuxCustomRunConfigurationFactory : public ProjectExplorer::FixedRunConfigurationFactory class RemoteLinuxCustomRunConfigurationFactory : public ProjectExplorer::FixedRunConfigurationFactory