4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <setting-menuscreen.h>
25 #define UG_MODULE_API __attribute__ ((visibility("default")))
28 setting_view *__get_menuscreen_view_to_load(service_h service)
31 //setting_retvm_if(NULL == data, NULL, "NULL == data");
32 return &setting_view_menuscreen_main;
35 Evas_Object *__get_menuscreen_layout_to_return(service_h service, void *priv)
38 SettingMenuscreenUG *menuscreenUG = priv;
39 return menuscreenUG->ly_main;
42 static void setting_menuscreen_ug_cb_resize(void *data, Evas *e,
43 Evas_Object *obj, void *event_info)
45 SettingMenuscreenUG *ad = (SettingMenuscreenUG *) data;
46 /* setting_view_update(&setting_view_about_main, ad); */
47 setting_view_update(ad->view_to_load, ad);
50 static void *setting_menuscreen_ug_on_create(ui_gadget_h ug,
51 enum ug_mode mode, service_h service,
54 setting_retvm_if((!priv), NULL, "!priv");
56 SettingMenuscreenUG *menuscreenUG = priv;
57 menuscreenUG->ug = ug;
59 setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
61 menuscreenUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
62 menuscreenUG->win_get = (Evas_Object *) ug_get_window();
64 evas_object_show(menuscreenUG->win_main_layout);
65 menuscreenUG->evas = evas_object_evas_get(menuscreenUG->win_main_layout);
67 setting_retvm_if(menuscreenUG->win_main_layout == NULL, NULL, "cannot get main window ");
69 /* register view node table */
70 setting_view_node_table_intialize();
71 setting_view_node_table_register(&setting_view_menuscreen_main, NULL);
72 setting_view_node_table_register(&setting_view_menuscreen_password, &setting_view_menuscreen_main);
74 //setting_create_Gendial_itc("dialogue/1text.1icon.2", &(menuscreenUG->itc_1text_1icon));
75 setting_create_Gendial_itc("dialogue/1text.1icon.2", &(menuscreenUG->itc_1text_1icon_2));
77 menuscreenUG->itc_seperator.item_style = "dialogue/separator";
78 menuscreenUG->itc_seperator.func.text_get = NULL;
79 menuscreenUG->itc_seperator.func.content_get = NULL;
80 menuscreenUG->itc_seperator.func.state_get = NULL;
81 menuscreenUG->itc_seperator.func.del = NULL;
84 setting_create_Gendial_itc("dialogue/1text", &(menuscreenUG->itc_1text));
86 /* creating a view. */
87 menuscreenUG->view_to_load = __get_menuscreen_view_to_load(service);
88 setting_retvm_if(NULL == menuscreenUG->view_to_load, NULL, "NULL == menuscreenUG->view_to_load");
89 setting_view_node_set_cur_view(menuscreenUG->view_to_load);
90 setting_view_create(menuscreenUG->view_to_load, (void *)menuscreenUG);
91 evas_object_event_callback_add(menuscreenUG->win_main_layout,EVAS_CALLBACK_RESIZE, setting_menuscreen_ug_cb_resize, menuscreenUG);
92 return __get_menuscreen_layout_to_return(service, menuscreenUG);
95 static void setting_menuscreen_ug_on_start(ui_gadget_h ug, service_h service,
100 static void setting_menuscreen_ug_on_pause(ui_gadget_h ug, service_h service,
105 static void setting_menuscreen_ug_on_resume(ui_gadget_h ug, service_h service,
111 static void _clear_menuscreen_list(Eina_List *menu_screen_list)
114 Eina_List *elist = NULL;
115 ug_menuscreen_info* pnode = NULL;
117 EINA_LIST_FOREACH( menu_screen_list, elist, pnode ) {
118 menu_screen_list = eina_list_remove(menu_screen_list, pnode);
120 eina_list_free( menu_screen_list );
123 static void setting_menuscreen_ug_on_destroy(ui_gadget_h ug, service_h service,
127 setting_retm_if((!priv), "!priv");
128 SettingMenuscreenUG *menuscreenUG = priv;
130 evas_object_event_callback_del(menuscreenUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_menuscreen_ug_cb_resize); /* fix flash issue for gallery */
131 menuscreenUG->ug = ug;
136 if(menuscreenUG->menuscreen_list) {
137 _clear_menuscreen_list( menuscreenUG->menuscreen_list);
138 menuscreenUG->menuscreen_list = NULL;
141 /* called when this shared gadget is terminated. similar with app_exit */
142 if (&setting_view_menuscreen_main == menuscreenUG->view_to_load) {
143 setting_view_destroy(&setting_view_menuscreen_main, menuscreenUG);
146 if (NULL != ug_get_layout(menuscreenUG->ug)) {
147 evas_object_hide((Evas_Object *) ug_get_layout(menuscreenUG->ug));
148 evas_object_del((Evas_Object *) ug_get_layout(menuscreenUG->ug));
154 static void setting_menuscreen_ug_on_message(ui_gadget_h ug, service_h msg,
155 service_h service, void *priv)
160 static void setting_menuscreen_ug_on_event(ui_gadget_h ug,
161 enum ug_event event, service_h service,
166 case UG_EVENT_LOW_MEMORY:
168 case UG_EVENT_LOW_BATTERY:
170 case UG_EVENT_LANG_CHANGE:
172 case UG_EVENT_ROTATE_PORTRAIT:
174 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
176 case UG_EVENT_ROTATE_LANDSCAPE:
178 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
180 case UG_EVENT_REGION_CHANGE:
187 static void setting_menuscreen_ug_on_key_event(ui_gadget_h ug,
188 enum ug_key_event event,
189 service_h service, void *priv)
192 SettingMenuscreenUG *ad = (SettingMenuscreenUG *) priv;
195 case UG_KEY_EVENT_END:
197 if (elm_naviframe_top_item_get(ad->navi_bar) ==
198 elm_naviframe_bottom_item_get(ad->navi_bar)) {
201 /* elm_naviframe_item_pop(ad->navi_bar); */
202 setting_view_cb_at_endKey(ad);
211 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
214 SettingMenuscreenUG *menuscreenUG = calloc(1, sizeof(SettingMenuscreenUG));
215 setting_retvm_if(!menuscreenUG, -1, "Create SettingMenuscreenUG obj failed");
217 ops->create = setting_menuscreen_ug_on_create;
218 ops->start = setting_menuscreen_ug_on_start;
219 ops->pause = setting_menuscreen_ug_on_pause;
220 ops->resume = setting_menuscreen_ug_on_resume;
221 ops->destroy = setting_menuscreen_ug_on_destroy;
222 ops->message = setting_menuscreen_ug_on_message;
223 ops->event = setting_menuscreen_ug_on_event;
224 ops->key_event = setting_menuscreen_ug_on_key_event;
225 ops->priv = menuscreenUG;
226 ops->opt = UG_OPT_INDICATOR_ENABLE;
231 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
234 struct SettingMenuscreenUG *menuscreenUG;
235 setting_retm_if(!ops, "ops == NULL");
237 menuscreenUG = ops->priv;
243 /* ***************************************************
247 ***************************************************/
249 void setting_menuscreen_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
252 SettingMenuscreenUG *ad = (SettingMenuscreenUG *) priv;
259 base = (Evas_Object *) ug_get_layout(ug);
264 case UG_MODE_FULLVIEW:
265 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
267 //elm_win_resize_object_add(ad->win_get, base);
268 evas_object_show(base);
279 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)