Move some knowledge from KitAspectWidget to KitAspect

The authoritative source of information about a KitAspect is the
KitAspect itself, not the associated widget.

Change-Id: I72d3d0425b845457846a940350bab59f1ff0cc2c
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2019-02-06 16:16:07 +01:00
parent ce19540b77
commit 09a7d2bd45
13 changed files with 50 additions and 103 deletions

View File

@@ -57,11 +57,8 @@ public:
AndroidGdbServerKitAspectWidget(Kit *kit, const KitAspect *ki);
~AndroidGdbServerKitAspectWidget() override;
QString displayName() const override;
QString toolTip() const override;
void makeReadOnly() override;
void refresh() override;
bool visibleInKit() override;
QWidget *mainWidget() const override;
QWidget *buttonWidget() const override;
@@ -78,6 +75,8 @@ private:
AndroidGdbServerKitAspect::AndroidGdbServerKitAspect()
{
setId(AndroidGdbServerKitAspect::id());
setDisplayName(tr("Android GDB server"));
setDescription(tr("The GDB server to use for this kit."));
setPriority(27999); // Just one less than Debugger!
}
@@ -91,6 +90,11 @@ QList<Task> AndroidGdbServerKitAspect::validate(const Kit *) const
return QList<Task>();
}
bool AndroidGdbServerKitAspect::isApplicableToKit(const Kit *k) const
{
return DeviceKitAspect::deviceId(k) == Constants::ANDROID_DEVICE_ID;
}
KitAspect::ItemList AndroidGdbServerKitAspect::toUserOutput(const Kit *kit) const
{
return KitAspect::ItemList()
@@ -169,16 +173,6 @@ AndroidGdbServerKitAspectWidget::~AndroidGdbServerKitAspectWidget()
delete m_label;
}
QString AndroidGdbServerKitAspectWidget::displayName() const
{
return tr("Android GDB server");
}
QString AndroidGdbServerKitAspectWidget::toolTip() const
{
return tr("The GDB server to use for this kit.");
}
void AndroidGdbServerKitAspectWidget::makeReadOnly()
{
m_button->setEnabled(false);
@@ -189,11 +183,6 @@ void AndroidGdbServerKitAspectWidget::refresh()
m_label->setText(AndroidGdbServerKitAspect::gdbServer(m_kit).toString());
}
bool AndroidGdbServerKitAspectWidget::visibleInKit()
{
return DeviceKitAspect::deviceId(m_kit) == Constants::ANDROID_DEVICE_ID;
}
QWidget *AndroidGdbServerKitAspectWidget::mainWidget() const
{
return m_label;

View File

@@ -37,9 +37,8 @@ public:
AndroidGdbServerKitAspect();
QVariant defaultValue(const ProjectExplorer::Kit *) const override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *) const override;
bool isApplicableToKit(const ProjectExplorer::Kit *k) const override;
ItemList toUserOutput(const ProjectExplorer::Kit *) const override;
ProjectExplorer::KitAspectWidget *createConfigWidget(ProjectExplorer::Kit *) const override;

View File

