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 */
};
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__ */
#define MESSAGE_RESET_CONTENTS "Reset all entered data?<br>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"
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 = {
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)
NULL, NULL, error);
}
-static void _switch(char *name, char *password)
+static bool _switch(char *name, char *password)
{
GDBusConnection *conn;
GError *error;
guint32 serial;
if (!name || !password)
- return;
+ return false;
error = NULL;
conn = _get_bus_connection(&error);
_ERR("failed to get connection, %s",
error ? error->message : "");
g_error_free(error);
- return;
+ return false;
}
param = _build_env_param(name, 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;
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,
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;
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)
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;
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,
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 = {
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)
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);
}
static void _select_btn_done(struct _priv *priv)
{
const char *name, *photo;
+ char buf[MAX_BUF];
_get_profile(priv, &name, &photo);
if (priv->di) {
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;
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) {
_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: