From b41a54c65dda5af385a22632805358fff66c590c Mon Sep 17 00:00:00 2001 From: Frodo45127 Date: Wed, 9 Oct 2024 12:26:52 +0200 Subject: [PATCH] Implemented "Show Edited Cells" filter toggle. --- 3rdparty/builds/qt_rpfm_extensions.lib | Bin 1132574 -> 1133348 bytes .../include/tableview_filter.h | 4 +- .../src/tableview_filter.cpp | 15 ++- locale/English_en.ftl | 1 + rpfm_ui/src/diagnostics_ui/mod.rs | 3 +- rpfm_ui/src/ffi/mod.rs | 9 +- rpfm_ui/src/views/table/filter/connections.rs | 1 + rpfm_ui/src/views/table/filter/mod.rs | 4 + rpfm_ui/src/views/table/filter/slots.rs | 7 ++ rpfm_ui/src/views/table/mod.rs | 6 +- rpfm_ui/ui_templates/table_filter_groupbox.ui | 101 +++++++++++------- 11 files changed, 102 insertions(+), 49 deletions(-) diff --git a/3rdparty/builds/qt_rpfm_extensions.lib b/3rdparty/builds/qt_rpfm_extensions.lib index 7255f591bfcd469fadee6750543b228188b79d24..f604dbe0502e9e69d82afed0732653ea2dac583f 100644 GIT binary patch delta 22737 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 diff --git a/3rdparty/src/qt_rpfm_extensions/include/tableview_filter.h b/3rdparty/src/qt_rpfm_extensions/include/tableview_filter.h index f14875a0..b9c464e1 100644 --- a/3rdparty/src/qt_rpfm_extensions/include/tableview_filter.h +++ b/3rdparty/src/qt_rpfm_extensions/include/tableview_filter.h @@ -17,7 +17,8 @@ extern "C" void trigger_tableview_filter( QList case_sensitive = QList(), QList show_blank_cells = QList(), QList match_groups_per_column = QList(), - QList variant_to_search = QList() + QList variant_to_search = QList(), + QList show_edited_cells = QList() ); class QTableViewSortFilterProxyModel : public QSortFilterProxyModel @@ -33,6 +34,7 @@ class QTableViewSortFilterProxyModel : public QSortFilterProxyModel QList show_blank_cells; QList match_groups_per_column; QList variant_to_search; + QList show_edited_cells; explicit QTableViewSortFilterProxyModel(QObject *parent = nullptr); bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const; diff --git a/3rdparty/src/qt_rpfm_extensions/src/tableview_filter.cpp b/3rdparty/src/qt_rpfm_extensions/src/tableview_filter.cpp index 6b507303..f6d3be1f 100644 --- a/3rdparty/src/qt_rpfm_extensions/src/tableview_filter.cpp +++ b/3rdparty/src/qt_rpfm_extensions/src/tableview_filter.cpp @@ -21,7 +21,8 @@ extern "C" void trigger_tableview_filter( QList case_sensitive, QList show_blank_cells, QList match_groups_per_column, - QList variant_to_search + QList variant_to_search, + QList show_edited_cells ) { QTableViewSortFilterProxyModel* filter2 = static_cast(filter); filter2->columns = columns; @@ -32,6 +33,7 @@ extern "C" void trigger_tableview_filter( filter2->show_blank_cells = show_blank_cells; filter2->match_groups_per_column = match_groups_per_column; filter2->variant_to_search = variant_to_search; + filter2->show_edited_cells = show_edited_cells; filter2->setFilterKeyColumn(0); } @@ -74,6 +76,7 @@ bool QTableViewSortFilterProxyModel::filterAcceptsRow(int source_row, const QMod QString pattern = patterns.at(match); Qt::CaseSensitivity case_sensitivity = static_cast(case_sensitive.at(match)); bool show_blank_cells_in_column = show_blank_cells.at(match) == 1 ? true: false; + bool show_edited_cells_in_column = show_edited_cells.at(match) == 1 ? true: false; QVector* variants = new QVector(); if (variant_to_search.at(match) == 0) { @@ -88,12 +91,20 @@ bool QTableViewSortFilterProxyModel::filterAcceptsRow(int source_row, const QMod QModelIndex currntIndex = sourceModel()->index(source_row, column, source_parent); QStandardItem *currntData = static_cast(sourceModel())->itemFromIndex(currntIndex); + QVariant isModifiedFromVanillaVariant = currntData->data(24); + bool isModifiedFromVanilla = !isModifiedFromVanillaVariant.isNull() ? isModifiedFromVanillaVariant.toBool(): false; + if (currntIndex.isValid()) { + // If the variant is modified and we want to show modified cells, we let it pass the filters. + if (show_edited_cells_in_column && isModifiedFromVanilla) { + continue; + } + // Checkbox matches. // // NOTE: isCheckable is broken if the cell is not editable. - if (currntData->data(Qt::CheckStateRole).isValid()) { + else if (currntData->data(Qt::CheckStateRole).isValid()) { QString pattern_lower = pattern.toLower(); bool isChecked = currntData->checkState() == Qt::CheckState::Checked; diff --git a/locale/English_en.ftl b/locale/English_en.ftl index 3a693ea8..966bf1aa 100644 --- a/locale/English_en.ftl +++ b/locale/English_en.ftl @@ -949,6 +949,7 @@ source_data_for_field_not_found = The source of the selected data could not be f context_menu_go_to_loc = Go To Loc Entry: {"{"}{"}"} loc_key_not_found = The loc entry couldn't be found. table_filter_show_blank_cells = Show Blank Cells +table_filter_show_edited_cells = Show Edited Cells special_stuff_rescue_packfile = Rescue PackFile are_you_sure_rescue_packfile = Are you sure you want to do this? This is a dangerous option that should never be used unless the dev or RPFM tells you to specifically use it. So again, are you sure you want to use this? diff --git a/rpfm_ui/src/diagnostics_ui/mod.rs b/rpfm_ui/src/diagnostics_ui/mod.rs index 387070c9..75a44d63 100644 --- a/rpfm_ui/src/diagnostics_ui/mod.rs +++ b/rpfm_ui/src/diagnostics_ui/mod.rs @@ -1632,9 +1632,10 @@ impl DiagnosticsUI { let show_blank_lines = vec![false; sensitivity.len()]; let match_groups = vec![0; sensitivity.len()]; let variant_to_search = vec![0; sensitivity.len()]; + let show_edited_cells = vec![false; sensitivity.len()]; // Filter whatever it's in that column by the text we got. - trigger_tableview_filter_safe(&diagnostics_ui.diagnostics_table_filter, &columns, patterns, &use_nott, &use_regex, &sensitivity, &show_blank_lines, &match_groups, &variant_to_search); + trigger_tableview_filter_safe(&diagnostics_ui.diagnostics_table_filter, &columns, patterns, &use_nott, &use_regex, &sensitivity, &show_blank_lines, &match_groups, &variant_to_search, &show_edited_cells); } pub unsafe fn update_level_counts(diagnostics_ui: &Rc, diagnostics: &[DiagnosticType]) { diff --git a/rpfm_ui/src/ffi/mod.rs b/rpfm_ui/src/ffi/mod.rs index 958717b8..ba91eac1 100644 --- a/rpfm_ui/src/ffi/mod.rs +++ b/rpfm_ui/src/ffi/mod.rs @@ -162,8 +162,8 @@ pub fn new_tableview_filter_safe(parent: QPtr) -> QBox>, use_nott: &[bool], regex: &[bool], case_sensitive: &[CaseSensitivity], show_blank_cells: &[bool], match_groups: &[i32], variant_to_search: &[i32]) { +extern "C" { fn trigger_tableview_filter(filter: *const QSortFilterProxyModel, columns: *const QListOfInt, patterns: *const QStringList, use_nott: *const QListOfInt, regex: *const QListOfInt, case_sensitive: *const QListOfInt, show_blank_cells: *const QListOfInt, match_groups: *const QListOfInt, variant_to_search: *const QListOfInt, show_edited_cells: *const QListOfInt); } +pub unsafe fn trigger_tableview_filter_safe(filter: &QSortFilterProxyModel, columns: &[i32], patterns: Vec>, use_nott: &[bool], regex: &[bool], case_sensitive: &[CaseSensitivity], show_blank_cells: &[bool], match_groups: &[i32], variant_to_search: &[i32], show_edited_cells: &[bool]) { let columns_qlist = QListOfInt::new(); columns.iter().for_each(|x| columns_qlist.append_int(x)); @@ -188,7 +188,10 @@ pub unsafe fn trigger_tableview_filter_safe(filter: &QSortFilterProxyModel, colu let variant_to_search_qlist = QListOfInt::new(); variant_to_search.iter().for_each(|x| variant_to_search_qlist.append_int(x)); - trigger_tableview_filter(filter, columns_qlist.into_ptr().as_raw_ptr(), patterns_qlist.into_ptr().as_raw_ptr(), use_nott_qlist.into_ptr().as_raw_ptr(), regex_qlist.into_ptr().as_raw_ptr(), case_sensitive_qlist.into_ptr().as_raw_ptr(), show_blank_cells_qlist.into_ptr().as_raw_ptr(), match_groups_qlist.into_ptr().as_raw_ptr(), variant_to_search_qlist.into_ptr().as_raw_ptr()); + let show_edited_cells_qlist = QListOfInt::new(); + show_edited_cells.iter().for_each(|x| show_edited_cells_qlist.append_int(if *x { &1i32 } else { &0i32 })); + + trigger_tableview_filter(filter, columns_qlist.into_ptr().as_raw_ptr(), patterns_qlist.into_ptr().as_raw_ptr(), use_nott_qlist.into_ptr().as_raw_ptr(), regex_qlist.into_ptr().as_raw_ptr(), case_sensitive_qlist.into_ptr().as_raw_ptr(), show_blank_cells_qlist.into_ptr().as_raw_ptr(), match_groups_qlist.into_ptr().as_raw_ptr(), variant_to_search_qlist.into_ptr().as_raw_ptr(), show_edited_cells_qlist.into_ptr().as_raw_ptr()); } // This function allow us to create a QTreeView compatible with draggable items diff --git a/rpfm_ui/src/views/table/filter/connections.rs b/rpfm_ui/src/views/table/filter/connections.rs index 35069393..9d908426 100644 --- a/rpfm_ui/src/views/table/filter/connections.rs +++ b/rpfm_ui/src/views/table/filter/connections.rs @@ -27,6 +27,7 @@ pub unsafe fn set_connections_filter(ui: &FilterView, slots: &FilterViewSlots) { ui.case_sensitive_button.toggled().connect(&slots.filter_case_sensitive_button); ui.use_regex_button.toggled().connect(&slots.filter_use_regex_button); ui.show_blank_cells_button.toggled().connect(&slots.filter_show_blank_cells_button); + ui.show_edited_cells_button.toggled().connect(&slots.filter_show_edited_cells_button); ui.timer_delayed_updates.timeout().connect(&slots.filter_trigger); ui.add_button.released().connect(&slots.filter_add); ui.remove_button.released().connect(&slots.filter_remove); diff --git a/rpfm_ui/src/views/table/filter/mod.rs b/rpfm_ui/src/views/table/filter/mod.rs index 11292564..1bbd2c4c 100644 --- a/rpfm_ui/src/views/table/filter/mod.rs +++ b/rpfm_ui/src/views/table/filter/mod.rs @@ -58,6 +58,7 @@ pub struct FilterView { case_sensitive_button: QPtr, use_regex_button: QPtr, show_blank_cells_button: QPtr, + show_edited_cells_button: QPtr, group_combobox: QPtr, column_combobox: QPtr, variant_combobox: QPtr, @@ -85,6 +86,7 @@ impl FilterView { let case_sensitive_button: QPtr = find_widget(&main_widget.static_upcast(), "case_sensitive_button")?; let use_regex_button: QPtr = find_widget(&main_widget.static_upcast(), "use_regex")?; let show_blank_cells_button: QPtr = find_widget(&main_widget.static_upcast(), "show_blank_cells_button")?; + let show_edited_cells_button: QPtr = find_widget(&main_widget.static_upcast(), "show_edited_cells_button")?; let group_combobox: QPtr = find_widget(&main_widget.static_upcast(), "group_combobox")?; let column_combobox: QPtr = find_widget(&main_widget.static_upcast(), "column_combobox")?; let variant_combobox: QPtr = find_widget(&main_widget.static_upcast(), "variant_combobox")?; @@ -97,6 +99,7 @@ impl FilterView { use_regex_button.set_tool_tip(&qtr("table_filter_use_regex")); use_regex_button.set_checked(true); show_blank_cells_button.set_tool_tip(&qtr("table_filter_show_blank_cells")); + show_edited_cells_button.set_tool_tip(&qtr("table_filter_show_edited_cells")); case_sensitive_button.set_tool_tip(&qtr("table_filter_case_sensitive")); timer_delayed_updates.set_single_shot(true); @@ -144,6 +147,7 @@ impl FilterView { case_sensitive_button, use_regex_button, show_blank_cells_button, + show_edited_cells_button, group_combobox, column_combobox, variant_combobox, diff --git a/rpfm_ui/src/views/table/filter/slots.rs b/rpfm_ui/src/views/table/filter/slots.rs index bd926c5b..11b113f1 100644 --- a/rpfm_ui/src/views/table/filter/slots.rs +++ b/rpfm_ui/src/views/table/filter/slots.rs @@ -37,6 +37,7 @@ pub struct FilterViewSlots { pub filter_case_sensitive_button: QBox, pub filter_use_regex_button: QBox, pub filter_show_blank_cells_button: QBox, + pub filter_show_edited_cells_button: QBox, pub filter_trigger: QBox, pub filter_check_regex: QBox, pub filter_add: QBox, @@ -100,6 +101,11 @@ impl FilterViewSlots { parent_view.filter_table(); })); + let filter_show_edited_cells_button = SlotNoArgs::new(&view.main_widget, clone!( + parent_view => move || { + parent_view.filter_table(); + })); + // Function triggered by the filter timer. let filter_trigger = SlotNoArgs::new(&view.main_widget, clone!( parent_view => move || { @@ -146,6 +152,7 @@ impl FilterViewSlots { filter_case_sensitive_button, filter_use_regex_button, filter_show_blank_cells_button, + filter_show_edited_cells_button, filter_trigger, filter_check_regex, filter_add, diff --git a/rpfm_ui/src/views/table/mod.rs b/rpfm_ui/src/views/table/mod.rs index 7d02f3e7..fe64a83d 100644 --- a/rpfm_ui/src/views/table/mod.rs +++ b/rpfm_ui/src/views/table/mod.rs @@ -1116,6 +1116,7 @@ impl TableView { let mut show_blank_cells = vec![]; let mut match_groups = vec![]; let mut variant_to_search = vec![]; + let mut show_edited_cells = vec![]; let filters = self.filters.read().unwrap(); for filter in filters.iter() { @@ -1150,6 +1151,9 @@ impl TableView { // Check if we should filter out blank cells or not. show_blank_cells.push(filter.show_blank_cells_button().is_checked()); + // Check if we should filter out edited cells or not. + show_edited_cells.push(filter.show_edited_cells_button().is_checked()); + let pattern = filter.filter_line_edit().text().to_std_string(); use_nott.push(filter.not_checkbox().is_checked()); @@ -1161,7 +1165,7 @@ impl TableView { } // Filter whatever it's in that column by the text we got. - trigger_tableview_filter_safe(&self.table_filter, &columns, patterns, &use_nott, &use_regex, &sensitivity, &show_blank_cells, &match_groups, &variant_to_search); + trigger_tableview_filter_safe(&self.table_filter, &columns, patterns, &use_nott, &use_regex, &sensitivity, &show_blank_cells, &match_groups, &variant_to_search, &show_edited_cells); // Update the line count. self.update_line_counter(); diff --git a/rpfm_ui/ui_templates/table_filter_groupbox.ui b/rpfm_ui/ui_templates/table_filter_groupbox.ui index bc2e3f18..8f336b50 100644 --- a/rpfm_ui/ui_templates/table_filter_groupbox.ui +++ b/rpfm_ui/ui_templates/table_filter_groupbox.ui @@ -32,24 +32,7 @@ 0 - - - - ! - - - - - - - - 0 - 0 - - - - - + false @@ -72,6 +55,33 @@ + + + + + + + + .. + + + + 22 + 22 + + + + true + + + + + + + ! + + + @@ -103,12 +113,22 @@ - + + + + 0 + 0 + + + + + + - + ... - + .. @@ -117,10 +137,13 @@ 22 + + true + - + 0 @@ -129,13 +152,13 @@ - - + + - + .. @@ -144,19 +167,25 @@ 22 - - true + + + + + + + 0 + 0 + - - + + ... - - .. + @@ -169,16 +198,6 @@ - - - - - 0 - 0 - - - -