Skip to content

Commit

Permalink
fixed some issues when opening uri, improved queue
Browse files Browse the repository at this point in the history
  • Loading branch information
Nokse22 committed May 26, 2024
1 parent 91538ef commit eff2f3f
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 39 deletions.
6 changes: 4 additions & 2 deletions src/lib/variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ def init():
global player_object
global sidebar_list
global search_entry
global stack

def get_favourites():
global favourite_tracks
Expand Down Expand Up @@ -136,11 +137,12 @@ def get_type(item):
elif isinstance(item, Playlist):
return "playlist"

def open_uri(label, uri, turn=True):
def open_uri(label, uri):
print(uri)
stack.set_visible_child_name("normal_view")
th= threading.Thread(target=_load_object, args=(uri,))
th.start()
return turn
return True

def _open_uri(uri, loaded_object):
uri_parts = uri.split(":")
Expand Down
1 change: 1 addition & 0 deletions src/widgets/generic_track_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ def _add_to_playlist(self, action, parameter, playlist_index):

def on_open_uri(self, label, uri, *args):
variables.open_uri(label, uri)
return True

def delete_signals(self):
disconnected_signals = 0
Expand Down
35 changes: 22 additions & 13 deletions src/widgets/queue_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,29 +52,24 @@ class QueueWidget(Gtk.Box):
def __init__(self):
super().__init__()

def update(self, player):
def update_all(self, player):
self.update_playing_song(player)
self.update_played_songs(player)
self.update_queue(player)
self.update_next_songs(player)

def update_playing_song(self, player):
track = player.playing_track
self.playing_track_title_label.set_label(track.name)
threading.Thread(target=utils.add_image, args=(self.playing_track_image, track.album)).start()

def update_played_songs(self, player):
child = self.played_songs_list.get_row_at_index(0)
while child:
self.played_songs_list.remove(child)
del child
child = self.played_songs_list.get_row_at_index(0)

child = self.queued_songs_list.get_row_at_index(0)
while child:
self.queued_songs_list.remove(child)
del child
child = self.queued_songs_list.get_row_at_index(0)

child = self.next_songs_list.get_row_at_index(0)
while child:
self.next_songs_list.remove(child)
del child
child = self.next_songs_list.get_row_at_index(0)

if len(player.played_songs) > 0:
self.played_songs_box.set_visible(True)
for index, track in enumerate(player.played_songs):
Expand All @@ -84,6 +79,13 @@ def update(self, player):
else:
self.played_songs_box.set_visible(False)

def update_queue(self, player):
child = self.queued_songs_list.get_row_at_index(0)
while child:
self.queued_songs_list.remove(child)
del child
child = self.queued_songs_list.get_row_at_index(0)

if len(player.queue) > 0:
self.queued_songs_box.set_visible(True)
for index, track in enumerate(player.queue):
Expand All @@ -93,6 +95,13 @@ def update(self, player):
else:
self.queued_songs_box.set_visible(False)

def update_next_songs(self, player):
child = self.next_songs_list.get_row_at_index(0)
while child:
self.next_songs_list.remove(child)
del child
child = self.next_songs_list.get_row_at_index(0)

if len(player.tracks_to_play) > 0:
self.next_songs_box.set_visible(True)
for index, track in enumerate(player.tracks_to_play):
Expand Down
28 changes: 4 additions & 24 deletions src/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,22 +114,21 @@ def __init__(self, **kwargs):
self.player_object.bind_property("shuffle_mode", self.shuffle_button, "active", GObject.BindingFlags.DEFAULT)
self.player_object.connect("update-slider", self.update_slider)
self.player_object.connect("song-changed", self.on_song_changed)
# self.player_object.connect("song-changed",self.on_tracks_queue_needs_update)
self.player_object.connect("song-added-to-queue", self.on_tracks_queue_needs_update)
self.player_object.connect("song-changed",self.queue_widget.update_all)
self.player_object.connect("song-added-to-queue", self.queue_widget.update_queue)
self.player_object.connect("play-changed", self.update_controls)

self.artist_label.connect("activate-link", variables.open_uri)
self.mobile_artist_label.connect("activate-link", variables.open_uri, False)
self.mobile_artist_label.connect("activate-link", variables.open_uri)
self.mobile_artist_label.connect("activate-link", self.toggle_mobile_view)

self.queue_widget.connect("map", self.on_queue_widget_shown)

self.search_entry.connect("activate", self.on_search_activated)

self.session = tidalapi.Session()

variables.session = self.session
variables.navigation_view = self.navigation_view
variables.stack = self.main_view_stack

self.user = self.session.user

Expand Down Expand Up @@ -274,20 +273,6 @@ def on_song_changed(self, *args):

self.control_bar_artist = track.artist
self.update_slider()
# self.on_tracks_queue_needs_update()

def on_tracks_queue_needs_update(self, *args):
if self.main_view_stack.get_visible_child_name() == "mobile_view" and self.mobile_stack.get_visible_child_name() == "queue_page":
# self.queue_widget.update(self.player_object)
# self.queue_widget_updated = True
# FIXME the app crashes when the song is changed while the queue page is visible (using mpris). If you uncomment the code above. Now it will not update correctly
pass
self.queue_widget_updated = False

def on_queue_widget_shown(self, *args):
if not self.queue_widget_updated:
self.queue_widget.update(self.player_object)
self.queue_widget_updated = True

def on_search_activated(self, *args):
page = searchPage(None, "Search")
Expand Down Expand Up @@ -546,8 +531,3 @@ def toggle_mobile_view(self, *args):
self.main_view_stack.set_visible_child_name("normal_view")

return True

# @Gtk.Template.Callback("on_page_popped")
# def on_page_popped(self, navigation_view, page):
# page.delete_signals()
# del page

0 comments on commit eff2f3f

Please sign in to comment.