mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
products widget can filter by task ids
This commit is contained in:
parent
22c86fcf69
commit
9cd7fe6253
2 changed files with 48 additions and 27 deletions
|
|
@ -12,34 +12,35 @@ GROUP_TYPE_ROLE = QtCore.Qt.UserRole + 1
|
||||||
MERGED_COLOR_ROLE = QtCore.Qt.UserRole + 2
|
MERGED_COLOR_ROLE = QtCore.Qt.UserRole + 2
|
||||||
FOLDER_LABEL_ROLE = QtCore.Qt.UserRole + 3
|
FOLDER_LABEL_ROLE = QtCore.Qt.UserRole + 3
|
||||||
FOLDER_ID_ROLE = QtCore.Qt.UserRole + 4
|
FOLDER_ID_ROLE = QtCore.Qt.UserRole + 4
|
||||||
PRODUCT_ID_ROLE = QtCore.Qt.UserRole + 5
|
TASK_ID_ROLE = QtCore.Qt.UserRole + 5
|
||||||
PRODUCT_NAME_ROLE = QtCore.Qt.UserRole + 6
|
PRODUCT_ID_ROLE = QtCore.Qt.UserRole + 6
|
||||||
PRODUCT_TYPE_ROLE = QtCore.Qt.UserRole + 7
|
PRODUCT_NAME_ROLE = QtCore.Qt.UserRole + 7
|
||||||
PRODUCT_TYPE_ICON_ROLE = QtCore.Qt.UserRole + 8
|
PRODUCT_TYPE_ROLE = QtCore.Qt.UserRole + 8
|
||||||
PRODUCT_IN_SCENE_ROLE = QtCore.Qt.UserRole + 9
|
PRODUCT_TYPE_ICON_ROLE = QtCore.Qt.UserRole + 9
|
||||||
VERSION_ID_ROLE = QtCore.Qt.UserRole + 10
|
PRODUCT_IN_SCENE_ROLE = QtCore.Qt.UserRole + 10
|
||||||
VERSION_HERO_ROLE = QtCore.Qt.UserRole + 11
|
VERSION_ID_ROLE = QtCore.Qt.UserRole + 11
|
||||||
VERSION_NAME_ROLE = QtCore.Qt.UserRole + 12
|
VERSION_HERO_ROLE = QtCore.Qt.UserRole + 12
|
||||||
VERSION_NAME_EDIT_ROLE = QtCore.Qt.UserRole + 13
|
VERSION_NAME_ROLE = QtCore.Qt.UserRole + 13
|
||||||
VERSION_PUBLISH_TIME_ROLE = QtCore.Qt.UserRole + 14
|
VERSION_NAME_EDIT_ROLE = QtCore.Qt.UserRole + 14
|
||||||
VERSION_STATUS_NAME_ROLE = QtCore.Qt.UserRole + 15
|
VERSION_PUBLISH_TIME_ROLE = QtCore.Qt.UserRole + 15
|
||||||
VERSION_STATUS_SHORT_ROLE = QtCore.Qt.UserRole + 16
|
VERSION_STATUS_NAME_ROLE = QtCore.Qt.UserRole + 16
|
||||||
VERSION_STATUS_COLOR_ROLE = QtCore.Qt.UserRole + 17
|
VERSION_STATUS_SHORT_ROLE = QtCore.Qt.UserRole + 17
|
||||||
VERSION_STATUS_ICON_ROLE = QtCore.Qt.UserRole + 18
|
VERSION_STATUS_COLOR_ROLE = QtCore.Qt.UserRole + 18
|
||||||
VERSION_AUTHOR_ROLE = QtCore.Qt.UserRole + 19
|
VERSION_STATUS_ICON_ROLE = QtCore.Qt.UserRole + 19
|
||||||
VERSION_FRAME_RANGE_ROLE = QtCore.Qt.UserRole + 20
|
VERSION_AUTHOR_ROLE = QtCore.Qt.UserRole + 20
|
||||||
VERSION_DURATION_ROLE = QtCore.Qt.UserRole + 21
|
VERSION_FRAME_RANGE_ROLE = QtCore.Qt.UserRole + 21
|
||||||
VERSION_HANDLES_ROLE = QtCore.Qt.UserRole + 22
|
VERSION_DURATION_ROLE = QtCore.Qt.UserRole + 22
|
||||||
VERSION_STEP_ROLE = QtCore.Qt.UserRole + 23
|
VERSION_HANDLES_ROLE = QtCore.Qt.UserRole + 23
|
||||||
VERSION_AVAILABLE_ROLE = QtCore.Qt.UserRole + 24
|
VERSION_STEP_ROLE = QtCore.Qt.UserRole + 24
|
||||||
VERSION_THUMBNAIL_ID_ROLE = QtCore.Qt.UserRole + 25
|
VERSION_AVAILABLE_ROLE = QtCore.Qt.UserRole + 25
|
||||||
ACTIVE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 26
|
VERSION_THUMBNAIL_ID_ROLE = QtCore.Qt.UserRole + 26
|
||||||
REMOTE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 27
|
ACTIVE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 27
|
||||||
REPRESENTATIONS_COUNT_ROLE = QtCore.Qt.UserRole + 28
|
REMOTE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 28
|
||||||
SYNC_ACTIVE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 29
|
REPRESENTATIONS_COUNT_ROLE = QtCore.Qt.UserRole + 29
|
||||||
SYNC_REMOTE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 30
|
SYNC_ACTIVE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 30
|
||||||
|
SYNC_REMOTE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 31
|
||||||
|
|
||||||
STATUS_NAME_FILTER_ROLE = QtCore.Qt.UserRole + 31
|
STATUS_NAME_FILTER_ROLE = QtCore.Qt.UserRole + 32
|
||||||
|
|
||||||
|
|
||||||
class ProductsModel(QtGui.QStandardItemModel):
|
class ProductsModel(QtGui.QStandardItemModel):
|
||||||
|
|
@ -368,6 +369,7 @@ class ProductsModel(QtGui.QStandardItemModel):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
model_item.setData(version_item.version_id, VERSION_ID_ROLE)
|
model_item.setData(version_item.version_id, VERSION_ID_ROLE)
|
||||||
|
model_item.setData(version_item.task_id, TASK_ID_ROLE)
|
||||||
model_item.setData(version_item.version, VERSION_NAME_ROLE)
|
model_item.setData(version_item.version, VERSION_NAME_ROLE)
|
||||||
model_item.setData(version_item.is_hero, VERSION_HERO_ROLE)
|
model_item.setData(version_item.is_hero, VERSION_HERO_ROLE)
|
||||||
model_item.setData(
|
model_item.setData(
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ from .products_model import (
|
||||||
GROUP_TYPE_ROLE,
|
GROUP_TYPE_ROLE,
|
||||||
MERGED_COLOR_ROLE,
|
MERGED_COLOR_ROLE,
|
||||||
FOLDER_ID_ROLE,
|
FOLDER_ID_ROLE,
|
||||||
|
TASK_ID_ROLE,
|
||||||
PRODUCT_ID_ROLE,
|
PRODUCT_ID_ROLE,
|
||||||
VERSION_ID_ROLE,
|
VERSION_ID_ROLE,
|
||||||
VERSION_STATUS_NAME_ROLE,
|
VERSION_STATUS_NAME_ROLE,
|
||||||
|
|
@ -40,6 +41,7 @@ class ProductsProxyModel(RecursiveSortFilterProxyModel):
|
||||||
|
|
||||||
self._product_type_filters = None
|
self._product_type_filters = None
|
||||||
self._statuses_filter = None
|
self._statuses_filter = None
|
||||||
|
self._task_ids_filter = None
|
||||||
self._ascending_sort = True
|
self._ascending_sort = True
|
||||||
|
|
||||||
def get_statuses_filter(self):
|
def get_statuses_filter(self):
|
||||||
|
|
@ -47,6 +49,12 @@ class ProductsProxyModel(RecursiveSortFilterProxyModel):
|
||||||
return None
|
return None
|
||||||
return set(self._statuses_filter)
|
return set(self._statuses_filter)
|
||||||
|
|
||||||
|
def set_tasks_filters(self, task_ids_filter):
|
||||||
|
if self._task_ids_filter == task_ids_filter:
|
||||||
|
return
|
||||||
|
self._task_ids_filter = task_ids_filter
|
||||||
|
self.invalidateFilter()
|
||||||
|
|
||||||
def set_product_type_filters(self, product_type_filters):
|
def set_product_type_filters(self, product_type_filters):
|
||||||
if self._product_type_filters == product_type_filters:
|
if self._product_type_filters == product_type_filters:
|
||||||
return
|
return
|
||||||
|
|
@ -62,6 +70,8 @@ class ProductsProxyModel(RecursiveSortFilterProxyModel):
|
||||||
def filterAcceptsRow(self, source_row, source_parent):
|
def filterAcceptsRow(self, source_row, source_parent):
|
||||||
source_model = self.sourceModel()
|
source_model = self.sourceModel()
|
||||||
index = source_model.index(source_row, 0, source_parent)
|
index = source_model.index(source_row, 0, source_parent)
|
||||||
|
if not self._accept_task_ids_filter(index):
|
||||||
|
return False
|
||||||
|
|
||||||
if not self._accept_row_by_role_value(
|
if not self._accept_row_by_role_value(
|
||||||
index, self._product_type_filters, PRODUCT_TYPE_ROLE
|
index, self._product_type_filters, PRODUCT_TYPE_ROLE
|
||||||
|
|
@ -75,6 +85,12 @@ class ProductsProxyModel(RecursiveSortFilterProxyModel):
|
||||||
|
|
||||||
return super().filterAcceptsRow(source_row, source_parent)
|
return super().filterAcceptsRow(source_row, source_parent)
|
||||||
|
|
||||||
|
def _accept_task_ids_filter(self, index):
|
||||||
|
if not self._task_ids_filter:
|
||||||
|
return True
|
||||||
|
task_id = index.data(TASK_ID_ROLE)
|
||||||
|
return task_id in self._task_ids_filter
|
||||||
|
|
||||||
def _accept_row_by_role_value(
|
def _accept_row_by_role_value(
|
||||||
self,
|
self,
|
||||||
index: QtCore.QModelIndex,
|
index: QtCore.QModelIndex,
|
||||||
|
|
@ -254,6 +270,9 @@ class ProductsWidget(QtWidgets.QWidget):
|
||||||
"""
|
"""
|
||||||
self._products_proxy_model.setFilterFixedString(name)
|
self._products_proxy_model.setFilterFixedString(name)
|
||||||
|
|
||||||
|
def set_tasks_filters(self, task_ids):
|
||||||
|
self._products_proxy_model.set_tasks_filters(task_ids)
|
||||||
|
|
||||||
def set_statuses_filter(self, status_names):
|
def set_statuses_filter(self, status_names):
|
||||||
"""Set filter of version statuses.
|
"""Set filter of version statuses.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue