From d435a9d3687fdbd39b6aa72725db964f50bac032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Thu, 15 Aug 2019 23:42:23 +0200 Subject: [PATCH] Add SettingsDialog --- gui/CMakeLists.txt | 4 ++- gui/include/settingsdialog.h | 39 +++++++++++++++++++++++++ gui/src/mainwindow.cpp | 4 ++- gui/src/settingsdialog.cpp | 56 ++++++++++++++++++++++++++++++++++++ 4 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 gui/include/settingsdialog.h create mode 100644 gui/src/settingsdialog.cpp diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index dfb41bd..3820a80 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -42,7 +42,9 @@ add_executable(chiaki include/registdialog.h src/registdialog.cpp include/host.h - src/host.cpp) + src/host.cpp + include/settingsdialog.h + src/settingsdialog.cpp) target_include_directories(chiaki PRIVATE include) target_link_libraries(chiaki chiaki-lib chiaki-cli-lib) diff --git a/gui/include/settingsdialog.h b/gui/include/settingsdialog.h new file mode 100644 index 0000000..7f2d255 --- /dev/null +++ b/gui/include/settingsdialog.h @@ -0,0 +1,39 @@ +/* + * This file is part of Chiaki. + * + * Chiaki is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Chiaki is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chiaki. If not, see . + */ + +#ifndef CHIAKI_SETTINGSDIALOG_H +#define CHIAKI_SETTINGSDIALOG_H + +#include + +class Settings; +class QListWidget; + +class SettingsDialog : public QDialog +{ + Q_OBJECT + + private: + Settings *settings; + + QListWidget *registered_hosts_list_widget; + + public: + SettingsDialog(Settings *settings, QWidget *parent = nullptr); +}; + +#endif // CHIAKI_SETTINGSDIALOG_H diff --git a/gui/src/mainwindow.cpp b/gui/src/mainwindow.cpp index 08176a3..55caa1d 100644 --- a/gui/src/mainwindow.cpp +++ b/gui/src/mainwindow.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -128,7 +129,8 @@ void MainWindow::UpdateDiscoveryEnabled() void MainWindow::ShowSettings() { - qDebug() << "TODO: ShowSettings()"; + SettingsDialog dialog(settings, this); + dialog.exec(); } void MainWindow::UpdateDisplayServers() diff --git a/gui/src/settingsdialog.cpp b/gui/src/settingsdialog.cpp new file mode 100644 index 0000000..1e94a48 --- /dev/null +++ b/gui/src/settingsdialog.cpp @@ -0,0 +1,56 @@ +/* + * This file is part of Chiaki. + * + * Chiaki is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Chiaki is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Chiaki. If not, see . + */ + +#include + +#include +#include +#include +#include +#include + +SettingsDialog::SettingsDialog(Settings *settings, QWidget *parent) : QDialog(parent) +{ + this->settings = settings; + + auto layout = new QVBoxLayout(this); + setLayout(layout); + + auto registered_hosts_group_box = new QGroupBox(tr("Registered Consoles")); + layout->addWidget(registered_hosts_group_box); + + auto registered_hosts_layout = new QHBoxLayout(); + registered_hosts_group_box->setLayout(registered_hosts_layout); + + registered_hosts_list_widget = new QListWidget(this); + registered_hosts_layout->addWidget(registered_hosts_list_widget); + + auto registered_hosts_buttons_layout = new QVBoxLayout(); + registered_hosts_layout->addLayout(registered_hosts_buttons_layout); + + auto register_new_button = new QPushButton(tr("Register New"), this); + registered_hosts_buttons_layout->addWidget(register_new_button); + + auto delete_host_button = new QPushButton(tr("Delete"), this); + registered_hosts_buttons_layout->addWidget(delete_host_button); + + registered_hosts_buttons_layout->addStretch(); + + auto button_box = new QDialogButtonBox(QDialogButtonBox::Close, this); + layout->addWidget(button_box); + connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); +} \ No newline at end of file