From ade98b4cf6630635e2fdbf84ac29fe83a79cc371 Mon Sep 17 00:00:00 2001 From: ConfuSomu Date: Tue, 15 Aug 2023 19:42:18 -0400 Subject: Implement settings dialog --- src/settings_interface.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/settings_interface.h (limited to 'src/settings_interface.h') diff --git a/src/settings_interface.h b/src/settings_interface.h new file mode 100644 index 0000000..e3935d0 --- /dev/null +++ b/src/settings_interface.h @@ -0,0 +1,46 @@ +#pragma once + +#include +#include +#include + +/* struct AppSettings { + enum {LOCALTIME, UTC} ui_timezone = LOCALTIME; + bool can_access_internet = true; + bool can_download_emoji = true; + bool can_download_attachments = true; + struct { + enum {MASTODON} type = MASTODON; + QString address; + QString token; + } instance; +}; */ + +namespace AppSettingsTypes { + enum Timezone {LOCALTIME = 0, UTC}; + enum InstanceType {MASTODON = 0}; +} +// Declare metatypes for use with QVariant +Q_DECLARE_METATYPE(AppSettingsTypes::Timezone); +Q_DECLARE_METATYPE(AppSettingsTypes::InstanceType); + +class SettingsInterface { +public: + ~SettingsInterface(); + const QVariant read_setting(const QString &key); + void write_setting(const QString &key, const QVariant &value); + void clear_setting(const QString &key); + void clear_all(); + bool commit(); + bool is_default(const QString &key); + bool is_uncommited(const QString &key); + +private: + QSettings qt_settings; + QHash* modified = nullptr; + + // Optimization to commit a clear_all() faster + bool must_clear_all = false; + // List of keys to remove from the QSettings + QStringList must_clear; +}; -- cgit v1.2.3-54-g00ecf