Version 1

This commit is contained in:
2026-04-10 23:59:23 +02:00
parent 9d7adf42c1
commit d55859c593
17 changed files with 743 additions and 490 deletions

View File

@@ -32,6 +32,7 @@ class PlaylistPanel(QWidget):
self._current_idx = -1
self._song_ended = False
self._active_playlist_id: int | None = None
self._named_playlist_id: int | None = None # den indlæste/gemte navngivne liste
self._build_ui()
self.setAcceptDrops(True)
# Autogem-timer — venter 800ms efter sidst ændring
@@ -229,7 +230,7 @@ class PlaylistPanel(QWidget):
from local.local_db import save_event_state
save_event_state(self._current_idx, self._statuses)
except Exception as e:
print(f"Event-state gem fejl: {e}")
pass
def _trigger_event_state_save(self):
self._event_state_timer.start()
@@ -250,9 +251,12 @@ class PlaylistPanel(QWidget):
self._refresh()
return True
except Exception as e:
print(f"Event-state gendan fejl: {e}")
pass
return False
def get_named_playlist_id(self) -> int | None:
return self._named_playlist_id
def next_playable_idx(self) -> int | None:
"""Find første sang fra toppen der ikke er 'skipped' eller 'played'."""
for i in range(len(self._songs)):
@@ -286,7 +290,7 @@ class PlaylistPanel(QWidget):
self.playlist_changed.emit()
except Exception as e:
self._lbl_autosave.setText(f"⚠ gemfejl")
print(f"Autogem fejl: {e}")
pass
def restore_active_playlist(self):
"""Indlæs den sidst aktive liste ved opstart."""
@@ -324,7 +328,7 @@ class PlaylistPanel(QWidget):
self._lbl_autosave.setText("✓ gendannet")
return True
except Exception as e:
print(f"Gendan aktiv liste fejl: {e}")
pass
return False
# ── Ny / Gem som / Hent ───────────────────────────────────────────────────
@@ -362,6 +366,7 @@ class PlaylistPanel(QWidget):
for i, song in enumerate(self._songs, start=1):
if song.get("id"):
add_song_to_playlist(pl_id, song["id"], position=i)
self._named_playlist_id = pl_id
self._title_label.setText(f"DANSELISTE — {name.upper()}")
self._lbl_autosave.setText(f"✓ gemt som \"{name}\"")
except Exception as e:
@@ -400,11 +405,12 @@ class PlaylistPanel(QWidget):
from local.local_db import get_db
with get_db() as conn:
songs_raw = conn.execute("""
SELECT s.*, ps.position FROM playlist_songs ps
SELECT s.*, ps.position, ps.status FROM playlist_songs ps
JOIN songs s ON s.id = ps.song_id
WHERE ps.playlist_id=? ORDER BY ps.position
""", (pl_id,)).fetchall()
songs = []
statuses = []
for row in songs_raw:
dances = conn.execute(
"SELECT dance_name FROM song_dances WHERE song_id=? ORDER BY dance_order",
@@ -418,7 +424,16 @@ class PlaylistPanel(QWidget):
"file_missing": bool(row["file_missing"]),
"dances": [d["dance_name"] for d in dances],
})
self.load_songs(songs, name=pl_name)
statuses.append(row["status"] or "pending")
self._songs = songs
self._statuses = statuses
self._current_idx = -1
self._song_ended = False
self._named_playlist_id = pl_id
self._title_label.setText(f"DANSELISTE — {pl_name.upper()}")
self._lbl_autosave.setText("✓ gendannet")
self._refresh()
self._trigger_autosave()
except Exception as e:
QMessageBox.warning(self, "Fejl", f"Kunne ikke indlæse listen: {e}")