diff options
Diffstat (limited to 'src/slxbrowser.cpp')
-rw-r--r-- | src/slxbrowser.cpp | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/src/slxbrowser.cpp b/src/slxbrowser.cpp index 1fe179f..13ed326 100644 --- a/src/slxbrowser.cpp +++ b/src/slxbrowser.cpp @@ -15,7 +15,10 @@ SlxBrowser::SlxBrowser(BrowserSettings settings) _settings(settings), _unsupportedUri(false), _blockedSite(false), - _lastPageLoad(0) + _lastPageLoad(0), + _activity(false), + _lastActivity(0), + _pageValid(false) { _settings.reloadInterval *= 1000; if (_settings.fullscreen) { @@ -69,9 +72,10 @@ SlxBrowser::~SlxBrowser() void SlxBrowser::loadStarted() { + _pageValid = false; _reset.stop(); if (_settings.reloadInterval > 0) { - _reset.start(_settings.reloadInterval + 10000); + _reset.start(_settings.reloadInterval + 5000); } _normalError.clear(); _sslErrors.clear(); @@ -83,8 +87,8 @@ void SlxBrowser::loadFinished(bool ok) { _progress->hide(); qint64 now = QDateTime::currentMSecsSinceEpoch(); - if (!_browser->wasAbortedDownload() && !ok) { - + bool abortedDl = _browser->wasAbortedDownload(); + if (!abortedDl && !ok) { if (_unsupportedUri) { QMessageBox::warning(this, QString::fromUtf8("Denied"), QString::fromUtf8("This URL type is not supported.\n\n" @@ -101,13 +105,6 @@ void SlxBrowser::loadFinished(bool ok) QString::fromUtf8("Target URL not allowed.\n\n" "Dieser Link führt auf eine nicht erlaubte Seite.")); }); - /* - _browser->page()->mainFrame()->setHtml("<html><body style='background:white;color:black'><br><br>" - "<center><h1>Zugriff verweigert</h1>" - "<p>Diese URL wurde gefiltert.<br>" - "<a href='javascript:window.history.back()'>Zurück</a></p></center>" - "</body></html>"); - */ } else { _browser->page()->mainFrame()->setHtml("<html><body style='background:blue;color:white'><br><br>" "<center><h1>Page Load Error</h1><pre id='content'></pre></center>" @@ -128,12 +125,20 @@ void SlxBrowser::loadFinished(bool ok) } str.append("\n\n\n\n" + QDateTime::currentDateTime().toString()); el.setPlainText(str); + _pageValid = false; + if (_settings.reloadInterval > 0) { + _reset.start(qMin(30000, _settings.reloadInterval)); + } else { + _reset.start(30000); + } } _sslErrors.clear(); _normalError.clear(); - _reset.start(qMin(30000, _settings.reloadInterval > 0 ? _settings.reloadInterval : 30000)); - } else if (_settings.reloadInterval > 0) { - _reset.start(_settings.reloadInterval); + } else { + _pageValid = true; + if (_settings.reloadInterval > 0) { + _reset.start(qMax(_settings.reloadInterval / 20, 1000)); + } } _unsupportedUri = false; @@ -169,7 +174,22 @@ void SlxBrowser::requestFinished(QNetworkReply *reply) void SlxBrowser::reloadInitial() { - _browser->page()->mainFrame()->load(_settings.url); + if (_pageValid) { + if (_activity) { + _lastActivity = QDateTime::currentMSecsSinceEpoch(); + _activity = false; + _reset.start(qMax(_settings.reloadInterval / 20, 1000)); + return; + } + qint64 now = QDateTime::currentMSecsSinceEpoch(); + if (now - qMax(_lastActivity, _lastPageLoad) > _settings.reloadInterval) { + _browser->page()->mainFrame()->load(_settings.url); + } else { + _reset.start(qMax(_settings.reloadInterval / 20, 1000)); + } + } else { + _browser->page()->mainFrame()->load(_settings.url); + } } static QRegularExpression urlListToRegExp(const QStringList &list) |