Merge branch 'master' into tizen_2.0
authorJinjin Shi <jinjin.shi@samsung.com>
Fri, 21 Dec 2012 13:03:39 +0000 (21:03 +0800)
committerJinjin Shi <jinjin.shi@samsung.com>
Fri, 21 Dec 2012 13:05:53 +0000 (21:05 +0800)
Change-Id: Id3a84c2f9fd78b23dc494c73344d2716612f0e9c

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

index 64a9fcd..a884672 100755 (executable)
@@ -44,6 +44,8 @@ pkg_check_modules(pkgs REQUIRED
        ail
        notification
        security-server
+       ui-gadget-1
+       capi-system-info
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
index 540553c..bff7e54 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>\r
-<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.1.3" install-location="internal-only">\r
+<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.1.4" install-location="internal-only">\r
        <label>@PROJECT_NAME@</label>\r
        <author email="yjoo93.park@samsung.com" href="www.samsung.com">Youngjoo Park</author>\r
        <author email="seungtaek.chung@samsung.com" href="www.samsung.com">seungtaek chung</author>\r
index 320b775..f7ef660 100755 (executable)
@@ -2,7 +2,7 @@
 
 Name:       org.tizen.lockscreen
 Summary:    lockscreen application
-Version: 0.1.3
+Version: 0.1.4
 Release:    1
 Group:      TBD
 License:    Apache
@@ -14,6 +14,8 @@ BuildRequires: pkgconfig(utilX)
 BuildRequires: pkgconfig(ail)
 BuildRequires: pkgconfig(notification)
 BuildRequires: pkgconfig(security-server)
+BuildRequires: pkgconfig(ui-gadget-1)
+BuildRequires: pkgconfig(capi-system-info)
 
 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 18449d1..0d33823 100755 (executable)
 #include <app.h>
 #include <vconf.h>
 #include <Ecore_X.h>
+#include <system_info.h>
 
 #include "lockscreen.h"
 #include "util.h"
 
+#define QP_EMUL_STR      "Emulator"
+
 static void win_del(void *data, Evas_Object * obj, void *event)
 {
        elm_exit();
@@ -59,6 +62,23 @@ static void resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
        evas_object_geometry_get(obj, NULL, NULL, &w, &h);
 }
 
+static int _check_emul()
+{
+       int is_emul = 0;
+       char *info = NULL;
+
+       if (system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &info) == 0) {
+               if (info == NULL) return 0;
+               if (!strncmp(QP_EMUL_STR, info, strlen(info))) {
+                       is_emul = 1;
+               }
+       }
+
+       if (info != NULL) free(info);
+
+       return is_emul;
+}
+
 static bool app_create(void *data)
 {
        struct appdata *ad = data;
@@ -163,7 +183,9 @@ int main(int argc, char *argv[])
 
        memset(&ad, 0x0, sizeof(struct appdata));
 
-       setenv("ELM_ENGINE", "gl", 1);
+       if(!_check_emul()) {
+               setenv("ELM_ENGINE", "gl", 1);
+       }
 
        return app_efl_main(&argc, &argv, &event_callback, &ad);
 }
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);