diff --git a/sources/extsysmon/extquotes.cpp b/sources/extsysmon/extquotes.cpp index 126f656..5a2b882 100644 --- a/sources/extsysmon/extquotes.cpp +++ b/sources/extsysmon/extquotes.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -243,7 +242,8 @@ QMap ExtQuotes::run() QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(quotesReplyReceived(QNetworkReply *))); - manager->get(QNetworkRequest(QUrl(url()))); + QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url()))); + new QReplyTimeout(reply, 1000); } // update value diff --git a/sources/extsysmon/extquotes.h b/sources/extsysmon/extquotes.h index 1dea918..7f16e92 100644 --- a/sources/extsysmon/extquotes.h +++ b/sources/extsysmon/extquotes.h @@ -20,11 +20,29 @@ #include #include +#include +#include #define YAHOO_URL "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol=\"$TICKER\"&env=store://datatables.org/alltableswithkeys&format=json" -class QNetworkReply; +class QReplyTimeout : public QObject +{ + Q_OBJECT + +public: + QReplyTimeout(QNetworkReply *reply, const int timeout) : QObject(reply) + { + QTimer::singleShot(timeout, this, SLOT(timeout())); + } + +private slots: + void timeout() + { + QNetworkReply *reply = static_cast(parent()); + if (reply->isRunning()) reply->close(); + } +}; namespace Ui { class ExtQuotes;