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
|
||||
fi
|
||||
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:
|
||||
|
||||
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: "name" "epydial_blackwhite";
|
||||
}
|
||||
|
@ -179,7 +179,7 @@ collections {
|
|||
}
|
||||
}
|
||||
|
||||
parts {
|
||||
parts {
|
||||
part {
|
||||
name: "background";
|
||||
type: IMAGE;
|
||||
|
@ -191,45 +191,41 @@ collections {
|
|||
image { normal: "bg.png"; }
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "bg_calc";
|
||||
type: IMAGE;
|
||||
mouse_events: 1;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
aspect: 0.9 0.9;
|
||||
aspect_preference: BOTH;
|
||||
image {
|
||||
normal: "bg_calc.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
part {
|
||||
name: "display";
|
||||
type: TEXT;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 68 72 63 200;
|
||||
rel1 {
|
||||
relative: 0.07 0.09;
|
||||
to: "bg_calc";
|
||||
}
|
||||
rel2 {
|
||||
relative: 0.93 0.22;
|
||||
to: "bg_calc";
|
||||
}
|
||||
text{
|
||||
font: "vera";
|
||||
size: 20;
|
||||
fit: 0 1;
|
||||
align: 1 0.5;
|
||||
text: "012345";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "bg_calc";
|
||||
type: IMAGE;
|
||||
mouse_events: 1;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
aspect: 0.9 0.9;
|
||||
aspect_preference: BOTH;
|
||||
image { normal: "bg_calc.png"; }
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "display";
|
||||
type: TEXT;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 68 72 63 200;
|
||||
rel1 {
|
||||
relative: 0.07 0.09;
|
||||
to: "bg_calc";
|
||||
}
|
||||
rel2 {
|
||||
relative: 0.93 0.22;
|
||||
to: "bg_calc";
|
||||
}
|
||||
text {
|
||||
font: "vera";
|
||||
size: 20;
|
||||
fit: 0 1;
|
||||
align: 1 0.5;
|
||||
text: "012345";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
part {
|
||||
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
|
||||
// this is a theme for epydial, a pyneo dialer
|
||||
//
|
||||
// TODO: make the font colors shinier :)
|
||||
//
|
||||
// Signal1:
|
||||
// gps_status.edc
|
||||
// this is a theme for epydial, a pyneo dialer and more
|
||||
|
||||
data {
|
||||
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
||||
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: "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;
|
||||
|
@ -34,12 +29,18 @@ color_classes {
|
|||
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=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" "- \n";
|
||||
tag: "p" "+";
|
||||
|
@ -47,6 +48,10 @@ styles {
|
|||
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" "-";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 { \
|
||||
name: "button_"button_number"_animation"; \
|
||||
signal: "mouse,down,*"; \
|
||||
|
@ -126,6 +125,7 @@ collections {
|
|||
part {
|
||||
name: "background";
|
||||
type: IMAGE;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0;
|
||||
rel1 { relative: 0 0; offset: 0 0; };
|
||||
|
@ -136,16 +136,15 @@ collections {
|
|||
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; }
|
||||
rel1 { relative: 1/20 1/20; }
|
||||
rel2 { relative: 19/20 3/20; }
|
||||
text {
|
||||
text: "gps status";
|
||||
size: 18;
|
||||
font: "Sans:style=Bold,Edje-Vera";
|
||||
size: 20;
|
||||
font: "VeraBd";
|
||||
fit: 1 1;
|
||||
}
|
||||
}
|
||||
|
@ -155,17 +154,33 @@ collections {
|
|||
type: TEXTBLOCK;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0;
|
||||
color_class: "button_inactive";
|
||||
align: 0.5 0.5;
|
||||
fixed: 1 1;
|
||||
rel1 { relative: 0 3/20; }
|
||||
rel2 { relative: 1 10/20; }
|
||||
rel1 { relative: 0 4/20; }
|
||||
rel2 { relative: 1 8/20; }
|
||||
text {
|
||||
text: "gps";
|
||||
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(12, 0, 58/70 , 1/3, 68/70, "<");
|
||||
BUTTON(13, 2/3, 58/70, 3/3, 68/70, ">");
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
// incall.edc
|
||||
// this is a theme for epydial, a pyneo dialer
|
||||
//
|
||||
// TODO: make the font colors shinier :)
|
||||
//
|
||||
// Signal1:
|
||||
// gsm_status.edc
|
||||
// this is a theme for epydial, a pyneo dialer and more
|
||||
|
||||
data {
|
||||
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
||||
item: "author" "thomasg [thomas (a) gstaedtner (.) net] , fgau (fgau@gau-net.de)";
|
||||
item: "version" "prototype";
|
||||
item: "name" "epydial_blackwhite";
|
||||
}
|
||||
|
@ -21,12 +17,6 @@ images {
|
|||
}
|
||||
|
||||
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;
|
||||
|
@ -105,9 +95,8 @@ part { \
|
|||
text { \
|
||||
text: button_caption; \
|
||||
size: 18; \
|
||||
font: "VeraBd"; \
|
||||
font: "Sans:style=Bold,Edje-Vera"; \
|
||||
fit: 1 1; \
|
||||
align: alignx aligny; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
|
@ -269,6 +258,7 @@ collections {
|
|||
part {
|
||||
name: "background";
|
||||
type: IMAGE;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0;
|
||||
rel1 { relative: 0 0; offset: 0 0; };
|
||||
|
@ -279,41 +269,70 @@ collections {
|
|||
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; }
|
||||
rel1 { relative: 1/20 1/20; }
|
||||
rel2 { relative: 19/20 3/20; }
|
||||
text {
|
||||
text: "settings";
|
||||
size: 10;
|
||||
text: "gsm status";
|
||||
size: 20;
|
||||
font: "VeraBd";
|
||||
fit: 1 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "pwr_caption";
|
||||
name: "device_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; }
|
||||
rel1 { relative: 0 4/20; }
|
||||
rel2 { relative: 1 7/20; }
|
||||
text {
|
||||
text: "";
|
||||
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(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, 36/70, 1, 46/70, 10);
|
||||
HBAR("volume", button_inactive, 1, 0, 46/70, 1, 56/70, 10);
|
||||
/*HBAR("brightness", 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
|
||||
//
|
||||
// TODO: make the font colors shinier :)
|
||||
//
|
||||
// Signal1:
|
||||
|
||||
data {
|
||||
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
||||
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: "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;
|
||||
|
@ -34,12 +29,18 @@ color_classes {
|
|||
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=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" "- \n";
|
||||
tag: "p" "+";
|
||||
|
@ -47,6 +48,10 @@ styles {
|
|||
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" "-";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -139,12 +144,12 @@ collections {
|
|||
description {
|
||||
state: "default" 0;
|
||||
color_class: "button_inactive";
|
||||
rel1 { relative: 0 0; }
|
||||
rel2 { relative: 1 1/7; }
|
||||
rel1 { relative: 1/20 1/20; }
|
||||
rel2 { relative: 19/20 3/20; }
|
||||
text {
|
||||
text: "hot or not";
|
||||
size: 18;
|
||||
font: "Sans:style=Bold,Edje-Vera";
|
||||
size: 20;
|
||||
font: "VeraBd";
|
||||
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))
|
||||
|
||||
def display_time(self):
|
||||
self.part_text_set("time_text", datetime.now().strftime('%H:%M'));
|
||||
return True;
|
||||
self.part_text_set("time_text", datetime.now().strftime('%H:%M'))
|
||||
return True
|
||||
|
||||
|
||||
@edje.decorators.signal_callback("dialer_send", "*")
|
||||
|
@ -114,7 +114,7 @@ class DialerScreen(EdjeGroup):
|
|||
self.text = []
|
||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||
PyneoController.power_status_gsm()
|
||||
PyneoController.get_pwr_status()
|
||||
PyneoController.get_device_status()
|
||||
PyneoController.show_gsm_status_screen()
|
||||
elif source == "dial" and ''.join(self.text) == "2":
|
||||
print '--- Gps Status'
|
||||
|
@ -127,11 +127,21 @@ class DialerScreen(EdjeGroup):
|
|||
self.text =[]
|
||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||
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":
|
||||
print '--- Hon Screen'
|
||||
self.text = []
|
||||
self.part_text_set("numberdisplay_text", "".join(self.text))
|
||||
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":
|
||||
PyneoController.show_incall_screen('outgoing')
|
||||
PyneoController.gsm_dial("".join(self.text))
|
||||
|
|
|
@ -17,6 +17,9 @@ APP_TITLE = "epydial"
|
|||
WM_INFO = ("epydial", "epydial")
|
||||
|
||||
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"
|
||||
INCALL_SCREEN_NAME = "pyneo/dialer/incall"
|
||||
|
@ -24,6 +27,8 @@ GSM_STATUS_SCREEN_NAME = "pyneo/gsm/status"
|
|||
GPS_STATUS_SCREEN_NAME = "pyneo/gps/status"
|
||||
HON_SCREEN_NAME = "pyneo/hon/screen"
|
||||
CALC_SCREEN_NAME = "pyneo/calc/screen"
|
||||
PIX_SCREEN_NAME = "pyneo/pix/screen"
|
||||
CONTACTS_SCREEN_NAME = "pyneo/contacts/screen"
|
||||
|
||||
from datetime import datetime
|
||||
from dbus import SystemBus
|
||||
|
@ -42,8 +47,9 @@ from pyneo.dbus_support import *
|
|||
from pyneo.sys_support import pr_set_name
|
||||
|
||||
from ConfigParser import SafeConfigParser
|
||||
#import cairo
|
||||
from sqlite3 import connect
|
||||
|
||||
#import cairo
|
||||
|
||||
class EdjeGroup(edje.Edje):
|
||||
def __init__(self, group_manager, group):
|
||||
|
@ -79,6 +85,7 @@ class PyneoController(object):
|
|||
hon = None
|
||||
gsm_wireless = None
|
||||
gsm_keyring = None
|
||||
gsm_sms = None
|
||||
hon_hotornot = None
|
||||
|
||||
gsm_wireless_status = None
|
||||
|
@ -112,6 +119,7 @@ class PyneoController(object):
|
|||
try:
|
||||
class_.gsm = object_by_url('dbus:///org/pyneo/GsmDevice')
|
||||
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_.gps = object_by_url('dbus:///org/pyneo/GpsLocation')
|
||||
class_.hon = object_by_url('dbus:///org/pyneo/HotOrNot')
|
||||
|
@ -133,21 +141,24 @@ class PyneoController(object):
|
|||
# Register our own D-Bus callbacks
|
||||
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_.gsm_sms.connect_to_signal('New', class_.check_new_sms, dbus_interface=DIN_STORAGE)
|
||||
|
||||
@classmethod
|
||||
def get_pwr_status(class_):
|
||||
status = class_.pwr.GetStatus(dbus_interface=DIN_POWERED)
|
||||
class_.on_pwr_status(status)
|
||||
|
||||
@classmethod
|
||||
def get_device_status(class_):
|
||||
class_.notify_callbacks("device_status", class_.gsm.GetStatus(dbus_interface=DIN_POWERED))
|
||||
|
||||
@classmethod
|
||||
def power_status_gsm(class_):
|
||||
class_.notify_callbacks("power_status_gsm", class_.gsm.GetPower(APP_TITLE, dbus_interface=DIN_POWERED))
|
||||
|
||||
@classmethod
|
||||
def get_hon(class_):
|
||||
status = class_.hon_hotornot.GetHotOrNot(dbus_interface=DIN_HOTORNOT)
|
||||
print '---get hon', status
|
||||
class_.notify_callbacks("get_hon", status)
|
||||
class_.notify_callbacks("get_hon", class_.hon_hotornot.GetHotOrNot(dbus_interface=DIN_HOTORNOT))
|
||||
|
||||
@classmethod
|
||||
def vote_hon(class_, vote):
|
||||
|
@ -205,33 +216,33 @@ class PyneoController(object):
|
|||
|
||||
@classmethod
|
||||
def gsm_dial(class_, number):
|
||||
class_.notify_callbacks("gsm_phone_call_start")
|
||||
|
||||
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)
|
||||
call = object_by_url(name)
|
||||
|
||||
# Initialize "active call" counter
|
||||
class_._calls[call] = 1
|
||||
|
||||
@classmethod
|
||||
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.Hangup(dbus_interface=DIN_CALL)
|
||||
os.system('alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore')
|
||||
|
||||
@classmethod
|
||||
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.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
|
||||
def on_gsm_wireless_status(class_, status_map):
|
||||
status = dedbusmap(status_map)
|
||||
class_.gsm_net_status = status
|
||||
print "GSM NET Status: " + str(status)
|
||||
print 'GSM NET Status: %s'%status
|
||||
|
||||
if status.has_key('stat'):
|
||||
nw_status = status['stat']
|
||||
|
@ -240,6 +251,7 @@ class PyneoController(object):
|
|||
class_.notify_callbacks("gsm_unregistered")
|
||||
elif nw_status in (1, 5):
|
||||
class_.notify_callbacks("gsm_registered")
|
||||
class_.first_check_new_sms
|
||||
elif nw_status == 2:
|
||||
class_.notify_callbacks("gsm_registering")
|
||||
elif nw_status == 3:
|
||||
|
@ -249,14 +261,15 @@ class PyneoController(object):
|
|||
|
||||
if status.has_key('phone_activity_status'):
|
||||
ph_status = status['phone_activity_status']
|
||||
|
||||
if ph_status == 0:
|
||||
class_.notify_callbacks("gsm_phone_call_end")
|
||||
os.system('alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore')
|
||||
if ph_status == 3:
|
||||
class_.notify_callbacks("gsm_phone_ringing")
|
||||
if ph_status == 4:
|
||||
class_.notify_callbacks("gsm_phone_call_start")
|
||||
|
||||
if class_.call_type != 'outgoing':
|
||||
if ph_status == 0:
|
||||
class_.notify_callbacks("gsm_phone_call_end")
|
||||
os.system('alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore')
|
||||
if ph_status == 3:
|
||||
class_.notify_callbacks("gsm_phone_ringing")
|
||||
if ph_status == 4:
|
||||
class_.notify_callbacks("gsm_phone_call_start")
|
||||
|
||||
if status.has_key('rssi'):
|
||||
class_.notify_callbacks("gsm_signal_strength_change", status['rssi'])
|
||||
|
@ -267,6 +280,8 @@ class PyneoController(object):
|
|||
if status.has_key('number'):
|
||||
class_.notify_callbacks("gsm_number_display", status['number'])
|
||||
|
||||
class_.notify_callbacks("gsm_details", status)
|
||||
|
||||
@classmethod
|
||||
def on_gsm_keyring_status(class_, status_map):
|
||||
status = dedbusmap(status_map)
|
||||
|
@ -370,6 +385,10 @@ class PyneoController(object):
|
|||
def show_calc_screen(class_):
|
||||
class_.notify_callbacks("show_calc_screen")
|
||||
|
||||
@classmethod
|
||||
def show_pix_screen(class_):
|
||||
class_.notify_callbacks("show_pix_screen")
|
||||
|
||||
@classmethod
|
||||
def brightness_change(class_, up_down):
|
||||
if up_down == 'button_right_bg_brightness':
|
||||
|
@ -381,13 +400,59 @@ class PyneoController(object):
|
|||
class_.pwr.SetBrightness(class_.brightness_value, dbus_interface=DIN_POWER)
|
||||
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 incall_screen import *
|
||||
from gsm_status_screen import *
|
||||
from gps_status_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):
|
||||
screens = None
|
||||
|
@ -410,7 +475,9 @@ class Dialer(object):
|
|||
PyneoController.register_callback("show_dialer_screen", self.on_call_end)
|
||||
PyneoController.register_callback("show_hon_screen", self.on_hon_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
|
||||
dbus_ml = e_dbus.DBusEcoreMainLoop()
|
||||
self.system_bus = SystemBus(mainloop=dbus_ml)
|
||||
|
@ -468,6 +535,14 @@ class Dialer(object):
|
|||
self.init_screen(CALC_SCREEN_NAME, CalcScreen(self))
|
||||
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):
|
||||
def __init__(self, fullscreen, engine_name):
|
||||
|
|
|
@ -8,6 +8,11 @@ __license__ = "GPL3"
|
|||
from epydial import *
|
||||
|
||||
class GpsStatusScreen(EdjeGroup):
|
||||
status_track = "off"
|
||||
file_track = None
|
||||
trackpoints = None
|
||||
track_timer = None
|
||||
|
||||
def __init__(self, screen_manager):
|
||||
EdjeGroup.__init__(self, screen_manager, GPS_STATUS_SCREEN_NAME)
|
||||
|
||||
|
@ -24,17 +29,50 @@ class GpsStatusScreen(EdjeGroup):
|
|||
|
||||
def on_gps_position_change(self, status):
|
||||
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:
|
||||
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):
|
||||
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()
|
||||
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()
|
||||
elif source == "on" and status == "off":
|
||||
elif source == "button_11" and status == "off":
|
||||
PyneoController.power_up_gps()
|
||||
|
||||
|
|
|
@ -13,17 +13,47 @@ class GsmStatusScreen(EdjeGroup):
|
|||
|
||||
def register_pyneo_callbacks(self):
|
||||
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)
|
||||
|
||||
def on_brightness_change(self, status):
|
||||
if status == 10: bar = '| '
|
||||
else: bar = '|'
|
||||
self.part_text_set("button_5_caption", status/10*bar)
|
||||
self.part_text_set("top_description_Brightness", "Brightness %s"%status+"%")
|
||||
def on_scan_operator(self, status):
|
||||
operator = 'scan operator:<br>'
|
||||
for n, v in status.items():
|
||||
operator += v['oper'] + '<br>'
|
||||
print 'provider', n, ':', v['oper']
|
||||
self.part_text_set("scan_operator_caption", operator)
|
||||
|
||||
def on_pwr_status_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']))
|
||||
def on_brightness_change(self, status):
|
||||
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):
|
||||
if status: p_status = "on"
|
||||
|
@ -35,15 +65,16 @@ class GsmStatusScreen(EdjeGroup):
|
|||
@edje.decorators.signal_callback("mouse,up,1", "*")
|
||||
def on_edje_signal_dialer_status_triggered(self, emission, source):
|
||||
status = self.part_text_get("button_11_caption")
|
||||
if source == "headline":
|
||||
PyneoController.scan_operator()
|
||||
if source == "button_12":
|
||||
PyneoController.show_dialer_screen()
|
||||
elif source == "on" and status == "on":
|
||||
PyneoController.power_down_gsm()
|
||||
elif source == "on" and status == "off":
|
||||
PyneoController.power_up_gsm()
|
||||
elif source == "button_right_bg_brightness":
|
||||
PyneoController.brightness_change(source)
|
||||
elif source == "button_left_bg_brightness":
|
||||
PyneoController.brightness_change(source)
|
||||
print 'settings source: ', source
|
||||
# elif source == "button_right_bg_brightness":
|
||||
# PyneoController.brightness_change(source)
|
||||
# elif source == "button_left_bg_brightness":
|
||||
# PyneoController.brightness_change(source)
|
||||
|
||||
|
|
|
@ -15,14 +15,21 @@ class InCallScreen(EdjeGroup):
|
|||
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)
|
||||
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", "*")
|
||||
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
|
||||
PyneoController.gsm_accept()
|
||||
|
||||
print source
|
||||
|
|
Loading…
Reference in a new issue