X-Git-Url: http://git.maemo.org/git/?p=jamaendo;a=blobdiff_plain;f=jamaui%2Fsettings.py;h=db1a6aa2b891a3a39c892b7bcb740b79da1a39c5;hp=c1dcc6195fc24937b7612a9c87eefe0adce0d78b;hb=85e98dd8f497099c90411bdbc7c2f6d2280ca1e1;hpb=a8c9941eec5bf42c34798b5817378270de9ba788 diff --git a/jamaui/settings.py b/jamaui/settings.py index c1dcc61..db1a6aa 100644 --- a/jamaui/settings.py +++ b/jamaui/settings.py @@ -23,15 +23,20 @@ # import cPickle, os import logging +import jamaendo +import datetime + +from postoffice import postoffice VERSION = 1 log = logging.getLogger(__name__) class Settings(object): defaults = { - 'volume':0.5, + 'volume':0.1, 'user':None, - 'favorites':set([]) # local favorites - until we can sync back + 'favorites':set([]), # local favorites - until we can sync back + 'playlists':{}, } def __init__(self): @@ -39,12 +44,43 @@ class Settings(object): for k,v in self.defaults.iteritems(): setattr(self, k, v) + def __setattr__(self, key, value): + object.__setattr__(self, key, value) + if key in self.defaults.keys(): + postoffice.notify('settings-changed', key, value) + def set_filename(self, savename): self.__savename = savename def favorite(self, album): self.favorites.add(('album', album.ID)) self.save() + postoffice.notify('settings-changed', 'favorites', self.favorites) + + def get_playlist(self, playlist, get_track_objects=True): + entry = self.playlists.get(playlist) + if entry: + if get_track_objects: + return [jamaendo.Track(item['id'], item['data']) for item in entry] + return entry + return None + + def add_to_playlist(self, playlist, track): + if isinstance(track, jamaendo.Track): + track = {'id':track.ID, 'data':track.get_data()} + assert(isinstance(track, dict)) + lst = self.playlists.get(playlist) + if not lst: + lst = [] + self.playlists[playlist] = lst + lst.append(track) + postoffice.notify('settings-changed', 'playlists', self.playlists) + log.debug("playlists is now %s", self.playlists) + + def delete_playlist(self, name): + if name in self.playlists: + del self.playlists[name] + postoffice.notify('settings-changed', 'playlists', self.playlists) def load(self): if not os.path.isfile(self.__savename): @@ -60,7 +96,11 @@ class Settings(object): for k in self.defaults.keys(): if k in settings: - setattr(self, k, settings[k]) + val = settings[k] + if k == 'playlists' and not isinstance(val, dict): + continue + setattr(self, k, val) + log.debug("Loaded settings: %s", settings) except Exception, e: log.exception('failed to load settings') @@ -74,6 +114,7 @@ class Settings(object): f = open(self.__savename, 'w') cPickle.dump(settings, f) f.close() + log.debug("Saved settings: %s", settings) except Exception, e: log.exception('failed to save settings')