From 3d325221d155fc81cc447b0ae449170c59871eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Wed, 14 Aug 2019 22:49:18 +0200 Subject: [PATCH] Add RegistDialog --- gui/CMakeLists.txt | 4 ++- gui/include/registdialog.h | 48 ++++++++++++++++++++++++++++++++++++ gui/src/mainwindow.cpp | 8 ++++++ gui/src/registdialog.cpp | 50 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 gui/include/registdialog.h create mode 100644 gui/src/registdialog.cpp diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 6343a48..c54b4af 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -38,7 +38,9 @@ add_executable(chiaki include/servericonwidget.h src/servericonwidget.cpp include/settings.h - src/settings.cpp) + src/settings.cpp + include/registdialog.h + src/registdialog.cpp) target_include_directories(chiaki PRIVATE include) target_link_libraries(chiaki chiaki-lib chiaki-cli-lib) diff --git a/gui/include/registdialog.h b/gui/include/registdialog.h new file mode 100644 index 0000000..9eb1281 --- /dev/null +++ b/gui/include/registdialog.h @@ -0,0 +1,48 @@ +/* + * 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_REGISTDIALOG_H +#define CHIAKI_REGISTDIALOG_H + +#include + +#include + +class Settings; + +class QLineEdit; + +class RegistDialog : public QDialog +{ + Q_OBJECT + + private: + Settings *settings; + + ChiakiRegist regist; + bool regist_active; + + QLineEdit *host_edit; + QLineEdit *psn_id_edit; + QLineEdit *pin_edit; + + public: + explicit RegistDialog(Settings *settings, QWidget *parent = nullptr); + ~RegistDialog(); +}; + +#endif // CHIAKI_REGISTDIALOG_H diff --git a/gui/src/mainwindow.cpp b/gui/src/mainwindow.cpp index 2dc8b6d..57461ef 100644 --- a/gui/src/mainwindow.cpp +++ b/gui/src/mainwindow.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -50,6 +51,13 @@ MainWindow::MainWindow(Settings *settings, QWidget *parent) tool_bar_spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored); tool_bar->addWidget(tool_bar_spacer); + auto regist_action = new QAction(tr("Register"), this); + tool_bar->addAction(regist_action); + connect(regist_action, &QAction::triggered, this, [this]() { + RegistDialog dialog(this->settings, this); + dialog.exec(); + }); + auto settings_action = new QAction(tr("Settings"), this); tool_bar->addAction(settings_action); connect(settings_action, &QAction::triggered, this, &MainWindow::ShowSettings); diff --git a/gui/src/registdialog.cpp b/gui/src/registdialog.cpp new file mode 100644 index 0000000..11b0fe1 --- /dev/null +++ b/gui/src/registdialog.cpp @@ -0,0 +1,50 @@ +/* + * 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 + +static const QRegularExpression pin_re("[0-9][0-9][0-9][0-9][0-9][0-9]"); + +RegistDialog::RegistDialog(Settings *settings, QWidget *parent) + : QDialog(parent), + settings(settings) +{ + regist_active = false; + + auto layout = new QFormLayout(this); + setLayout(layout); + + host_edit = new QLineEdit(this); + layout->addRow(tr("Host:"), host_edit); + + psn_id_edit = new QLineEdit(this); + layout->addRow(tr("PSN ID (username):"), psn_id_edit); + + pin_edit = new QLineEdit(this); + pin_edit->setValidator(new QRegularExpressionValidator(pin_re, pin_edit)); + layout->addRow(tr("PIN:"), pin_edit); +} + +RegistDialog::~RegistDialog() +{ + if(regist_active) + chiaki_regist_fini(®ist); +} \ No newline at end of file