aboutsummaryrefslogtreecommitdiff
path: root/plugins/ConfigurationEditor
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-10-09 12:05:28 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-10-09 12:05:28 +0200
commit3639d5789259561c531a3481d7061a0cb492c644 (patch)
treec9c7ff04022b62cf5be4d4ea31bf28d966ccefda /plugins/ConfigurationEditor
parentCreate .profile file when adding a new profile (diff)
downloadsmolbote-3639d5789259561c531a3481d7061a0cb492c644.tar.xz
Unlink plugins from lib/ libraries
Diffstat (limited to 'plugins/ConfigurationEditor')
-rw-r--r--plugins/ConfigurationEditor/CMakeLists.txt8
-rw-r--r--plugins/ConfigurationEditor/configurationeditorplugin.cpp27
-rw-r--r--plugins/ConfigurationEditor/configurationeditorplugin.h12
-rw-r--r--plugins/ConfigurationEditor/forms/configurationdialog.cpp65
-rw-r--r--plugins/ConfigurationEditor/forms/configurationdialog.h23
5 files changed, 92 insertions, 43 deletions
diff --git a/plugins/ConfigurationEditor/CMakeLists.txt b/plugins/ConfigurationEditor/CMakeLists.txt
index 22ef3d3..699366e 100644
--- a/plugins/ConfigurationEditor/CMakeLists.txt
+++ b/plugins/ConfigurationEditor/CMakeLists.txt
@@ -5,6 +5,9 @@ set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
add_library(ConfigurationEditorPlugin SHARED
+ ${CMAKE_SOURCE_DIR}/include/plugininterface.h
+ ${CMAKE_SOURCE_DIR}/include/browserinterface.h
+
configurationeditorplugin.cpp
configurationeditorplugin.h
forms/configurationdialog.cpp
@@ -13,14 +16,11 @@ add_library(ConfigurationEditorPlugin SHARED
)
target_include_directories(ConfigurationEditorPlugin
- PRIVATE ${CMAKE_SOURCE_DIR}/plugins
- PRIVATE ${CMAKE_SOURCE_DIR}/lib/configuration
- PRIVATE ${Boost_INCLUDE_DIRS}
+ PRIVATE ${CMAKE_SOURCE_DIR}/include
)
target_link_libraries(ConfigurationEditorPlugin
PRIVATE Qt5::Widgets
- PRIVATE configuration
)
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
diff --git a/plugins/ConfigurationEditor/configurationeditorplugin.cpp b/plugins/ConfigurationEditor/configurationeditorplugin.cpp
index bf8a90d..1f60cc0 100644
--- a/plugins/ConfigurationEditor/configurationeditorplugin.cpp
+++ b/plugins/ConfigurationEditor/configurationeditorplugin.cpp
@@ -1,8 +1,15 @@
+/*
+ * 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/gitea/aqua/smolbote
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
#include "configurationeditorplugin.h"
#include "forms/configurationdialog.h"
#include <QDialog>
#include <QHash>
-#include <configuration.h>
CommandHash_t ConfigurationEditorPlugin::commands()
{
@@ -16,9 +23,23 @@ CommandHash_t ConfigurationEditorPlugin::commands()
return hash;
}
-QDialog *ConfigurationEditorPlugin::createWidget(QWidget *parent)
+QDialog *ConfigurationEditorPlugin::createWidget(QWidget *parent) const
{
- auto *dlg = new ConfigurationDialog(browser->getConfiguration(), parent);
+ auto *app = browser();
+ Q_CHECK_PTR(app);
+
+ auto *dlg = new ConfigurationDialog(parent);
dlg->setAttribute(Qt::WA_DeleteOnClose, true);
+
+ for(const QString &key : app->configurationOptions()) {
+ dlg->addOption(key, app->configuration(key));
+ }
+ dlg->ui->settings_treeWidget->resizeColumnToContents(0);
+ dlg->ui->shortcuts_treeWidget->resizeColumnToContents(0);
+
+ connect(dlg, &ConfigurationDialog::configurationChanged, dlg, [app](const QString &key, const QString &value) {
+ app->setConfiguration(key, value);
+ });
+
return dlg;
}
diff --git a/plugins/ConfigurationEditor/configurationeditorplugin.h b/plugins/ConfigurationEditor/configurationeditorplugin.h
index 5e70ab7..7e7ebc6 100644
--- a/plugins/ConfigurationEditor/configurationeditorplugin.h
+++ b/plugins/ConfigurationEditor/configurationeditorplugin.h
@@ -1,8 +1,16 @@
+/*
+ * 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/gitea/aqua/smolbote
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
#ifndef CONFIGURATIONEDITOR_PLUGIN_H
#define CONFIGURATIONEDITOR_PLUGIN_H
#include <QVector>
-#include <interfaces.h>
+#include <plugininterface.h>
class QDialog;
class ConfigurationEditorPlugin : public QObject, public PluginInterface
@@ -14,7 +22,7 @@ class ConfigurationEditorPlugin : public QObject, public PluginInterface
public:
// PluginInterface
CommandHash_t commands() override;
- QDialog *createWidget(QWidget *parent = nullptr) override;
+ QDialog *createWidget(QWidget *parent = nullptr) const override;
};
#endif // CONFIGURATIONEDITOR_PLUGIN_H
diff --git a/plugins/ConfigurationEditor/forms/configurationdialog.cpp b/plugins/ConfigurationEditor/forms/configurationdialog.cpp
index ffe7f9c..f433d70 100644
--- a/plugins/ConfigurationEditor/forms/configurationdialog.cpp
+++ b/plugins/ConfigurationEditor/forms/configurationdialog.cpp
@@ -1,41 +1,50 @@
+/*
+ * 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/gitea/aqua/smolbote
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
#include "configurationdialog.h"
-#include "ui_configurationdialog.h"
-#include <configuration.h>
#include <QKeySequenceEdit>
+#include <QLineEdit>
-ConfigurationDialog::ConfigurationDialog(Configuration *conf, QWidget *parent) :
+ConfigurationDialog::ConfigurationDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ConfigurationDialog)
{
ui->setupUi(this);
- Q_CHECK_PTR(conf);
-
- for(const auto &option : conf->options()) {
- auto path = QString::fromStdString(option->long_name());
- auto value = QString::fromStdString(conf->value<std::string>(option->long_name().c_str()).value_or(""));
-
- QTreeWidgetItem *item = nullptr;
- if(path.contains("shortcut")) {
- item = new QTreeWidgetItem(ui->shortcuts_treeWidget);
- auto *edit = new QKeySequenceEdit(value);
- connect(edit, &QKeySequenceEdit::keySequenceChanged, this, [=](const QKeySequence &keySequqnce) {
- conf->setValue(qUtf8Printable(path), keySequqnce.toString());
- });
- ui->shortcuts_treeWidget->setItemWidget(item, 1, edit);
- } else {
- item = new QTreeWidgetItem(ui->settings_treeWidget);
- item->setText(1, value);
- }
-
- item->setText(0, path);
-
- }
-
- ui->settings_treeWidget->resizeColumnToContents(0);
- ui->shortcuts_treeWidget->resizeColumnToContents(0);
}
ConfigurationDialog::~ConfigurationDialog()
{
delete ui;
}
+
+void ConfigurationDialog::addOption(const QString &key, const QString &value)
+{
+ QTreeWidgetItem *item = nullptr;
+
+ if(key.contains(QLatin1Literal("shortcut"))) {
+ item = new QTreeWidgetItem(ui->shortcuts_treeWidget);
+
+ auto *edit = new QKeySequenceEdit(value);
+ ui->shortcuts_treeWidget->setItemWidget(item, 1, edit);
+
+ connect(edit, &QKeySequenceEdit::keySequenceChanged, this, [this, key](const QKeySequence &keySequence) {
+ emit configurationChanged(key, keySequence.toString());
+ });
+
+ } else {
+ item = new QTreeWidgetItem(ui->settings_treeWidget);
+
+ auto *edit = new QLineEdit(value);
+ ui->settings_treeWidget->setItemWidget(item, 1, edit);
+
+ connect(edit, &QLineEdit::editingFinished, this, [this, key, edit]() {
+ emit configurationChanged(key, edit->text());
+ });
+ }
+ item->setText(0, key);
+}
diff --git a/plugins/ConfigurationEditor/forms/configurationdialog.h b/plugins/ConfigurationEditor/forms/configurationdialog.h
index 9d86f2d..fd07aa8 100644
--- a/plugins/ConfigurationEditor/forms/configurationdialog.h
+++ b/plugins/ConfigurationEditor/forms/configurationdialog.h
@@ -1,21 +1,32 @@
+/*
+ * 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/gitea/aqua/smolbote
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
#ifndef CONFIGURATIONDIALOG_H
#define CONFIGURATIONDIALOG_H
#include <QDialog>
+#include "ui_configurationdialog.h"
-namespace Ui {
-class ConfigurationDialog;
-}
-
-class Configuration;
class ConfigurationDialog : public QDialog
{
Q_OBJECT
+ friend class ConfigurationEditorPlugin;
+
public:
- explicit ConfigurationDialog(Configuration *conf, QWidget *parent = nullptr);
+ explicit ConfigurationDialog(QWidget *parent = nullptr);
~ConfigurationDialog();
+ void addOption(const QString &key, const QString &value);
+
+signals:
+ void configurationChanged(const QString &key, const QString &value);
+
private:
Ui::ConfigurationDialog *ui;
};