aboutsummaryrefslogtreecommitdiff
path: root/plugins/ConfigurationEditor/forms/configurationdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ConfigurationEditor/forms/configurationdialog.cpp')
-rw-r--r--plugins/ConfigurationEditor/forms/configurationdialog.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/plugins/ConfigurationEditor/forms/configurationdialog.cpp b/plugins/ConfigurationEditor/forms/configurationdialog.cpp
new file mode 100644
index 0000000..ffe7f9c
--- /dev/null
+++ b/plugins/ConfigurationEditor/forms/configurationdialog.cpp
@@ -0,0 +1,41 @@
+#include "configurationdialog.h"
+#include "ui_configurationdialog.h"
+#include <configuration.h>
+#include <QKeySequenceEdit>
+
+ConfigurationDialog::ConfigurationDialog(Configuration *conf, 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;
+}