]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/commitdiff
Update the domains database in all windows when it changes. https://redmine.stoutner...
authorSoren Stoutner <soren@stoutner.com>
Sun, 3 Nov 2024 03:29:52 +0000 (20:29 -0700)
committerSoren Stoutner <soren@stoutner.com>
Sun, 3 Nov 2024 03:29:52 +0000 (20:29 -0700)
src/interceptors/UrlRequestInterceptor.cpp
src/widgets/PrivacyWebEngineView.cpp
src/widgets/TabWidget.cpp
src/windows/BrowserWindow.cpp
src/windows/BrowserWindow.h

index 0a8c04fe47b1717ca7555d93c20410c930249f53..251ef76e2bccee4eac9734f28a04b38c466736b9 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser PC.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser PC.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 // Application headers.
index ac543fadd9aa0f5924ac5ef5123ceb3a63d08d1f..fd6f897c2fb2443b17d46b96f03fe30400d99ff6 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser PC.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser PC.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 // Application headers.
index 173296b767d9a18be463e407fc2d7c283fc9c876..7caccb12d29f26984bc20be8a757e91579e9ae4f 100644 (file)
@@ -543,7 +543,7 @@ void TabWidget::applyDomainSettingsAndReload()
         // Get the WebEngine view pointer.
         PrivacyWebEngineView *privacyWebEngineViewPointer = qTabWidgetPointer->widget(i)->findChild<PrivacyWebEngineView *>();
 
-        // Apply the spatial navigation settings to each page.
+        // Apply the domain settings settings to each page.
         privacyWebEngineViewPointer->applyDomainSettings(privacyWebEngineViewPointer->url().host(), true);
     }
 }
index bde4ccb5b8995225776286826c3c9dfd853fc79b..66196cad006f28c0a559b48518ddd740aea718b1 100644 (file)
@@ -861,7 +861,7 @@ void BrowserWindow::addOrEditDomainSettings()
     urlLineEditPointer->clearFocus();
 
     // Get the current domain settings name.
-    QString &currentDomainSettingsName = tabWidgetPointer->getDomainSettingsName();
+    QString currentDomainSettingsName = tabWidgetPointer->getDomainSettingsName();
 
     // Run the commands according to the current domain settings status.
     if (currentDomainSettingsName == QStringLiteral(""))  // Domain settings are not currently applied.
@@ -896,24 +896,39 @@ void BrowserWindow::addOrEditDomainSettings()
         if (abs(currentZoomFactorDouble - defaultZoomFactorDouble ) > 0.01)
             zoomFactorInt = DomainsDatabase::CUSTOM;
 
+        // Update the current domain settings name.
+        currentDomainSettingsName = currentUrl.host();
+
         // Add the domain.
-        DomainsDatabase::addDomain(currentUrl.host(), javaScriptInt, localStorageInt, domStorageInt, userAgentDatabaseString, ultraPrivacyInt, ultraListInt, easyPrivacyInt, easyListInt,
+        DomainsDatabase::addDomain(currentDomainSettingsName, javaScriptInt, localStorageInt, domStorageInt, userAgentDatabaseString, ultraPrivacyInt, ultraListInt, easyPrivacyInt, easyListInt,
                                    fanboysAnnoyanceListInt, zoomFactorInt, currentZoomFactorDouble);
 
-        // Apply the domain settings.
-        tabWidgetPointer->applyDomainSettingsAndReload();
+        // Apply the domain settings in all windows.
+        applyDomainSettingsInAllWindows();
     }
 
     // Create the domain settings dialog pointer.
     DomainSettingsDialog *domainSettingsDialogPointer = new DomainSettingsDialog(this, DomainSettingsDialog::EDIT_DOMAIN, currentDomainSettingsName);
 
