split epydial.py
git-svn-id: http://www.neo1973-germany.de/svn@183 46df4e5c-bc4e-4628-a0fc-830ba316316d
This commit is contained in:
parent
e1b977dfad
commit
7c540dd8ed
8 changed files with 483 additions and 247 deletions
|
@ -297,11 +297,9 @@ collections {
|
||||||
name: "numberdisplay_text";
|
name: "numberdisplay_text";
|
||||||
type: TEXT;
|
type: TEXT;
|
||||||
mouse_events: 0;
|
mouse_events: 0;
|
||||||
effect: OUTLINE_SOFT_SHADOW;
|
|
||||||
description {
|
description {
|
||||||
state: "default" 0;
|
state: "default" 0;
|
||||||
color_class: "button_inactive";
|
color_class: "button_inactive";
|
||||||
/*color_class: "button_inactive";*/
|
|
||||||
rel1 {
|
rel1 {
|
||||||
to: "numberdisplay_foreground";
|
to: "numberdisplay_foreground";
|
||||||
relative: 0.02 0;
|
relative: 0.02 0;
|
||||||
|
@ -312,9 +310,10 @@ collections {
|
||||||
}
|
}
|
||||||
text {
|
text {
|
||||||
text: "testmode";
|
text: "testmode";
|
||||||
size: 28;
|
size: 32;
|
||||||
font: "Sans:style=Bold,Edje-Vera";
|
font: "Sans:style=Bold,Edje-Vera";
|
||||||
fit: 0 0;
|
fit: 0 0;
|
||||||
|
align: 0 1/2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
//
|
//
|
||||||
// TODO: make the font colors shinier :)
|
// TODO: make the font colors shinier :)
|
||||||
//
|
//
|
||||||
// Signal1: "dialer_incall_send"
|
// Signal1:
|
||||||
// Parameter1.1: "Accept Call"
|
|
||||||
// Parameter1.2: "Hangup Call"
|
|
||||||
|
|
||||||
data {
|
data {
|
||||||
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
||||||
|
@ -169,7 +167,8 @@ collections {
|
||||||
}
|
}
|
||||||
} /* end fix_caption */
|
} /* end fix_caption */
|
||||||
BUTTON(11, 1/3, 58/70, 2/3, 68/70, "on");
|
BUTTON(11, 1/3, 58/70, 2/3, 68/70, "on");
|
||||||
BUTTON(12, 2/3, 58/70, 3/3, 68/70, "<");
|
BUTTON(12, 0, 58/70 , 1/3, 68/70, "<");
|
||||||
|
BUTTON(13, 2/3, 58/70, 3/3, 68/70, ">");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
174
epydial/data/themes/blackwhite/gsm_status.edc
Normal file
174
epydial/data/themes/blackwhite/gsm_status.edc
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
// incall.edc
|
||||||
|
// this is a theme for epydial, a pyneo dialer
|
||||||
|
//
|
||||||
|
// TODO: make the font colors shinier :)
|
||||||
|
//
|
||||||
|
// Signal1:
|
||||||
|
|
||||||
|
data {
|
||||||
|
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
||||||
|
item: "version" "prototype";
|
||||||
|
item: "name" "epydial_blackwhite";
|
||||||
|
}
|
||||||
|
|
||||||
|
images {
|
||||||
|
image: "bg.png" COMP;
|
||||||
|
}
|
||||||
|
|
||||||
|
color_classes {
|
||||||
|
color_class {
|
||||||
|
name: "black";
|
||||||
|
color: 0 0 0 255;
|
||||||
|
color2: 0 0 0 255;
|
||||||
|
color3: 0 0 0 255;
|
||||||
|
}
|
||||||
|
color_class {
|
||||||
|
name: "unvisible";
|
||||||
|
color: 0 0 0 0;
|
||||||
|
color2: 128 128 128 255;
|
||||||
|
color3: 128 128 128 255;
|
||||||
|
}
|
||||||
|
color_class {
|
||||||
|
name: "button_inactive";
|
||||||
|
color: 255 255 255 128;
|
||||||
|
color2: 128 128 128 255;
|
||||||
|
color3: 128 128 128 255;;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
styles {
|
||||||
|
style {
|
||||||
|
name: "textblock_style";
|
||||||
|
base: "font=sans.bold font_size=20 align=left valign=top color=#fff wrap=word";
|
||||||
|
tag: "h1" "+ font_size=28";
|
||||||
|
tag: "/h1" "- \n";
|
||||||
|
tag: "p" "+";
|
||||||
|
tag: "/p" "- \n";
|
||||||
|
tag: "em" "+ style=underline underline_color=#000A underline2_color=#0005";
|
||||||
|
tag: "/em" "-";
|
||||||
|
tag: "br" "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BUTTON(button_number, rel1x, rel1y, rel2x, rel2y, button_caption) \
|
||||||
|
part { \
|
||||||
|
name: "button_"button_number; \
|
||||||
|
type: RECT; \
|
||||||
|
description { \
|
||||||
|
state: "default" 0; \
|
||||||
|
color_class: "unvisible"; \
|
||||||
|
rel1 { relative: rel1x rel1y; offset: 0 0; }; \
|
||||||
|
rel2 { relative: rel2x rel2y; offset: 0 0; }; \
|
||||||
|
} \
|
||||||
|
description { \
|
||||||
|
state: "default" 0.5; \
|
||||||
|
inherit: "default" 0; \
|
||||||
|
color_class: "unvisible"; \
|
||||||
|
rel1.offset: 0 -5; \
|
||||||
|
rel2.offset: 0 5; \
|
||||||
|
} \
|
||||||
|
description { \
|
||||||
|
state: "default" 1; \
|
||||||
|
inherit: "default" 0; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
part { \
|
||||||
|
name: "button_"button_number"_caption"; \
|
||||||
|
type: TEXT; \
|
||||||
|
mouse_events: 0; \
|
||||||
|
description { \
|
||||||
|
state: "default" 0; \
|
||||||
|
color_class: "button_inactive"; \
|
||||||
|
rel1 { \
|
||||||
|
to: "button_"button_number; \
|
||||||
|
relative: 0 0; \
|
||||||
|
} \
|
||||||
|
rel2 { \
|
||||||
|
to: "button_"button_number; \
|
||||||
|
relative: 1 1; \
|
||||||
|
} \
|
||||||
|
text { \
|
||||||
|
text: button_caption; \
|
||||||
|
size: 18; \
|
||||||
|
font: "Sans:style=Bold,Edje-Vera"; \
|
||||||
|
fit: 1 1; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
program { \
|
||||||
|
name: "button_"button_number"_signal_emit"; \
|
||||||
|
signal: "mouse,down,*"; \
|
||||||
|
source: "button_"button_number; \
|
||||||
|
action: SIGNAL_EMIT "gsm_send" button_caption; \
|
||||||
|
} \
|
||||||
|
program { \
|
||||||
|
name: "button_"button_number"_animation"; \
|
||||||
|
signal: "mouse,down,*"; \
|
||||||
|
source: "button_"button_number; \
|
||||||
|
action: STATE_SET "default" 0.5; \
|
||||||
|
target: "button_"button_number; \
|
||||||
|
} \
|
||||||
|
program { \
|
||||||
|
name: "button_"button_number"_animation_end"; \
|
||||||
|
signal: "mouse,up,*"; \
|
||||||
|
source: "button_"button_number; \
|
||||||
|
action: STATE_SET "default" 1; \
|
||||||
|
target: "button_"button_number; \
|
||||||
|
transition: DECELERATE 0.1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
collections {
|
||||||
|
group {
|
||||||
|
name: "pyneo/gsm/status";
|
||||||
|
min: 100 100;
|
||||||
|
max: 800 800;
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "background";
|
||||||
|
type: IMAGE;
|
||||||
|
description {
|
||||||
|
state: "default" 0;
|
||||||
|
rel1 { relative: 0 0; offset: 0 0; };
|
||||||
|
rel2 { relative: 1 1; offset: 0 0; };
|
||||||
|
image { normal: "bg.png"; };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "headline";
|
||||||
|
type: TEXT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0;
|
||||||
|
color_class: "button_inactive";
|
||||||
|
rel1 { relative: 0 0; }
|
||||||
|
rel2 { relative: 1 1/7; }
|
||||||
|
text {
|
||||||
|
text: "gsm status";
|
||||||
|
size: 18;
|
||||||
|
font: "Sans:style=Bold,Edje-Vera";
|
||||||
|
fit: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "gsm_caption";
|
||||||
|
type: TEXTBLOCK;
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
color_class: "button_inactive";
|
||||||
|
align: 0.5 0.5;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 { relative: 0 3/20; }
|
||||||
|
rel2 { relative: 1 10/20; }
|
||||||
|
text {
|
||||||
|
text: "gsm";
|
||||||
|
style: "textblock_style";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} /* end fix_caption */
|
||||||
|
BUTTON(11, 1/3, 58/70, 2/3, 68/70, "on");
|
||||||
|
BUTTON(12, 0, 58/70 , 1/3, 68/70, "<");
|
||||||
|
/*BUTTON(13, 2/3, 58/70, 3/3, 68/70, ">");*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
epydial/dialer_screen.py
Normal file
120
epydial/dialer_screen.py
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
#!/usr/bin/env python2.5
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
__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"
|
||||||
|
|
||||||
|
from epydial import *
|
||||||
|
|
||||||
|
class DialerScreen(EdjeGroup):
|
||||||
|
text = None
|
||||||
|
|
||||||
|
def __init__(self, screen_manager):
|
||||||
|
EdjeGroup.__init__(self, screen_manager, DIALER_SCREEN_NAME)
|
||||||
|
self.text = []
|
||||||
|
self.look_screen = False
|
||||||
|
ecore.timer_add(60.0, self.display_time)
|
||||||
|
self.display_time()
|
||||||
|
|
||||||
|
self.part_text_set("numberdisplay_text", "Wait ...")
|
||||||
|
PyneoController.power_up_gsm()
|
||||||
|
PyneoController.get_gsm_keyring()
|
||||||
|
|
||||||
|
def register_pyneo_callbacks(self):
|
||||||
|
PyneoController.register_callback("sim_key_required", self.on_sim_key_required)
|
||||||
|
PyneoController.register_callback("sim_ready", self.on_sim_ready)
|
||||||
|
PyneoController.register_callback("gsm_registering", self.on_gsm_registering)
|
||||||
|
PyneoController.register_callback("gsm_registered", self.on_gsm_registered)
|
||||||
|
PyneoController.register_callback("gsm_dialing", self.on_gsm_dialing)
|
||||||
|
PyneoController.register_callback("gsm_operator_change", self.on_gsm_operator_change)
|
||||||
|
PyneoController.register_callback("gsm_signal_strength_change", self.on_gsm_signal_strength_change)
|
||||||
|
|
||||||
|
def on_sim_key_required(self, key_type):
|
||||||
|
print '---', 'opening keyring'
|
||||||
|
self.part_text_set("numberdisplay_text", "Enter " + key_type)
|
||||||
|
|
||||||
|
def on_sim_ready(self):
|
||||||
|
print '---', 'SIM unlocked'
|
||||||
|
self.part_text_set("numberdisplay_text", "SIM unlocked")
|
||||||
|
self.text = []
|
||||||
|
|
||||||
|
def on_gsm_registering(self):
|
||||||
|
self.part_text_set("numberdisplay_text", "Registering ...")
|
||||||
|
|
||||||
|
def on_gsm_registered(self):
|
||||||
|
self.part_text_set("numberdisplay_text", "Dial when ready")
|
||||||
|
|
||||||
|
def on_gsm_dialing(self):
|
||||||
|
print '---', 'dial number'
|
||||||
|
self.part_text_set("numberdisplay_text", "Dialing ...")
|
||||||
|
|
||||||
|
def on_gsm_operator_change(self, operator):
|
||||||
|
self.part_text_set("operater_text", operator)
|
||||||
|
|
||||||
|
def on_gsm_signal_strength_change(self, rssi):
|
||||||
|
self.part_text_set("signalq_text", "%s dBm"%str(rssi))
|
||||||
|
|
||||||
|
def display_time(self):
|
||||||
|
self.part_text_set("time_text", time.strftime("%H:%M", time.localtime()));
|
||||||
|
return True;
|
||||||
|
|
||||||
|
|
||||||
|
@edje.decorators.signal_callback("dialer_send", "*")
|
||||||
|
def on_edje_signal_numberkey_triggered(self, emission, source):
|
||||||
|
if PyneoController.gsm_sim_locked():
|
||||||
|
if source.isdigit():
|
||||||
|
self.text.append(source)
|
||||||
|
print ''.join(self.text)
|
||||||
|
self.part_text_set("numberdisplay_text", '*' * len(self.text))
|
||||||
|
elif source == "backspace":
|
||||||
|
self.text = self.text[:-1]
|
||||||
|
print ''.join(self.text)
|
||||||
|
self.part_text_set("numberdisplay_text", '*' * len(self.text))
|
||||||
|
elif source == "clear":
|
||||||
|
self.text = []
|
||||||
|
print ''.join(self.text)
|
||||||
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
|
elif source == "dial":
|
||||||
|
print '---', 'send pin'
|
||||||
|
self.part_text_set("numberdisplay_text", "Verifying ...")
|
||||||
|
PyneoController.gsm_unlock_sim(''.join(self.text))
|
||||||
|
else:
|
||||||
|
if self.look_screen:
|
||||||
|
self.part_text_set("numberdisplay_text", "Screen locked")
|
||||||
|
if source == "screen_locked":
|
||||||
|
self.text = []
|
||||||
|
self.look_screen = False
|
||||||
|
self.part_text_set("numberdisplay_text", "Dial when ready")
|
||||||
|
else:
|
||||||
|
if source.isdigit() or source in ('*', '#'):
|
||||||
|
self.text.append(source)
|
||||||
|
print ''.join(self.text)
|
||||||
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
|
elif source == "backspace":
|
||||||
|
self.text = self.text[:-1]
|
||||||
|
print ''.join(self.text)
|
||||||
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
|
elif source == "clear":
|
||||||
|
self.text = []
|
||||||
|
print ''.join(self.text)
|
||||||
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
|
elif source == "screen_locked":
|
||||||
|
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.power_status_gsm()
|
||||||
|
PyneoController.show_gsm_status_screen()
|
||||||
|
elif source == "dial" and ''.join(self.text) == "2":
|
||||||
|
print '--- Gps Status'
|
||||||
|
self.text = []
|
||||||
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
|
PyneoController.power_status_gps()
|
||||||
|
PyneoController.show_gps_status_screen()
|
||||||
|
# elif source == "dial":
|
||||||
|
# PyneoController.gsm_dial("".join(self.text))
|
||||||
|
|
|
@ -18,9 +18,9 @@ WM_INFO = ("epydial", "epydial")
|
||||||
|
|
||||||
EDJE_FILE_PATH = "data/themes/blackwhite/"
|
EDJE_FILE_PATH = "data/themes/blackwhite/"
|
||||||
|
|
||||||
MAIN_SCREEN_NAME = "pyneo/dialer/main"
|
DIALER_SCREEN_NAME = "pyneo/dialer/main"
|
||||||
INCALL_SCREEN_NAME = "pyneo/dialer/incall"
|
INCALL_SCREEN_NAME = "pyneo/dialer/incall"
|
||||||
GSM_STATUS_SCREEN_NAME = "pyneo/dialer/status"
|
GSM_STATUS_SCREEN_NAME = "pyneo/gsm/status"
|
||||||
GPS_STATUS_SCREEN_NAME = "pyneo/gps/status"
|
GPS_STATUS_SCREEN_NAME = "pyneo/gps/status"
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
@ -61,174 +61,6 @@ class EdjeGroup(edje.Edje):
|
||||||
|
|
||||||
self.size = group_manager.get_evas().size
|
self.size = group_manager.get_evas().size
|
||||||
|
|
||||||
class GpsStatusScreen(EdjeGroup):
|
|
||||||
def __init__(self, screen_manager):
|
|
||||||
EdjeGroup.__init__(self, screen_manager, GPS_STATUS_SCREEN_NAME)
|
|
||||||
self.first = 0.0
|
|
||||||
self.last = 0.0
|
|
||||||
|
|
||||||
def register_pyneo_callbacks(self):
|
|
||||||
PyneoController.register_callback("gps_power_status", self.on_gps_power_status)
|
|
||||||
PyneoController.register_callback("gps_position_change", self.on_gps_position_change)
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
def on_gps_position_change(self, status):
|
|
||||||
if status['fix'] == 1:
|
|
||||||
self.last = time.time()
|
|
||||||
print 'TIME TO FIX: ', self.last-self.first
|
|
||||||
self.part_text_set("gps_caption", "fix: %s<br>long/lat: %f/%f<br>altitude: %d<br>kph/course: %d/%d<br>satellites: %s"%(status['fix'], status['longitude'], status['latitude'], status['altitude'], status['kph'], status['course'], status['satellites']))
|
|
||||||
|
|
||||||
@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":
|
|
||||||
self.first = time.time()
|
|
||||||
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):
|
|
||||||
EdjeGroup.__init__(self, screen_manager, INCALL_SCREEN_NAME)
|
|
||||||
|
|
||||||
def register_pyneo_callbacks(self):
|
|
||||||
PyneoController.register_callback("gsm_number_display", self.on_gsm_number_display)
|
|
||||||
|
|
||||||
def on_gsm_number_display(self, number):
|
|
||||||
self.part_text_set("incall_number_text", number)
|
|
||||||
|
|
||||||
@edje.decorators.signal_callback("dialer_incall_send", "*")
|
|
||||||
def on_edje_signal_dialer_incall_triggered(self, emission, source):
|
|
||||||
if source == "Hangup Call":
|
|
||||||
print source
|
|
||||||
PyneoController.gsm_hangup()
|
|
||||||
if source == "Accept Call":
|
|
||||||
print source
|
|
||||||
|
|
||||||
|
|
||||||
class MainScreen(EdjeGroup):
|
|
||||||
text = None
|
|
||||||
|
|
||||||
def __init__(self, screen_manager):
|
|
||||||
EdjeGroup.__init__(self, screen_manager, MAIN_SCREEN_NAME)
|
|
||||||
self.text = []
|
|
||||||
self.look_screen = False
|
|
||||||
ecore.timer_add(60.0, self.display_time)
|
|
||||||
self.display_time()
|
|
||||||
|
|
||||||
def register_pyneo_callbacks(self):
|
|
||||||
PyneoController.register_callback("sim_key_required", self.on_sim_key_required)
|
|
||||||
PyneoController.register_callback("sim_ready", self.on_sim_ready)
|
|
||||||
PyneoController.register_callback("gsm_registering", self.on_gsm_registering)
|
|
||||||
PyneoController.register_callback("gsm_registered", self.on_gsm_registered)
|
|
||||||
PyneoController.register_callback("gsm_dialing", self.on_gsm_dialing)
|
|
||||||
PyneoController.register_callback("gsm_operator_change", self.on_gsm_operator_change)
|
|
||||||
PyneoController.register_callback("gsm_signal_strength_change", self.on_gsm_signal_strength_change)
|
|
||||||
|
|
||||||
def on_sim_key_required(self, key_type):
|
|
||||||
print '---', 'opening keyring'
|
|
||||||
self.part_text_set("numberdisplay_text", "Enter " + key_type)
|
|
||||||
|
|
||||||
def on_sim_ready(self):
|
|
||||||
print '---', 'SIM unlocked'
|
|
||||||
self.part_text_set("numberdisplay_text", "SIM unlocked")
|
|
||||||
self.text = []
|
|
||||||
|
|
||||||
def on_gsm_registering(self):
|
|
||||||
self.part_text_set("numberdisplay_text", "Registering ...")
|
|
||||||
|
|
||||||
def on_gsm_registered(self):
|
|
||||||
self.part_text_set("numberdisplay_text", "Dial when ready")
|
|
||||||
|
|
||||||
def on_gsm_dialing(self):
|
|
||||||
print '---', 'dial number'
|
|
||||||
self.part_text_set("numberdisplay_text", "Dialing ...")
|
|
||||||
|
|
||||||
def on_gsm_operator_change(self, operator):
|
|
||||||
self.part_text_set("operater_text", operator)
|
|
||||||
|
|
||||||
def on_gsm_signal_strength_change(self, rssi):
|
|
||||||
self.part_text_set("signalq_text", "%s dBm"%str(rssi))
|
|
||||||
|
|
||||||
def display_time(self):
|
|
||||||
self.part_text_set("time_text", time.strftime("%H:%M", time.localtime()));
|
|
||||||
return True;
|
|
||||||
|
|
||||||
@edje.decorators.signal_callback("dialer_send", "*")
|
|
||||||
def on_edje_signal_numberkey_triggered(self, emission, source):
|
|
||||||
if PyneoController.gsm_sim_locked():
|
|
||||||
if source.isdigit():
|
|
||||||
self.text.append(source)
|
|
||||||
print ''.join(self.text)
|
|
||||||
self.part_text_set("numberdisplay_text", '*' * len(self.text))
|
|
||||||
elif source == "backspace":
|
|
||||||
self.text = self.text[:-1]
|
|
||||||
print ''.join(self.text)
|
|
||||||
self.part_text_set("numberdisplay_text", '*' * len(self.text))
|
|
||||||
elif source == "clear":
|
|
||||||
self.text = []
|
|
||||||
print ''.join(self.text)
|
|
||||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
|
||||||
elif source == "dial":
|
|
||||||
print '---', 'send pin'
|
|
||||||
self.part_text_set("numberdisplay_text", "Verifying ...")
|
|
||||||
PyneoController.gsm_unlock_sim(''.join(self.text))
|
|
||||||
else:
|
|
||||||
if self.look_screen:
|
|
||||||
self.part_text_set("numberdisplay_text", "Screen locked")
|
|
||||||
if source == "screen_locked":
|
|
||||||
self.text = []
|
|
||||||
self.look_screen = False
|
|
||||||
self.part_text_set("numberdisplay_text", "Dial when ready")
|
|
||||||
else:
|
|
||||||
if source.isdigit() or source in ('*', '#'):
|
|
||||||
self.text.append(source)
|
|
||||||
print ''.join(self.text)
|
|
||||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
|
||||||
elif source == "backspace":
|
|
||||||
self.text = self.text[:-1]
|
|
||||||
print ''.join(self.text)
|
|
||||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
|
||||||
elif source == "clear":
|
|
||||||
self.text = []
|
|
||||||
print ''.join(self.text)
|
|
||||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
|
||||||
elif source == "screen_locked":
|
|
||||||
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))
|
|
||||||
|
|
||||||
|
|
||||||
class PyneoController(object):
|
class PyneoController(object):
|
||||||
_dbus_timer = None
|
_dbus_timer = None
|
||||||
|
@ -287,51 +119,10 @@ class PyneoController(object):
|
||||||
|
|
||||||
# Register our own D-Bus callbacks
|
# Register our own D-Bus callbacks
|
||||||
class_.gsm_wireless.connect_to_signal("Status", class_.on_gsm_wireless_status, dbus_interface=DIN_WIRELESS)
|
class_.gsm_wireless.connect_to_signal("Status", class_.on_gsm_wireless_status, dbus_interface=DIN_WIRELESS)
|
||||||
|
|
||||||
# D-Bus is ready, let's power up GSM
|
|
||||||
class_.power_up_gsm()
|
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def gps_power_status(class_):
|
def power_status_gsm(class_):
|
||||||
class_.notify_callbacks("gps_power_status", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
class_.notify_callbacks("power_status_gsm", class_.gsm.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()
|
|
||||||
|
|
||||||
# Register our own D-Bus Gps callbacks
|
|
||||||
class_.gps.connect_to_signal("Position", class_.on_gps_position_status, dbus_interface=DIN_LOCATION)
|
|
||||||
|
|
||||||
class_.notify_callbacks("gps_power_status", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
|
||||||
|
|
||||||
status = class_.gps.GetPosition(dbus_interface=DIN_LOCATION)
|
|
||||||
class_.on_gps_position_status(status)
|
|
||||||
|
|
||||||
@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
|
@classmethod
|
||||||
def power_up_gsm(class_):
|
def power_up_gsm(class_):
|
||||||
|
@ -352,9 +143,14 @@ class PyneoController(object):
|
||||||
|
|
||||||
# No error (anymore)
|
# No error (anymore)
|
||||||
if class_._gsm_timer: class_._gsm_timer.stop()
|
if class_._gsm_timer: class_._gsm_timer.stop()
|
||||||
|
|
||||||
|
# Register our own D-Bus Gps callbacks
|
||||||
|
class_.gps.connect_to_signal("Position", class_.on_gps_position_status, dbus_interface=DIN_LOCATION)
|
||||||
|
|
||||||
# Now we can request the keyring object for the SIM, it didn't exist before powering up
|
class_.notify_callbacks("gps_power_status", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
||||||
class_.get_gsm_keyring()
|
|
||||||
|
status = class_.gps.GetPosition(dbus_interface=DIN_LOCATION)
|
||||||
|
class_.on_gps_position_status(status)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_gsm_keyring(class_):
|
def get_gsm_keyring(class_):
|
||||||
|
@ -377,7 +173,7 @@ class PyneoController(object):
|
||||||
# Inquire SIM status and act accordingly to the initial state
|
# Inquire SIM status and act accordingly to the initial state
|
||||||
status = class_.gsm_keyring.GetOpened(dbus_interface=DIN_KEYRING)
|
status = class_.gsm_keyring.GetOpened(dbus_interface=DIN_KEYRING)
|
||||||
class_.on_gsm_keyring_status(status)
|
class_.on_gsm_keyring_status(status)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def gsm_sim_locked(class_):
|
def gsm_sim_locked(class_):
|
||||||
return class_.gsm_keyring_status['code'] != 'READY'
|
return class_.gsm_keyring_status['code'] != 'READY'
|
||||||
|
@ -415,14 +211,6 @@ class PyneoController(object):
|
||||||
# Remove the call from our list
|
# Remove the call from our list
|
||||||
# class_._calls.__delitem__(call_obj)
|
# class_._calls.__delitem__(call_obj)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def on_gps_position_status(class_, status_map):
|
|
||||||
status = dedbusmap(status_map)
|
|
||||||
print "GPS Status: " + str(status)
|
|
||||||
|
|
||||||
if status.has_key('fix'):
|
|
||||||
class_.notify_callbacks("gps_position_change", status)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def on_gsm_wireless_status(class_, status_map):
|
def on_gsm_wireless_status(class_, status_map):
|
||||||
status = dedbusmap(status_map)
|
status = dedbusmap(status_map)
|
||||||
|
@ -480,16 +268,68 @@ class PyneoController(object):
|
||||||
class_.notify_callbacks("sim_key_required", status["code"])
|
class_.notify_callbacks("sim_key_required", status["code"])
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def gsm_status_start(class_):
|
def power_status_gps(class_):
|
||||||
class_.notify_callbacks("gsm_status_start")
|
class_.notify_callbacks("power_status_gps", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def power_up_gps(class_):
|
||||||
|
print 'power_up_gps'
|
||||||
|
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()
|
||||||
|
|
||||||
|
# Register our own D-Bus Gps callbacks
|
||||||
|
class_.gps.connect_to_signal("Position", class_.on_gps_position_status, dbus_interface=DIN_LOCATION)
|
||||||
|
|
||||||
|
class_.notify_callbacks("power_status_gps", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
||||||
|
|
||||||
|
status = class_.gps.GetPosition(dbus_interface=DIN_LOCATION)
|
||||||
|
class_.on_gps_position_status(status)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def gps_status_start(class_):
|
def power_down_gps(class_):
|
||||||
class_.notify_callbacks("gps_status_start")
|
class_.gps.SetPower(APP_TITLE, False, dbus_interface=DIN_POWERED)
|
||||||
|
class_.notify_callbacks("power_status_gps", class_.gps.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def show_dailer_main(class_):
|
def on_gps_position_status(class_, status_map):
|
||||||
class_.notify_callbacks("show_dialer_main")
|
status = dedbusmap(status_map)
|
||||||
|
print "GPS Status: " + str(status)
|
||||||
|
|
||||||
|
if status.has_key('fix'):
|
||||||
|
class_.notify_callbacks("gps_position_change", status)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def show_dialer_screen(class_):
|
||||||
|
class_.notify_callbacks("show_dialer_screen")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def show_gsm_status_screen(class_):
|
||||||
|
class_.notify_callbacks("show_gsm_status_screen")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def show_gps_status_screen(class_):
|
||||||
|
class_.notify_callbacks("show_gps_status_screen")
|
||||||
|
|
||||||
|
|
||||||
|
from dialer_screen import *
|
||||||
|
from incall_screen import *
|
||||||
|
from gsm_status_screen import *
|
||||||
|
from gps_status_screen import *
|
||||||
|
|
||||||
|
|
||||||
class Dialer(object):
|
class Dialer(object):
|
||||||
|
@ -504,14 +344,12 @@ class Dialer(object):
|
||||||
|
|
||||||
self.screens = {}
|
self.screens = {}
|
||||||
|
|
||||||
self.init_screen(MAIN_SCREEN_NAME, MainScreen(self))
|
self.init_screen(DIALER_SCREEN_NAME, DialerScreen(self))
|
||||||
self.init_screen(INCALL_SCREEN_NAME, InCallScreen(self))
|
self.init_screen(INCALL_SCREEN_NAME, InCallScreen(self))
|
||||||
self.init_screen(GSM_STATUS_SCREEN_NAME, GsmStatusScreen(self))
|
self.init_screen(GSM_STATUS_SCREEN_NAME, GsmStatusScreen(self))
|
||||||
self.init_screen(GPS_STATUS_SCREEN_NAME, GpsStatusScreen(self))
|
self.init_screen(GPS_STATUS_SCREEN_NAME, GpsStatusScreen(self))
|
||||||
|
|
||||||
self.screens[MAIN_SCREEN_NAME].part_text_set("numberdisplay_text", "wait ...")
|
self.show_screen(DIALER_SCREEN_NAME)
|
||||||
|
|
||||||
self.show_screen(MAIN_SCREEN_NAME)
|
|
||||||
|
|
||||||
# Initialize the D-Bus interface to pyneo
|
# Initialize the D-Bus interface to pyneo
|
||||||
dbus_ml = e_dbus.DBusEcoreMainLoop()
|
dbus_ml = e_dbus.DBusEcoreMainLoop()
|
||||||
|
@ -522,9 +360,9 @@ class Dialer(object):
|
||||||
PyneoController.register_callback("gsm_phone_ringing", self.on_ringing)
|
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_start", self.on_call_start)
|
||||||
PyneoController.register_callback("gsm_phone_call_end", self.on_call_end)
|
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("show_gsm_status_screen", self.on_gsm_status_screen)
|
||||||
PyneoController.register_callback("gps_status_start", self.on_gps_status_start)
|
PyneoController.register_callback("show_gps_status_screen", self.on_gps_status_screen)
|
||||||
PyneoController.register_callback("show_dialer_main", self.on_call_end)
|
PyneoController.register_callback("show_dialer_screen", self.on_call_end)
|
||||||
|
|
||||||
def init_screen(self, screen_name, instance):
|
def init_screen(self, screen_name, instance):
|
||||||
self.screens[screen_name] = instance
|
self.screens[screen_name] = instance
|
||||||
|
@ -553,12 +391,12 @@ class Dialer(object):
|
||||||
self.show_screen(INCALL_SCREEN_NAME)
|
self.show_screen(INCALL_SCREEN_NAME)
|
||||||
|
|
||||||
def on_call_end(self):
|
def on_call_end(self):
|
||||||
self.show_screen(MAIN_SCREEN_NAME)
|
self.show_screen(DIALER_SCREEN_NAME)
|
||||||
|
|
||||||
def on_gsm_status_start(self):
|
def on_gsm_status_screen(self):
|
||||||
self.show_screen(GSM_STATUS_SCREEN_NAME)
|
self.show_screen(GSM_STATUS_SCREEN_NAME)
|
||||||
|
|
||||||
def on_gps_status_start(self):
|
def on_gps_status_screen(self):
|
||||||
self.show_screen(GPS_STATUS_SCREEN_NAME)
|
self.show_screen(GPS_STATUS_SCREEN_NAME)
|
||||||
|
|
||||||
|
|
||||||
|
|
45
epydial/gps_status_screen.py
Normal file
45
epydial/gps_status_screen.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env python2.5
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
__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"
|
||||||
|
|
||||||
|
from epydial import *
|
||||||
|
|
||||||
|
class GpsStatusScreen(EdjeGroup):
|
||||||
|
def __init__(self, screen_manager):
|
||||||
|
EdjeGroup.__init__(self, screen_manager, GPS_STATUS_SCREEN_NAME)
|
||||||
|
self.first = 0.0
|
||||||
|
self.last = 0.0
|
||||||
|
|
||||||
|
def register_pyneo_callbacks(self):
|
||||||
|
PyneoController.register_callback("power_status_gps", self.on_power_status_gps)
|
||||||
|
PyneoController.register_callback("gps_position_change", self.on_gps_position_change)
|
||||||
|
|
||||||
|
def on_power_status_gps(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)
|
||||||
|
self.part_text_set("gps_caption", "gps device is %s"%p_status)
|
||||||
|
|
||||||
|
def on_gps_position_change(self, status):
|
||||||
|
if status['fix'] == 1:
|
||||||
|
self.last = time.time()
|
||||||
|
print 'TIME TO FIX: ', self.last-self.first
|
||||||
|
self.part_text_set("gps_caption", "fix: %s<br>long/lat: %f/%f<br>altitude: %d<br>kph/course: %d/%d<br>satellites: %s"%(status['fix'], status['longitude'], status['latitude'], status['altitude'], status['kph'], status['course'], status['satellites']))
|
||||||
|
else:
|
||||||
|
self.part_text_set("gps_caption", "fix: NIX FIX")
|
||||||
|
|
||||||
|
@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_dialer_screen()
|
||||||
|
if source == "on" and status == "on": PyneoController.power_down_gps()
|
||||||
|
elif source == "on" and status == "off":
|
||||||
|
self.first = time.time()
|
||||||
|
PyneoController.power_up_gps()
|
||||||
|
|
||||||
|
|
34
epydial/gsm_status_screen.py
Normal file
34
epydial/gsm_status_screen.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env python2.5
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
__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"
|
||||||
|
|
||||||
|
from epydial import *
|
||||||
|
|
||||||
|
class GsmStatusScreen(EdjeGroup):
|
||||||
|
def __init__(self, screen_manager):
|
||||||
|
EdjeGroup.__init__(self, screen_manager, GSM_STATUS_SCREEN_NAME)
|
||||||
|
|
||||||
|
def register_pyneo_callbacks(self):
|
||||||
|
PyneoController.register_callback("power_status_gsm", self.on_power_status_gsm)
|
||||||
|
|
||||||
|
def on_power_status_gsm(self, status):
|
||||||
|
if status: p_status = "on"
|
||||||
|
else: p_status = "off"
|
||||||
|
print '--- gsm device is ', p_status
|
||||||
|
self.part_text_set("button_11_caption", p_status)
|
||||||
|
self.part_text_set("gsm_caption", "gsm device is %s"%p_status)
|
||||||
|
|
||||||
|
@edje.decorators.signal_callback("gsm_send", "*")
|
||||||
|
def on_edje_signal_dialer_status_triggered(self, emission, source):
|
||||||
|
status = self.part_text_get("button_11_caption")
|
||||||
|
if source == "<":
|
||||||
|
PyneoController.show_dialer_screen()
|
||||||
|
if source == "on" and status == "on": PyneoController.power_down_gsm()
|
||||||
|
elif source == "on" and status == "off":
|
||||||
|
self.first = time.time()
|
||||||
|
PyneoController.power_up_gsm()
|
||||||
|
|
||||||
|
|
27
epydial/incall_screen.py
Normal file
27
epydial/incall_screen.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env python2.5
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
__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"
|
||||||
|
|
||||||
|
from epydial import *
|
||||||
|
|
||||||
|
class InCallScreen(EdjeGroup):
|
||||||
|
def __init__(self, screen_manager):
|
||||||
|
EdjeGroup.__init__(self, screen_manager, INCALL_SCREEN_NAME)
|
||||||
|
|
||||||
|
def register_pyneo_callbacks(self):
|
||||||
|
PyneoController.register_callback("gsm_number_display", self.on_gsm_number_display)
|
||||||
|
|
||||||
|
def on_gsm_number_display(self, number):
|
||||||
|
self.part_text_set("incall_number_text", number)
|
||||||
|
|
||||||
|
@edje.decorators.signal_callback("dialer_incall_send", "*")
|
||||||
|
def on_edje_signal_dialer_incall_triggered(self, emission, source):
|
||||||
|
if source == "Hangup Call":
|
||||||
|
print source
|
||||||
|
PyneoController.gsm_hangup()
|
||||||
|
if source == "Accept Call":
|
||||||
|
print source
|
||||||
|
|
Loading…
Reference in a new issue