/*
- * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2022-2023 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
*
*
* You should have received a copy of the GNU General Public License
* along with Privacy Browser PC. If not, see <http://www.gnu.org/licenses/>.
- */
+ // */
// Application headers.
#include "DomainSettingsDialog.h"
#include "Settings.h"
#include "ui_DomainSettingsDialog.h"
#include "databases/DomainsDatabase.h"
-#include "helpers/UserAgentHelper.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;
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;
// Add the new domain.
addDomain(domainName);
+ // Emit the domain settings updated signal after 100 milliseconds. This is necessary because the browser window takes time to process the connect command to receive the signal.
+ QTimer::singleShot(100, [this] () { emit domainSettingsUpdated();});
+
break;
}
// Set the values for the new domain.
newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::DOMAIN_NAME), domainName);
newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::JAVASCRIPT), DomainsDatabase::SYSTEM_DEFAULT);
+ newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::LOCAL_STORAGE), DomainsDatabase::SYSTEM_DEFAULT);
newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::DOM_STORAGE), DomainsDatabase::SYSTEM_DEFAULT);
newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::USER_AGENT), UserAgentHelper::SYSTEM_DEFAULT_DATABASE);
newDomainRecord.setValue(domainsTableModelPointer->fieldIndex(DomainsDatabase::ZOOM_FACTOR), DomainsDatabase::SYSTEM_DEFAULT);
// Update the UI.
updateUi();
+
+ // Emit the domain settings updated signal.
+ emit domainSettingsUpdated();
}
void DomainSettingsDialog::apply() const
QModelIndex currentIndex = domainsListViewPointer->currentIndex();
// Get the ID of the current index row.
- QVariant currentId = currentIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::_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(DomainsDatabase::_ID)), Qt::DisplayRole, currentId,
+ QModelIndexList newIndexList = domainsTableModelPointer->match(currentIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::ID)), Qt::DisplayRole, currentId,
1, Qt::MatchWrap);
// Select the new index.
{
// 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(DomainsDatabase::CUSTOM_ZOOM_FACTOR)).data().toDouble());
+
+ // Use the highlighted palette.
+ zoomFactorWidgetPointer->setPalette(highlightedPalette);
}
// Set the initial status of the custom zoom factor spin box.
// Update the domains table model.
domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::LOCAL_STORAGE)), newIndex);
- // Poplate the local storage label.
+ // Populate the local storage label.
populateLocalStorageLabel();
// Update the UI.
domainsTableModelPointer->submitAll();
// Emit the domain settings updated signal.
- domainSettingsUpdated();
+ emit domainSettingsUpdated();
// Close the dialog.
accept();
break;
}
- case (DomainsDatabase::DISABLED):
+ case (DomainsDatabase::ENABLED):
{
- // 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 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;
}
- case (DomainsDatabase::ENABLED):
+ case (DomainsDatabase::DISABLED):
{
- // 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 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;
}
- case (DomainsDatabase::DISABLED):
+ case (DomainsDatabase::ENABLED):
{
- // 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 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;
}
- case (DomainsDatabase::ENABLED):
+ case (DomainsDatabase::DISABLED):
{
- // 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 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;
}
- case (DomainsDatabase::DISABLED):
+ case (DomainsDatabase::ENABLED):
{
- // 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 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;
}
- case (DomainsDatabase::ENABLED):
+ case (DomainsDatabase::DISABLED):
{
- // 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 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);
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);
// Update the Ui.
updateUi();
+
+ // Emit the domain settings updated signal.
+ emit domainSettingsUpdated();
}
}
{
// Update the domains table model.
domainsTableModelPointer->setData(domainsSelectionModelPointer->currentIndex().siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::USER_AGENT)),
- UserAgentHelper::getDatabaseUserAgentNameFromTranslatedName(updatedUserAgent));
+ userAgentHelperPointer->getDatabaseUserAgentNameFromTranslatedName(updatedUserAgent));
// Populate the user agent label.
populateUserAgentLabel(updatedUserAgent);
// Display the custom zoom factor from the domain settings.
customZoomFactorSpinBoxPointer->setValue(modelIndex.siblingAtColumn(domainsTableModelPointer->fieldIndex(DomainsDatabase::CUSTOM_ZOOM_FACTOR)).data().toDouble());
- // Set the palette.
+ // Use the highlighted palette.
zoomFactorWidgetPointer->setPalette(highlightedPalette);
}