#include "RegistrationWindow.h" #include #include #include #include #include #include #include #include #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(); }); }