]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/dialogs/DomainSettingsDialog.cpp
Add User Agent to Domain Settings.
[PrivacyBrowserPC.git] / src / dialogs / DomainSettingsDialog.cpp
index 0ebfb1448b85cf822dab246992fa02bcd65df0a3..e44af92563d63fb62b6605b5e7ef144a4acce462 100644 (file)
 
 // Application headers.
 #include "DomainSettingsDialog.h"
+#include "Settings.h"
 #include "ui_DomainSettingsDialog.h"
 #include "helpers/DomainsDatabaseHelper.h"
+#include "helpers/UserAgentHelper.h"
 
 // Qt toolkit headers.
 #include <QInputDialog>
@@ -40,6 +42,9 @@ DomainSettingsDialog::DomainSettingsDialog(QWidget *parent) : QDialog(parent)
     domainSettingsWidgetPointer = domainSettingsDialogUi.domainSettingsWidget;
     domainNameLineEditPointer = domainSettingsDialogUi.domainNameLineEdit;
     javaScriptComboBoxPointer = domainSettingsDialogUi.javaScriptComboBox;
+    javaScriptLabelPointer = domainSettingsDialogUi.javaScriptLabel;
+    userAgentComboBoxPointer = domainSettingsDialogUi.userAgentComboBox;
+    userAgentLabelPointer = domainSettingsDialogUi.userAgentLabel;
     QPushButton *addDomainButtonPointer = domainSettingsDialogUi.addDomainButton;
     deleteDomainButtonPointer = domainSettingsDialogUi.deleteDomainButton;
     QDialogButtonBox *dialogButtonBoxPointer = domainSettingsDialogUi.dialogButtonBox;
@@ -82,6 +87,7 @@ DomainSettingsDialog::DomainSettingsDialog(QWidget *parent) : QDialog(parent)
     // Connect the domain settings.
     connect(domainNameLineEditPointer, SIGNAL(textEdited(QString)), this, SLOT(domainNameChanged(QString)));
     connect(javaScriptComboBoxPointer, SIGNAL(currentIndexChanged(int)), this, SLOT(javaScriptChanged(int)));
+    connect(userAgentComboBoxPointer, SIGNAL(currentTextChanged(QString)), this, SLOT(userAgentChanged(QString)));
 
     // Connect the buttons.
     connect(addDomainButtonPointer, SIGNAL(released()), this, SLOT(showAddMessageBox()));
@@ -115,6 +121,9 @@ void DomainSettingsDialog::apply() const
 
     // Update the UI.
     updateUi();
+
+    // Emit the domain settings updated signal.
+    emit domainSettingsUpdated();
 }
 
 void DomainSettingsDialog::cancel()
@@ -144,6 +153,22 @@ void DomainSettingsDialog::domainSelected(QModelIndex modelIndex) const
     // Populate the JavaScript combo box.
     javaScriptComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT)).data().toInt());
 
+    // Get the user agent string.
+    QString userAgent = modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT)).data().toString();
+
+    // Get the user agent index.
+    int userAgentIndex = UserAgentHelper::getDomainSettingsUserAgentIndex(userAgent);
+
+    // Set the user agent combo box index.
+    userAgentComboBoxPointer->setCurrentIndex(userAgentIndex);
+
+    // Set the custom user agent if specified.
+    if (userAgentIndex == -1) userAgentComboBoxPointer->setCurrentText(userAgent);
+
+    // Populate the labels.
+    populateJavaScriptLabel();
+    populateUserAgentLabel(userAgentComboBoxPointer->currentText());
+
     // Update the UI.
     updateUi();
 }
@@ -154,6 +179,9 @@ void DomainSettingsDialog::javaScriptChanged(int newIndex) const
     domainsTableModelPointer->setData(domainsListViewPointer->selectionModel()->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT)),
                                       newIndex);
 
