X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=src%2Fdialogs%2FFilterListsDialog.cpp;fp=src%2Fdialogs%2FFilterListsDialog.cpp;h=2d019d87e22b6814c5077723a3963545cebbfda9;hb=be625d0fcb1f4e8184ed62a28d23629f8c246d8e;hp=0ab6753780d1abe958ee75cd9830b8b5f46aebbe;hpb=f8f8d907d0caa128abf73696f812f8e92db812b7;p=PrivacyBrowserPC.git diff --git a/src/dialogs/FilterListsDialog.cpp b/src/dialogs/FilterListsDialog.cpp index 0ab6753..2d019d8 100644 --- a/src/dialogs/FilterListsDialog.cpp +++ b/src/dialogs/FilterListsDialog.cpp @@ -21,9 +21,10 @@ #include "FilterListsDialog.h" #include "GlobalVariables.h" #include "ui_FilterListsDialog.h" -#include "delegates/ViewAndCopyDelegate.h" +#include "dialogs/FilterEntryDialog.h" // Qt toolkit headers. +#include #include #include @@ -49,11 +50,11 @@ FilterListsDialog::FilterListsDialog(QWidget *parentWidgetPointer) : QDialog(par sublistTableWidgetPointer = filterListsDialogUi.sublistTableWidget; QDialogButtonBox *dialogButtonBoxPointer = filterListsDialogUi.dialogButtonBox; - // Create a view and copy delegate. - ViewAndCopyDelegate *viewAndCopyDelegate = new ViewAndCopyDelegate(this); + // Select an entire row at a time. + sublistTableWidgetPointer->setSelectionBehavior(QAbstractItemView::SelectRows); - // Set the sublist table widget allow copying but not editing. - sublistTableWidgetPointer->setItemDelegate(viewAndCopyDelegate); + // Open the filter entry dialog when a cell is clicked. + connect(sublistTableWidgetPointer, SIGNAL(cellClicked(int, int)), this, SLOT(showFilterEntryDialog(int))); // Connect the combo boxes. connect(filterListComboBoxPointer, SIGNAL(currentIndexChanged(int)), this, SLOT(populateFilterListTextEdit(int))); @@ -63,47 +64,54 @@ FilterListsDialog::FilterListsDialog(QWidget *parentWidgetPointer) : QDialog(par connect(dialogButtonBoxPointer, SIGNAL(rejected()), this, SLOT(close())); // Populate the filter list combo box. - populateFilterListComboBox(globalFilterListHelperPointer->ultraListStructPointer); populateFilterListComboBox(globalFilterListHelperPointer->ultraPrivacyStructPointer); - populateFilterListComboBox(globalFilterListHelperPointer->easyListStructPointer); + populateFilterListComboBox(globalFilterListHelperPointer->ultraListStructPointer); populateFilterListComboBox(globalFilterListHelperPointer->easyPrivacyStructPointer); + populateFilterListComboBox(globalFilterListHelperPointer->easyListStructPointer); populateFilterListComboBox(globalFilterListHelperPointer->fanboyAnnoyanceStructPointer); } -void FilterListsDialog::populateFilterListComboBox(const FilterListStruct *filterListStructPointer) const +std::forward_list* FilterListsDialog::getFilterListForwardList(FilterListStruct *filterListStructPointer) const { - // Populate the filter list combo box. - filterListComboBoxPointer->addItem(i18nc("Filter list combo box items", "%1 - %2", filterListStructPointer->title, filterListStructPointer->version)); + // Return the filter list forward list. + switch (sublistComboBoxPointer->currentIndex()) + { + case FilterListHelper::MAIN_ALLOWLIST: return filterListStructPointer->mainAllowListPointer; // The main allow list. + case FilterListHelper::MAIN_BLOCKLIST: return filterListStructPointer->mainBlockListPointer; // The main block list. + case FilterListHelper::INITIAL_DOMAIN_BLOCKLIST: return filterListStructPointer->initialDomainBlockListPointer; // The initial domain block list. + case FilterListHelper::REGULAR_EXPRESSION_BLOCKLIST: return filterListStructPointer->regularExpressionBlockListPointer; // The regular expression block list. + } + + // This return statement should never be reached. + return new std::forward_list; } -void FilterListsDialog::populateFilterListTextEdit(int filterListComboBoxInt) const +FilterListStruct *FilterListsDialog::getFilterListStruct(int filterListComboBoxIndex) const { - // Create the filter list struct pointer. - FilterListStruct *filterListStructPointer; - - // Get the indicated filter list map. - switch (filterListComboBoxInt) + // Return the filer list struct. + switch (filterListComboBoxIndex) { - case 0: // UltraList. - filterListStructPointer = globalFilterListHelperPointer->ultraListStructPointer; - break; - - case 1: // UltraPrivacy. - filterListStructPointer = globalFilterListHelperPointer->ultraPrivacyStructPointer; - break; + case 0: return globalFilterListHelperPointer->ultraPrivacyStructPointer; // UltraPrivacy. + case 1: return globalFilterListHelperPointer->ultraListStructPointer; // UltraList. + case 2: return globalFilterListHelperPointer->easyPrivacyStructPointer; // EasyPrivacy. + case 3: return globalFilterListHelperPointer->easyListStructPointer; // EasyList. + case 4: return globalFilterListHelperPointer->fanboyAnnoyanceStructPointer; // Fanboy's Annoyance List. + } - case 2: // EasyList. - filterListStructPointer = globalFilterListHelperPointer->easyListStructPointer; - break; + // This return statement should never be reached. + return new FilterListStruct; +} - case 3: // EasyPrivacy. - filterListStructPointer = globalFilterListHelperPointer->easyPrivacyStructPointer; - break; +void FilterListsDialog::populateFilterListComboBox(const FilterListStruct *filterListStructPointer) const +{ + // Populate the filter list combo box. + filterListComboBoxPointer->addItem(i18nc("Filter list combo box items", "%1 - %2", filterListStructPointer->title, filterListStructPointer->version)); +} - case 4: // Fanboy's Annoyance List. - filterListStructPointer = globalFilterListHelperPointer->fanboyAnnoyanceStructPointer; - break; - } +void FilterListsDialog::populateFilterListTextEdit(int filterListComboBoxIndex) const +{ + // Get the filter list struct. + FilterListStruct *filterListStructPointer = getFilterListStruct(filterListComboBoxIndex); // Get the filter list file. QFile filterListFile(filterListStructPointer->filePath); @@ -121,168 +129,194 @@ void FilterListsDialog::populateFilterListTextEdit(int filterListComboBoxInt) co sublistComboBoxPointer->clear(); // Calculate the size of the filter lists. - int mainAllowListSize = distance(filterListStructPointer->mainAllowList.begin(), filterListStructPointer->mainAllowList.end()); - int mainBlockListSize = distance(filterListStructPointer->mainBlockList.begin(), filterListStructPointer->mainBlockList.end()); - int initialDomainBlockListSize = distance(filterListStructPointer->initialDomainBlockList.begin(), filterListStructPointer->initialDomainBlockList.end()); + int mainAllowListSize = distance(filterListStructPointer->mainAllowListPointer->begin(), filterListStructPointer->mainAllowListPointer->end()); + int mainBlockListSize = distance(filterListStructPointer->mainBlockListPointer->begin(), filterListStructPointer->mainBlockListPointer->end()); + int initialDomainBlockListSize = distance(filterListStructPointer->initialDomainBlockListPointer->begin(), filterListStructPointer->initialDomainBlockListPointer->end()); + int regularExpressionBlockListSize = distance(filterListStructPointer->regularExpressionBlockListPointer->begin(), filterListStructPointer->regularExpressionBlockListPointer->end()); // Get the translated filter list names. QString mainAllowListName = globalFilterListHelperPointer->getSublistName(FilterListHelper::MAIN_ALLOWLIST); QString mainBlockListName = globalFilterListHelperPointer->getSublistName(FilterListHelper::MAIN_BLOCKLIST); QString initialDomainBlockListName = globalFilterListHelperPointer->getSublistName(FilterListHelper::INITIAL_DOMAIN_BLOCKLIST); + QString regularExpressionBlockListName = globalFilterListHelperPointer->getSublistName(FilterListHelper::REGULAR_EXPRESSION_BLOCKLIST); // Populate the sublist combo box. sublistComboBoxPointer->addItem(i18nc("The main allow list", "%1 - %2", mainAllowListName, mainAllowListSize)); sublistComboBoxPointer->addItem(i18nc("The main block list", "%1 - %2", mainBlockListName, mainBlockListSize)); sublistComboBoxPointer->addItem(i18nc("The initial domain block list", "%1 - %2", initialDomainBlockListName, initialDomainBlockListSize)); + sublistComboBoxPointer->addItem(i18nc("the regular expression block list", "%1 - %2", regularExpressionBlockListName, regularExpressionBlockListSize)); } void FilterListsDialog::populateTableWidget(int sublistComboBoxIndex) const { - // Wipe the current table. - sublistTableWidgetPointer->clear(); - sublistTableWidgetPointer->setColumnCount(0); - sublistTableWidgetPointer->setRowCount(0); - - // Create the filter list struct. - FilterListStruct *filterListStructPointer; - - // Populate the filer list array. - switch (filterListComboBoxPointer->currentIndex()) - { - case 0: // UltraList. - filterListStructPointer = globalFilterListHelperPointer->ultraListStructPointer; - break; - - case 1: // UltraPrivacy. - filterListStructPointer = globalFilterListHelperPointer->ultraPrivacyStructPointer; - break; - - case 2: // EasyList. - filterListStructPointer = globalFilterListHelperPointer->easyListStructPointer; - break; - - case 3: // EasyPrivacy. - filterListStructPointer = globalFilterListHelperPointer->easyPrivacyStructPointer; - break; - - case 4: // Fanboy's Annoyance List. - filterListStructPointer = globalFilterListHelperPointer->fanboyAnnoyanceStructPointer; - break; - } - - // Create a filter list forward list. - std::forward_list filterListForwardList; - - // Populate the filter list forward list. - switch (sublistComboBoxIndex) + // Populate the table widget if there is at least one item in teh sublist combo box. + if (sublistComboBoxIndex >= 0) { - case FilterListHelper::MAIN_ALLOWLIST: // The main allow list. - filterListForwardList = filterListStructPointer->mainAllowList; - break; - - case FilterListHelper::MAIN_BLOCKLIST: // The main block list. - filterListForwardList = filterListStructPointer->mainBlockList; - break; - - case FilterListHelper::INITIAL_DOMAIN_BLOCKLIST: // The initial domain block list. - filterListForwardList = filterListStructPointer->initialDomainBlockList; - break; + // 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 *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))); } +} - // Create the columns. - sublistTableWidgetPointer->setColumnCount(15); - - // Create the table headers. - QTableWidgetItem *appliedEntryHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist applied entry header", "Applied Entry")); - QTableWidgetItem *thirdPartyHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist third-party header", "Third-Party")); - 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("XML HTTP request header", "XML HTTP Request")); - QTableWidgetItem *filterOptionsHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist filter options header", "Filter Options")); - QTableWidgetItem *originalEntryHeaderItemPointer = new QTableWidgetItem(i18nc("Sublist original entry header", "Original Entry")); - - // Set the horizontal headers. - sublistTableWidgetPointer->setHorizontalHeaderItem(0, appliedEntryHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(1, thirdPartyHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(2, fontHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(3, imageHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(4, mainFrameHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(5, mediaHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(6, objectHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(7, otherHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(8, pingHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(9, scriptHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(10, styleSheetHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(11, subFrameHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(12, xmlHttpRequestHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(13, filterOptionsHeaderItemPointer); - sublistTableWidgetPointer->setHorizontalHeaderItem(14, originalEntryHeaderItemPointer); - - // Initialize the row counter. - int rowCounter = 0; - - // Populate the table. - for (auto filterListEntry = filterListForwardList.begin(); filterListEntry != filterListForwardList.end(); ++filterListEntry) { - // Get the entry struct. - EntryStruct *entryStructPointer = *filterListEntry; - - // Add a new row. - sublistTableWidgetPointer->insertRow(rowCounter); - - // Create the entry items. - QTableWidgetItem *appliedEntryItemPointer = new QTableWidgetItem(entryStructPointer->appliedEntry); - QTableWidgetItem *thirdPartyItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->thirdParty)); - QTableWidgetItem *fontItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->font)); - QTableWidgetItem *imageItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->image)); - QTableWidgetItem *mainFrameItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->mainFrame)); - QTableWidgetItem *mediaItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->media)); - QTableWidgetItem *objectItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->object)); - QTableWidgetItem *otherItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->other)); - QTableWidgetItem *pingItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->ping)); - QTableWidgetItem *scriptItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->script)); - QTableWidgetItem *styleSheetItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->styleSheet)); - QTableWidgetItem *subFrameItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->subFrame)); - QTableWidgetItem *xmlHttpRequestItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getFilterOptionDispositionString(entryStructPointer->xmlHttpRequest)); - QTableWidgetItem *filterOptionsItemPointer = new QTableWidgetItem(entryStructPointer->filterOptions); - QTableWidgetItem *originalEntryItemPointer = new QTableWidgetItem(entryStructPointer->originalEntry); - - // Add the entries to the table. - sublistTableWidgetPointer->setItem(rowCounter, 0, appliedEntryItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 1, thirdPartyItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 2, fontItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 3, imageItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 4, mainFrameItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 5, mediaItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 6, objectItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 7, otherItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 8, pingItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 9, scriptItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 10, styleSheetItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 11, subFrameItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 12, xmlHttpRequestItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 13, filterOptionsItemPointer); - sublistTableWidgetPointer->setItem(rowCounter, 14, originalEntryItemPointer); - - // Increment the row counter. - ++rowCounter; - } +void FilterListsDialog::showFilterEntryDialog(int row) +{ + // Get the filter list struct. + FilterListStruct *filterListStructPointer = getFilterListStruct(filterListComboBoxPointer->currentIndex()); - // Get the table header view. - QHeaderView *headerViewPointer = sublistTableWidgetPointer->horizontalHeader(); + // Create a sublist title. + QString sublistTitle = globalFilterListHelperPointer->getSublistName(sublistComboBoxPointer->currentIndex()); - // Resize the header to fit the contents. - headerViewPointer->resizeSections(QHeaderView::ResizeToContents); + // Instantiate the filter entry dialog. + FilterEntryDialog *filterEntryDialogPointer = new FilterEntryDialog(this, sublistTableWidgetPointer, row, filterListStructPointer->title, sublistTitle); - // Connect changes in the sort order. - connect(headerViewPointer, SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), this, SLOT(sortTable(int, Qt::SortOrder))); + // Show the dialog. + filterEntryDialogPointer->show(); } void FilterListsDialog::sortTable(int column, Qt::SortOrder sortOrder) const