use enums for tracklist size and sort order values

This commit is contained in:
coderkun 2016-08-01 13:08:27 +02:00
commit f38737e6ba
5 changed files with 53 additions and 39 deletions

View file

@ -1,5 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<schemalist> <schemalist>
<enum id="de.coderkun.mcg.TracklistSize">
<value nick="large" value="0" />
<value nick="small" value="1" />
<value nick="hidden" value="2" />
</enum>
<enum id="de.coderkun.mcg.SortOrder">
<value nick="artist" value="0" />
<value nick="title" value="1" />
<value nick="year" value="2" />
</enum>
<schema path="/de/coderkun/mcg/" id="de.coderkun.mcg" gettext-domain="mcg"> <schema path="/de/coderkun/mcg/" id="de.coderkun.mcg" gettext-domain="mcg">
<key type="s" name="host"> <key type="s" name="host">
<default>'localhost'</default> <default>'localhost'</default>
@ -37,13 +47,8 @@
<summary>Last selected panel</summary> <summary>Last selected panel</summary>
<description>The index of the last selected panel.</description> <description>The index of the last selected panel.</description>
</key> </key>
<key type="s" name="tracklist-size"> <key enum="de.coderkun.mcg.TracklistSize" name="tracklist-size">
<default>'large'</default> <default>'large'</default>
<choices>
<choice value='large' />
<choice value='small' />
<choice value='hidden' />
</choices>
<summary>Size of tracklist on cover panel</summary> <summary>Size of tracklist on cover panel</summary>
<description>The size of the tracklist on the cover panel.</description> <description>The size of the tracklist on the cover panel.</description>
</key> </key>
@ -53,13 +58,8 @@
<summary>Size of library items</summary> <summary>Size of library items</summary>
<description>The size of items displayed in the library.</description> <description>The size of items displayed in the library.</description>
</key> </key>
<key type="s" name="sort-order"> <key enum="de.coderkun.mcg.SortOrder" name="sort-order">
<default>'year'</default> <default>'year'</default>
<choices>
<choice value='artist' />
<choice value='title' />
<choice value='year' />
</choices>
<summary>Sort criterium for library items</summary> <summary>Sort criterium for library items</summary>
<description>The sort criterium of items displayed in the library.</description> <description>The sort criterium of items displayed in the library.</description>
</key> </key>

Binary file not shown.

View file

@ -14,6 +14,8 @@ import urllib.request
from hashlib import md5 from hashlib import md5
from mcg.utils import SortOrder
@ -605,9 +607,6 @@ class Client(Base):
class MCGAlbum: class MCGAlbum:
DEFAULT_ALBUM = 'Various' DEFAULT_ALBUM = 'Various'
SORT_BY_ARTIST = 'artist'
SORT_BY_TITLE = 'title'
SORT_BY_YEAR = 'year'
_FILE_NAMES = ['cover', 'folder'] _FILE_NAMES = ['cover', 'folder']
_FILE_EXTS = ['jpg', 'png', 'jpeg'] _FILE_EXTS = ['jpg', 'png', 'jpeg']
_FILTER_DELIMITER = ' ' _FILTER_DELIMITER = ' '
@ -720,12 +719,12 @@ class MCGAlbum:
def compare(album1, album2, criterion=None): def compare(album1, album2, criterion=None):
if criterion == None: if criterion == None:
criterion = MCGAlbum.SORT_BY_TITLE criterion = SortOrder.TITLE
if criterion == MCGAlbum.SORT_BY_ARTIST: if criterion == SortOrder.ARTIST:
value_function = "get_artists" value_function = "get_artists"
elif criterion == MCGAlbum.SORT_BY_TITLE: elif criterion == SortOrder.TITLE:
value_function = "get_title" value_function = "get_title"
elif criterion == MCGAlbum.SORT_BY_YEAR: elif criterion == SortOrder.YEAR:
value_function = "get_date" value_function = "get_date"
value1 = getattr(album1, value_function)() value1 = getattr(album1, value_function)()

View file

@ -52,3 +52,19 @@ class Utils:
filetype = 'jpeg' filetype = 'jpeg'
pixbuf.savev(cache.create_filename(album), filetype, [], []) pixbuf.savev(cache.create_filename(album), filetype, [], [])
return pixbuf return pixbuf
class TracklistSize:
LARGE = 0
SMALL = 1
HIDDEN = 2
class SortOrder:
ARTIST = 0
TITLE = 1
YEAR = 2

View file

