]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/dialogs/DomainSettingsDialog.cpp
Add local storage domain settings.
[PrivacyBrowserPC.git] / src / dialogs / DomainSettingsDialog.cpp
index 32d61d09e4363401848c19eb39a1851d9cd7268f..151a0b4926be9930962306e38fc1beeebfcd3e52 100644 (file)
@@ -34,6 +34,7 @@ const int DomainSettingsDialog::SHOW_ALL_DOMAINS = 0;
 const int DomainSettingsDialog::ADD_DOMAIN = 1;
 const int DomainSettingsDialog::EDIT_DOMAIN = 2;
 
+// Construct the class.
 DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &domainName) : QDialog(nullptr)
 {
     // Set the window title.
@@ -48,7 +49,7 @@ DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &
     // Setup the UI.
     domainSettingsDialogUi.setupUi(this);
 
-    // Get handles for the views.
+    // Get handles for the widgets.
     domainsListViewPointer = domainSettingsDialogUi.domainsListView;
     domainSettingsWidgetPointer = domainSettingsDialogUi.domainSettingsWidget;
     domainNameLineEditPointer = domainSettingsDialogUi.domainNameLineEdit;
@@ -56,6 +57,8 @@ DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &
     javaScriptLabelPointer = domainSettingsDialogUi.javaScriptLabel;
     localStorageComboBoxPointer = domainSettingsDialogUi.localStorageComboBox;
     localStorageLabelPointer = domainSettingsDialogUi.localStorageLabel;
+    domStorageComboBoxPointer = domainSettingsDialogUi.domStorageComboBox;
+    domStorageLabelPointer = domainSettingsDialogUi.domStorageLabel;
     userAgentComboBoxPointer = domainSettingsDialogUi.userAgentComboBox;
     userAgentLabelPointer = domainSettingsDialogUi.userAgentLabel;
     zoomFactorComboBoxPointer = domainSettingsDialogUi.zoomFactorComboBox;
@@ -84,6 +87,9 @@ DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &
     // Set the visible column to be the domain name.
     domainsListViewPointer->setModelColumn(1);
 
+    // Get the domains selection model pointer.
+    domainsSelectionModelPointer = domainsListViewPointer->selectionModel();
+
     // Disable editing of the list view.
     domainsListViewPointer->setEditTriggers(QAbstractItemView::NoEditTriggers);
 
@@ -99,7 +105,7 @@ DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &
             domainsListViewPointer->setCurrentIndex(domainsTableModelPointer->index(0, domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOMAIN_NAME)));
 
             // Populate the domain settings.
-            domainSelected(domainsListViewPointer->selectionModel()->currentIndex());
+            domainSelected(domainsSelectionModelPointer->currentIndex());
 
             break;
         }
@@ -122,17 +128,20 @@ DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &
             domainsListViewPointer->setCurrentIndex(newDomainIndex[0]);
 
             // Populate the domain settings.
-            domainSelected(domainsListViewPointer->selectionModel()->currentIndex());
+            domainSelected(domainsSelectionModelPointer->currentIndex());
+
+            break;
         }
     }
 
     // Handle clicks on the domains.
     connect(domainsListViewPointer, SIGNAL(activated(QModelIndex)), this, SLOT(domainSelected(QModelIndex)));
 
-    // Connect the domain settings.
+    // Process changes to the domain settings.
     connect(domainNameLineEditPointer, SIGNAL(textEdited(QString)), this, SLOT(domainNameChanged(QString)));
     connect(javaScriptComboBoxPointer, SIGNAL(currentIndexChanged(int)), this, SLOT(javaScriptChanged(int)));
     connect(localStorageComboBoxPointer, SIGNAL(currentIndexChanged(int)), this, SLOT(localStorageChanged(int)));
