75 lines
2.6 KiB
C++
75 lines
2.6 KiB
C++
#include "RegistrationWindow.h"
|
||
#include <QVBoxLayout>
|
||
#include <QLabel>
|
||
#include <QLineEdit>
|
||
#include <QPushButton>
|
||
#include <QApplication>
|
||
#include <QDebug>
|
||
#include <QMessageBox>
|
||
#include <QThread>
|
||
|
||
#include "LoaderDialog.h"
|
||
#include "net/NetworkService.h"
|
||
|
||
RegistrationWindow::RegistrationWindow(QWidget *parent): QWidget(parent) {
|
||
setWindowTitle("Регистрация");
|
||
resize(300, 150);
|
||
|
||
auto *layout = new QVBoxLayout(this);
|
||
|
||
layout->addWidget(new QLabel("Введите данные:"));
|
||
|
||
QLineEdit *nameEdit = new QLineEdit();
|
||
nameEdit->setPlaceholderText("Имя");
|
||
layout->addWidget(nameEdit);
|
||
|
||
QLineEdit *emailEdit = new QLineEdit();
|
||
emailEdit->setPlaceholderText("Контакт");
|
||
layout->addWidget(emailEdit);
|
||
|
||
QHBoxLayout *buttonLayout = new QHBoxLayout();
|
||
|
||
QPushButton *registerButton = new QPushButton("Регистрация");
|
||
QPushButton *closeButton = new QPushButton("Закрыть");
|
||
|
||
buttonLayout->addWidget(registerButton);
|
||
buttonLayout->addWidget(closeButton);
|
||
|
||
layout->addLayout(buttonLayout);
|
||
|
||
connect(closeButton, &QPushButton::clicked, qApp, &QApplication::quit);
|
||
connect(registerButton, &QPushButton::clicked, this, [=]() {
|
||
QString name = nameEdit->text();
|
||
QString email = emailEdit->text();
|
||
|
||
auto *loader = new LoaderDialog(this);
|
||
loader->show();
|
||
|
||
auto *thread = new QThread;
|
||
auto *networkService = new NetworkService;
|
||
networkService->moveToThread(thread);
|
||
networkService->addExtra("name", name);
|
||
networkService->addExtra("email", email);
|
||
|
||
connect(thread, &QThread::started, networkService, &NetworkService::registerNewUser);
|
||
connect(networkService, &NetworkService::finished, thread, &QThread::quit);
|
||
connect(networkService, &NetworkService::finished, networkService, &QObject::deleteLater);
|
||
connect(thread, &QThread::finished, thread, &QThread::deleteLater);
|
||
|
||
connect(networkService, &NetworkService::finishedWithResult, [=](int result) {
|
||
QMetaObject::invokeMethod(this, [=]() {
|
||
loader->close();
|
||
loader->deleteLater();
|
||
|
||
if (result == 1) {
|
||
emit onRegisteredSuccess();
|
||
} else {
|
||
QMessageBox::critical(this, "Ошибка регистрации",
|
||
"Проверьте подключение к интернету или свяжитесь со службой поддержки");
|
||
}
|
||
}, Qt::QueuedConnection);
|
||
});
|
||
thread->start();
|
||
});
|
||
}
|