emit filter changed signal

This commit is contained in:
Jakub Trllo 2025-06-11 12:38:13 +02:00
parent e9981081aa
commit de15350fe6
2 changed files with 24 additions and 4 deletions

View file

@ -578,7 +578,7 @@ class FilterValuePopup(QtWidgets.QWidget):
class FiltersBar(BaseClickableFrame):
filters_changed = QtCore.Signal()
filter_changed = QtCore.Signal(str)
def __init__(self, parent):
super().__init__(parent)
@ -636,6 +636,16 @@ class FiltersBar(BaseClickableFrame):
for filter_def in filter_defs
}
def get_filter_value(self, name: str) -> Optional[Any]:
"""Get the value of a filter by its name."""
item_widget = self._widgets_by_name.get(name)
if item_widget is not None:
value = item_widget.get_value()
if isinstance(value, list) and len(value) == 0:
return None
return value
return None
def add_item(self, name: str):
"""Add a new item to the search bar.
@ -734,6 +744,7 @@ class FiltersBar(BaseClickableFrame):
value = self._filter_value_popup.get_value()
item_widget = self._widgets_by_name.get(name)
item_widget.set_value(value)
self.filter_changed.emit(name)
def _on_filter_value_closed(self, name):
widget = self._widgets_by_name.get(name)

View file

@ -255,7 +255,7 @@ class LoaderWindow(QtWidgets.QWidget):
folders_filter_input.textChanged.connect(
self._on_folder_filter_change
)
search_bar.filters_changed.connect(self._on_filters_change)
search_bar.filter_changed.connect(self._on_filter_change)
# products_filter_input.textChanged.connect(
# self._on_product_filter_change
# )
@ -443,8 +443,17 @@ class LoaderWindow(QtWidgets.QWidget):
self._product_group_checkbox.isChecked()
)
def _on_filters_change(self):
pass
def _on_filter_change(self, filter_name):
if filter_name == "product_name":
self._products_widget.set_name_filter(
self._search_bar.get_filter_value("product_name")
)
elif filter_name == "product_types":
product_types = self._search_bar.get_filter_value("product_types")
self._products_widget.set_product_type_filter(product_types)
elif filter_name == "statuses":
status_names = self._search_bar.get_filter_value("statuses")
self._products_widget.set_statuses_filter(status_names)
def _on_tasks_selection_change(self, event):
self._products_widget.set_tasks_filter(event["task_ids"])