added icons to tasks combobox

This commit is contained in:
iLLiCiTiT 2024-06-02 15:48:17 +02:00
parent c3a23a3df5
commit c5bc4ffc88
2 changed files with 49 additions and 16 deletions

View file

@ -1725,14 +1725,14 @@ class PublisherController(BasePublisherController):
return folder_item.entity_id return folder_item.entity_id
return None return None
def get_task_names_by_folder_paths(self, folder_paths): def get_task_items_by_folder_paths(self, folder_paths):
if not folder_paths: if not folder_paths:
return {} return {}
folder_items = self._hierarchy_model.get_folder_items_by_paths( folder_items = self._hierarchy_model.get_folder_items_by_paths(
self.project_name, folder_paths self.project_name, folder_paths
) )
output = { output = {
folder_path: set() folder_path: []
for folder_path in folder_paths for folder_path in folder_paths
} }
project_name = self.project_name project_name = self.project_name
@ -1740,10 +1740,7 @@ class PublisherController(BasePublisherController):
task_items = self._hierarchy_model.get_task_items( task_items = self._hierarchy_model.get_task_items(
project_name, folder_item.entity_id, None project_name, folder_item.entity_id, None
) )
output[folder_item.path] = { output[folder_item.path] = task_items
task_item.name
for task_item in task_items
}
return output return output

View file

@ -99,12 +99,16 @@ class TasksModel(QtGui.QStandardItemModel):
root_item.removeRows(0, self.rowCount()) root_item.removeRows(0, self.rowCount())
return return
task_names_by_folder_path = ( task_items_by_folder_path = (
self._controller.get_task_names_by_folder_paths( self._controller.get_task_items_by_folder_paths(
self._folder_paths self._folder_paths
) )
) )
task_names_by_folder_path = {
folder_path: {item.name for item in task_items}
for folder_path, task_items in task_items_by_folder_path.items()
}
self._task_names_by_folder_path = task_names_by_folder_path self._task_names_by_folder_path = task_names_by_folder_path
new_task_names = self.get_intersection_of_tasks( new_task_names = self.get_intersection_of_tasks(
@ -122,22 +126,54 @@ class TasksModel(QtGui.QStandardItemModel):
item = self._items_by_name.pop(task_name) item = self._items_by_name.pop(task_name)
root_item.removeRow(item.row()) root_item.removeRow(item.row())
icon = get_qt_icon({ default_icon = get_qt_icon({
"type": "awesome-font", "type": "awesome-font",
"name": "fa.male", "name": "fa.male",
"color": get_default_entity_icon_color(), "color": get_default_entity_icon_color(),
}) })
new_items = [] new_items = []
task_type_items = {
task_type_item.name: task_type_item
for task_type_item in self._controller.get_task_type_items(
self._controller.project_name
)
}
icon_name_by_task_name = {}
for task_items in task_items_by_folder_path.values():
for task_item in task_items:
task_name = task_item.name
if (
task_name not in new_task_names
or task_name in icon_name_by_task_name
):
continue
task_type_name = task_item.task_type
task_type_item = task_type_items.get(task_type_name)
if task_type_item:
icon_name_by_task_name[task_name] = task_type_item.icon
for task_name in new_task_names: for task_name in new_task_names:
if task_name in self._items_by_name: item = self._items_by_name.get(task_name)
if item is None:
item = QtGui.QStandardItem(task_name)
item.setData(task_name, TASK_NAME_ROLE)
self._items_by_name[task_name] = item
new_items.append(item)
if not task_name:
continue continue
item = QtGui.QStandardItem(task_name) icon_name = icon_name_by_task_name.get(task_name)
item.setData(task_name, TASK_NAME_ROLE) icon = None
if task_name: if icon_name:
item.setData(icon, QtCore.Qt.DecorationRole) icon = get_qt_icon({
self._items_by_name[task_name] = item "type": "material-symbols",
new_items.append(item) "name": icon_name,
"color": get_default_entity_icon_color(),
})
if icon is None:
icon = default_icon
item.setData(icon, QtCore.Qt.DecorationRole)
if new_items: if new_items:
root_item.appendRows(new_items) root_item.appendRows(new_items)