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