Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/tagstudio/qt/ts_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -1418,7 +1418,6 @@ def update_completions_list(self, text: str) -> None:
def update_thumbs(self):
"""Update search thumbnails."""
self._update_thumb_count()
# logger.info(f'Current Page: {self.cur_page_idx}, Stack Length:{len(self.nav_stack)}')
with self.thumb_job_queue.mutex:
# Cancels all thumb jobs waiting to be started
self.thumb_job_queue.queue.clear()
Expand All @@ -1443,6 +1442,8 @@ def update_thumbs(self):
logger.info("[QtDriver] Done! Processing ItemThumbs...")
for index, item_thumb in enumerate(self.item_thumbs, start=0):
entry = None
item_thumb.set_mode(None)

try:
entry = entries[index]
except IndexError:
Expand Down
47 changes: 29 additions & 18 deletions src/tagstudio/qt/widgets/item_thumb.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,10 +206,10 @@ def __init__(
self.renderer = ThumbRenderer(self.lib)
self.renderer.updated.connect(
lambda timestamp, image, size, filename: (
self.update_thumb(timestamp, image=image),
self.update_size(timestamp, size=size),
self.set_filename_text(filename),
self.set_extension(filename),
self.update_thumb(image, timestamp),
self.update_size(size, timestamp),
self.set_filename_text(filename, timestamp),
self.set_extension(filename, timestamp),
)
)
self.thumb_button.setFlat(True)
Expand Down Expand Up @@ -365,8 +365,11 @@ def set_mode(self, mode: ItemType | None) -> None:
self.item_type_badge.setHidden(False)
self.mode = mode

def set_extension(self, filename: Path) -> None:
ext = filename.suffix
def set_extension(self, filename: Path, timestamp: float | None = None) -> None:
if timestamp and timestamp < ItemThumb.update_cutoff:
return

ext = filename.suffix.lower()
if ext and ext.startswith(".") is False:
ext = "." + ext
media_types: set[MediaType] = MediaCategories.get_types(ext)
Expand All @@ -385,12 +388,13 @@ def set_extension(self, filename: Path) -> None:
".webp",
]
):
self.ext_badge.setHidden(False)
self.ext_badge.setText(ext.upper()[1:] or filename.stem.upper())
if ext or filename.stem:
self.ext_badge.setHidden(False)
if MediaType.VIDEO in media_types or MediaType.AUDIO in media_types:
self.count_badge.setHidden(False)
else:
if self.mode == ItemType.ENTRY:
if self.mode == ItemType.ENTRY or self.mode is None:
self.ext_badge.setHidden(True)
self.count_badge.setHidden(True)

Expand All @@ -403,7 +407,10 @@ def set_count(self, count: str) -> None:
self.ext_badge.setHidden(True)
self.count_badge.setHidden(True)

def set_filename_text(self, filename: Path):
def set_filename_text(self, filename: Path, timestamp: float | None = None):
if timestamp and timestamp < ItemThumb.update_cutoff:
return

self.set_item_path(filename)
self.file_label.setText(str(filename.name))

Expand All @@ -422,12 +429,14 @@ def set_filename_visibility(self, set_visible: bool):
self.setFixedHeight(self.thumb_size[1])
self.show_filename_label = set_visible

def update_thumb(self, timestamp: float, image: QPixmap | None = None):
def update_thumb(self, image: QPixmap | None = None, timestamp: float | None = None):
"""Update attributes of a thumbnail element."""
if timestamp > ItemThumb.update_cutoff:
self.thumb_button.setIcon(image if image else QPixmap())
if timestamp and timestamp < ItemThumb.update_cutoff:
return

self.thumb_button.setIcon(image if image else QPixmap())

def update_size(self, timestamp: float, size: QSize):
def update_size(self, size: QSize, timestamp: float | None = None):
"""Updates attributes of a thumbnail element.

Args:
Expand All @@ -436,11 +445,13 @@ def update_size(self, timestamp: float, size: QSize):

size (QSize): The new thumbnail size to set.
"""
if timestamp > ItemThumb.update_cutoff:
self.thumb_size = size.width(), size.height()
self.thumb_button.setIconSize(size)
self.thumb_button.setMinimumSize(size)
self.thumb_button.setMaximumSize(size)
if timestamp and timestamp < ItemThumb.update_cutoff:
return

self.thumb_size = size.width(), size.height()
self.thumb_button.setIconSize(size)
self.thumb_button.setMinimumSize(size)
self.thumb_button.setMaximumSize(size)

def update_clickable(self, clickable: typing.Callable[[], None]):
"""Updates attributes of a thumbnail element."""
Expand Down