#define TITLE_ACTION_MENU_RESET "Reset"
#define TITLE_ACTION_MENU_DELETE "Delete"
#define COUNT_MENU_ITEM 4
+#define MAX_BUF 128
enum input_handler_type {
INPUT_HANDLER_TYPE_BTN,
INPUT_HANDLER_TYPE_POPUP_CANCEL
};
-enum menu_type {
- MENU_TYPE_ADD,
- MENU_TYPE_EDIT,
- MENU_TYPE_MAX
-};
-
struct _priv {
Evas_Object *win;
Evas_Object *base;
bool edited;
enum menu_type mtype;
+ struct datamgr *dm;
+ struct datamgr_item *di;
};
struct _menu_info {
priv->popup = NULL;
}
+static void _delete_user(struct _priv *priv, Evas_Object *obj)
+{
+ char buf[MAX_BUF];
+
+ if (!priv->di)
+ return;
+
+ priv->di->action = ITEM_SELECT_ACTION_DELETE;
+ if (!datamgr_select_item(priv->dm, priv->di)) {
+ _ERR("failed to delete user");
+ return;
+ }
+
+ _delete_popup(priv, obj);
+ snprintf(buf, sizeof(buf), "%s %s", priv->di->title,
+ MESSAGE_USER_DELETE);
+ utils_add_toast(priv->win, buf);
+
+ viewmgr_hide_view(VIEW_ACTION_MENU);
+ viewmgr_hide_view(VIEW_USER_EDIT);
+ viewmgr_show_view(VIEW_USER);
+}
+
static void _select(int id, void *data, Evas_Object *obj)
{
struct _priv *priv;
_delete_popup(priv, obj);
break;
case INPUT_HANDLER_TYPE_POPUP_DELETE:
- _delete_popup(priv, obj);
- /* It should be implemented later */
+ _delete_user(priv, obj);
break;
case INPUT_HANDLER_TYPE_POPUP_CANCEL:
_delete_popup(priv, obj);
struct _priv *priv;
Evas_Object *base;
+ if (!win || !data) {
+ _ERR("Invalid argument");
+ return NULL;
+ }
+
priv = calloc(1, sizeof(*priv));
if (!priv) {
_ERR("failed to calloc priv");
priv->win = win;
priv->base = base;
+ priv->dm = data;
if (!_add_base(priv)) {
_ERR("failed to add menu");
priv = data;
- /* FIXME: It will be fixed after getting value of editable state */
- priv->mtype = MENU_TYPE_ADD;
-
if (!_add_menu_item(priv)) {
_ERR("failed to add item");
return;
evas_object_hide(priv->base);
priv->list = NULL;
priv->edited = false;
+ priv->di = NULL;
+ priv->mtype = MENU_TYPE_MAX;
}
static void _destroy(void *data)
static void _update(void *view_data, int update_type, void *data)
{
struct _priv *priv;
+ struct view_update_data *vdata;
if (!view_data) {
_ERR("Invalid argument");
priv = view_data;
switch (update_type) {
- case UPDATE_TYPE_EDIT:
- priv->edited = *(bool *)data;
+ case UPDATE_TYPE_MENU:
+ if (!data)
+ return;
+
+ vdata = data;
+ priv->edited = vdata->state;
+ priv->mtype = vdata->type;
+ if (vdata->di)
+ priv->di = vdata->di;
break;
default:
_ERR("Invalid type");
viewmgr_set_view_data(VIEW_USER_EDIT, priv);
viewmgr_add_view(view_photo_get_vclass(), NULL);
- viewmgr_add_view(view_action_menu_get_vclass(), NULL);
+ viewmgr_add_view(view_action_menu_get_vclass(), data);
return base;
}
Evas_Event_Key_Down *ev)
{
struct _priv *priv;
- bool edited;
+ struct view_update_data vdata;
if (!data) {
_ERR("Invalid argument");
case INPUT_HANDLER_TYPE_ENTRY:
case INPUT_HANDLER_TYPE_PIN:
case INPUT_HANDLER_TYPE_LOCK:
- edited = _check_changed_input(priv);
- viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_TYPE_EDIT,
- &edited);
+ vdata.state = _check_changed_input(priv);
+ vdata.type = MENU_TYPE_ADD;
+ if (priv->di) {
+ if (priv->user_type == USER_ITEM_ADMIN &&
+ priv->di->type !=
+ USER_ITEM_ADMIN) {
+ vdata.type = MENU_TYPE_EDIT;
+ vdata.di = priv->di;
+ }
+ }
+ viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_TYPE_MENU,
+ &vdata);
viewmgr_show_view(VIEW_ACTION_MENU);
break;
default: