enable to add/edit/delete user in view_user_edit 59/43359/3
authorSoohye Shin <soohye.shin@samsung.com>
Wed, 8 Jul 2015 10:09:00 +0000 (19:09 +0900)
committerSoohye Shin <soohye.shin@samsung.com>
Thu, 9 Jul 2015 04:14:43 +0000 (13:14 +0900)
Change-Id: Ie5c807f35ccab000ce14f783ddd9ccd60ffc52c5
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
src/view/view_user.c
src/view/view_user_edit.c

index abf5d98..ec9e9ee 100644 (file)
@@ -59,10 +59,17 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
 
        if (!strcmp(ev->keyname, KEY_ENTER) ||
                        !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
+               viewmgr_update_view(VIEW_USER_EDIT, 0, NULL);
                datamgr_select_item(priv->dm, priv->foc->di);
        } else if (!strcmp(ev->keyname, KEY_BACK) ||
                        !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
                viewmgr_pop_view();
+       } else if (!strcmp(ev->keyname, KEY_DOWN)) {
+               if (priv->foc->di->action == ITEM_SELECT_ACTION_PUSH)
+                       return;
+
+               viewmgr_update_view(VIEW_USER_EDIT, 0, priv->foc->di);
+               viewmgr_push_view(VIEW_USER_EDIT);
        }
 }
 
@@ -187,7 +194,9 @@ static struct _bar_item *_pack_bar_item(struct _priv *priv, Evas_Object *box,
        if (!ic)
                goto err;
 
-       focus_ic = utils_add_icon(eo, di->focus_icon, PART_BAR_ITEM_ICON_FOCUS);
+       focus_ic = utils_add_icon(eo,
+                       utils_get_focus_icon_from_icon(di->focus_icon),
+                       PART_BAR_ITEM_ICON_FOCUS);
        if (!focus_ic)
                goto err;
 
index a433c04..661ebc1 100644 (file)
@@ -70,13 +70,43 @@ struct _priv {
        Evas_Object *popup;
 
        struct datamgr *dm;
+       struct datamgr_item *di;
 };
 
+static void _get_profile(struct _priv *priv, const char **name,
+               const char **photo, const char **pin)
+{
+       *name = elm_entry_entry_get(priv->name);
+       *pin = elm_entry_entry_get(priv->pin);
+       elm_image_file_get(priv->icon, photo, NULL);
+       *photo = utils_get_icon_from_photo(*photo);
+}
+
 static void _done_key_down(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev)
 {
+       struct _priv *priv;
+       const char *name, *pin, *photo;
+
+       if (!data) {
+               _ERR("Invalid argument");
+               return;
+       }
+
+       priv = data;
+
        if (!strcmp(ev->keyname, KEY_ENTER)) {
-               /* check state of user edit */
+               _get_profile(priv, &name, &photo, &pin);
+               if (priv->di) {
+                       priv->di->action = ITEM_SELECT_ACTION_UPDATE;
+                       priv->di->title = strdup(name ? name : "");
+                       priv->di->icon = strdup(photo ? photo :
+                                       IMAGE_USER_DEFAULT);
+                       priv->di->parameter = strdup(pin ? pin : "");
+                       datamgr_select_item(priv->dm, priv->di);
+               } else
+                       datamgr_add_item(priv->dm, name, photo, pin);
+               priv->di = NULL;
                viewmgr_pop_view();
        }
 }
@@ -107,7 +137,7 @@ static bool _add_btns(struct _priv *priv)
                _ERR("failed to add done btn");
                return false;
        }
-       inputmgr_add_callback(done, 0, &done_handler, NULL);
+       inputmgr_add_callback(done, 0, &done_handler, priv);
 
        cancel = utils_add_button(priv->base, MESSAGE_BTN_CANCEL,
                        PART_USER_EDIT_BTN_CANCEL);
