]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/dialogs/DomainSettingsDialog.cpp
Add a default zoom action. https://redmine.stoutner.com/issues/1044
[PrivacyBrowserPC.git] / src / dialogs / DomainSettingsDialog.cpp
index 34ff70e592bf988a8bdc3eb8d69f617361983ad7..82f0f64b890af85781c3187a5f3ecf7902d04f2a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2022-2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
  *
  *
  * 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/>.
- */
// */
 
 // Application headers.
 #include "DomainSettingsDialog.h"
 #include "Settings.h"
 #include "ui_DomainSettingsDialog.h"
 #include "databases/DomainsDatabase.h"
-#include "helpers/UserAgentHelper.h"
 
 // Qt toolkit headers.
 #include <QInputDialog>
 #include <QMessageBox>
 #include <QPushButton>
+#include <QTimer>
 
 // Define the public static int constants.
 const int DomainSettingsDialog::SHOW_ALL_DOMAINS = 0;
@@ -41,7 +41,10 @@ DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &
     setWindowTitle(i18nc("The domain settings dialog window title", "Domain Settings"));
 
     // Set the window modality.
-    setWindowModality(Qt::WindowModality::ApplicationModal);;
+    setWindowModality(Qt::WindowModality::ApplicationModal);
+
+    // Instantiate the user agent helper.
+    userAgentHelperPointer = new UserAgentHelper();
 
     // Instantiate the domain settings dialog UI.
     Ui::DomainSettingsDialog domainSettingsDialogUi;
@@ -135,6 +138,9 @@ DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &
             // Add the new domain.
             addDomain(domainName);
 
+            // Emit the domain settings updated signal after 100 milliseconds.  This is necessary because the browser window takes time to process the connect command to receive the signal.
+            QTimer::singleShot(100, [this] () { emit domainSettingsUpdated();});
+
             break;
         }
 
@@ -186,6 +192,7 @@ void DomainSettingsDialog::addDomain(const QString &domainName) const
     // Set the values for the new domain.
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::DOMAIN_NAME), domainName);
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::JAVASCRIPT), DomainsDatabase::SYSTEM_DEFAULT);
+    newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::LOCAL_STORAGE), DomainsDatabase::SYSTEM_DEFAULT);
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::DOM_STORAGE), DomainsDatabase::SYSTEM_DEFAULT);
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::USER_AGENT), UserAgentHelper::SYSTEM_DEFAULT_DATABASE);
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::ZOOM_FACTOR), DomainsDatabase::SYSTEM_DEFAULT);
@@ -209,6 +216,9 @@ void DomainSettingsDialog::addDomain(const QString &domainName) const
 
     // Update the UI.
     updateUi();
+
+    // Emit the domain settings updated signal.
+    emit domainSettingsUpdated();
 }
 
 void DomainSettingsDialog::apply() const
@@ -217,13 +227,13 @@ void DomainSettingsDialog::apply() const
     QModelIndex currentIndex = domainsListViewPointer->currentIndex();
 
     // Get the ID of the current index row.
-    QVariant currentId = currentIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::_ID)).data();
+    QVariant currentId = currentIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::ID)).data();
 
     // Submit all pending changes.
     domainsTableModelPointer->submitAll();
 
     // Find the new index for the selected id.  The `1` keeps searching after the first match.
-    QModelIndexList newIndexList = domainsTableModelPointer->match(currentIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::_ID)), Qt::DisplayRole, currentId,
+    QModelIndexList newIndexList = domainsTableModelPointer->match(currentIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::ID)), Qt::DisplayRole, currentId,
                                                                    1, Qt::MatchWrap);
 
     // Select the new index.
@@ -312,11 +322,17 @@ void DomainSettingsDialog::domainSelected(const QModelIndex &modelIndex) const
     {
         // Display the default zoom factor.
         customZoomFactorSpinBoxPointer->setValue(Settings::zoomFactor());
+
+        // Use the default palette.
+        zoomFactorWidgetPointer->setPalette(defaultPalette);
     }
     else  // Custom zoom factor is selected.
     {
         // Display the custom zoom factor from the domain settings.
         customZoomFactorSpinBoxPointer->setValue(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::CUSTOM_ZOOM_FACTOR)).data().toDouble());
+
+        // Use the highlighted palette.
+        zoomFactorWidgetPointer->setPalette(highlightedPalette);
     }
 
     // Set the initial status of the custom zoom factor spin box.
@@ -349,7 +365,7 @@ void DomainSettingsDialog::localStorageChanged(const int &newIndex) const
     // Update the domains table model.
     domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::LOCAL_STORAGE)), newIndex);
 
-    // Poplate the local storage label.
+    // Populate the local storage label.
     populateLocalStorageLabel();
 
     // Update the UI.
@@ -362,7 +378,7 @@ void DomainSettingsDialog::ok()
     domainsTableModelPointer->submitAll();
 
     // Emit the domain settings updated signal.
-    domainSettingsUpdated();
+    emit domainSettingsUpdated();
 
     // Close the dialog.
     accept();
@@ -387,10 +403,10 @@ void DomainSettingsDialog::populateDomStorageLabel() const
             break;
         }
 
-        case (DomainsDatabase::DISABLED):
+        case (DomainsDatabase::ENABLED):
         {
-            // Set the disabled text in bold.
-            domStorageLabelPointer->setText(i18nc("Domain settings DOM storage label.  The <b> tags should be retained.", "<b>DOM storage disabled</b>"));
+            // Set the enabled text in bold.
+            domStorageLabelPointer->setText(i18nc("Domain settings DOM storage label.  The <b> tags should be retained.", "<b>DOM storage enabled</b>"));
 
             // Set the palette.
             domStorageWidgetPointer->setPalette(highlightedPalette);
@@ -398,10 +414,10 @@ void DomainSettingsDialog::populateDomStorageLabel() const
             break;
         }
 
