[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