]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/dialogs/RequestDetailDialog.cpp
Partial filter list implementation.
[PrivacyBrowserPC.git] / src / dialogs / RequestDetailDialog.cpp
diff --git a/src/dialogs/RequestDetailDialog.cpp b/src/dialogs/RequestDetailDialog.cpp
new file mode 100644 (file)
index 0000000..bdc4b6a
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2024 Soren Stoutner <soren@stoutner.com>.
+ *
+ * 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Privacy Browser PC is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * 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 "RequestDetailDialog.h"
+#include "GlobalVariables.h"
+#include "ui_RequestDetailDialog.h"
+#include "structs/RequestStruct.h"
+
+// Qt toolkit headers.
+#include <QDebug>
+
+// KDE Frameworks headers.
+#include <KActionCollection>
+#include <KColorScheme>
+
+// Construct the class.
+RequestDetailDialog::RequestDetailDialog(QWidget *parentWidgetPointer, QByteArray &requestStructByteArray) : QDialog(parentWidgetPointer)
+{
+    // Create a request struct data stream reader.
+    QDataStream requestStructDataStreamReader(requestStructByteArray);
+
+    // Create a new request struct.
+    RequestStruct *requestStructPointer = new RequestStruct();
+
+    // Populate the new request struct.
+    requestStructDataStreamReader >> requestStructPointer->dispositionInt;
+    requestStructDataStreamReader >> requestStructPointer->entryStruct.appliedEntry;
+    requestStructDataStreamReader >> requestStructPointer->entryStruct.originalEntry;
+    requestStructDataStreamReader >> requestStructPointer->filterListTitle;
+    requestStructDataStreamReader >> requestStructPointer->navigationTypeInt;
+    requestStructDataStreamReader >> requestStructPointer->requestMethodString;
+    requestStructDataStreamReader >> requestStructPointer->resourceTypeInt;
+    requestStructDataStreamReader >> requestStructPointer->sublistInt;
+    requestStructDataStreamReader >> requestStructPointer->urlString;
+
+    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;
+
+    // Populate the views.
+    dispositionLineEditPointer->setText(globalFilterListHelperPointer->getDispositionString(requestStructPointer->dispositionInt));
+    urlLineEditPointer->setText(requestStructPointer->urlString);
+    requestMethodLineEditPointer->setText(requestStructPointer->requestMethodString);
+    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);
+    originalEntryLineEditPointer->setText(requestStructPointer->entryStruct.originalEntry);
+
+    // Get the disposition line edit palettes.
+    QPalette normalBackgroundPalette = dispositionLineEditPointer->palette();
+    QPalette negativeBackgroundPalette = normalBackgroundPalette;
+    QPalette positiveBackgroundPalette = normalBackgroundPalette;
+
+    // Modify the palettes.
+    KColorScheme::adjustBackground(negativeBackgroundPalette, KColorScheme::NegativeBackground);
+    KColorScheme::adjustBackground(positiveBackgroundPalette, KColorScheme::PositiveBackground);
+
+    // 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();
+
+            break;
+        }
+
+        case FilterListHelper::ALLOWED:
+        {
+            // Colorize the disposition line edit background.
+            dispositionLineEditPointer->setPalette(positiveBackgroundPalette);
+
+            break;
+        }
+
+        case FilterListHelper::BLOCKED:
+        {
+            // Colorize the disposition line edit background.
+            dispositionLineEditPointer->setPalette(negativeBackgroundPalette);
+
+            break;
+        }
+    }
+
+    // Connect the buttons.
+    connect(dialogButtonBoxPointer, SIGNAL(rejected()), this, SLOT(close()));
+}