+ // Wipe the current table.
+ sublistTableWidgetPointer->clear();
+ sublistTableWidgetPointer->setColumnCount(0);
+ sublistTableWidgetPointer->setRowCount(0);
+
+ // Get the filter list struct.
+ FilterListStruct *filterListStructPointer = getFilterListStruct(filterListComboBoxPointer->currentIndex());
+
+ // Create a filter list forward list.
+ std::forward_list<EntryStruct *> *filterListForwardListPointer;
+
+ // Populate the filter list forward list.
+ switch (sublistComboBoxIndex)
+ {
+ case FilterListHelper::MAIN_ALLOWLIST: // The main allow list.
+ filterListForwardListPointer = filterListStructPointer->mainAllowListPointer;
+ break;
+
+ case FilterListHelper::MAIN_BLOCKLIST: // The main block list.
+ filterListForwardListPointer = filterListStructPointer->mainBlockListPointer;
+ break;
+
+ case FilterListHelper::INITIAL_DOMAIN_BLOCKLIST: // The initial domain block list.
+ filterListForwardListPointer = filterListStructPointer->initialDomainBlockListPointer;
+ break;
+
+ case FilterListHelper::REGULAR_EXPRESSION_BLOCKLIST: // the regular expression block list.
+ filterListForwardListPointer = filterListStructPointer->regularExpressionBlockListPointer;
+ break;
+ }
+
+ // Create the columns.
+ sublistTableWidgetPointer->setColumnCount(21);
+
+ // Create the table headers.
+ QTableWidgetItem *appliedEntryListHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist applied entry list header", "Applied Entry List"));
+ QTableWidgetItem *initialMatchHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist initial match header", "Initial Match"));
+ QTableWidgetItem *finalMatchHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist final match header", "Final Match"));
+ QTableWidgetItem *domainHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist domain header", "Domain"));
+ QTableWidgetItem *domainListHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist domain list Header", "Domain List"));
+ QTableWidgetItem *thirdPartyHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist third-party header", "Third Party"));
+ QTableWidgetItem *hasRequestOptionsHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist has request options header", "Has Request Options"));
+ QTableWidgetItem *fontHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist font header", "Font"));
+ QTableWidgetItem *imageHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist image header", "Image"));
+ QTableWidgetItem *mainFrameHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist main frame header", "Main Frame"));
+ QTableWidgetItem *mediaHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist media header", "Media"));
+ QTableWidgetItem *objectHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist object header", "Object"));
+ QTableWidgetItem *otherHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist object header", "Other"));
+ QTableWidgetItem *pingHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist ping header", "Ping"));
+ QTableWidgetItem *scriptHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist script header", "Script"));
+ QTableWidgetItem *styleSheetHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist style sheet header", "Style Sheet"));
+ QTableWidgetItem *subFrameHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist sub frame header", "Sub Frame"));
+ QTableWidgetItem *xmlHttpRequestHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist XML HTTP request header", "XML HTTP Request"));
+ QTableWidgetItem *appliedFilterOptionsHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist applied filter options header", "Applied Filter Options"));
+ QTableWidgetItem *originalFilterOptionsHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist original filter options header", "Original Filter Options"));
+ QTableWidgetItem *originalEntryHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist original entry header", "Original Entry"));
+
+ // Set the horizontal headers.
+ sublistTableWidgetPointer->setHorizontalHeaderItem(0, appliedEntryListHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(1, initialMatchHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(2, finalMatchHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(3, domainHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(4, domainListHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(5, thirdPartyHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(6, hasRequestOptionsHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(7, fontHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(8, imageHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(9, mainFrameHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(10, mediaHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(11, objectHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(12, otherHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(13, pingHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(14, scriptHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(15, styleSheetHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(16, subFrameHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(17, xmlHttpRequestHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(18, appliedFilterOptionsHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(19, originalFilterOptionsHeaderItemPointer);
+ sublistTableWidgetPointer->setHorizontalHeaderItem(20, originalEntryHeaderItemPointer);
+
+ // Initialize the row counter.
+ int rowCounter = 0;
+
+ // Populate the table.
+ for (auto filterListEntry = filterListForwardListPointer->begin(); filterListEntry != filterListForwardListPointer->end(); ++filterListEntry) {
+ // Get the entry struct.
+ EntryStruct *entryStructPointer = *filterListEntry;
+
+ // Add a new row.
+ sublistTableWidgetPointer->insertRow(rowCounter);
+
+ // Create the entry items.
+ QTableWidgetItem *appliedEntryListItemPointer = new QTableWidgetItem(entryStructPointer->appliedEntryList.join(QLatin1String(" * ")));
+ QTableWidgetItem *initialMatchItemPointer = new QTableWidgetItem(entryStructPointer->initialMatch ? i18n("Yes") : QLatin1String());
+ QTableWidgetItem *finalMatchItemPointer = new QTableWidgetItem(entryStructPointer->finalMatch ? i18n("Yes") : QLatin1String());
+ QTableWidgetItem *domainItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->domain));
+ QTableWidgetItem *domainListItemPointer = new QTableWidgetItem(entryStructPointer->domainList.join(QLatin1String(" | ")));
+ QTableWidgetItem *thirdPartyItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->thirdParty));
+ QTableWidgetItem *hasRequestOptionsItemPointer = new QTableWidgetItem(entryStructPointer->hasRequestOptions ? i18n("Yes") : QLatin1String());
+ QTableWidgetItem *fontItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->font));
+ QTableWidgetItem *imageItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->image));
+ QTableWidgetItem *mainFrameItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->mainFrame));
+ QTableWidgetItem *mediaItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->media));
+ QTableWidgetItem *objectItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->object));
+ QTableWidgetItem *otherItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->other));
+ QTableWidgetItem *pingItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->ping));
+ QTableWidgetItem *scriptItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->script));
+ QTableWidgetItem *styleSheetItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->styleSheet));
+ QTableWidgetItem *subFrameItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->subFrame));
+ QTableWidgetItem *xmlHttpRequestItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->xmlHttpRequest));
+ QTableWidgetItem *appliedFilterOptionsItemPointer = new QTableWidgetItem(entryStructPointer->appliedFilterOptionsList.join(QLatin1String(" , ")));
+ QTableWidgetItem *originalFilterOptionsItemPointer = new QTableWidgetItem(entryStructPointer->originalFilterOptions);
+ QTableWidgetItem *originalEntryItemPointer = new QTableWidgetItem(entryStructPointer->originalEntry);
+
+ // Add the entries to the table.
+ sublistTableWidgetPointer->setItem(rowCounter, 0, appliedEntryListItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 1, initialMatchItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 2, finalMatchItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 3, domainItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 4, domainListItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 5, thirdPartyItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 6, hasRequestOptionsItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 7, fontItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 8, imageItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 9, mainFrameItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 10, mediaItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 11, objectItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 12, otherItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 13, pingItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 14, scriptItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 15, styleSheetItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 16, subFrameItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 17, xmlHttpRequestItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 18, appliedFilterOptionsItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 19, originalFilterOptionsItemPointer);
+ sublistTableWidgetPointer->setItem(rowCounter, 20, originalEntryItemPointer);
+
+ // Increment the row counter.
+ ++rowCounter;
+ }
+
+ // Get the table header view.
+ QHeaderView *headerViewPointer = sublistTableWidgetPointer->horizontalHeader();
+
+ // Resize the header to fit the contents.
+ headerViewPointer->resizeSections(QHeaderView::ResizeToContents);
+
+ // Connect changes in the sort order.
+ connect(headerViewPointer, SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), this, SLOT(sortTable(int, Qt::SortOrder)));