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