/*
- * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2022-2024 Soren Stoutner <soren@stoutner.com>.
*
- * This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
+ * This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc/>.
*
* Privacy Browser PC is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "DomainSettingsDialog.h"
#include "Settings.h"
#include "ui_DomainSettingsDialog.h"
-#include "helpers/DomainsDatabaseHelper.h"
-#include "helpers/UserAgentHelper.h"
+#include "databases/DomainsDatabase.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;
-const int DomainSettingsDialog::ADD_DOMAIN = 1;
-const int DomainSettingsDialog::EDIT_DOMAIN = 2;
+const int DomainSettingsDialog::EDIT_DOMAIN = 1;
// Construct the class.
-DomainSettingsDialog::DomainSettingsDialog(const int &startType, const QString &domainName) : QDialog(nullptr)
+DomainSettingsDialog::DomainSettingsDialog(QWidget *parentWidgetPointer, const int &startType, const QString &domainName) : QDialog(parentWidgetPointer)
{
// Set the window title.
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;
domainsListViewPointer = domainSettingsDialogUi.domainsListView;
domainSettingsWidgetPointer = domainSettingsDialogUi.domainSettingsWidget;
domainNameLineEditPointer = domainSettingsDialogUi.domainNameLineEdit;
+ javaScriptWidgetPointer = domainSettingsDialogUi.javaScriptWidget;
javaScriptComboBoxPointer = domainSettingsDialogUi.javaScriptComboBox;
javaScriptLabelPointer = domainSettingsDialogUi.javaScriptLabel;
+ localStorageWidgetPointer = domainSettingsDialogUi.localStorageWidget;
localStorageComboBoxPointer = domainSettingsDialogUi.localStorageComboBox;
localStorageLabelPointer = domainSettingsDialogUi.localStorageLabel;
+ domStorageWidgetPointer = domainSettingsDialogUi.domStorageWidget;
domStorageComboBoxPointer = domainSettingsDialogUi.domStorageComboBox;
domStorageLabelPointer = domainSettingsDialogUi.domStorageLabel;
+ userAgentWidgetPointer = domainSettingsDialogUi.userAgentWidget;
userAgentComboBoxPointer = domainSettingsDialogUi.userAgentComboBox;
userAgentLabelPointer = domainSettingsDialogUi.userAgentLabel;
+ zoomFactorWidgetPointer = domainSettingsDialogUi.zoomFactorWidget;
zoomFactorComboBoxPointer = domainSettingsDialogUi.zoomFactorComboBox;
customZoomFactorSpinBoxPointer = domainSettingsDialogUi.customZoomFactorSpinBox;
QPushButton *addDomainButtonPointer = domainSettingsDialogUi.addDomainButton;
resetButtonPointer = dialogButtonBoxPointer->button(QDialogButtonBox::StandardButton::Reset);
// Create a table model.
- domainsTableModelPointer = new QSqlTableModel(nullptr, QSqlDatabase::database(DomainsDatabaseHelper::CONNECTION_NAME));
+ domainsTableModelPointer = new QSqlTableModel(nullptr, QSqlDatabase::database(DomainsDatabase::CONNECTION_NAME));
// Set the table for the model.
- domainsTableModelPointer->setTable(DomainsDatabaseHelper::DOMAINS_TABLE);
+ domainsTableModelPointer->setTable(DomainsDatabase::DOMAINS_TABLE);
// Set the edit strategy to be manual.
domainsTableModelPointer->setEditStrategy(QSqlTableModel::EditStrategy::OnManualSubmit);
// Read the data from the database and apply it to the table model.
domainsTableModelPointer->select();
+ // Get the default palette.
+ defaultPalette = javaScriptWidgetPointer->palette();
+
+ // Populate the highlighted palette.
+ highlightedPalette = defaultPalette;
+
+ // Get the default highlight color.
+ QColor highlightColor = defaultPalette.color(QPalette::Highlight);
+
+ // Set the highlight color to be partially transparent.
+ highlightColor.setAlpha(64);
+
+ // Set highlighted background color.
+ highlightedPalette.setColor(QPalette::Window, highlightColor);
+
// Setup the dialog according to the start type.
switch (startType)
{
case SHOW_ALL_DOMAINS:
{
// Select the first entry in the list view.
- domainsListViewPointer->setCurrentIndex(domainsTableModelPointer->index(0, domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOMAIN_NAME)));
-
- // Populate the domain settings.
- domainSelected(domainsSelectionModelPointer->currentIndex());
-
- break;
- }
-
- case ADD_DOMAIN:
- {
- // Add the new domain.
- addDomain(domainName);
+ domainsListViewPointer->setCurrentIndex(domainsTableModelPointer->index(0, domainsTableModelPointer->fieldIndex(DomainsDatabase::DOMAIN_NAME)));
break;
}
case EDIT_DOMAIN:
{
// Find the index for the new domain. `1` returns the first match.
- QModelIndexList newDomainIndex = domainsTableModelPointer->match(domainsTableModelPointer->index(0, domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOMAIN_NAME)),
- Qt::DisplayRole, domainName, 1, Qt::MatchWrap);
+ QModelIndexList newDomainIndex = domainsTableModelPointer->match(domainsTableModelPointer->index(0, domainsTableModelPointer->fieldIndex(DomainsDatabase::DOMAIN_NAME)),
+ Qt::DisplayRole, domainName, 1, Qt::MatchWrap);
// Move to the new domain.
domainsListViewPointer->setCurrentIndex(newDomainIndex[0]);
- // Populate the domain settings.
- domainSelected(domainsSelectionModelPointer->currentIndex());
-
break;
}
}
+ // Populate the domain settings.
+ domainSelected(domainsSelectionModelPointer->currentIndex());
+
// Handle clicks on the domains.
connect(domainsListViewPointer, SIGNAL(activated(QModelIndex)), this, SLOT(domainSelected(QModelIndex)));
connect(applyButtonPointer, SIGNAL(clicked()), this, SLOT(apply()));
connect(dialogButtonBoxPointer, SIGNAL(rejected()), this, SLOT(cancel()));
- // Update the UI.
- updateUi();
-}
-
-void DomainSettingsDialog::addDomain(const QString &domainName) const
-{
- // Create a new domain record.
- QSqlRecord newDomainRecord = QSqlDatabase::database(DomainsDatabaseHelper::CONNECTION_NAME).record(DomainsDatabaseHelper::DOMAINS_TABLE);
-
- // 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::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);
-
- // Insert the new domain. `-1` appends it to the end.
- domainsTableModelPointer->insertRecord(-1, newDomainRecord);
-
- // Submit all pending changes.
- domainsTableModelPointer->submitAll();
-
- // Find the index for the new domain. `-1` allows for multiple entries to be returned.
- QModelIndexList newDomainIndex = domainsTableModelPointer->match(domainsTableModelPointer->index(0, domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOMAIN_NAME)),
- Qt::DisplayRole, domainName, -1, Qt::MatchWrap);
-
- // Move to the new domain. If there are multiple domains with the same name, the new one should be the last in the list.
- domainsListViewPointer->setCurrentIndex(newDomainIndex[newDomainIndex.size() - 1]);
-
- // Populate the domain settings.
- domainSelected(domainsSelectionModelPointer->currentIndex());
+ // Update the DOM storage status.
+ updateDomStorageStatus();
// Update the UI.
updateUi();
QModelIndex currentIndex = domainsListViewPointer->currentIndex();
// Get the ID of the current index row.
- QVariant currentId = currentIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::_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(DomainsDatabaseHelper::_ID)), Qt::DisplayRole, currentId,
+ QModelIndexList newIndexList = domainsTableModelPointer->match(currentIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::ID)), Qt::DisplayRole, currentId,
1, Qt::MatchWrap);
// Select the new index.
- domainsListViewPointer->setCurrentIndex(newIndexList[0].siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOMAIN_NAME)));
+ domainsListViewPointer->setCurrentIndex(newIndexList[0].siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::DOMAIN_NAME)));
// Update the UI.
updateUi();
void DomainSettingsDialog::customZoomFactorChanged(const double &newValue) const
{
// Update the domains table model.
- domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::CUSTOM_ZOOM_FACTOR)), newValue);
+ domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::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);
+ domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::DOM_STORAGE)), newIndex);
// Populate the DOM storage label.
populateDomStorageLabel();
domainNameLineEditPointer->setText(modelIndex.data().toString());
// Populate the JavaScript combo box.
- javaScriptComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT)).data().toInt());
+ javaScriptComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::JAVASCRIPT)).data().toInt());
// Populate the local storage combo box.
- localStorageComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::LOCAL_STORAGE)).data().toInt());
+ localStorageComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::LOCAL_STORAGE)).data().toInt());
// Populate the DOM storage combo box.
- domStorageComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::DOM_STORAGE)).data().toInt());
+ domStorageComboBoxPointer->setCurrentIndex(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::DOM_STORAGE)).data().toInt());
// Get the user agent string.
- QString userAgent = modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT)).data().toString();
+ QString userAgent = modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::USER_AGENT)).data().toString();
// Get the user agent index.
int userAgentIndex = UserAgentHelper::getDomainSettingsUserAgentIndex(userAgent);
if (userAgentIndex == -1) userAgentComboBoxPointer->setCurrentText(userAgent);
// Get the zoom factor combo box index.
- int zoomFactorComboBoxIndex = modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::ZOOM_FACTOR)).data().toInt();
+ int zoomFactorComboBoxIndex = modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::ZOOM_FACTOR)).data().toInt();
// Populate the zoom factor combo box.
zoomFactorComboBoxPointer->setCurrentIndex(zoomFactorComboBoxIndex);
{
// 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(DomainsDatabaseHelper::CUSTOM_ZOOM_FACTOR)).data().toDouble());
+ 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.
void DomainSettingsDialog::javaScriptChanged(const int &newIndex) const
{
// Update the domains table model.
- domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::JAVASCRIPT)), newIndex);
+ domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::JAVASCRIPT)), newIndex);
// Populate the JavaScript label.
populateJavaScriptLabel();
+ // Update the DOM storage status.
+ updateDomStorageStatus();
+
// Update the UI.
updateUi();
}
void DomainSettingsDialog::localStorageChanged(const int &newIndex) const
{
// Update the domains table model.
- domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::LOCAL_STORAGE)), newIndex);
+ domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::LOCAL_STORAGE)), newIndex);
- // Poplate the local storage label.
+ // Populate the local storage label.
populateLocalStorageLabel();
+ // Update the DOM storage status.
+ updateDomStorageStatus();
+
// Update the UI.
updateUi();
}
domainsTableModelPointer->submitAll();
// Emit the domain settings updated signal.
- domainSettingsUpdated();
+ emit domainSettingsUpdated();
// Close the dialog.
accept();
// Populate the label according to the currently selected index.
switch (domStorageComboBoxPointer->currentIndex())
{
- // Set the text according to the system default.
- case (DomainsDatabaseHelper::SYSTEM_DEFAULT):
+ case (DomainsDatabase::SYSTEM_DEFAULT):
{
+ // Set the text according to the 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"));
+ // Reset the palette.
+ domStorageWidgetPointer->setPalette(defaultPalette);
+
break;
}
- // Set the disabled text in bold.
- case (DomainsDatabaseHelper::DISABLED):
+ case (DomainsDatabase::ENABLED):
{
- 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);
break;
}
- // Set the enabled text in bold.
- case (DomainsDatabaseHelper::ENABLED):
+ case (DomainsDatabase::DISABLED):
{
- 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);
break;
}
// Populate the label according to the currently selected index.
switch (javaScriptComboBoxPointer->currentIndex())
{
- // Set the text according to the system default.
- case (DomainsDatabaseHelper::SYSTEM_DEFAULT):
+ case (DomainsDatabase::SYSTEM_DEFAULT):
{
+ // Set the text according to the system default.
if (Settings::javaScriptEnabled())
javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.", "JavaScript enabled"));
else
javaScriptLabelPointer->setText(i18nc("Domain settings JavaScript label.", "JavaScript disabled"));
+ // Reset the palette.
+ javaScriptWidgetPointer->setPalette(defaultPalette);
+
break;
}
- // Set the disabled text in bold.
- case (DomainsDatabaseHelper::DISABLED):
+ case (DomainsDatabase::ENABLED):
{
- 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);
break;
}
- // Set the enabled text in bold.
- case (DomainsDatabaseHelper::ENABLED):
+ case (DomainsDatabase::DISABLED):
{
- 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);
break;
}
// Populate the label according to the currently selected index.
switch (localStorageComboBoxPointer->currentIndex())
{
- // Set the text according to the system default.
- case (DomainsDatabaseHelper::SYSTEM_DEFAULT):
+ case (DomainsDatabase::SYSTEM_DEFAULT):
{
+ // Set the text according to the system default.
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"));
+ // Reset the palette.
+ localStorageWidgetPointer->setPalette(defaultPalette);
+
break;
}
- // Set the disabled text in bold.
- case (DomainsDatabaseHelper::DISABLED):
+ case (DomainsDatabase::ENABLED):
{
- 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);
break;
}
- // Set the enabled text in bold.
- case (DomainsDatabaseHelper::ENABLED):
+ case (DomainsDatabase::DISABLED):
{
- 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);
break;
}
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);
}
else
{
// Display the user agent name in bold.
userAgentLabelPointer->setText("<strong>" + userAgentName + "</strong>");
+
+ // Set the palette.
+ userAgentWidgetPointer->setPalette(highlightedPalette);
}
}
QLineEdit::Normal, QString(), &okClicked);
// Add the new domain if the user clicked OK.
- if (okClicked) addDomain(newDomainName);
+ if (okClicked)
+ {
+ // Add the new domain.
+ DomainsDatabase::addDomain(newDomainName);
+
+ // Submit all pending changes. This reloads the model from the database, getting the new domain added above.
+ domainsTableModelPointer->submitAll();
+
+
+ // Find the index for the new domain. `-1` allows for multiple entries to be returned.
+ QModelIndexList newDomainIndex = domainsTableModelPointer->match(domainsTableModelPointer->index(0, domainsTableModelPointer->fieldIndex(DomainsDatabase::DOMAIN_NAME)),
+ Qt::DisplayRole, newDomainName, -1, Qt::MatchWrap);
+
+ // Move to the new domain. If there are multiple domains with the same name, the new one should be the last in the list.
+ domainsListViewPointer->setCurrentIndex(newDomainIndex[newDomainIndex.size() - 1]);
+
+ // Populate the domain settings.
+ domainSelected(domainsSelectionModelPointer->currentIndex());
+
+ // Update the UI.
+ updateUi();
+
+ // Emit the domain settings updated signal.
+ emit domainSettingsUpdated();
+ }
}
void DomainSettingsDialog::showDeleteMessageBox() const
// Update the Ui.
updateUi();
+
+ // Emit the domain settings updated signal.
+ emit domainSettingsUpdated();
+ }
+}
+
+void DomainSettingsDialog::updateDomStorageStatus() const
+{
+ // Instantiate tracking variables.
+ bool javaScriptEnabled;
+ bool localStorageEnabled;
+
+ // Populate the JavaScript tracker.
+ switch (javaScriptComboBoxPointer->currentIndex())
+ {
+ case (DomainsDatabase::SYSTEM_DEFAULT):
+ {
+ // Update the tracker according to the system default.
+ if (Settings::javaScriptEnabled())
+ javaScriptEnabled = true;
+ else
+ javaScriptEnabled = false;
+
+ break;
+ }
+
+ case (DomainsDatabase::ENABLED):
+ {
+ // Update the tracker.
+ javaScriptEnabled = true;
+
+ break;
+ }
+
+ case (DomainsDatabase::DISABLED):
+ {
+ // Update the tracker.
+ javaScriptEnabled = false;
+
+ break;
+ }
}
+
+ // Populate the local storage tracker.
+ switch (localStorageComboBoxPointer->currentIndex())
+ {
+ case (DomainsDatabase::SYSTEM_DEFAULT):
+ {
+ // Update the tracker according to the system default.
+ if (Settings::localStorageEnabled())
+ localStorageEnabled = true;
+ else
+ localStorageEnabled = false;
+
+ break;
+ }
+
+ case (DomainsDatabase::ENABLED):
+ {
+ // Update the tracker.
+ localStorageEnabled = true;
+
+ break;
+ }
+
+ case (DomainsDatabase::DISABLED):
+ {
+ // Update the tracker.
+ localStorageEnabled = false;
+
+ break;
+ }
+ }
+
+ // Only enable DOM storage if both JavaScript and local storage are enabled.
+ domStorageComboBoxPointer->setEnabled(javaScriptEnabled && localStorageEnabled);
}
void DomainSettingsDialog::updateUi() const
// Update the delete button status.
deleteDomainButtonPointer->setEnabled(domainsSelectionModelPointer->hasSelection());
- // Update the apply button status.
- applyButtonPointer->setEnabled(domainsTableModelPointer->isDirty());
-
// Update the reset button status.
resetButtonPointer->setEnabled(domainsTableModelPointer->isDirty());
+ // Update the apply button status.
+ applyButtonPointer->setEnabled(domainsTableModelPointer->isDirty());
+
// Display the domain settings if there is at least one domain.
domainSettingsWidgetPointer->setVisible(domainsTableModelPointer->rowCount() > 0);
}
void DomainSettingsDialog::userAgentChanged(const QString &updatedUserAgent) const
{
// Update the domains table model.
- domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::USER_AGENT)),
- UserAgentHelper::getDatabaseUserAgentNameFromTranslatedName(updatedUserAgent));
+ domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::USER_AGENT)),
+ userAgentHelperPointer->getDatabaseUserAgentNameFromTranslatedName(updatedUserAgent));
// Populate the user agent label.
populateUserAgentLabel(updatedUserAgent);
QModelIndex modelIndex = domainsSelectionModelPointer->currentIndex();
// Update the domains table model.
- domainsTableModelPointer->setData(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabaseHelper::ZOOM_FACTOR)), newIndex);
+ domainsTableModelPointer->setData(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::ZOOM_FACTOR)), newIndex);
// Populate the custom zoom factor spin box according to the zoom factor combo box.
if (newIndex == 0) // System default zoom factor is selected.
{
// Display the default zoom factor.
customZoomFactorSpinBoxPointer->setValue(Settings::zoomFactor());
+
+ // Reset the 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(DomainsDatabaseHelper::CUSTOM_ZOOM_FACTOR)).data().toDouble());
+ customZoomFactorSpinBoxPointer->setValue(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::CUSTOM_ZOOM_FACTOR)).data().toDouble());
+
+ // Use the highlighted palette.
+ zoomFactorWidgetPointer->setPalette(highlightedPalette);
}
// Update the status of the custom zoom factor spin box.