From 1d4693fdcb2c1b430740e8c9fcc1bf7fcd3a87b5 Mon Sep 17 00:00:00 2001 From: fgau Date: Fri, 19 Sep 2008 16:18:23 +0000 Subject: [PATCH] click 2, click dial, power gps on/off git-svn-id: http://www.neo1973-germany.de/svn@168 46df4e5c-bc4e-4628-a0fc-830ba316316d --- .../data/themes/blackwhite/dialer_main.edc | 4 +- .../data/themes/blackwhite/dialer_main.edj | Bin 165508 -> 165399 bytes epydial/epydial.py | 116 +++++++++++++++++- 3 files changed, 112 insertions(+), 8 deletions(-) diff --git a/epydial/data/themes/blackwhite/dialer_main.edc b/epydial/data/themes/blackwhite/dialer_main.edc index 5fc9d91..710cb4d 100644 --- a/epydial/data/themes/blackwhite/dialer_main.edc +++ b/epydial/data/themes/blackwhite/dialer_main.edc @@ -75,7 +75,7 @@ part { \ description { \ state: "default" 0.5; \ inherit: "default" 0; \ - color_class: "button_active"; \ + color_class: "unvisible"; \ rel1.offset: 0 -5; \ rel2.offset: 0 5; \ } \ @@ -521,8 +521,6 @@ collections { name: "hash_key_emit_signal_screen_locked"; action: SIGNAL_EMIT "dialer_send" "screen_locked"; } - /*DESIGN_SEPERATOR(10, 1/3, 58/70, 1/3, 68/70); - DESIGN_SEPERATOR(11, 2/3, 58/70, 2/3, 68/70);*/ } } } diff --git a/epydial/data/themes/blackwhite/dialer_main.edj b/epydial/data/themes/blackwhite/dialer_main.edj index dc87721830604ee6ee900285e96cee5e988926df..c4936d67450da5fabcb0b22e0a66890c4fe2cd86 100644 GIT binary patch delta 3736 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 diff --git a/epydial/epydial.py b/epydial/epydial.py index b179cf2..8193b92 100755 --- a/epydial/epydial.py +++ b/epydial/epydial.py @@ -1,6 +1,6 @@ #!/usr/bin/env python2.5 # -*- coding: utf-8 -*- -__author__ = "Soeren Apel (abraxa@dar-clan.de), fgau, Thomas Gstaedner (thomas (a) gstaedtner (.) net)" +__author__ = "Soeren Apel (abraxa@dar-clan.de), Frank Gau (fgau@gau-net.de), Thomas Gstaedner (thomas (a) gstaedtner (.) net)" __version__ = "prototype" __copyright__ = "Copyright (c) 2008" __license__ = "GPL3" @@ -20,6 +20,8 @@ EDJE_FILE_PATH = "data/themes/blackwhite/" MAIN_SCREEN_NAME = "pyneo/dialer/main" INCALL_SCREEN_NAME = "pyneo/dialer/incall" +GSM_STATUS_SCREEN_NAME = "pyneo/dialer/status" +GPS_STATUS_SCREEN_NAME = "pyneo/gps/status" from datetime import datetime from dbus import SystemBus @@ -59,6 +61,38 @@ class EdjeGroup(edje.Edje): self.size = group_manager.get_evas().size +class GpsStatusScreen(EdjeGroup): + def __init__(self, screen_manager): + EdjeGroup.__init__(self, screen_manager, GPS_STATUS_SCREEN_NAME) + + def register_pyneo_callbacks(self): + PyneoController.register_callback("gps_power_status", self.on_gps_power_status) + + def on_gps_power_status(self, status): + if status: p_status = "on" + else: p_status = "off" + print '--- gps device is ', p_status + self.part_text_set("button_11_caption", p_status) + + @edje.decorators.signal_callback("gps_send", "*") + def on_edje_signal_dialer_status_triggered(self, emission, source): + status = self.part_text_get("button_11_caption") + if source == "<": + PyneoController.show_dailer_main() + if source == "on" and status == "on": PyneoController.power_down_gps() + elif source == "on" and status == "off": PyneoController.power_up_gps() + + +class GsmStatusScreen(EdjeGroup): + def __init__(self, screen_manager): + EdjeGroup.__init__(self, screen_manager, GSM_STATUS_SCREEN_NAME) + + @edje.decorators.signal_callback("mouse,up,1", "*") + def on_edje_signal_dialer_status_triggered(self, emission, source): + if source == "button_back_caption": + PyneoController.show_dailer_main() + print source + class InCallScreen(EdjeGroup): def __init__(self, screen_manager): @@ -166,6 +200,17 @@ class MainScreen(EdjeGroup): self.text = [] self.look_screen = True self.part_text_set("numberdisplay_text", "Screen locked") + elif source == "dial" and ''.join(self.text) == "1": + print '--- Gsm Status' + self.text = [] + self.part_text_set("numberdisplay_text", "".join(self.text)) + PyneoController.gsm_status_start() + elif source == "dial" and ''.join(self.text) == "2": + print '--- Gps Status' + self.text = [] + self.part_text_set("numberdisplay_text", "".join(self.text)) + PyneoController.gps_power_status() + PyneoController.gps_status_start() elif source == "dial": PyneoController.gsm_dial("".join(self.text)) @@ -174,10 +219,13 @@ class PyneoController(object): _dbus_timer = None _gsm_timer = None _keyring_timer = None + _gps_timer = None _callbacks = {} _calls = {} gsm = None + pwr = None + gps = None gsm_wireless = None gsm_keyring = None @@ -208,8 +256,8 @@ class PyneoController(object): try: class_.gsm = object_by_url('dbus:///org/pyneo/GsmDevice') class_.gsm_wireless = object_by_url(class_.gsm.GetDevice('wireless')) - class_.pwr = object_by_url('dbus:///org/pyneo/Power') + class_.gps = object_by_url('dbus:///org/pyneo/GpsLocation') except Exception, e: print "Pyneo error: " + str(e) @@ -229,6 +277,41 @@ class PyneoController(object): class_.power_up_gsm() + @classmethod + def gps_power_status(class_): + class_.notify_callbacks("gps_power_status", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED)) + + @classmethod + def power_up_gps(class_): + try: + if class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED): + print '---', 'gps device is already on' + else: + class_.gps.SetPower(APP_TITLE, True, dbus_interface=DIN_POWERED) + print '---', 'switching gps device on' + + except Exception, e: + print "GPS error: " + str(e) + if not class_._gps_timer: + class_._gps_timer = ecore.timer_add(5, class_.power_up_gps) + + # We had an error, keep the timer running if we were called by ecore + return True + + # No error (anymore) + if class_._gps_timer: class_._gps_timer.stop() + + class_.notify_callbacks("gps_power_status", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED)) + + @classmethod + def power_down_gps(class_): + class_.gps.SetPower(APP_TITLE, False, dbus_interface=DIN_POWERED) + class_.notify_callbacks("gps_power_status", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED)) + + @classmethod + def power_status_gsm(class_): + return class_.gsm.GetPower(APP_TITLE, dbus_interface=DIN_POWERED) + @classmethod def power_up_gsm(class_): try: @@ -236,7 +319,7 @@ class PyneoController(object): print '---', 'gsm device is already on' else: class_.gsm.SetPower(APP_TITLE, True, dbus_interface=DIN_POWERED) - print '---', 'switching device on' + print '---', 'switching gsm device on' except Exception, e: print "GSM error: " + str(e) @@ -360,13 +443,25 @@ class PyneoController(object): if status["code"] == "READY": class_.notify_callbacks("sim_ready") - + # Try registering on the network class_.gsm_wireless.Register(dbus_interface=DIN_WIRELESS) - + else: class_.notify_callbacks("sim_key_required", status["code"]) + @classmethod + def gsm_status_start(class_): + class_.notify_callbacks("gsm_status_start") + + @classmethod + def gps_status_start(class_): + class_.notify_callbacks("gps_status_start") + + @classmethod + def show_dailer_main(class_): + class_.notify_callbacks("show_dialer_main") + class Dialer(object): screens = None @@ -382,6 +477,8 @@ class Dialer(object): self.init_screen(MAIN_SCREEN_NAME, MainScreen(self)) self.init_screen(INCALL_SCREEN_NAME, InCallScreen(self)) + self.init_screen(GSM_STATUS_SCREEN_NAME, GsmStatusScreen(self)) + self.init_screen(GPS_STATUS_SCREEN_NAME, GpsStatusScreen(self)) self.screens[MAIN_SCREEN_NAME].part_text_set("numberdisplay_text", "wait ...") @@ -396,6 +493,9 @@ class Dialer(object): PyneoController.register_callback("gsm_phone_ringing", self.on_ringing) PyneoController.register_callback("gsm_phone_call_start", self.on_call_start) PyneoController.register_callback("gsm_phone_call_end", self.on_call_end) + PyneoController.register_callback("gsm_status_start", self.on_gsm_status_start) + PyneoController.register_callback("gps_status_start", self.on_gps_status_start) + PyneoController.register_callback("show_dialer_main", self.on_call_end) def init_screen(self, screen_name, instance): self.screens[screen_name] = instance @@ -426,6 +526,12 @@ class Dialer(object): def on_call_end(self): self.show_screen(MAIN_SCREEN_NAME) + def on_gsm_status_start(self): + self.show_screen(GSM_STATUS_SCREEN_NAME) + + def on_gps_status_start(self): + self.show_screen(GPS_STATUS_SCREEN_NAME) + class EvasCanvas(object): def __init__(self, fullscreen, engine_name):