From c635094a6bdfcf2f081eb3c0ed9a1454ae2933fb Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Sat, 9 Jan 2021 15:55:52 +1100 Subject: 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 --- src/mainwindow.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) (limited to 'src/mainwindow.cpp') 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(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(); -- cgit v1.2.3