-    // Reload the tabs when domain settings are updated.
-    connect(domainSettingsDialogPointer, SIGNAL(domainSettingsUpdated()), tabWidgetPointer, SLOT(applyDomainSettingsAndReload()));
+    // Apply the domain settings in all windows when domain settings are updated.
+    connect(domainSettingsDialogPointer, SIGNAL(domainSettingsUpdated()), this, SLOT(applyDomainSettingsInAllWindows()));
 
     // Show the dialog.
     domainSettingsDialogPointer->show();
 }
 
+void BrowserWindow::applyDomainSettingsInAllWindows() const
+{
+    // Apply the domain settings in all windows.
+    runMethodInAllWindows(QLatin1String("applyDomainSettingsInThisWindow"));
+}
+
+void BrowserWindow::applyDomainSettingsInThisWindow()
+{
+    // Apply domain settings and reload the tabs.
+    tabWidgetPointer->applyDomainSettingsAndReload();
+}
+
 void BrowserWindow::back() const
 {
     // Remove the focus from the URL line edit.
@@ -1175,21 +1190,8 @@ void BrowserWindow::openWithFirefox() const
 
 void BrowserWindow::populateBookmarksInAllWindows() const
 {
-    // Get a list of all the registered service names.
-    QStringList registeredServiceNames = QDBusConnection::sessionBus().interface()->registeredServiceNames().value();
-
-    // Get a list of all the Privacy Browser windows, which will be `com.stoutner.privacybrowser-` with the PID appended.
-    QStringList privacyBrowserServiceNames = registeredServiceNames.filter("com.stoutner.privacybrowser");
-
-    // Repopulate the bookmarks in each window.
-    for (QString privacyBrowserServiceName : privacyBrowserServiceNames)
-    {
-        // Prepare the D-Bus message.
-        QDBusMessage dBusMessage = QDBusMessage::createMethodCall(privacyBrowserServiceName, "/privacybrowser/MainWindow_1", "com.stoutner.privacybrowser.BrowserWindow", "populateBookmarksInThisWindow");
-
-        // Make it so.
-        QDBusConnection::sessionBus().send(dBusMessage);
-    }
+    // Populate the bookmarks in all windows.
+    runMethodInAllWindows(QLatin1String("populateBookmarksInThisWindow"));
 }
 
 void BrowserWindow::populateBookmarksInThisWindow()
@@ -1449,6 +1451,25 @@ void BrowserWindow::restoreUrlText() const
     urlLineEditPointer->setText(tabWidgetPointer->getCurrentTabUrl());
 }
 
+void BrowserWindow::runMethodInAllWindows(const QString &methodString) const
+{
+    // Get a list of all the registered service names.
+    QStringList registeredServiceNames = QDBusConnection::sessionBus().interface()->registeredServiceNames().value();
+
+    // Get a list of all the Privacy Browser windows, which will be `com.stoutner.privacybrowser-` with the PID appended.
+    QStringList privacyBrowserServiceNames = registeredServiceNames.filter("com.stoutner.privacybrowser");
+
+    // Reapply domain settings in each window.
+    for (QString privacyBrowserServiceName : privacyBrowserServiceNames)
+    {
+        // Prepare the D-Bus message.
+        QDBusMessage dBusMessage = QDBusMessage::createMethodCall(privacyBrowserServiceName, "/privacybrowser/MainWindow_1", "com.stoutner.privacybrowser.BrowserWindow", methodString);
+
+        // Make it so.
+        QDBusConnection::sessionBus().send(dBusMessage);
+    }
+}
+
 void BrowserWindow::showBookmarkContextMenu(const QPoint &point)
 {
     // Get the bookmark action.
@@ -1610,7 +1631,7 @@ void BrowserWindow::showDomainSettingsDialog()
     DomainSettingsDialog *domainSettingsDialogPointer = new DomainSettingsDialog(this);
 
     // Reload the tabs when domain settings are updated.
-    connect(domainSettingsDialogPointer, SIGNAL(domainSettingsUpdated()), tabWidgetPointer, SLOT(applyDomainSettingsAndReload()));
+    connect(domainSettingsDialogPointer, SIGNAL(domainSettingsUpdated()), this, SLOT(applyDomainSettingsInAllWindows()));
 
     // Show the dialog.
     domainSettingsDialogPointer->show();
@@ -1691,6 +1712,7 @@ void BrowserWindow::showSettingsDialog()
     // Apply the settings handled by KConfig.
     connect(settingsDialogPointer, SIGNAL(spellCheckLanguagesUpdated()), tabWidgetPointer, SLOT(applySpellCheckLanguages()));
     connect(settingsDialogPointer, SIGNAL(settingsChanged(QString)), tabWidgetPointer, SLOT(applyApplicationSettings()));
+    //connect(settingsDialogPointer, SIGNAL(settingsChanged(QString)), this, SLOT(applyDomainSettingsInAllWindows()));
     connect(settingsDialogPointer, SIGNAL(settingsChanged(QString)), tabWidgetPointer, SLOT(applyDomainSettingsAndReload()));
 }
 
