diff --git a/src/plugins/android/androidgdbserverkitinformation.cpp b/src/plugins/android/androidgdbserverkitinformation.cpp index 2f74ee2e0ad..c3cdb85a1dc 100644 --- a/src/plugins/android/androidgdbserverkitinformation.cpp +++ b/src/plugins/android/androidgdbserverkitinformation.cpp @@ -51,11 +51,9 @@ using namespace Utils; namespace Android { namespace Internal { -static const char ANDROID_GDBSERVER_INFORMATION[] = "Android.GdbServer.Information"; - AndroidGdbServerKitInformation::AndroidGdbServerKitInformation() { - setDataId(ANDROID_GDBSERVER_INFORMATION); + setId(AndroidGdbServerKitInformation::id()); setPriority(27999); // Just one less than Debugger! } @@ -77,7 +75,12 @@ KitInformation::ItemList AndroidGdbServerKitInformation::toUserOutput(const Kit KitConfigWidget *AndroidGdbServerKitInformation::createConfigWidget(Kit *kit) const { - return new AndroidGdbServerKitInformationWidget(kit, isSticky(kit)); + return new AndroidGdbServerKitInformationWidget(kit, this); +} + +Core::Id AndroidGdbServerKitInformation::id() +{ + return "Android.GdbServer.Information"; } bool AndroidGdbServerKitInformation::isAndroidKit(const Kit *kit) @@ -93,12 +96,12 @@ bool AndroidGdbServerKitInformation::isAndroidKit(const Kit *kit) FileName AndroidGdbServerKitInformation::gdbServer(const Kit *kit) { - return FileName::fromString(kit->value(ANDROID_GDBSERVER_INFORMATION).toString()); + return FileName::fromString(kit->value(AndroidGdbServerKitInformation::id()).toString()); } void AndroidGdbServerKitInformation::setGdbSever(Kit *kit, const FileName &gdbServerCommand) { - kit->setValue(ANDROID_GDBSERVER_INFORMATION, gdbServerCommand.toString()); + kit->setValue(AndroidGdbServerKitInformation::id(), gdbServerCommand.toString()); } FileName AndroidGdbServerKitInformation::autoDetect(Kit *kit) @@ -110,18 +113,13 @@ FileName AndroidGdbServerKitInformation::autoDetect(Kit *kit) return atc->suggestedGdbServer(); } -void AndroidGdbServerKitInformation::setSticky(Kit *k, bool b) -{ - k->setSticky(ANDROID_GDBSERVER_INFORMATION, b); -} - /////////////// // AndroidGdbServerKitInformationWidget /////////////// -AndroidGdbServerKitInformationWidget::AndroidGdbServerKitInformationWidget(Kit *kit, bool sticky) - : KitConfigWidget(kit, sticky), +AndroidGdbServerKitInformationWidget::AndroidGdbServerKitInformationWidget(Kit *kit, const KitInformation *ki) + : KitConfigWidget(kit, ki), m_label(new ElidingLabel), m_button(new QPushButton(tr("Manage..."))) { diff --git a/src/plugins/android/androidgdbserverkitinformation.h b/src/plugins/android/androidgdbserverkitinformation.h index 03b27589395..0720fb64776 100644 --- a/src/plugins/android/androidgdbserverkitinformation.h +++ b/src/plugins/android/androidgdbserverkitinformation.h @@ -45,7 +45,8 @@ class AndroidGdbServerKitInformationWidget : public ProjectExplorer::KitConfigWi { Q_OBJECT public: - AndroidGdbServerKitInformationWidget(ProjectExplorer::Kit *kit, bool sticky); + AndroidGdbServerKitInformationWidget(ProjectExplorer::Kit *kit, + const ProjectExplorer::KitInformation *ki); QString displayName() const; QString toolTip() const; @@ -78,11 +79,11 @@ public: ProjectExplorer::KitConfigWidget *createConfigWidget(ProjectExplorer::Kit *) const; + static Core::Id id(); static bool isAndroidKit(const ProjectExplorer::Kit *kit); static Utils::FileName gdbServer(const ProjectExplorer::Kit *kit); static void setGdbSever(ProjectExplorer::Kit *kit, const Utils::FileName &gdbServerCommand); static Utils::FileName autoDetect(ProjectExplorer::Kit *kit); - static void setSticky(ProjectExplorer::Kit *k, bool b); }; } // namespace Internal diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp index 2858f47846c..2e3fe958a0a 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.cpp +++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp @@ -77,9 +77,6 @@ static const char DEFAULT_DEBUGGER_PATH_KEY[] = "DefaultDebugger.Path."; static const char DEBUGGER_FILENAME[] = "/qtcreator/debuggers.xml"; static const char DEBUGGER_LEGACY_FILENAME[] = "/qtcreator/profiles.xml"; -static const char DEBUGGER_INFORMATION_LEGACY[] = "Debugger.Information"; -//static const char DEBUGGER_INFORMATION[] = "Debugger.InformationV3"; -static const char DEBUGGER_INFORMATION[] = "Debugger.Information"; static const char DEBUGGER_INFORMATION_COMMAND[] = "Binary"; static const char DEBUGGER_INFORMATION_DISPLAYNAME[] = "DisplayName"; static const char DEBUGGER_INFORMATION_ID[] = "Id"; @@ -224,7 +221,7 @@ void DebuggerItem::reinitializeFromFile() DebuggerKitInformation::DebuggerKitInformation() { setObjectName(QLatin1String("DebuggerKitInformation")); - setDataId(DEBUGGER_INFORMATION); + setId(DebuggerKitInformation::id()); setPriority(28000); } @@ -242,7 +239,7 @@ QVariant DebuggerKitInformation::defaultValue(Kit *k) const void DebuggerKitInformation::setup(Kit *k) { - k->setValue(DEBUGGER_INFORMATION, defaultValue(k)); + k->setValue(DebuggerKitInformation::id(), defaultValue(k)); } // Check the configuration errors and return a flag mask. Provide a quick check and @@ -258,7 +255,7 @@ enum DebuggerConfigurationErrors { static QVariant debuggerPathOrId(const Kit *k) { QTC_ASSERT(k, return QString()); - QVariant id = k->value(DEBUGGER_INFORMATION); + QVariant id = k->value(DebuggerKitInformation::id()); if (!id.isValid()) return id; // Invalid. @@ -344,7 +341,7 @@ QList DebuggerKitInformation::validateDebugger(const Kit *k) KitConfigWidget *DebuggerKitInformation::createConfigWidget(Kit *k) const { - return new Internal::DebuggerKitConfigWidget(k, isSticky(k)); + return new Internal::DebuggerKitConfigWidget(k, this); } KitInformation::ItemList DebuggerKitInformation::toUserOutput(const Kit *k) const @@ -382,12 +379,11 @@ void DebuggerKitInformation::setDebugger(Kit *k, theDebuggerItemManager()->setDebugger(k, type, command); } -void DebuggerKitInformation::setSticky(Kit *k, bool b) +Core::Id DebuggerKitInformation::id() { - k->setSticky(DEBUGGER_INFORMATION, b); + return "Debugger.Information"; } - namespace Internal { static FileName userSettingsFileName() @@ -590,7 +586,7 @@ void DebuggerItemManager::readLegacyDebuggers() QVariantMap data1 = v.toMap(); QString kitName = data1.value(QLatin1String("PE.Profile.Name")).toString(); QVariantMap data2 = data1.value(QLatin1String("PE.Profile.Data")).toMap(); - QVariant v3 = data2.value(QLatin1String(DEBUGGER_INFORMATION)); + QVariant v3 = data2.value(DebuggerKitInformation::id().toString()); QString fn; if (v3.type() == QVariant::String) fn = v3.toString(); @@ -838,8 +834,7 @@ void DebuggerItemManager::setDebugger(Kit *kit, Debugger::DebuggerEngineType typ const DebuggerItem *it = findByCommand(command); QTC_ASSERT(it, return); QTC_ASSERT(it->id.isValid(), return); - kit->setValue(DEBUGGER_INFORMATION, it->id); - + kit->setValue(DebuggerKitInformation::id(), it->id); } QModelIndex DebuggerItemManager::currentIndex() const @@ -1004,8 +999,8 @@ QVariant DebuggerItemManager::defaultDebugger(ToolChain *tc) // DebuggerKitConfigWidget // ----------------------------------------------------------------------- -DebuggerKitConfigWidget::DebuggerKitConfigWidget(Kit *workingCopy, bool sticky) - : KitConfigWidget(workingCopy, sticky) +DebuggerKitConfigWidget::DebuggerKitConfigWidget(Kit *workingCopy, const KitInformation *ki) + : KitConfigWidget(workingCopy, ki) { DebuggerItemManager *manager = theDebuggerItemManager(); QTC_CHECK(manager); @@ -1072,7 +1067,7 @@ void DebuggerKitConfigWidget::manageDebuggers() void DebuggerKitConfigWidget::currentDebuggerChanged(int) { - m_kit->setValue(DEBUGGER_INFORMATION, m_comboBox->itemData(m_comboBox->currentIndex())); + m_kit->setValue(DebuggerKitInformation::id(), m_comboBox->itemData(m_comboBox->currentIndex())); } void DebuggerKitConfigWidget::onDebuggerAdded(const QVariant &id, const QString &displayName) diff --git a/src/plugins/debugger/debuggerkitconfigwidget.h b/src/plugins/debugger/debuggerkitconfigwidget.h index 76d86e18896..9e4811bb875 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.h +++ b/src/plugins/debugger/debuggerkitconfigwidget.h @@ -127,7 +127,8 @@ class DebuggerKitConfigWidget : public ProjectExplorer::KitConfigWidget Q_OBJECT public: - DebuggerKitConfigWidget(ProjectExplorer::Kit *workingCopy, bool sticky); + DebuggerKitConfigWidget(ProjectExplorer::Kit *workingCopy, + const ProjectExplorer::KitInformation *ki); QString displayName() const; QString toolTip() const; diff --git a/src/plugins/debugger/debuggerkitinformation.h b/src/plugins/debugger/debuggerkitinformation.h index 8a57dc34264..880e2486c25 100644 --- a/src/plugins/debugger/debuggerkitinformation.h +++ b/src/plugins/debugger/debuggerkitinformation.h @@ -62,11 +62,10 @@ public: static void setDebugger(ProjectExplorer::Kit *k, DebuggerEngineType type, const Utils::FileName &command); + static Core::Id id(); static Utils::FileName debuggerCommand(const ProjectExplorer::Kit *k); static DebuggerEngineType engineType(const ProjectExplorer::Kit *k); static QString displayString(const ProjectExplorer::Kit *k); - - static void setSticky(ProjectExplorer::Kit *k, bool b); }; } // namespace Debugger diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index 432a41d9ea0..f02eae4f474 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -107,7 +107,7 @@ Kit::Kit(Core::Id id) : { KitGuard g(this); foreach (KitInformation *sti, KitManager::kitInformation()) - setValue(sti->dataId(), sti->defaultValue(this)); + setValue(sti->id(), sti->defaultValue(this)); setDisplayName(QCoreApplication::translate("ProjectExplorer::Kit", "Unnamed")); setIconPath(Utils::FileName::fromString(QLatin1String(":///DESKTOP///"))); @@ -471,8 +471,8 @@ void Kit::setSdkProvided(bool sdkProvided) void Kit::makeSticky() { foreach (KitInformation *ki, KitManager::kitInformation()) { - if (hasValue(ki->dataId())) - setSticky(ki->dataId(), true); + if (hasValue(ki->id())) + setSticky(ki->id(), true); } } diff --git a/src/plugins/projectexplorer/kitconfigwidget.cpp b/src/plugins/projectexplorer/kitconfigwidget.cpp new file mode 100644 index 00000000000..9f13132ae18 --- /dev/null +++ b/src/plugins/projectexplorer/kitconfigwidget.cpp @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "kitconfigwidget.h" + +#include "kit.h" +#include "kitinformation.h" + +namespace ProjectExplorer { + +KitConfigWidget::KitConfigWidget(Kit *kit, const KitInformation *ki) : m_kit(kit), + m_kitInformation(ki), m_isSticky(kit->isSticky(ki->id())) +{ } + +} // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h index a218684e4cd..d7d756b3566 100644 --- a/src/plugins/projectexplorer/kitconfigwidget.h +++ b/src/plugins/projectexplorer/kitconfigwidget.h @@ -37,6 +37,7 @@ namespace ProjectExplorer { class Kit; +class KitInformation; // -------------------------------------------------------------------------- // KitConfigWidget @@ -47,7 +48,7 @@ class PROJECTEXPLORER_EXPORT KitConfigWidget : public QObject Q_OBJECT public: - KitConfigWidget(Kit *kit, bool sticky) : m_kit(kit), m_isSticky(sticky) { } + KitConfigWidget(Kit *kit, const KitInformation *ki); virtual QString displayName() const = 0; virtual QString toolTip() const { return QString(); } @@ -58,13 +59,14 @@ public: virtual QWidget *mainWidget() const = 0; virtual QWidget *buttonWidget() const { return 0; } - bool isSticky() { return m_isSticky; } + bool isSticky() const { return m_isSticky; } signals: void dirty(); protected: - ProjectExplorer::Kit *m_kit; + Kit *m_kit; + const KitInformation *m_kitInformation; bool m_isSticky; }; diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index 002a211cb9b..23edc2d2aba 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -49,12 +49,10 @@ namespace ProjectExplorer { // SysRootInformation: // -------------------------------------------------------------------------- -static const char SYSROOT_INFORMATION[] = "PE.Profile.SysRoot"; - SysRootKitInformation::SysRootKitInformation() { setObjectName(QLatin1String("SysRootInformation")); - setDataId(SYSROOT_INFORMATION); + setId(SysRootKitInformation::id()); setPriority(31000); } @@ -77,7 +75,7 @@ QList SysRootKitInformation::validate(const Kit *k) const KitConfigWidget *SysRootKitInformation::createConfigWidget(Kit *k) const { - return new Internal::SysRootInformationConfigWidget(k, isSticky(k)); + return new Internal::SysRootInformationConfigWidget(k, this); } KitInformation::ItemList SysRootKitInformation::toUserOutput(const Kit *k) const @@ -85,10 +83,15 @@ KitInformation::ItemList SysRootKitInformation::toUserOutput(const Kit *k) const return ItemList() << qMakePair(tr("Sys Root"), sysRoot(k).toUserOutput()); } +Core::Id SysRootKitInformation::id() +{ + return "PE.Profile.SysRoot"; +} + bool SysRootKitInformation::hasSysRoot(const Kit *k) { if (k) - return !k->value(Core::Id(SYSROOT_INFORMATION)).toString().isEmpty(); + return !k->value(SysRootKitInformation::id()).toString().isEmpty(); return false; } @@ -96,29 +99,22 @@ Utils::FileName SysRootKitInformation::sysRoot(const Kit *k) { if (!k) return Utils::FileName(); - return Utils::FileName::fromString(k->value(Core::Id(SYSROOT_INFORMATION)).toString()); + return Utils::FileName::fromString(k->value(SysRootKitInformation::id()).toString()); } void SysRootKitInformation::setSysRoot(Kit *k, const Utils::FileName &v) { - k->setValue(Core::Id(SYSROOT_INFORMATION), v.toString()); -} - -void SysRootKitInformation::setSticky(Kit *k, bool b) -{ - k->setSticky(SYSROOT_INFORMATION, b); + k->setValue(SysRootKitInformation::id(), v.toString()); } // -------------------------------------------------------------------------- // ToolChainInformation: // -------------------------------------------------------------------------- -static const char TOOLCHAIN_INFORMATION[] = "PE.Profile.ToolChain"; - ToolChainKitInformation::ToolChainKitInformation() { setObjectName(QLatin1String("ToolChainInformation")); - setDataId(TOOLCHAIN_INFORMATION); + setId(ToolChainKitInformation::id()); setPriority(30000); connect(KitManager::instance(), SIGNAL(kitsLoaded()), @@ -170,7 +166,7 @@ void ToolChainKitInformation::fix(Kit *k) void ToolChainKitInformation::setup(Kit *k) { QTC_ASSERT(ToolChainManager::isLoaded(), return); - const QString id = k->value(TOOLCHAIN_INFORMATION).toString(); + const QString id = k->value(ToolChainKitInformation::id()).toString(); if (id.isEmpty()) return; @@ -187,7 +183,7 @@ void ToolChainKitInformation::setup(Kit *k) KitConfigWidget *ToolChainKitInformation::createConfigWidget(Kit *k) const { - return new Internal::ToolChainInformationConfigWidget(k, isSticky(k)); + return new Internal::ToolChainInformationConfigWidget(k, this); } QString ToolChainKitInformation::displayNamePostfix(const Kit *k) const @@ -217,17 +213,22 @@ IOutputParser *ToolChainKitInformation::createOutputParser(const Kit *k) const return 0; } +Core::Id ToolChainKitInformation::id() +{ + return "PE.Profile.ToolChain"; +} + ToolChain *ToolChainKitInformation::toolChain(const Kit *k) { QTC_ASSERT(ToolChainManager::isLoaded(), return 0); if (!k) return 0; - return ToolChainManager::findToolChain(k->value(TOOLCHAIN_INFORMATION).toString()); + return ToolChainManager::findToolChain(k->value(ToolChainKitInformation::id()).toString()); } void ToolChainKitInformation::setToolChain(Kit *k, ToolChain *tc) { - k->setValue(TOOLCHAIN_INFORMATION, tc ? tc->id() : QString()); + k->setValue(ToolChainKitInformation::id(), tc ? tc->id() : QString()); } QString ToolChainKitInformation::msgNoToolChainInTarget() @@ -235,11 +236,6 @@ QString ToolChainKitInformation::msgNoToolChainInTarget() return tr("No compiler set in kit."); } -void ToolChainKitInformation::setSticky(Kit *k, bool b) -{ - k->setSticky(TOOLCHAIN_INFORMATION, b); -} - void ToolChainKitInformation::kitsWereLoaded() { foreach (Kit *k, KitManager::kits()) @@ -268,12 +264,10 @@ void ToolChainKitInformation::toolChainRemoved(ToolChain *tc) // DeviceTypeInformation: // -------------------------------------------------------------------------- -static const char DEVICETYPE_INFORMATION[] = "PE.Profile.DeviceType"; - DeviceTypeKitInformation::DeviceTypeKitInformation() { setObjectName(QLatin1String("DeviceTypeInformation")); - setDataId(DEVICETYPE_INFORMATION); + setId(DeviceTypeKitInformation::id()); setPriority(33000); } @@ -291,7 +285,7 @@ QList DeviceTypeKitInformation::validate(const Kit *k) const KitConfigWidget *DeviceTypeKitInformation::createConfigWidget(Kit *k) const { - return new Internal::DeviceTypeInformationConfigWidget(k, isSticky(k)); + return new Internal::DeviceTypeInformationConfigWidget(k, this); } KitInformation::ItemList DeviceTypeKitInformation::toUserOutput(const Kit *k) const @@ -311,31 +305,29 @@ KitInformation::ItemList DeviceTypeKitInformation::toUserOutput(const Kit *k) co return ItemList() << qMakePair(tr("Device type"), typeDisplayName); } +const Core::Id DeviceTypeKitInformation::id() +{ + return "PE.Profile.DeviceType"; +} + const Core::Id DeviceTypeKitInformation::deviceTypeId(const Kit *k) { - return k ? Core::Id::fromSetting(k->value(DEVICETYPE_INFORMATION)) : Core::Id(); + return k ? Core::Id::fromSetting(k->value(DeviceTypeKitInformation::id())) : Core::Id(); } void DeviceTypeKitInformation::setDeviceTypeId(Kit *k, Core::Id type) { - k->setValue(DEVICETYPE_INFORMATION, type.toSetting()); -} - -void DeviceTypeKitInformation::setSticky(Kit *k, bool b) -{ - k->setSticky(DEVICETYPE_INFORMATION, b); + k->setValue(DeviceTypeKitInformation::id(), type.toSetting()); } // -------------------------------------------------------------------------- // DeviceInformation: // -------------------------------------------------------------------------- -static const char DEVICE_INFORMATION[] = "PE.Profile.Device"; - DeviceKitInformation::DeviceKitInformation() { setObjectName(QLatin1String("DeviceInformation")); - setDataId(DEVICE_INFORMATION); + setId(DeviceKitInformation::id()); setPriority(32000); connect(KitManager::instance(), SIGNAL(kitsLoaded()), @@ -384,7 +376,7 @@ void DeviceKitInformation::setup(Kit *k) KitConfigWidget *DeviceKitInformation::createConfigWidget(Kit *k) const { - return new Internal::DeviceInformationConfigWidget(k, isSticky(k)); + return new Internal::DeviceInformationConfigWidget(k, this); } QString DeviceKitInformation::displayNamePostfix(const Kit *k) const @@ -399,6 +391,11 @@ KitInformation::ItemList DeviceKitInformation::toUserOutput(const Kit *k) const return ItemList() << qMakePair(tr("Device"), dev.isNull() ? tr("Unconfigured") : dev->displayName()); } +Core::Id DeviceKitInformation::id() +{ + return "PE.Profile.Device"; +} + IDevice::ConstPtr DeviceKitInformation::device(const Kit *k) { QTC_ASSERT(DeviceManager::instance()->isLoaded(), return IDevice::ConstPtr()); @@ -407,7 +404,7 @@ IDevice::ConstPtr DeviceKitInformation::device(const Kit *k) Core::Id DeviceKitInformation::deviceId(const Kit *k) { - return k ? Core::Id::fromSetting(k->value(DEVICE_INFORMATION)) : Core::Id(); + return k ? Core::Id::fromSetting(k->value(DeviceKitInformation::id())) : Core::Id(); } void DeviceKitInformation::setDevice(Kit *k, IDevice::ConstPtr dev) @@ -417,12 +414,7 @@ void DeviceKitInformation::setDevice(Kit *k, IDevice::ConstPtr dev) void DeviceKitInformation::setDeviceId(Kit *k, const Core::Id id) { - k->setValue(DEVICE_INFORMATION, id.toSetting()); -} - -void DeviceKitInformation::setSticky(Kit *k, bool b) -{ - k->setSticky(DEVICE_INFORMATION, b); + k->setValue(DeviceKitInformation::id(), id.toSetting()); } void DeviceKitInformation::kitsWereLoaded() diff --git a/src/plugins/projectexplorer/kitinformation.h b/src/plugins/projectexplorer/kitinformation.h index 884dcc6bc25..8de48b27ae3 100644 --- a/src/plugins/projectexplorer/kitinformation.h +++ b/src/plugins/projectexplorer/kitinformation.h @@ -61,11 +61,10 @@ public: ItemList toUserOutput(const Kit *k) const; + static Core::Id id(); static bool hasSysRoot(const Kit *k); static Utils::FileName sysRoot(const Kit *k); static void setSysRoot(Kit *k, const Utils::FileName &v); - - static void setSticky(Kit *k, bool b); }; class PROJECTEXPLORER_EXPORT SysRootMatcher : public KitMatcher @@ -109,13 +108,12 @@ public: void addToEnvironment(const Kit *k, Utils::Environment &env) const; IOutputParser *createOutputParser(const Kit *k) const; + static Core::Id id(); static ToolChain *toolChain(const Kit *k); static void setToolChain(Kit *k, ToolChain *tc); static QString msgNoToolChainInTarget(); - static void setSticky(Kit *k, bool b); - private slots: void kitsWereLoaded(); void toolChainUpdated(ProjectExplorer::ToolChain *tc); @@ -156,9 +154,9 @@ public: ItemList toUserOutput(const Kit *k) const; + static const Core::Id id(); static const Core::Id deviceTypeId(const Kit *k); static void setDeviceTypeId(Kit *k, Core::Id type); - static void setSticky(Kit *k, bool b); }; class PROJECTEXPLORER_EXPORT DeviceTypeMatcher : public KitMatcher @@ -202,16 +200,15 @@ public: ItemList toUserOutput(const Kit *k) const; + static Core::Id id(); static IDevice::ConstPtr device(const Kit *k); static Core::Id deviceId(const Kit *k); static void setDevice(Kit *k, IDevice::ConstPtr dev); - static void setDeviceId(Kit *k, const Core::Id id); - - static void setSticky(Kit *k, bool b); + static void setDeviceId(Kit *k, const Core::Id dataId); private slots: void kitsWereLoaded(); - void deviceUpdated(const Core::Id &id); + void deviceUpdated(const Core::Id &dataId); void devicesChanged(); void kitUpdated(ProjectExplorer::Kit *k); }; diff --git a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp index 7eae10ae2c2..d3a43ba0967 100644 --- a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp @@ -55,8 +55,8 @@ namespace Internal { // SysRootInformationConfigWidget: // -------------------------------------------------------------------------- -SysRootInformationConfigWidget::SysRootInformationConfigWidget(Kit *k, bool sticky) : - KitConfigWidget(k, sticky), +SysRootInformationConfigWidget::SysRootInformationConfigWidget(Kit *k, const KitInformation *ki) : + KitConfigWidget(k, ki), m_ignoreChange(false) { m_chooser = new Utils::PathChooser; @@ -113,8 +113,8 @@ void SysRootInformationConfigWidget::pathWasChanged() // ToolChainInformationConfigWidget: // -------------------------------------------------------------------------- -ToolChainInformationConfigWidget::ToolChainInformationConfigWidget(Kit *k, bool sticky) : - KitConfigWidget(k, sticky), m_isReadOnly(false) +ToolChainInformationConfigWidget::ToolChainInformationConfigWidget(Kit *k, const KitInformation *ki) : + KitConfigWidget(k, ki) { m_comboBox = new QComboBox; m_comboBox->setEnabled(false); @@ -224,7 +224,7 @@ void ToolChainInformationConfigWidget::updateComboBox() m_comboBox->addItem(tr(""), QString()); m_comboBox->setEnabled(false); } else { - m_comboBox->setEnabled(!m_isReadOnly); + m_comboBox->setEnabled(true); } } @@ -242,8 +242,8 @@ int ToolChainInformationConfigWidget::indexOf(const ToolChain *tc) // DeviceTypeInformationConfigWidget: // -------------------------------------------------------------------------- -DeviceTypeInformationConfigWidget::DeviceTypeInformationConfigWidget(Kit *workingCopy, bool sticky) : - KitConfigWidget(workingCopy, sticky), m_isReadOnly(false), m_comboBox(new QComboBox) +DeviceTypeInformationConfigWidget::DeviceTypeInformationConfigWidget(Kit *workingCopy, const KitInformation *ki) : + KitConfigWidget(workingCopy, ki), m_comboBox(new QComboBox) { QList factories = ExtensionSystem::PluginManager::getObjects(); @@ -306,8 +306,8 @@ void DeviceTypeInformationConfigWidget::currentTypeChanged(int idx) // DeviceInformationConfigWidget: // -------------------------------------------------------------------------- -DeviceInformationConfigWidget::DeviceInformationConfigWidget(Kit *workingCopy, bool sticky) : - KitConfigWidget(workingCopy, sticky), +DeviceInformationConfigWidget::DeviceInformationConfigWidget(Kit *workingCopy, const KitInformation *ki) : + KitConfigWidget(workingCopy, ki), m_isReadOnly(false), m_ignoreChange(false), m_comboBox(new QComboBox), diff --git a/src/plugins/projectexplorer/kitinformationconfigwidget.h b/src/plugins/projectexplorer/kitinformationconfigwidget.h index b3d81d03a91..36d710a707d 100644 --- a/src/plugins/projectexplorer/kitinformationconfigwidget.h +++ b/src/plugins/projectexplorer/kitinformationconfigwidget.h @@ -57,7 +57,7 @@ class SysRootInformationConfigWidget : public KitConfigWidget Q_OBJECT public: - explicit SysRootInformationConfigWidget(Kit *k, bool sticky); + SysRootInformationConfigWidget(Kit *k, const KitInformation *ki); ~SysRootInformationConfigWidget(); QString displayName() const; @@ -84,7 +84,7 @@ class ToolChainInformationConfigWidget : public KitConfigWidget Q_OBJECT public: - explicit ToolChainInformationConfigWidget(Kit *k, bool sticky); + ToolChainInformationConfigWidget(Kit *k, const KitInformation *ki); ~ToolChainInformationConfigWidget(); QString displayName() const; @@ -105,7 +105,6 @@ private: void updateComboBox(); int indexOf(const ToolChain *tc); - bool m_isReadOnly; QComboBox *m_comboBox; QPushButton *m_manageButton; }; @@ -119,7 +118,7 @@ class DeviceTypeInformationConfigWidget : public KitConfigWidget Q_OBJECT public: - explicit DeviceTypeInformationConfigWidget(Kit *workingCopy, bool sticky); + DeviceTypeInformationConfigWidget(Kit *workingCopy, const KitInformation *ki); ~DeviceTypeInformationConfigWidget(); QWidget *mainWidget() const; @@ -132,7 +131,6 @@ private slots: void currentTypeChanged(int idx); private: - bool m_isReadOnly; QComboBox *m_comboBox; }; @@ -145,7 +143,7 @@ class DeviceInformationConfigWidget : public KitConfigWidget Q_OBJECT public: - explicit DeviceInformationConfigWidget(Kit *workingCopy, bool sticky); + DeviceInformationConfigWidget(Kit *workingCopy, const KitInformation *ki); ~DeviceInformationConfigWidget(); QWidget *mainWidget() const; diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index 9bfb61ac5cf..88f5ed77af7 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -217,9 +217,9 @@ void KitManager::restoreKits() // Overwrite settings that the SDK sets to those values: foreach (const KitInformation *ki, kitInformation()) { // Copy sticky settings over: - if (current->isSticky(ki->dataId())) { - toStore->setValue(ki->dataId(), current->value(ki->dataId())); - toStore->setSticky(ki->dataId(), true); + if (current->isSticky(ki->id())) { + toStore->setValue(ki->id(), current->value(ki->id())); + toStore->setSticky(ki->id(), true); } } @@ -316,8 +316,8 @@ void KitManager::registerKitInformation(KitInformation *ki) return; foreach (Kit *k, kits()) { - if (!k->hasValue(ki->dataId())) - k->setValue(ki->dataId(), ki->defaultValue(k)); + if (!k->hasValue(ki->id())) + k->setValue(ki->id(), ki->defaultValue(k)); else ki->fix(k); } @@ -546,8 +546,8 @@ void KitManager::addKit(Kit *k) { KitGuard g(k); foreach (KitInformation *ki, d->m_informationList) { - if (!k->hasValue(ki->dataId())) - k->setValue(ki->dataId(), ki->defaultValue(k)); + if (!k->hasValue(ki->id())) + k->setValue(ki->id(), ki->defaultValue(k)); else ki->fix(k); } @@ -579,11 +579,6 @@ QString KitInformation::displayNamePostfix(const Kit *k) const return QString(); } -bool KitInformation::isSticky(const Kit *k) const -{ - return k->isSticky(dataId()); -} - void KitInformation::notifyAboutUpdate(Kit *k) { KitManager::notifyAboutUpdate(k); diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h index a78ab209165..449921dd98a 100644 --- a/src/plugins/projectexplorer/kitmanager.h +++ b/src/plugins/projectexplorer/kitmanager.h @@ -69,7 +69,7 @@ public: typedef QPair Item; typedef QList ItemList; - Core::Id dataId() const { return m_dataId; } + Core::Id id() const { return m_id; } int priority() const { return m_priority; } virtual QVariant defaultValue(Kit *) const = 0; @@ -90,15 +90,14 @@ public: virtual QString displayNamePostfix(const Kit *k) const; - bool isSticky(const Kit *k) const; protected: - void setDataId(Core::Id id) { m_dataId = id; } + void setId(Core::Id id) { m_id = id; } void setPriority(int priority) { m_priority = priority; } void notifyAboutUpdate(Kit *k); private: - Core::Id m_dataId; + Core::Id m_id; int m_priority; // The higher the closer to the top. }; diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index 6515e3ef99b..324d8c2d2ec 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -153,6 +153,7 @@ SOURCES += projectexplorer.cpp \ removetaskhandler.cpp \ kit.cpp \ kitchooser.cpp \ + kitconfigwidget.cpp \ kitinformation.cpp \ kitinformationconfigwidget.cpp \ kitmanager.cpp \ diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs index 2a177eb6344..449e3975c0c 100644 --- a/src/plugins/projectexplorer/projectexplorer.qbs +++ b/src/plugins/projectexplorer/projectexplorer.qbs @@ -75,7 +75,7 @@ QtcPlugin { "itaskhandler.h", "kit.cpp", "kit.h", "kitchooser.cpp", "kitchooser.h", - "kitconfigwidget.h", + "kitconfigwidget.cpp", "kitconfigwidget.h", "kitinformation.cpp", "kitinformation.h", "kitinformationconfigwidget.cpp", "kitinformationconfigwidget.h", "kitmanager.cpp", "kitmanager.h", diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryconfiguration.cpp index 3a63b3c1062..a19704a90cb 100644 --- a/src/plugins/qnx/blackberryconfiguration.cpp +++ b/src/plugins/qnx/blackberryconfiguration.cpp @@ -285,12 +285,12 @@ Kit *BlackBerryConfiguration::createKit(QnxArchitecture arch, BaseQtVersion *qtV void BlackBerryConfiguration::setSticky(Kit *kit) { - QtKitInformation::setSticky(kit, true); - ToolChainKitInformation::setSticky(kit, true); - DeviceTypeKitInformation::setSticky(kit, true); - SysRootKitInformation::setSticky(kit, true); - Debugger::DebuggerKitInformation::setSticky(kit, true); - Qt4ProjectManager::QmakeKitInformation::setSticky(kit, true); + kit->setSticky(QtKitInformation::id(), true); + kit->setSticky(ToolChainKitInformation::id(), true); + kit->setSticky(DeviceTypeKitInformation::id(), true); + kit->setSticky(SysRootKitInformation::id(), true); + kit->setSticky(Debugger::DebuggerKitInformation::id(), true); + kit->setSticky(Qt4ProjectManager::QmakeKitInformation::id(), true); } bool BlackBerryConfiguration::activate() diff --git a/src/plugins/qt4projectmanager/qmakekitconfigwidget.cpp b/src/plugins/qt4projectmanager/qmakekitconfigwidget.cpp index f3803f5d0c8..4b91427ea5d 100644 --- a/src/plugins/qt4projectmanager/qmakekitconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qmakekitconfigwidget.cpp @@ -38,8 +38,8 @@ namespace Qt4ProjectManager { namespace Internal { -QmakeKitConfigWidget::QmakeKitConfigWidget(ProjectExplorer::Kit *k, bool sticky) : - ProjectExplorer::KitConfigWidget(k, sticky), +QmakeKitConfigWidget::QmakeKitConfigWidget(ProjectExplorer::Kit *k, const ProjectExplorer::KitInformation *ki) : + ProjectExplorer::KitConfigWidget(k, ki), m_lineEdit(new QLineEdit), m_ignoreChange(false) { diff --git a/src/plugins/qt4projectmanager/qmakekitconfigwidget.h b/src/plugins/qt4projectmanager/qmakekitconfigwidget.h index 99c09403c12..94052f9cdbb 100644 --- a/src/plugins/qt4projectmanager/qmakekitconfigwidget.h +++ b/src/plugins/qt4projectmanager/qmakekitconfigwidget.h @@ -44,7 +44,7 @@ class QmakeKitConfigWidget : public ProjectExplorer::KitConfigWidget Q_OBJECT public: - explicit QmakeKitConfigWidget(ProjectExplorer::Kit *k, bool sticky); + QmakeKitConfigWidget(ProjectExplorer::Kit *k, const ProjectExplorer::KitInformation *ki); QWidget *mainWidget() const; QString displayName() const; diff --git a/src/plugins/qt4projectmanager/qmakekitinformation.cpp b/src/plugins/qt4projectmanager/qmakekitinformation.cpp index 7e1b8d81706..fcd668c8e52 100644 --- a/src/plugins/qt4projectmanager/qmakekitinformation.cpp +++ b/src/plugins/qt4projectmanager/qmakekitinformation.cpp @@ -42,12 +42,10 @@ using namespace Utils; namespace Qt4ProjectManager { -const char MKSPEC_INFORMATION[] = "QtPM4.mkSpecInformation"; - QmakeKitInformation::QmakeKitInformation() { setObjectName(QLatin1String("QmakeKitInformation")); - setDataId(MKSPEC_INFORMATION); + setId(QmakeKitInformation::id()); setPriority(24000); } @@ -99,7 +97,7 @@ void QmakeKitInformation::setup(Kit *k) KitConfigWidget *QmakeKitInformation::createConfigWidget(Kit *k) const { - return new Internal::QmakeKitConfigWidget(k, isSticky(k)); + return new Internal::QmakeKitConfigWidget(k, this); } KitInformation::ItemList QmakeKitInformation::toUserOutput(const Kit *k) const @@ -107,11 +105,16 @@ KitInformation::ItemList QmakeKitInformation::toUserOutput(const Kit *k) const return ItemList() << qMakePair(tr("mkspec"), mkspec(k).toUserOutput()); } +Core::Id QmakeKitInformation::id() +{ + return "QtPM4.mkSpecInformation"; +} + FileName QmakeKitInformation::mkspec(const Kit *k) { if (!k) return FileName(); - return FileName::fromString(k->value(MKSPEC_INFORMATION).toString()); + return FileName::fromString(k->value(QmakeKitInformation::id()).toString()); } FileName QmakeKitInformation::effectiveMkspec(const Kit *k) @@ -126,7 +129,7 @@ FileName QmakeKitInformation::effectiveMkspec(const Kit *k) void QmakeKitInformation::setMkspec(Kit *k, const FileName &fn) { - k->setValue(MKSPEC_INFORMATION, fn == defaultMkspec(k) ? QString() : fn.toString()); + k->setValue(QmakeKitInformation::id(), fn == defaultMkspec(k) ? QString() : fn.toString()); } FileName QmakeKitInformation::defaultMkspec(const Kit *k) @@ -138,9 +141,4 @@ FileName QmakeKitInformation::defaultMkspec(const Kit *k) return version->mkspecFor(ToolChainKitInformation::toolChain(k)); } -void QmakeKitInformation::setSticky(Kit *k, bool b) -{ - k->setSticky(MKSPEC_INFORMATION, b); -} - } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qmakekitinformation.h b/src/plugins/qt4projectmanager/qmakekitinformation.h index 78bc4dea3a6..c2e86e19139 100644 --- a/src/plugins/qt4projectmanager/qmakekitinformation.h +++ b/src/plugins/qt4projectmanager/qmakekitinformation.h @@ -52,12 +52,11 @@ public: ItemList toUserOutput(const ProjectExplorer::Kit *k) const; + static Core::Id id(); static void setMkspec(ProjectExplorer::Kit *k, const Utils::FileName &fn); static Utils::FileName mkspec(const ProjectExplorer::Kit *k); static Utils::FileName effectiveMkspec(const ProjectExplorer::Kit *k); static Utils::FileName defaultMkspec(const ProjectExplorer::Kit *k); - - static void setSticky(ProjectExplorer::Kit *k, bool b); }; } // namespace Qt4ProjectManager diff --git a/src/plugins/qtsupport/qtkitconfigwidget.cpp b/src/plugins/qtsupport/qtkitconfigwidget.cpp index 80c9a62f2c3..1a02f406a80 100644 --- a/src/plugins/qtsupport/qtkitconfigwidget.cpp +++ b/src/plugins/qtsupport/qtkitconfigwidget.cpp @@ -44,8 +44,8 @@ namespace QtSupport { namespace Internal { -QtKitConfigWidget::QtKitConfigWidget(ProjectExplorer::Kit *k, bool sticky) : - KitConfigWidget(k, sticky) +QtKitConfigWidget::QtKitConfigWidget(ProjectExplorer::Kit *k, const ProjectExplorer::KitInformation *ki) : + KitConfigWidget(k, ki) { m_combo = new QComboBox; m_combo->addItem(tr("None"), -1); diff --git a/src/plugins/qtsupport/qtkitconfigwidget.h b/src/plugins/qtsupport/qtkitconfigwidget.h index 9ecae415a3b..49a7ca0b7ba 100644 --- a/src/plugins/qtsupport/qtkitconfigwidget.h +++ b/src/plugins/qtsupport/qtkitconfigwidget.h @@ -45,7 +45,7 @@ class QtKitConfigWidget : public ProjectExplorer::KitConfigWidget Q_OBJECT public: - explicit QtKitConfigWidget(ProjectExplorer::Kit *k, bool sticky); + QtKitConfigWidget(ProjectExplorer::Kit *k, const ProjectExplorer::KitInformation *ki); QString displayName() const; diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp index 9b0fb6ff1f1..b0e087cb75d 100644 --- a/src/plugins/qtsupport/qtkitinformation.cpp +++ b/src/plugins/qtsupport/qtkitinformation.cpp @@ -38,14 +38,11 @@ #include namespace QtSupport { -namespace Internal { -const char QT_INFORMATION[] = "QtSupport.QtInformation"; -} // namespace Internal QtKitInformation::QtKitInformation() { setObjectName(QLatin1String("QtKitInformation")); - setDataId(Internal::QT_INFORMATION); + setId(QtKitInformation::id()); setPriority(26000); connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitsLoaded()), @@ -98,7 +95,7 @@ void QtKitInformation::fix(ProjectExplorer::Kit *k) ProjectExplorer::KitConfigWidget *QtKitInformation::createConfigWidget(ProjectExplorer::Kit *k) const { - return new Internal::QtKitConfigWidget(k, isSticky(k)); + return new Internal::QtKitConfigWidget(k, this); } QString QtKitInformation::displayNamePostfix(const ProjectExplorer::Kit *k) const @@ -128,13 +125,18 @@ ProjectExplorer::IOutputParser *QtKitInformation::createOutputParser(const Proje return 0; } +Core::Id QtKitInformation::id() +{ + return "QtSupport.QtInformation"; +} + int QtKitInformation::qtVersionId(const ProjectExplorer::Kit *k) { if (!k) return -1; int id = -1; - QVariant data = k->value(Core::Id(Internal::QT_INFORMATION), -1); + QVariant data = k->value(QtKitInformation::id(), -1); if (data.type() == QVariant::Int) { bool ok; id = data.toInt(&ok); @@ -154,7 +156,7 @@ int QtKitInformation::qtVersionId(const ProjectExplorer::Kit *k) void QtKitInformation::setQtVersionId(ProjectExplorer::Kit *k, const int id) { - k->setValue(Core::Id(Internal::QT_INFORMATION), id); + k->setValue(QtKitInformation::id(), id); } BaseQtVersion *QtKitInformation::qtVersion(const ProjectExplorer::Kit *k) @@ -186,11 +188,6 @@ QStringList QtKitInformation::dumperLibraryLocations(const ProjectExplorer::Kit return QStringList(); } -void QtKitInformation::setSticky(ProjectExplorer::Kit *k, bool b) -{ - k->setSticky(Internal::QT_INFORMATION, b); -} - void QtKitInformation::qtVersionsChanged(const QList &addedIds, const QList &removedIds, const QList &changedIds) diff --git a/src/plugins/qtsupport/qtkitinformation.h b/src/plugins/qtsupport/qtkitinformation.h index f322bc81d5a..a8f1503b600 100644 --- a/src/plugins/qtsupport/qtkitinformation.h +++ b/src/plugins/qtsupport/qtkitinformation.h @@ -60,6 +60,7 @@ public: void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const; ProjectExplorer::IOutputParser *createOutputParser(const ProjectExplorer::Kit *k) const; + static Core::Id id(); static int qtVersionId(const ProjectExplorer::Kit *k); static void setQtVersionId(ProjectExplorer::Kit *k, const int id); static BaseQtVersion *qtVersion(const ProjectExplorer::Kit *k); @@ -70,8 +71,6 @@ public: static QString dumperLibrary(const ProjectExplorer::Kit *k); static QStringList dumperLibraryLocations(const ProjectExplorer::Kit *k); - static void setSticky(ProjectExplorer::Kit *k, bool b); - private slots: void qtVersionsChanged(const QList &addedIds, const QList &removedIds,