-        case (DomainsDatabase::ENABLED):
+        case (DomainsDatabase::DISABLED):
         {
-            // Set the enabled text in bold.
-            domStorageLabelPointer->setText(i18nc("Domain settings DOM storage label.  The <b> tags should be retained.", "<b>DOM storage enabled</b>"));
+            // Set the disabled text in bold.
+            domStorageLabelPointer->setText(i18nc("Domain settings DOM storage label.  The <b> tags should be retained.", "<b>DOM storage disabled</b>"));
 
             // Set the palette.
             domStorageWidgetPointer->setPalette(highlightedPalette);
@@ -430,10 +446,10 @@ void DomainSettingsDialog::populateJavaScriptLabel() const
             break;
         }
 
-        case (DomainsDatabase::DISABLED):
+        case (DomainsDatabase::ENABLED):
         {
-            // Set the disabled text in bold.
-            javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.  The <b> tags should be retained.", "<b>JavaScript disabled</b>"));
+            // Set the enabled text in bold.
+            javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.  The <b> tags should be retained.", "<b>JavaScript enabled</b>"));
 
             // Set the palette.
             javaScriptWidgetPointer->setPalette(highlightedPalette);
@@ -441,10 +457,10 @@ void DomainSettingsDialog::populateJavaScriptLabel() const
             break;
         }
 
-        case (DomainsDatabase::ENABLED):
+        case (DomainsDatabase::DISABLED):
         {
-            // Set the enabled text in bold.
-            javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.  The <b> tags should be retained.", "<b>JavaScript enabled</b>"));
+            // Set the disabled text in bold.
+            javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.  The <b> tags should be retained.", "<b>JavaScript disabled</b>"));
 
             // Set the palette.
             javaScriptWidgetPointer->setPalette(highlightedPalette);
@@ -473,10 +489,10 @@ void DomainSettingsDialog::populateLocalStorageLabel() const
             break;
         }
 
-        case (DomainsDatabase::DISABLED):
+        case (DomainsDatabase::ENABLED):
         {
-            // Set the disabled text in bold.
-            localStorageLabelPointer->setText(i18nc("Domain settings local storage label.  The <b> tags should be retained.", "<b>Local storage disabled</b>"));
+            // Set the enabled text in bold.
+            localStorageLabelPointer->setText(i18nc("Domain settings local storage label.  The <b> tabs should be retained.", "<b>Local storage enabled</b>"));
 
             // Set the palette.
             localStorageWidgetPointer->setPalette(highlightedPalette);
@@ -484,10 +500,10 @@ void DomainSettingsDialog::populateLocalStorageLabel() const
             break;
         }
 
-        case (DomainsDatabase::ENABLED):
+        case (DomainsDatabase::DISABLED):
         {
-            // Set the enabled text in bold.
-            localStorageLabelPointer->setText(i18nc("Domain settings local storage label.  The <b> tabs should be retained.", "<b>Local storage enabled</b>"));
+            // Set the disabled text in bold.
+            localStorageLabelPointer->setText(i18nc("Domain settings local storage label.  The <b> tags should be retained.", "<b>Local storage disabled</b>"));
 
             // Set the palette.
             localStorageWidgetPointer->setPalette(highlightedPalette);
@@ -501,10 +517,10 @@ void DomainSettingsDialog::populateLocalStorageLabel() const
 void DomainSettingsDialog::populateUserAgentLabel(const QString &userAgentName) const
 {
     // Populate the label according to the type.
-    if (userAgentName == UserAgentHelper::SYSTEM_DEFAULT_TRANSLATED)
+    if (userAgentName == userAgentHelperPointer->SYSTEM_DEFAULT_TRANSLATED)
     {
         // Display the system default user agent name.
-        userAgentLabelPointer->setText(UserAgentHelper::getTranslatedUserAgentNameFromDatabaseName(Settings::userAgent()));
+        userAgentLabelPointer->setText(userAgentHelperPointer->getTranslatedUserAgentNameFromDatabaseName(Settings::userAgent()));
 
         // Reset the palette.
         userAgentWidgetPointer->setPalette(defaultPalette);
@@ -606,6 +622,9 @@ void DomainSettingsDialog::showDeleteMessageBox() const
 
         // Update the Ui.
         updateUi();
+
+        // Emit the domain settings updated signal.
+        emit domainSettingsUpdated();
     }
 }
 
@@ -628,7 +647,7 @@ void DomainSettingsDialog::userAgentChanged(const QString &updatedUserAgent) con
 {
     // Update the domains table model.
     domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::USER_AGENT)),
-                                      UserAgentHelper::getDatabaseUserAgentNameFromTranslatedName(updatedUserAgent));
+                                      userAgentHelperPointer->getDatabaseUserAgentNameFromTranslatedName(updatedUserAgent));
 
     // Populate the user agent label.
     populateUserAgentLabel(updatedUserAgent);
@@ -659,7 +678,7 @@ void DomainSettingsDialog::zoomFactorComboBoxChanged(const int &newIndex) const
         // Display the custom zoom factor from the domain settings.
         customZoomFactorSpinBoxPointer->setValue(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::CUSTOM_ZOOM_FACTOR)).data().toDouble());
 
-        // Set the palette.
+        // Use the highlighted palette.
         zoomFactorWidgetPointer->setPalette(highlightedPalette);
     }