#include "configurationdialog.h" #include "ui_configurationdialog.h" #include #include 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(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; }