diff --git a/client/ayon_core/tools/loader/ui/search_bar.py b/client/ayon_core/tools/loader/ui/search_bar.py index 629212876a..6852500f9f 100644 --- a/client/ayon_core/tools/loader/ui/search_bar.py +++ b/client/ayon_core/tools/loader/ui/search_bar.py @@ -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) diff --git a/client/ayon_core/tools/loader/ui/window.py b/client/ayon_core/tools/loader/ui/window.py index 7a3d198ab6..1e2904b667 100644 --- a/client/ayon_core/tools/loader/ui/window.py +++ b/client/ayon_core/tools/loader/ui/window.py @@ -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"])