From dd3115fee8fbc20c8d9ac71eb3a13198d29d7f53 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sat, 23 Jun 2018 16:24:24 +0200 Subject: Split shortcuts into new tab --- linux/poi.desktop | 2 +- plugins/ConfigurationEditor/CMakeLists.txt | 5 +- .../configurationeditorplugin.cpp | 4 +- .../forms/configurationdialog.cpp | 41 +++++++ .../forms/configurationdialog.h | 23 ++++ .../forms/configurationdialog.ui | 119 +++++++++++++++++++++ .../ConfigurationEditor/forms/settingsdialog.cpp | 101 ----------------- plugins/ConfigurationEditor/forms/settingsdialog.h | 35 ------ 8 files changed, 189 insertions(+), 141 deletions(-) create mode 100644 plugins/ConfigurationEditor/forms/configurationdialog.cpp create mode 100644 plugins/ConfigurationEditor/forms/configurationdialog.h create mode 100644 plugins/ConfigurationEditor/forms/configurationdialog.ui delete mode 100644 plugins/ConfigurationEditor/forms/settingsdialog.cpp delete mode 100644 plugins/ConfigurationEditor/forms/settingsdialog.h diff --git a/linux/poi.desktop b/linux/poi.desktop index 4b25ccc..ea656a4 100644 --- a/linux/poi.desktop +++ b/linux/poi.desktop @@ -14,7 +14,7 @@ Actions=configure;firejail [Desktop Action configure] Name=Configure smolbote -Exec=/usr/local/bin/poi-config %u +Exec=/usr/local/bin/poi configure [Desktop Action firejail] Name=Start instance in firejail diff --git a/plugins/ConfigurationEditor/CMakeLists.txt b/plugins/ConfigurationEditor/CMakeLists.txt index 3687463..65a452c 100644 --- a/plugins/ConfigurationEditor/CMakeLists.txt +++ b/plugins/ConfigurationEditor/CMakeLists.txt @@ -7,8 +7,9 @@ set(CMAKE_AUTOUIC ON) add_library(ConfigurationEditorPlugin SHARED configurationeditorplugin.cpp configurationeditorplugin.h - forms/settingsdialog.cpp - forms/settingsdialog.h + forms/configurationdialog.cpp + forms/configurationdialog.h + forms/configurationdialog.ui ) target_include_directories(ConfigurationEditorPlugin diff --git a/plugins/ConfigurationEditor/configurationeditorplugin.cpp b/plugins/ConfigurationEditor/configurationeditorplugin.cpp index a5ca0bd..93b1c69 100644 --- a/plugins/ConfigurationEditor/configurationeditorplugin.cpp +++ b/plugins/ConfigurationEditor/configurationeditorplugin.cpp @@ -1,7 +1,7 @@ #include "configurationeditorplugin.h" #include #include -#include "forms/settingsdialog.h" +#include "forms/configurationdialog.h" #include CommandHash_t ConfigurationEditorPlugin::commands() @@ -18,7 +18,7 @@ CommandHash_t ConfigurationEditorPlugin::commands() QDialog *ConfigurationEditorPlugin::createWidget(QWidget *parent) { - auto *dlg = new SettingsDialog(m_config, parent); + auto *dlg = new ConfigurationDialog(m_config, parent); dlg->setAttribute(Qt::WA_DeleteOnClose, true); return dlg; } 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 +#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; +} diff --git a/plugins/ConfigurationEditor/forms/configurationdialog.h b/plugins/ConfigurationEditor/forms/configurationdialog.h new file mode 100644 index 0000000..9d86f2d --- /dev/null +++ b/plugins/ConfigurationEditor/forms/configurationdialog.h @@ -0,0 +1,23 @@ +#ifndef CONFIGURATIONDIALOG_H +#define CONFIGURATIONDIALOG_H + +#include + +namespace Ui { +class ConfigurationDialog; +} + +class Configuration; +class ConfigurationDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ConfigurationDialog(Configuration *conf, QWidget *parent = nullptr); + ~ConfigurationDialog(); + +private: + Ui::ConfigurationDialog *ui; +}; + +#endif // CONFIGURATIONDIALOG_H diff --git a/plugins/ConfigurationEditor/forms/configurationdialog.ui b/plugins/ConfigurationEditor/forms/configurationdialog.ui new file mode 100644 index 0000000..738d4a1 --- /dev/null +++ b/plugins/ConfigurationEditor/forms/configurationdialog.ui @@ -0,0 +1,119 @@ + + + ConfigurationDialog + + + + 0 + 0 + 800 + 600 + + + + Configuration + + + + + + 0 + + + + Settings + + + + + + QAbstractItemView::NoEditTriggers + + + + Name + + + + + Value + + + + + + + + + Shortcuts + + + + + + QAbstractItemView::NoEditTriggers + + + + Name + + + + + Value + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + + buttonBox + accepted() + ConfigurationDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ConfigurationDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/plugins/ConfigurationEditor/forms/settingsdialog.cpp b/plugins/ConfigurationEditor/forms/settingsdialog.cpp deleted file mode 100644 index ebc054e..0000000 --- a/plugins/ConfigurationEditor/forms/settingsdialog.cpp +++ /dev/null @@ -1,101 +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 "settingsdialog.h" -#include -#include -#include -#include -#include -#include -#include -#include - -SettingsDialog::SettingsDialog(Configuration *config, QWidget *parent) - : QDialog(parent) -{ - resize(800, 600); - Q_CHECK_PTR(config); - - // main menu -// settingsMenu.setTitle(tr("Settings")); - -// auto *saveAction = settingsMenu.addAction(tr("Save")); -// saveAction->setShortcut(QKeySequence::Save); - -// auto *saveAsAction = settingsMenu.addAction(tr("Save As")); -// saveAsAction->setShortcut(QKeySequence::SaveAs); - -// settingsMenu.addAction(tr("Quit"), qApp, &QApplication::quit, QKeySequence::Quit); - -// menuBar()->addMenu(&settingsMenu); - - auto *layout = new QVBoxLayout(this); - layout->addWidget(&treeWidget); - treeWidget.setColumnCount(2); - treeWidget.setHeaderLabels({ tr("setting"), tr("value") }); - treeWidget.setEditTriggers(QTreeWidget::NoEditTriggers); - //connect(&treeWidget, &QTreeWidget::itemDoubleClicked, this, &SettingsDialog::editItem); - - for(const auto &option : config->options()) { - auto *item = new QTreeWidgetItem(&treeWidget); - item->setText(0, QString::fromStdString(option->long_name())); - item->setText(1, QString::fromStdString(config->value(option->long_name().c_str()).value_or(std::string()))); - item->setFlags(item->flags() | Qt::ItemIsEditable); - } - - treeWidget.resizeColumnToContents(0); - - // connect signals -// connect(saveAction, &QAction::triggered, this, [this]() { -// write(configPath); -// statusBar()->showMessage(tr("Configuration saved to: ") + configPath, 3000); -// }); - -// connect(saveAsAction, &QAction::triggered, this, [this]() { -// QString path = QFileDialog::getSaveFileName(this, tr("Save Configuration"), configPath, tr("smolbote config (smolbote.cfg)")); -// if(!path.isEmpty()) { -// write(path); -// statusBar()->showMessage(tr("Configuration saved to: ") + path, 3000); -// } -// }); -} - -SettingsDialog::~SettingsDialog() -{ -// if(unsavedChanges) -// write(configPath); -} - -//void SettingsDialog::editItem(QTreeWidgetItem *item, int column) -//{ -// if(column == 1) { -// treeWidget.editItem(item, column); -// unsavedChanges = true; - -// if(!windowTitle().endsWith('*')) { -// setWindowTitle(windowTitle() + '*'); -// } -// } -//} - -//void SettingsDialog::write(const QString &path) -//{ -// QFile output(path); -// output.open(QIODevice::WriteOnly); - -// for(int i = 0; i < treeWidget.topLevelItemCount(); ++i) { -// auto *item = treeWidget.topLevelItem(i); -// output.write(QString(item->text(0) + " = " + item->text(1) + "\n").toUtf8()); -// } - -// output.close(); - -// unsavedChanges = false; -// setWindowTitle(configPath); -//} diff --git a/plugins/ConfigurationEditor/forms/settingsdialog.h b/plugins/ConfigurationEditor/forms/settingsdialog.h deleted file mode 100644 index ed9e02d..0000000 --- a/plugins/ConfigurationEditor/forms/settingsdialog.h +++ /dev/null @@ -1,35 +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 SMOLBOTE_SETTINGSDIALOG_H -#define SMOLBOTE_SETTINGSDIALOG_H - -#include -#include - -class Configuration; -class SettingsDialog : public QDialog -{ - Q_OBJECT - -public: - explicit SettingsDialog(Configuration *config, QWidget *parent = nullptr); - ~SettingsDialog() override; - - QString configPath; - -public slots: -// void editItem(QTreeWidgetItem *item, int column); -// void write(const QString &path); - -private: - QTreeWidget treeWidget; - bool unsavedChanges = false; -}; - -#endif // SMOLBOTE_SETTINGSDIALOG_H -- cgit v1.2.1