diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp index 9d9f0b23a9a..8fbf67390a4 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.cpp +++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp @@ -387,8 +387,7 @@ static void readDebuggers(const FileName &fileName, bool isSystem) if (!data.contains(key)) continue; const QVariantMap dbMap = data.value(key).toMap(); - DebuggerItem item; - item.fromMap(dbMap); + DebuggerItem item(dbMap); if (isSystem) { item.setAutoDetected(true); // SDK debuggers are always considered to be up-to-date, so no need to recheck them. @@ -660,14 +659,12 @@ void DebuggerItemManager::deregisterDebugger(const DebuggerItem &item) removeDebugger(item.id()); } -QVariant DebuggerItemManager::addDebugger(const DebuggerItem& item0) +QVariant DebuggerItemManager::addDebugger(const DebuggerItem &item) { - DebuggerItem item = item0; QTC_ASSERT(!item.command().isEmpty(), return QVariant()); QTC_ASSERT(!item.displayName().isEmpty(), return QVariant()); QTC_ASSERT(item.engineType() != NoEngineType, return QVariant()); - if (item.id().isNull()) - item.setId(QUuid::createUuid().toString()); + QTC_ASSERT(item.id().isValid(), return QVariant()); m_debuggers.append(item); m_model->addDebugger(item); return item.id(); @@ -821,11 +818,9 @@ void DebuggerItemModel::markCurrentDirty() sitem->setFont(font); } -void DebuggerItemModel::addDebugger(const DebuggerItem &item0) +void DebuggerItemModel::addDebugger(const DebuggerItem &item) { - DebuggerItem item = item0; - if (item.id().isNull()) - item.setId(QUuid::createUuid().toString()); + QTC_ASSERT(item.id().isValid(), return); QList row = describeItem(item); (item.isAutoDetected() ? m_autoRoot : m_manualRoot)->appendRow(row); emit debuggerAdded(item.id(), item.displayName()); diff --git a/src/plugins/debugger/debuggerkitinformation.cpp b/src/plugins/debugger/debuggerkitinformation.cpp index 30ca4f2c230..5436206bcba 100644 --- a/src/plugins/debugger/debuggerkitinformation.cpp +++ b/src/plugins/debugger/debuggerkitinformation.cpp @@ -34,6 +34,7 @@ #include #include +#include using namespace Debugger::Internal; using namespace ProjectExplorer; @@ -54,10 +55,27 @@ namespace Debugger { DebuggerItem::DebuggerItem() { + m_id = QUuid::createUuid().toString(); m_engineType = NoEngineType; m_isAutoDetected = false; } +DebuggerItem::DebuggerItem(const QVariantMap &data) +{ + m_command = FileName::fromUserInput(data.value(QLatin1String(DEBUGGER_INFORMATION_COMMAND)).toString()); + m_id = data.value(QLatin1String(DEBUGGER_INFORMATION_ID)).toString(); + m_displayName = data.value(QLatin1String(DEBUGGER_INFORMATION_DISPLAYNAME)).toString(); + m_isAutoDetected = data.value(QLatin1String(DEBUGGER_INFORMATION_AUTODETECTED), false).toBool(); + m_engineType = DebuggerEngineType(data.value(QLatin1String(DEBUGGER_INFORMATION_ENGINETYPE), + static_cast(NoEngineType)).toInt()); + + foreach (const QString &a, data.value(QLatin1String(DEBUGGER_INFORMATION_ABIS)).toStringList()) { + Abi abi(a); + if (abi.isValid()) + m_abis.append(abi); + } +} + void DebuggerItem::reinitializeFromFile() { QProcess proc; @@ -133,27 +151,6 @@ QVariantMap DebuggerItem::toMap() const return data; } -void DebuggerItem::fromMap(const QVariantMap &data) -{ - m_command = FileName::fromUserInput(data.value(QLatin1String(DEBUGGER_INFORMATION_COMMAND)).toString()); - m_id = data.value(QLatin1String(DEBUGGER_INFORMATION_ID)).toString(); - m_displayName = data.value(QLatin1String(DEBUGGER_INFORMATION_DISPLAYNAME)).toString(); - m_isAutoDetected = data.value(QLatin1String(DEBUGGER_INFORMATION_AUTODETECTED)).toBool(); - m_engineType = DebuggerEngineType(data.value(QLatin1String(DEBUGGER_INFORMATION_ENGINETYPE)).toInt()); - - m_abis.clear(); - foreach (const QString &a, data.value(QLatin1String(DEBUGGER_INFORMATION_ABIS)).toStringList()) { - Abi abi(a); - if (abi.isValid()) - m_abis.append(abi); - } -} - -void DebuggerItem::setId(const QVariant &id) -{ - m_id = id; -} - void DebuggerItem::setDisplayName(const QString &displayName) { m_displayName = displayName; diff --git a/src/plugins/debugger/debuggerkitinformation.h b/src/plugins/debugger/debuggerkitinformation.h index dfdf6350a4e..4a185d79e3d 100644 --- a/src/plugins/debugger/debuggerkitinformation.h +++ b/src/plugins/debugger/debuggerkitinformation.h @@ -50,13 +50,13 @@ class DEBUGGER_EXPORT DebuggerItem { public: DebuggerItem(); + DebuggerItem(const QVariantMap &data); bool canClone() const { return true; } bool isValid() const; QString engineTypeName() const; QVariantMap toMap() const; - void fromMap(const QVariantMap &data); void reinitializeFromFile(); QVariant id() const { return m_id; } @@ -83,10 +83,6 @@ public: QStringList abiNames() const; private: - friend class Debugger::Internal::DebuggerItemModel; - friend class DebuggerItemManager; - void setId(const QVariant &id); - QVariant m_id; QString m_displayName; DebuggerEngineType m_engineType;