TIMER=PATH+"/timer"
MODE=PATH+"/mode"
HEIGHT=PATH+"/height"
+UNIT=PATH+"/unit"
+ASPECT=PATH+"/aspect"
class PedometerHomePlugin(hildondesktop.HomePluginItem):
button = None
totalTime = 0
mode = 0
height = 0
+ unit = 0
counter = 0
time = 0
+ aspect = 0
def __init__(self):
self.totalTime = self.client.get_int(TIMER)
self.mode = self.client.get_int(MODE)
self.height = self.client.get_int(HEIGHT)
+ self.unit = self.client.get_int(UNIT)
+ self.aspect = self.client.get_int(ASPECT)
except:
self.client.set_int(COUNTER, 0)
self.client.set_int(TIMER, 0)
self.client.set_int(MODE, 0)
self.client.set_int(HEIGHT, 0)
+ self.client.set_int(UNIT, 0)
+ self.client.set_int(ASPECT, 0)
self.pedometer = PedoCounter(self.update_values)
self.pedometer.set_mode(self.mode)
currentVBox.add(self.labelsC["count"])
currentVBox.add(self.labelsC["dist"])
currentVBox.add(self.labelsC["avgSpeed"])
+ self.currentBox = currentVBox
totalVBox = gtk.VBox(spacing=1)
totalVBox.add(gtk.Label("Total"))
totalVBox.add(self.labelsT["count"])
totalVBox.add(self.labelsT["dist"])
totalVBox.add(self.labelsT["avgSpeed"])
+ self.totalBox = totalVBox
mainHBox.add(self.button)
mainHBox.add(descVBox)
mainHBox.show_all()
self.add(mainHBox)
+ self.update_aspect()
self.connect("unrealize", self.close_requested)
self.set_settings(True)
labels["dist"] = gtk.Label()
labels["avgSpeed"] = gtk.Label()
+ def update_aspect(self):
+ if self.aspect == 0:
+ self.currentBox.show_all()
+ self.totalBox.show_all()
+ elif self.aspect == 1:
+ self.currentBox.show_all()
+ self.totalBox.hide_all()
+ else:
+ self.currentBox.hide_all()
+ self.totalBox.show_all()
+
def update_ui_values(self, labels, timer, steps):
def get_str_distance(meters):
if meters > 1000:
- return str(meters/1000) + " km"
+ if self.unit == 0:
+ return str(meters/1000) + " km"
+ else:
+ return str(meters/1609.344) + " mi"
else:
- return str(meters) + " m"
+ if self.unit == 0:
+ return str(meters) + " m"
+ else:
+ return str(meters*3.2808) + " ft"
def get_avg_speed(timer, dist):
+ suffix = ""
+ conv = 0
+ if self.unit:
+ suffix = "mi/h"
+ conv = 2.23693629
+ else:
+ suffix = "km/h"
+ conv = 3.6
+
if timer == 0:
- return "N/A km/h"
+ return "N/A " + suffix
speed = 1.0 *dist / timer
- #convert from meters per second to kilometers per hour
- speed *= 3.6
- return "%.2f km/h" % speed
+ #convert from meters per second to km/h or mi/h
+ speed *= conv
+ return "%.2f %s" % (speed, suffix)
tdelta = timer
hours = int(tdelta / 3600)
widget.height = selectorH.get_active(0)
widget.client.set_int(HEIGHT, widget.height)
+ def selectorUnit_changed(selector, data):
+ widget.unit = selectorUnit.get_active(0)
+ widget.client.set_int(UNIT, widget.unit)
+ widget.update_current()
+ widget.update_total()
+
+ def selectorUI_changed(selector, data):
+ widget.aspect = selectorUI.get_active(0)
+ widget.client.set_int(ASPECT, widget.aspect)
+ widget.update_aspect()
+
dialog = gtk.Dialog()
dialog.set_transient_for(self)
dialog.set_title("Settings")
heightPicker.set_selector(selectorH)
heightPicker.set_active(widget.height)
+ selectorUnit = hildon.TouchSelector(text=True)
+ selectorUnit.set_column_selection_mode(hildon.TOUCH_SELECTOR_SELECTION_MODE_SINGLE)
+ selectorUnit.append_text("Metric (km)")
+ selectorUnit.append_text("English (mi)")
+ selectorUnit.connect("changed", selectorUnit_changed)
+
+ unitPicker = hildon.PickerButton(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL)
+ unitPicker.set_alignment(0.0, 0.5, 1.0, 1.0)
+ unitPicker.set_title("Units")
+ unitPicker.set_selector(selectorUnit)
+ unitPicker.set_active(widget.unit)
+
+ selectorUI = hildon.TouchSelector(text=True)
+ selectorUI = hildon.TouchSelector(text=True)
+ selectorUI.set_column_selection_mode(hildon.TOUCH_SELECTOR_SELECTION_MODE_SINGLE)
+ selectorUI.append_text("Show current + total")
+ selectorUI.append_text("Show only current")
+ selectorUI.append_text("Show only total")
+ selectorUI.connect("changed", selectorUI_changed)
+
+ UIPicker = hildon.PickerButton(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL)
+ UIPicker.set_alignment(0.0, 0.5, 1.0, 1.0)
+ UIPicker.set_title("Widget aspect")
+ UIPicker.set_selector(selectorUI)
+ UIPicker.set_active(widget.aspect)
+
dialog.vbox.add(button)
dialog.vbox.add(modePicker)
dialog.vbox.add(heightPicker)
+ dialog.vbox.add(unitPicker)
+ dialog.vbox.add(UIPicker)
+
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")
self.pedometer.request_stop()
self.pedometer.join()
self.client.set_int(COUNTER, self.totalCounter)
- self.client.set_int(COUNTER, int(self.totalTime))
+ self.client.set_int(TIMER, int(self.totalTime))
self.button.set_label("Start")
+ self.desc.hide_all()
else:
+ self.desc.show_all()
self.pedometer = PedoCounter(self.update_values)
self.pedometer.set_mode(self.mode)
self.pedometer.set_height(self.height)