// Copyright (C) 2020 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "utils_global.h" #include namespace Utils { class QTCREATOR_UTILS_EXPORT QtcSettings : public QSettings { public: using QSettings::QSettings; template void setValueWithDefault(const QString &key, const T &val, const T &defaultValue); template void setValueWithDefault(const QString &key, const T &val); template static void setValueWithDefault(QSettings *settings, const QString &key, const T &val, const T &defaultValue); template static void setValueWithDefault(QSettings *settings, const QString &key, const T &val); }; template void QtcSettings::setValueWithDefault(const QString &key, const T &val, const T &defaultValue) { setValueWithDefault(this, key, val, defaultValue); } template void QtcSettings::setValueWithDefault(const QString &key, const T &val) { setValueWithDefault(this, key, val); } template void QtcSettings::setValueWithDefault(QSettings *settings, const QString &key, const T &val, const T &defaultValue) { if (val == defaultValue) settings->remove(key); else settings->setValue(key, QVariant::fromValue(val)); } template void QtcSettings::setValueWithDefault(QSettings *settings, const QString &key, const T &val) { if (val == T()) settings->remove(key); else settings->setValue(key, QVariant::fromValue(val)); } } // namespace Utils