Fixed Jira issues 09/96609/1 submit/tizen_3.0/20161109.115115
authorHyerim Kim <rimi.kim@samsung.com>
Wed, 9 Nov 2016 11:45:23 +0000 (20:45 +0900)
committerHyerim Kim <rimi.kim@samsung.com>
Wed, 9 Nov 2016 11:46:28 +0000 (20:46 +0900)
 - TSAM-9656, TSAM-9657, TSAM-9651, TSAM-9652

Change-Id: I0da205fe0e9e432e3cab0ec006013897bec136ae
Signed-off-by: Hyerim Kim <rimi.kim@samsung.com>
include/datamgr.h [changed mode: 0644->0755]
include/defs.h [changed mode: 0644->0755]
src/data/data_user.c [changed mode: 0644->0755]
src/data/datamgr.c [changed mode: 0644->0755]
src/utils.c [changed mode: 0644->0755]
src/view/view_user_edit.c

old mode 100644 (file)
new mode 100755 (executable)
index 5c795a3..6777ba2
@@ -38,6 +38,12 @@ enum datamgr_item_select_err {
        ITEM_SELECT_ERROR_SWITCH = -3
 };
 
+enum datamgr_user_add_err {
+       USER_ADD_ERROR_NONE = 0,
+       USER_ADD_ERROR_EXIST_ALREADY = -1,
+       USER_ADD_ERROR_INVALID_OPERATION = -2
+};
+
 struct datamgr {
        Eina_List *list;
        const char *view_id;
@@ -76,7 +82,7 @@ struct data_class {
        int (*select)(struct datamgr_item *di);
        Eina_List *(*get_items)(struct datamgr *dm);
        void (*clear)(struct datamgr *dm);
-       bool (*add)(struct datamgr *dm, const char *title, const char *icon,
+       int (*add)(struct datamgr *dm, const char *title, const char *icon,
                        const char *parameter);
        /* It should be added later */
 };
@@ -86,7 +92,7 @@ void datamgr_fini(struct datamgr *dm);
 Eina_List *datamgr_get_items(struct datamgr *dm);
 int datamgr_select_item(struct datamgr *dm, struct datamgr_item *di);
 void datamgr_clear_item(struct datamgr *dm);
-bool datamgr_add_item(struct datamgr *dm, const char *title, const char *icon,
+int datamgr_add_item(struct datamgr *dm, const char *title, const char *icon,
                const char *parameter);
 
 #endif /* __AIR_HOME_DATAMGR_H__ */
old mode 100644 (file)
new mode 100755 (executable)
index 0218117..4952e9e
 #define MESSAGE_USER_ADD "is added."
 #define MESSAGE_USER_DELETE "is removed."
 #define MESSAGE_USER_UPDATE "is updated."
+#define MESSAGE_USER_EXIST_ALREADY "is already existed."
 #define MESSAGE_NOTIFICATION "Notification"
 
 #define GUM_ATTR_NAME "username"
old mode 100644 (file)
new mode 100755 (executable)
index 9d90c9f..8af7246
@@ -131,6 +131,7 @@ static int _update(struct datamgr_item *di)
 {
        GumUser *user;
        gboolean r;
+       char *exist_icon;
 
        user = gum_user_get_by_name_sync(di->title, FALSE);
        if (!user) {
@@ -138,16 +139,21 @@ static int _update(struct datamgr_item *di)
                return ITEM_SELECT_ERROR_INVALID_OPERATION;
        }
 
-       g_object_set(G_OBJECT(user), GUM_ATTR_ICON, di->icon, NULL);
+       g_object_get(G_OBJECT(user), GUM_ATTR_ICON, &exist_icon, NULL);
 
-       r = gum_user_update_sync(user);
-       if (!r) {
-               _ERR("failed to update user");
-               g_object_unref(user);
-               return ITEM_SELECT_ERROR_INVALID_OPERATION;
+       if (strcmp(di->icon, exist_icon)) {
+               g_object_set(G_OBJECT(user), GUM_ATTR_ICON, di->icon, NULL);
+               r = gum_user_update_sync(user);
+               if (!r) {
+                       _ERR("failed to update user");
+                       g_object_unref(user);
+                       free(exist_icon);
+                       return ITEM_SELECT_ERROR_INVALID_OPERATION;
+               }
        }
 
        g_object_unref(user);
+       free(exist_icon);
 
        return ITEM_SELECT_ERROR_NONE;
 }
@@ -422,21 +428,28 @@ static bool _init(struct datamgr *dm)
        return _load_user(dm);
 }
 
-static bool _add(struct datamgr *dm, const char *title, const char *icon,
+static int _add(struct datamgr *dm, const char *title, const char *icon,
                const char *parameter)
 {
        GumUser *user;
+       GumUser *exist = NULL;
        gboolean r;
 
        if (!dm || !title || !icon) {
                _ERR("Invalid argument");
-               return false;
+               return USER_ADD_ERROR_INVALID_OPERATION;
        }
 
-       user = gum_user_create_sync(FALSE);
-       if (!user) {
-               _ERR("failed to get user");
-               return false;
+       exist = gum_user_get_by_name_sync(title, FALSE);
+       if (!exist) {
+               user = gum_user_create_sync(FALSE);
+               if (!user) {
+                       _ERR("failed to get user");
+                       return USER_ADD_ERROR_INVALID_OPERATION;
+               }
+       } else {
+               g_object_unref(exist);
+               return USER_ADD_ERROR_EXIST_ALREADY;
        }
 
        /* FIXME: set pincode "tizen" */
@@ -451,12 +464,12 @@ static bool _add(struct datamgr *dm, const char *title, const char *icon,
        if (!r) {
                _ERR("failed to add user");
                g_object_unref(user);
-               return false;
+               return USER_ADD_ERROR_INVALID_OPERATION;
        }
 
        g_object_unref(user);
 
-       return true;
+       return USER_ADD_ERROR_NONE;
 }
 
 static struct data_class dclass = {
old mode 100644 (file)
new mode 100755 (executable)
index 3a91c1b..a99791f
@@ -98,16 +98,16 @@ void datamgr_clear_item(struct datamgr *dm)
        dm->dclass->clear(dm);
 }
 
-bool datamgr_add_item(struct datamgr *dm, const char *title, const char *icon,
+int datamgr_add_item(struct datamgr *dm, const char *title, const char *icon,
                const char *parameter)
 {
        if (!dm || !dm->dclass) {
                _ERR("Invalid argument");
-               return false;
+               return USER_ADD_ERROR_INVALID_OPERATION;
        }
 
        if (!dm->dclass->add)
-               return true;
+               return USER_ADD_ERROR_INVALID_OPERATION;
 
        return dm->dclass->add(dm, title, icon, parameter);
 }
old mode 100644 (file)
new mode 100755 (executable)
index 5d570c9..555dad5
@@ -453,6 +453,8 @@ Evas_Object *utils_add_toast(Evas_Object *base, char *message)
        }
        elm_object_style_set(label, STYLE_TOAST);
        elm_object_text_set(label, message);
+       elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
+       elm_label_wrap_width_set(label, 536);
 
        elm_object_content_set(notify, label);
        evas_object_show(notify);
index 484cab5..5945028 100755 (executable)
@@ -33,6 +33,7 @@
 #define MAX_PHOTO 160
 
 #define CHARACTER_PATTERN "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+#define MAX_LENGTH 32
 
 enum input_handler_type {
        INPUT_HANDLER_TYPE_PHOTO,
@@ -442,6 +443,9 @@ static Evas_Object *_add_layout(struct _priv *priv)
        Elm_Entry_Filter_Accept_Set name_char = {
                .accepted = CHARACTER_PATTERN
        };
+       Elm_Entry_Filter_Limit_Size limit_size = {
+               .max_char_count = MAX_LENGTH
+       };
 
        ly = utils_add_layout(priv->base, GRP_USER_EDIT_CONTENTS, false,
                        PART_USER_EDIT_CONTENTS);
@@ -461,6 +465,8 @@ static Evas_Object *_add_layout(struct _priv *priv)
                goto err;
        elm_entry_markup_filter_append(name, elm_entry_filter_accept_set,
                        &name_char);
+       elm_entry_markup_filter_append(name, elm_entry_filter_limit_size,
+                       &limit_size);
 
        inputmgr_add_callback(photo, INPUT_HANDLER_TYPE_PHOTO, &handler, priv);
        inputmgr_add_callback(name, INPUT_HANDLER_TYPE_ENTRY, &handler, priv);
@@ -584,6 +590,7 @@ static void _update_user(struct _priv *priv)
 {
        const char *name, *photo;
        char buf[MAX_BUF];
+       int result;
 
        _get_profile(priv, &name, &photo);
 
@@ -605,11 +612,14 @@ static void _update_user(struct _priv *priv)
                        return;
                }
        } else {
-               snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_ADD);
-               if (!datamgr_add_item(priv->dm, name, photo, "")) {
+               result = datamgr_add_item(priv->dm, name, photo, "");
+               if (result == USER_ADD_ERROR_INVALID_OPERATION) {
                        _reset(priv);
                        return;
-               }
+               } else if (result == USER_ADD_ERROR_EXIST_ALREADY)
+                       snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_EXIST_ALREADY);
+               else
+                       snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_ADD);
        }
 
        utils_add_toast(priv->win, buf);
@@ -646,9 +656,6 @@ static void _select(struct _priv *priv, int id, Evas_Object *obj)
        case INPUT_HANDLER_TYPE_EO:
                _select_eo(priv, obj);
                break;
-       case INPUT_HANDLER_TYPE_ENTRY:
-               elm_object_focus_set(priv->done, EINA_TRUE);
-               break;
        case INPUT_HANDLER_TYPE_BTN_DONE:
                _update_user(priv);
                break;
@@ -731,9 +738,7 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                        return;
                }
        } else if (!strcmp(ev->keyname, KEY_ENTER)) {
-               /* Do NOT handle KEY_ENTER event on entry
-                  because KEY_ENTER event could be emitted on IME by remote controller
-               _select(priv, id, obj); */
+               _select(priv, id, obj);
                ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
        }
 }