+class Config(Singleton):
+ mode = 0
+ height = 0
+ step_length = 0.7
+ weight = 70
+ sensitivity = 100
+ unit = 0
+ aspect = 0
+ sensitivity = 100
+ second_view = 0
+ graph_view = 0
+ no_idle_time = False
+ logging = False
+
+ alarm_enable = False
+ alarm_fname = "/home/user/MyDocs/.sounds/Ringtones/Bicycle.aac"
+ alarm_interval = 5
+ alarm_type = 0
+
+ observers = []
+
+ def __init__(self):
+ if self._references > 1:
+ return
+ self.client = gconf.client_get_default()
+ self.client.add_dir('/apps/pedometerhomewidget', gconf.CLIENT_PRELOAD_NONE)
+ self.notify_id = self.client.notify_add('/apps/pedometerhomewidget', self.gconf_changed)
+
+ def add_observer(self, func):
+ try:
+ self.observers.index(func)
+ except:
+ self.observers.append(func)
+ func()
+
+ def remove_observer(self, func):
+ self.observers.remove(func)
+
+ def gconf_changed(self, client, *args, **kargs):
+ self.notify()
+
+ def notify(self):
+ for func in self.observers:
+ func()
+
+ def get_mode(self):
+ return self.client.get_int(MODE)
+
+ def set_mode(self, value):
+ self.client.set_int(MODE, value)
+
+ def get_height(self):
+ return self.client.get_int(HEIGHT)
+
+ def set_height(self, value):
+ self.client.set_int(HEIGHT, value)
+
+ def get_step_length(self):
+ return self.client.get_float(STEP_LENGTH)
+
+ def set_step_length(self, value):
+ self.client.set_float(STEP_LENGTH, value)
+
+ def get_weight(self):
+ return self.client.get_int(WEIGHT)
+
+ def set_weight(self, value):
+ self.client.set_int(WEIGHT, value)
+
+ def get_sensitivity(self):
+ return self.client.get_int(SENSITIVITY)
+
+ def set_sensitivity(self, value):
+ self.client.set_int(SENSITIVITY, value)
+
+ def get_unit(self):
+ return self.client.get_int(UNIT)
+
+ def set_unit(self, value):
+ self.client.set_int(UNIT, value)
+
+ def get_aspect(self):
+ return self.client.get_int(ASPECT)
+
+ def set_aspect(self, value):
+ self.client.set_int(ASPECT, value)
+
+ def get_secondview(self):
+ value = self.client.get_int(SECONDVIEW)
+ if value < 0 or value > 2:
+ value = 0
+ logger.error("Invalid secondview value read from Gconf. Using default value")
+
+ return value
+
+ def set_secondview(self, value):
+ self.client.set_int(SECONDVIEW, value)
+
+ def get_graphview(self):
+ return self.client.get_int(GRAPHVIEW)
+
+ def set_graphview(self, value):
+ self.client.set_int(GRAPHVIEW, value)
+
+ def get_noidletime(self):
+ return self.client.get_bool(NOIDLETIME)
+
+ def set_noidletime(self, value):
+ self.client.set_bool(NOIDLETIME, value)
+
+ def get_logging(self):
+ return self.client.get_bool(LOGGING)
+
+ def set_logging(self, value):
+ self.client.set_bool(LOGGING, value)
+
+ def get_alarm_enable(self):
+ return self.client.get_bool(ALARM_ENABLE)
+
+ def set_alarm_enable(self, value):
+ self.client.set_bool(ALARM_ENABLE, value)
+
+ def get_alarm_fname(self):
+ return self.client.get_string(ALARM_FNAME)
+
+ def set_alarm_fname(self, value):
+ self.client.set_string(ALARM_FNAME, value)
+
+ def get_alarm_interval(self):
+ return self.client.get_int(ALARM_INTERVAL)
+
+ def set_alarrm_interval(self, value):
+ self.client.set_int(ALARM_INTERVAL, value)
+
+ def get_alarm_type(self):
+ return self.client.get_int(ALARM_TYPE)
+
+ def set_alarm_type(self, value):
+ self.client.set_int(ALARM_TYPE, value)
+