summaryrefslogtreecommitdiffstats
path: root/src/slxbrowser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/slxbrowser.cpp')
-rw-r--r--src/slxbrowser.cpp50
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)