@@ -175,7 +205,7 @@ static void _eo_key_down(int id, void *data, Evas *e, Evas_Object *obj,
                priv->ctxpopup = NULL;
 
                file = evas_object_data_get(obj, KEY_ICON);
-               focus_file = evas_object_data_get(obj, KEY_FOCUS_ICON);
+               focus_file = utils_get_focus_photo_from_photo(file);
 
                if (!strcmp(file, ICON_ADD) || !strcmp(focus_file, ICON_ADD))
                        viewmgr_push_view(VIEW_PHOTO);
@@ -219,7 +249,6 @@ static Evas_Object *_pack_icon(Evas_Object *table, struct icon_info *_icon_info,
                return NULL;
        }
        evas_object_data_set(eo, KEY_ICON, _icon_info->photo_file);
-       evas_object_data_set(eo, KEY_FOCUS_ICON, _icon_info->focus_photo_file);
 
        return eo;
 }
@@ -463,7 +492,9 @@ static void _delete_user_key_down(int id, void *data, Evas *e, Evas_Object *obj,
                        !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
                evas_object_del(priv->popup);
                priv->popup = NULL;
-               /* TODO: datamgr_select_item for deleting user */
+               priv->di->action = ITEM_SELECT_ACTION_DELETE;
+               datamgr_select_item(priv->dm, priv->di);
+               viewmgr_pop_view();
        } else if (!strcmp(ev->keyname, KEY_BACK) ||
                        !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
                evas_object_del(priv->popup);
@@ -515,9 +546,8 @@ static void _add_delete_popup(struct _priv *priv)
        evas_object_show(popup);
        priv->popup = popup;
 
-       /* TODO: put the user name */
        snprintf(buf, sizeof(buf), "%s %s?<br> %s", MESSAGE_DELETE,
-                       "", MESSAGE_DELETE_CONTENTS);
+                       priv->di->title, MESSAGE_DELETE_CONTENTS);
        elm_object_text_set(popup, buf);
 
        delete_btn = utils_add_button(popup, MESSAGE_DELETE,
@@ -573,6 +603,7 @@ static void _load_del_btn(struct _priv *priv)
 static void _show(void *data)
 {
        struct _priv *priv;
+       const char *photo, *focus_photo;
 
        if (!data) {
                _ERR("Invalid argument");
@@ -581,12 +612,25 @@ static void _show(void *data)
 
        priv = data;
 
+       if (priv->di) {
+               elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE,
+                               MESSAGE_EDIT_USER);
+               elm_entry_entry_set(priv->name, priv->di->title);
+               elm_entry_entry_set(priv->pin, "");
+               photo = utils_get_photo_from_icon(priv->di->icon);
+               focus_photo = utils_get_focus_photo_from_photo(photo);
+               _load_user_icon(priv, photo, focus_photo);
+               _load_del_btn(priv);
+       } else {
+               elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE,
+                               MESSAGE_ADD_USER);
+               elm_entry_entry_set(priv->name, MESSAGE_ENTRY_NAME);
+               elm_entry_entry_set(priv->pin, MESSAGE_ENTRY_PIN);
+               _load_user_icon(priv, IMAGE_USER_CURRENT_DEFAULT,
+                               IMAGE_USER_CURRENT_DEFAULT_FOCUS);
+       }
+
        evas_object_show(priv->base);
-       elm_object_part_text_set(priv->base, PART_USER_EDIT_TITLE,
-                       MESSAGE_ADD_USER);
-       _load_user_icon(priv, IMAGE_USER_CURRENT_DEFAULT,
-                       IMAGE_USER_CURRENT_DEFAULT_FOCUS);
-       _load_del_btn(priv);
 }
 
 static void _hide(void *data)
@@ -628,12 +672,26 @@ static void _destroy(void *data)
        free(priv);
 }
 
+static void _update(void *view_data, int update_type, void *data)
+{
+       struct _priv *priv;
+
+       if (!view_data) {
+               _ERR("Invalid argument");
+               return;
+       }
+
+       priv = view_data;
+       priv->di = data;
+}
+
 static view_class vclass = {
        .view_id = VIEW_USER_EDIT,
        .create = _create,
        .show = _show,
        .hide = _hide,
-       .destroy = _destroy
+       .destroy = _destroy,
+       .update = _update
 };
 
 view_class *view_user_edit_get_vclass(void)