diff --git a/linkdevwidget.cpp b/linkdevwidget.cpp index 43159715ca1dc94b0a98d3abbd64efbf9fe16444..8d89badbc21a5260e13b0100b951c75fb19f4c71 100644 --- a/linkdevwidget.cpp +++ b/linkdevwidget.cpp @@ -19,6 +19,7 @@ #include "linkdevwidget.h" #include <QMovie> +#include <QTimer> LinkDevWidget::LinkDevWidget(QWidget* parent) : QWidget(parent), @@ -32,9 +33,10 @@ LinkDevWidget::LinkDevWidget(QWidget* parent) setGeneratingPage(); } - connect(ui->enterBtn, &QPushButton::clicked, this, &LinkDevWidget::setGeneratingPage); + connect(ui->enterBtn, &QPushButton::clicked, + this, &LinkDevWidget::setGeneratingPage); connect(&LRCInstance::accountModel(), &lrc::api::NewAccountModel::exportOnRingEnded, - this, &LinkDevWidget::setExportPage); + this, &LinkDevWidget::setExportPage); } LinkDevWidget::~LinkDevWidget() @@ -52,6 +54,17 @@ LinkDevWidget::setGeneratingPage() ui->spinningLabel->show(); movie->start(); + timeout_ = new QTimer(this); + timeout_->setInterval(exportTimeout_); + timeout_->setSingleShot(true); + connect(timeout_, &QTimer::timeout, this, + [&]() { + setExportPage(std::string(), + lrc::api::account::ExportOnRingStatus::NETWORK_ERROR, + std::string()); + }); + timeout_->start(); + LRCInstance::accountModel().exportOnRing(LRCInstance::getCurrAccId(), ui->passwordLineEdit->text().toStdString()); } @@ -59,6 +72,8 @@ void LinkDevWidget::setExportPage(const std::string& accountId, lrc::api::account::ExportOnRingStatus status, const std::string& pin) { Q_UNUSED(accountId); + timeout_->stop(); + ui->stackedWidget->setCurrentWidget(ui->end); switch (status) { @@ -73,6 +88,7 @@ LinkDevWidget::setExportPage(const std::string& accountId, lrc::api::account::Ex break; default: + disconnect(); ui->label_4->setText(tr("Something went wrong.\nPlease try again later.")); ui->label_5->hide(); ui->label_6->hide(); diff --git a/linkdevwidget.h b/linkdevwidget.h index 740cca22d50e77b989f27224996ba9920a0fb12a..082e3e9f6c6e73db7a8b05270c56acd76227864c 100644 --- a/linkdevwidget.h +++ b/linkdevwidget.h @@ -42,8 +42,13 @@ public: private: Ui::LinkDevWidget* ui; + const int exportTimeout_ = 10000; + + QTimer* timeout_; private slots: void setGeneratingPage(); - void setExportPage(const std::string& accountId, lrc::api::account::ExportOnRingStatus status, const std::string& pin); + void setExportPage(const std::string& accountId, + lrc::api::account::ExportOnRingStatus status, + const std::string& pin); };