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;
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 */
};
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__ */
#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"
{
GumUser *user;
gboolean r;
+ char *exist_icon;
user = gum_user_get_by_name_sync(di->title, FALSE);
if (!user) {
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;
}
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" */
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 = {
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);
}
}
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);
#define MAX_PHOTO 160
#define CHARACTER_PATTERN "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+#define MAX_LENGTH 32
enum input_handler_type {
INPUT_HANDLER_TYPE_PHOTO,
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);
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);
{
const char *name, *photo;
char buf[MAX_BUF];
+ int result;
_get_profile(priv, &name, &photo);
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);
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;
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;
}
}