diff options
Diffstat (limited to 'plugins/ConfigurationEditor/forms/configurationdialog.cpp')
-rw-r--r-- | plugins/ConfigurationEditor/forms/configurationdialog.cpp | 41 |
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; +} |