Add test for deleting window in demo 39/90439/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 30 Sep 2016 05:13:12 +0000 (14:13 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Fri, 30 Sep 2016 05:13:12 +0000 (14:13 +0900)
Change-Id: I2af1e5300881b6eca07faea08f5e703173f8b09c
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
ism/demos/isf_demo_efl.cpp

index a3b23d0..f186393 100644 (file)
@@ -51,6 +51,8 @@ struct _menu_item {
     void (*func)(void *data, Evas_Object *obj, void *event_info);
 };
 
+static void isf_popup_bt (void *data, Evas_Object *obj, void *event_info);
+
 static struct _menu_item isf_demo_menu_its[] = {
     { "ISF Layout", ise_layout_bt },
     { "ISF Autocapital", ise_autocapital_bt },
@@ -63,6 +65,7 @@ static struct _menu_item isf_demo_menu_its[] = {
     { "ISF IM Data", ise_imdata_set_bt },
     { "ISF ondemand", ise_ondemand_bt },
     { "ISF Focus Movement", isf_focus_movement_bt },
+    { "ISF Popup test", isf_popup_bt },
     { "ISF Event", isf_event_demo_bt },
     { "ISF IM Control", imcontrolapi_bt },
 
@@ -70,6 +73,50 @@ static struct _menu_item isf_demo_menu_its[] = {
     { NULL, NULL }
 };
 
+static void
+close_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+    Evas_Object *win = (Evas_Object *)data;
+    if (win)
+        evas_object_del (win);
+}
+
+static void isf_popup_bt (void *data, Evas_Object *obj, void *event_info)
+{
+    Evas_Object *en, *bt, *bx;
+
+    Evas_Object *win = elm_win_util_standard_add ("Popup", "Popup");
+
+    Evas_Object *conformant = elm_conformant_add (win);
+    evas_object_size_hint_weight_set (conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_win_resize_object_add (win, conformant);
+    evas_object_show (conformant);
+
+    elm_win_conformant_set (win, EINA_TRUE);
+
+    bx = elm_box_add (win);
+    evas_object_size_hint_weight_set (bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set (bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_show (bx);
+
+    /* create entry */
+    en = elm_entry_add (bx);
+    elm_entry_scrollable_set (en, EINA_TRUE);
+    evas_object_size_hint_weight_set (en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set (en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_box_pack_end (bx, en);
+    evas_object_show (en);
+
+    /* create close button */
+    bt = create_button (win, "Close");
+    evas_object_smart_callback_add (bt, "clicked", close_btn_cb, win);
+    elm_box_pack_end (bx, bt);
+
+    elm_object_content_set (conformant, bx);
+
+    evas_object_show(win);
+}
+
 static void _quit_cb (void *data, Evas_Object *obj, void *event_info)
 {
     elm_exit ();
@@ -158,6 +205,7 @@ static void
 _vkbd_state_on (void *data, Evas_Object *obj, void *event_info)
 {
     struct appdata *ad = (struct appdata *)data;
+    if (ad == NULL) return;
 
     LOGD ("input panel is shown\n");
     ad->vkbd_state = EINA_TRUE;
@@ -167,6 +215,7 @@ static void
 _vkbd_state_off (void *data, Evas_Object *obj, void *event_info)
 {
     struct appdata *ad = (struct appdata *)data;
+    if (ad == NULL) return;
 
     LOGD ("input panel is hidden\n");
     ad->vkbd_state = EINA_FALSE;
@@ -208,7 +257,7 @@ static Evas_Object* _create_naviframe_layout (Evas_Object *parent)
     Evas_Object *naviframe = elm_naviframe_add (parent);
     elm_naviframe_prev_btn_auto_pushed_set (naviframe, EINA_FALSE);
     eext_object_event_callback_add (naviframe, EEXT_CALLBACK_BACK, _naviframe_back_cb, NULL);
-    elm_object_part_content_set (parent, "elm.swallow.content", naviframe);
+    elm_object_content_set (parent, naviframe);
 
     evas_object_show (naviframe);
 
@@ -248,6 +297,7 @@ static Eina_Bool _keydown_event (void *data, int type, void *event)
 static Eina_Bool _keyup_event (void *data, int type, void *event)
 {
     Ecore_Event_Key *ev = (Ecore_Event_Key *)event;
+    if (ev == NULL) return ECORE_CALLBACK_PASS_ON;
 
     LOGD ("[ecore key up] keyname : '%s', key : '%s', string : '%s', compose : '%s'\n", ev->keyname, ev->key, ev->string, ev->compose);
 
@@ -261,6 +311,8 @@ static Eina_Bool _keyup_event (void *data, int type, void *event)
 
 static void input_panel_state_changed_cb (keynode_t *key, void* data)
 {
+    if (!key) return;
+
     int sip_status = vconf_keynode_get_int (key);
 
     switch (sip_status) {
@@ -285,6 +337,7 @@ static void input_panel_state_changed_cb (keynode_t *key, void* data)
 static int app_create (void *data)
 {
     struct appdata *ad = (struct appdata *)data;
+    if (ad == NULL) return -1;
 
     appcore_measure_start ();
 
@@ -334,6 +387,7 @@ static int app_create (void *data)
 static int app_exit (void *data)
 {
     struct appdata *ad = (struct appdata *)data;
+    if (ad == NULL) return -1;
 
     if (ad->key_down_handler) {
         ecore_event_handler_del (ad->key_down_handler);
@@ -407,7 +461,8 @@ Elm_Object_Item *naviframe_item_push (Evas_Object *nf, const char *title, Evas_O
 {
     Elm_Object_Item *navi_it = elm_naviframe_item_push (nf, title, back_btn, NULL, content, NULL);
 #ifdef _WEARABLE
-    elm_naviframe_item_title_enabled_set (navi_it, EINA_FALSE, EINA_FALSE);
+    if (navi_it)
+        elm_naviframe_item_title_enabled_set (navi_it, EINA_FALSE, EINA_FALSE);
 #endif
 
     return navi_it;
@@ -460,6 +515,7 @@ Evas_Object *create_button (Evas_Object *parent, const char *text)
 static void _back_btn_clicked_cb (void *data, Evas_Object *obj, void *event_info)
 {
     struct appdata *ad = (struct appdata *)data;
+    if (ad == NULL) return;
 
     if (!ad->vkbd_state) {
         elm_naviframe_item_pop (ad->naviframe);
@@ -480,6 +536,7 @@ Evas_Object *create_naviframe_back_button (struct appdata *ad)
 Elm_Object_Item *add_layout_to_naviframe (void *data, Evas_Object *lay_in, const char *title)
 {
     struct appdata *ad = (struct appdata *) data;
+    if (ad == NULL) return NULL;
 
     Evas_Object *scroller = elm_scroller_add (ad->naviframe);
     elm_scroller_bounce_set (scroller, EINA_FALSE, EINA_TRUE);