<ui version="4.0">
<class>BrowserView</class>
-
+ <!-- Main widget. -->
<widget class="QWidget" name="BrowserView">
- <!-- Main widget. -->
+ <!-- Main layout. -->
<layout class="QVBoxLayout">
<!-- Set the spacing between items to 0. -->
<property name="spacing">
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);
// 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.
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)
webEngineViewPointer->load(QUrl::fromUserInput(Settings::homepage()));
}
+void BrowserView::loadFinished() const
+{
+ // Hide the progress bar.
+ emit hideProgressBar();
+}
+
void BrowserView::loadInitialWebsite()
{
// Apply the application settings.
}
}
+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.
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());
#ifndef BROWSERVIEW_H
#define BROWSERVIEW_H
+// KDE Framework headers.
+#include <KLineEdit>
+
// Qt framework headers.
#include <QPushButton>
#include <QWebEngineHistory>
#include <QWebEngineSettings>
#include <QWebEngineView>
-// KDE Framework headers.
-#include <KLineEdit>
-
class BrowserView : public QWidget
{
// Include the Q_OBJECT macro.
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.
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.
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*)));
// 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();
browserViewPointer->applyOnTheFlyZoomFactor(newZoomFactor);
// Update the on-the-fly action text.
- updateOnTheFlyZoomFactor(newZoomFactor);
+ updateZoomFactorAction(newZoomFactor);
}
}
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.
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;
}
}
-void BrowserWindow::updateOnTheFlyUserAgent(const QString &userAgent) const
+void BrowserWindow::updateUserAgentActions(const QString &userAgent) const
{
// Initialize the custom user agent flag.
bool customUserAgent = false;
}
}
-void BrowserWindow::updateOnTheFlyZoomFactor(const double &zoomFactor)
+void BrowserWindow::updateZoomFactorAction(const double &zoomFactor)
{
// Set the current zoom factor.
currentZoomFactor = zoomFactor;
// Qt toolkit headers.
#include <QLabel>
+#include <QProgressBar>
class BrowserWindow : public KXmlGuiWindow
{
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;
double currentZoomFactor;
QAction *javaScriptActionPointer;
QPalette noDomainSettingsPalette;
+ QProgressBar *progressBarPointer;
QLabel *searchEngineLabelPointer;
QAction *searchEngineMojeekActionPointer;
QAction *searchEngineMonoclesActionPointer;