Bug fix: distance was not updating according to height
[pedometerwidget] / pedometer_widget_home.py
index 5cb6846..9e53b45 100644 (file)
@@ -8,9 +8,8 @@ import hildon
 import gnome.gconf as gconf
 from threading import Thread
 
-gobject.threads_init()
+#gobject.threads_init()
 #gtk.gdk.threads_init()
-#print "!!!!"
 
 PATH="/apps/pedometerhomewidget"
 COUNTER=PATH+"/counter"
@@ -119,6 +118,8 @@ class PedoCounter(Thread):
     update_function = None
     logging = False
 
+    mode = 0
+
     def __init__(self, update_function = None):
         Thread.__init__(self)
         if not os.path.exists(self.COORD_FNAME):
@@ -128,6 +129,7 @@ class PedoCounter(Thread):
 
     def set_mode(self, mode):
         #runnig, higher threshold to prevent fake steps
+        self.mode = mode
         if mode == 1:
             self.MIN_THRESHOLD = 650
             self.MIN_TIME_STEPS = 0.35
@@ -142,15 +144,18 @@ class PedoCounter(Thread):
     #set height, will affect the distance
     def set_height(self, height_interval):
         if height_interval == 0:
-            STEP_LENGTH = 0.59
+            self.STEP_LENGTH = 0.59
         elif height_interval == 1:
-            STEP_LENGTH = 0.64
+            self.STEP_LENGTH = 0.64
         elif height_interval == 2:
-            STEP_LENGTH = 0.71
+            self.STEP_LENGTH = 0.71
         elif height_interval == 3:
-            STEP_LENGTH = 0.77
+            self.STEP_LENGTH = 0.77
         elif height_interval == 4:
-            STEP_LENGTH = 0.83
+            self.STEP_LENGTH = 0.83
+        #increase step length if RUNNING
+        if self.mode == 1:
+            self.STEP_LENGTH *= 1.45
 
     def get_rotation(self):
         f = open(self.COORD_FNAME, 'r')
@@ -260,10 +265,13 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
     button = None
 
     #labels for current steps
-    labelsC = { "timer" : None, "count" : None, "dist" : None, "avgSpeed" : None }
+    labels = ["timer", "count", "dist", "avgSpeed"]
+    #labelsC = { "timer" : None, "count" : None, "dist" : None, "avgSpeed" : None }
 
     #labels for all time steps
-    labelsT = { "timer" : None, "count" : None, "dist" : None, "avgSpeed" : None }
+    #labelsT = { "timer" : None, "count" : None, "dist" : None, "avgSpeed" : None }
+    labelsC = {}
+    labelsT = {}
 
     pedometer = None
     startTime = None
@@ -281,7 +289,8 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
 
     def __init__(self):
 
-        #gtk.gdk.threads_init()
+        gtk.gdk.threads_init()
+        #gobject.threads_init()
         hildondesktop.HomePluginItem.__init__(self)
 
         self.client = gconf.client_get_default()
@@ -319,14 +328,14 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
         mainHBox = gtk.HBox(spacing=1)
 
         descVBox = gtk.VBox(spacing=1)
-        descVBox.add(gtk.Label())
-        descVBox.add(gtk.Label("Time:"))
-        descVBox.add(gtk.Label("Steps:"))
-        descVBox.add(gtk.Label("Distance:"))
-        descVBox.add(gtk.Label("Avg Speed:"))
+        descVBox.add(self.new_label_heading())
+        descVBox.add(self.new_label_heading("Time:"))
+        descVBox.add(self.new_label_heading("Steps:"))
+        descVBox.add(self.new_label_heading("Distance:"))
+        descVBox.add(self.new_label_heading("Avg Speed:"))
 
         currentVBox = gtk.VBox(spacing=1)
-        currentVBox.add(gtk.Label("Current"))
+        currentVBox.add(self.new_label_heading("Current"))
         currentVBox.add(self.labelsC["timer"])
         currentVBox.add(self.labelsC["count"])
         currentVBox.add(self.labelsC["dist"])
@@ -334,7 +343,7 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
         self.currentBox = currentVBox
 
         totalVBox = gtk.VBox(spacing=1)
-        totalVBox.add(gtk.Label("Total"))
+        totalVBox.add(self.new_label_heading("Total"))
         totalVBox.add(self.labelsT["timer"])
         totalVBox.add(self.labelsT["count"])
         totalVBox.add(self.labelsT["dist"])
@@ -342,9 +351,9 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
         self.totalBox = totalVBox
 
         buttonVBox = gtk.VBox(spacing=1)
-        buttonVBox.add(gtk.Label(""))
+        buttonVBox.add(self.new_label_heading(""))
         buttonVBox.add(self.button)
-        buttonVBox.add(gtk.Label(""))
+        buttonVBox.add(self.new_label_heading(""))
 
         mainHBox.add(buttonVBox)
         mainHBox.add(descVBox)
@@ -361,11 +370,17 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
         self.set_settings(True)
         self.connect("show-settings", self.show_settings)
 
-    def create_labels(self, labels):
-        labels["timer"] = gtk.Label()
-        labels["count"] = gtk.Label()
-        labels["dist"] = gtk.Label()
-        labels["avgSpeed"] = gtk.Label()
+    def new_label_heading(self, title=""):
+        l = gtk.Label(title)
+        hildon.hildon_helper_set_logical_font(l, "SmallSystemFont")
+        return l
+
+    def create_labels(self, new_labels):
+        for label in self.labels:
+            l = gtk.Label()
+            hildon.hildon_helper_set_logical_font(l, "SmallSystemFont")
+            hildon.hildon_helper_set_logical_color(l, gtk.RC_FG, gtk.STATE_NORMAL, "ActiveTextColor")
+            new_labels[label] = l
 
     def update_aspect(self):
         if self.aspect == 0:
@@ -441,10 +456,18 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
         def selector_changed(selector, data):
             widget.mode = selector.get_active(0)
             widget.client.set_int(MODE, widget.mode)
+            widget.pedometer.set_mode(widget.mode)
+            widget.pedometer.set_height(widget.height)
+            widget.update_current()
+            widget.update_total()
 
         def selectorH_changed(selector, data):
             widget.height = selectorH.get_active(0)
             widget.client.set_int(HEIGHT, widget.height)
+            widget.pedometer.set_height(widget.height)
+            widget.update_current()
+            widget.update_total()
+
 
         def selectorUnit_changed(selector, data):
             widget.unit = selectorUnit.get_active(0)
@@ -538,7 +561,7 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
 
         dialog.show_all()
         response = dialog.run()
-        hildon.hildon_banner_show_information(self, "None", "You have to Stop/Start the counter to apply the new settings")
+        #hildon.hildon_banner_show_information(self, "None", "You have to Stop/Start the counter to apply the new settings")
         dialog.destroy()
 
     def close_requested(self, widget):
@@ -575,7 +598,6 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem):
             self.pedometer.set_height(self.height)
             self.pedometer.set_logging(self.logging)
 
-
             self.time = 0
             self.counter = 0