from gotovienna.utils import *
from gotovienna.realtime import *
from gotovienna.gps import *
+from gotovienna.update import *
+from gotovienna.config import config as conf
import urllib2
import os
import threading
from datetime import time
+class Config(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ @Slot(result=bool)
+ def getGpsEnabled(self):
+ return conf.getGpsEnabled()
+
+ @Slot(bool, result=unicode)
+ def setGpsEnabled(self, val):
+ # TODO
+ return conf.setGpsEnabled(val)
+
+ @Slot(result=unicode)
+ def getLastUpdate(self):
+ # TODO
+ return conf.getLastStationsUpdate()
+
+ @Slot(result=unicode)
+ def updateStations(self):
+ # TODO
+ try:
+ update_stations()
+ return datetime.now().strftime('%c')
+ except Exception as e:
+ print e
+ return ''
+
+ @Slot(result=bool)
+ def checkStationsUpdate(self):
+ # FIXME exception handling foo
+ try:
+ return check_stations_update()
+ except:
+ return False
+
class AboutInfo(QObject):
def __init__(self):
QObject.__init__(self)
threading.Thread(target=load_async).start()
def map_departure(self, dep):
+ """ prepare departure list for qml gui
+ """
dep['lowfloor'] = 1 if dep['lowfloor'] else 0
- if type(dep['time']) == time:
- dep['time'] = dep['time'].strftime('%H:%M')
+ dep['realtime'] = 1 if dep['realtime'] else 0
+ dep['time'] = dep['ftime']
return dep
departuresLoaded = Signal()
@Slot(str)
+ def load_departures_test(self, **args):
+ """ valid args combinations
+ station
+ line, station
+ """
+ def load_async():
+ if args.has_key('station'):
+ if args.has_key('line'):
+ self.current_departures = map(self.map_departure, \
+ self.itip.get_departures(args['line'], args['station']))
+ #print self.current_departures
+ self.departuresLoaded.emit()
+ else:
+ self.current_departures = map(self.map_departure, \
+ sort_departures(self.itip.get_departures_by_station(station)))
+ else:
+ raise KeyError('Missing valid argument combination')
+
+ threading.Thread(target=load_async).start()
+
+ @Slot(str)
def load_departures(self, url):
def load_async():
self.current_departures = map(self.map_departure, \
def get_nearby_stations(self, lat, lon):
try:
return get_nearby_stations(lat, lon)
- except Exception as e:
- print e.message
+ except BaseException as e:
+ # No/wrong stations.db file
return []
@Slot(str, str)
view = QDeclarativeView()
aboutInfo = AboutInfo()
+ config = Config()
# instantiate the Python object
itip = Gui()
context = view.rootContext()
context.setContextProperty('itip', itip)
context.setContextProperty('aboutInfo', aboutInfo)
+ context.setContextProperty('config', config)
if os.path.abspath(__file__).startswith('/usr/bin/'):
# Assume system-wide installation, QML from /usr/share/