Tizen 2.0 Release
[apps/home/settings.git] / src / setting-more-menu.c
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.0 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://floralicense.org/license/
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #include <setting-more-menu.h>
18
19 static int setting_more_menu_create(void *cb);
20 static int setting_more_menu_destroy(void *cb);
21 static int setting_more_menu_update(void *cb);
22 static int setting_more_menu_cleanup(void *cb);
23
24 setting_view setting_view_more_menu = {
25         .create = setting_more_menu_create,
26         .destroy = setting_more_menu_destroy,
27         .update = setting_more_menu_update,
28         .cleanup = setting_more_menu_cleanup,
29 };
30
31 /* ***************************************************
32  *
33  *basic func
34  *
35  ***************************************************/
36 const static Elm_Genlist_Item_Class itc_sep = {
37         .item_style = "dialogue/separator",
38         .func.text_get = NULL,
39         .func.content_get = NULL,
40         .func.state_get = NULL,
41         .func.del = NULL,
42 };
43
44 static int setting_more_menu_create(void *cb)
45 {
46         SETTING_TRACE_BEGIN;
47         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
48
49         setting_main_appdata *ad = (setting_main_appdata *) cb;
50
51         Evas_Object *scroller = NULL;
52         char *title;
53         menu_list_load_fn2 load_fn = NULL;
54         if (SETTING_VIEW_CONNECTIVE_MORE == ad->view_load)
55         {
56                 title = _(KeyStr_MoreConnect);
57                 load_fn = __load_connectivity_menu_list;
58         }
59         else if (SETTING_VIEW_SYSTEM_MORE == ad->view_load)
60         {
61                 title = _(KeyStr_MoreSystem);
62                 load_fn = __load_system_menu_list;
63         }
64         else
65         {
66                 SETTING_TRACE_ERROR("Invalid view");
67                 return SETTING_RETURN_FAIL;
68         }
69         setting_push_layout_navi_bar_genlist(ad->win_main, ad->win_main,
70                                      title, _("IDS_COM_BODY_BACK"),
71                                      NULL,
72                                      setting_more_menu_click_softkey_cancel_cb,
73                                      NULL, ad, &scroller, ad->navibar_main);
74
75         evas_object_smart_callback_add(scroller, "realized", __gl_realized, ad);
76
77         Elm_Object_Item *item = elm_genlist_item_append(scroller, &(itc_sep),
78                                        NULL, NULL,
79                                        ELM_GENLIST_ITEM_NONE, NULL, NULL);
80         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
81
82         load_fn(ad, Cfg_Item_Pos_Level1, scroller);
83
84         item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL,
85                                     ELM_GENLIST_ITEM_NONE, NULL, NULL);
86         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
87
88         ad->genlist_load = scroller;
89         setting_view_more_menu.is_create = 1;
90         return SETTING_RETURN_SUCCESS;
91 }
92
93 static int setting_more_menu_destroy(void *cb)
94 {
95         SETTING_TRACE_BEGIN;
96         /* error check */
97         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
98
99         setting_main_appdata *ad = (setting_main_appdata *) cb;
100         if (0 == setting_view_more_menu.is_create)
101         {
102                 //already not exsit
103                 return SETTING_RETURN_SUCCESS;
104         }
105
106         evas_object_smart_callback_del(ad->genlist_load, "realized", __gl_realized);
107
108         elm_naviframe_item_pop(ad->navibar_main);
109         ad->view_load = SETTING_VIEW_MAIN;
110         ad->genlist_load = ad->main_genlist;
111         setting_view_more_menu.is_create = 0;
112         return SETTING_RETURN_SUCCESS;
113 }
114
115 static int setting_more_menu_update(void *cb)
116 {
117         return SETTING_RETURN_SUCCESS;
118
119 }
120
121 static int setting_more_menu_cleanup(void *cb)
122 {
123         SETTING_TRACE_BEGIN;
124         /* error check */
125         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
126         setting_more_menu_destroy(cb);
127
128         return SETTING_RETURN_SUCCESS;
129 }
130
131 /* ***************************************************
132  *
133  *general func
134  *
135  ***************************************************/
136
137 /* ***************************************************
138  *
139  *call back func
140  *
141  ***************************************************/
142
143 static void
144 setting_more_menu_click_softkey_cancel_cb(void *data,
145                                                         Evas_Object *obj,
146                                                         void *event_info)
147 {
148         SETTING_TRACE_BEGIN;
149         /* error check */
150         retm_if(data == NULL, "Data parameter is NULL");
151         setting_main_appdata *ad = (setting_main_appdata *) data;
152
153         setting_view_change(&setting_view_more_menu,
154                             &setting_view_main, ad);
155 }
156