// 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>
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;
// 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()));
// Update the UI.
updateUi();
+
+ // Emit the domain settings updated signal.
+ emit domainSettingsUpdated();
}
void DomainSettingsDialog::cancel()
// 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();
}
domainsTableModelPointer->setData(domainsListViewPointer->selectionModel()->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT)),
newIndex);
+ // Populate the JavaScript label.
+ populateJavaScriptLabel();
+
// Update the UI.
updateUi();
}
// 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();
// 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);
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();
+}
+
+