diff options
-rw-r--r-- | src/libs/utils/basetreeview.cpp | 3 | ||||
-rw-r--r-- | src/libs/utils/checkablemessagebox.cpp | 2 | ||||
-rw-r--r-- | src/libs/utils/historycompleter.cpp | 29 | ||||
-rw-r--r-- | src/libs/utils/historycompleter.h | 8 | ||||
-rw-r--r-- | src/libs/utils/infobar.cpp | 5 | ||||
-rw-r--r-- | src/libs/utils/qtcsettings.h | 34 | ||||
-rw-r--r-- | src/libs/utils/savedaction.cpp | 9 | ||||
-rw-r--r-- | src/libs/utils/unixutils.cpp | 4 |
8 files changed, 63 insertions, 31 deletions
diff --git a/src/libs/utils/basetreeview.cpp b/src/libs/utils/basetreeview.cpp index f35bf9ef37..8340f08a37 100644 --- a/src/libs/utils/basetreeview.cpp +++ b/src/libs/utils/basetreeview.cpp @@ -26,6 +26,7 @@ #include "basetreeview.h" #include "progressindicator.h" +#include "qtcsettings.h" #include "treemodel.h" #include <utils/algorithm.h> @@ -159,7 +160,7 @@ public: l.append(column); l.append(width); } - m_settings->setValue(QLatin1String(ColumnKey), l); + QtcSettings::setValueWithDefault(m_settings, ColumnKey, l); m_settings->endGroup(); } } diff --git a/src/libs/utils/checkablemessagebox.cpp b/src/libs/utils/checkablemessagebox.cpp index c2c6a4c6ce..8efb7de603 100644 --- a/src/libs/utils/checkablemessagebox.cpp +++ b/src/libs/utils/checkablemessagebox.cpp @@ -24,7 +24,9 @@ ****************************************************************************/ #include "checkablemessagebox.h" + #include "qtcassert.h" +#include "qtcsettings.h" #include <QApplication> #include <QCheckBox> diff --git a/src/libs/utils/historycompleter.cpp b/src/libs/utils/historycompleter.cpp index fa037ddd61..3a296c37dd 100644 --- a/src/libs/utils/historycompleter.cpp +++ b/src/libs/utils/historycompleter.cpp @@ -24,14 +24,13 @@ ****************************************************************************/ #include "historycompleter.h" + #include "fancylineedit.h" +#include "qtcassert.h" +#include "qtcsettings.h" #include "theme/theme.h" #include "utilsicons.h" -#include "qtcassert.h" - -#include <QSettings> - #include <QItemDelegate> #include <QKeyEvent> #include <QListView> @@ -41,7 +40,8 @@ namespace Utils { namespace Internal { -static QSettings *theSettings = nullptr; +static QtcSettings *theSettings = nullptr; +const bool isLastItemEmptyDefault = false; class HistoryCompleterPrivate : public QAbstractListModel { @@ -57,7 +57,7 @@ public: QString historyKey; QString historyKeyIsLastItemEmpty; int maxLines = 6; - bool isLastItemEmpty = false; + bool isLastItemEmpty = isLastItemEmptyDefault; }; class HistoryLineDelegate : public QItemDelegate @@ -157,7 +157,7 @@ bool HistoryCompleterPrivate::removeRows(int row, int count, const QModelIndex & beginRemoveRows(parent, row, row + count -1); for (int i = 0; i < count; ++i) list.removeAt(row); - theSettings->setValue(historyKey, list); + theSettings->setValueWithDefault(historyKey, list); endRemoveRows(); return true; } @@ -175,7 +175,9 @@ void HistoryCompleterPrivate::addEntry(const QString &str) const QString entry = str.trimmed(); if (entry.isEmpty()) { isLastItemEmpty = true; - theSettings->setValue(historyKeyIsLastItemEmpty, isLastItemEmpty); + theSettings->setValueWithDefault(historyKeyIsLastItemEmpty, + isLastItemEmpty, + isLastItemEmptyDefault); return; } int removeIndex = list.indexOf(entry); @@ -185,9 +187,11 @@ void HistoryCompleterPrivate::addEntry(const QString &str) list.prepend(entry); list = list.mid(0, maxLines - 1); endResetModel(); - theSettings->setValue(historyKey, list); + theSettings->setValueWithDefault(historyKey, list); isLastItemEmpty = false; - theSettings->setValue(historyKeyIsLastItemEmpty, isLastItemEmpty); + theSettings->setValueWithDefault(historyKeyIsLastItemEmpty, + isLastItemEmpty, + isLastItemEmptyDefault); } HistoryCompleter::HistoryCompleter(const QString &historyKey, QObject *parent) @@ -201,7 +205,8 @@ HistoryCompleter::HistoryCompleter(const QString &historyKey, QObject *parent) d->list = theSettings->value(d->historyKey).toStringList(); d->historyKeyIsLastItemEmpty = QLatin1String("CompleterHistory/") + historyKey + QLatin1String(".IsLastItemEmpty"); - d->isLastItemEmpty = theSettings->value(d->historyKeyIsLastItemEmpty, false).toBool(); + d->isLastItemEmpty = theSettings->value(d->historyKeyIsLastItemEmpty, isLastItemEmptyDefault) + .toBool(); setModel(d); auto popup = new HistoryLineView(d); @@ -260,7 +265,7 @@ void HistoryCompleter::addEntry(const QString &str) d->addEntry(str); } -void HistoryCompleter::setSettings(QSettings *settings) +void HistoryCompleter::setSettings(QtcSettings *settings) { Internal::theSettings = settings; } diff --git a/src/libs/utils/historycompleter.h b/src/libs/utils/historycompleter.h index 07a66db145..354fff8cd4 100644 --- a/src/libs/utils/historycompleter.h +++ b/src/libs/utils/historycompleter.h @@ -29,12 +29,10 @@ #include <QCompleter> -QT_BEGIN_NAMESPACE -class QSettings; -QT_END_NAMESPACE - namespace Utils { +class QtcSettings; + namespace Internal { class HistoryCompleterPrivate; } class QTCREATOR_UTILS_EXPORT HistoryCompleter : public QCompleter @@ -42,7 +40,7 @@ class QTCREATOR_UTILS_EXPORT HistoryCompleter : public QCompleter Q_OBJECT public: - static void setSettings(QSettings *settings); + static void setSettings(QtcSettings *settings); HistoryCompleter(const QString &historyKey, QObject *parent = nullptr); bool removeHistoryItem(int index); QString historyItem() const; diff --git a/src/libs/utils/infobar.cpp b/src/libs/utils/infobar.cpp index d3be41e478..8405d4bc1f 100644 --- a/src/libs/utils/infobar.cpp +++ b/src/libs/utils/infobar.cpp @@ -27,6 +27,7 @@ #include "algorithm.h" #include "qtcassert.h" +#include "qtcsettings.h" #include "theme/theme.h" #include "utilsicons.h" @@ -192,7 +193,7 @@ void InfoBar::clearGloballySuppressed() { globallySuppressed.clear(); if (m_settings) - m_settings->setValue(QLatin1String(C_SUPPRESSED_WARNINGS), QStringList()); + m_settings->remove(C_SUPPRESSED_WARNINGS); } bool InfoBar::anyGloballySuppressed() @@ -205,7 +206,7 @@ void InfoBar::writeGloballySuppressedToSettings() if (!m_settings) return; const QStringList list = Utils::transform<QList>(globallySuppressed, &Id::toString); - m_settings->setValue(QLatin1String(C_SUPPRESSED_WARNINGS), list); + QtcSettings::setValueWithDefault(m_settings, C_SUPPRESSED_WARNINGS, list); } diff --git a/src/libs/utils/qtcsettings.h b/src/libs/utils/qtcsettings.h index 782d78c105..6d022797e6 100644 --- a/src/libs/utils/qtcsettings.h +++ b/src/libs/utils/qtcsettings.h @@ -40,24 +40,46 @@ public: void setValueWithDefault(const QString &key, const T &val, const T &defaultValue); template<typename T> void setValueWithDefault(const QString &key, const T &val); + + template<typename T> + static void setValueWithDefault(QSettings *settings, + const QString &key, + const T &val, + const T &defaultValue); + template<typename T> + static void setValueWithDefault(QSettings *settings, const QString &key, const T &val); }; template<typename T> void QtcSettings::setValueWithDefault(const QString &key, const T &val, const T &defaultValue) { + setValueWithDefault(this, key, val, defaultValue); +} + +template<typename T> +void QtcSettings::setValueWithDefault(const QString &key, const T &val) +{ + setValueWithDefault(this, key, val); +} + +template<typename T> +void QtcSettings::setValueWithDefault(QSettings *settings, + const QString &key, + const T &val, + const T &defaultValue) +{ if (val == defaultValue) - remove(key); + settings->remove(key); else - setValue(key, QVariant::fromValue(val)); + settings->setValue(key, QVariant::fromValue(val)); } template<typename T> -void QtcSettings::setValueWithDefault(const QString &key, const T &val) +void QtcSettings::setValueWithDefault(QSettings *settings, const QString &key, const T &val) { if (val == T()) - remove(key); + settings->remove(key); else - setValue(key, QVariant::fromValue(val)); + settings->setValue(key, QVariant::fromValue(val)); } - } // namespace Utils diff --git a/src/libs/utils/savedaction.cpp b/src/libs/utils/savedaction.cpp index 353a504da9..062a12b923 100644 --- a/src/libs/utils/savedaction.cpp +++ b/src/libs/utils/savedaction.cpp @@ -25,9 +25,10 @@ #include <utils/savedaction.h> -#include <utils/qtcassert.h> -#include <utils/pathchooser.h> -#include <utils/pathlisteditor.h> +#include "pathchooser.h" +#include "pathlisteditor.h" +#include "qtcassert.h" +#include "qtcsettings.h" #include <QActionGroup> #include <QCheckBox> @@ -147,7 +148,7 @@ void SavedAction::writeSettings(QSettings *settings) { if (settingsKey().isEmpty()) return; - settings->setValue(settingsKey(), m_value); + QtcSettings::setValueWithDefault(settings, settingsKey(), m_value, m_defaultValue); } /* diff --git a/src/libs/utils/unixutils.cpp b/src/libs/utils/unixutils.cpp index 77daae645c..535bfa2a04 100644 --- a/src/libs/utils/unixutils.cpp +++ b/src/libs/utils/unixutils.cpp @@ -24,7 +24,9 @@ ****************************************************************************/ #include "unixutils.h" + #include "fileutils.h" +#include "qtcsettings.h" #include <QSettings> #include <QFileInfo> @@ -47,7 +49,7 @@ QString UnixUtils::fileBrowser(const QSettings *settings) void UnixUtils::setFileBrowser(QSettings *settings, const QString &term) { - settings->setValue(QLatin1String("General/FileBrowser"), term); + QtcSettings::setValueWithDefault(settings, "General/FileBrowser", term, defaultFileBrowser()); } |