+    // Populate the JavaScript label.
+    populateJavaScriptLabel();
+
     // Update the UI.
     updateUi();
 }
@@ -164,17 +192,73 @@ void DomainSettingsDialog::ok()
     // Submit all pending changes.
     domainsTableModelPointer->submitAll();
 
+    // Emit the domain settings updated signal.
+    domainSettingsUpdated();
+
     // Close the dialog.
     accept();
 }
 
+void DomainSettingsDialog::populateJavaScriptLabel() const
+{
+    // Populate the label according to the currently selected index.
+    switch (javaScriptComboBoxPointer->currentIndex())
+    {
+        case (DomainsDatabaseHelper::SYSTEM_DEFAULT):
+        {
+            // Set the text according to the system default.
+            if (Settings::javaScript())
+            {
+                javaScriptLabelPointer->setText(i18nc("Domains settings labels", "JavaScript enabled"));
+            }
+            else
+            {
+                javaScriptLabelPointer->setText(i18nc("Domain settings labels", "JavaScript disabled"));
+            }
+
+            break;
+        }
+
+        case (DomainsDatabaseHelper::DISABLED):
+        {
+            // Set the label text in bold.
+            javaScriptLabelPointer->setText(i18nc("Domain settings labels.  The <strong> tags should be retained.", "<strong>JavaScript disabled</strong>"));
+
+            break;
+        }
+
+        case (DomainsDatabaseHelper::ENABLED):
+        {
+            // Set the label text in bold.
+            javaScriptLabelPointer->setText(i18nc("Domains settings labels.  The <strong> tags should be retained.", "<strong>JavaScript enabled</strong>"));
+
+            break;
+        }
+    }
+}
+
+void DomainSettingsDialog::populateUserAgentLabel(const QString &userAgentName) const
+{
+    // Populate the label according to the type.
+    if (userAgentName == UserAgentHelper::SYSTEM_DEFAULT_TRANSLATED)
+    {
+        // Display the system default user agent name.
+        userAgentLabelPointer->setText(UserAgentHelper::getTranslatedUserAgentName(Settings::userAgent()));
+    }
+    else
+    {
+        // Display the user agent name in bold.
+        userAgentLabelPointer->setText("<strong>" + userAgentName + "</strong>");
+    }
+}
+
 void DomainSettingsDialog::reset() const
 {
     // Cancel all pending changes.
     domainsTableModelPointer->revertAll();
 
-    // Repopulate the domain name line edit.
-    domainNameLineEditPointer->setText(domainsListViewPointer->currentIndex().data().toString());
+    // Repopulate the domain settings.
+    domainSelected(domainsListViewPointer->currentIndex());
 
     // Update the UI.
     updateUi();
@@ -201,9 +285,12 @@ void DomainSettingsDialog::showAddMessageBox()
         // Add the new domain name.
         newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOMAIN_NAME), newDomainName);
 
-        // Set the default value of `0` for the other columns.
+        // Set the default value of `0` for JavaScript.
         newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT), 0);
 
+        // Set the default value for the user agent.
+        newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT), UserAgentHelper::SYSTEM_DEFAULT_DATABASE);
+
         // Insert the new domain.  `-1` appends it to the end.
         domainsTableModelPointer->insertRecord(-1, newDomainRecord);
 
@@ -301,3 +388,17 @@ void DomainSettingsDialog::updateUi() const
     domainSettingsWidgetPointer->setVisible(domainsTableModelPointer->rowCount() > 0);
 }
 
+void DomainSettingsDialog::userAgentChanged(const QString updatedUserAgent) const
+{
+    // Update the domains table model.
+    domainsTableModelPointer->setData(domainsListViewPointer->selectionModel()->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT)),
+                                      UserAgentHelper::getDatabaseUserAgentName(updatedUserAgent));
+
+    // Populate the user agent label.
+    populateUserAgentLabel(updatedUserAgent);
+
+    // Update the UI.
+    updateUi();
+}
+
+