From 281d13a15014fd6450080c812dbc2e196c33a963 Mon Sep 17 00:00:00 2001 From: Isa Nanic <isa.nanic@savoirfairelinux.com> Date: Tue, 11 Dec 2018 18:55:02 -0500 Subject: [PATCH] fix: add timeout to network link device slot Change-Id: I2bb7b2e19c393a0c9523a3719f2c11b3bf94dbde Reviewed-by: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> --- linkdevwidget.cpp | 20 ++++++++++++++++++-- linkdevwidget.h | 7 ++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/linkdevwidget.cpp b/linkdevwidget.cpp index 4315971..8d89bad 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 740cca2..082e3e9 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); }; -- GitLab