1
0
forked from BRT/arc
arc/views/widget/loader/RegistrationWindow.cpp
2025-07-27 14:28:35 +05:00

75 lines
2.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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();
});
}