X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;ds=inline;f=src%2Fdialogs%2FRequestDetailDialog.cpp;h=78e2f00dc606a93d688f629eb539e5d6d0d0fec7;hb=HEAD;hp=bdc4b6ae136da38f6f327e5147c2e681c64865a3;hpb=a44e607fb5398c80c5de2629017865ae749e8fbf;p=PrivacyBrowserPC.git diff --git a/src/dialogs/RequestDetailDialog.cpp b/src/dialogs/RequestDetailDialog.cpp index bdc4b6a..28547e1 100644 --- a/src/dialogs/RequestDetailDialog.cpp +++ b/src/dialogs/RequestDetailDialog.cpp @@ -21,18 +21,122 @@ #include "RequestDetailDialog.h" #include "GlobalVariables.h" #include "ui_RequestDetailDialog.h" -#include "structs/RequestStruct.h" - -// Qt toolkit headers. -#include // KDE Frameworks headers. #include #include +// Qt toolkit headers. +#include + // Construct the class. -RequestDetailDialog::RequestDetailDialog(QWidget *parentWidgetPointer, QByteArray &requestStructByteArray) : QDialog(parentWidgetPointer) +RequestDetailDialog::RequestDetailDialog(QWidget *parentWidgetPointer, QTableWidget *tableWidgetPointer, const int initialRow) : + QDialog(parentWidgetPointer), currentRow(initialRow), tableWidgetPointer(tableWidgetPointer) +{ + // Set the window modality. + setWindowModality(Qt::WindowModality::ApplicationModal); + + // Instantiate the request detail dialog UI. + Ui::RequestDetailDialog requestDetailDialogUi; + + // Setup the UI. + requestDetailDialogUi.setupUi(this); + + // Get handles for the views. + dispositionLineEditPointer = requestDetailDialogUi.dispositionLineEdit; + 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; + filterListEntryWidget = requestDetailDialogUi.filterListEntryWidget; + filterListLineEditPointer = requestDetailDialogUi.filterListLineEdit; + sublistLineEditPointer = requestDetailDialogUi.sublistListLineEdit; + 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); + + // Get the disposition line edit palettes. + normalBackgroundPalette = dispositionLineEditPointer->palette(); + negativeBackgroundPalette = normalBackgroundPalette; + positiveBackgroundPalette = normalBackgroundPalette; + + // Modify the palettes. + KColorScheme::adjustBackground(negativeBackgroundPalette, KColorScheme::NegativeBackground); + KColorScheme::adjustBackground(positiveBackgroundPalette, KColorScheme::PositiveBackground); + + // Connect the buttons. + connect(previousButtonPointer, SIGNAL(clicked()), this, SLOT(previous())); + connect(nextButtonPointer, SIGNAL(clicked()), this, SLOT(next())); + connect(dialogButtonBoxPointer, SIGNAL(rejected()), this, SLOT(close())); + + // Create the keyboard shortcuts. + QShortcut *previousShortcutPointer = new QShortcut(Qt::Key_Left, this); + QShortcut *nextShortcutPointer = new QShortcut(Qt::Key_Right, this); + + // Connect the keyboard shortcuts to the buttons. + connect(previousShortcutPointer, SIGNAL(activated()), previousButtonPointer, SLOT(click())); + connect(nextShortcutPointer, SIGNAL(activated()), nextButtonPointer, SLOT(click())); + + // Populate the dialog. + populateDialog(currentRow); +} + +void RequestDetailDialog::populateDialog(const int row) { + // Set the window title. + setWindowTitle(i18nc("The request detail dialog window title", "Request %1 Detail", row + 1)); + + // Select the row in the table widget (this displays the correct row highlighted in the background of the dialog). + tableWidgetPointer->selectRow(row); + + // Get the first table widget item in the row. + QTableWidgetItem *rowFirstTableWidgetItemPointer = tableWidgetPointer->item(row, 0); + + // Get the data variant. + QVariant dataVariant = rowFirstTableWidgetItemPointer->data(Qt::UserRole); + + // Get the request struct byte array from the data variant. + QByteArray requestStructByteArray = dataVariant.toByteArray(); + + // Determine if previous should be enabled. + bool previousEnabled = (row > 0); + + // Determine if next should be enabled. + bool nextEnabled = (row < (tableWidgetPointer->rowCount() - 1)); + // Create a request struct data stream reader. QDataStream requestStructDataStreamReader(requestStructByteArray); @@ -41,89 +145,151 @@ RequestDetailDialog::RequestDetailDialog(QWidget *parentWidgetPointer, QByteArra // 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; - qDebug().noquote().nospace() << "Disposition: " << requestStructPointer->dispositionInt; - qDebug().noquote().nospace() << "Applied Entry: " << requestStructPointer->entryStruct.appliedEntry; - qDebug().noquote().nospace() << "Original Entry: " << requestStructPointer->entryStruct.originalEntry; - qDebug().noquote().nospace() << "Filter List: " << requestStructPointer->filterListTitle; - qDebug().noquote().nospace() << "Request Method: " << requestStructPointer->requestMethodString; - qDebug().noquote().nospace() << "Navigation Type: " << requestStructPointer->navigationTypeInt; - qDebug().noquote().nospace() << "Resource Type: " << requestStructPointer->resourceTypeInt; - qDebug().noquote().nospace() << "Sublist: " << requestStructPointer->sublistInt; - qDebug().noquote().nospace() << "URL: " << requestStructPointer->urlString; - - // Set the window title. - setWindowTitle(i18nc("The request detail dialog window title", "Request Detail")); - - // Set the window modality. - setWindowModality(Qt::WindowModality::ApplicationModal); - - // Instantiate the request detail dialog UI. - Ui::RequestDetailDialog requestDetailDialogUi; - - // Setup the UI. - requestDetailDialogUi.setupUi(this); - - // Get handles for the views. - QLineEdit *dispositionLineEditPointer = requestDetailDialogUi.dispositionLineEdit; - QLineEdit *urlLineEditPointer = requestDetailDialogUi.urlLineEdit; - QLineEdit *requestMethodLineEditPointer = requestDetailDialogUi.requestMethodLineEdit; - QLineEdit *navigationTypeLineEditPointer = requestDetailDialogUi.navigationTypeLineEdit; - QLineEdit *resourceTypeLineEditPointer = requestDetailDialogUi.resourceTypeLineEdit; - QFrame *horizontalLinePointer = requestDetailDialogUi.horizontalLine; - QLabel *filterListLabelPointer = requestDetailDialogUi.filterListLabel; - QLineEdit *filterListLineEditPointer = requestDetailDialogUi.filterListLineEdit; - QLabel *sublistLabelPointer = requestDetailDialogUi.sublistLabel; - QLineEdit *sublistLineEditPointer = requestDetailDialogUi.sublistListLineEdit; - QLabel *appliedEntryLabelPointer = requestDetailDialogUi.appliedEntryLabel; - QLineEdit *appliedEntryLineEditPointer = requestDetailDialogUi.appliedEntryLineEdit; - QLabel *originalEntryLabelPointer = requestDetailDialogUi.originalEntryLabel; - QLineEdit *originalEntryLineEditPointer = requestDetailDialogUi.originalEntryLineEdit; - QDialogButtonBox *dialogButtonBoxPointer = requestDetailDialogUi.dialogButtonBox; + // 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); - // Get the disposition line edit palettes. - QPalette normalBackgroundPalette = dispositionLineEditPointer->palette(); - QPalette negativeBackgroundPalette = normalBackgroundPalette; - QPalette positiveBackgroundPalette = normalBackgroundPalette; + // Set the "Yes" background palettes. + setYesBackgroundPalette(thirdPartyRequestLineEditPointer); + setYesBackgroundPalette(initialMatchLineEditPointer); + setYesBackgroundPalette(finalMatchLineEditPointer); - // Modify the palettes. - KColorScheme::adjustBackground(negativeBackgroundPalette, KColorScheme::NegativeBackground); - KColorScheme::adjustBackground(positiveBackgroundPalette, KColorScheme::PositiveBackground); + // 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) { case FilterListHelper::DEFAULT: { - // Hide the filter list views. - horizontalLinePointer->hide(); - filterListLabelPointer->hide(); - filterListLineEditPointer->hide(); - sublistLabelPointer->hide(); - sublistLineEditPointer->hide(); - appliedEntryLabelPointer->hide(); - appliedEntryLineEditPointer->hide(); - originalEntryLabelPointer->hide(); - originalEntryLineEditPointer->hide(); + // Reset the disposition line edit background. + dispositionLineEditPointer->setPalette(normalBackgroundPalette); + + // 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; } @@ -133,6 +299,12 @@ RequestDetailDialog::RequestDetailDialog(QWidget *parentWidgetPointer, QByteArra // Colorize the disposition line edit background. dispositionLineEditPointer->setPalette(positiveBackgroundPalette); + // Colorize the request URLs. + setRequestUrlBackgroundPalettes(requestStructPointer->matchedUrlType); + + // Show the filter list entry views. + filterListEntryWidget->show(); + break; } @@ -141,10 +313,125 @@ RequestDetailDialog::RequestDetailDialog(QWidget *parentWidgetPointer, QByteArra // Colorize the disposition line edit background. dispositionLineEditPointer->setPalette(negativeBackgroundPalette); + // Colorize the request URLs. + setRequestUrlBackgroundPalettes(requestStructPointer->matchedUrlType); + + // Show the filter list entry views. + filterListEntryWidget->show(); + break; } } +} - // Connect the buttons. - connect(dialogButtonBoxPointer, SIGNAL(rejected()), this, SLOT(close())); +void RequestDetailDialog::previous() +{ + // Update the current row. + --currentRow; + + // Populate the dialog. + populateDialog(currentRow); +} + +void RequestDetailDialog::next() +{ + // Update the current row. + ++currentRow; + + // 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); + } }