Rettelsaer
This commit is contained in:
@@ -3,7 +3,7 @@ playlist_info_dialog.py — Flydende danseliste-info vindue med dynamisk opdater
|
||||
"""
|
||||
|
||||
from PyQt6.QtWidgets import (
|
||||
QWidget, QVBoxLayout, QHBoxLayout, QLabel, QSpinBox,
|
||||
QWidget, QVBoxLayout, QHBoxLayout, QLabel,
|
||||
QFrame, QGridLayout,
|
||||
)
|
||||
from PyQt6.QtCore import Qt, pyqtSignal
|
||||
@@ -22,7 +22,6 @@ def fmt_time(seconds: int) -> str:
|
||||
|
||||
|
||||
class PlaylistInfoWindow(QWidget):
|
||||
pause_changed = pyqtSignal(int)
|
||||
|
||||
def __init__(self, playlist_panel, parent=None):
|
||||
super().__init__(parent,
|
||||
@@ -83,33 +82,6 @@ class PlaylistInfoWindow(QWidget):
|
||||
|
||||
layout.addWidget(stats)
|
||||
|
||||
# Indstillinger
|
||||
cfg = QFrame()
|
||||
cfg.setObjectName("track_display")
|
||||
cfg_layout = QGridLayout(cfg)
|
||||
cfg_layout.setContentsMargins(12, 8, 12, 8)
|
||||
cfg_layout.setSpacing(6)
|
||||
|
||||
cfg_layout.addWidget(QLabel("Tid mellem musikstykker:"), 0, 0)
|
||||
self._spin_pause = QSpinBox()
|
||||
self._spin_pause.setRange(0, 600)
|
||||
self._spin_pause.setValue(self._pause_seconds)
|
||||
self._spin_pause.setSuffix(" sek")
|
||||
self._spin_pause.setFixedWidth(90)
|
||||
self._spin_pause.valueChanged.connect(self._on_pause_changed)
|
||||
cfg_layout.addWidget(self._spin_pause, 0, 1)
|
||||
|
||||
cfg_layout.addWidget(QLabel("Tid per workshop:"), 1, 0)
|
||||
self._spin_ws = QSpinBox()
|
||||
self._spin_ws.setRange(0, 120)
|
||||
self._spin_ws.setValue(self._workshop_seconds // 60)
|
||||
self._spin_ws.setSuffix(" min")
|
||||
self._spin_ws.setFixedWidth(90)
|
||||
self._spin_ws.valueChanged.connect(self._on_ws_changed)
|
||||
cfg_layout.addWidget(self._spin_ws, 1, 1)
|
||||
|
||||
layout.addWidget(cfg)
|
||||
|
||||
# Fremgang og ETA
|
||||
eta_frame = QFrame()
|
||||
eta_frame.setObjectName("track_display")
|
||||
@@ -131,26 +103,14 @@ class PlaylistInfoWindow(QWidget):
|
||||
|
||||
layout.addWidget(eta_frame)
|
||||
|
||||
def _on_pause_changed(self, value: int):
|
||||
self._pause_seconds = value
|
||||
if hasattr(self._panel, "_pause_seconds"):
|
||||
self._panel._pause_seconds = value
|
||||
self.pause_changed.emit(value)
|
||||
self._update()
|
||||
|
||||
def _on_ws_changed(self, minutes: int):
|
||||
self._workshop_seconds = minutes * 60
|
||||
if hasattr(self._panel, "_workshop_seconds"):
|
||||
self._panel._workshop_seconds = self._workshop_seconds
|
||||
self._update()
|
||||
|
||||
def _update(self):
|
||||
songs = self._panel.get_songs()
|
||||
statuses = self._panel.get_statuses()
|
||||
total = len(songs)
|
||||
played = statuses.count("played")
|
||||
skipped = statuses.count("skipped")
|
||||
remaining = total - played - skipped
|
||||
done = played + skipped # samlet "overstået"
|
||||
remaining = total - done
|
||||
|
||||
ws_total = sum(1 for s in songs if s.get("is_workshop"))
|
||||
ws_remain = sum(1 for s, st in zip(songs, statuses)
|
||||
@@ -189,10 +149,10 @@ class PlaylistInfoWindow(QWidget):
|
||||
self._lbl_eta.setText("✓ Danselisten er afsluttet!")
|
||||
self._lbl_finish.setText("")
|
||||
elif total > 0:
|
||||
pct = int(played / total * 100) if total > 0 else 0
|
||||
pct = int(done / total * 100) if total > 0 else 0
|
||||
self._lbl_eta.setText(
|
||||
f"{pct}% færdig · {fmt_time(remain_time)} tilbage"
|
||||
if played > 0 else f"Samlet varighed: {fmt_time(total_time)}"
|
||||
if done > 0 else f"Samlet varighed: {fmt_time(total_time)}"
|
||||
)
|
||||
finish = datetime.now() + timedelta(seconds=remain_time)
|
||||
self._lbl_finish.setText(f"Estimeret sluttid: {finish.strftime('%H:%M')}")
|
||||
|
||||
Reference in New Issue
Block a user