use enums for tracklist size and sort order values

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

View file

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

Binary file not shown.

View file

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

View file

@ -52,3 +52,19 @@ class Utils:
filetype = 'jpeg'
pixbuf.savev(cache.create_filename(album), filetype, [], [])
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 mcg import client
from mcg.utils import SortOrder
from mcg.utils import TracklistSize
from mcg.utils import Utils
from mcg.zeroconf import ZeroconfProvider
@ -81,10 +83,10 @@ class Window():
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_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_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))
# Signals
@ -201,7 +203,7 @@ class Window():
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):
@ -222,7 +224,7 @@ class Window():
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):
@ -281,7 +283,7 @@ class Window():
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)
@ -292,7 +294,7 @@ class Window():
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)
@ -667,9 +669,6 @@ class CoverPanel(client.Base):
SIGNAL_TOGGLE_FULLSCREEN = 'toggle-fullscreen'
SIGNAL_TRACKLIST_SIZE_CHANGED = 'tracklist-size-changed'
SIGNAL_SET_SONG = 'set-song'
TRACKLIST_SIZE_LARGE = 'large'
TRACKLIST_SIZE_SMALL = 'small'
TRACKLIST_SIZE_HIDDEN = 'hidden'
def __init__(self, builder):
@ -679,7 +678,7 @@ class CoverPanel(client.Base):
self._cover_pixbuf = None
self._timer = None
self._properties = {}
self._tracklist_size = CoverPanel.TRACKLIST_SIZE_LARGE
self._tracklist_size = TracklistSize.LARGE
# Widgets
self._appwindow = builder.get_object('appwindow')
@ -687,9 +686,9 @@ class CoverPanel(client.Base):
self._toolbar = builder.get_object('cover-toolbar')
# Toolbar menu
self._toolbar_tracklist_buttons = {
CoverPanel.TRACKLIST_SIZE_LARGE: builder.get_object('cover-toolbar-tracklist-large'),
CoverPanel.TRACKLIST_SIZE_SMALL: builder.get_object('cover-toolbar-tracklist-small'),
CoverPanel.TRACKLIST_SIZE_HIDDEN: builder.get_object('cover-toolbar-tracklist-hidden')
TracklistSize.LARGE: builder.get_object('cover-toolbar-tracklist-large'),
TracklistSize.SMALL: builder.get_object('cover-toolbar-tracklist-small'),
TracklistSize.HIDDEN: builder.get_object('cover-toolbar-tracklist-hidden')
}
# Cover
self._cover_stack = builder.get_object('cover-stack')
@ -823,7 +822,7 @@ class CoverPanel(client.Base):
def set_fullscreen(self, 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))
GObject.idle_add(self._resize_image)
# Hide curser
@ -879,10 +878,10 @@ class CoverPanel(client.Base):
def _change_tracklist_size(self, size, notify=True, store=True):
# Set tracklist size
if size == CoverPanel.TRACKLIST_SIZE_LARGE:
if size == TracklistSize.LARGE:
self._panel.set_homogeneous(True)
self._info_revealer.set_reveal_child(True)
elif size == CoverPanel.TRACKLIST_SIZE_SMALL:
elif size == TracklistSize.SMALL:
self._panel.set_homogeneous(False)
self._info_revealer.set_reveal_child(True)
else:
@ -1160,7 +1159,7 @@ class LibraryPanel(client.Base):
self._host = "localhost"
self._filter_string = ""
self._item_size = 150
self._sort_order = client.MCGAlbum.SORT_BY_YEAR
self._sort_order = SortOrder.YEAR
self._sort_type = Gtk.SortType.DESCENDING
self._grid_pixbufs = {}
self._old_ranges = {}
@ -1188,9 +1187,9 @@ class LibraryPanel(client.Base):
# Toolbar menu
self._toolbar_search_bar = builder.get_object('library-toolbar-search')
self._toolbar_sort_buttons = {
client.MCGAlbum.SORT_BY_ARTIST: builder.get_object('library-toolbar-sort-artist'),
client.MCGAlbum.SORT_BY_TITLE: builder.get_object('library-toolbar-sort-title'),
client.MCGAlbum.SORT_BY_YEAR: builder.get_object('library-toolbar-sort-year')
SortOrder.ARTIST: builder.get_object('library-toolbar-sort-artist'),
SortOrder.TITLE: builder.get_object('library-toolbar-sort-title'),
SortOrder.YEAR: builder.get_object('library-toolbar-sort-year')
}
self._toolbar_sort_order_button = builder.get_object('library-toolbar-sort-order')
self._grid_scale = builder.get_object('library-toolbar-scale')