@@ -1856,9 +1878,15 @@ void BrowserWindow::updateRequestsAction(const QVector<int> blockedRequestsVecto
 
     // Update the blocked requests action background color.
     if (blockedRequestsVector[PrivacyWebEngineView::TOTAL] > 0)
-        urlToolBarPointer->setStyleSheet(QLatin1String("QToolButton#blocked_requests { background-color: tomato; }"));
+        urlToolBarPointer->setStyleSheet(QLatin1String("QToolButton#blocked_requests { background-color: tomato; border-radius: 5px; padding: 4px; }"));
     else
         urlToolBarPointer->setStyleSheet(QLatin1String("QToolButton#blocked_requests { background-color: transparent; }"));
+
+    // Restore the domain settings indicator.
+    if (domainSettingsApplied)
+        urlLineEditPointer->setPalette(positiveBackgroundPalette);
+    else
+        urlLineEditPointer->setPalette(normalBackgroundPalette);
 }
 
 void BrowserWindow::updateCookiesAction(const int numberOfCookies) const
@@ -1881,8 +1909,11 @@ void BrowserWindow::updateDomStorageAction(const bool &isEnabled) const
 
 void BrowserWindow::updateDomainSettingsIndicator(const bool status)
 {
+    // Store the domain settings applied status.
+    domainSettingsApplied = status;
+
     // Set the domain palette according to the status.
-    if (status)
+    if (domainSettingsApplied)
         urlLineEditPointer->setPalette(positiveBackgroundPalette);
     else
         urlLineEditPointer->setPalette(normalBackgroundPalette);
index a41226c6e8fc555e19261819396223a14d80687c..eb708f9f8aebb71c690b3c68be8644d43b02f70c 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser PC.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser PC.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 #ifndef BROWSER_WINDOW_H
@@ -52,11 +52,13 @@ public:
 
 public Q_SLOTS:
     // The public slots.
+    void applyDomainSettingsInThisWindow();  // This is public so that the domain settings can be reapplied over D-Bus when changed by another instance of Privacy Browser.
     void populateBookmarksInThisWindow();  // This is public so that the bookmarks can be repopulated over D-Bus when changed by another instance of Privacy Browser.
 
 private Q_SLOTS:
     // The private slots.
     void addOrEditDomainSettings();
+    void applyDomainSettingsInAllWindows() const;
     void back() const;
     void clearUrlLineEditFocus() const;
     void decrementZoom();
@@ -80,6 +82,7 @@ private Q_SLOTS:
     void refresh() const;
     void reloadAndBypassCache() const;
     void restoreUrlText() const;
+    void runMethodInAllWindows(const QString &methodString) const;
     void showBookmarkContextMenu(const QPoint &point);
     void showCookiesDialog();
     void showDomainSettingsDialog();
@@ -139,6 +142,7 @@ private:
     double defaultZoomFactorDouble;
     QAction *developerToolsActionPointer;
     QAction *domStorageActionPointer;
+    bool domainSettingsApplied = false;
     QAction *easyPrivacyActionPointer;
     QAction *easyListActionPointer;
     QAction *fanboysAnnoyanceListPointer;