+    connect(domStorageComboBoxPointer, SIGNAL(currentIndexChanged(int)), this, SLOT(domStorageChanged(int)));
     connect(userAgentComboBoxPointer, SIGNAL(currentTextChanged(QString)), this, SLOT(userAgentChanged(QString)));
     connect(zoomFactorComboBoxPointer, SIGNAL(currentIndexChanged(int)), this, SLOT(zoomFactorComboBoxChanged(int)));
     connect(customZoomFactorSpinBoxPointer, SIGNAL(valueChanged(double)), this, SLOT(customZoomFactorChanged(double)));
@@ -157,7 +166,7 @@ void DomainSettingsDialog::addDomain(const QString &domainName) const
     // Set the values for the new domain.
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOMAIN_NAME), domainName);
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT), DomainsDatabaseHelper::SYSTEM_DEFAULT);
-    newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::LOCAL_STORAGE), DomainsDatabaseHelper::SYSTEM_DEFAULT);
+    newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOM_STORAGE), DomainsDatabaseHelper::SYSTEM_DEFAULT);
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT), UserAgentHelper::SYSTEM_DEFAULT_DATABASE);
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::ZOOM_FACTOR), DomainsDatabaseHelper::SYSTEM_DEFAULT);
     newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::CUSTOM_ZOOM_FACTOR), 1.0);
@@ -176,13 +185,12 @@ void DomainSettingsDialog::addDomain(const QString &domainName) const
     domainsListViewPointer->setCurrentIndex(newDomainIndex[newDomainIndex.size() - 1]);
 
     // Populate the domain settings.
-    domainSelected(domainsListViewPointer->selectionModel()->currentIndex());
+    domainSelected(domainsSelectionModelPointer->currentIndex());
 
     // Update the UI.
     updateUi();
 }
 
-
 void DomainSettingsDialog::apply() const
 {
     // Get the current index.
@@ -220,8 +228,19 @@ void DomainSettingsDialog::cancel()
 void DomainSettingsDialog::customZoomFactorChanged(const double &newValue) const
 {
     // Update the domains table model.
-    domainsTableModelPointer->setData(domainsListViewPointer->selectionModel()->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::CUSTOM_ZOOM_FACTOR)),
-                                      newValue);
+    domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::CUSTOM_ZOOM_FACTOR)), newValue);
+
+    // Update the UI.
+    updateUi();
+}
+
+void DomainSettingsDialog::domStorageChanged(const int &newIndex) const
+{
+    // Update the domains table model.
+    domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOM_STORAGE)), newIndex);
+
+    // Populate the DOM storage label.
+    populateDomStorageLabel();
 
     // Update the UI.
     updateUi();
@@ -230,7 +249,7 @@ void DomainSettingsDialog::customZoomFactorChanged(const double &newValue) const
 void DomainSettingsDialog::domainNameChanged(const QString &updatedDomainName) const
 {
     // Update the domains table model.
-    domainsTableModelPointer->setData(domainsListViewPointer->selectionModel()->currentIndex(), updatedDomainName);
+    domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex(), updatedDomainName);
 
     // Update the UI.
     updateUi();
@@ -247,6 +266,9 @@ void DomainSettingsDialog::domainSelected(const QModelIndex &modelIndex) const
     // Populate the local storage combo box.
     localStorageComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::LOCAL_STORAGE)).data().toInt());
 
+    // Populate the DOM storage combo box.
+    domStorageComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOM_STORAGE)).data().toInt());
+
     // Get the user agent string.
     QString userAgent = modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT)).data().toString();
 
@@ -283,6 +305,7 @@ void DomainSettingsDialog::domainSelected(const QModelIndex &modelIndex) const
     // Populate the labels.
     populateJavaScriptLabel();
     populateLocalStorageLabel();
+    populateDomStorageLabel();
     populateUserAgentLabel(userAgentComboBoxPointer->currentText());
 
     // Update the UI.
