summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2011-02-02 13:22:47 +0100
committercon <qtc-committer@nokia.com>2011-02-03 10:40:35 +0100
commitfce232a1652362d7909c98c3a0ee0881fbcef91f (patch)
treeb1f5269f2272ef60f33ad7262b6530243bc48498
parent13e51e9683326f06cdaa5f1250eec3cb43338aeb (diff)
downloadqt-creator-fce232a1652362d7909c98c3a0ee0881fbcef91f.tar.gz
Debugger: Change gdb binary key, do not write binaries unless changed.
Reviewed-by: con
-rw-r--r--src/plugins/debugger/debuggeractions.cpp40
-rw-r--r--src/plugins/debugger/debuggeractions.h2
2 files changed, 27 insertions, 15 deletions
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 25519bece2..9781efd86e 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -55,7 +55,7 @@
using namespace Utils;
static const char debugModeSettingsGroupC[] = "DebugMode";
-static const char gdbBinariesSettingsGroupC[] = "GdbBinaries";
+static const char gdbBinariesSettingsGroupC[] = "GdbBinaries21";
static const char debugModeGdbBinaryKeyC[] = "GdbBinary";
namespace Debugger {
@@ -85,16 +85,14 @@ void DebuggerSettings::insertItem(int code, SavedAction *item)
m_items[code] = item;
}
-void DebuggerSettings::readSettings(QSettings *settings)
+// Convert gdb binaries from flat settings list (see writeSettings)
+// into map ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4").
+DebuggerSettings::GdbBinaryToolChainMap DebuggerSettings::gdbBinaryToolChainMapFromSettings(const QSettings *settings)
{
- foreach (SavedAction *item, m_items)
- item->readSettings(settings);
- // Convert gdb binaries from flat settings list (see writeSettings)
- // into map ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4").
- m_gdbBinaryToolChainMap.clear();
+ GdbBinaryToolChainMap gdbBinaryToolChainMap;
const QChar separator = QLatin1Char(',');
const QString keyRoot = QLatin1String(gdbBinariesSettingsGroupC) + QLatin1Char('/') +
- QLatin1String(debugModeGdbBinaryKeyC);
+ QLatin1String(debugModeGdbBinaryKeyC);
for (int i = 1; ; i++) {
const QString value = settings->value(keyRoot + QString::number(i)).toString();
if (value.isEmpty())
@@ -108,9 +106,9 @@ void DebuggerSettings::readSettings(QSettings *settings)
foreach(const QString &t, tokens) {
// Paranoia: Check if the there is already a binary configured for the toolchain.
const int toolChain = t.toInt();
- const QString predefinedGdb = m_gdbBinaryToolChainMap.key(toolChain);
+ const QString predefinedGdb = gdbBinaryToolChainMap.key(toolChain);
if (predefinedGdb.isEmpty()) {
- m_gdbBinaryToolChainMap.insert(binary, toolChain);
+ gdbBinaryToolChainMap.insert(binary, toolChain);
} else {
const QString toolChainName = ProjectExplorer::ToolChain::toolChainName(static_cast<ProjectExplorer::ToolChain::ToolChainType>(toolChain));
const QString msg =
@@ -123,14 +121,24 @@ void DebuggerSettings::readSettings(QSettings *settings)
}
// Linux defaults
#ifdef Q_OS_UNIX
- if (m_gdbBinaryToolChainMap.isEmpty()) {
+ if (gdbBinaryToolChainMap.isEmpty()) {
const QString gdb = QLatin1String("gdb");
- m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::GCC);
- m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::LINUX_ICC);
- m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::OTHER);
- m_gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::UNKNOWN);
+ gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::GCC);
+ gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::LINUX_ICC);
+ gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::OTHER);
+ gdbBinaryToolChainMap.insert(gdb, ProjectExplorer::ToolChain::UNKNOWN);
}
#endif
+ return gdbBinaryToolChainMap;
+}
+
+void DebuggerSettings::readSettings(QSettings *settings)
+{
+ foreach (SavedAction *item, m_items)
+ item->readSettings(settings);
+ // Convert gdb binaries from flat settings list (see writeSettings)
+ // into map ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4").
+ m_gdbBinaryToolChainMap = gdbBinaryToolChainMapFromSettings(settings);
}
void DebuggerSettings::writeSettings(QSettings *settings) const
@@ -139,6 +147,8 @@ void DebuggerSettings::writeSettings(QSettings *settings) const
item->writeSettings(settings);
// Convert gdb binaries map into a flat settings list of
// ("binary1=gdb,1,2", "binary2=symbian_gdb,3,4"). It needs to be ASCII for installers
+ if (m_gdbBinaryToolChainMap == gdbBinaryToolChainMapFromSettings(settings))
+ return;
QString lastBinary;
QStringList settingsList;
const QChar separator = QLatin1Char(',');
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index 83d624ca81..a97d705a24 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -76,6 +76,8 @@ public slots:
void writeSettings(QSettings *settings) const;
private:
+ static GdbBinaryToolChainMap gdbBinaryToolChainMapFromSettings(const QSettings *s);
+
QHash<int, Utils::SavedAction *> m_items;
GdbBinaryToolChainMap m_gdbBinaryToolChainMap;
};