From a3da855cddff3c3c71311af6ce3e7629a459024d Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sat, 22 Jul 2017 23:18:26 +0200 Subject: Add application config for GUI QT5 stored in .config/org.the_jk/tp.Monitor.conf on Linux GTK stored in dconf --- src/gui_qt.cc | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) (limited to 'src/gui_qt.cc') diff --git a/src/gui_qt.cc b/src/gui_qt.cc index dcfd320..d54975e 100644 --- a/src/gui_qt.cc +++ b/src/gui_qt.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -35,6 +36,7 @@ #include #include "gui_about.hh" +#include "gui_config.hh" #include "gui_form.hh" #include "gui_formapply.hh" #include "gui_htmlattrtext.hh" @@ -315,12 +317,50 @@ private: GuiListModel* const model_; }; +class QtGuiConfig : public GuiConfig { +public: + QtGuiConfig() + : settings_(new QSettings("org.the_jk", "tp.Monitor")) { + } + + ~QtGuiConfig() override { + settings_->sync(); + } + + using Config::get; + std::string const& get(std::string const& key, + std::string const& fallback) override { + memory_[key] = settings_->value(QString::fromStdString(key), + QString::fromStdString(fallback)) + .toString().toStdString(); + return memory_[key]; + } + char const* get(std::string const& key, char const* fallback) override { + auto k = QString::fromStdString(key); + if (!settings_->contains(k)) return fallback; + memory_[key] = settings_->value(k).toString().toStdString(); + return memory_[key].c_str(); + } + bool is_set(std::string const& key) override { + return settings_->contains(QString::fromStdString(key)); + } + + void set(std::string const& key, std::string const& value) override { + settings_->setValue(QString::fromStdString(key), + QString::fromStdString(value)); + } + +private: + std::unique_ptr settings_; + std::unordered_map memory_; +}; + class QtGuiMain : public GuiMain, public QtGuiWindow { public: QtGuiMain(std::string const& title, uint32_t width, uint32_t height) : title_(title), width_(width), height_(height), split_(0.7), - menu_(nullptr), statusbar_(nullptr), splitter_(nullptr), - top_(nullptr), bottom_(nullptr) { + menu_(nullptr), statusbar_(nullptr), config_(new QtGuiConfig()), + splitter_(nullptr), top_(nullptr), bottom_(nullptr) { } void set_menu(GuiMenu* menu) override { @@ -438,6 +478,10 @@ public: clipboard->setMimeData(mimedata); } + Config* config() override { + return config_.get(); + } + private: static bool valid_utf8(std::string const& data) { QTextCodec::ConverterState state; @@ -480,6 +524,7 @@ private: std::unique_ptr main_; std::unique_ptr layout_; std::unique_ptr center_; + std::unique_ptr config_; QSplitter* splitter_; QWidget* top_; QTextEdit* bottom_; -- cgit v1.2.3-70-g09d2