@@ -292,8 +315,7 @@ void DomainSettingsDialog::domainSelected(const QModelIndex &modelIndex) const
 void DomainSettingsDialog::javaScriptChanged(const int &newIndex) const
 {
     // Update the domains table model.
-    domainsTableModelPointer->setData(domainsListViewPointer->selectionModel()->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT)),
-                                      newIndex);
+    domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT)), newIndex);
 
     // Populate the JavaScript label.
     populateJavaScriptLabel();
@@ -305,10 +327,9 @@ void DomainSettingsDialog::javaScriptChanged(const int &newIndex) const
 void DomainSettingsDialog::localStorageChanged(const int &newIndex) const
 {
     // Update the domains table model.
-    domainsTableModelPointer->setData(domainsListViewPointer->selectionModel()->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::LOCAL_STORAGE)),
-                                      newIndex);
+    domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::LOCAL_STORAGE)), newIndex);
 
-    // Populate the local storage label.
+    // Poplate the local storage label.
     populateLocalStorageLabel();
 
     // Update the UI.
@@ -327,32 +348,68 @@ void DomainSettingsDialog::ok()
     accept();
 }
 
+void DomainSettingsDialog::populateDomStorageLabel() const
+{
+    // Populate the label according to the currently selected index.
+    switch (domStorageComboBoxPointer->currentIndex())
+    {
+        // Set the text according to the system default.
+        case (DomainsDatabaseHelper::SYSTEM_DEFAULT):
+        {
+            if (Settings::domStorageEnabled())
+                domStorageLabelPointer->setText(i18nc("Domain settings DOM storage label.", "DOM storage enabled"));
+            else
+                domStorageLabelPointer->setText(i18nc("Domain settings DOM storage label.", "DOM storage disabled"));
+
+            break;
+        }
+
+        // Set the disabled text in bold.
+        case (DomainsDatabaseHelper::DISABLED):
+        {
+            domStorageLabelPointer->setText(i18nc("Domain settings DOM storage label.  The <b> tags should be retained.", "<b>DOM storage disabled</b>"));
+
+            break;
+        }
+
+        // Set the enabled text in bold.
+        case (DomainsDatabaseHelper::ENABLED):
+        {
+            domStorageLabelPointer->setText(i18nc("Domain settings DOM storage label.  The <b> tags should be retained.", "<b>DOM storage enabled</b>"));
+
+            break;
+        }
+    }
+}
+
 void DomainSettingsDialog::populateJavaScriptLabel() const
 {
     // Populate the label according to the currently selected index.
     switch (javaScriptComboBoxPointer->currentIndex())
     {
+        // Set the text according to the system default.
         case (DomainsDatabaseHelper::SYSTEM_DEFAULT):
         {
-            // Set the text according to the system default.
-            if (Settings::javaScript()) javaScriptLabelPointer->setText(i18nc("Domains settings label", "JavaScript enabled"));
-            else javaScriptLabelPointer->setText(i18nc("Domain settings label", "JavaScript disabled"));
+            if (Settings::javaScriptEnabled())
+                javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.", "JavaScript enabled"));
+            else
+                javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.", "JavaScript disabled"));
 
             break;
         }
 
+        // Set the disabled text in bold.
         case (DomainsDatabaseHelper::DISABLED):
         {
-            // Set the label text in bold.
-            javaScriptLabelPointer->setText(i18nc("Domain settings label.  The <strong> tags should be retained.", "<strong>JavaScript disabled</strong>"));
+            javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.  The <b> tags should be retained.", "<b>JavaScript disabled</b>"));
 
             break;
         }
 
+        // Set the enabled text in bold.
         case (DomainsDatabaseHelper::ENABLED):
         {
-            // Set the label text in bold.
-            javaScriptLabelPointer->setText(i18nc("Domains settings label.  The <strong> tags should be retained.", "<strong>JavaScript enabled</strong>"));
+            javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.  The <b> tags should be retained.", "<b>JavaScript enabled</b>"));
 
             break;
         }
@@ -364,33 +421,36 @@ void DomainSettingsDialog::populateLocalStorageLabel() const
     // Populate the label according to the currently selected index.
     switch (localStorageComboBoxPointer->currentIndex())
     {
+        // Set the text according to the system default.
         case (DomainsDatabaseHelper::SYSTEM_DEFAULT):
         {
-            // Set the text according to the system default.
-            if (Settings::localStorage()) localStorageLabelPointer->setText(i18nc("Local storage label", "Local storage enabled"));
-            else localStorageLabelPointer->setText(i18nc("Local storage label", "Local storage disabled"));
+            if (Settings::localStorageEnabled())
+                localStorageLabelPointer->setText(i18nc("Domain settings local storage label.", "Local storage enabled"));
+            else
+                localStorageLabelPointer->setText(i18nc("Domain settings local storage label.", "Local storage disabled"));
 
             break;
         }
 
+        // Set the disabled text in bold.
         case (DomainsDatabaseHelper::DISABLED):
         {
-            // Set the label text in bold.
-            localStorageLabelPointer->setText(i18nc("Local storage label.  The <string> tags should be retained.", "<strong>Local storage disabled</strong>"));
+            localStorageLabelPointer->setText(i18nc("Domain settings local storage label.  The <b> tags should be retained.", "<b>Local storage disabled</b>"));
 
             break;
         }
 
+        // Set the enabled text in bold.
         case (DomainsDatabaseHelper::ENABLED):
         {
-            // Set the label text in bold.
-            localStorageLabelPointer->setText(i18nc("Local storage label.  The <strong> tags should be retained.", "<strong>Local storage enabled</strong>"));
+            localStorageLabelPointer->setText(i18nc("Domain settings local storage label.  The <b> tabs should be retained.", "<b>Local storage enabled</b>"));
 
             break;
         }
     }
 }
 
+
 void DomainSettingsDialog::populateUserAgentLabel(const QString &userAgentName) const
 {
     // Populate the label according to the type.
@@ -467,7 +527,7 @@ void DomainSettingsDialog::showDeleteMessageBox() const
         QModelIndex currentIndex = domainsListViewPointer->currentIndex();
 
         // Delete the current row.
-        domainsTableModelPointer->removeRow(domainsListViewPointer->selectionModel()->currentIndex().row());
+        domainsTableModelPointer->removeRow(domainsSelectionModelPointer->currentIndex().row());
 
         // Submit all pending changes.
         domainsTableModelPointer->submitAll();
@@ -499,7 +559,7 @@ void DomainSettingsDialog::showDeleteMessageBox() const
 void DomainSettingsDialog::updateUi() const
 {
     // Update the delete button status.
-    deleteDomainButtonPointer->setEnabled(domainsListViewPointer->selectionModel()->hasSelection());
+    deleteDomainButtonPointer->setEnabled(domainsSelectionModelPointer->hasSelection());
 
     // Update the apply button status.
     applyButtonPointer->setEnabled(domainsTableModelPointer->isDirty());
@@ -514,7 +574,7 @@ void DomainSettingsDialog::updateUi() const
 void DomainSettingsDialog::userAgentChanged(const QString &updatedUserAgent) const
 {
     // Update the domains table model.
-    domainsTableModelPointer->setData(domainsListViewPointer->selectionModel()->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT)),
+    domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT)),
                                       UserAgentHelper::getDatabaseUserAgentNameFromTranslatedName(updatedUserAgent));
 
     // Populate the user agent label.
@@ -527,7 +587,7 @@ void DomainSettingsDialog::userAgentChanged(const QString &updatedUserAgent) con
 void DomainSettingsDialog::zoomFactorComboBoxChanged(const int &newIndex) const
 {
     // Get the current model index.
-    QModelIndex modelIndex = domainsListViewPointer->selectionModel()->currentIndex();
+    QModelIndex modelIndex = domainsSelectionModelPointer->currentIndex();
 
     // Update the domains table model.
     domainsTableModelPointer->setData(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::ZOOM_FACTOR)), newIndex);