aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-03-15 16:26:38 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-03-15 16:26:38 +0100
commit44421abbe89be2c6a6290182571fff82dfec9651 (patch)
tree69d7980953968f900411db190254a4d05acd2cae /src
parentAdd missing AUTOUIC in ProfileEditor (diff)
downloadsmolbote-44421abbe89be2c6a6290182571fff82dfec9651.tar.xz
Moved Configuration class into library
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt7
-rw-r--r--src/configuration.cpp108
-rw-r--r--src/configuration.h76
3 files changed, 3 insertions, 188 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d2febde..f017d6b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -21,8 +21,6 @@ add_executable(poi
singleapplication.h
browser.cpp
browser.h
- configuration.cpp
- configuration.h
../data/resources.qrc
# main window
@@ -74,11 +72,12 @@ add_executable(poi
../plugins/interfaces.h commandline.cpp commandline.h)
target_include_directories(poi
- PRIVATE ../lib ../plugins)
+ PRIVATE ../lib ../plugins
+ PRIVATE ../lib/configuration)
target_link_libraries(poi
Qt5::Core Qt5::Widgets Qt5::Concurrent Qt5::WebEngineWidgets
- ${Boost_LIBRARIES}
+ configuration
bookmarks downloads)
install(TARGETS poi RUNTIME DESTINATION bin CONFIGURATIONS Release)
diff --git a/src/configuration.cpp b/src/configuration.cpp
deleted file mode 100644
index c114155..0000000
--- a/src/configuration.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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 <QStandardPaths>
-#include <fstream>
-
-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<std::string>()->default_value(""))
-
- // default window size
- ("browser.window.height", po::value<int>()->default_value(720))
- ("browser.window.width", po::value<int>()->default_value(1280))
- ("browser.window.maximized", po::value<bool>()->default_value(true))
- ("browser.window.title", po::value<std::string>()->default_value("title — smolbote [profile]"))
-
- // window ui
- ("browser.ui.navtoolbarMovable", po::value<bool>()->default_value(false))
- ("browser.ui.tabtoolbarMovable", po::value<bool>()->default_value(false))
-
- // browser shortcuts
-
- // browser menu
- ("browser.shortcuts.newWindow", po::value<std::string>()->default_value("Ctrl+N"))
- ("browser.shortcuts.newTab", po::value<std::string>()->default_value("Ctrl+T"))
- ("browser.shortcuts.about", po::value<std::string>()->default_value("F1"))
- ("browser.shortcuts.quit", po::value<std::string>()->default_value("Ctrl+Q"))
-
- // navigation
- ("browser.shortcuts.back", po::value<std::string>()->default_value("Ctrl+Left"))
- ("browser.shortcuts.forward", po::value<std::string>()->default_value("Ctrl+Right"))
- ("browser.shortcuts.refresh", po::value<std::string>()->default_value("F5"))
- ("browser.shortcuts.reload", po::value<std::string>()->default_value("Ctrl+F5"))
- ("browser.shortcuts.home", po::value<std::string>()->default_value("Ctrl+Home"))
-
- // tabs
- ("browser.shortcuts.tabClose", po::value<std::string>()->default_value("Ctrl+X"))
- ("browser.shortcuts.tabLeft", po::value<std::string>()->default_value("Ctrl+O"))
- ("browser.shortcuts.tabRight", po::value<std::string>()->default_value("Ctrl+P"))
-
- // page
- ("browser.shortcuts.toggleSearchBox", po::value<std::string>()->default_value("F3"))
- ("browser.shortcuts.focusAddress", po::value<std::string>()->default_value("F4"))
- ("browser.shortcuts.fullscreen", po::value<std::string>()->default_value("F11"))
-
- // Filter settings
- ("filter.path", po::value<std::string>()->default_value("~/.config/smolbote/hosts.d"))
-
- // Plugin settings
- ("plugins.path", po::value<std::string>()->default_value("~/.config/smolbote/plugins.d"))
-
- // Profile settings
- ("profile.path", po::value<std::string>()->default_value("~/.config/smolbote/profiles.d"))
- ("profile.search", po::value<std::string>()->default_value("https://duckduckgo.com/?q=$term&ia=web"))
- ("profile.homepage", po::value<std::string>()->default_value("about:blank"))
- ("profile.newtab", po::value<std::string>()->default_value("about:blank"))
-
- // Bookmark settings
- ("bookmarks.path", po::value<std::string>()->default_value("~/.config/smolbote/bookmarks.xbel"))
- ("bookmarks.shortcut", po::value<std::string>()->default_value("Ctrl+B"))
-
- // Downloads settings
- ("downloads.path", po::value<std::string>()->default_value("~/Downloads"))
- ("downloads.shortcut", po::value<std::string>()->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;
-}
diff --git a/src/configuration.h b/src/configuration.h
deleted file mode 100644
index 5038a4d..0000000
--- a/src/configuration.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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
- */
-
-#ifndef CONFIGURATION_H
-#define CONFIGURATION_H
-
-#include <optional>
-#include <string>
-#include <vector>
-#include <QString>
-#include <boost/program_options.hpp>
-#include <QStringList>
-
-class Configuration
-{
-public:
- explicit Configuration();
- ~Configuration();
-
- bool read(const QString &path);
- bool parse(int argc, const char **argv);
-
- template <typename T>
- std::optional<T> value(const char *path) const
- {
- // if setting doesn't exist, we crash
- // in debug builds, check if setting exists
-#ifdef QT_DEBUG
- if(vm.count(path) == 0) {
- qWarning("value(%s) does not exist, probably crashing now", path);
- }
-#endif
-
- if constexpr(std::is_same_v<T, std::string>) {
- std::string r;
- try {
- r = vm[path].as<std::string>();
- } catch (boost::bad_any_cast &) {
- // try int
- try {
- r = std::to_string(vm[path].as<int>());
- } catch (boost::bad_any_cast &) {
-
- // try bool, and crash if not that either
- r = vm[path].as<bool>() ? "true" : "false";
- }
-
- }
-
- // check if it's a path
- if(r.front() == '~') {
- r.replace(0, 1, m_homePath);
- }
-
- return std::optional<std::string>(r);
- } else
- return std::optional<T>(vm[path].as<T>());
- }
-
- const std::vector<boost::shared_ptr<boost::program_options::option_description>> & options() {
- return desc.options();
- }
-
-private:
- boost::program_options::options_description desc;
- boost::program_options::variables_map vm;
-
- std::string m_homePath;
-};
-
-#endif // CONFIGURATION_H