@@ -111,7 +111,6 @@ public:
private:
// KitAspectWidget interface
QString displayName() const override { return tr("CMake Tool"); }
void makeReadOnly() override { m_comboBox->setEnabled(false); }
QWidget *mainWidget() const override { return m_comboBox; }
QWidget *buttonWidget() const override { return m_manageButton; }
@@ -122,12 +121,6 @@ private:
m_comboBox->setCurrentIndex(tool ? indexOf(tool->id()) : -1);
}
QString toolTip() const override
{
return tr("The CMake Tool to use when building a project with CMake.<br>"
"This setting is ignored when using other build systems.");
}
int indexOf(const Core::Id &id)
{
for (int i = 0; i < m_comboBox->count(); ++i) {
@@ -213,6 +206,9 @@ CMakeKitAspect::CMakeKitAspect()
{
setObjectName(QLatin1String("CMakeKitAspect"));
setId(TOOL_ID);
setDisplayName(tr("CMake Tool"));
setDescription(tr("The CMake Tool to use when building a project with CMake.<br>"
"This setting is ignored when using other build systems."));
setPriority(20000);
//make sure the default value is set if a selected CMake is removed
@@ -347,7 +343,6 @@ public:
private:
// KitAspectWidget interface
QString displayName() const override { return tr("CMake generator"); }
void makeReadOnly() override { m_changeButton->setEnabled(false); }
QWidget *mainWidget() const override { return m_label; }
QWidget *buttonWidget() const override { return m_changeButton; }
@@ -375,12 +370,6 @@ private:
m_label->setText(message);
}
QString toolTip() const override
{
return tr("CMake generator defines how a project is built when using CMake.<br>"
"This setting is ignored when using other build systems.");
}
void changeGenerator()
{
QPointer<QDialog> changeDialog = new QDialog(m_changeButton);
@@ -531,6 +520,9 @@ CMakeGeneratorKitAspect::CMakeGeneratorKitAspect()
{
setObjectName(QLatin1String("CMakeGeneratorKitAspect"));
setId(GENERATOR_ID);
setDisplayName(tr("CMake generator"));
setDescription(tr("CMake generator defines how a project is built when using CMake.<br>"
"This setting is ignored when using other build systems."));
setPriority(19000);
}
@@ -804,7 +796,6 @@ public:
private:
// KitAspectWidget interface
QString displayName() const override { return tr("CMake Configuration"); }
QWidget *mainWidget() const override { return m_summaryLabel; }
QWidget *buttonWidget() const override { return m_manageButton; }
@@ -824,11 +815,6 @@ private:
m_editor->setPlainText(current.join('\n'));
}
QString toolTip() const override
{
return tr("Default configuration passed to CMake when setting up a project.");
}
void editConfigurationChanges()
{
if (m_dialog) {
@@ -903,6 +889,8 @@ CMakeConfigurationKitAspect::CMakeConfigurationKitAspect()
{
setObjectName(QLatin1String("CMakeConfigurationKitAspect"));
setId(CONFIGURATION_ID);
setDisplayName(tr("CMake Configuration"));
setDescription(tr("Default configuration passed to CMake when setting up a project."));
setPriority(18000);
}

View File

@@ -83,8 +83,6 @@ public:
}
private:
QString displayName() const override { return tr("Debugger"); }
QString toolTip() const override { return tr("The debugger to use for this kit."); }
QWidget *buttonWidget() const override { return m_manageButton; }
QWidget *mainWidget() const override { return m_comboBox; }
@@ -149,6 +147,8 @@ DebuggerKitAspect::DebuggerKitAspect()
{
setObjectName("DebuggerKitAspect");
setId(DebuggerKitAspect::id());
setDisplayName(tr("Debugger"));
setDescription(tr("The debugger to use for this kit."));
setPriority(28000);
}

View File

@@ -42,7 +42,6 @@ public:
DebuggerKitAspect();
QVariant defaultValue(const ProjectExplorer::Kit *k) const override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const override
{ return DebuggerKitAspect::validateDebugger(k); }

View File

@@ -84,7 +84,6 @@ public:
~SysRootKitAspectWidget() override { delete m_chooser; }
private:
QString displayName() const override { return tr("Sysroot"); }
void makeReadOnly() override { m_chooser->setReadOnly(true); }
QWidget *buttonWidget() const override { return m_chooser->buttonAtIndex(0); }
QWidget *mainWidget() const override { return m_chooser->lineEdit(); }
@@ -95,12 +94,6 @@ private:
m_chooser->setFileName(SysRootKitAspect::sysRoot(m_kit));
}
QString toolTip() const override
{
return tr("The root directory of the system image to use.<br>"
"Leave empty when building for the desktop.");
}
void setPalette(const QPalette &p) override
{
KitAspectWidget::setPalette(p);
@@ -123,6 +116,9 @@ SysRootKitAspect::SysRootKitAspect()
{
setObjectName(QLatin1String("SysRootInformation"));
setId(SysRootKitAspect::id());
setDisplayName(tr("Sysroot"));
setDescription(tr("The root directory of the system image to use.<br>"
"Leave empty when building for the desktop."));
setPriority(31000);
}
@@ -272,7 +268,6 @@ public:
}
private:
QString displayName() const override { return tr("Compiler"); }
QWidget *mainWidget() const override { return m_mainWidget; }
QWidget *buttonWidget() const override { return m_manageButton; }
@@ -305,13 +300,6 @@ private:
}
}
QString toolTip() const override
{
return tr("The compiler to use for building.<br>"
"Make sure the compiler will produce binaries compatible with the target device, "
"Qt version and other libraries used.");
}
void manageToolChains()
{
Core::ICore::showOptionsDialog(Constants::TOOLCHAIN_SETTINGS_PAGE_ID, buttonWidget());
@@ -353,6 +341,10 @@ ToolChainKitAspect::ToolChainKitAspect()
{
setObjectName(QLatin1String("ToolChainInformation"));
setId(ToolChainKitAspect::id());
setDisplayName(tr("Compiler"));
setDescription(tr("The compiler to use for building.<br>"
"Make sure the compiler will produce binaries compatible "
"with the target device, Qt version and other libraries used."));
setPriority(30000);
connect(KitManager::instance(), &KitManager::kitsLoaded,
@@ -786,8 +778,6 @@ public:
private:
QWidget *mainWidget() const override { return m_comboBox; }
QString displayName() const override { return tr("Device type"); }
QString toolTip() const override { return tr("The type of device to run applications on."); }
void makeReadOnly() override { m_comboBox->setEnabled(false); }
void refresh() override
@@ -817,6 +807,8 @@ DeviceTypeKitAspect::DeviceTypeKitAspect()
{
setObjectName(QLatin1String("DeviceTypeInformation"));
setId(DeviceTypeKitAspect::id());
setDisplayName(tr("Device type"));
setDescription(tr("The type of device to run applications on."));
setPriority(33000);
}
@@ -923,8 +915,6 @@ public:
private:
QWidget *mainWidget() const override { return m_comboBox; }
QWidget *buttonWidget() const override { return m_manageButton; }
QString displayName() const override { return tr("Device"); }
QString toolTip() const override { return tr("The device to run the applications on."); }
void makeReadOnly() override { m_comboBox->setEnabled(false); }
void refresh() override
@@ -970,6 +960,8 @@ DeviceKitAspect::DeviceKitAspect()
{
setObjectName(QLatin1String("DeviceInformation"));
setId(DeviceKitAspect::id());
setDisplayName(tr("Device"));
setDescription(tr("The device to run the applications on."));
setPriority(32000);
connect(KitManager::instance(), &KitManager::kitsLoaded,
@@ -1168,14 +1160,8 @@ public:
private:
QWidget *mainWidget() const override { return m_mainWidget; }
QWidget *buttonWidget() const override { return m_manageButton; }
QString displayName() const override { return tr("Environment"); }
void makeReadOnly() override { m_manageButton->setEnabled(false); }
QString toolTip() const override
{
return tr("Additional build environment settings when using this kit.");
}
void refresh() override
{
const QList<Utils::EnvironmentItem> changes = currentEnvironment();
@@ -1257,6 +1243,8 @@ EnvironmentKitAspect::EnvironmentKitAspect()
{
setObjectName(QLatin1String("EnvironmentKitAspect"));
setId(EnvironmentKitAspect::id());
setDisplayName(tr("Environment"));
setDescription(tr("Additional build environment settings when using this kit."));
setPriority(29000);
}

View File

@@ -51,11 +51,8 @@ public:
SysRootKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
KitAspectWidget *createConfigWidget(Kit *k) const override;
ItemList toUserOutput(const Kit *k) const override;
void addToMacroExpander(Kit *kit, Utils::MacroExpander *expander) const override;
@@ -76,7 +73,6 @@ public:
ToolChainKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
void upgrade(Kit *k) override;
void fix(Kit *k) override;
@@ -122,11 +118,8 @@ public:
DeviceTypeKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
KitAspectWidget *createConfigWidget(Kit *k) const override;
ItemList toUserOutput(const Kit *k) const override;
static const Core::Id id();
@@ -151,7 +144,6 @@ public:
DeviceKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
void fix(Kit *k) override;
void setup(Kit *k) override;
@@ -189,7 +181,6 @@ public:
EnvironmentKitAspect();
QVariant defaultValue(const Kit *k) const override;
QList<Task> validate(const Kit *k) const override;
void fix(Kit *k) override;

View File

@@ -75,6 +75,8 @@ public:
Core::Id id() const { return m_id; }
int priority() const { return m_priority; }
QString displayName() const { return m_displayName; }
QString description() const { return m_description; }
virtual QVariant defaultValue(const Kit *) const = 0;
@@ -101,12 +103,18 @@ public:
virtual void addToMacroExpander(ProjectExplorer::Kit *kit, Utils::MacroExpander *expander) const;
virtual bool isApplicableToKit(const Kit *) const { return true; }
protected:
void setId(Core::Id id) { m_id = id; }
void setDisplayName(const QString &name) { m_displayName = name; }
void setDescription(const QString &desc) { m_description = desc; }
void setPriority(int priority) { m_priority = priority; }
void notifyAboutUpdate(Kit *k);
private:
QString m_displayName;
QString m_description;
Core::Id m_id;
int m_priority = 0; // The higher the closer to the top.
};
@@ -119,12 +127,12 @@ public:
KitAspectWidget(Kit *kit, const KitAspect *ki);
Core::Id kitInformationId() const;
QString displayName() const { return m_kitInformation->displayName(); }
QString toolTip() const { return m_kitInformation->description(); }
virtual QString displayName() const = 0;
virtual QString toolTip() const { return QString(); }
virtual void makeReadOnly() = 0;
virtual void refresh() = 0;
virtual bool visibleInKit() { return true; }
bool visibleInKit() { return m_kitInformation->isApplicableToKit(m_kit); }
virtual QWidget *mainWidget() const = 0;
virtual QWidget *buttonWidget() const { return nullptr; }

View File

@@ -54,7 +54,6 @@ public:
}
private:
QString displayName() const override { return QbsKitAspect::displayName(); }
void makeReadOnly() override { m_changeButton->setEnabled(false); }
void refresh() override { m_contentLabel->setText(QbsKitAspect::representation(kit())); }
QWidget *mainWidget() const override { return m_contentLabel; }
@@ -75,14 +74,10 @@ QbsKitAspect::QbsKitAspect()
{
setObjectName(QLatin1String("QbsKitAspect"));
setId(QbsKitAspect::id());
setDisplayName(tr("Additional Qbs Profile Settings"));
setPriority(22000);
}
QString QbsKitAspect::displayName()
{
return tr("Additional Qbs Profile Settings");
}
QString QbsKitAspect::representation(const Kit *kit)
{
const QVariantMap props = properties(kit);

View File

@@ -37,7 +37,6 @@ class QbsKitAspect final : public ProjectExplorer::KitAspect
public:
QbsKitAspect();
static QString displayName();
static QString representation(const ProjectExplorer::Kit *kit);
static QVariantMap properties(const ProjectExplorer::Kit *kit);
static void setProperties(ProjectExplorer::Kit *kit, const QVariantMap &properties);

View File

@@ -61,15 +61,8 @@ public:
private:
QWidget *mainWidget() const override { return m_lineEdit; }
QString displayName() const override { return tr("Qt mkspec"); }
void makeReadOnly() override { m_lineEdit->setEnabled(false); }
QString toolTip() const override
{
return tr("The mkspec to use when building the project with qmake.<br>"
"This setting is ignored when using other build systems.");
}
void refresh() override
{
if (!m_ignoreChange)
@@ -92,6 +85,9 @@ QmakeKitAspect::QmakeKitAspect()
{
setObjectName(QLatin1String("QmakeKitAspect"));
setId(QmakeKitAspect::id());
setDisplayName(tr("Qt mkspec"));
setDescription(tr("The mkspec to use when building the project with qmake.<br>"
"This setting is ignored when using other build systems."));
setPriority(24000);
}

View File

@@ -38,7 +38,6 @@ public:
QmakeKitAspect();
QVariant defaultValue(const ProjectExplorer::Kit *k) const override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const override;
void setup(ProjectExplorer::Kit *k) override;

View File

@@ -82,7 +82,6 @@ public:
}
private:
QString displayName() const override { return tr("Qt version"); }
void makeReadOnly() override { m_combo->setEnabled(false); }
QWidget *mainWidget() const override { return m_combo; }
QWidget *buttonWidget() const override { return m_manageButton; }
@@ -92,13 +91,6 @@ private:
m_combo->setCurrentIndex(findQtVersion(QtKitAspect::qtVersionId(m_kit)));
}
QString toolTip() const override
{
return tr("The Qt library to use for all projects using this kit.<br>"
"A Qt version is required for qmake-based projects "
"and optional when using other build systems.");
}
private:
static QString itemNameFor(const BaseQtVersion *v)
{
@@ -158,6 +150,10 @@ QtKitAspect::QtKitAspect()
{
setObjectName(QLatin1String("QtKitAspect"));
setId(QtKitAspect::id());
setDisplayName(tr("Qt version"));
setDescription(tr("The Qt library to use for all projects using this kit.<br>"
"A Qt version is required for qmake-based projects "
"and optional when using other build systems."));
setPriority(26000);
connect(KitManager::instance(), &KitManager::kitsLoaded,