[gnome-music/wip/mschraal/viewenum: 1/2] Clarify view referral
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/mschraal/viewenum: 1/2] Clarify view referral
- Date: Wed, 27 Dec 2017 20:57:11 +0000 (UTC)
commit 19854b3cf1a19b018941b9faa40369a413099600
Author: Marinus Schraal <mschraal gnome org>
Date: Wed Dec 27 21:18:27 2017 +0100
Clarify view referral
Use an enum to clarify what view is being referred to, instead of using
numerical values.
gnomemusic/mpris.py | 7 +--
gnomemusic/toolbar.py | 8 ++--
gnomemusic/utils.py | 12 ++++++
gnomemusic/views/emptysearchview.py | 5 ++-
gnomemusic/views/searchview.py | 10 +++--
gnomemusic/window.py | 86 ++++++++++++++++++++-----------------
6 files changed, 77 insertions(+), 51 deletions(-)
---
diff --git a/gnomemusic/mpris.py b/gnomemusic/mpris.py
index 3533e9f..87317ce 100644
--- a/gnomemusic/mpris.py
+++ b/gnomemusic/mpris.py
@@ -26,6 +26,7 @@
from gnomemusic.player import PlaybackStatus, RepeatType
from gnomemusic.grilo import grilo
from gnomemusic.playlists import Playlists
+from gnomemusic.utils import View
import gnomemusic.utils as utils
from gi.repository import GLib
@@ -542,8 +543,8 @@ class MediaPlayer2Service(Server):
self.player.set_playing(True)
elif self.first_song_handler == 0:
window = self.app.get_active_window()
- window._stack.set_visible_child(window.views[2])
- model = window.views[2].model
+ window._stack.set_visible_child(window.views[View.SONG])
+ model = window.views[View.SONG].model
if model.iter_n_children(None):
_iter = model.get_iter_first()
self._play_first_song(model, model.get_path(_iter), _iter)
@@ -625,7 +626,7 @@ class MediaPlayer2Service(Server):
def ActivatePlaylist(self, playlist_path):
playlist_id = self._get_playlist_from_path(playlist_path).get_id()
- self.app._window.views[3].activate_playlist(playlist_id)
+ self.app._window.views[View.PLAYLIST].activate_playlist(playlist_id)
def GetPlaylists(self, index, max_count, order, reverse):
if order != 'Alphabetical':
diff --git a/gnomemusic/toolbar.py b/gnomemusic/toolbar.py
index dd3709e..fe7f447 100644
--- a/gnomemusic/toolbar.py
+++ b/gnomemusic/toolbar.py
@@ -32,6 +32,7 @@ from gi.repository import GObject, Gtk
from gnomemusic import log
from gnomemusic.searchbar import Searchbar, DropDown
+from gnomemusic.utils import View
class ToolbarState:
@@ -131,9 +132,10 @@ class Toolbar(GObject.GObject):
view = self._stack_switcher.get_stack().get_visible_child()
view._back_button_clicked(view)
- if not ((self._window.curr_view == self._window.views[4]
- or self._window.curr_view == self._window.views[5])
- and visible_child != self._window.curr_view._grid):
+ current_view = self._window.curr_view
+ if not ((current_view == self._window.views[View.SEARCH]
+ or current_view == self._window.views[View.EMPTY_SEARCH])
+ and visible_child != current_view._grid):
self.set_state(ToolbarState.MAIN)
else:
self._search_button.set_visible(True)
diff --git a/gnomemusic/utils.py b/gnomemusic/utils.py
index 5e0152a..603685e 100644
--- a/gnomemusic/utils.py
+++ b/gnomemusic/utils.py
@@ -22,9 +22,21 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from enum import IntEnum
+
from gettext import gettext as _
+class View(IntEnum):
+ """Enum for views"""
+ ALBUM = 0
+ ARTIST = 1
+ SONG = 2
+ PLAYLIST = 3
+ SEARCH = 4
+ EMPTY_SEARCH = 5
+
+
def get_album_title(item):
"""Returns the album title associated with the media item
diff --git a/gnomemusic/views/emptysearchview.py b/gnomemusic/views/emptysearchview.py
index 0b49f8b..e81b4b4 100644
--- a/gnomemusic/views/emptysearchview.py
+++ b/gnomemusic/views/emptysearchview.py
@@ -27,6 +27,7 @@ from gi.repository import Gd, Gtk
from gnomemusic import log
from gnomemusic.toolbar import ToolbarState
+from gnomemusic.utils import View
from gnomemusic.views.baseview import BaseView
@@ -60,7 +61,7 @@ class EmptySearchView(BaseView):
self._artist_albums_widget.destroy()
self._artist_albums_widget = None
elif self.get_visible_child() == self._grid:
- self._window.views[0].set_visible_child(
- self._window.views[0]._grid)
+ self._window.views[View.ALBUM].set_visible_child(
+ self._window.views[View.ALBUM]._grid)
self._window.toolbar.set_state(ToolbarState.CHILD_VIEW)
self.set_visible_child(self._grid)
diff --git a/gnomemusic/views/searchview.py b/gnomemusic/views/searchview.py
index 6c2284d..bde6be9 100644
--- a/gnomemusic/views/searchview.py
+++ b/gnomemusic/views/searchview.py
@@ -32,6 +32,7 @@ from gnomemusic.player import DiscoveryStatus
from gnomemusic.playlists import Playlists
from gnomemusic.query import Query
from gnomemusic.toolbar import ToolbarState
+from gnomemusic.utils import View
from gnomemusic.views.baseview import BaseView
from gnomemusic.widgets.albumwidget import AlbumWidget
from gnomemusic.widgets.artistalbumswidget import ArtistAlbumsWidget
@@ -100,8 +101,8 @@ class SearchView(BaseView):
self._artist_albums_widget.destroy()
self._artist_albums_widget = None
elif self.get_visible_child() == self._grid:
- self._window.views[0].set_visible_child(
- self._window.views[0]._grid)
+ self._window.views[View.ALBUM].set_visible_child(
+ self._window.views[View.ALBUM]._grid)
self.set_visible_child(self._grid)
self._window.toolbar.set_state(ToolbarState.MAIN)
@@ -216,8 +217,9 @@ class SearchView(BaseView):
self.emit('no-music-found')
# We need to remember the view before the search view
- if (self._window.curr_view != self._window.views[5]
- and self._window.prev_view != self._window.views[5]):
+ emptysearchview = self._window.views[View.EMPTY_SEARCH]
+ if (self._window.curr_view != emptysearchview
+ and self._window.prev_view != emptysearchview):
self.previous_view = self._window.prev_view
if remaining == 0:
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 9693b72..ba21854 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -37,6 +37,7 @@ from gnomemusic import TrackerWrapper
from gnomemusic.toolbar import Toolbar, ToolbarState
from gnomemusic.player import Player, SelectionToolbar, RepeatType
from gnomemusic.query import Query
+from gnomemusic.utils import View
from gnomemusic.views.albumsview import AlbumsView
from gnomemusic.views.artistsview import ArtistsView
from gnomemusic.views.emptyview import EmptyView
@@ -149,7 +150,7 @@ class Window(Gtk.ApplicationWindow):
# Undo playlist removal
def undo_remove_cb(button, self):
self._playlist_notification.set_reveal_child(False)
- self.views[3].undo_playlist_deletion()
+ self.views[View.PLAYLIST].undo_playlist_deletion()
remove_notification_timeout(self)
@@ -167,9 +168,10 @@ class Window(Gtk.ApplicationWindow):
@log
def _on_changes_pending(self, data=None):
+ # FIXME: This is not working right.
def songs_available_cb(available):
if available:
- if self.views[0] == self.views[-1]:
+ if self.views[View.ALBUM] == self.views[-1]:
view = self.views.pop()
view.destroy()
self._switch_to_player_view()
@@ -254,7 +256,7 @@ class Window(Gtk.ApplicationWindow):
self.player = Player(self)
self.selection_toolbar = SelectionToolbar()
self.toolbar = Toolbar()
- self.views = []
+ self.views = [None] * len(View)
self._stack = Gtk.Stack(
transition_type=Gtk.StackTransitionType.CROSSFADE,
transition_duration=100,
@@ -308,9 +310,9 @@ class Window(Gtk.ApplicationWindow):
view_class = EmptyView
else:
view_class = InitialStateView
- self.views.append(view_class(self, self.player))
+ self.views[View.ALBUM] = view_class(self, self.player)
- self._stack.add_titled(self.views[0], _("Empty"), _("Empty"))
+ self._stack.add_titled(self.views[View.ALBUM], _("Empty"), _("Empty"))
self.toolbar._search_button.set_sensitive(False)
self.toolbar._select_button.set_sensitive(False)
@@ -321,12 +323,12 @@ class Window(Gtk.ApplicationWindow):
self.connect('destroy', self._notify_mode_disconnect)
self._key_press_event_id = self.connect('key_press_event', self._on_key_press)
- self.views.append(AlbumsView(self, self.player))
- self.views.append(ArtistsView(self, self.player))
- self.views.append(SongsView(self, self.player))
- self.views.append(PlaylistView(self, self.player))
- self.views.append(SearchView(self, self.player))
- self.views.append(EmptySearchView(self, self.player))
+ self.views[View.ALBUM] = AlbumsView(self, self.player)
+ self.views[View.ARTIST] = ArtistsView(self, self.player)
+ self.views[View.SONG] = SongsView(self, self.player)
+ self.views[View.PLAYLIST] = PlaylistView(self, self.player)
+ self.views[View.SEARCH] = SearchView(self, self.player)
+ self.views[View.EMPTY_SEARCH] = EmptySearchView(self, self.player)
for i in self.views:
if i.title:
@@ -370,7 +372,7 @@ class Window(Gtk.ApplicationWindow):
# Callback to remove playlists
def remove_playlist_timeout_cb(self):
# Remove the playlist
- playlist.delete_playlist(self.views[3].pl_todelete)
+ playlist.delete_playlist(self.views[View.PLAYLIST].pl_todelete)
# Hide the notification
self._playlist_notification.set_reveal_child(False)
@@ -385,7 +387,7 @@ class Window(Gtk.ApplicationWindow):
GLib.source_remove(self._playlist_notification_timeout_id)
remove_playlist_timeout_cb(self)
- playlist_title = self.views[3].current_playlist.get_title()
+ playlist_title = self.views[View.PLAYLIST].current_playlist.get_title()
label = _("Playlist {} removed".format(playlist_title))
self._playlist_notification.label.set_label(label)
@@ -452,9 +454,10 @@ class Window(Gtk.ApplicationWindow):
and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK):
self._toggle_view(0, 3)
else:
- if (event.keyval == Gdk.KEY_Delete):
- if self._stack.get_visible_child() == self.views[3]:
- self.views[3].remove_playlist()
+ child = self._stack.get_visible_child()
+ if (event.keyval == Gdk.KEY_Delete
+ and child == self.views[View.PLAYLIST]):
+ self.views[View.PLAYLIST].remove_playlist()
# Close search bar after Esc is pressed
if event.keyval == Gdk.KEY_Escape:
self.toolbar.searchbar.show_bar(False)
@@ -469,7 +472,7 @@ class Window(Gtk.ApplicationWindow):
and GLib.unichar_isprint(chr(key_unic))
and (event_and_modifiers == Gdk.ModifierType.SHIFT_MASK
or event_and_modifiers == 0)
- and not self.views[3].rename_active):
+ and not self.views[View.PLAYLIST].rename_active):
self.toolbar.searchbar.show_bar(True)
@log
@@ -494,28 +497,30 @@ class Window(Gtk.ApplicationWindow):
self.curr_view = stack.get_visible_child()
# Switch to all albums view when we're clicking Albums
- if self.curr_view == self.views[0] and not (self.prev_view == self.views[4] or self.prev_view ==
self.views[5]):
+ if (self.curr_view == self.views[View.ALBUM]
+ and not (self.prev_view == self.views[View.SEARCH]
+ or self.prev_view == self.views[View.EMPTY_SEARCH])):
self.curr_view.set_visible_child(self.curr_view._grid)
# Slide out sidebar on switching to Artists or Playlists view
- if self.curr_view == self.views[1] or \
- self.curr_view == self.views[3]:
+ if self.curr_view == self.views[View.ARTIST] or \
+ self.curr_view == self.views[View.PLAYLIST]:
self.curr_view.stack.set_visible_child_name('dummy')
self.curr_view.stack.set_visible_child_name('sidebar')
- if self.curr_view != self.views[4] and self.curr_view != self.views[5]:
+ if self.curr_view != self.views[View.SEARCH] and self.curr_view != self.views[View.EMPTY_SEARCH]:
self.toolbar.searchbar.show_bar(False)
# Toggle the selection button for the EmptySearch view
- if self.curr_view == self.views[5] or \
- self.prev_view == self.views[5]:
+ if self.curr_view == self.views[View.EMPTY_SEARCH] or \
+ self.prev_view == self.views[View.EMPTY_SEARCH]:
self.toolbar._select_button.set_sensitive(
not self.toolbar._select_button.get_sensitive())
# Disable renaming playlist if it was active when leaving
# Playlist view
- if (self.prev_view == self.views[3]
- and self.views[3].rename_active):
- self.views[3].disable_rename_playlist()
+ if (self.prev_view == self.views[View.PLAYLIST]
+ and self.views[View.PLAYLIST].rename_active):
+ self.views[View.PLAYLIST].disable_rename_playlist()
@log
def _toggle_view(self, btn, i):
@@ -523,18 +528,20 @@ class Window(Gtk.ApplicationWindow):
@log
def _on_search_toggled(self, button, data=None):
- self.toolbar.searchbar.show_bar(button.get_active(),
- self.curr_view != self.views[4])
- if (not button.get_active() and
- (self.curr_view == self.views[4] or self.curr_view == self.views[5])):
+ self.toolbar.searchbar.show_bar(
+ button.get_active(), self.curr_view != self.views[View.SEARCH])
+ if (not button.get_active()
+ and (self.curr_view == self.views[View.SEARCH]
+ or self.curr_view == self.views[View.EMPTY_SEARCH])):
child = self.curr_view.get_visible_child()
if self.toolbar._state == ToolbarState.MAIN:
# We should get back to the view before the search
- self._stack.set_visible_child(self.views[4].previous_view)
- elif (self.views[4].previous_view == self.views[0]
+ self._stack.set_visible_child(
+ self.views[View.SEARCH].previous_view)
+ elif (self.views[View.SEARCH].previous_view == self.views[View.ALBUM]
and child != self.curr_view._album_widget
and child != self.curr_view._artist_albums_widget):
- self._stack.set_visible_child(self.views[0])
+ self._stack.set_visible_child(self.views[View.ALBUM])
if self.toolbar._selectionMode:
self.toolbar.set_selection_mode(False)
@@ -544,20 +551,22 @@ class Window(Gtk.ApplicationWindow):
if self.toolbar._selectionMode is False:
self._on_changes_pending()
else:
- in_playlist = self._stack.get_visible_child() == self.views[3]
+ child = self._stack.get_visible_child()
+ in_playlist = (child == self.views[View.PLAYLIST])
self.selection_toolbar._add_to_playlist_button.set_visible(not in_playlist)
self.selection_toolbar._remove_from_playlist_button.set_visible(in_playlist)
@log
def _on_add_to_playlist_button_clicked(self, widget):
- if self._stack.get_visible_child() == self.views[3]:
+ if self._stack.get_visible_child() == self.views[View.PLAYLIST]:
return
def callback(selected_songs):
if len(selected_songs) < 1:
return
- playlist_dialog = PlaylistDialog(self, self.views[3].pl_todelete)
+ playlist_dialog = PlaylistDialog(
+ self, self.views[View.PLAYLIST].pl_todelete)
if playlist_dialog.run() == Gtk.ResponseType.ACCEPT:
playlist.add_to_playlist(playlist_dialog.get_selected(),
selected_songs)
@@ -568,7 +577,7 @@ class Window(Gtk.ApplicationWindow):
@log
def _on_remove_from_playlist_button_clicked(self, widget):
- if self._stack.get_visible_child() != self.views[3]:
+ if self._stack.get_visible_child() != self.views[View.PLAYLIST]:
return
def callback(selected_songs):
@@ -576,8 +585,7 @@ class Window(Gtk.ApplicationWindow):
return
playlist.remove_from_playlist(
- self.views[3].current_playlist,
- selected_songs)
+ self.views[View.PLAYLIST].current_playlist, selected_songs)
self.toolbar.set_selection_mode(False)
self._stack.get_visible_child().get_selected_songs(callback)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]