@ -16,6 +16,8 @@ import threading
from gi.repository import Gtk, Gdk, GObject, GdkPixbuf, GLib from gi.repository import Gtk, Gdk, GObject, GdkPixbuf, GLib
from mcg import client from mcg import client
from mcg.utils import SortOrder
from mcg.utils import TracklistSize
from mcg.utils import Utils from mcg.utils import Utils
from mcg.zeroconf import ZeroconfProvider from mcg.zeroconf import ZeroconfProvider
@ -81,10 +83,10 @@ class Window():
if use_keyring: if use_keyring:
self._panels[Window._PANEL_INDEX_CONNECTION].set_password(keyring.get_password(ZeroconfProvider.KEYRING_SYSTEM, ZeroconfProvider.KEYRING_USERNAME)) self._panels[Window._PANEL_INDEX_CONNECTION].set_password(keyring.get_password(ZeroconfProvider.KEYRING_SYSTEM, ZeroconfProvider.KEYRING_USERNAME))
self._panels[Window._PANEL_INDEX_CONNECTION].set_image_dir(self._settings.get_string(Window.SETTING_IMAGE_DIR)) self._panels[Window._PANEL_INDEX_CONNECTION].set_image_dir(self._settings.get_string(Window.SETTING_IMAGE_DIR))
self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(self._settings.get_string(Window.SETTING_TRACKLIST_SIZE)) self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(self._settings.get_enum(Window.SETTING_TRACKLIST_SIZE))
self._panels[Window._PANEL_INDEX_PLAYLIST].set_item_size(self._settings.get_int(Window.SETTING_ITEM_SIZE)) self._panels[Window._PANEL_INDEX_PLAYLIST].set_item_size(self._settings.get_int(Window.SETTING_ITEM_SIZE))
self._panels[Window._PANEL_INDEX_LIBRARY].set_item_size(self._settings.get_int(Window.SETTING_ITEM_SIZE)) self._panels[Window._PANEL_INDEX_LIBRARY].set_item_size(self._settings.get_int(Window.SETTING_ITEM_SIZE))
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(self._settings.get_string(Window.SETTING_SORT_ORDER)) self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(self._settings.get_enum(Window.SETTING_SORT_ORDER))
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_type(self._settings.get_boolean(Window.SETTING_SORT_TYPE)) self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_type(self._settings.get_boolean(Window.SETTING_SORT_TYPE))
# Signals # Signals
@ -201,7 +203,7 @@ class Window():
def on_cover_panel_tracklist_size_changed(self, size): def on_cover_panel_tracklist_size_changed(self, size):
self._settings.set_string(Window.SETTING_TRACKLIST_SIZE, size) self._settings.set_enum(Window.SETTING_TRACKLIST_SIZE, size)
def on_cover_panel_set_song(self, pos, time): def on_cover_panel_set_song(self, pos, time):
@ -222,7 +224,7 @@ class Window():
def on_library_panel_sort_order_changed(self, sort_order): def on_library_panel_sort_order_changed(self, sort_order):
self._settings.set_string(Window.SETTING_SORT_ORDER, self._panels[Window._PANEL_INDEX_LIBRARY].get_sort_order()) self._settings.set_enum(Window.SETTING_SORT_ORDER, self._panels[Window._PANEL_INDEX_LIBRARY].get_sort_order())
def on_library_panel_sort_type_changed(self, sort_type): def on_library_panel_sort_type_changed(self, sort_type):
@ -281,7 +283,7 @@ class Window():
def on_settings_tracklist_size_changed(self, settings, key): def on_settings_tracklist_size_changed(self, settings, key):
size = settings.get_string(key) size = settings.get_enum(key)
self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(size) self._panels[Window._PANEL_INDEX_COVER].set_tracklist_size(size)
@ -292,7 +294,7 @@ class Window():
def on_settings_sort_order_changed(self, settings, key): def on_settings_sort_order_changed(self, settings, key):
sort_order = settings.get_string(key) sort_order = settings.get_enum(key)
self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(sort_order) self._panels[Window._PANEL_INDEX_LIBRARY].set_sort_order(sort_order)
@ -667,9 +669,6 @@ class CoverPanel(client.Base):
SIGNAL_TOGGLE_FULLSCREEN = 'toggle-fullscreen' SIGNAL_TOGGLE_FULLSCREEN = 'toggle-fullscreen'
SIGNAL_TRACKLIST_SIZE_CHANGED = 'tracklist-size-changed' SIGNAL_TRACKLIST_SIZE_CHANGED = 'tracklist-size-changed'
SIGNAL_SET_SONG = 'set-song' SIGNAL_SET_SONG = 'set-song'
TRACKLIST_SIZE_LARGE = 'large'
TRACKLIST_SIZE_SMALL = 'small'
TRACKLIST_SIZE_HIDDEN = 'hidden'
def __init__(self, builder): def __init__(self, builder):
@ -679,7 +678,7 @@ class CoverPanel(client.Base):
self._cover_pixbuf = None self._cover_pixbuf = None
self._timer = None self._timer = None
self._properties = {} self._properties = {}
self._tracklist_size = CoverPanel.TRACKLIST_SIZE_LARGE self._tracklist_size = TracklistSize.LARGE
# Widgets # Widgets
self._appwindow = builder.get_object('appwindow') self._appwindow = builder.get_object('appwindow')
@ -687,9 +686,9 @@ class CoverPanel(client.Base):
self._toolbar = builder.get_object('cover-toolbar') self._toolbar = builder.get_object('cover-toolbar')
# Toolbar menu # Toolbar menu
self._toolbar_tracklist_buttons = { self._toolbar_tracklist_buttons = {
CoverPanel.TRACKLIST_SIZE_LARGE: builder.get_object('cover-toolbar-tracklist-large'), TracklistSize.LARGE: builder.get_object('cover-toolbar-tracklist-large'),
CoverPanel.TRACKLIST_SIZE_SMALL: builder.get_object('cover-toolbar-tracklist-small'), TracklistSize.SMALL: builder.get_object('cover-toolbar-tracklist-small'),
CoverPanel.TRACKLIST_SIZE_HIDDEN: builder.get_object('cover-toolbar-tracklist-hidden') TracklistSize.HIDDEN: builder.get_object('cover-toolbar-tracklist-hidden')
} }
# Cover # Cover
self._cover_stack = builder.get_object('cover-stack') self._cover_stack = builder.get_object('cover-stack')
@ -823,7 +822,7 @@ class CoverPanel(client.Base):
def set_fullscreen(self, active): def set_fullscreen(self, active):
if active: if active:
self._change_tracklist_size(CoverPanel.TRACKLIST_SIZE_HIDDEN, False, False) self._change_tracklist_size(TracklistSize.HIDDEN, False, False)
self._cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1)) self._cover_box.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1))
GObject.idle_add(self._resize_image) GObject.idle_add(self._resize_image)
# Hide curser # Hide curser
@ -879,10 +878,10 @@ class CoverPanel(client.Base):
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 == CoverPanel.TRACKLIST_SIZE_LARGE: if size == TracklistSize.LARGE:
self._panel.set_homogeneous(True) self._panel.set_homogeneous(True)
self._info_revealer.set_reveal_child(True) self._info_revealer.set_reveal_child(True)
elif size == CoverPanel.TRACKLIST_SIZE_SMALL: elif size == TracklistSize.SMALL:
self._panel.set_homogeneous(False) self._panel.set_homogeneous(False)
self._info_revealer.set_reveal_child(True) self._info_revealer.set_reveal_child(True)
else: else:
@ -1160,7 +1159,7 @@ class LibraryPanel(client.Base):
self._host = "localhost" self._host = "localhost"
self._filter_string = "" self._filter_string = ""
self._item_size = 150 self._item_size = 150
self._sort_order = client.MCGAlbum.SORT_BY_YEAR self._sort_order = SortOrder.YEAR
self._sort_type = Gtk.SortType.DESCENDING self._sort_type = Gtk.SortType.DESCENDING
self._grid_pixbufs = {} self._grid_pixbufs = {}
self._old_ranges = {} self._old_ranges = {}
@ -1188,9 +1187,9 @@ class LibraryPanel(client.Base):
# Toolbar menu # Toolbar menu
self._toolbar_search_bar = builder.get_object('library-toolbar-search') self._toolbar_search_bar = builder.get_object('library-toolbar-search')
self._toolbar_sort_buttons = { self._toolbar_sort_buttons = {
client.MCGAlbum.SORT_BY_ARTIST: builder.get_object('library-toolbar-sort-artist'), SortOrder.ARTIST: builder.get_object('library-toolbar-sort-artist'),
client.MCGAlbum.SORT_BY_TITLE: builder.get_object('library-toolbar-sort-title'), SortOrder.TITLE: builder.get_object('library-toolbar-sort-title'),
client.MCGAlbum.SORT_BY_YEAR: builder.get_object('library-toolbar-sort-year') SortOrder.YEAR: builder.get_object('library-toolbar-sort-year')
} }
self._toolbar_sort_order_button = builder.get_object('library-toolbar-sort-order') self._toolbar_sort_order_button = builder.get_object('library-toolbar-sort-order')
self._grid_scale = builder.get_object('library-toolbar-scale') self._grid_scale = builder.get_object('library-toolbar-scale')