[UI]Synchronize codes with private --add launch emergency call
authorJinjin Shi <jinjin.shi@samsung.com>
Sat, 15 Dec 2012 09:41:40 +0000 (17:41 +0800)
committerJinjin Shi <jinjin.shi@samsung.com>
Sat, 15 Dec 2012 09:41:40 +0000 (17:41 +0800)
Change-Id: I9460c576c49b1a31092edb4328f5689f4dfd247e

CMakeLists.txt
packaging/org.tizen.lockscreen.spec
src/complex-password.c
src/lockscreen.h
src/simple-password.c
src/util.c
src/util.h

index 64a9fcd..c89235d 100755 (executable)
@@ -44,6 +44,7 @@ pkg_check_modules(pkgs REQUIRED
        ail
        notification
        security-server
+       ui-gadget-1
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
index 320b775..c8a402a 100755 (executable)
@@ -14,6 +14,7 @@ BuildRequires: pkgconfig(utilX)
 BuildRequires: pkgconfig(ail)
 BuildRequires: pkgconfig(notification)
 BuildRequires: pkgconfig(security-server)
+BuildRequires: pkgconfig(ui-gadget-1)
 
 BuildRequires: cmake
 BuildRequires: gettext
index 4fe981b..a2f863e 100755 (executable)
@@ -41,6 +41,11 @@ static void __complex_password_keypad_process(void *data, Evas_Object *obj, cons
 \r
        LOCK_SCREEN_TRACE_DBG("source = %s", source);\r
 \r
+       if (strcmp("SOS", source) == 0) {\r
+               launch_emgcall(ad);\r
+               return;\r
+       }\r
+\r
        if (strcasecmp("function1", source) == 0 || strcasecmp("function2", source) == 0) {\r
                return ;\r
        }\r
index c380c3b..1be05c0 100755 (executable)
@@ -77,6 +77,8 @@ struct appdata {
        Ecore_Timer *password_timer;
        int block_seconds;
        Eina_Bool is_disabled;
+
+       struct ui_gadget *emgc_ug;
 };
 
 #endif
index e86bd34..68f3538 100755 (executable)
@@ -56,6 +56,8 @@ static void __simple_password_keypad_process(void *data, Evas_Object *obj, const
 \r
        LOCK_SCREEN_TRACE_DBG("source = %s", source);\r
        if (strcmp("SOS", source) == 0) {\r
+               launch_emgcall(ad);\r
+               return;\r
        } else if (strcmp("Backspace", source) == 0) {\r
                if(simple_password_length <= 0){\r
                        simple_password[0] = '\0';\r
index 4e4ab81..8958ba3 100755 (executable)
@@ -20,6 +20,7 @@
 #include <vconf.h>
 #include <vconf-keys.h>
 #include <ail.h>
+#include <ui-gadget.h>
 
 #include "util.h"
 #include "info.h"
@@ -299,6 +300,11 @@ int _app_reset(struct appdata *ad)
        if (ad == NULL)
                return -1;
 
+       if (ad->emgc_ug) {
+               ug_destroy(ad->emgc_ug);
+               ad->emgc_ug = NULL;
+       }
+
        static int initted = 0;
        if(initted == 0) {
                ecore_idler_add(_init_widget_cb, ad);
@@ -330,3 +336,85 @@ int _app_terminate(struct appdata *ad)
 
        return 0;
 }
+
+static void __layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       struct appdata *ad;
+       Evas_Object *base;
+
+       if (!ug || !priv)
+               return;
+
+       ad = priv;
+       base = ug_get_layout(ug);
+       if (!base)
+               return;
+
+       switch(mode) {
+       case UG_MODE_FULLVIEW:
+               LOCK_SCREEN_TRACE_DBG("[%s:%d]", __func__, __LINE__);
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(ad->win, base);
+               evas_object_show(base);
+               break;
+       case UG_MODE_FRAMEVIEW:
+               break;
+       default:
+               break;
+       }
+}
+
+static void __result_cb(ui_gadget_h ug, service_h service, void *priv)
+{
+       LOCK_SCREEN_TRACE_DBG("result_cb\n");
+}
+
+static void __destroy_cb(ui_gadget_h ug, void *priv)
+{
+       struct appdata *ad = (struct appdata *)priv;
+
+       if (!ug || !ad) {
+               return;
+       }
+       LOCK_SCREEN_TRACE_DBG("[%s:%d]", __func__, __LINE__);
+
+       ug_destroy(ug);
+       ug = NULL;
+}
+
+void launch_emgcall(struct appdata *ad)
+{
+       if (ad == NULL)
+               return;
+
+       service_h service;
+       service_create(&service);
+       UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+       struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
+       if (cbs == NULL) {
+               service_destroy(service);
+               return;
+       }
+       cbs->layout_cb = __layout_cb;
+       cbs->result_cb = __result_cb;
+       cbs->destroy_cb = __destroy_cb;
+       cbs->priv = (void *)ad;
+
+       LOCK_SCREEN_TRACE_DBG("[%s:%d]", __func__, __LINE__);
+
+       if (!service) {
+               service_destroy(service);
+               free(cbs);
+               return;
+       }
+
+       service_add_extra_data(service, "emergency_dialer", "emergency");
+       ad->emgc_ug = ug_create(NULL, "dialer-efl", UG_MODE_FULLVIEW, service, cbs);
+       service_destroy(service);
+       free(cbs);
+
+       if (!ad->emgc_ug) {
+               LOCK_SCREEN_TRACE_DBG("dialer ug failed");
+               return;
+       }
+}
index fdc0d31..9fdd349 100755 (executable)
@@ -26,6 +26,7 @@ Evas_Object *_make_top_layout(struct appdata *ad);
 Evas_Object *_get_bg_image(Evas_Object *parent);
 void lockscreen_info_show(struct appdata *ad);
 void lockscreen_info_hide(struct appdata *ad);
+void launch_emgcall(struct appdata *ad);
 
 int _app_create(struct appdata *ad);
 int _app_reset(struct appdata *ad);