X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=blobdiff_plain;f=src%2Fwidgets%2FTabWidget.cpp;fp=src%2Fwidgets%2FTabWidget.cpp;h=eb82f23d2fed09c49c4739479963ff2aba519fc5;hp=9e843ef306da564f362d7c5e434a0589b7dda21d;hb=6acd73c4148bac2a8c2f637e70080a43b12fd14e;hpb=8689d74c8a97cbeb81b69bed8e195ed68bca2ee1 diff --git a/src/widgets/TabWidget.cpp b/src/widgets/TabWidget.cpp index 9e843ef..eb82f23 100644 --- a/src/widgets/TabWidget.cpp +++ b/src/widgets/TabWidget.cpp @@ -166,12 +166,55 @@ PrivacyWebEngineView* TabWidget::addTab(const bool focusNewWebEngineView) QWebEngineSettings *webEngineSettingsPointer = webEnginePagePointer->settings(); // Update the URL line edit when the URL changes. - connect(privacyWebEngineViewPointer, SIGNAL(urlChanged(const QUrl)), this, SLOT(updateUrl(const QUrl))); + connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::urlChanged, [privacyWebEngineViewPointer, this] (const QUrl &newUrl) + { + // Only update the UI if this is the current tab. + if (privacyWebEngineViewPointer == currentPrivacyWebEngineViewPointer) + { + // Update the URL line edit. + emit updateUrlLineEdit(newUrl); - // Update the progress bar. - connect(privacyWebEngineViewPointer, SIGNAL(loadStarted()), this, SLOT(loadStarted())); - connect(privacyWebEngineViewPointer, SIGNAL(loadProgress(const int)), this, SLOT(loadProgress(const int))); - connect(privacyWebEngineViewPointer, SIGNAL(loadFinished(const bool)), this, SLOT(loadFinished())); + // Update the status of the forward and back buttons. + emit updateBackAction(currentWebEngineHistoryPointer->canGoBack()); + emit updateForwardAction(currentWebEngineHistoryPointer->canGoForward()); + } + + // Reapply the zoom factor. This is a bug in QWebEngineView that resets the zoom with every load. It can be removed once is fixed. + privacyWebEngineViewPointer->setZoomFactor(currentZoomFactor); + }); + + // Update the progress bar when a load is started. + connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::loadStarted, [privacyWebEngineViewPointer, this] () + { + // Store the load progress. + privacyWebEngineViewPointer->loadProgressInt = 0; + + // Show the progress bar if this is the current tab. + if (privacyWebEngineViewPointer == currentPrivacyWebEngineViewPointer) + emit showProgressBar(0); + }); + + // Update the progress bar when a load progresses. + connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::loadProgress, [privacyWebEngineViewPointer, this] (const int progress) + { + // Store the load progress. + privacyWebEngineViewPointer->loadProgressInt = progress; + + // Update the progress bar if this is the current tab. + if (privacyWebEngineViewPointer == currentPrivacyWebEngineViewPointer) + emit showProgressBar(progress); + }); + + // Update the progress bar when a load finishes. + connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::loadFinished, [privacyWebEngineViewPointer, this] () + { + // Store the load progress. + privacyWebEngineViewPointer->loadProgressInt = -1; + + // Hide the progress bar if this is the current tab. + if (privacyWebEngineViewPointer == currentPrivacyWebEngineViewPointer) + emit hideProgressBar(); + }); // Handle full screen requests. connect(webEnginePagePointer, SIGNAL(fullScreenRequested(QWebEngineFullScreenRequest)), this, SLOT(fullScreenRequested(QWebEngineFullScreenRequest))); @@ -236,16 +279,13 @@ PrivacyWebEngineView* TabWidget::addTab(const bool focusNewWebEngineView) // Limit WebRTC to public IP addresses. webEngineSettingsPointer->setAttribute(QWebEngineSettings::WebRTCPublicInterfacesOnly, true); - // Define an update cookie count lambda. - auto updateCookieCount = [privacyWebEngineViewPointer, this] (const int numberOfCookies) + // Update the cookies action. + connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::updateCookiesAction, [privacyWebEngineViewPointer, this] (const int numberOfCookies) { // Update the cookie action if the specified privacy WebEngine view is the current privacy WebEngine view. if (privacyWebEngineViewPointer == currentPrivacyWebEngineViewPointer) emit updateCookiesAction(numberOfCookies); - }; - - // Update the cookies action. - connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::updateCookiesAction, this, updateCookieCount); + }); // Process cookie changes. connect(webEngineCookieStorePointer, SIGNAL(cookieAdded(QNetworkCookie)), privacyWebEngineViewPointer, SLOT(addCookieToList(QNetworkCookie))); @@ -258,21 +298,22 @@ PrivacyWebEngineView* TabWidget::addTab(const bool focusNewWebEngineView) for (QNetworkCookie *cookiePointer : *durableCookiesListPointer) addCookieToStore(*cookiePointer, webEngineCookieStorePointer); - // Define an update tab title lambda. - auto updateTabTitle = [privacyWebEngineViewPointer, this] (const QString &title) + // Update the title when it changes. + connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::titleChanged, [this, privacyWebEngineViewPointer] (const QString &title) { // Get the index for this tab. int tabIndex = tabWidgetPointer->indexOf(privacyWebEngineViewPointer); // Update the title for this tab. tabWidgetPointer->setTabText(tabIndex, title); - }; - // Update the title when it changes. - connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::titleChanged, this, updateTabTitle); + // Update the window title if this is the current tab. + if (tabIndex == tabWidgetPointer->currentIndex()) + emit updateWindowTitle(title); + }); - // Define an update tab icon lambda. - auto updateTabIcon = [privacyWebEngineViewPointer, this] (const QIcon &icon) + // Update the icon when it changes. + connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::iconChanged, [privacyWebEngineViewPointer, this] (const QIcon &icon) { // Get the index for this tab. int tabIndex = tabWidgetPointer->indexOf(privacyWebEngineViewPointer); @@ -282,10 +323,7 @@ PrivacyWebEngineView* TabWidget::addTab(const bool focusNewWebEngineView) tabWidgetPointer->setTabIcon(tabIndex, defaultTabIcon); else tabWidgetPointer->setTabIcon(tabIndex, icon); - }; - - // Update the icon when it changes. - connect(privacyWebEngineViewPointer, &PrivacyWebEngineView::iconChanged, this, updateTabIcon); + }); // Move to the new tab. tabWidgetPointer->setCurrentIndex(newTabIndex); @@ -601,10 +639,13 @@ void TabWidget::home() const currentPrivacyWebEngineViewPointer->load(QUrl::fromUserInput(Settings::homepage())); } -void TabWidget::loadFinished() const +PrivacyWebEngineView* TabWidget::loadBlankInitialWebsite() { - // Hide the progress bar. - emit hideProgressBar(); + // Apply the application settings. + applyApplicationSettings(); + + // Return the current privacy WebEngine view pointer. + return currentPrivacyWebEngineViewPointer; } void TabWidget::loadInitialWebsite() @@ -628,18 +669,6 @@ void TabWidget::loadInitialWebsite() } } -void TabWidget::loadProgress(const int &progress) const -{ - // Show the progress bar. - emit showProgressBar(progress); -} - -void TabWidget::loadStarted() const -{ - // Show the progress bar. - emit showProgressBar(0); -} - void TabWidget::loadUrlFromLineEdit(QString url) const { // Decide if the text is more likely to be a URL or a search. @@ -870,25 +899,21 @@ void TabWidget::updateUiWithTabSettings() emit clearUrlLineEditFocus(); // Update the UI. + emit updateBackAction(currentWebEngineHistoryPointer->canGoBack()); + emit updateCookiesAction(currentPrivacyWebEngineViewPointer->cookieListPointer->size()); emit updateDomainSettingsIndicator(currentPrivacyWebEngineViewPointer->domainSettingsName != QStringLiteral("")); + emit updateDomStorageAction(currentWebEngineSettingsPointer->testAttribute(QWebEngineSettings::LocalStorageEnabled)); + emit updateForwardAction(currentWebEngineHistoryPointer->canGoForward()); emit updateJavaScriptAction(currentWebEngineSettingsPointer->testAttribute(QWebEngineSettings::JavascriptEnabled)); emit updateLocalStorageAction(currentPrivacyWebEngineViewPointer->localStorageEnabled); - emit updateDomStorageAction(currentWebEngineSettingsPointer->testAttribute(QWebEngineSettings::LocalStorageEnabled)); + emit updateWindowTitle(currentPrivacyWebEngineViewPointer->title()); + emit updateUrlLineEdit(currentPrivacyWebEngineViewPointer->url()); emit updateUserAgentActions(currentWebEngineProfilePointer->httpUserAgent(), true); emit updateZoomFactorAction(currentPrivacyWebEngineViewPointer->zoomFactor()); - emit updateUrlLineEdit(currentPrivacyWebEngineViewPointer->url()); - emit updateCookiesAction(currentPrivacyWebEngineViewPointer->cookieListPointer->size()); -} -void TabWidget::updateUrl(const QUrl &url) const -{ - // Update the URL line edit. - emit updateUrlLineEdit(url); - - // Update the status of the forward and back buttons. - emit updateBackAction(currentWebEngineHistoryPointer->canGoBack()); - emit updateForwardAction(currentWebEngineHistoryPointer->canGoForward()); - - // Reapply the zoom factor. This is a bug in QWebEngineView that resets the zoom with every load. - currentPrivacyWebEngineViewPointer->setZoomFactor(currentZoomFactor); + // Update the progress bar. + if (currentPrivacyWebEngineViewPointer->loadProgressInt >= 0) + emit showProgressBar(currentPrivacyWebEngineViewPointer->loadProgressInt); + else + emit hideProgressBar(); }