X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;ds=inline;f=src%2Fdialogs%2FRequestDetailDialog.cpp;h=78e2f00dc606a93d688f629eb539e5d6d0d0fec7;hb=HEAD;hp=14947fda0b29bf26771be1b67021692086b29e04;hpb=f8f8d907d0caa128abf73696f812f8e92db812b7;p=PrivacyBrowserPC.git diff --git a/src/dialogs/RequestDetailDialog.cpp b/src/dialogs/RequestDetailDialog.cpp index 14947fd..28547e1 100644 --- a/src/dialogs/RequestDetailDialog.cpp +++ b/src/dialogs/RequestDetailDialog.cpp @@ -21,7 +21,6 @@ #include "RequestDetailDialog.h" #include "GlobalVariables.h" #include "ui_RequestDetailDialog.h" -#include "structs/RequestStruct.h" // KDE Frameworks headers. #include @@ -45,24 +44,47 @@ RequestDetailDialog::RequestDetailDialog(QWidget *parentWidgetPointer, QTableWid // Get handles for the views. dispositionLineEditPointer = requestDetailDialogUi.dispositionLineEdit; - urlLineEditPointer = requestDetailDialogUi.urlLineEdit; + webPageUrlLineEditPointer = requestDetailDialogUi.webPageUrlLineEdit; + requestUrlLineEditPointer = requestDetailDialogUi.requestUrlLineEdit; + requestUrlWithSeparatorsLineEditPointer = requestDetailDialogUi.requestUrlWithSeparatorsLineEdit; + truncatedRequestUrlLineEditPointer = requestDetailDialogUi.truncatedRequestUrlLineEdit; + truncatedRequestUrlWithSeparatorsLineEditPointer = requestDetailDialogUi.truncatedRequestUrlWithSeparatorsLineEdit; requestMethodLineEditPointer = requestDetailDialogUi.requestMethodLineEdit; navigationTypeLineEditPointer = requestDetailDialogUi.navigationTypeLineEdit; + thirdPartyRequestLineEditPointer = requestDetailDialogUi.thirdPartyRequestLineEdit; resourceTypeLineEditPointer = requestDetailDialogUi.resourceTypeLineEdit; - horizontalLinePointer = requestDetailDialogUi.horizontalLine; - filterListLabelPointer = requestDetailDialogUi.filterListLabel; + filterListEntryWidget = requestDetailDialogUi.filterListEntryWidget; filterListLineEditPointer = requestDetailDialogUi.filterListLineEdit; - sublistLabelPointer = requestDetailDialogUi.sublistLabel; sublistLineEditPointer = requestDetailDialogUi.sublistListLineEdit; - appliedEntryLabelPointer = requestDetailDialogUi.appliedEntryLabel; - appliedEntryLineEditPointer = requestDetailDialogUi.appliedEntryLineEdit; - originalEntryLabelPointer = requestDetailDialogUi.originalEntryLabel; + appliedEntryListLineEditPointer = requestDetailDialogUi.appliedEntryListLineEdit; + domainLineEditPointer = requestDetailDialogUi.domainLineEdit; + thirdPartyFilterLineEditPointer = requestDetailDialogUi.thirdPartyFilterLineEdit; + initialMatchLineEditPointer = requestDetailDialogUi.initialMatchLineEdit; + finalMatchLineEditPointer = requestDetailDialogUi.finalMatchLineEdit; + domainListLineEditPointer = requestDetailDialogUi.domainListLineEdit; + hasRequestOptionsCheckBoxPointer = requestDetailDialogUi.hasRequestOptionsCheckBox; + fontLineEditPointer = requestDetailDialogUi.fontLineEdit; + imageLineEditPointer = requestDetailDialogUi.imageLineEdit; + mainFrameLineEditPointer = requestDetailDialogUi.mainFrameLineEdit; + mediaLineEditPointer = requestDetailDialogUi.mediaLineEdit; + objectLineEditPointer = requestDetailDialogUi.objectLineEdit; + otherLineEditPointer = requestDetailDialogUi.otherLineEdit; + pingLineEditPointer = requestDetailDialogUi.pingLineEdit; + scriptLineEditPointer = requestDetailDialogUi.scriptLineEdit; + styleSheetLineEditPointer = requestDetailDialogUi.styleSheetLineEdit; + subFrameLineEditPointer = requestDetailDialogUi.subFrameLineEdit; + xmlHttpRequestLineEditPointer = requestDetailDialogUi.xmlHttpRequestLineEdit; + appliedFilterOptionsLineEditPointer = requestDetailDialogUi.appliedFilterOptionsLineEdit; + originalFilterOptionsLineEditPointer = requestDetailDialogUi.originalFilterOptionsLineEdit; originalEntryLineEditPointer = requestDetailDialogUi.originalEntryLineEdit; previousButtonPointer = requestDetailDialogUi.previousButton; nextButtonPointer = requestDetailDialogUi.nextButton; QDialogButtonBox *dialogButtonBoxPointer = requestDetailDialogUi.dialogButtonBox; QPushButton *closeButtonPointer = dialogButtonBoxPointer->button(QDialogButtonBox::StandardButton::Close); + // Disable changing the checkbox checked status. + hasRequestOptionsCheckBoxPointer->setAttribute(Qt::WA_TransparentForMouseEvents); + // Make the close button the default. closeButtonPointer->setDefault(true); @@ -123,30 +145,135 @@ void RequestDetailDialog::populateDialog(const int row) // Populate the new request struct. requestStructDataStreamReader >> requestStructPointer->dispositionInt; - requestStructDataStreamReader >> requestStructPointer->entryStruct.appliedEntry; requestStructDataStreamReader >> requestStructPointer->entryStruct.originalEntry; + requestStructDataStreamReader >> requestStructPointer->entryStruct.originalFilterOptions; + requestStructDataStreamReader >> requestStructPointer->entryStruct.appliedEntryList; + requestStructDataStreamReader >> requestStructPointer->entryStruct.appliedFilterOptionsList; + requestStructDataStreamReader >> requestStructPointer->entryStruct.domainList; + requestStructDataStreamReader >> requestStructPointer->entryStruct.finalMatch; + requestStructDataStreamReader >> requestStructPointer->entryStruct.hasRequestOptions; + requestStructDataStreamReader >> requestStructPointer->entryStruct.initialMatch; + requestStructDataStreamReader >> requestStructPointer->entryStruct.domain; + requestStructDataStreamReader >> requestStructPointer->entryStruct.font; + requestStructDataStreamReader >> requestStructPointer->entryStruct.image; + requestStructDataStreamReader >> requestStructPointer->entryStruct.mainFrame; + requestStructDataStreamReader >> requestStructPointer->entryStruct.media; + requestStructDataStreamReader >> requestStructPointer->entryStruct.object; + requestStructDataStreamReader >> requestStructPointer->entryStruct.other; + requestStructDataStreamReader >> requestStructPointer->entryStruct.ping; + requestStructDataStreamReader >> requestStructPointer->entryStruct.script; + requestStructDataStreamReader >> requestStructPointer->entryStruct.styleSheet; + requestStructDataStreamReader >> requestStructPointer->entryStruct.subFrame; + requestStructDataStreamReader >> requestStructPointer->entryStruct.thirdParty; + requestStructDataStreamReader >> requestStructPointer->entryStruct.xmlHttpRequest; requestStructDataStreamReader >> requestStructPointer->filterListTitle; + requestStructDataStreamReader >> requestStructPointer->isThirdPartyRequest; + requestStructDataStreamReader >> requestStructPointer->matchedUrlType; requestStructDataStreamReader >> requestStructPointer->navigationTypeInt; requestStructDataStreamReader >> requestStructPointer->requestMethodString; requestStructDataStreamReader >> requestStructPointer->resourceTypeInt; requestStructDataStreamReader >> requestStructPointer->sublistInt; + requestStructDataStreamReader >> requestStructPointer->truncatedUrlString; + requestStructDataStreamReader >> requestStructPointer->truncatedUrlStringWithSeparators; requestStructDataStreamReader >> requestStructPointer->urlString; + requestStructDataStreamReader >> requestStructPointer->urlStringWithSeparators; + requestStructDataStreamReader >> requestStructPointer->webPageUrlString; + + // Make a local copy of the has request options boolean. + bool hasRequestOptions = requestStructPointer->entryStruct.hasRequestOptions; // Populate the views. dispositionLineEditPointer->setText(globalFilterListHelperPointer->getDispositionString(requestStructPointer->dispositionInt)); - urlLineEditPointer->setText(requestStructPointer->urlString); + webPageUrlLineEditPointer->setText(requestStructPointer->webPageUrlString); + requestUrlLineEditPointer->setText(requestStructPointer->urlString); + requestUrlWithSeparatorsLineEditPointer->setText(requestStructPointer->urlStringWithSeparators); + truncatedRequestUrlLineEditPointer->setText(requestStructPointer->truncatedUrlString); + truncatedRequestUrlWithSeparatorsLineEditPointer->setText(requestStructPointer->truncatedUrlStringWithSeparators); requestMethodLineEditPointer->setText(requestStructPointer->requestMethodString); + thirdPartyRequestLineEditPointer->setText(requestStructPointer->isThirdPartyRequest ? i18n("Yes") : QLatin1String()); navigationTypeLineEditPointer->setText(globalFilterListHelperPointer->getNavigationTypeString(requestStructPointer->navigationTypeInt)); resourceTypeLineEditPointer->setText(globalFilterListHelperPointer->getResourceTypeString(requestStructPointer->resourceTypeInt)); filterListLineEditPointer->setText(requestStructPointer->filterListTitle); sublistLineEditPointer->setText(globalFilterListHelperPointer->getSublistName(requestStructPointer->sublistInt)); - appliedEntryLineEditPointer->setText(requestStructPointer->entryStruct.appliedEntry); + appliedEntryListLineEditPointer->setText(requestStructPointer->entryStruct.appliedEntryList.join(QLatin1String(" * "))); + domainLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.domain)); + thirdPartyFilterLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.thirdParty)); + initialMatchLineEditPointer->setText(requestStructPointer->entryStruct.initialMatch ? i18n("Yes") : QLatin1String()); + finalMatchLineEditPointer->setText(requestStructPointer->entryStruct.finalMatch ? i18n("Yes") : QLatin1String()); + domainListLineEditPointer->setText(requestStructPointer->entryStruct.domainList.join(QLatin1String(" | "))); + hasRequestOptionsCheckBoxPointer->setChecked(hasRequestOptions); + fontLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.font)); + imageLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.image)); + mainFrameLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.mainFrame)); + mediaLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.media)); + objectLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.object)); + otherLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.other)); + pingLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.ping)); + scriptLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.script)); + styleSheetLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.styleSheet)); + subFrameLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.subFrame)); + xmlHttpRequestLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.xmlHttpRequest)); + appliedFilterOptionsLineEditPointer->setText(requestStructPointer->entryStruct.appliedFilterOptionsList.join(QLatin1String(" , "))); + originalFilterOptionsLineEditPointer->setText(requestStructPointer->entryStruct.originalFilterOptions); originalEntryLineEditPointer->setText(requestStructPointer->entryStruct.originalEntry); + // Set the "Yes" background palettes. + setYesBackgroundPalette(thirdPartyRequestLineEditPointer); + setYesBackgroundPalette(initialMatchLineEditPointer); + setYesBackgroundPalette(finalMatchLineEditPointer); + + // Set the request option background palettes. + setFilterOptionBackgroundPalette(domainLineEditPointer); + setFilterOptionBackgroundPalette(thirdPartyFilterLineEditPointer); + setFilterOptionBackgroundPalette(fontLineEditPointer); + setFilterOptionBackgroundPalette(imageLineEditPointer); + setFilterOptionBackgroundPalette(mainFrameLineEditPointer); + setFilterOptionBackgroundPalette(mediaLineEditPointer); + setFilterOptionBackgroundPalette(objectLineEditPointer); + setFilterOptionBackgroundPalette(otherLineEditPointer); + setFilterOptionBackgroundPalette(pingLineEditPointer); + setFilterOptionBackgroundPalette(scriptLineEditPointer); + setFilterOptionBackgroundPalette(styleSheetLineEditPointer); + setFilterOptionBackgroundPalette(subFrameLineEditPointer); + setFilterOptionBackgroundPalette(xmlHttpRequestLineEditPointer); + + // Set the request option status. + fontLineEditPointer->setEnabled(hasRequestOptions); + imageLineEditPointer->setEnabled(hasRequestOptions); + mainFrameLineEditPointer->setEnabled(hasRequestOptions); + mediaLineEditPointer->setEnabled(hasRequestOptions); + objectLineEditPointer->setEnabled(hasRequestOptions); + otherLineEditPointer->setEnabled(hasRequestOptions); + pingLineEditPointer->setEnabled(hasRequestOptions); + scriptLineEditPointer->setEnabled(hasRequestOptions); + styleSheetLineEditPointer->setEnabled(hasRequestOptions); + subFrameLineEditPointer->setEnabled(hasRequestOptions); + xmlHttpRequestLineEditPointer->setEnabled(hasRequestOptions); + + // Set the domain list line edit to have the same palette as the domain line edit. + domainListLineEditPointer->setPalette(domainLineEditPointer->palette()); + // Set the button status. previousButtonPointer->setEnabled(previousEnabled); nextButtonPointer->setEnabled(nextEnabled); + // Set the sublist background palette. + switch (requestStructPointer->sublistInt) + { + case FilterListHelper::MAIN_ALLOWLIST: + sublistLineEditPointer->setPalette(positiveBackgroundPalette); + break; + + case FilterListHelper::MAIN_BLOCKLIST: + case FilterListHelper::INITIAL_DOMAIN_BLOCKLIST: + case FilterListHelper::REGULAR_EXPRESSION_BLOCKLIST: + sublistLineEditPointer->setPalette(negativeBackgroundPalette); + break; + } + + // Set the applied entry background palette to be the same as the sublist. + appliedEntryListLineEditPointer->setPalette(sublistLineEditPointer->palette()); + // Modify the interface based on the disposition. switch (requestStructPointer->dispositionInt) { @@ -155,16 +282,14 @@ void RequestDetailDialog::populateDialog(const int row) // Reset the disposition line edit background. dispositionLineEditPointer->setPalette(normalBackgroundPalette); - // Hide the views. - horizontalLinePointer->hide(); - filterListLabelPointer->hide(); - filterListLineEditPointer->hide(); - sublistLabelPointer->hide(); - sublistLineEditPointer->hide(); - appliedEntryLabelPointer->hide(); - appliedEntryLineEditPointer->hide(); - originalEntryLabelPointer->hide(); - originalEntryLineEditPointer->hide(); + // Reset the request URL palettes. + requestUrlLineEditPointer->setPalette(normalBackgroundPalette); + requestUrlWithSeparatorsLineEditPointer->setPalette(normalBackgroundPalette); + truncatedRequestUrlLineEditPointer->setPalette(normalBackgroundPalette); + truncatedRequestUrlWithSeparatorsLineEditPointer->setPalette(normalBackgroundPalette); + + // Hide the filter list entry views. + filterListEntryWidget->hide(); break; } @@ -174,16 +299,11 @@ void RequestDetailDialog::populateDialog(const int row) // Colorize the disposition line edit background. dispositionLineEditPointer->setPalette(positiveBackgroundPalette); - // Show the views. - horizontalLinePointer->show(); - filterListLabelPointer->show(); - filterListLineEditPointer->show(); - sublistLabelPointer->show(); - sublistLineEditPointer->show(); - appliedEntryLabelPointer->show(); - appliedEntryLineEditPointer->show(); - originalEntryLabelPointer->show(); - originalEntryLineEditPointer->show(); + // Colorize the request URLs. + setRequestUrlBackgroundPalettes(requestStructPointer->matchedUrlType); + + // Show the filter list entry views. + filterListEntryWidget->show(); break; } @@ -193,16 +313,11 @@ void RequestDetailDialog::populateDialog(const int row) // Colorize the disposition line edit background. dispositionLineEditPointer->setPalette(negativeBackgroundPalette); - // Show the views. - horizontalLinePointer->show(); - filterListLabelPointer->show(); - filterListLineEditPointer->show(); - sublistLabelPointer->show(); - sublistLineEditPointer->show(); - appliedEntryLabelPointer->show(); - appliedEntryLineEditPointer->show(); - originalEntryLabelPointer->show(); - originalEntryLineEditPointer->show(); + // Colorize the request URLs. + setRequestUrlBackgroundPalettes(requestStructPointer->matchedUrlType); + + // Show the filter list entry views. + filterListEntryWidget->show(); break; } @@ -226,3 +341,97 @@ void RequestDetailDialog::next() // Populate the dialog. populateDialog(currentRow); } + +void RequestDetailDialog::setFilterOptionBackgroundPalette(QLineEdit *lineEditPointer) +{ + // Set the background palette according to the text. + if (lineEditPointer->text() == globalFilterListHelperPointer->getRequestOptionDispositionString(FilterOptionDisposition::Null)) // Not text is displayed. + { + // Set the normal background palette. + lineEditPointer->setPalette(normalBackgroundPalette); + } + else if (lineEditPointer->text() == globalFilterListHelperPointer->getRequestOptionDispositionString(FilterOptionDisposition::Apply)) // `Apply` is displayed. + { + // Set the negative (red) background palette. + lineEditPointer->setPalette(negativeBackgroundPalette); + } + else // `Override` is displayed. + { + // Set the positive (green) background palette. + lineEditPointer->setPalette(positiveBackgroundPalette); + } +} + +void RequestDetailDialog::setRequestUrlBackgroundPalettes(RequestUrlType matchedUrlType) +{ + // Colorize the request URL strings according to the matched URL. + switch (matchedUrlType) + { + case RequestUrlType::Url: // URL. + { + // Set the request URL palette to match the disposition line edit. + requestUrlLineEditPointer->setPalette(dispositionLineEditPointer->palette()); + + // Reset the other palettes. + requestUrlWithSeparatorsLineEditPointer->setPalette(normalBackgroundPalette); + truncatedRequestUrlLineEditPointer->setPalette(normalBackgroundPalette); + truncatedRequestUrlWithSeparatorsLineEditPointer->setPalette(normalBackgroundPalette); + + break; + } + + case RequestUrlType::UrlWithSeparators: // URL with separators. + { + // Set the request URL with separators palette to match the disposition line edit. + requestUrlWithSeparatorsLineEditPointer->setPalette(dispositionLineEditPointer->palette()); + + // Reset the other palettes. + requestUrlLineEditPointer->setPalette(normalBackgroundPalette); + truncatedRequestUrlLineEditPointer->setPalette(normalBackgroundPalette); + truncatedRequestUrlWithSeparatorsLineEditPointer->setPalette(normalBackgroundPalette); + + break; + } + + case RequestUrlType::TruncatedUrl: // Truncated URL. + { + // Set the truncated request URL palette to match the disposition line edit. + truncatedRequestUrlLineEditPointer->setPalette(dispositionLineEditPointer->palette()); + + // Reset the other palettes. + requestUrlLineEditPointer->setPalette(normalBackgroundPalette); + requestUrlWithSeparatorsLineEditPointer->setPalette(normalBackgroundPalette); + truncatedRequestUrlWithSeparatorsLineEditPointer->setPalette(normalBackgroundPalette); + + break; + } + + case RequestUrlType::TruncatedUrlWithSeparators: // Truncated URL with separators. + { + // Set the truncated request URL with separators palette to match the disposition line edit. + truncatedRequestUrlWithSeparatorsLineEditPointer->setPalette(dispositionLineEditPointer->palette()); + + // Reset the other palettes. + requestUrlLineEditPointer->setPalette(normalBackgroundPalette); + requestUrlWithSeparatorsLineEditPointer->setPalette(normalBackgroundPalette); + truncatedRequestUrlLineEditPointer->setPalette(normalBackgroundPalette); + + break; + } + } +} + +void RequestDetailDialog::setYesBackgroundPalette(QLineEdit *lineEditPointer) +{ + // Set the background palette according to the text. + if (lineEditPointer->text() == i18n("Yes")) // `Yes` is displayed. + { + // Set the negative (red) background palette. + lineEditPointer->setPalette(negativeBackgroundPalette); + } + else // No text is displayed. + { + // Set the normal background palette. + lineEditPointer->setPalette(normalBackgroundPalette); + } +}