disable console logging
[pywienerlinien] / gotovienna-qml
index f8041fe..458fe68 100755 (executable)
@@ -3,7 +3,7 @@
 """Public transport information for Vienna"""
 
 __author__ = 'kelvan <kelvan@logic.at>'
-__version__ = '0.8.1'
+__version__ = '0.8.2'
 __website__ = 'https://github.com/kelvan/gotoVienna/'
 __license__ = 'GNU General Public License v3 or later'
 
@@ -15,11 +15,13 @@ from PySide.QtDeclarative import QDeclarativeView
 
 from gotovienna.utils import *
 from gotovienna.realtime import *
+from gotovienna.gps import *
 
 import urllib2
 import os
 import sys
 import threading
+from datetime import time
 
 class GotoViennaListModel(QAbstractListModel):
     def __init__(self, objects=None):
@@ -90,18 +92,64 @@ class Gui(QObject):
 
         threading.Thread(target=load_async).start()
 
+    def map_departure(self, dep):
+        dep['lowfloor'] = 1 if dep['lowfloor'] else 0
+        if type(dep['time']) == time:
+            dep['time'] = dep['time'].strftime('%H:%M')
+        return dep
+
     departuresLoaded = Signal()
 
     @Slot(str)
     def load_departures(self, url):
         def load_async():
-            self.current_departures = [x['ftime'] for x in
-                    self.itip.get_departures(url)]
-            print self.current_departures
+            self.current_departures = map(self.map_departure, \
+                                          self.itip.get_departures(url))
+            #print self.current_departures
+            self.departuresLoaded.emit()
+
+        threading.Thread(target=load_async).start()
+
+    @Slot(str)
+    def load_station_departures(self, station):
+        def load_async():
+            self.current_departures = map(self.map_departure, \
+                                          sort_departures(self.itip.get_departures_by_station(station)))
+            #print self.current_departures
+            self.departuresLoaded.emit()
+
+        threading.Thread(target=load_async).start()
+
+    @Slot(float, float)
+    def load_nearby_departures(self, lat, lon):
+        def load_async():
+            self.current_departures = []
+            try:
+                stations = get_nearby_stations(lat, lon)
+                print stations
+                for station in stations:
+                    print station
+                    try:
+                        self.current_departures += self.itip.get_departures_by_station(station)
+                    except Exception as e:
+                        print e.message
+                self.current_departures = map(self.map_departure, \
+                                              sort_departures(self.current_departures))
+                #print self.current_departures
+            except Exception as e:
+                print e.message
+
+            print 'loaded'
             self.departuresLoaded.emit()
 
         threading.Thread(target=load_async).start()
 
+    stationsLoaded = Signal()
+
+    @Slot(float, float, result='QStringList')
+    def get_nearby_stations(self, lat, lon):
+        return get_nearby_stations(lat, lon)
+
     @Slot(str, str, str, result=str)
     def get_directions_url(self, line, direction, station):
         return self.itip.get_url_from_direction(line, direction, station)
@@ -110,10 +158,18 @@ class Gui(QObject):
     def get_lines(self):
         return self.lines
 
-    @Slot(result='QStringList')
+    @Slot(result='QVariant')
     def get_departures(self):
         return self.current_departures
 
+    @Slot(float, float, result='QStringList')
+    def get_nearby_stations(self, lat, lon):
+        try:
+            return get_nearby_stations(lat, lon)
+        except Exception as e:
+            print e.message
+            return []
+
     @Slot(str, str)
     def search(self, line, station):
         line = line.upper()