X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=src%2Fdialogs%2FAddOrEditCookieDialog.cpp;h=bb07c421fc4f6eab6bb4d00031be7fb3b06af2ca;hb=refs%2Fheads%2Fmaster;hp=78234a68b1119e29908cb8f6b48e41ff774b46d8;hpb=2facce32fb6d97b52a7dc148044cae4b36a65d4c;p=PrivacyBrowserPC.git diff --git a/src/dialogs/AddOrEditCookieDialog.cpp b/src/dialogs/AddOrEditCookieDialog.cpp index 78234a6..bb07c42 100644 --- a/src/dialogs/AddOrEditCookieDialog.cpp +++ b/src/dialogs/AddOrEditCookieDialog.cpp @@ -1,5 +1,5 @@ /* - * Copyright © 2022 Soren Stoutner . + * Copyright 2022-2024 Soren Stoutner . * * This file is part of Privacy Browser PC . * @@ -20,6 +20,7 @@ // Application headers. #include "AddOrEditCookieDialog.h" #include "ui_AddOrEditCookieDialog.h" +#include "databases/CookiesDatabase.h" // KDE Framework headers. #include @@ -33,7 +34,7 @@ const int AddOrEditCookieDialog::AddCookie = 0; const int AddOrEditCookieDialog::EditCookie = 1; // Construct the class. -AddOrEditCookieDialog::AddOrEditCookieDialog(const int &dialogType, const QNetworkCookie *cookiePointer) : QDialog(nullptr) +AddOrEditCookieDialog::AddOrEditCookieDialog(QWidget *parentWidgetPointer, const int dialogType, const QNetworkCookie *cookiePointer, const bool isDurable) : QDialog(parentWidgetPointer) { // Set the dialog window title according to the dialog type. if (dialogType == AddCookie) @@ -41,13 +42,14 @@ AddOrEditCookieDialog::AddOrEditCookieDialog(const int &dialogType, const QNetwo else setWindowTitle(i18nc("The edit cookie dialog window title.", "Edit Cookie")); - // Populate the is edit dialog boolean. + // Populate the class variables. isEditDialog = (dialogType == EditCookie); + originalIsDurable = isDurable; // Set the window modality. setWindowModality(Qt::WindowModality::ApplicationModal); - // Instantiate the cookie settings dialog UI. + // Instantiate the cookie dialog UI. Ui::AddOrEditCookieDialog addOrEditCookieDialogUi; // Setup the UI. @@ -56,6 +58,7 @@ AddOrEditCookieDialog::AddOrEditCookieDialog(const int &dialogType, const QNetwo // Get handles for the widgets. domainLineEditPointer = addOrEditCookieDialogUi.domainLineEdit; nameLineEditPointer = addOrEditCookieDialogUi.nameLineEdit; + durableCheckBoxPointer = addOrEditCookieDialogUi.durableCheckBox; expirationCheckBoxPointer = addOrEditCookieDialogUi.expirationCheckBox; expirationDateTimeEditPointer = addOrEditCookieDialogUi.expirationDateTimeEdit; pathLineEditPointer = addOrEditCookieDialogUi.pathLineEdit; @@ -69,18 +72,25 @@ AddOrEditCookieDialog::AddOrEditCookieDialog(const int &dialogType, const QNetwo if (isEditDialog) { // Store the old cookie. - oldCookie = *cookiePointer; + originalCookie = *cookiePointer; // Populate the widgets. - domainLineEditPointer->setText(oldCookie.domain()); - nameLineEditPointer->setText(oldCookie.name()); - pathLineEditPointer->setText(oldCookie.path()); - httpOnlyCheckBoxPointer->setChecked(oldCookie.isHttpOnly()); - secureCheckBoxPointer->setChecked(oldCookie.isSecure()); - valueLineEditPointer->setText(oldCookie.value()); + domainLineEditPointer->setText(originalCookie.domain()); + durableCheckBoxPointer->setChecked(originalIsDurable); + nameLineEditPointer->setText(originalCookie.name()); + pathLineEditPointer->setText(originalCookie.path()); + httpOnlyCheckBoxPointer->setChecked(originalCookie.isHttpOnly()); + secureCheckBoxPointer->setChecked(originalCookie.isSecure()); + valueLineEditPointer->setText(originalCookie.value()); + + // Scroll to the beginning of the line edits. + domainLineEditPointer->setCursorPosition(0); + nameLineEditPointer->setCursorPosition(0); + pathLineEditPointer->setCursorPosition(0); + valueLineEditPointer->setCursorPosition(0); // Populate the expiration date if it exists. - if (!oldCookie.isSessionCookie()) + if (!originalCookie.isSessionCookie()) { // Check the expiration box. expirationCheckBoxPointer->setChecked(true); @@ -89,7 +99,7 @@ AddOrEditCookieDialog::AddOrEditCookieDialog(const int &dialogType, const QNetwo expirationDateTimeEditPointer->setEnabled(true); // Set the expiration date. - expirationDateTimeEditPointer->setDateTime(oldCookie.expirationDate()); + expirationDateTimeEditPointer->setDateTime(originalCookie.expirationDate()); } } @@ -114,13 +124,13 @@ void AddOrEditCookieDialog::saveCookie() { // Delete the old cookie if this is an edit dialog. if (isEditDialog) - emit deleteCookie(oldCookie); + emit deleteCookie(originalCookie); // Create the variables. QNetworkCookie cookie; // Populate the cookie. - cookie.setDomain(domainLineEditPointer->text()); + cookie.setDomain(domainLineEditPointer->text().toLower()); cookie.setName(nameLineEditPointer->text().toUtf8()); cookie.setPath(pathLineEditPointer->text()); cookie.setHttpOnly(httpOnlyCheckBoxPointer->isChecked()); @@ -130,11 +140,40 @@ void AddOrEditCookieDialog::saveCookie() // Populate the expiration date if it is specified. if (expirationCheckBoxPointer->isChecked()) cookie.setExpirationDate(expirationDateTimeEditPointer->dateTime()); - // Add the cookie. - emit addCookie(cookie); + // Get the durable status. + const bool isDurable = durableCheckBoxPointer->isChecked(); + + // Update the durable cookies database. + if (originalIsDurable) // The cookie is currently in the durable cookies database. + { + if (isDurable) // Update the cookie in the database. + { + qDebug() << "Updating a durable cookie."; + + // Update the cookie in the durable cookies database. + CookiesDatabase::updateCookie(originalCookie, cookie); + } + else // Delete the cookie from the database. + { + qDebug() << "Deleting a durable cookie."; + + // Delete the cookie from the durable cookies database. + CookiesDatabase::deleteCookie(originalCookie); + } + } + else if (isDurable) // The cookie is being added to the durable cookies database. + { + qDebug() << "Adding a durable cookie."; + + // Add the cookie to the durable cookies database. + CookiesDatabase::addCookie(cookie); + } + + // Add the cookie to the store, the list, and the tree. + emit addCookie(cookie, isDurable); // Close the dialog. - reject(); + close(); } void AddOrEditCookieDialog::updateExpirationDateTimeState(const int &newState) const