From: Soren Stoutner Date: Wed, 30 Mar 2022 23:25:09 +0000 (-0700) Subject: Add a progress bar. X-Git-Tag: v0.1~44 X-Git-Url: https://gitweb.stoutner.com/?a=commitdiff_plain;h=9514cabb5648123b68264e595e9ffef6261bd215;p=PrivacyBrowserPC.git Add a progress bar. --- diff --git a/src/BrowserView.ui b/src/BrowserView.ui index 9d7a535..11219fa 100644 --- a/src/BrowserView.ui +++ b/src/BrowserView.ui @@ -20,9 +20,9 @@ BrowserView - + - + diff --git a/src/views/BrowserView.cpp b/src/views/BrowserView.cpp index d190dbe..21e1493 100644 --- a/src/views/BrowserView.cpp +++ b/src/views/BrowserView.cpp @@ -49,10 +49,13 @@ BrowserView::BrowserView(QWidget *parent) : QWidget(parent) webEngineProfilePointer = webEnginePagePointer->profile(); webEngineSettingsPointer = webEngineViewPointer->settings(); - // Update the URL line edit from the webengine view. - connect(webEngineViewPointer, SIGNAL(loadStarted()), this, SLOT(updateInterface())); - connect(webEngineViewPointer, SIGNAL(loadProgress(const int)), this, SLOT(updateInterface())); - connect(webEngineViewPointer, SIGNAL(loadFinished(const bool)), this, SLOT(updateInterface())); + // Update the URL line edit when the URL changes. + connect(webEngineViewPointer, SIGNAL(urlChanged(const QUrl)), this, SLOT(updateUrl(const QUrl))); + + // Update the progress bar. + connect(webEngineViewPointer, SIGNAL(loadStarted()), this, SLOT(loadStarted())); + connect(webEngineViewPointer, SIGNAL(loadProgress(const int)), this, SLOT(loadProgress(const int))); + connect(webEngineViewPointer, SIGNAL(loadFinished(const bool)), this, SLOT(loadFinished())); // Instantiate the mouse event filter pointer. MouseEventFilter *mouseEventFilterPointer = new MouseEventFilter(webEngineViewPointer); @@ -99,8 +102,8 @@ void BrowserView::applyApplicationSettings() // Set the search engine URL. searchEngineUrl = SearchEngineHelper::getSearchUrl(Settings::searchEngine()); - // Emit the search engine updated signal, which causes the on-the-fly menu to be updated. - emit searchEngineUpdated(Settings::searchEngine()); + // Emit the update search engine actions signal. + emit updateSearchEngineActions(Settings::searchEngine()); } // This exists as a separate function from `applyDomainSettings()` so it can be listed as a slot and function without the need for a boolean argument. @@ -198,10 +201,10 @@ void BrowserView::applyDomainSettings(const QString &hostname, const bool reload emit updateDomainSettingsIndicator(false); } - // Emit the on-the-fly menu update signals. + // Emit the update actions signals. emit updateJavaScriptAction(webEngineSettingsPointer->testAttribute(QWebEngineSettings::JavascriptEnabled)); - emit userAgentUpdated(webEngineProfilePointer->httpUserAgent()); - emit zoomFactorUpdated(Settings::zoomFactor()); + emit updateUserAgentActions(webEngineProfilePointer->httpUserAgent()); + emit updateZoomFactorAction(webEngineViewPointer->zoomFactor()); // Reload the website if requested. if (reloadWebsite) @@ -265,6 +268,12 @@ void BrowserView::home() const webEngineViewPointer->load(QUrl::fromUserInput(Settings::homepage())); } +void BrowserView::loadFinished() const +{ + // Hide the progress bar. + emit hideProgressBar(); +} + void BrowserView::loadInitialWebsite() { // Apply the application settings. @@ -286,6 +295,18 @@ void BrowserView::loadInitialWebsite() } } +void BrowserView::loadProgress(const int &progress) const +{ + // Show the progress bar. + emit showProgressBar(progress); +} + +void BrowserView::loadStarted() const +{ + // Show the progress bar. + emit showProgressBar(0); +} + void BrowserView::loadUrlFromLineEdit(QString url) const { // Decide if the text is more likely to be a URL or a search. @@ -337,10 +358,10 @@ void BrowserView::toggleJavaScript() const webEngineViewPointer->reload(); } -void BrowserView::updateInterface() const +void BrowserView::updateUrl(const QUrl &url) const { // Update the URL line edit. - emit updateUrlLineEdit(webEngineViewPointer->url().toString()); + emit updateUrlLineEdit(url.toString()); // Update the status of the forward and back buttons. emit updateBackAction(webEngineHistoryPointer->canGoBack()); diff --git a/src/views/BrowserView.h b/src/views/BrowserView.h index 6088a63..143db41 100644 --- a/src/views/BrowserView.h +++ b/src/views/BrowserView.h @@ -20,15 +20,15 @@ #ifndef BROWSERVIEW_H #define BROWSERVIEW_H +// KDE Framework headers. +#include + // Qt framework headers. #include #include #include #include -// KDE Framework headers. -#include - class BrowserView : public QWidget { // Include the Q_OBJECT macro. @@ -44,15 +44,17 @@ public: signals: // The signals. + void hideProgressBar() const; void linkHovered(const QString &linkUrl) const; - void userAgentUpdated(const QString &userAgent) const; // TODO. Possibly rename. - void searchEngineUpdated(const QString &searchEngine) const; //TODO. Possibly rename. + void showProgressBar(const int &progress) const; void updateBackAction(const bool &isEnabled) const; void updateDomainSettingsIndicator(const bool status) const; void updateForwardAction(const bool &isEnabled) const; void updateJavaScriptAction(const bool &isEnabled) const; + void updateSearchEngineActions(const QString &searchEngine) const; void updateUrlLineEdit(const QString &newUrl) const; - void zoomFactorUpdated(const double &zoomFactor) const; //TODO. Possibly rename. + void updateUserAgentActions(const QString &userAgent) const; + void updateZoomFactorAction(const double &zoomFactor) const; public Q_SLOTS: // The public slots. @@ -70,8 +72,11 @@ public Q_SLOTS: private Q_SLOTS: // The private slots. + void loadFinished() const; + void loadProgress(const int &progress) const; + void loadStarted() const; void pageLinkHovered(const QString &linkUrl) const; - void updateInterface() const; + void updateUrl(const QUrl &url) const; private: // The private variables. diff --git a/src/windows/BrowserWindow.cpp b/src/windows/BrowserWindow.cpp index 2d64794..03ababc 100644 --- a/src/windows/BrowserWindow.cpp +++ b/src/windows/BrowserWindow.cpp @@ -149,9 +149,9 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow() domainSettingsActionPointer->setIcon(QIcon::fromTheme(QStringLiteral("network-server-symbolic"))); // Update the on-the-fly menus. - connect(browserViewPointer, SIGNAL(userAgentUpdated(QString)), this, SLOT(updateOnTheFlyUserAgent(QString))); - connect(browserViewPointer, SIGNAL(zoomFactorUpdated(double)), this, SLOT(updateOnTheFlyZoomFactor(double))); - connect(browserViewPointer, SIGNAL(searchEngineUpdated(QString)), this, SLOT(updateOnTheFlySearchEngine(QString))); + connect(browserViewPointer, SIGNAL(updateUserAgentActions(QString)), this, SLOT(updateUserAgentActions(QString))); + connect(browserViewPointer, SIGNAL(updateZoomFactorAction(double)), this, SLOT(updateZoomFactorAction(double))); + connect(browserViewPointer, SIGNAL(updateSearchEngineActions(QString)), this, SLOT(updateSearchEngineActions(QString))); // Apply the on-the-fly settings when selected. connect(userAgentActionGroupPointer, SIGNAL(triggered(QAction*)), browserViewPointer, SLOT(applyOnTheFlyUserAgent(QAction*))); @@ -192,9 +192,19 @@ BrowserWindow::BrowserWindow() : KXmlGuiWindow() // Get a handle for the status bar. QStatusBar *statusBarPointer = statusBar(); + // Create a progress bar. + progressBarPointer = new QProgressBar(); + + // Add the progress bar to to the status bar. + statusBarPointer->addPermanentWidget(progressBarPointer); + // Update the status bar with the URL when a link is hovered. connect(browserViewPointer, SIGNAL(linkHovered(QString)), statusBarPointer, SLOT(showMessage(QString))); + // Update the progress bar. + connect(browserViewPointer, SIGNAL(showProgressBar(const int)), this, SLOT(showProgressBar(const int))); + connect(browserViewPointer, SIGNAL(hideProgressBar()), progressBarPointer, SLOT(hide())); + // Get the URL line edit palettes. noDomainSettingsPalette = urlLineEditPointer->palette(); domainSettingsPalette = urlLineEditPointer->palette(); @@ -253,7 +263,7 @@ void BrowserWindow::getZoomFactorFromUser() browserViewPointer->applyOnTheFlyZoomFactor(newZoomFactor); // Update the on-the-fly action text. - updateOnTheFlyZoomFactor(newZoomFactor); + updateZoomFactorAction(newZoomFactor); } } @@ -305,6 +315,15 @@ void BrowserWindow::refresh() const browserViewPointer->refresh(); } +void BrowserWindow::showProgressBar(const int &progress) const +{ + // Set the progress bar value. + progressBarPointer->setValue(progress); + + // Show the progress bar. + progressBarPointer->show(); +} + void BrowserWindow::toggleJavaScript() const { // Remove the focus from the URL line edit. @@ -409,7 +428,7 @@ void BrowserWindow::updateJavaScriptAction(const bool &isEnabled) const else javaScriptActionPointer->setIcon(QIcon(":/icons/privacy-mode")); } -void BrowserWindow::updateOnTheFlySearchEngine(const QString &searchEngine) const +void BrowserWindow::updateSearchEngineActions(const QString &searchEngine) const { // Initialize the custom search engine flag. bool customSearchEngine = false; @@ -466,7 +485,7 @@ void BrowserWindow::updateOnTheFlySearchEngine(const QString &searchEngine) cons } } -void BrowserWindow::updateOnTheFlyUserAgent(const QString &userAgent) const +void BrowserWindow::updateUserAgentActions(const QString &userAgent) const { // Initialize the custom user agent flag. bool customUserAgent = false; @@ -508,7 +527,7 @@ void BrowserWindow::updateOnTheFlyUserAgent(const QString &userAgent) const } } -void BrowserWindow::updateOnTheFlyZoomFactor(const double &zoomFactor) +void BrowserWindow::updateZoomFactorAction(const double &zoomFactor) { // Set the current zoom factor. currentZoomFactor = zoomFactor; diff --git a/src/windows/BrowserWindow.h b/src/windows/BrowserWindow.h index 4099d8d..02978d4 100644 --- a/src/windows/BrowserWindow.h +++ b/src/windows/BrowserWindow.h @@ -29,6 +29,7 @@ // Qt toolkit headers. #include +#include class BrowserWindow : public KXmlGuiWindow { @@ -53,12 +54,13 @@ private Q_SLOTS: void openDomainSettings() const; void refresh() const; void settingsConfigure(); + void showProgressBar(const int &progress) const; void toggleJavaScript() const; void updateDomainSettingsIndicator(const bool &status) const; void updateJavaScriptAction(const bool &isEnabled) const; - void updateOnTheFlySearchEngine(const QString &searchEngine) const; - void updateOnTheFlyUserAgent(const QString &userAgent) const; - void updateOnTheFlyZoomFactor(const double &zoomFactor); + void updateSearchEngineActions(const QString &searchEngine) const; + void updateUserAgentActions(const QString &userAgent) const; + void updateZoomFactorAction(const double &zoomFactor); void updateSearchEngineLabel(const QString &searchEngineString) const; void updateUrlLineEdit(const QString &newUrl) const; void updateUserAgentLabel(const QString &userAgentDatabaseName) const; @@ -72,6 +74,7 @@ private: double currentZoomFactor; QAction *javaScriptActionPointer; QPalette noDomainSettingsPalette; + QProgressBar *progressBarPointer; QLabel *searchEngineLabelPointer; QAction *searchEngineMojeekActionPointer; QAction *searchEngineMonoclesActionPointer;