X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserPC.git;a=blobdiff_plain;f=src%2Fdialogs%2FDomainSettingsDialog.cpp;h=e44af92563d63fb62b6605b5e7ef144a4acce462;hp=0ebfb1448b85cf822dab246992fa02bcd65df0a3;hb=fe9f5cdee9e6e16eac1858f7f661516c24f71fa5;hpb=16118809a11aa423f453a03c47f5263e9dd8b662 diff --git a/src/dialogs/DomainSettingsDialog.cpp b/src/dialogs/DomainSettingsDialog.cpp index 0ebfb14..e44af92 100644 --- a/src/dialogs/DomainSettingsDialog.cpp +++ b/src/dialogs/DomainSettingsDialog.cpp @@ -19,8 +19,10 @@ // Application headers. #include "DomainSettingsDialog.h" +#include "Settings.h" #include "ui_DomainSettingsDialog.h" #include "helpers/DomainsDatabaseHelper.h" +#include "helpers/UserAgentHelper.h" // Qt toolkit headers. #include @@ -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 tags should be retained.", "JavaScript disabled")); + + break; + } + + case (DomainsDatabaseHelper::ENABLED): + { + // Set the label text in bold. + javaScriptLabelPointer->setText(i18nc("Domains settings labels. The tags should be retained.", "JavaScript enabled")); + + 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("" + userAgentName + ""); + } +} + 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(); +} + +