From 5018f3c07b1f7921431aca2832d193d68e46d200 Mon Sep 17 00:00:00 2001 From: Soohye Shin Date: Fri, 28 Aug 2015 18:02:40 +0900 Subject: [PATCH] display toast when add/update/delete user Change-Id: I9783bbb2e9a98f5c276094c568b1ee90c6eb0132 Signed-off-by: Soohye Shin --- include/datamgr.h | 8 +++--- include/defs.h | 3 +++ src/data/data_home.c | 15 +++++++---- src/data/data_recent.c | 13 ++++++--- src/data/data_user.c | 67 +++++++++++++++++++++++++++++++---------------- src/data/datamgr.c | 16 +++++------ src/view/view_user_edit.c | 19 +++++++++++--- 7 files changed, 95 insertions(+), 46 deletions(-) diff --git a/include/datamgr.h b/include/datamgr.h index b63de7e..ffeee86 100644 --- a/include/datamgr.h +++ b/include/datamgr.h @@ -54,10 +54,10 @@ struct datamgr_item { struct data_class { bool (*init)(struct datamgr *dm); void (*fini)(struct datamgr *dm); - void (*select)(struct datamgr_item *di); + bool (*select)(struct datamgr_item *di); Eina_List *(*get_items)(struct datamgr *dm); void (*clear)(struct datamgr *dm); - void (*add)(struct datamgr *dm, const char *title, const char *icon, + bool (*add)(struct datamgr *dm, const char *title, const char *icon, const char *parameter); /* It should be added later */ }; @@ -65,9 +65,9 @@ struct data_class { struct datamgr *datamgr_init(struct data_class *dclass, const char *view_id); void datamgr_fini(struct datamgr *dm); Eina_List *datamgr_get_items(struct datamgr *dm); -void datamgr_select_item(struct datamgr *dm, struct datamgr_item *di); +bool datamgr_select_item(struct datamgr *dm, struct datamgr_item *di); void datamgr_clear_item(struct datamgr *dm); -void datamgr_add_item(struct datamgr *dm, const char *title, const char *icon, +bool 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 958c165..44d1fe2 100644 --- a/include/defs.h +++ b/include/defs.h @@ -227,6 +227,9 @@ #define MESSAGE_RESET_CONTENTS "Reset all entered data?
If you choose the Reset, all data will be deleted" #define MESSAGE_SUCCESS "success" #define MESSAGE_FAIL "fail" +#define MESSAGE_USER_ADD "is added." +#define MESSAGE_USER_DELETE "is removed." +#define MESSAGE_USER_UPDATE "is updated." #define GUM_ATTR_NAME "username" #define GUM_ATTR_USERTYPE "usertype" diff --git a/src/data/data_home.c b/src/data/data_home.c index e55a0a4..636bfe7 100644 --- a/src/data/data_home.c +++ b/src/data/data_home.c @@ -342,22 +342,27 @@ static bool _init(struct datamgr *dm) return _load_home(dm); } -static void _select(struct datamgr_item *di) +static bool _select(struct datamgr_item *di) { + bool r; + if (!di || !di->parameter) - return; + return false; + r = false; switch (di->action) { case ITEM_SELECT_ACTION_LAUNCH: - utils_launch_app(di->parameter, NULL, NULL); + r = utils_launch_app(di->parameter, NULL, NULL); break; case ITEM_SELECT_ACTION_PUSH: - viewmgr_push_view(di->parameter); + r = viewmgr_push_view(di->parameter); break; default: _ERR("Invalid state"); - return; + break; } + + return r; } static struct data_class dclass = { diff --git a/src/data/data_recent.c b/src/data/data_recent.c index f9b99b2..30dd154 100644 --- a/src/data/data_recent.c +++ b/src/data/data_recent.c @@ -491,19 +491,24 @@ static bool _init(struct datamgr *dm) return true; } -static void _select(struct datamgr_item *di) +static bool _select(struct datamgr_item *di) { + bool r; + if (!di || !di->parameter) - return; + return false; + r = false; switch (di->action) { case ITEM_SELECT_ACTION_LAUNCH: - utils_launch_app(di->parameter, di->key, di->value); + r = utils_launch_app(di->parameter, di->key, di->value); break; default: _ERR("Invalid state"); - return; + break; } + + return r; } static void _clear(struct datamgr *dm) diff --git a/src/data/data_user.c b/src/data/data_user.c index 6ecbd10..06f3fd2 100644 --- a/src/data/data_user.c +++ b/src/data/data_user.c @@ -73,7 +73,7 @@ static GDBusConnection *_get_bus_connection(GError **error) NULL, NULL, error); } -static void _switch(char *name, char *password) +static bool _switch(char *name, char *password) { GDBusConnection *conn; GError *error; @@ -82,7 +82,7 @@ static void _switch(char *name, char *password) guint32 serial; if (!name || !password) - return; + return false; error = NULL; conn = _get_bus_connection(&error); @@ -90,7 +90,7 @@ static void _switch(char *name, char *password) _ERR("failed to get connection, %s", error ? error->message : ""); g_error_free(error); - return; + return false; } param = _build_env_param(name, password); @@ -116,12 +116,15 @@ static void _switch(char *name, char *password) g_object_unref(res); g_object_unref(msg); g_object_unref(conn); + + return true; err: g_object_unref(conn); g_error_free(error); + return false; } -static void _update(struct datamgr_item *di) +static bool _update(struct datamgr_item *di) { GumUser *user; gboolean r; @@ -129,7 +132,7 @@ static void _update(struct datamgr_item *di) user = gum_user_get_by_name_sync(di->title, FALSE); if (!user) { _ERR("failed to get user"); - return; + return false; } g_object_set(G_OBJECT(user), GUM_ATTR_PASSWORD, di->parameter, @@ -138,13 +141,16 @@ static void _update(struct datamgr_item *di) r = gum_user_update_sync(user); if (!r) { _ERR("failed to update user"); - return; + g_object_unref(user); + return false; } g_object_unref(user); + + return true; } -static void _delete(struct datamgr_item *di) +static bool _delete(struct datamgr_item *di) { GumUser *user; gboolean r; @@ -152,42 +158,54 @@ static void _delete(struct datamgr_item *di) user = gum_user_get_by_name_sync(di->title, FALSE); if (!user) { _ERR("failed to get user"); - return; + return false; } r = gum_user_delete_sync(user, FALSE); - if (!r) + if (!r) { _ERR("failed to delete user"); + g_object_unref(user); + return false; + } g_object_unref(user); + + return true; } -static void _select(struct datamgr_item *di) +static bool _select(struct datamgr_item *di) { - if (!di) - return; + bool r; + + if (!di) { + _ERR("Invalid argument"); + return false; + } + r = false; switch (di->action) { case ITEM_SELECT_ACTION_SWITCH: /* It should be implemented later */ - _switch(di->title, ""); + r = _switch(di->title, ""); break; case ITEM_SELECT_ACTION_PUSH: - viewmgr_push_view(di->parameter); + r = viewmgr_push_view(di->parameter); break; case ITEM_SELECT_ACTION_POP: - viewmgr_pop_view(); + r = viewmgr_pop_view(); break; case ITEM_SELECT_ACTION_UPDATE: - _update(di); + r = _update(di); break; case ITEM_SELECT_ACTION_DELETE: - _delete(di); + r = _delete(di); break; default: _ERR("Invalid state"); - return; + break; } + + return r; } static void _unload_user(struct datamgr *dm) @@ -422,7 +440,7 @@ static bool _init(struct datamgr *dm) return _load_user(dm); } -static void _add(struct datamgr *dm, const char *title, const char *icon, +static bool _add(struct datamgr *dm, const char *title, const char *icon, const char *parameter) { GumUser *user; @@ -430,13 +448,13 @@ static void _add(struct datamgr *dm, const char *title, const char *icon, if (!dm || !title || !icon) { _ERR("Invalid argument"); - return; + return false; } user = gum_user_create_sync(FALSE); if (!user) { _ERR("failed to get user"); - return; + return false; } g_object_set(G_OBJECT(user), GUM_ATTR_NAME, title, @@ -445,10 +463,15 @@ static void _add(struct datamgr *dm, const char *title, const char *icon, GUM_ATTR_USERTYPE, GUM_USERTYPE_NORMAL, NULL); r = gum_user_add_sync(user); - if (!r) + if (!r) { _ERR("failed to add user"); + g_object_unref(user); + return false; + } g_object_unref(user); + + return true; } static struct data_class dclass = { diff --git a/src/data/datamgr.c b/src/data/datamgr.c index 6448db9..6f5e0eb 100644 --- a/src/data/datamgr.c +++ b/src/data/datamgr.c @@ -73,17 +73,17 @@ Eina_List *datamgr_get_items(struct datamgr *dm) return dm->dclass->get_items(dm); } -void datamgr_select_item(struct datamgr *dm, struct datamgr_item *di) +bool datamgr_select_item(struct datamgr *dm, struct datamgr_item *di) { if (!dm || !dm->dclass || !di) { _ERR("Invalid argument"); - return; + return false; } if (!dm->dclass->select) - return; + return true; - dm->dclass->select(di); + return dm->dclass->select(di); } void datamgr_clear_item(struct datamgr *dm) @@ -99,16 +99,16 @@ void datamgr_clear_item(struct datamgr *dm) dm->dclass->clear(dm); } -void datamgr_add_item(struct datamgr *dm, const char *title, const char *icon, +bool datamgr_add_item(struct datamgr *dm, const char *title, const char *icon, const char *parameter) { if (!dm || !dm->dclass) { _ERR("Invalid argument"); - return; + return false; } if (!dm->dclass->add) - return; + return true; - dm->dclass->add(dm, title, icon, parameter); + return dm->dclass->add(dm, title, icon, parameter); } diff --git a/src/view/view_user_edit.c b/src/view/view_user_edit.c index 3e48415..cc7442e 100644 --- a/src/view/view_user_edit.c +++ b/src/view/view_user_edit.c @@ -624,6 +624,7 @@ static void _select_eo(struct _priv *priv, Evas_Object *obj) static void _select_btn_done(struct _priv *priv) { const char *name, *photo; + char buf[MAX_BUF]; _get_profile(priv, &name, &photo); if (priv->di) { @@ -631,13 +632,19 @@ static void _select_btn_done(struct _priv *priv) priv->di->title = strdup(name ? name : ""); priv->di->icon = strdup(photo ? photo : IMAGE_USER_DEFAULT); - datamgr_select_item(priv->dm, priv->di); + if (datamgr_select_item(priv->dm, priv->di)) { + snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_UPDATE); + utils_add_toast(priv->win, buf); + } } else { if (!name || !strcmp(name, "")) { elm_object_focus_set(priv->name, EINA_TRUE); return; } - datamgr_add_item(priv->dm, name, photo, ""); + if (datamgr_add_item(priv->dm, name, photo, "")) { + snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_ADD); + utils_add_toast(priv->win, buf); + } } priv->di = NULL; @@ -657,6 +664,8 @@ static void _disable_pin(struct _priv *priv) static void _select(struct _priv *priv, int id, Evas_Object *obj) { + char buf[MAX_BUF]; + switch (id) { case INPUT_HANDLER_TYPE_LOCK: if (priv->locked) { @@ -696,7 +705,11 @@ static void _select(struct _priv *priv, int id, Evas_Object *obj) _delete_popup(priv, obj); elm_object_focus_allow_set(priv->del, EINA_TRUE); priv->di->action = ITEM_SELECT_ACTION_DELETE; - datamgr_select_item(priv->dm, priv->di); + if (datamgr_select_item(priv->dm, priv->di)) { + snprintf(buf, sizeof(buf), "%s %s", priv->di->title, + MESSAGE_USER_DELETE); + utils_add_toast(priv->win, buf); + } viewmgr_pop_view(); break; case INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD: -- 2.7.4