aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-01-09 15:55:52 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-01-10 13:40:46 +0100
commitc635094a6bdfcf2f081eb3c0ed9a1454ae2933fb (patch)
treeb41aca9c2803ad3acbe89c027b340b15ac473eee /src/mainwindow.cpp
parentdd3e8716b276f9f1646338f8801ca9a2f688fc46 (diff)
downloadkristall-c635094a6bdfcf2f081eb3c0ed9a1454ae2933fb.tar.gz
status bar: show request status when loading pages
status text for loading HTTP/S is only a simple 'loading webpage'. The other protocols display more information
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp57
1 files changed, 55 insertions, 2 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 26f49ec..0bc4d90 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -105,6 +105,7 @@ BrowserTab * MainWindow::addEmptyTab(bool focus_new, bool load_default)
connect(tab, &BrowserTab::titleChanged, this, &MainWindow::on_tab_titleChanged);
connect(tab, &BrowserTab::fileLoaded, this, &MainWindow::on_tab_fileLoaded);
+ connect(tab, &BrowserTab::requestStateChanged, this, &MainWindow::on_tab_requestStateChanged);
int index = this->ui->browser_tabs->addTab(tab, "Page");
@@ -147,11 +148,47 @@ void MainWindow::setUrlPreview(const QUrl &url)
if(str.length() > 300) {
str = str.mid(0, 300) + "...";
}
+ this->previewing_url = true;
this->url_status->setText(str);
+ return;
}
- else {
- this->url_status->setText("");
+
+ this->previewing_url = false;
+ this->url_status->setText(this->request_status);
+}
+
+void MainWindow::setRequestState(RequestState state)
+{
+ switch (state)
+ {
+ case RequestState::Started:
+ {
+ this->request_status = "Looking up...";
+ } break;
+
+ case RequestState::StartedWeb:
+ {
+ this->request_status = "Loading webpage...";
+ } break;
+
+ case RequestState::HostFound:
+ {
+ this->request_status = "Connecting...";
+ } break;
+
+ case RequestState::Connected:
+ {
+ this->request_status = "Downloading...";
+ } break;
+
+ default:
+ {
+ this->request_status = "";
+ } break;
}
+
+ if (!this->previewing_url)
+ this->url_status->setText(this->request_status);
}
void MainWindow::viewPageSource()
@@ -247,15 +284,19 @@ void MainWindow::on_browser_tabs_currentChanged(int index)
{
tab->refreshFavButton();
}
+
+ this->setRequestState(tab->request_state);
} else {
this->ui->outline_view->setModel(nullptr);
this->ui->history_view->setModel(nullptr);
this->setFileStatus(DocumentStats { });
+ this->setRequestState(RequestState::None);
}
} else {
this->ui->outline_view->setModel(nullptr);
this->ui->history_view->setModel(nullptr);
this->setFileStatus(DocumentStats { });
+ this->setRequestState(RequestState::None);
}
updateWindowTitle();
}
@@ -487,6 +528,18 @@ void MainWindow::on_tab_fileLoaded(DocumentStats const & stats)
}
}
+void MainWindow::on_tab_requestStateChanged(RequestState state)
+{
+ auto * tab = qobject_cast<BrowserTab*>(sender());
+ if(tab != nullptr) {
+ int index = this->ui->browser_tabs->indexOf(tab);
+ assert(index >= 0);
+ if(index == this->ui->browser_tabs->currentIndex()) {
+ setRequestState(state);
+ }
+ }
+}
+
void MainWindow::on_focus_inputbar()
{
BrowserTab * tab = this->curTab();