ITEM_SELECT_ACTION_PUSH,
ITEM_SELECT_ACTION_POP,
ITEM_SELECT_ACTION_SWITCH,
+ ITEM_SELECT_ACTION_UPDATE,
+ ITEM_SELECT_ACTION_DELETE,
ITEM_SELECT_ACTION_MAX
};
void (*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,
+ const char *parameter);
/* It should be added later */
};
Eina_List *datamgr_get_items(struct datamgr *dm);
void 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,
+ const char *parameter);
#endif /* __AIR_HOME_DATAMGR_H__ */
#define GUM_ATTR_USERTYPE "usertype"
#define GUM_ATTR_UID "uid"
#define GUM_ATTR_ICON "icon"
+#define GUM_ATTR_PASSWORD "secret"
#define GUM_LIST_USERTYPE "normal"
#define ADDRESS_BUF_MAX 128
return;
}
+static void _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;
+ }
+
+ g_object_set(G_OBJECT(user), GUM_ATTR_PASSWORD, di->parameter,
+ GUM_ATTR_ICON, di->icon, NULL);
+
+ r = gum_user_update_sync(user);
+ if (!r) {
+ _ERR("failed to update user");
+ return;
+ }
+
+ g_object_unref(user);
+}
+
+static void _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;
+ }
+
+ r = gum_user_delete_sync(user, FALSE);
+ if (!r)
+ _ERR("failed to delete user");
+
+ g_object_unref(user);
+}
+
static void _select(struct datamgr_item *di)
{
if (!di)
case ITEM_SELECT_ACTION_POP:
viewmgr_pop_view();
break;
+ case ITEM_SELECT_ACTION_UPDATE:
+ _update(di);
+ break;
+ case ITEM_SELECT_ACTION_DELETE:
+ _delete(di);
+ break;
default:
_ERR("Invalid state");
return;
return _load_user(dm);
}
+static void _add(struct datamgr *dm, const char *title, const char *icon,
+ const char *parameter)
+{
+ GumUser *user;
+ gboolean r;
+
+ if (!dm || !title || !icon) {
+ _ERR("Invalid argument");
+ return;
+ }
+
+ user = gum_user_create_sync(FALSE);
+ if (!user) {
+ _ERR("failed to get user");
+ return;
+ }
+
+ g_object_set(G_OBJECT(user), GUM_ATTR_NAME, title,
+ GUM_ATTR_ICON, icon,
+ GUM_ATTR_PASSWORD, parameter,
+ GUM_ATTR_USERTYPE, GUM_USERTYPE_NORMAL, NULL);
+
+ r = gum_user_add_sync(user);
+ if (!r)
+ _ERR("failed to add user");
+
+ g_object_unref(user);
+}
+
static struct data_class dclass = {
.init = _init,
.fini = _fini,
.get_items = _get_items,
- .select = _select
+ .select = _select,
+ .add = _add
};
struct data_class *datamgr_user_get_dclass(void)