switch to disable or enable pin when switch is on/ff 97/43797/3
authorSoohye Shin <soohye.shin@samsung.com>
Tue, 14 Jul 2015 06:35:21 +0000 (15:35 +0900)
committerSoohye Shin <soohye.shin@samsung.com>
Tue, 14 Jul 2015 07:37:09 +0000 (16:37 +0900)
Change-Id: I351a043a759de08496d54d7422375680a5a387ac
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
edje/view/useredit.edc
src/view/view_user_edit.c

index 81934d5..efc89d1 100644 (file)
@@ -849,6 +849,11 @@ group {
                                inherit, "default" 0.0;
                                color, 0 119 246 255;
                        }
+                       description {
+                               state, "disable" 0.0;
+                               inherit, "default" 0.0;
+                               color, 194 194 194 120;
+                       }
                }
                part {
                        name, "bg.entry";
@@ -891,6 +896,13 @@ group {
                        transition, LINEAR 0.5;
                        target, "bg";
                }
+               program {
+                       name, "sig,disable";
+                       signal, SIG_DISABLE;
+                       source, SRC_PROG;
+                       action, STATE_SET "disable" 0.0;
+                       target, "bg";
+               }
        }
 }
 
index 5f4e8d9..9e83732 100644 (file)
@@ -67,6 +67,7 @@ struct _priv {
        Evas_Object *ctxpopup;
        Evas_Object *del;
        Evas_Object *popup;
+       Evas_Object *lock_icon;
 
        struct datamgr *dm;
        struct datamgr_item *di;
@@ -446,32 +447,53 @@ static input_handler photo_handler = {
        .key_down = _photo_key_down
 };
 
-static void _load_lock_icon(struct _priv *priv, Evas_Object *ly)
+static void _change_entry_status(Evas_Object *pin, Eina_Bool disable,
+               const char *signal)
+{
+       Evas_Object *parent;
+
+       elm_entry_editable_set(pin, disable);
+       parent = elm_object_parent_widget_get(pin);
+       if (parent)
+               elm_object_signal_emit(parent, signal, SRC_PROG);
+
+       elm_object_focus_allow_set(pin, disable);
+}
+
+static void _load_lock_icon(struct _priv *priv)
 {
-       Evas_Object *lock;
        const char *file = NULL;
 
-       if (priv->lock) {
-               elm_image_file_get(priv->lock, &file, NULL);
-               elm_object_part_content_unset(priv->lock,
+       if (!priv->lock_icon) {
+               priv->lock_icon = utils_add_icon(priv->lock, IMAGE_SWITCH_ON,
                                PART_USER_EDIT_SWITCH);
-               evas_object_del(priv->lock);
+               _change_entry_status(priv->pin, EINA_TRUE, SIG_UNFOCUS);
+               return;
        }
 
-       if (!file || !strcmp(file, IMAGE_SWITCH_OFF))
+       elm_image_file_get(priv->lock_icon, &file, NULL);
+       elm_object_part_content_unset(priv->lock, PART_USER_EDIT_SWITCH);
+       evas_object_del(priv->lock_icon);
+
+       if (!file || !strcmp(file, IMAGE_SWITCH_OFF)) {
                file = IMAGE_SWITCH_ON;
-       else
+               _change_entry_status(priv->pin, EINA_TRUE, SIG_UNFOCUS);
+               elm_entry_entry_set(priv->pin, MESSAGE_ENTRY_PIN);
+       } else {
                file = IMAGE_SWITCH_OFF;
-       lock = utils_add_icon(ly, file, PART_USER_EDIT_SWITCH);
+               _change_entry_status(priv->pin, EINA_FALSE, SIG_DISABLE);
+               elm_entry_entry_set(priv->pin, "");
+       }
 
-       priv->lock = lock;
+       priv->lock_icon = utils_add_icon(priv->lock, file,
+                       PART_USER_EDIT_SWITCH);
 }
 
 static void _lock_key_down(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev)
 {
        if (!strcmp(ev->keyname, KEY_ENTER))
-               _load_lock_icon(data, obj);
+               _load_lock_icon(data);
 }
 
 static input_handler lock_handler = {
@@ -511,11 +533,10 @@ static Evas_Object *_add_layout(struct _priv *priv)
        if (!lock)
                goto err;
 
-       _load_lock_icon(priv, lock);
-
        inputmgr_add_callback(lock, 0, &lock_handler, priv);
        inputmgr_add_callback(photo, 0, &photo_handler, priv);
 
+       priv->lock = lock;
        priv->photo = photo;
        priv->name = name;
        priv->pin = pin;
@@ -728,6 +749,7 @@ static void _show(void *data)
                                IMAGE_USER_CURRENT_DEFAULT_FOCUS);
        }
 
+       _load_lock_icon(priv);
        evas_object_show(priv->base);
        elm_object_focus_set(priv->cancel, EINA_TRUE);
 }
@@ -748,6 +770,11 @@ static void _hide(void *data)
                priv->del = NULL;
        }
 
+       if (priv->lock_icon) {
+               evas_object_del(priv->lock_icon);
+               priv->lock_icon = NULL;
+       }
+
        evas_object_hide(priv->base);
 }
 
@@ -763,7 +790,7 @@ static void _destroy(void *data)
        priv = data;
 
        inputmgr_remove_callback(priv->photo, &photo_handler);
-       inputmgr_remove_callback(priv->photo, &lock_handler);
+       inputmgr_remove_callback(priv->lock, &lock_handler);
        inputmgr_remove_callback(priv->done, &done_handler);
        inputmgr_remove_callback(priv->cancel, &cancel_handler);
        viewmgr_remove_view(VIEW_PHOTO);
@@ -797,4 +824,3 @@ view_class *view_user_edit_get_vclass(void)
 {
        return &vclass;
 }
-