Got it working, but it's not better than before...
This commit is contained in:
parent
6134c21ce4
commit
22ffd211df
7 changed files with 48 additions and 18 deletions
|
@ -20,6 +20,7 @@ def main():
|
|||
from .main import Wobuzz
|
||||
|
||||
app = Wobuzz()
|
||||
app.post_init()
|
||||
|
||||
if arguments.playlist:
|
||||
playlist = Playlist(app, "Temporary Playlist")
|
||||
|
@ -49,7 +50,7 @@ def main():
|
|||
app.library.playlists.remove(app.library.temporary_playlist)
|
||||
app.library.temporary_playlist = playlist
|
||||
|
||||
app.post_init()
|
||||
app.library.load_playlist_views()
|
||||
sys.exit(app.qt_app.exec())
|
||||
|
||||
|
||||
|
|
|
@ -50,7 +50,10 @@ class GUI:
|
|||
|
||||
def on_track_change(self, previous_track, track):
|
||||
self.track_control.on_track_change(previous_track, track)
|
||||
self.app.player.current_playlist.view.on_track_change(previous_track, track)
|
||||
|
||||
for dock_id in self.app.player.current_playlist.views:
|
||||
view = self.app.player.current_playlist.views[dock_id]
|
||||
view.on_track_change(previous_track, track)
|
||||
|
||||
def on_background_job_start(self, job: str):
|
||||
self.window.process_dock.job_started_signal.emit(job)
|
||||
|
|
|
@ -43,13 +43,9 @@ class Library:
|
|||
playlist = Playlist(self.app, file_name.replace("_", " ").split(".")[0])
|
||||
self.playlists.append(playlist)
|
||||
|
||||
playlist.load_from_m3u(path)
|
||||
|
||||
if playlist.title == "Temporary Playlist":
|
||||
self.temporary_playlist = playlist
|
||||
|
||||
self.load_playlist_views()
|
||||
|
||||
def load_playlist_views(self):
|
||||
for library_dock in self.library_docks:
|
||||
playlist_tabs: QTabWidget = library_dock.library_widget.playlist_tabs
|
||||
|
@ -57,7 +53,7 @@ class Library:
|
|||
playlist_tabs.playlists = {}
|
||||
|
||||
for playlist in self.playlists:
|
||||
playlist_view = PlaylistView(playlist)
|
||||
playlist_view = PlaylistView(playlist, library_dock)
|
||||
playlist_tabs.addTab(playlist_view, playlist.title)
|
||||
|
||||
def on_exit(self, event):
|
||||
|
@ -74,6 +70,6 @@ class Library:
|
|||
for library_dock in self.library_docks:
|
||||
playlist_tabs: QTabWidget = library_dock.library_widget.playlist_tabs
|
||||
|
||||
playlist_view = PlaylistView(playlist)
|
||||
playlist_view = PlaylistView(playlist, library_dock)
|
||||
playlist_tabs.addTab(playlist_view, playlist.title)
|
||||
|
||||
|
|
|
@ -36,4 +36,6 @@ class Wobuzz:
|
|||
if __name__ == "__main__":
|
||||
wobuzz = Wobuzz()
|
||||
wobuzz.post_init()
|
||||
wobuzz.library.load_playlist_views()
|
||||
|
||||
sys.exit(wobuzz.qt_app.exec())
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import time
|
||||
import threading
|
||||
import pygame.mixer
|
||||
import pygame.event
|
||||
|
@ -174,6 +175,15 @@ class Player:
|
|||
def start_playlist(self, playlist):
|
||||
self.stop()
|
||||
|
||||
if not playlist.loaded:
|
||||
playlist.load()
|
||||
|
||||
while not playlist.has_tracks() and not playlist.loaded: # wait until first track is loaded
|
||||
time.sleep(0.1)
|
||||
|
||||
if not playlist.has_tracks():
|
||||
return
|
||||
|
||||
self.current_sound, self.current_sound_duration = playlist.set_track(0) # first track
|
||||
self.current_playlist = playlist
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
import threading
|
||||
from PyQt6.QtCore import Qt
|
||||
from .track import Track
|
||||
|
||||
|
@ -18,7 +19,8 @@ class Playlist:
|
|||
self.tracks: list[Track] = []
|
||||
self.current_track_index = 0
|
||||
self.current_track: Track | None = None
|
||||
self.view = None
|
||||
self.views = {} # dict of id(LibraryDock): PlaylistView
|
||||
self.loaded = False
|
||||
|
||||
self.path = os.path.expanduser(
|
||||
f"{app.settings.library_path}/playlists/{self.title.replace(" ", "_")}.wbz.m3u"
|
||||
|
@ -41,9 +43,13 @@ class Playlist:
|
|||
|
||||
i += 1
|
||||
|
||||
# set current track to the first track if there is no currently playing track
|
||||
if self.current_track is None and self.has_tracks():
|
||||
self.current_track = self.tracks[0]
|
||||
self.save()
|
||||
|
||||
self.tracks = []
|
||||
|
||||
def load(self):
|
||||
loading_thread = threading.Thread(target=self.load_from_m3u, args=(self.path,))
|
||||
loading_thread.start()
|
||||
|
||||
def load_from_m3u(self, path):
|
||||
file = open(path, "r")
|
||||
|
@ -64,14 +70,18 @@ class Playlist:
|
|||
|
||||
continue
|
||||
|
||||
self.tracks.append(Track(self.app, line, cache=i==0)) # first track is cached
|
||||
self.append_track(Track(self.app, line, cache=i==0)) # first track is cached
|
||||
|
||||
i += 1
|
||||
|
||||
print("kolupp")
|
||||
|
||||
# set current track to the first track if there is no currently playing track
|
||||
if self.current_track is None and self.has_tracks():
|
||||
self.current_track = self.tracks[0]
|
||||
|
||||
self.loaded = True
|
||||
|
||||
def load_from_wbz(self, path):
|
||||
pass
|
||||
|
||||
|
@ -149,10 +159,14 @@ class Playlist:
|
|||
self.app.library.playlists.remove(self)
|
||||
|
||||
def append_track(self, track):
|
||||
for dock_id in self.views:
|
||||
view = self.views[dock_id]
|
||||
view.append_track(track)
|
||||
|
||||
self.tracks.append(track)
|
||||
|
||||
if self.view:
|
||||
self.view.append_track(track)
|
||||
print(track.tags.title)
|
||||
|
||||
|
||||
def h_last_track(self):
|
||||
# get last track in history (only gets used in player.history)
|
||||
|
|
|
@ -14,13 +14,15 @@ class PlaylistView(QTreeWidget):
|
|||
bold_font = QFont()
|
||||
bold_font.setBold(True)
|
||||
|
||||
def __init__(self, playlist, parent=None):
|
||||
def __init__(self, playlist, dock, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
self.playlist = playlist
|
||||
self.library_dock = dock
|
||||
|
||||
self.app = playlist.app
|
||||
|
||||
playlist.view = self
|
||||
playlist.views[id(dock)] = self
|
||||
|
||||
self.setDragDropMode(QAbstractItemView.DragDropMode.InternalMove)
|
||||
self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
|
||||
|
@ -39,7 +41,7 @@ class PlaylistView(QTreeWidget):
|
|||
|
||||
self.setHeaderLabels(headers)
|
||||
|
||||
self.load_tracks()
|
||||
#self.load_tracks()
|
||||
|
||||
self.itemActivated.connect(self.on_track_activation)
|
||||
|
||||
|
@ -141,6 +143,8 @@ class PlaylistView(QTreeWidget):
|
|||
if track:
|
||||
playlist_tabs.setTabIcon(index, self.playing_mark) # mark this playlist
|
||||
|
||||
print(self.app.player.current_playlist.current_track_index)
|
||||
|
||||
# mark the current track in this playlist
|
||||
item = self.topLevelItem(self.app.player.current_playlist.current_track_index)
|
||||
item.setIcon(0, self.playing_mark)
|
||||
|
|
Loading…
Add table
Reference in a new issue