From 44421abbe89be2c6a6290182571fff82dfec9651 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 15 Mar 2018 16:26:38 +0100 Subject: Moved Configuration class into library --- lib/configuration/configuration.cpp | 108 ++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 lib/configuration/configuration.cpp (limited to 'lib/configuration/configuration.cpp') diff --git a/lib/configuration/configuration.cpp b/lib/configuration/configuration.cpp new file mode 100644 index 0000000..c114155 --- /dev/null +++ b/lib/configuration/configuration.cpp @@ -0,0 +1,108 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: https://neueland.iserlohn-fortress.net/smolbote.hg + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#include "configuration.h" +#include +#include + +namespace po = boost::program_options; + +Configuration::Configuration() +{ + m_homePath = QStandardPaths::writableLocation(QStandardPaths::HomeLocation).toStdString(); + + // create description + desc.add_options() + + // Browser default settings + // default profile name the browser should use; "" is off-the-record + ("browser.profile", po::value()->default_value("")) + + // default window size + ("browser.window.height", po::value()->default_value(720)) + ("browser.window.width", po::value()->default_value(1280)) + ("browser.window.maximized", po::value()->default_value(true)) + ("browser.window.title", po::value()->default_value("title — smolbote [profile]")) + + // window ui + ("browser.ui.navtoolbarMovable", po::value()->default_value(false)) + ("browser.ui.tabtoolbarMovable", po::value()->default_value(false)) + + // browser shortcuts + + // browser menu + ("browser.shortcuts.newWindow", po::value()->default_value("Ctrl+N")) + ("browser.shortcuts.newTab", po::value()->default_value("Ctrl+T")) + ("browser.shortcuts.about", po::value()->default_value("F1")) + ("browser.shortcuts.quit", po::value()->default_value("Ctrl+Q")) + + // navigation + ("browser.shortcuts.back", po::value()->default_value("Ctrl+Left")) + ("browser.shortcuts.forward", po::value()->default_value("Ctrl+Right")) + ("browser.shortcuts.refresh", po::value()->default_value("F5")) + ("browser.shortcuts.reload", po::value()->default_value("Ctrl+F5")) + ("browser.shortcuts.home", po::value()->default_value("Ctrl+Home")) + + // tabs + ("browser.shortcuts.tabClose", po::value()->default_value("Ctrl+X")) + ("browser.shortcuts.tabLeft", po::value()->default_value("Ctrl+O")) + ("browser.shortcuts.tabRight", po::value()->default_value("Ctrl+P")) + + // page + ("browser.shortcuts.toggleSearchBox", po::value()->default_value("F3")) + ("browser.shortcuts.focusAddress", po::value()->default_value("F4")) + ("browser.shortcuts.fullscreen", po::value()->default_value("F11")) + + // Filter settings + ("filter.path", po::value()->default_value("~/.config/smolbote/hosts.d")) + + // Plugin settings + ("plugins.path", po::value()->default_value("~/.config/smolbote/plugins.d")) + + // Profile settings + ("profile.path", po::value()->default_value("~/.config/smolbote/profiles.d")) + ("profile.search", po::value()->default_value("https://duckduckgo.com/?q=$term&ia=web")) + ("profile.homepage", po::value()->default_value("about:blank")) + ("profile.newtab", po::value()->default_value("about:blank")) + + // Bookmark settings + ("bookmarks.path", po::value()->default_value("~/.config/smolbote/bookmarks.xbel")) + ("bookmarks.shortcut", po::value()->default_value("Ctrl+B")) + + // Downloads settings + ("downloads.path", po::value()->default_value("~/Downloads")) + ("downloads.shortcut", po::value()->default_value("Ctrl+D")) + ; + + // store the defaults into the vm + { + const char* argv[0]; + po::store(po::parse_command_line(0, argv, desc), vm); + } + +} + +Configuration::~Configuration() = default; + +bool Configuration::read(const QString &path) +{ + std::ifstream f(path.toStdString(), std::ifstream::in); + po::store(po::parse_config_file(f, desc, false), vm); + return true; +} + +bool Configuration::parse(int argc, const char **argv) +{ + try { + po::store(po::parse_command_line(argc, argv, desc), vm); + } catch (const po::error &e) { + return false; + } + + return true; +} -- cgit v1.2.1