X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=gotovienna-qml;fp=gotovienna-qml;h=190018cbb8155abc585963ea38a45f5bc20d3180;hb=ec5e6afed4ebefcd4ea8a234fdd82b7d6e231a3f;hp=033f53747219c74235c885400d8723245814a81e;hpb=838be31a8f4acb994f2e141873188a0f4b959178;p=pywienerlinien diff --git a/gotovienna-qml b/gotovienna-qml index 033f537..190018c 100755 --- a/gotovienna-qml +++ b/gotovienna-qml @@ -19,10 +19,13 @@ from gotovienna.gps import * from gotovienna.update import * from gotovienna.config import config as conf +from gotovienna import defaults + import urllib2 import os import sys import threading +import json from datetime import time class Config(QObject): @@ -122,6 +125,57 @@ class DepartureModel(QAbstractListModel): self._data = dep self.endResetModel() +class FavoriteManager(QObject): + def __init__(self): + QObject.__init__(self) + self._faves = [] + if os.path.exists(defaults.favorites_file): + try: + self._faves = json.load(open(defaults.favorites_file, 'r')) + self._faves = map(tuple, self._faves) + print 'faves loaded:', self._faves + except Exception, e: + print 'faves load error:', e + + @Slot(result=int) + def getCount(self): + result = len(self._faves) + print 'getCount->', result + return result + + @Slot(int, result=unicode) + def getItem(self, index): + keys = ['gline', 'gdirection', 'gstation', 'sourceurl', 'isstation'] + result = dict(zip(keys, self._faves[index])) + result['name'] = u'%(gline)s -> %(gdirection)s @ %(gstation)s' % result + result = json.dumps(result) + print 'getItem:', index, result + return result + + def _persist(self): + print 'persist:', self._faves, '->', defaults.favorites_file + try: + fp = open(defaults.favorites_file, 'w') + json.dump(self._faves, fp) + fp.close() + except Exception, e: + print 'faves save error:', e + + @Slot(unicode, unicode, unicode, unicode, bool, int, result=bool) + def isFavorite(self, gline, gdirection, gstation, sourceurl, isstation, x): + k = (gline, gdirection, gstation, sourceurl, isstation) + return (k in self._faves) + + @Slot(unicode, unicode, unicode, unicode, bool) + def toggleFavorite(self, gline, gdirection, gstation, sourceurl, isstation): + k = (gline, gdirection, gstation, sourceurl, isstation) + if k in self._faves: + self._faves.remove(k) + else: + self._faves.append(k) + + self._persist() + class Gui(QObject): def __init__(self, depModel): QObject.__init__(self) @@ -266,13 +320,16 @@ if __name__ == '__main__': # instantiate the Python object itip = Gui(departureModel) + favManager = FavoriteManager() + # expose the object to QML context = view.rootContext() context.setContextProperty('itip', itip) context.setContextProperty('aboutInfo', aboutInfo) context.setContextProperty('config', config) context.setContextProperty('resultModel', departureModel) - + context.setContextProperty('favManager', favManager) + if os.path.abspath(__file__).startswith('/usr/bin/'): # Assume system-wide installation, QML from /usr/share/ view.setSource('/usr/share/gotovienna/qml/main.qml')