summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHyerim Kim <rimi.kim@samsung.com>2016-11-09 20:45:23 +0900
committerHyerim Kim <rimi.kim@samsung.com>2016-11-09 20:46:28 +0900
commit56972f5002c274fb5da4004bda5e6c6bfb2fe93a (patch)
treeddf2306bfb110195e158d939a5cba0979e3efcde
parent2927be005597f5598b847cdf4bae3f5ec0fd4c26 (diff)
downloadair_home-56972f5002c274fb5da4004bda5e6c6bfb2fe93a.tar.gz
air_home-56972f5002c274fb5da4004bda5e6c6bfb2fe93a.tar.bz2
air_home-56972f5002c274fb5da4004bda5e6c6bfb2fe93a.zip
- TSAM-9656, TSAM-9657, TSAM-9651, TSAM-9652 Change-Id: I0da205fe0e9e432e3cab0ec006013897bec136ae Signed-off-by: Hyerim Kim <rimi.kim@samsung.com>
-rwxr-xr-x[-rw-r--r--]include/datamgr.h10
-rwxr-xr-x[-rw-r--r--]include/defs.h1
-rwxr-xr-x[-rw-r--r--]src/data/data_user.c41
-rwxr-xr-x[-rw-r--r--]src/data/datamgr.c6
-rwxr-xr-x[-rw-r--r--]src/utils.c2
-rwxr-xr-xsrc/view/view_user_edit.c23
6 files changed, 55 insertions, 28 deletions
diff --git a/include/datamgr.h b/include/datamgr.h
index 5c795a3..6777ba2 100644..100755
--- a/include/datamgr.h
+++ b/include/datamgr.h
@@ -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__ */
diff --git a/include/defs.h b/include/defs.h
index 0218117..4952e9e 100644..100755
--- a/include/defs.h
+++ b/include/defs.h
@@ -229,6 +229,7 @@
#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"
diff --git a/src/data/data_user.c b/src/data/data_user.c
index 9d90c9f..8af7246 100644..100755
--- a/src/data/data_user.c
+++ b/src/data/data_user.c
@@ -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 = {
diff --git a/src/data/datamgr.c b/src/data/datamgr.c
index 3a91c1b..a99791f 100644..100755
--- a/src/data/datamgr.c
+++ b/src/data/datamgr.c
@@ -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);
}
diff --git a/src/utils.c b/src/utils.c
index 5d570c9..555dad5 100644..100755
--- a/src/utils.c
+++ b/src/utils.c
@@ -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);
diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c
index 484cab5..5945028 100755
--- a/src/view/view_user_edit.c
+++ b/src/view/view_user_edit.c
@@ -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;
}
}