Clear Cover panel when playlist is empty (resolve #24)
This commit is contained in:
parent
41d7dfaae6
commit
b5e76b4041
2 changed files with 45 additions and 26 deletions
|
|
@ -608,7 +608,6 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="transition_type">slide-right</property>
|
<property name="transition_type">slide-right</property>
|
||||||
<property name="reveal_child">True</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
|
|
||||||
|
|
@ -349,8 +349,7 @@ class Window():
|
||||||
|
|
||||||
def on_mcg_status(self, state, album, pos, time, volume, error):
|
def on_mcg_status(self, state, album, pos, time, volume, error):
|
||||||
# Album
|
# Album
|
||||||
if album:
|
GObject.idle_add(self._panels[Window._PANEL_INDEX_COVER].set_album, album)
|
||||||
GObject.idle_add(self._panels[Window._PANEL_INDEX_COVER].set_album, album)
|
|
||||||
# State
|
# State
|
||||||
if state == 'play':
|
if state == 'play':
|
||||||
GObject.idle_add(self._header_bar.set_play)
|
GObject.idle_add(self._header_bar.set_play)
|
||||||
|
|
@ -803,6 +802,7 @@ class CoverPanel(GObject.GObject):
|
||||||
self._panel = builder.get_object('cover-panel')
|
self._panel = builder.get_object('cover-panel')
|
||||||
self._toolbar = builder.get_object('cover-toolbar')
|
self._toolbar = builder.get_object('cover-toolbar')
|
||||||
# Toolbar menu
|
# Toolbar menu
|
||||||
|
self._toolbar_tracklist = builder.get_object('cover-toolbar-tracklist')
|
||||||
self._toolbar_tracklist_buttons = {
|
self._toolbar_tracklist_buttons = {
|
||||||
TracklistSize.LARGE: builder.get_object('cover-toolbar-tracklist-large'),
|
TracklistSize.LARGE: builder.get_object('cover-toolbar-tracklist-large'),
|
||||||
TracklistSize.SMALL: builder.get_object('cover-toolbar-tracklist-small'),
|
TracklistSize.SMALL: builder.get_object('cover-toolbar-tracklist-small'),
|
||||||
|
|
@ -826,6 +826,9 @@ class CoverPanel(GObject.GObject):
|
||||||
self._songs_scale = builder.get_object('cover-songs')
|
self._songs_scale = builder.get_object('cover-songs')
|
||||||
self._songs_scale.override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1))
|
self._songs_scale.override_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1))
|
||||||
|
|
||||||
|
# Initial actions
|
||||||
|
GObject.idle_add(self._enable_tracklist)
|
||||||
|
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
return self._panel
|
return self._panel
|
||||||
|
|
@ -862,7 +865,7 @@ class CoverPanel(GObject.GObject):
|
||||||
|
|
||||||
|
|
||||||
def on_cover_size_allocate(self, widget, allocation):
|
def on_cover_size_allocate(self, widget, allocation):
|
||||||
self._resize_image()
|
GObject.idle_add(self._resize_image)
|
||||||
|
|
||||||
|
|
||||||
def on_songs_start_change(self, widget, event):
|
def on_songs_start_change(self, widget, event):
|
||||||
|
|
@ -898,28 +901,33 @@ class CoverPanel(GObject.GObject):
|
||||||
|
|
||||||
|
|
||||||
def set_album(self, album):
|
def set_album(self, album):
|
||||||
# Set labels
|
if album:
|
||||||
self._album_title_label.set_label(
|
# Set labels
|
||||||
GObject.markup_escape_text(
|
self._album_title_label.set_label(
|
||||||
album.get_title()
|
GObject.markup_escape_text(
|
||||||
|
album.get_title()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
self._album_date_label.set_markup(
|
||||||
self._album_date_label.set_markup(
|
GObject.markup_escape_text(
|
||||||
GObject.markup_escape_text(
|
', '.join(album.get_dates())
|
||||||
', '.join(album.get_dates())
|
)
|
||||||
)
|
)
|
||||||
)
|
self._album_artist_label.set_markup(
|
||||||
self._album_artist_label.set_markup(
|
GObject.markup_escape_text(
|
||||||
GObject.markup_escape_text(
|
', '.join(album.get_albumartists())
|
||||||
', '.join(album.get_albumartists())
|
)
|
||||||
)
|
)
|
||||||
)
|
# Set tracks
|
||||||
|
self._set_tracks(album)
|
||||||
|
|
||||||
# Set tracks
|
# Set current album
|
||||||
self._set_tracks(album)
|
old_album = self._current_album
|
||||||
|
self._current_album = album
|
||||||
|
self._enable_tracklist()
|
||||||
|
|
||||||
# Load cover
|
# Load cover
|
||||||
threading.Thread(target=self._set_cover, args=(album,)).start()
|
threading.Thread(target=self._set_cover, args=(old_album, album,)).start()
|
||||||
|
|
||||||
|
|
||||||
def set_play(self, pos, time):
|
def set_play(self, pos, time):
|
||||||
|
|
@ -959,13 +967,14 @@ class CoverPanel(GObject.GObject):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _set_cover(self, album):
|
def _set_cover(self, current_album, new_album):
|
||||||
self._cover_stack.set_visible_child(self._cover_spinner)
|
self._cover_stack.set_visible_child(self._cover_spinner)
|
||||||
self._cover_spinner.start()
|
self._cover_spinner.start()
|
||||||
if self._current_album is None or album.get_hash() != self._current_album.get_hash():
|
current_hash = current_album.get_hash() if current_album else None
|
||||||
self._current_album = album
|
new_hash = new_album.get_hash() if new_album else None
|
||||||
url = album.get_cover()
|
if not current_hash or not new_hash or current_hash != new_hash:
|
||||||
if url is not None and url is not "":
|
url = new_album.get_cover() if new_album else None
|
||||||
|
if url and url is not "":
|
||||||
# Load image and draw it
|
# Load image and draw it
|
||||||
self._cover_pixbuf = Utils.load_cover(url)
|
self._cover_pixbuf = Utils.load_cover(url)
|
||||||
else:
|
else:
|
||||||
|
|
@ -995,6 +1004,17 @@ class CoverPanel(GObject.GObject):
|
||||||
self._songs_scale.add_mark(length, Gtk.PositionType.RIGHT, "{0[0]:02d}:{0[1]:02d} minutes".format(divmod(length, 60)))
|
self._songs_scale.add_mark(length, Gtk.PositionType.RIGHT, "{0[0]:02d}:{0[1]:02d} minutes".format(divmod(length, 60)))
|
||||||
|
|
||||||
|
|
||||||
|
def _enable_tracklist(self):
|
||||||
|
if self._current_album:
|
||||||
|
# enable
|
||||||
|
self._toolbar_tracklist.set_sensitive(True)
|
||||||
|
self._change_tracklist_size(self._tracklist_size, False, False)
|
||||||
|
else:
|
||||||
|
# disable
|
||||||
|
self._toolbar_tracklist.set_sensitive(False)
|
||||||
|
self._change_tracklist_size(TracklistSize.HIDDEN, False, False)
|
||||||
|
|
||||||
|
|
||||||
def _change_tracklist_size(self, size, notify=True, store=True):
|
def _change_tracklist_size(self, size, notify=True, store=True):
|
||||||
# Set tracklist size
|
# Set tracklist size
|
||||||
if size == TracklistSize.LARGE:
|
if size == TracklistSize.LARGE:
|
||||||
|
|
@ -1013,7 +1033,7 @@ class CoverPanel(GObject.GObject):
|
||||||
if notify:
|
if notify:
|
||||||
self.emit('tracklist-size-changed', size)
|
self.emit('tracklist-size-changed', size)
|
||||||
# Resize image
|
# Resize image
|
||||||
self._resize_image()
|
GObject.idle_add(self._resize_image)
|
||||||
|
|
||||||
|
|
||||||
def _playing(self):
|
def _playing(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue