enable to delete user in view of action menu 36/47136/2
authorSoohye Shin <soohye.shin@samsung.com>
Mon, 31 Aug 2015 06:50:17 +0000 (15:50 +0900)
committerSoohye Shin <soohye.shin@samsung.com>
Mon, 31 Aug 2015 08:03:24 +0000 (17:03 +0900)
Change-Id: Ia25b67ddf2dfa85474345c5990bb30c03bfd6e45
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
include/view.h
src/view/view_action_menu.c
src/view/view_user_edit.c

index 5159a71..d5e1a19 100644 (file)
 #ifndef __AIR_HOME_VIEW_H__
 #define __AIR_HOME_VIEW_H__
 
+#include "datamgr.h"
+
 enum update_type {
        UPDATE_TYPE_EDIT,
        UPDATE_TYPE_PHOTO,
        UPDATE_TYPE_NOTI,
        UPDATE_TYPE_USER,
-       UPDATE_TYPE_RESET
+       UPDATE_TYPE_RESET,
+       UPDATE_TYPE_MENU
+};
+
+enum menu_type {
+       MENU_TYPE_ADD,
+       MENU_TYPE_EDIT,
+       MENU_TYPE_MAX
+};
+
+struct view_update_data {
+       bool state;
+       int type;
+       struct datamgr_item *di;
 };
 
 view_class *view_home_get_vclass(void);
index 59861eb..41b34fd 100644 (file)
@@ -27,6 +27,7 @@
 #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,
@@ -39,12 +40,6 @@ enum input_handler_type {
        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;
@@ -56,6 +51,8 @@ struct _priv {
        bool edited;
 
        enum menu_type mtype;
+       struct datamgr *dm;
+       struct datamgr_item *di;
 };
 
 struct _menu_info {
@@ -195,6 +192,29 @@ static void _delete_popup(struct _priv *priv, Evas_Object *obj)
        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;
@@ -245,8 +265,7 @@ static void _select(int id, void *data, Evas_Object *obj)
                _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);
@@ -332,6 +351,11 @@ static Evas_Object *_create(Evas_Object *win, void *data)
        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");
@@ -350,6 +374,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
 
        priv->win = win;
        priv->base = base;
+       priv->dm = data;
 
        if (!_add_base(priv)) {
                _ERR("failed to add menu");
@@ -439,9 +464,6 @@ static void _show(void *data)
 
        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;
@@ -474,6 +496,8 @@ static void _hide(void *data)
        evas_object_hide(priv->base);
        priv->list = NULL;
        priv->edited = false;
+       priv->di = NULL;
+       priv->mtype = MENU_TYPE_MAX;
 }
 
 static void _destroy(void *data)
@@ -496,6 +520,7 @@ 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");
@@ -505,8 +530,15 @@ static void _update(void *view_data, int update_type, void *data)
        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");
index 7ba1496..e1479eb 100644 (file)
@@ -551,7 +551,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
 
        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;
 }
@@ -688,7 +688,7 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                Evas_Event_Key_Down *ev)
 {
        struct _priv *priv;
-       bool edited;
+       struct view_update_data vdata;
 
        if (!data) {
                _ERR("Invalid argument");
@@ -737,9 +737,18 @@ static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
                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: