[pkg-fso-commits] [SCM] libframeworkd-phonegui branch, upstream, updated. 640da47bfcff755388d0fb8f443eb34e0dea3c72
quickdev
niklas.coding at gmail.com
Sat Dec 27 20:50:11 UTC 2008
The following commit has been merged in the upstream branch:
commit 5fdcfc5026160ac2fc96911e5daae4e7ef999c8a
Author: quickdev <niklas.coding at gmail.com>
Date: Tue Dec 23 13:47:32 2008 +0100
Added a basic user interface for USSD.
diff --git a/libframeworkd-phonegui-efl/data/Makefile.am b/libframeworkd-phonegui-efl/data/Makefile.am
index cb91f18..4dcb637 100644
--- a/libframeworkd-phonegui-efl/data/Makefile.am
+++ b/libframeworkd-phonegui-efl/data/Makefile.am
@@ -1,9 +1,9 @@
MAINTAINERCLEANFILES = Makefile.in
filesdir = $(datadir)/libframeworkd-phonegui-efl/
-files_DATA = sim-auth.edj dialer.edj messages.edj contacts.edj incoming-message.edj keypad.edj call.edj dialog.edj
+files_DATA = sim-auth.edj dialer.edj messages.edj contacts.edj incoming-message.edj keypad.edj call.edj dialog.edj ussd.edj
-EXTRA_DIST = sim-auth.edc dialer.edc messages.edc contacts.edc incoming-message.edc keypad.edc call.edc dialog.edc
+EXTRA_DIST = sim-auth.edc dialer.edc messages.edc contacts.edc incoming-message.edc keypad.edc call.edc dialog.edc ussd.edc
clean-local:
rm -f *.edj
@@ -32,3 +32,6 @@ call.edj:
dialog.edj:
@edje_cc@ dialog.edc
+ussd.edj:
+ @edje_cc@ ussd.edc
+
diff --git a/libframeworkd-phonegui-efl/data/ussd.edc b/libframeworkd-phonegui-efl/data/ussd.edc
new file mode 100644
index 0000000..42bb98e
--- /dev/null
+++ b/libframeworkd-phonegui-efl/data/ussd.edc
@@ -0,0 +1,72 @@
+collections {
+ group {
+ name, "ussd";
+ parts {
+
+ part {
+ name, "mode";
+ type, TEXT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 255;
+ rel1 {
+ relative, 0.0 0.0;
+ offset, 0 0;
+ }
+ rel2 {
+ relative, 1.0 0.15;
+ offset, 0 0;
+ }
+ text {
+ text, "";
+ font, "redensek";
+ size, 25;
+ align, 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name, "message";
+ type, TEXT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 255;
+ rel1 {
+ relative, 0.0 0.15;
+ offset, 0 0;
+ }
+ rel2 {
+ relative, 1.0 0.85;
+ offset, 0 0;
+ }
+ text {
+ text, "";
+ font, "redensek";
+ size, 20;
+ align, 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name, "button_close";
+ type, SWALLOW;
+ mouse_events, 1;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.0 0.85;
+ }
+ rel2 {
+ relative, 1.0 1.0;
+ }
+ }
+ }
+
+ }
+ }
+}
+
diff --git a/libframeworkd-phonegui-efl/src/Makefile.am b/libframeworkd-phonegui-efl/src/Makefile.am
index 9d1b634..9db3864 100644
--- a/libframeworkd-phonegui-efl/src/Makefile.am
+++ b/libframeworkd-phonegui-efl/src/Makefile.am
@@ -17,6 +17,7 @@ libframeworkd_phonegui_efl_la_SOURCES = \
phonegui-sim-auth.h phonegui-sim-auth.c \
phonegui-call.h phonegui-call.c \
phonegui-contacts.h phonegui-contacts.c \
+ phonegui-ussd.h phonegui-ussd.c \
widget/etk_tree_model_edje.h widget/etk_tree_model_edje.c \
widget/elm_keypad.h widget/elm_keypad.c \
widget/elm_my_contactlist.h widget/elm_my_contactlist.c \
@@ -39,5 +40,6 @@ libframeworkd_phonegui_efl_la_SOURCES = \
view/call-common.h view/call-common.c \
view/call-incoming-view.h view/call-incoming-view.c \
view/call-active-view.h view/call-active-view.c \
- view/sim-auth-input-view.h view/sim-auth-input-view.c
+ view/sim-auth-input-view.h view/sim-auth-input-view.c \
+ view/ussd-view.h view/ussd-view.c
diff --git a/libframeworkd-phonegui-efl/src/phonegui-ussd.c b/libframeworkd-phonegui-efl/src/phonegui-ussd.c
new file mode 100644
index 0000000..bd62470
--- /dev/null
+++ b/libframeworkd-phonegui-efl/src/phonegui-ussd.c
@@ -0,0 +1,47 @@
+#include "phonegui-ussd.h"
+#include <glib.h>
+#include "window.h"
+#include "async.h"
+#include "views.h"
+
+static struct Window *win = NULL;
+
+static void _show(GHashTable *options);
+static void _hide(struct Window *win);
+
+
+void phonegui_ussd_show(int mode, const char *message) {
+ g_debug("phonegui_ussd_show(mode=%d, message=%s)", mode, message);
+ if(win == NULL) {
+ win = window_new("Service Data");
+
+ GHashTable *options = g_hash_table_new(g_str_hash, g_str_equal);
+ g_hash_table_insert(options, "win", win);
+ g_hash_table_insert(options, "mode", mode);
+ g_hash_table_insert(options, "message", message);
+ async_trigger(_show, options);
+ }
+}
+
+void phonegui_ussd_hide() {
+ g_debug("phonegui_ussd_hide()");
+ if(win != NULL) {
+ async_trigger(_hide, win);
+ }
+}
+
+
+static void _show(GHashTable *options) {
+ g_debug("_show()");
+ struct Window *win = g_hash_table_lookup(options, "win");
+ assert(win != NULL);
+
+ window_init(win);
+ window_view_show(win, options, ussd_view_show, ussd_view_hide);
+}
+
+static void _hide(struct Window *win) {
+ g_debug("_hide()");
+ window_destroy(win, NULL);
+}
+
diff --git a/libframeworkd-phonegui-efl/src/phonegui-ussd.h b/libframeworkd-phonegui-efl/src/phonegui-ussd.h
new file mode 100644
index 0000000..ca42530
--- /dev/null
+++ b/libframeworkd-phonegui-efl/src/phonegui-ussd.h
@@ -0,0 +1,7 @@
+#ifndef PHONEGUI_USSD_H
+#define PHONEGUI_USSD_H
+
+void phonegui_ussd_show(int mode, const char *message);
+void phonegui_ussd_hide();
+
+#endif
diff --git a/libframeworkd-phonegui-efl/src/view/dialer-view.c b/libframeworkd-phonegui-efl/src/view/dialer-view.c
index bb1d08f..7c3ce7e 100644
--- a/libframeworkd-phonegui-efl/src/view/dialer-view.c
+++ b/libframeworkd-phonegui-efl/src/view/dialer-view.c
@@ -157,8 +157,15 @@ static void frame_dialer_save_clicked(struct DialerViewData *data, Evas_Object *
}
static void frame_dialer_call_clicked(struct DialerViewData *data, Evas_Object *obj, void *event_info) {
- if(strlen(data->number))
- ogsmd_call_initiate(data->number, "voice", frame_dialer_initiate_callback, data);
+ if(strlen(data->number)) {
+ if(data->number[0] == '*') {
+ g_debug("USSD Request");
+ ogsmd_network_send_request(data->number, NULL, NULL);
+ } else {
+ g_debug("Initiate Call");
+ ogsmd_call_initiate(data->number, "voice", frame_dialer_initiate_callback, data);
+ }
+ }
}
static void frame_dialer_message_clicked(struct DialerViewData *data, Evas_Object *obj, void *event_info) {
diff --git a/libframeworkd-phonegui-efl/src/view/ussd-view.c b/libframeworkd-phonegui-efl/src/view/ussd-view.c
new file mode 100644
index 0000000..23b59bb
--- /dev/null
+++ b/libframeworkd-phonegui-efl/src/view/ussd-view.c
@@ -0,0 +1,88 @@
+#include "views.h"
+
+
+struct UssdViewData {
+ struct Window *win;
+ int mode;
+ char *message;
+ Evas_Object *bt_close;
+};
+
+
+static void frame_ussd_show(struct UssdViewData *data);
+static void frame_ussd_hide(struct UssdViewData *data);
+static void frame_ussd_close_clicked(struct UssdViewData *data, Evas_Object *obj, void *event_info);
+//static void frame_ussd_keypad_clicked(struct UssdViewData *data, Evas_Object *obj, void *event_info);
+
+
+struct UssdViewData *ussd_view_show(struct Window *win, GHashTable *options) {
+ struct UssdViewData *data = g_slice_alloc0(sizeof(struct UssdViewData));
+ data->win = win;
+ data->mode = (int) g_hash_table_lookup(options, "mode");
+ data->message = g_hash_table_lookup(options, "message");
+
+ window_frame_show(win, data, frame_ussd_show, frame_ussd_hide);
+ window_show(win);
+ return data;
+}
+
+void ussd_view_hide(struct UssdViewData *data) {
+ g_slice_free(struct UssdViewData, data);
+}
+
+
+/*
+ * Frame "ussd"
+ */
+
+static void frame_ussd_show(struct UssdViewData *data) {
+ struct Window *win = data->win;
+ window_layout_set(win, USSD_FILE, "main");
+ window_text_set(win, "mode", "Data:");
+ window_text_set(win, "message", data->message);
+
+ data->bt_close = elm_button_add(window_evas_object_get(win));
+ elm_button_label_set(data->bt_close, "Close");
+ evas_object_smart_callback_add(data->bt_close, "clicked", frame_ussd_close_clicked, data);
+ window_swallow(win, "button_close", data->bt_close);
+ evas_object_show(data->bt_close);
+
+ /*
+ data->keypad = elm_keypad_add(window_evas_object_get(win));
+ evas_object_smart_callback_add(data->keypad, "clicked", frame_ussd_keypad_clicked, data);
+ window_swallow(win, "keypad", data->keypad);
+ evas_object_show(data->keypad);
+ */
+}
+
+static void frame_ussd_hide(struct UssdViewData *data) {
+ struct Window *win = data->win;
+ evas_object_del(data->bt_close);
+
+ /*
+ window_unswallow(win, data->keypad);
+ evas_object_smart_callback_del(data->keypad, "clicked", frame_ussd_keypad_clicked);
+ evas_object_del(data->keypad);
+ */
+}
+
+static void frame_ussd_close_clicked(struct UssdViewData *data, Evas_Object *obj, void *event_info) {
+ window_destroy(data->win, NULL);
+}
+
+/*
+static void frame_ussd_keypad_clicked(struct UssdViewData *data, Evas_Object *obj, void *event_info) {
+ char input = (char) event_info;
+
+ if(data->number_length < 64) {
+ strncat(data->number, &input, 1);
+ data->number_length++;
+ frame_ussd_number_update(data);
+ }
+
+ if(data->number_length == 1) {
+ edje_object_signal_emit(elm_layout_edje_get(window_layout_get(data->win)), "number_available", "elm");
+ }
+}
+*/
+
diff --git a/libframeworkd-phonegui-efl/src/view/views.h b/libframeworkd-phonegui-efl/src/view/views.h
index 671c29f..b95838b 100644
--- a/libframeworkd-phonegui-efl/src/view/views.h
+++ b/libframeworkd-phonegui-efl/src/view/views.h
@@ -22,6 +22,7 @@
#define KEYPAD_FILE "/usr/share/libframeworkd-phonegui-efl/keypad.edj"
#define MESSAGE_FILE "/usr/share/libframeworkd-phonegui-efl/messages.edj"
#define SIM_AUTH_FILE "/usr/share/libframeworkd-phonegui-efl/sim-auth.edj"
+#define USSD_FILE "/usr/share/libframeworkd-phonegui-efl/ussd.edj"
struct DialerViewData *dialer_view_show(struct Window *win, GHashTable *options);
void dialer_view_hide(struct DialerViewData *data);
@@ -62,5 +63,8 @@ void contact_edit_view_hide(struct ContactEditViewData *data);
struct ContactDeleteViewData *contact_delete_view_show(struct Window *win, GHashTable *options);
void contact_delete_view_hide(struct ContactDeleteViewData *data);
+struct UssdViewData *ussd_view_show(struct Window *win, GHashTable *options);
+void ussd_view_hide(struct UssdViewData *data);
+
#endif
diff --git a/ophonekitd/src/ophonekitd-main.c b/ophonekitd/src/ophonekitd-main.c
index dd5257e..6596b00 100644
--- a/ophonekitd/src/ophonekitd-main.c
+++ b/ophonekitd/src/ophonekitd-main.c
@@ -283,8 +283,9 @@ void ophonekitd_sim_incoming_stored_message_handler(const int id) {
ogsmd_sim_get_messagebook_info(get_messagebook_info_callback, NULL);
}
-void ophonekitd_incoming_ussd_handler(const char* mode, const char* message) {
- g_debug("ophonekitd_incoming_ussd_handler(mode=%s, message=%s)", mode, message);
+void ophonekitd_incoming_ussd_handler(int mode, const char* message) {
+ g_debug("ophonekitd_incoming_ussd_handler(mode=%d, message=%s)", mode, message);
+ phonegui_ussd_show(mode, message);
}
diff --git a/ophonekitd/src/ophonekitd-main.h b/ophonekitd/src/ophonekitd-main.h
index a1c12e5..ddc6896 100644
--- a/ophonekitd/src/ophonekitd-main.h
+++ b/ophonekitd/src/ophonekitd-main.h
@@ -26,7 +26,7 @@ void ophonekitd_call_status_handler(const int id_call, const int status, GHashTa
void ophonekitd_sim_auth_status_handler(const int status);
void ophonekitd_sim_incoming_stored_message_handler(const int id);
void ophonekitd_device_idle_notifier_state_handler(const int state);
-void ophonekitd_incoming_ussd_handler(const char* mode, const char* message);
+void ophonekitd_incoming_ussd_handler(int mode, const char* message);
gboolean list_resources();
void list_resources_callback(GError *error, char** resources, gpointer userdata);
diff --git a/ophonekitd/src/ophonekitd-phonegui.c b/ophonekitd/src/ophonekitd-phonegui.c
index b948065..e8a9a56 100644
--- a/ophonekitd/src/ophonekitd-phonegui.c
+++ b/ophonekitd/src/ophonekitd-phonegui.c
@@ -27,5 +27,7 @@ void phonegui_connect() {
phonegui_message_hide = phonegui_get_function("phonegui_message_hide");
phonegui_dialog_show = phonegui_get_function("phonegui_dialog_show");
phonegui_dialog_hide = phonegui_get_function("phonegui_dialog_hide");
+ phonegui_ussd_show = phonegui_get_function("phonegui_ussd_show");
+ phonegui_ussd_hide = phonegui_get_function("phonegui_ussd_hide");
}
diff --git a/ophonekitd/src/ophonekitd-phonegui.h b/ophonekitd/src/ophonekitd-phonegui.h
index 4501a98..05fb721 100644
--- a/ophonekitd/src/ophonekitd-phonegui.h
+++ b/ophonekitd/src/ophonekitd-phonegui.h
@@ -29,6 +29,8 @@ void (*phonegui_message_show)();
void (*phonegui_message_hide)();
void (*phonegui_dialog_show)(int type);
void (*phonegui_dialog_hide)();
+void (*phonegui_ussd_show)(int mode, const char *message);
+void (*phonegui_ussd_hide)();
void phonegui_connect();
--
libframeworkd-phonegui
More information about the pkg-fso-commits
mailing list