summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodestylesettings.cpp
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2011-02-03 15:48:14 +0100
committerChristian Kamm <christian.d.kamm@nokia.com>2011-05-24 12:45:07 +0200
commit779fafcbfe6f92dd1288664fae512f69bc12418b (patch)
tree38a3b75cc3a18f386ab72102e97f06ffa24d4d29 /src/plugins/cpptools/cppcodestylesettings.cpp
parentf69eb52944a7fc8306cbb72b7325a610045dea7a (diff)
downloadqt-creator-779fafcbfe6f92dd1288664fae512f69bc12418b.tar.gz
Make C++ code style configurable.
Change-Id: Iaf08edb2361146e6b5e1cbafdb716a23c938875b Done-with: Jarek Kobus Task-number: QTCREATORBUG-2670 Task-number: QTCREATORBUG-4310 Task-number: QTCREATORBUG-2763 Task-number: QTCREATORBUG-3623 Task-number: QTCREATORBUG-567 Reviewed-on: http://codereview.qt.nokia.com/74 Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com> Reviewed-by: Jarek Kobus <jaroslaw.kobus@nokia.com> Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/plugins/cpptools/cppcodestylesettings.cpp')
-rw-r--r--src/plugins/cpptools/cppcodestylesettings.cpp133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcodestylesettings.cpp b/src/plugins/cpptools/cppcodestylesettings.cpp
new file mode 100644
index 0000000000..13a06e2633
--- /dev/null
+++ b/src/plugins/cpptools/cppcodestylesettings.cpp
@@ -0,0 +1,133 @@
+#include "cppcodestylesettings.h"
+
+#include <utils/settingsutils.h>
+
+static const char *groupPostfix = "IndentSettings";
+static const char *indentBlockBracesKey = "IndentBlockBraces";
+static const char *indentBlockBodyKey = "IndentBlockBody";
+static const char *indentClassBracesKey = "IndentClassBraces";
+static const char *indentEnumBracesKey = "IndentEnumBraces";
+static const char *indentNamespaceBracesKey = "IndentNamespaceBraces";
+static const char *indentNamespaceBodyKey = "IndentNamespaceBody";
+static const char *indentAccessSpecifiersKey = "IndentAccessSpecifiers";
+static const char *indentDeclarationsRelativeToAccessSpecifiersKey = "IndentDeclarationsRelativeToAccessSpecifiers";
+static const char *indentFunctionBodyKey = "IndentFunctionBody";
+static const char *indentFunctionBracesKey = "IndentFunctionBraces";
+static const char *indentSwitchLabelsKey = "IndentSwitchLabels";
+static const char *indentStatementsRelativeToSwitchLabelsKey = "IndentStatementsRelativeToSwitchLabels";
+static const char *indentBlocksRelativeToSwitchLabelsKey = "IndentBlocksRelativeToSwitchLabels";
+static const char *indentControlFlowRelativeToSwitchLabelsKey = "IndentControlFlowRelativeToSwitchLabels";
+static const char *extraPaddingForConditionsIfConfusingAlignKey = "ExtraPaddingForConditionsIfConfusingAlign";
+static const char *alignAssignmentsKey = "AlignAssignments";
+
+using namespace CppTools;
+
+// ------------------ CppCodeStyleSettingsWidget
+
+CppCodeStyleSettings::CppCodeStyleSettings() :
+ indentBlockBraces(false)
+ , indentBlockBody(true)
+ , indentClassBraces(false)
+ , indentEnumBraces(false)
+ , indentNamespaceBraces(false)
+ , indentNamespaceBody(false)
+ , indentAccessSpecifiers(false)
+ , indentDeclarationsRelativeToAccessSpecifiers(true)
+ , indentFunctionBody(true)
+ , indentFunctionBraces(false)
+ , indentSwitchLabels(false)
+ , indentStatementsRelativeToSwitchLabels(true)
+ , indentBlocksRelativeToSwitchLabels(false)
+ , indentControlFlowRelativeToSwitchLabels(true)
+ , extraPaddingForConditionsIfConfusingAlign(true)
+ , alignAssignments(false)
+{
+}
+
+void CppCodeStyleSettings::toSettings(const QString &category, QSettings *s) const
+{
+ Utils::toSettings(QLatin1String(groupPostfix), category, s, this);
+}
+
+void CppCodeStyleSettings::fromSettings(const QString &category, const QSettings *s)
+{
+ *this = CppCodeStyleSettings(); // Assign defaults
+ Utils::fromSettings(QLatin1String(groupPostfix), category, s, this);
+}
+
+void CppCodeStyleSettings::toMap(const QString &prefix, QVariantMap *map) const
+{
+ map->insert(prefix + QLatin1String(indentBlockBracesKey), indentBlockBraces);
+ map->insert(prefix + QLatin1String(indentBlockBodyKey), indentBlockBody);
+ map->insert(prefix + QLatin1String(indentClassBracesKey), indentClassBraces);
+ map->insert(prefix + QLatin1String(indentEnumBracesKey), indentEnumBraces);
+ map->insert(prefix + QLatin1String(indentNamespaceBracesKey), indentNamespaceBraces);
+ map->insert(prefix + QLatin1String(indentNamespaceBodyKey), indentNamespaceBody);
+ map->insert(prefix + QLatin1String(indentAccessSpecifiersKey), indentAccessSpecifiers);
+ map->insert(prefix + QLatin1String(indentDeclarationsRelativeToAccessSpecifiersKey), indentDeclarationsRelativeToAccessSpecifiers);
+ map->insert(prefix + QLatin1String(indentFunctionBodyKey), indentFunctionBody);
+ map->insert(prefix + QLatin1String(indentFunctionBracesKey), indentFunctionBraces);
+ map->insert(prefix + QLatin1String(indentSwitchLabelsKey), indentSwitchLabels);
+ map->insert(prefix + QLatin1String(indentStatementsRelativeToSwitchLabelsKey), indentStatementsRelativeToSwitchLabels);
+ map->insert(prefix + QLatin1String(indentBlocksRelativeToSwitchLabelsKey), indentBlocksRelativeToSwitchLabels);
+ map->insert(prefix + QLatin1String(indentControlFlowRelativeToSwitchLabelsKey), indentControlFlowRelativeToSwitchLabels);
+ map->insert(prefix + QLatin1String(extraPaddingForConditionsIfConfusingAlignKey), extraPaddingForConditionsIfConfusingAlign);
+ map->insert(prefix + QLatin1String(alignAssignmentsKey), alignAssignments);
+}
+
+void CppCodeStyleSettings::fromMap(const QString &prefix, const QVariantMap &map)
+{
+ indentBlockBraces = map.value(prefix + QLatin1String(indentBlockBracesKey),
+ indentBlockBraces).toBool();
+ indentBlockBody = map.value(prefix + QLatin1String(indentBlockBodyKey),
+ indentBlockBody).toBool();
+ indentClassBraces = map.value(prefix + QLatin1String(indentClassBracesKey),
+ indentClassBraces).toBool();
+ indentEnumBraces = map.value(prefix + QLatin1String(indentEnumBracesKey),
+ indentEnumBraces).toBool();
+ indentNamespaceBraces = map.value(prefix + QLatin1String(indentNamespaceBracesKey),
+ indentNamespaceBraces).toBool();
+ indentNamespaceBody = map.value(prefix + QLatin1String(indentNamespaceBodyKey),
+ indentNamespaceBody).toBool();
+ indentAccessSpecifiers = map.value(prefix + QLatin1String(indentAccessSpecifiersKey),
+ indentAccessSpecifiers).toBool();
+ indentDeclarationsRelativeToAccessSpecifiers = map.value(prefix + QLatin1String(indentDeclarationsRelativeToAccessSpecifiersKey),
+ indentDeclarationsRelativeToAccessSpecifiers).toBool();
+ indentFunctionBody = map.value(prefix + QLatin1String(indentFunctionBodyKey),
+ indentFunctionBody).toBool();
+ indentFunctionBraces = map.value(prefix + QLatin1String(indentFunctionBracesKey),
+ indentFunctionBraces).toBool();
+ indentSwitchLabels = map.value(prefix + QLatin1String(indentSwitchLabelsKey),
+ indentSwitchLabels).toBool();
+ indentStatementsRelativeToSwitchLabels = map.value(prefix + QLatin1String(indentStatementsRelativeToSwitchLabelsKey),
+ indentStatementsRelativeToSwitchLabels).toBool();
+ indentBlocksRelativeToSwitchLabels = map.value(prefix + QLatin1String(indentBlocksRelativeToSwitchLabelsKey),
+ indentBlocksRelativeToSwitchLabels).toBool();
+ indentControlFlowRelativeToSwitchLabels = map.value(prefix + QLatin1String(indentControlFlowRelativeToSwitchLabelsKey),
+ indentControlFlowRelativeToSwitchLabels).toBool();
+ extraPaddingForConditionsIfConfusingAlign = map.value(prefix + QLatin1String(extraPaddingForConditionsIfConfusingAlignKey),
+ extraPaddingForConditionsIfConfusingAlign).toBool();
+ alignAssignments = map.value(prefix + QLatin1String(alignAssignmentsKey),
+ alignAssignments).toBool();
+}
+
+bool CppCodeStyleSettings::equals(const CppCodeStyleSettings &rhs) const
+{
+ return indentBlockBraces == rhs.indentBlockBraces
+ && indentBlockBody == rhs.indentBlockBody
+ && indentClassBraces == rhs.indentClassBraces
+ && indentEnumBraces == rhs.indentEnumBraces
+ && indentNamespaceBraces == rhs.indentNamespaceBraces
+ && indentNamespaceBody == rhs.indentNamespaceBody
+ && indentAccessSpecifiers == rhs.indentAccessSpecifiers
+ && indentDeclarationsRelativeToAccessSpecifiers == rhs.indentDeclarationsRelativeToAccessSpecifiers
+ && indentFunctionBody == rhs.indentFunctionBody
+ && indentFunctionBraces == rhs.indentFunctionBraces
+ && indentSwitchLabels == rhs.indentSwitchLabels
+ && indentStatementsRelativeToSwitchLabels == rhs.indentStatementsRelativeToSwitchLabels
+ && indentBlocksRelativeToSwitchLabels == rhs.indentBlocksRelativeToSwitchLabels
+ && indentControlFlowRelativeToSwitchLabels == rhs.indentControlFlowRelativeToSwitchLabels
+ && extraPaddingForConditionsIfConfusingAlign == rhs.extraPaddingForConditionsIfConfusingAlign
+ && alignAssignments == rhs.alignAssignments;
+}
+