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