Skip to content

Commit c235d4f

Browse files
authored
ui: tweak media player style and behavior (#1025)
* ui: tweak media player style and behavior * ui: change player overlay to gradient * ui: add slight outline to player bar * feat: realtime playback seeking * fix(ui): click to jump to unbuffered media * chore: organize imports * refactor: remove unused code
1 parent 78e29a9 commit c235d4f

File tree

3 files changed

+123
-171
lines changed

3 files changed

+123
-171
lines changed

src/tagstudio/qt/helpers/qslider_wrapper.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44

55
from typing import override
66

7+
import structlog
78
from PySide6.QtGui import QMouseEvent
89
from PySide6.QtWidgets import QSlider, QStyle, QStyleOptionSlider
910

11+
logger = structlog.get_logger(__name__)
12+
1013

1114
class QClickSlider(QSlider):
1215
"""Custom QSlider wrapper.
@@ -35,9 +38,14 @@ def mousePressEvent(self, ev: QMouseEvent):
3538
was_slider_clicked = handle_rect.contains(int(ev.position().x()), int(ev.position().y()))
3639

3740
if not was_slider_clicked:
41+
self.setSliderDown(True)
3842
self.setValue(
3943
QStyle.sliderValueFromPosition(self.minimum(), self.maximum(), ev.x(), self.width())
4044
)
41-
self.mouse_pressed = True
4245

4346
super().mousePressEvent(ev)
47+
48+
@override
49+
def mouseReleaseEvent(self, ev: QMouseEvent) -> None:
50+
self.setSliderDown(False)
51+
return super().mouseReleaseEvent(ev)

src/tagstudio/qt/view/widgets/preview/preview_thumb_view.py

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,6 @@ def __init__(self, library: Library, driver: "QtDriver") -> None:
9595
self.__media_player_video_changed_callback
9696
)
9797

98-
self.__mp_max_size = QSize(*self.__img_button_size)
99-
10098
self.__media_player_page = QWidget()
10199
self.__stacked_page_setup(self.__media_player_page, self.__media_player)
102100

@@ -131,7 +129,6 @@ def __thumb_renderer_updated_callback(
131129
self, _timestamp: float, img: QPixmap, _size: QSize, _path: Path
132130
) -> None:
133131
self.__button_wrapper.setIcon(img)
134-
self.__mp_max_size = img.size()
135132

136133
def __thumb_renderer_updated_ratio_callback(self, ratio: float) -> None:
137134
self.__image_ratio = ratio
@@ -174,25 +171,8 @@ def __update_image_size(self, size: tuple[int, int]) -> None:
174171
self.__preview_gif.setMaximumSize(adj_size)
175172
self.__preview_gif.setMinimumSize(adj_size)
176173

177-
if not self.__media_player.player.hasVideo():
178-
# ensure we do not exceed the thumbnail size
179-
mp_width = (
180-
adj_size.width()
181-
if adj_size.width() < self.__mp_max_size.width()
182-
else self.__mp_max_size.width()
183-
)
184-
mp_height = (
185-
adj_size.height()
186-
if adj_size.height() < self.__mp_max_size.height()
187-
else self.__mp_max_size.height()
188-
)
189-
mp_size = QSize(mp_width, mp_height)
190-
self.__media_player.setMinimumSize(mp_size)
191-
self.__media_player.setMaximumSize(mp_size)
192-
else:
193-
# have video, so just resize as normal
194-
self.__media_player.setMaximumSize(adj_size)
195-
self.__media_player.setMinimumSize(adj_size)
174+
self.__media_player.setMaximumSize(adj_size)
175+
self.__media_player.setMinimumSize(adj_size)
196176

197177
proxy_style = RoundedPixmapStyle(radius=8)
198178
self.__preview_gif.setStyle(proxy_style)

0 commit comments

Comments
 (0)