summaryrefslogtreecommitdiff
path: root/src/settings/settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings/settings.cpp')
-rw-r--r--src/settings/settings.cpp51
1 files changed, 47 insertions, 4 deletions
diff --git a/src/settings/settings.cpp b/src/settings/settings.cpp
index 190bc977..d7216b2e 100644
--- a/src/settings/settings.cpp
+++ b/src/settings/settings.cpp
@@ -8,23 +8,66 @@
* ============================================================ */
#include "settings.hpp"
+#include "../rekonq.hpp"
+#include "helpers.hpp"
+#include <QDir>
#include <QSettings>
+#include <QStandardPaths>
+
+QString Settings::path()
+{
+ return QDir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation)).filePath("rekonqrc");
+}
Settings::Settings(const QString &path, QObject *parent) : RekonqSettings(parent)
{
d = new QSettings(path, QSettings::IniFormat, this);
+ b = new QSettings(":/settings/rekonqrc", QSettings::IniFormat, this);
}
-void Settings::beginGroup(const QString &prefix) { d->beginGroup(prefix); }
+Settings::~Settings()
+{
+ delete d;
+ delete b;
+}
-void Settings::endGroup() { d->endGroup(); }
+void Settings::beginGroup(const QString &prefix)
+{
+ d->beginGroup(prefix);
+ b->beginGroup(prefix);
+}
+
+void Settings::endGroup()
+{
+ d->endGroup();
+ b->endGroup();
+}
void Settings::setValue(const QString &key, const QVariant &value)
{
- d->setValue(key, value);
+ if (value == b->value(key)) d->remove(key);
+ else
+ d->setValue(key, value);
emit changed(key, value);
}
-QVariant Settings::value(const QString &key, const QVariant &defaultValue) const { return d->value(key, defaultValue); }
+void Settings::resetValue(const QString &key) { d->remove(key); }
+
+QVariant Settings::value(const QString &key) const
+{
+ auto v = d->value(key);
+ if (v.isValid()) return v;
+
+ if (key == QL1S("standardFontFamily")) return getFont(QFont::System).family();
+ if (key == QL1S("fixedFontFamily")) return getFont(QFont::Monospace).family();
+ if (key == QL1S("serifFontFamily")) return getFont(QFont::Times).family();
+ if (key == QL1S("sansSerifFontFamily")) return getFont(QFont::Helvetica).family();
+ if (key == QL1S("cursiveFontFamily")) return getFont(QFont::Cursive).family();
+ if (key == QL1S("fantasyFontFamily")) return getFont(QFont::Fantasy).family();
+
+ v = b->value(key);
+ Q_ASSERT_X(v.isValid(), __PRETTY_FUNCTION__, qUtf8Printable(key));
+ return v;
+}
QString Settings::filePath() const { return d->fileName(); }