add pix viewer, contacts etc.
git-svn-id: http://www.neo1973-germany.de/svn@213 46df4e5c-bc4e-4628-a0fc-830ba316316d
This commit is contained in:
parent
e102c6baa7
commit
0969b8fc23
14 changed files with 893 additions and 162 deletions
|
@ -14,3 +14,5 @@ for theme in data/themes/*; do
|
||||||
cd - > /dev/null
|
cd - > /dev/null
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
chmod -R 777 ./data/themes/blackwhite
|
||||||
|
|
97
epydial/contacts_screen.py
Normal file
97
epydial/contacts_screen.py
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
#!/usr/bin/env python2.5
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
__author__ = "Soeren Apel (abraxa@dar-clan.de), Frank Gau (fgau@gau-net.de), Thomas Gstaedtner (thomas (a) gstaedtner (.) net)"
|
||||||
|
__version__ = "prototype"
|
||||||
|
__copyright__ = "Copyright (c) 2008"
|
||||||
|
__license__ = "GPL3"
|
||||||
|
|
||||||
|
from epydial import *
|
||||||
|
|
||||||
|
class ContactsScreen(EdjeGroup):
|
||||||
|
contact_offset = 0
|
||||||
|
sorted_by = 'lastname'
|
||||||
|
detail = False
|
||||||
|
|
||||||
|
def __init__(self, screen_manager):
|
||||||
|
EdjeGroup.__init__(self, screen_manager, CONTACTS_SCREEN_NAME)
|
||||||
|
self.show_contacts()
|
||||||
|
|
||||||
|
def del_displayed_contacts(self):
|
||||||
|
x=1
|
||||||
|
while x < 5:
|
||||||
|
self.part_text_set("contact_%s" %x, "")
|
||||||
|
x += 1
|
||||||
|
|
||||||
|
def show_contacts(self):
|
||||||
|
x = 1
|
||||||
|
self.detail = False
|
||||||
|
self.del_displayed_contacts()
|
||||||
|
self.part_text_set("sort_by", "sorted by: %s" %self.sorted_by)
|
||||||
|
connection = connect(DB_FILE_PATH)
|
||||||
|
cursor = connection.cursor()
|
||||||
|
cursor.execute("SELECT * FROM contacts ORDER BY %s LIMIT 4 OFFSET %s" %(self.sorted_by, self.contact_offset))
|
||||||
|
for row in cursor:
|
||||||
|
self.part_text_set("contact_%s" %x, "%s, %s" %(row[1], row[0]))
|
||||||
|
x += 1
|
||||||
|
|
||||||
|
def show_contact_detail(self, detail_offset):
|
||||||
|
self.part_text_set("sort_by", "detail view")
|
||||||
|
self.detail = True
|
||||||
|
self.del_displayed_contacts()
|
||||||
|
connection = connect(DB_FILE_PATH)
|
||||||
|
cursor = connection.cursor()
|
||||||
|
cursor.execute("SELECT * FROM contacts ORDER BY %s LIMIT 1 OFFSET %s" %(self.sorted_by, detail_offset))
|
||||||
|
for row in cursor:
|
||||||
|
self.part_text_set("contact_1", "%s, %s" %(row[1], row[0]))
|
||||||
|
self.part_text_set("contact_2", "mobil: %s" %row[2])
|
||||||
|
self.part_text_set("contact_3", "home: %s" %row[3])
|
||||||
|
self.part_text_set("contact_4", "work: %s" %row[4])
|
||||||
|
|
||||||
|
@edje.decorators.signal_callback("mouse,up,1", "*")
|
||||||
|
def on_edje_signal_dialer_status_triggered(self, emission, source):
|
||||||
|
if self.detail == True:
|
||||||
|
if source == "button_10":
|
||||||
|
self.contact_offset = 0
|
||||||
|
self.show_contacts()
|
||||||
|
if source == "button_12":
|
||||||
|
self.contact_offset += 1
|
||||||
|
self.show_contact_detail(self.contact_offset)
|
||||||
|
if source == "button_11":
|
||||||
|
self.contact_offset -= 1
|
||||||
|
self.show_contact_detail(self.contact_offset)
|
||||||
|
if source == "2":
|
||||||
|
PyneoController.gsm_dial(self.part_text_get("contact_2")[7:])
|
||||||
|
if source == "3":
|
||||||
|
PyneoController.gsm_dial(self.part_text_get("contact_3")[6:])
|
||||||
|
if source == "4":
|
||||||
|
PyneoController.gsm_dial(self.part_text_get("contact_4")[6:])
|
||||||
|
elif self.detail == False:
|
||||||
|
if source == "1":
|
||||||
|
self.show_contact_detail(self.contact_offset)
|
||||||
|
if source == "2":
|
||||||
|
self.contact_offset += 1
|
||||||
|
self.show_contact_detail(self.contact_offset)
|
||||||
|
if source == "3":
|
||||||
|
self.contact_offset += 2
|
||||||
|
self.show_contact_detail(self.contact_offset)
|
||||||
|
if source == "4":
|
||||||
|
self.contact_offset += 3
|
||||||
|
self.show_contact_detail(self.contact_offset)
|
||||||
|
if source == "button_10":
|
||||||
|
PyneoController.show_dialer_screen()
|
||||||
|
if source == "button_12":
|
||||||
|
self.contact_offset += 4
|
||||||
|
self.show_contacts()
|
||||||
|
if source == "button_11":
|
||||||
|
self.contact_offset -= 4
|
||||||
|
self.show_contacts()
|
||||||
|
if source == "headline" and self.sorted_by == "lastname":
|
||||||
|
self.sorted_by = 'firstname'
|
||||||
|
self.contact_offset = 0
|
||||||
|
self.show_contacts()
|
||||||
|
elif source == "headline" and self.sorted_by == "firstname":
|
||||||
|
self.sorted_by = 'lastname'
|
||||||
|
self.contact_offset = 0
|
||||||
|
self.show_contacts()
|
||||||
|
print 'source: ', source
|
||||||
|
|
BIN
epydial/data/db/my.sqlite
Executable file
BIN
epydial/data/db/my.sqlite
Executable file
Binary file not shown.
|
@ -6,7 +6,7 @@
|
||||||
// Signal1:
|
// Signal1:
|
||||||
|
|
||||||
data {
|
data {
|
||||||
item: "author" "http://www.gurumeditation.it/blog/wp-content/uploads/releases/calculator03.tgz";
|
item: "author" "thanks to dave andreoli, http://www.gurumeditation.it/blog/wp-content/uploads/releases/calculator03.tgz";
|
||||||
item: "version" "prototype";
|
item: "version" "prototype";
|
||||||
item: "name" "epydial_blackwhite";
|
item: "name" "epydial_blackwhite";
|
||||||
}
|
}
|
||||||
|
@ -179,7 +179,7 @@ collections {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
parts {
|
parts {
|
||||||
part {
|
part {
|
||||||
name: "background";
|
name: "background";
|
||||||
type: IMAGE;
|
type: IMAGE;
|
||||||
|
@ -191,45 +191,41 @@ collections {
|
||||||
image { normal: "bg.png"; }
|
image { normal: "bg.png"; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part {
|
part {
|
||||||
name: "bg_calc";
|
name: "bg_calc";
|
||||||
type: IMAGE;
|
type: IMAGE;
|
||||||
mouse_events: 1;
|
mouse_events: 1;
|
||||||
description {
|
description {
|
||||||
state: "default" 0.0;
|
state: "default" 0.0;
|
||||||
aspect: 0.9 0.9;
|
aspect: 0.9 0.9;
|
||||||
aspect_preference: BOTH;
|
aspect_preference: BOTH;
|
||||||
image {
|
image { normal: "bg_calc.png"; }
|
||||||
normal: "bg_calc.png";
|
}
|
||||||
}
|
}
|
||||||
}
|
part {
|
||||||
}
|
name: "display";
|
||||||
|
type: TEXT;
|
||||||
part {
|
mouse_events: 0;
|
||||||
name: "display";
|
description {
|
||||||
type: TEXT;
|
state: "default" 0.0;
|
||||||
mouse_events: 0;
|
color: 68 72 63 200;
|
||||||
description {
|
rel1 {
|
||||||
state: "default" 0.0;
|
relative: 0.07 0.09;
|
||||||
color: 68 72 63 200;
|
to: "bg_calc";
|
||||||
rel1 {
|
}
|
||||||
relative: 0.07 0.09;
|
rel2 {
|
||||||
to: "bg_calc";
|
relative: 0.93 0.22;
|
||||||
}
|
to: "bg_calc";
|
||||||
rel2 {
|
}
|
||||||
relative: 0.93 0.22;
|
text {
|
||||||
to: "bg_calc";
|
font: "vera";
|
||||||
}
|
size: 20;
|
||||||
text{
|
fit: 0 1;
|
||||||
font: "vera";
|
align: 1 0.5;
|
||||||
size: 20;
|
text: "012345";
|
||||||
fit: 0 1;
|
}
|
||||||
align: 1 0.5;
|
}
|
||||||
text: "012345";
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
part {
|
part {
|
||||||
name: "num_bg";
|
name: "num_bg";
|
||||||
|
|
221
epydial/data/themes/blackwhite/contacts_screen.edc
Executable file
221
epydial/data/themes/blackwhite/contacts_screen.edc
Executable file
|
@ -0,0 +1,221 @@
|
||||||
|
// contacts_screen.edc
|
||||||
|
// this is a theme for epydial, a pyneo dialer
|
||||||
|
|
||||||
|
data {
|
||||||
|
item: "author" "thomasg [thomas (a) gstaedtner (.) net] , fgau (fgau@gau-net.de)";
|
||||||
|
item: "version" "prototype";
|
||||||
|
item: "name" "epydial_blackwhite";
|
||||||
|
}
|
||||||
|
|
||||||
|
fonts {
|
||||||
|
font: "Vera.ttf" "Vera";
|
||||||
|
font: "VeraBd.ttf" "VeraBd";
|
||||||
|
}
|
||||||
|
|
||||||
|
images {
|
||||||
|
image: "bg.png" COMP;
|
||||||
|
}
|
||||||
|
|
||||||
|
color_classes {
|
||||||
|
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;;
|
||||||
|
}
|
||||||
|
color_class {
|
||||||
|
name: "scale";
|
||||||
|
color: 255 255 255 56;
|
||||||
|
color2: 0 0 0 255;
|
||||||
|
color3: 0 0 0 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
styles {
|
||||||
|
style {
|
||||||
|
name: "textblock_style";
|
||||||
|
base: "font=Vera font_size=20 align=left valign=top color=#fff";
|
||||||
|
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";
|
||||||
|
tag: "c1" "+ color=#fff";
|
||||||
|
tag: "/c1" "-";
|
||||||
|
tag: "c2" "+ color=#f3f";
|
||||||
|
tag: "/c2" "-";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#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 "hon_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; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ITEM(item_number, rel1x, rel1y, rel2x, rel2y) \
|
||||||
|
part { \
|
||||||
|
name: item_number; \
|
||||||
|
type: RECT; \
|
||||||
|
description { \
|
||||||
|
state: "default" 0; \
|
||||||
|
color_class: "scale"; \
|
||||||
|
rel1 { relative: rel1x rel1y;}; \
|
||||||
|
rel2 { relative: rel2x rel2y;}; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
part { \
|
||||||
|
name: "contact_"item_number; \
|
||||||
|
type: TEXT; \
|
||||||
|
mouse_events: 0; \
|
||||||
|
description { \
|
||||||
|
state: "default" 0; \
|
||||||
|
color_class: "button_inactive"; \
|
||||||
|
rel1 { \
|
||||||
|
to: item_number; \
|
||||||
|
relative: 1/20 0; \
|
||||||
|
} \
|
||||||
|
rel2 { \
|
||||||
|
to: item_number; \
|
||||||
|
relative: 19/20 1; \
|
||||||
|
} \
|
||||||
|
text { \
|
||||||
|
text: ""; \
|
||||||
|
size: 26; \
|
||||||
|
font: "Sans:style=Bold,Edje-Vera"; \
|
||||||
|
/*fit: 1 1; */\
|
||||||
|
align: 0 0.5; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
|
||||||
|
|
||||||
|
collections {
|
||||||
|
group {
|
||||||
|
name: "pyneo/contacts/screen";
|
||||||
|
min: 100 100;
|
||||||
|
max: 800 800;
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "background";
|
||||||
|
type: IMAGE;
|
||||||
|
mouse_events: 0;
|
||||||
|
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;
|
||||||
|
description {
|
||||||
|
state: "default" 0;
|
||||||
|
color_class: "button_inactive";
|
||||||
|
rel1 { relative: 1/20 1/20; }
|
||||||
|
rel2 { relative: 19/20 3/20; }
|
||||||
|
text {
|
||||||
|
text: "contacts";
|
||||||
|
size: 20;
|
||||||
|
font: "VeraBd";
|
||||||
|
fit: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "sort_by";
|
||||||
|
type: TEXT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0;
|
||||||
|
color_class: "button_inactive";
|
||||||
|
rel1 { relative: 1/20 3/20;}
|
||||||
|
rel2 { relative: 19/20 4/20; }
|
||||||
|
text {
|
||||||
|
text: "sorted by: last name";
|
||||||
|
size: 10;
|
||||||
|
font: "Vera";
|
||||||
|
fit: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ITEM(1, 1/20, 9/40, 19/20, 14/40);
|
||||||
|
ITEM(2, 1/20, 15/40, 19/20, 20/40);
|
||||||
|
ITEM(3, 1/20, 21/40, 19/20, 26/40);
|
||||||
|
ITEM(4, 1/20, 27/40, 19/20, 32/40);
|
||||||
|
BUTTON(10, 0, 58/70 , 1/3, 68/70, "<");
|
||||||
|
BUTTON(11, 1/3, 58/70, 2/3, 68/70, "<");
|
||||||
|
BUTTON(12, 2/3, 58/70, 3/3, 68/70, ">");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,27 +1,22 @@
|
||||||
// incall.edc
|
// gps_status.edc
|
||||||
// this is a theme for epydial, a pyneo dialer
|
// this is a theme for epydial, a pyneo dialer and more
|
||||||
//
|
|
||||||
// TODO: make the font colors shinier :)
|
|
||||||
//
|
|
||||||
// Signal1:
|
|
||||||
|
|
||||||
data {
|
data {
|
||||||
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
item: "author" "thomasg [thomas (a) gstaedtner (.) net] , fgau (fgau@gau-net.de)";
|
||||||
item: "version" "prototype";
|
item: "version" "prototype";
|
||||||
item: "name" "epydial_blackwhite";
|
item: "name" "epydial_blackwhite";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fonts {
|
||||||
|
font: "Vera.ttf" "Vera";
|
||||||
|
font: "VeraBd.ttf" "VeraBd";
|
||||||
|
}
|
||||||
|
|
||||||
images {
|
images {
|
||||||
image: "bg.png" COMP;
|
image: "bg.png" COMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
color_classes {
|
color_classes {
|
||||||
color_class {
|
|
||||||
name: "black";
|
|
||||||
color: 0 0 0 255;
|
|
||||||
color2: 0 0 0 255;
|
|
||||||
color3: 0 0 0 255;
|
|
||||||
}
|
|
||||||
color_class {
|
color_class {
|
||||||
name: "unvisible";
|
name: "unvisible";
|
||||||
color: 0 0 0 0;
|
color: 0 0 0 0;
|
||||||
|
@ -34,12 +29,18 @@ color_classes {
|
||||||
color2: 128 128 128 255;
|
color2: 128 128 128 255;
|
||||||
color3: 128 128 128 255;;
|
color3: 128 128 128 255;;
|
||||||
}
|
}
|
||||||
|
color_class {
|
||||||
|
name: "scale";
|
||||||
|
color: 255 255 255 64;
|
||||||
|
color2: 0 0 0 255;
|
||||||
|
color3: 0 0 0 255;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
styles {
|
styles {
|
||||||
style {
|
style {
|
||||||
name: "textblock_style";
|
name: "textblock_style";
|
||||||
base: "font=sans.bold font_size=20 align=left valign=top color=#fff wrap=word";
|
base: "font=Vera font_size=20 align=left valign=top color=#fff";
|
||||||
tag: "h1" "+ font_size=28";
|
tag: "h1" "+ font_size=28";
|
||||||
tag: "/h1" "- \n";
|
tag: "/h1" "- \n";
|
||||||
tag: "p" "+";
|
tag: "p" "+";
|
||||||
|
@ -47,6 +48,10 @@ styles {
|
||||||
tag: "em" "+ style=underline underline_color=#000A underline2_color=#0005";
|
tag: "em" "+ style=underline underline_color=#000A underline2_color=#0005";
|
||||||
tag: "/em" "-";
|
tag: "/em" "-";
|
||||||
tag: "br" "\n";
|
tag: "br" "\n";
|
||||||
|
tag: "c1" "+ color=#fff";
|
||||||
|
tag: "/c1" "-";
|
||||||
|
tag: "c2" "+ color=#f3f";
|
||||||
|
tag: "/c2" "-";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,12 +100,6 @@ part { \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
program { \
|
|
||||||
name: "button_"button_number"_signal_emit"; \
|
|
||||||
signal: "mouse,down,*"; \
|
|
||||||
source: "button_"button_number; \
|
|
||||||
action: SIGNAL_EMIT "gps_send" button_caption; \
|
|
||||||
} \
|
|
||||||
program { \
|
program { \
|
||||||
name: "button_"button_number"_animation"; \
|
name: "button_"button_number"_animation"; \
|
||||||
signal: "mouse,down,*"; \
|
signal: "mouse,down,*"; \
|
||||||
|
@ -126,6 +125,7 @@ collections {
|
||||||
part {
|
part {
|
||||||
name: "background";
|
name: "background";
|
||||||
type: IMAGE;
|
type: IMAGE;
|
||||||
|
mouse_events: 0;
|
||||||
description {
|
description {
|
||||||
state: "default" 0;
|
state: "default" 0;
|
||||||
rel1 { relative: 0 0; offset: 0 0; };
|
rel1 { relative: 0 0; offset: 0 0; };
|
||||||
|
@ -136,16 +136,15 @@ collections {
|
||||||
part {
|
part {
|
||||||
name: "headline";
|
name: "headline";
|
||||||
type: TEXT;
|
type: TEXT;
|
||||||
mouse_events: 0;
|
|
||||||
description {
|
description {
|
||||||
state: "default" 0;
|
state: "default" 0;
|
||||||
color_class: "button_inactive";
|
color_class: "button_inactive";
|
||||||
rel1 { relative: 0 0; }
|
rel1 { relative: 1/20 1/20; }
|
||||||
rel2 { relative: 1 1/7; }
|
rel2 { relative: 19/20 3/20; }
|
||||||
text {
|
text {
|
||||||
text: "gps status";
|
text: "gps status";
|
||||||
size: 18;
|
size: 20;
|
||||||
font: "Sans:style=Bold,Edje-Vera";
|
font: "VeraBd";
|
||||||
fit: 1 1;
|
fit: 1 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,17 +154,33 @@ collections {
|
||||||
type: TEXTBLOCK;
|
type: TEXTBLOCK;
|
||||||
mouse_events: 0;
|
mouse_events: 0;
|
||||||
description {
|
description {
|
||||||
|
state: "default" 0;
|
||||||
color_class: "button_inactive";
|
color_class: "button_inactive";
|
||||||
align: 0.5 0.5;
|
align: 0.5 0.5;
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
rel1 { relative: 0 3/20; }
|
rel1 { relative: 0 4/20; }
|
||||||
rel2 { relative: 1 10/20; }
|
rel2 { relative: 1 8/20; }
|
||||||
text {
|
text {
|
||||||
text: "gps";
|
text: "gps";
|
||||||
style: "textblock_style";
|
style: "textblock_style";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* end fix_caption */
|
}
|
||||||
|
part {
|
||||||
|
name: "gps_track";
|
||||||
|
type: TEXTBLOCK;
|
||||||
|
description {
|
||||||
|
color_class: "button_inactive";
|
||||||
|
align: 0.5 0.5;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 { relative: 0 9/20; }
|
||||||
|
rel2 { relative: 1 11/20; }
|
||||||
|
text {
|
||||||
|
text: "track log: off";
|
||||||
|
style: "textblock_style";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BUTTON(11, 1/3, 58/70, 2/3, 68/70, "on");
|
BUTTON(11, 1/3, 58/70, 2/3, 68/70, "on");
|
||||||
BUTTON(12, 0, 58/70 , 1/3, 68/70, "<");
|
BUTTON(12, 0, 58/70 , 1/3, 68/70, "<");
|
||||||
BUTTON(13, 2/3, 58/70, 3/3, 68/70, ">");
|
BUTTON(13, 2/3, 58/70, 3/3, 68/70, ">");
|
||||||
|
|
|
@ -1,12 +1,8 @@
|
||||||
// incall.edc
|
// gsm_status.edc
|
||||||
// this is a theme for epydial, a pyneo dialer
|
// this is a theme for epydial, a pyneo dialer and more
|
||||||
//
|
|
||||||
// TODO: make the font colors shinier :)
|
|
||||||
//
|
|
||||||
// Signal1:
|
|
||||||
|
|
||||||
data {
|
data {
|
||||||
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
item: "author" "thomasg [thomas (a) gstaedtner (.) net] , fgau (fgau@gau-net.de)";
|
||||||
item: "version" "prototype";
|
item: "version" "prototype";
|
||||||
item: "name" "epydial_blackwhite";
|
item: "name" "epydial_blackwhite";
|
||||||
}
|
}
|
||||||
|
@ -21,12 +17,6 @@ images {
|
||||||
}
|
}
|
||||||
|
|
||||||
color_classes {
|
color_classes {
|
||||||
color_class {
|
|
||||||
name: "black";
|
|
||||||
color: 0 0 0 255;
|
|
||||||
color2: 0 0 0 255;
|
|
||||||
color3: 0 0 0 255;
|
|
||||||
}
|
|
||||||
color_class {
|
color_class {
|
||||||
name: "unvisible";
|
name: "unvisible";
|
||||||
color: 0 0 0 0;
|
color: 0 0 0 0;
|
||||||
|
@ -105,9 +95,8 @@ part { \
|
||||||
text { \
|
text { \
|
||||||
text: button_caption; \
|
text: button_caption; \
|
||||||
size: 18; \
|
size: 18; \
|
||||||
font: "VeraBd"; \
|
font: "Sans:style=Bold,Edje-Vera"; \
|
||||||
fit: 1 1; \
|
fit: 1 1; \
|
||||||
align: alignx aligny; \
|
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
@ -269,6 +258,7 @@ collections {
|
||||||
part {
|
part {
|
||||||
name: "background";
|
name: "background";
|
||||||
type: IMAGE;
|
type: IMAGE;
|
||||||
|
mouse_events: 0;
|
||||||
description {
|
description {
|
||||||
state: "default" 0;
|
state: "default" 0;
|
||||||
rel1 { relative: 0 0; offset: 0 0; };
|
rel1 { relative: 0 0; offset: 0 0; };
|
||||||
|
@ -279,41 +269,70 @@ collections {
|
||||||
part {
|
part {
|
||||||
name: "headline";
|
name: "headline";
|
||||||
type: TEXT;
|
type: TEXT;
|
||||||
mouse_events: 0;
|
|
||||||
description {
|
description {
|
||||||
state: "default" 0;
|
state: "default" 0;
|
||||||
color_class: "button_inactive";
|
color_class: "button_inactive";
|
||||||
rel1 { relative: 0 0; }
|
rel1 { relative: 1/20 1/20; }
|
||||||
rel2 { relative: 1 1/7; }
|
rel2 { relative: 19/20 3/20; }
|
||||||
text {
|
text {
|
||||||
text: "settings";
|
text: "gsm status";
|
||||||
size: 10;
|
size: 20;
|
||||||
font: "VeraBd";
|
font: "VeraBd";
|
||||||
fit: 1 1;
|
fit: 1 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part {
|
part {
|
||||||
name: "pwr_caption";
|
name: "device_caption";
|
||||||
type: TEXTBLOCK;
|
type: TEXTBLOCK;
|
||||||
mouse_events: 0;
|
mouse_events: 0;
|
||||||
description {
|
description {
|
||||||
color_class: "button_inactive";
|
color_class: "button_inactive";
|
||||||
align: 0.5 0.5;
|
align: 0.5 0.5;
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
rel1 { relative: 0 3/20; }
|
rel1 { relative: 0 4/20; }
|
||||||
rel2 { relative: 1 10/20; }
|
rel2 { relative: 1 7/20; }
|
||||||
text {
|
text {
|
||||||
text: "";
|
text: "";
|
||||||
style: "textblock_style";
|
style: "textblock_style";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* end gsm_caption */
|
}
|
||||||
|
part {
|
||||||
|
name: "gsm_details_caption";
|
||||||
|
type: TEXTBLOCK;
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
color_class: "button_inactive";
|
||||||
|
align: 0.5 0.5;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 { relative: 0 8/20; }
|
||||||
|
rel2 { relative: 1 11/20; }
|
||||||
|
text {
|
||||||
|
text: "";
|
||||||
|
style: "textblock_style";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "scan_operator_caption";
|
||||||
|
type: TEXTBLOCK;
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
color_class: "button_inactive";
|
||||||
|
align: 0.5 0.5;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 { relative: 0 12/20; }
|
||||||
|
rel2 { relative: 1 16/20; }
|
||||||
|
text {
|
||||||
|
text: "scan operator:";
|
||||||
|
style: "textblock_style";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BUTTON(11, 1/3, 58/70, 2/3, 68/70, "on", button_inactive, 0.5, 0.5);
|
BUTTON(11, 1/3, 58/70, 2/3, 68/70, "on", button_inactive, 0.5, 0.5);
|
||||||
BUTTON(12, 0, 58/70 , 1/3, 68/70, "<", button_inactive, 0.5, 0.5);
|
BUTTON(12, 0, 58/70 , 1/3, 68/70, "<", button_inactive, 0.5, 0.5);
|
||||||
HBAR("beer level", button_inactive, 1, 0, 26/70, 1, 36/70, 10);
|
/*HBAR("brightness", button_inactive, 1, 0, 46/70, 1, 56/70, 10);*/
|
||||||
HBAR("brightness", button_inactive, 1, 0, 36/70, 1, 46/70, 10);
|
|
||||||
HBAR("volume", button_inactive, 1, 0, 46/70, 1, 56/70, 10);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +1,22 @@
|
||||||
// incall.edc
|
// hon_screen.edc
|
||||||
// this is a theme for epydial, a pyneo dialer
|
// this is a theme for epydial, a pyneo dialer
|
||||||
//
|
|
||||||
// TODO: make the font colors shinier :)
|
|
||||||
//
|
|
||||||
// Signal1:
|
|
||||||
|
|
||||||
data {
|
data {
|
||||||
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
item: "author" "thomasg [thomas (a) gstaedtner (.) net] , fgau (fgau@gau-net.de)";
|
||||||
item: "version" "prototype";
|
item: "version" "prototype";
|
||||||
item: "name" "epydial_blackwhite";
|
item: "name" "epydial_blackwhite";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fonts {
|
||||||
|
font: "Vera.ttf" "Vera";
|
||||||
|
font: "VeraBd.ttf" "VeraBd";
|
||||||
|
}
|
||||||
|
|
||||||
images {
|
images {
|
||||||
image: "bg.png" COMP;
|
image: "bg.png" COMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
color_classes {
|
color_classes {
|
||||||
color_class {
|
|
||||||
name: "black";
|
|
||||||
color: 0 0 0 255;
|
|
||||||
color2: 0 0 0 255;
|
|
||||||
color3: 0 0 0 255;
|
|
||||||
}
|
|
||||||
color_class {
|
color_class {
|
||||||
name: "unvisible";
|
name: "unvisible";
|
||||||
color: 0 0 0 0;
|
color: 0 0 0 0;
|
||||||
|
@ -34,12 +29,18 @@ color_classes {
|
||||||
color2: 128 128 128 255;
|
color2: 128 128 128 255;
|
||||||
color3: 128 128 128 255;;
|
color3: 128 128 128 255;;
|
||||||
}
|
}
|
||||||
|
color_class {
|
||||||
|
name: "scale";
|
||||||
|
color: 255 255 255 64;
|
||||||
|
color2: 0 0 0 255;
|
||||||
|
color3: 0 0 0 255;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
styles {
|
styles {
|
||||||
style {
|
style {
|
||||||
name: "textblock_style";
|
name: "textblock_style";
|
||||||
base: "font=sans.bold font_size=20 align=left valign=top color=#fff wrap=word";
|
base: "font=Vera font_size=20 align=left valign=top color=#fff";
|
||||||
tag: "h1" "+ font_size=28";
|
tag: "h1" "+ font_size=28";
|
||||||
tag: "/h1" "- \n";
|
tag: "/h1" "- \n";
|
||||||
tag: "p" "+";
|
tag: "p" "+";
|
||||||
|
@ -47,6 +48,10 @@ styles {
|
||||||
tag: "em" "+ style=underline underline_color=#000A underline2_color=#0005";
|
tag: "em" "+ style=underline underline_color=#000A underline2_color=#0005";
|
||||||
tag: "/em" "-";
|
tag: "/em" "-";
|
||||||
tag: "br" "\n";
|
tag: "br" "\n";
|
||||||
|
tag: "c1" "+ color=#fff";
|
||||||
|
tag: "/c1" "-";
|
||||||
|
tag: "c2" "+ color=#f3f";
|
||||||
|
tag: "/c2" "-";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,12 +144,12 @@ collections {
|
||||||
description {
|
description {
|
||||||
state: "default" 0;
|
state: "default" 0;
|
||||||
color_class: "button_inactive";
|
color_class: "button_inactive";
|
||||||
rel1 { relative: 0 0; }
|
rel1 { relative: 1/20 1/20; }
|
||||||
rel2 { relative: 1 1/7; }
|
rel2 { relative: 19/20 3/20; }
|
||||||
text {
|
text {
|
||||||
text: "hot or not";
|
text: "hot or not";
|
||||||
size: 18;
|
size: 20;
|
||||||
font: "Sans:style=Bold,Edje-Vera";
|
font: "VeraBd";
|
||||||
fit: 1 1;
|
fit: 1 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
215
epydial/data/themes/blackwhite/pix_screen.edc
Executable file
215
epydial/data/themes/blackwhite/pix_screen.edc
Executable file
|
@ -0,0 +1,215 @@
|
||||||
|
// pix_screen.edc
|
||||||
|
// this is a theme for epydial, a pyneo dialer
|
||||||
|
|
||||||
|
data {
|
||||||
|
item: "author" "thomasg [thomas (a) gstaedtner (.) net] , fgau (fgau@gau-net.de)";
|
||||||
|
item: "version" "prototype";
|
||||||
|
item: "name" "epydial_blackwhite";
|
||||||
|
}
|
||||||
|
|
||||||
|
fonts {
|
||||||
|
font: "Vera.ttf" "Vera";
|
||||||
|
font: "VeraBd.ttf" "VeraBd";
|
||||||
|
}
|
||||||
|
|
||||||
|
images {
|
||||||
|
image: "bg.png" COMP;
|
||||||
|
}
|
||||||
|
|
||||||
|
color_classes {
|
||||||
|
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;;
|
||||||
|
}
|
||||||
|
color_class {
|
||||||
|
name: "scale";
|
||||||
|
color: 255 255 255 64;
|
||||||
|
color2: 0 0 0 255;
|
||||||
|
color3: 0 0 0 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
styles {
|
||||||
|
style {
|
||||||
|
name: "textblock_style";
|
||||||
|
base: "font=Vera font_size=20 align=left valign=top color=#fff";
|
||||||
|
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";
|
||||||
|
tag: "c1" "+ color=#fff";
|
||||||
|
tag: "/c1" "-";
|
||||||
|
tag: "c2" "+ color=#f3f";
|
||||||
|
tag: "/c2" "-";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#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 "hon_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/pix/screen";
|
||||||
|
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;
|
||||||
|
description {
|
||||||
|
state: "default" 0;
|
||||||
|
color_class: "button_inactive";
|
||||||
|
rel1 { relative: 1/20 1/20; }
|
||||||
|
rel2 { relative: 19/20 3/20; }
|
||||||
|
text {
|
||||||
|
text: "pix viewer";
|
||||||
|
size: 20;
|
||||||
|
font: "VeraBd";
|
||||||
|
fit: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "filename";
|
||||||
|
type: TEXT;
|
||||||
|
description {
|
||||||
|
state: "default" 0;
|
||||||
|
color_class: "button_inactive";
|
||||||
|
rel1 { relative: 0 1/7;}
|
||||||
|
rel2 { relative: 1 1/5; }
|
||||||
|
text {
|
||||||
|
text: "filename";
|
||||||
|
size: 10;
|
||||||
|
font: "Sans:style=Bold,Edje-Vera";
|
||||||
|
fit: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "rev";
|
||||||
|
type: RECT;
|
||||||
|
description {
|
||||||
|
color: 0 0 0 0;
|
||||||
|
state: "default" 0;
|
||||||
|
rel1 { relative: 0 0; }
|
||||||
|
rel2 { relative: 1/2 57/70; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "pre";
|
||||||
|
type: RECT;
|
||||||
|
description {
|
||||||
|
color: 0 0 0 0;
|
||||||
|
state: "default" 0;
|
||||||
|
rel1 { relative: 1/2 0; }
|
||||||
|
rel2 { relative: 1 57/70; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "clipper";
|
||||||
|
type: RECT;
|
||||||
|
description {
|
||||||
|
rel1 { relative: 1/2 1/2; offset: -180 -180; }
|
||||||
|
rel2 { relative: 1/2 1/2; offset: 180 180; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "icon";
|
||||||
|
type: SWALLOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "clipper";
|
||||||
|
description {
|
||||||
|
/*fixed: 1 1;*/
|
||||||
|
rel1 { relative: 1/2 1/2; offset: -180 -180; }
|
||||||
|
rel2 { relative: 1/2 1/2; offset: 180 180; }
|
||||||
|
}
|
||||||
|
} /*end icon swallow */
|
||||||
|
BUTTON(10, 0, 58/70 , 1/3, 68/70, "<");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -62,8 +62,8 @@ class DialerScreen(EdjeGroup):
|
||||||
self.part_text_set("signalq_text", "%s dBm /"%str(rssi))
|
self.part_text_set("signalq_text", "%s dBm /"%str(rssi))
|
||||||
|
|
||||||
def display_time(self):
|
def display_time(self):
|
||||||
self.part_text_set("time_text", datetime.now().strftime('%H:%M'));
|
self.part_text_set("time_text", datetime.now().strftime('%H:%M'))
|
||||||
return True;
|
return True
|
||||||
|
|
||||||
|
|
||||||
@edje.decorators.signal_callback("dialer_send", "*")
|
@edje.decorators.signal_callback("dialer_send", "*")
|
||||||
|
@ -114,7 +114,7 @@ class DialerScreen(EdjeGroup):
|
||||||
self.text = []
|
self.text = []
|
||||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
PyneoController.power_status_gsm()
|
PyneoController.power_status_gsm()
|
||||||
PyneoController.get_pwr_status()
|
PyneoController.get_device_status()
|
||||||
PyneoController.show_gsm_status_screen()
|
PyneoController.show_gsm_status_screen()
|
||||||
elif source == "dial" and ''.join(self.text) == "2":
|
elif source == "dial" and ''.join(self.text) == "2":
|
||||||
print '--- Gps Status'
|
print '--- Gps Status'
|
||||||
|
@ -127,11 +127,21 @@ class DialerScreen(EdjeGroup):
|
||||||
self.text =[]
|
self.text =[]
|
||||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
PyneoController.show_calc_screen()
|
PyneoController.show_calc_screen()
|
||||||
|
elif source == "dial" and ''.join(self.text) == "4":
|
||||||
|
print '--- Pix'
|
||||||
|
self.text =[]
|
||||||
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
|
PyneoController.show_pix_screen()
|
||||||
elif source == "dial" and ''.join(self.text) == "6":
|
elif source == "dial" and ''.join(self.text) == "6":
|
||||||
print '--- Hon Screen'
|
print '--- Hon Screen'
|
||||||
self.text = []
|
self.text = []
|
||||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
PyneoController.show_hon_screen()
|
PyneoController.show_hon_screen()
|
||||||
|
elif source == "dial" and ''.join(self.text) == "7":
|
||||||
|
print '--- Contacts Screen'
|
||||||
|
self.text = []
|
||||||
|
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||||
|
PyneoController.show_contacts_screen()
|
||||||
elif source == "dial":
|
elif source == "dial":
|
||||||
PyneoController.show_incall_screen('outgoing')
|
PyneoController.show_incall_screen('outgoing')
|
||||||
PyneoController.gsm_dial("".join(self.text))
|
PyneoController.gsm_dial("".join(self.text))
|
||||||
|
|
|
@ -17,6 +17,9 @@ APP_TITLE = "epydial"
|
||||||
WM_INFO = ("epydial", "epydial")
|
WM_INFO = ("epydial", "epydial")
|
||||||
|
|
||||||
EDJE_FILE_PATH = "data/themes/blackwhite/"
|
EDJE_FILE_PATH = "data/themes/blackwhite/"
|
||||||
|
PIX_FILE_PATH = "/media/card/hon/"
|
||||||
|
TRACK_FILE_PATH = "/media/card/track/"
|
||||||
|
DB_FILE_PATH = "data/db/my.sqlite"
|
||||||
|
|
||||||
DIALER_SCREEN_NAME = "pyneo/dialer/main"
|
DIALER_SCREEN_NAME = "pyneo/dialer/main"
|
||||||
INCALL_SCREEN_NAME = "pyneo/dialer/incall"
|
INCALL_SCREEN_NAME = "pyneo/dialer/incall"
|
||||||
|
@ -24,6 +27,8 @@ GSM_STATUS_SCREEN_NAME = "pyneo/gsm/status"
|
||||||
GPS_STATUS_SCREEN_NAME = "pyneo/gps/status"
|
GPS_STATUS_SCREEN_NAME = "pyneo/gps/status"
|
||||||
HON_SCREEN_NAME = "pyneo/hon/screen"
|
HON_SCREEN_NAME = "pyneo/hon/screen"
|
||||||
CALC_SCREEN_NAME = "pyneo/calc/screen"
|
CALC_SCREEN_NAME = "pyneo/calc/screen"
|
||||||
|
PIX_SCREEN_NAME = "pyneo/pix/screen"
|
||||||
|
CONTACTS_SCREEN_NAME = "pyneo/contacts/screen"
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from dbus import SystemBus
|
from dbus import SystemBus
|
||||||
|
@ -42,8 +47,9 @@ from pyneo.dbus_support import *
|
||||||
from pyneo.sys_support import pr_set_name
|
from pyneo.sys_support import pr_set_name
|
||||||
|
|
||||||
from ConfigParser import SafeConfigParser
|
from ConfigParser import SafeConfigParser
|
||||||
#import cairo
|
from sqlite3 import connect
|
||||||
|
|
||||||
|
#import cairo
|
||||||
|
|
||||||
class EdjeGroup(edje.Edje):
|
class EdjeGroup(edje.Edje):
|
||||||
def __init__(self, group_manager, group):
|
def __init__(self, group_manager, group):
|
||||||
|
@ -79,6 +85,7 @@ class PyneoController(object):
|
||||||
hon = None
|
hon = None
|
||||||
gsm_wireless = None
|
gsm_wireless = None
|
||||||
gsm_keyring = None
|
gsm_keyring = None
|
||||||
|
gsm_sms = None
|
||||||
hon_hotornot = None
|
hon_hotornot = None
|
||||||
|
|
||||||
gsm_wireless_status = None
|
gsm_wireless_status = None
|
||||||
|
@ -112,6 +119,7 @@ class PyneoController(object):
|
||||||
try:
|
try:
|
||||||
class_.gsm = object_by_url('dbus:///org/pyneo/GsmDevice')
|
class_.gsm = object_by_url('dbus:///org/pyneo/GsmDevice')
|
||||||
class_.gsm_wireless = object_by_url(class_.gsm.GetDevice('wireless'))
|
class_.gsm_wireless = object_by_url(class_.gsm.GetDevice('wireless'))
|
||||||
|
class_.gsm_sms = object_by_url(class_.gsm.GetDevice('shortmessage_storage'))
|
||||||
class_.pwr = object_by_url('dbus:///org/pyneo/Power')
|
class_.pwr = object_by_url('dbus:///org/pyneo/Power')
|
||||||
class_.gps = object_by_url('dbus:///org/pyneo/GpsLocation')
|
class_.gps = object_by_url('dbus:///org/pyneo/GpsLocation')
|
||||||
class_.hon = object_by_url('dbus:///org/pyneo/HotOrNot')
|
class_.hon = object_by_url('dbus:///org/pyneo/HotOrNot')
|
||||||
|
@ -133,21 +141,24 @@ 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)
|
||||||
class_.pwr.connect_to_signal("Status", class_.on_pwr_status, dbus_interface=DIN_POWERED)
|
class_.pwr.connect_to_signal("Status", class_.on_pwr_status, dbus_interface=DIN_POWERED)
|
||||||
|
class_.gsm_sms.connect_to_signal('New', class_.check_new_sms, dbus_interface=DIN_STORAGE)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_pwr_status(class_):
|
def get_pwr_status(class_):
|
||||||
status = class_.pwr.GetStatus(dbus_interface=DIN_POWERED)
|
status = class_.pwr.GetStatus(dbus_interface=DIN_POWERED)
|
||||||
class_.on_pwr_status(status)
|
class_.on_pwr_status(status)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_device_status(class_):
|
||||||
|
class_.notify_callbacks("device_status", class_.gsm.GetStatus(dbus_interface=DIN_POWERED))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def power_status_gsm(class_):
|
def power_status_gsm(class_):
|
||||||
class_.notify_callbacks("power_status_gsm", class_.gsm.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
class_.notify_callbacks("power_status_gsm", class_.gsm.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_hon(class_):
|
def get_hon(class_):
|
||||||
status = class_.hon_hotornot.GetHotOrNot(dbus_interface=DIN_HOTORNOT)
|
class_.notify_callbacks("get_hon", class_.hon_hotornot.GetHotOrNot(dbus_interface=DIN_HOTORNOT))
|
||||||
print '---get hon', status
|
|
||||||
class_.notify_callbacks("get_hon", status)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def vote_hon(class_, vote):
|
def vote_hon(class_, vote):
|
||||||
|
@ -205,33 +216,33 @@ class PyneoController(object):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def gsm_dial(class_, number):
|
def gsm_dial(class_, number):
|
||||||
class_.notify_callbacks("gsm_phone_call_start")
|
|
||||||
|
|
||||||
os.system('alsactl -f /usr/share/openmoko/scenarios/gsmhandset.state restore')
|
os.system('alsactl -f /usr/share/openmoko/scenarios/gsmhandset.state restore')
|
||||||
|
class_.notify_callbacks("gsm_phone_call_start")
|
||||||
name = class_.gsm_wireless.Initiate(number, dbus_interface=DIN_VOICE_CALL_INITIATOR, timeout=200)
|
name = class_.gsm_wireless.Initiate(number, dbus_interface=DIN_VOICE_CALL_INITIATOR, timeout=200)
|
||||||
call = object_by_url(name)
|
call = object_by_url(name)
|
||||||
|
|
||||||
# Initialize "active call" counter
|
|
||||||
class_._calls[call] = 1
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def gsm_hangup(class_):
|
def gsm_hangup(class_):
|
||||||
|
os.system('alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore')
|
||||||
|
class_.call_type = 'nix'
|
||||||
call = object_by_url('dbus:///org/pyneo/gsmdevice/Call/1')
|
call = object_by_url('dbus:///org/pyneo/gsmdevice/Call/1')
|
||||||
call.Hangup(dbus_interface=DIN_CALL)
|
call.Hangup(dbus_interface=DIN_CALL)
|
||||||
os.system('alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore')
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def gsm_accept(class_):
|
def gsm_accept(class_):
|
||||||
|
os.system('alsactl -f /usr/share/openmoko/scenarios/gsmhandset.state restore')
|
||||||
call = object_by_url('dbus:///org/pyneo/gsmdevice/Call/1')
|
call = object_by_url('dbus:///org/pyneo/gsmdevice/Call/1')
|
||||||
call.Accept(dbus_interface=DIN_CALL)
|
call.Accept(dbus_interface=DIN_CALL)
|
||||||
os.system('alsactl -f /usr/share/openmoko/scenarios/gsmhandset.state restore')
|
|
||||||
|
@classmethod
|
||||||
|
def gsm_details(class_):
|
||||||
|
class_.notify_callbacks("gsm_details", class_.gsm_wireless.GetStatus(dbus_interface=DIN_WIRELESS))
|
||||||
|
|
||||||
@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)
|
||||||
class_.gsm_net_status = status
|
class_.gsm_net_status = status
|
||||||
print "GSM NET Status: " + str(status)
|
print 'GSM NET Status: %s'%status
|
||||||
|
|
||||||
if status.has_key('stat'):
|
if status.has_key('stat'):
|
||||||
nw_status = status['stat']
|
nw_status = status['stat']
|
||||||
|
@ -240,6 +251,7 @@ class PyneoController(object):
|
||||||
class_.notify_callbacks("gsm_unregistered")
|
class_.notify_callbacks("gsm_unregistered")
|
||||||
elif nw_status in (1, 5):
|
elif nw_status in (1, 5):
|
||||||
class_.notify_callbacks("gsm_registered")
|
class_.notify_callbacks("gsm_registered")
|
||||||
|
class_.first_check_new_sms
|
||||||
elif nw_status == 2:
|
elif nw_status == 2:
|
||||||
class_.notify_callbacks("gsm_registering")
|
class_.notify_callbacks("gsm_registering")
|
||||||
elif nw_status == 3:
|
elif nw_status == 3:
|
||||||
|
@ -250,13 +262,14 @@ class PyneoController(object):
|
||||||
if status.has_key('phone_activity_status'):
|
if status.has_key('phone_activity_status'):
|
||||||
ph_status = status['phone_activity_status']
|
ph_status = status['phone_activity_status']
|
||||||
|
|
||||||
if ph_status == 0:
|
if class_.call_type != 'outgoing':
|
||||||
class_.notify_callbacks("gsm_phone_call_end")
|
if ph_status == 0:
|
||||||
os.system('alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore')
|
class_.notify_callbacks("gsm_phone_call_end")
|
||||||
if ph_status == 3:
|
os.system('alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore')
|
||||||
class_.notify_callbacks("gsm_phone_ringing")
|
if ph_status == 3:
|
||||||
if ph_status == 4:
|
class_.notify_callbacks("gsm_phone_ringing")
|
||||||
class_.notify_callbacks("gsm_phone_call_start")
|
if ph_status == 4:
|
||||||
|
class_.notify_callbacks("gsm_phone_call_start")
|
||||||
|
|
||||||
if status.has_key('rssi'):
|
if status.has_key('rssi'):
|
||||||
class_.notify_callbacks("gsm_signal_strength_change", status['rssi'])
|
class_.notify_callbacks("gsm_signal_strength_change", status['rssi'])
|
||||||
|
@ -267,6 +280,8 @@ class PyneoController(object):
|
||||||
if status.has_key('number'):
|
if status.has_key('number'):
|
||||||
class_.notify_callbacks("gsm_number_display", status['number'])
|
class_.notify_callbacks("gsm_number_display", status['number'])
|
||||||
|
|
||||||
|
class_.notify_callbacks("gsm_details", status)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def on_gsm_keyring_status(class_, status_map):
|
def on_gsm_keyring_status(class_, status_map):
|
||||||
status = dedbusmap(status_map)
|
status = dedbusmap(status_map)
|
||||||
|
@ -370,6 +385,10 @@ class PyneoController(object):
|
||||||
def show_calc_screen(class_):
|
def show_calc_screen(class_):
|
||||||
class_.notify_callbacks("show_calc_screen")
|
class_.notify_callbacks("show_calc_screen")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def show_pix_screen(class_):
|
||||||
|
class_.notify_callbacks("show_pix_screen")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def brightness_change(class_, up_down):
|
def brightness_change(class_, up_down):
|
||||||
if up_down == 'button_right_bg_brightness':
|
if up_down == 'button_right_bg_brightness':
|
||||||
|
@ -381,6 +400,50 @@ class PyneoController(object):
|
||||||
class_.pwr.SetBrightness(class_.brightness_value, dbus_interface=DIN_POWER)
|
class_.pwr.SetBrightness(class_.brightness_value, dbus_interface=DIN_POWER)
|
||||||
class_.notify_callbacks("brightness_change", class_.brightness_value)
|
class_.notify_callbacks("brightness_change", class_.brightness_value)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def scan_operator(class_):
|
||||||
|
class_.notify_callbacks("scan_operator", dedbusmap(class_.gsm_wireless.Scan(timeout=100.0, dbus_interface=DIN_WIRELESS, )))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def show_contacts_screen(class_):
|
||||||
|
class_.notify_callbacks("show_contacts_screen")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def check_new_sms(class_, newmap,):
|
||||||
|
def InsertSms(status, from_msisdn, time, text):
|
||||||
|
connection = connect(DB_FILE_PATH)
|
||||||
|
cursor = connection.cursor()
|
||||||
|
cursor.execute("INSERT INTO sms (status, from_msisdn, time, sms_text) VALUES ('" \
|
||||||
|
+ status + "', '" + from_msisdn + "', '" + time + "', '" + text + "')")
|
||||||
|
connection.commit()
|
||||||
|
|
||||||
|
res = dedbusmap(newmap)
|
||||||
|
for n in res:
|
||||||
|
sm = object_by_url(n)
|
||||||
|
content = dedbusmap(sm.GetContent())
|
||||||
|
InsertSms('REC UNREAD', content['from_msisdn'], content['time'], content['text'].encode('utf-8'))
|
||||||
|
print '--- NEW SMS:', content['from_msisdn'], content['time'], content['text'].encode('utf-8')
|
||||||
|
class_.gsm_sms.DeleteAll()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def first_check_new_sms(class_):
|
||||||
|
def InsertSms(status, from_msisdn, time, text):
|
||||||
|
connection = connect(DB_FILE_PATH)
|
||||||
|
cursor = connection.cursor()
|
||||||
|
cursor.execute("INSERT INTO sms (status, from_msisdn, time, sms_text) VALUES ('" \
|
||||||
|
+ status + "', '" + from_msisdn + "', '" + time + "', '" + text + "')")
|
||||||
|
connection.commit()
|
||||||
|
|
||||||
|
try:
|
||||||
|
res = class_.gsm_sms.ListAll()
|
||||||
|
for n in res:
|
||||||
|
sm = object_by_url(n)
|
||||||
|
content = dedbusmap(sm.GetContent())
|
||||||
|
InsertSms('REC UNREAD', content['from_msisdn'], content['time'], content['text'].encode('utf-8'))
|
||||||
|
except:
|
||||||
|
print '--- NULL new sms'
|
||||||
|
class_.gsm_sms.DeleteAll()
|
||||||
|
|
||||||
|
|
||||||
from dialer_screen import *
|
from dialer_screen import *
|
||||||
from incall_screen import *
|
from incall_screen import *
|
||||||
|
@ -388,6 +451,8 @@ from gsm_status_screen import *
|
||||||
from gps_status_screen import *
|
from gps_status_screen import *
|
||||||
from hon_screen import *
|
from hon_screen import *
|
||||||
from calc_screen import *
|
from calc_screen import *
|
||||||
|
from pix_screen import *
|
||||||
|
from contacts_screen import *
|
||||||
|
|
||||||
class Dialer(object):
|
class Dialer(object):
|
||||||
screens = None
|
screens = None
|
||||||
|
@ -410,6 +475,8 @@ class Dialer(object):
|
||||||
PyneoController.register_callback("show_dialer_screen", self.on_call_end)
|
PyneoController.register_callback("show_dialer_screen", self.on_call_end)
|
||||||
PyneoController.register_callback("show_hon_screen", self.on_hon_screen)
|
PyneoController.register_callback("show_hon_screen", self.on_hon_screen)
|
||||||
PyneoController.register_callback("show_calc_screen", self.on_calc_screen)
|
PyneoController.register_callback("show_calc_screen", self.on_calc_screen)
|
||||||
|
PyneoController.register_callback("show_pix_screen", self.on_pix_screen)
|
||||||
|
PyneoController.register_callback("show_contacts_screen", self.on_contacts_screen)
|
||||||
|
|
||||||
# Initialize the D-Bus interface to pyneo
|
# Initialize the D-Bus interface to pyneo
|
||||||
dbus_ml = e_dbus.DBusEcoreMainLoop()
|
dbus_ml = e_dbus.DBusEcoreMainLoop()
|
||||||
|
@ -468,6 +535,14 @@ class Dialer(object):
|
||||||
self.init_screen(CALC_SCREEN_NAME, CalcScreen(self))
|
self.init_screen(CALC_SCREEN_NAME, CalcScreen(self))
|
||||||
self.show_screen(CALC_SCREEN_NAME)
|
self.show_screen(CALC_SCREEN_NAME)
|
||||||
|
|
||||||
|
def on_pix_screen(self):
|
||||||
|
self.init_screen(PIX_SCREEN_NAME, PixScreen(self))
|
||||||
|
self.show_screen(PIX_SCREEN_NAME)
|
||||||
|
|
||||||
|
def on_contacts_screen(self):
|
||||||
|
self.init_screen(CONTACTS_SCREEN_NAME, ContactsScreen(self))
|
||||||
|
self.show_screen(CONTACTS_SCREEN_NAME)
|
||||||
|
|
||||||
|
|
||||||
class EvasCanvas(object):
|
class EvasCanvas(object):
|
||||||
def __init__(self, fullscreen, engine_name):
|
def __init__(self, fullscreen, engine_name):
|
||||||
|
|
|
@ -8,6 +8,11 @@ __license__ = "GPL3"
|
||||||
from epydial import *
|
from epydial import *
|
||||||
|
|
||||||
class GpsStatusScreen(EdjeGroup):
|
class GpsStatusScreen(EdjeGroup):
|
||||||
|
status_track = "off"
|
||||||
|
file_track = None
|
||||||
|
trackpoints = None
|
||||||
|
track_timer = None
|
||||||
|
|
||||||
def __init__(self, screen_manager):
|
def __init__(self, screen_manager):
|
||||||
EdjeGroup.__init__(self, screen_manager, GPS_STATUS_SCREEN_NAME)
|
EdjeGroup.__init__(self, screen_manager, GPS_STATUS_SCREEN_NAME)
|
||||||
|
|
||||||
|
@ -24,17 +29,50 @@ class GpsStatusScreen(EdjeGroup):
|
||||||
|
|
||||||
def on_gps_position_change(self, status):
|
def on_gps_position_change(self, status):
|
||||||
if status['fix'] == 3:
|
if status['fix'] == 3:
|
||||||
self.part_text_set("gps_caption", "fix: %s<br>long/lat: %s/%s<br>altitude: %s<br>kph/course: %s/%s<br>satellites: %s"%(status['fix'], status['longitude'], status['latitude'], status['altitude'], status['kph'], status['course'], status['satellites']))
|
self.part_text_set("gps_caption", \
|
||||||
|
"fix: %s<br>long/lat: %s/%s<br>altitude: %s<br>kph/course: %s/%s<br>satellites: %s" \
|
||||||
|
%(status['fix'], status['longitude'], status['latitude'], status['altitude'], status['kph'], status['course'], status['satellites']))
|
||||||
|
|
||||||
|
if self.status_track == "on" and status['latitude'] and status['longitude']:
|
||||||
|
self.trackpoints += 1
|
||||||
|
self.track_timer += 1
|
||||||
|
self.file_track.write('%s,%s,%s\n' %(self.trackpoints, status['latitude'], status['longitude']))
|
||||||
|
self.part_text_set("gps_track", "track log: on<br>trackpoints: %s" %self.trackpoints)
|
||||||
|
if self.track_timer == 60:
|
||||||
|
self.file_track.flush()
|
||||||
|
self.track_timer = 0
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.part_text_set("gps_caption", "fix: NIX FIX")
|
self.part_text_set("gps_caption", "fix: NIX FIX")
|
||||||
|
|
||||||
@edje.decorators.signal_callback("gps_send", "*")
|
def start_tracking(self):
|
||||||
|
self.status_track = "on"
|
||||||
|
self.part_text_set("gps_track", "track log: on")
|
||||||
|
|
||||||
|
if not os.path.exists(TRACK_FILE_PATH):
|
||||||
|
os.mkdir(TRACK_FILE_PATH)
|
||||||
|
self.file_track = open(TRACK_FILE_PATH + 'track.log', 'w')
|
||||||
|
self.trackpoints = self.track_timer = 0
|
||||||
|
|
||||||
|
def stop_tracking(self):
|
||||||
|
self.status_track = "off"
|
||||||
|
self.part_text_set("gps_track", "track log: off")
|
||||||
|
self.file_track.close()
|
||||||
|
self.trackpoints = self.track_timer = 0
|
||||||
|
|
||||||
|
@edje.decorators.signal_callback("mouse,up,1", "*")
|
||||||
def on_edje_signal_dialer_status_triggered(self, emission, source):
|
def on_edje_signal_dialer_status_triggered(self, emission, source):
|
||||||
status = self.part_text_get("button_11_caption")
|
status = self.part_text_get("button_11_caption")
|
||||||
if source == "<":
|
if source == "headline" and self.status_track == "off":
|
||||||
|
self.start_tracking()
|
||||||
|
elif source == "headline" and self.status_track == "on":
|
||||||
|
self.stop_tracking()
|
||||||
|
if source == "button_12":
|
||||||
PyneoController.show_dialer_screen()
|
PyneoController.show_dialer_screen()
|
||||||
if source == "on" and status == "on":
|
if source == "button_13":
|
||||||
|
pass #TODO pylgrim integration
|
||||||
|
if source == "button_11" and status == "on":
|
||||||
PyneoController.power_down_gps()
|
PyneoController.power_down_gps()
|
||||||
elif source == "on" and status == "off":
|
elif source == "button_11" and status == "off":
|
||||||
PyneoController.power_up_gps()
|
PyneoController.power_up_gps()
|
||||||
|
|
||||||
|
|
|
@ -13,17 +13,47 @@ class GsmStatusScreen(EdjeGroup):
|
||||||
|
|
||||||
def register_pyneo_callbacks(self):
|
def register_pyneo_callbacks(self):
|
||||||
PyneoController.register_callback("power_status_gsm", self.on_power_status_gsm)
|
PyneoController.register_callback("power_status_gsm", self.on_power_status_gsm)
|
||||||
PyneoController.register_callback("pwr_status_change", self.on_pwr_status_change)
|
PyneoController.register_callback("device_status", self.on_device_status)
|
||||||
|
PyneoController.register_callback("gsm_details", self.on_gsm_details)
|
||||||
|
PyneoController.register_callback("scan_operator", self.on_scan_operator)
|
||||||
PyneoController.register_callback("brightness_change", self.on_brightness_change)
|
PyneoController.register_callback("brightness_change", self.on_brightness_change)
|
||||||
|
|
||||||
def on_brightness_change(self, status):
|
def on_scan_operator(self, status):
|
||||||
if status == 10: bar = '| '
|
operator = 'scan operator:<br>'
|
||||||
else: bar = '|'
|
for n, v in status.items():
|
||||||
self.part_text_set("button_5_caption", status/10*bar)
|
operator += v['oper'] + '<br>'
|
||||||
self.part_text_set("top_description_Brightness", "Brightness %s"%status+"%")
|
print 'provider', n, ':', v['oper']
|
||||||
|
self.part_text_set("scan_operator_caption", operator)
|
||||||
|
|
||||||
def on_pwr_status_change(self, status):
|
def on_brightness_change(self, status):
|
||||||
self.part_text_set("pwr_caption", "battemp: %s<br>chgmode: %s<br>chgstate: %s<br>chgcur: %s<br>battvolt: %f"%(status['battemp'], status['chgmode'], status['chgstate'], status['chgcur'], status['battvolt']))
|
self.part_text_set("description_brightness", "brightness %s"%status+"%")
|
||||||
|
|
||||||
|
def on_device_status(self, status):
|
||||||
|
self.part_text_set("device_caption", \
|
||||||
|
"imei: %s<br>model: %s<br>revision: %s<br>manufacturer: %s" \
|
||||||
|
%(status['imei'], status['model'], status['revision'], status['manufacturer']))
|
||||||
|
|
||||||
|
def on_gsm_details(self, status):
|
||||||
|
global oper, lac, ci, rssi, mcc, cc, country
|
||||||
|
if status.has_key('oper'):
|
||||||
|
oper = status['oper']
|
||||||
|
if status.has_key('lac'):
|
||||||
|
lac = status['lac']
|
||||||
|
if status.has_key('ci'):
|
||||||
|
ci = status['ci']
|
||||||
|
if status.has_key('rssi'):
|
||||||
|
rssi = status['rssi']
|
||||||
|
if status.has_key('mcc'):
|
||||||
|
mcc = status['mcc']
|
||||||
|
connection = connect(DB_FILE_PATH)
|
||||||
|
cursor = connection.cursor()
|
||||||
|
cursor.execute("SELECT * FROM mcc WHERE mcc='" + str(mcc) + "'")
|
||||||
|
for row in cursor:
|
||||||
|
country = row[0]
|
||||||
|
cc = row[1]
|
||||||
|
self.part_text_set("gsm_details_caption", \
|
||||||
|
"operator: %s<br>lac/ci: %s/%s<br>rssi: %s<br>mcc/cc/country: %s/%s/%s" \
|
||||||
|
%(oper, lac, ci, rssi, mcc, cc, country))
|
||||||
|
|
||||||
def on_power_status_gsm(self, status):
|
def on_power_status_gsm(self, status):
|
||||||
if status: p_status = "on"
|
if status: p_status = "on"
|
||||||
|
@ -35,15 +65,16 @@ class GsmStatusScreen(EdjeGroup):
|
||||||
@edje.decorators.signal_callback("mouse,up,1", "*")
|
@edje.decorators.signal_callback("mouse,up,1", "*")
|
||||||
def on_edje_signal_dialer_status_triggered(self, emission, source):
|
def on_edje_signal_dialer_status_triggered(self, emission, source):
|
||||||
status = self.part_text_get("button_11_caption")
|
status = self.part_text_get("button_11_caption")
|
||||||
|
if source == "headline":
|
||||||
|
PyneoController.scan_operator()
|
||||||
if source == "button_12":
|
if source == "button_12":
|
||||||
PyneoController.show_dialer_screen()
|
PyneoController.show_dialer_screen()
|
||||||
elif source == "on" and status == "on":
|
elif source == "on" and status == "on":
|
||||||
PyneoController.power_down_gsm()
|
PyneoController.power_down_gsm()
|
||||||
elif source == "on" and status == "off":
|
elif source == "on" and status == "off":
|
||||||
PyneoController.power_up_gsm()
|
PyneoController.power_up_gsm()
|
||||||
elif source == "button_right_bg_brightness":
|
# elif source == "button_right_bg_brightness":
|
||||||
PyneoController.brightness_change(source)
|
# PyneoController.brightness_change(source)
|
||||||
elif source == "button_left_bg_brightness":
|
# elif source == "button_left_bg_brightness":
|
||||||
PyneoController.brightness_change(source)
|
# PyneoController.brightness_change(source)
|
||||||
print 'settings source: ', source
|
|
||||||
|
|
||||||
|
|
|
@ -15,14 +15,21 @@ class InCallScreen(EdjeGroup):
|
||||||
PyneoController.register_callback("gsm_number_display", self.on_gsm_number_display)
|
PyneoController.register_callback("gsm_number_display", self.on_gsm_number_display)
|
||||||
|
|
||||||
def on_gsm_number_display(self, number):
|
def on_gsm_number_display(self, number):
|
||||||
self.part_text_set("incall_number_text", number)
|
connection = connect(DB_FILE_PATH)
|
||||||
|
cursor = connection.cursor()
|
||||||
|
cursor.execute("SELECT * FROM contacts WHERE mobil LIKE '%" + str(number) + "' OR home LIKE '%" + str(number) + "' OR work LIKE '%" + str(number) + "'")
|
||||||
|
for row in cursor:
|
||||||
|
CallerNamemap = row[0], row[1], row[2], row[3], row[4]
|
||||||
|
|
||||||
|
if CallerNamemap[1] and CallerNamemap[0]:
|
||||||
|
self.part_text_set("incall_number_text", "%s"% (CallerNamemap[1] + ', ' + CallerNamemap[0]))
|
||||||
|
else:
|
||||||
|
self.part_text_set("incall_number_text", "unbekannt")
|
||||||
|
|
||||||
@edje.decorators.signal_callback("dialer_incall_send", "*")
|
@edje.decorators.signal_callback("dialer_incall_send", "*")
|
||||||
def on_edje_signal_dialer_incall_triggered(self, emission, source):
|
def on_edje_signal_dialer_incall_triggered(self, emission, source):
|
||||||
if source == "Hangup Call":
|
if source == "Hangup Call":
|
||||||
print source
|
|
||||||
PyneoController.gsm_hangup()
|
PyneoController.gsm_hangup()
|
||||||
if source == "Accept Call":
|
if source == "Accept Call":
|
||||||
print source
|
|
||||||
PyneoController.gsm_accept()
|
PyneoController.gsm_accept()
|
||||||
|
print source
|
||||||
|
|
Loading…
Reference in a new issue