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.
23 *@defgroup setting-about
24 *UG creation code for setting-about
35 * - Diagnostics and Usage
39 #include <setting-about.h>
40 #include <setting-about-main.h>
43 #define UG_MODULE_API __attribute__ ((visibility("default")))
47 * Event process when the sizeof UG view changes
54 static void setting_about_ug_cb_resize(void *data, Evas *e, Evas_Object *obj,
57 SettingAboutUG *ad = (SettingAboutUG *) data;
58 setting_view_update(&setting_view_about_main, ad);
62 * on_create function of the UG
71 static void *setting_about_ug_on_create(ui_gadget_h ug, enum ug_mode mode,
72 service_h service, void *priv)
75 setting_retvm_if((NULL == priv), NULL, "NULL == priv");
76 SettingAboutUG *aboutUG = priv;
79 aboutUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
80 aboutUG->win_get = (Evas_Object *) ug_get_window();
81 evas_object_show(aboutUG->win_main_layout);
82 aboutUG->evas = evas_object_evas_get(aboutUG->win_main_layout);
84 setting_retvm_if(aboutUG->win_main_layout == NULL, NULL,
85 "cannot get main window ");
87 /* register view node table */
88 setting_view_node_table_intialize();
89 setting_view_node_table_register(&setting_view_about_main, NULL);
91 /* setting_view_node_table_register(&setting_view_about_about_view, &setting_view_about_main); */
93 /* creating a view. */
94 setting_create_Gendial_itc("dialogue/1text", &(aboutUG->itc_1text));
95 setting_create_Gendial_itc("dialogue/2text.3", &(aboutUG->itc_2text_2));
96 setting_create_Gendial_itc("dialogue/title",
97 &(aboutUG->itc_group_item));
98 setting_create_Gendial_itc("dialogue/1icon", &(aboutUG->itc_1icon));
99 setting_create_Gendial_itc("dialogue/2text.3/expandable",
100 &(aboutUG->itc_2text_3_parent));
101 setting_create_Gendial_itc("dialogue/1text.1icon/expandable2",
102 &(aboutUG->itc_1icon_1text_sub));
103 setting_create_Gendial_itc("multiline/1text",
104 &(aboutUG->itc_help_style));
106 aboutUG->itc_seperator.item_style = "dialogue/separator/21/with_line";
107 aboutUG->itc_seperator.func.text_get = NULL;
108 aboutUG->itc_seperator.func.content_get = NULL;
109 aboutUG->itc_seperator.func.state_get = NULL;
110 aboutUG->itc_seperator.func.del = NULL;
111 setting_view_node_set_cur_view(&setting_view_about_main);
112 setting_view_create(&setting_view_about_main, (void *)aboutUG);
113 evas_object_event_callback_add(aboutUG->win_main_layout,
114 EVAS_CALLBACK_RESIZE,
115 setting_about_ug_cb_resize, aboutUG);
117 aboutUG->popup_showed_flag = FALSE;
118 return aboutUG->ly_main;
121 static void setting_about_ug_on_start(ui_gadget_h ug, service_h service,
126 static void setting_about_ug_on_pause(ui_gadget_h ug, service_h service,
131 static void setting_about_ug_on_resume(ui_gadget_h ug, service_h service,
135 setting_retm_if((!priv), "!priv");
136 SettingAboutUG *aboutUG = priv;
138 char str[MAX_DISPLAY_STR_LEN_ON_PHONE_INFO] = { 0, };
140 memset(str, 0x00, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
141 if(aboutUG->item_data_wifi)
143 setting_about_main_get_wifi_mac_address_string(str, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
144 aboutUG->item_data_wifi->sub_desc = (char*)g_strdup(str);
145 elm_object_item_data_set(aboutUG->item_data_wifi->item, aboutUG->item_data_wifi);
146 elm_genlist_item_update(aboutUG->item_data_wifi->item);
148 memset(str, 0x00, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
149 if(aboutUG->item_data_bt)
151 setting_about_main_get_bluetooth_address_string(str, MAX_DISPLAY_STR_LEN_ON_PHONE_INFO);
152 aboutUG->item_data_bt->sub_desc = (char*)g_strdup(str);
153 elm_object_item_data_set(aboutUG->item_data_bt->item, aboutUG->item_data_bt);
154 elm_genlist_item_update(aboutUG->item_data_bt->item);
159 * on_destroy function of the UG
165 static void setting_about_ug_on_destroy(ui_gadget_h ug, service_h service,
169 setting_retm_if((!priv), "!priv");
170 SettingAboutUG *aboutUG = priv;
172 evas_object_event_callback_del(aboutUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_about_ug_cb_resize); /* fix flash issue for gallery */
175 /* delete the allocated objects. */
176 setting_view_destroy(&setting_view_about_main, aboutUG);
177 if (NULL != ug_get_layout(aboutUG->ug)) {
178 evas_object_hide((Evas_Object *) ug_get_layout(aboutUG->ug));
179 evas_object_del((Evas_Object *) ug_get_layout(aboutUG->ug));
185 static void setting_about_ug_on_message(ui_gadget_h ug, service_h msg,
186 service_h service, void *priv)
191 static void setting_about_ug_on_event(ui_gadget_h ug, enum ug_event event,
192 service_h service, void *priv)
196 case UG_EVENT_LOW_MEMORY:
198 case UG_EVENT_LOW_BATTERY:
200 case UG_EVENT_LANG_CHANGE:
202 case UG_EVENT_ROTATE_PORTRAIT:
204 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
206 case UG_EVENT_ROTATE_LANDSCAPE:
208 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
210 case UG_EVENT_REGION_CHANGE:
217 static void setting_about_ug_on_key_event(ui_gadget_h ug,
218 enum ug_key_event event,
219 service_h service, void *priv)
222 SettingAboutUG *ad = (SettingAboutUG *) priv;
227 case UG_KEY_EVENT_END:
229 if (elm_naviframe_top_item_get(ad->navi_bar) ==
230 elm_naviframe_bottom_item_get(ad->navi_bar)) {
233 /* elm_naviframe_item_pop(ad->navi_bar); */
234 setting_view_cb_at_endKey(ad);
243 static void __on_sim_get_msisdn(TapiHandle *handle, int result, void *data, void *user_data)
246 ret_if(!user_data || !data);
247 SettingAboutUG *ad = user_data;
248 TelSimAccessResult_t access_rt = result;
249 //TelSimMsisdnList_t *list = data;
252 SETTING_TRACE("access_rt[%d]", access_rt);
256 memcpy(&(ad->my_numbers), data, sizeof(TelSimMsisdnList_t));
258 TelSimMsisdnList_t r_numbers;
259 /////////r_numbers.count = 3;
261 safeCopyStr(r_numbers.list[0].name, "n1", 30);
262 safeCopyStr(r_numbers.list[1].name, "n2", 30);
263 safeCopyStr(r_numbers.list[2].name, "n3", 30);
264 safeCopyStr(r_numbers.list[0].num, "1111111111", 30);
265 safeCopyStr(r_numbers.list[1].num, "2222222222", 30);
266 safeCopyStr(r_numbers.list[2].num, "3333333333", 30);
267 memcpy(&(ad->my_numbers), &r_numbers, sizeof(TelSimMsisdnList_t));
271 char sel_num[TAPI_SIM_XDN_DIALING_NUMBER_LEN + 1] = { 0, };
272 setting_get_string_slp_key(STR_SLP_SETTING_SELECT_NUM, sel_num, &err);
274 bool isFound = FALSE;
275 SETTING_TRACE("ad->my_numbers.count[%d]", ad->my_numbers.count);
277 for (i = 0; i < ad->my_numbers.count && i < SETTING_ABOUT_MY_NUMBERS_LEN; i++) {
278 SETTING_TRACE("index[%d] - name[%s], num[%s]", i, ad->my_numbers.list[i].name, ad->my_numbers.list[i].num);
279 if (0 == safeStrCmp(sel_num, ad->my_numbers.list[i].num)) {
283 if (!isFound && ad->my_numbers.count > 0) {//if not found, set as the first num of returned-list
284 SETTING_TRACE("Selected-num hasn't been found, to let the first one as defalut one");
285 setting_set_string_slp_key(STR_SLP_SETTING_SELECT_NUM, ad->my_numbers.list[0].num, &err);
288 ad->tapi_responsed = TRUE;
290 evas_object_del(ad->popup);
293 setting_about_generate_genlist((void *)ad);
296 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
299 SettingAboutUG *aboutUG = calloc(1, sizeof(SettingAboutUG));
300 setting_retvm_if(!aboutUG, -1, "Create SettingAboutUG obj failed");
302 ops->create = setting_about_ug_on_create;
303 ops->start = setting_about_ug_on_start;
304 ops->pause = setting_about_ug_on_pause;
305 ops->resume = setting_about_ug_on_resume;
306 ops->destroy = setting_about_ug_on_destroy;
307 ops->message = setting_about_ug_on_message;
308 ops->event = setting_about_ug_on_event;
309 ops->key_event = setting_about_ug_on_key_event;
311 ops->opt = UG_OPT_INDICATOR_ENABLE;
315 setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
316 if (VCONFKEY_TELEPHONY_SIM_INSERTED == value)//There is a sim card, so do display to user
318 aboutUG->handle = tel_init(NULL);
319 if (aboutUG->handle) {
320 SETTING_TRACE("tel_init sucessed, and there is at least one sim card, now trying to get misidns");
321 if (tel_get_sim_msisdn(aboutUG->handle, __on_sim_get_msisdn, aboutUG) == TAPI_API_SUCCESS) {
322 SETTING_TRACE("tel_get_sim_msisdn sent");
329 SETTING_TRACE_DEBUG("There is no sim card, so skip getting misidns");
334 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
337 SettingAboutUG *aboutUG;
338 setting_retm_if(!ops, "ops == NULL");
343 && tel_deinit(aboutUG->handle) == TAPI_API_SUCCESS) {
344 SETTING_TRACE("tel_deinit sucessed");
350 /* ***************************************************
354 ****************************************************/
355 void setting_about_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
358 SettingAboutUG *ad = (SettingAboutUG *) priv;
365 base = (Evas_Object *) ug_get_layout(ug);
370 case UG_MODE_FULLVIEW:
371 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
373 elm_win_resize_object_add(ad->win_get, base);
374 evas_object_show(base);
384 * Reset function to 'reset' the settings of the UG, it will be invoked by 'Reset' UG
389 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
392 #if SUPPORT_RUN_SYSTEM_COMMAND
393 return excuteCmd(SETTING_POSTINST_FILE, 1, "about");
395 return vconf_set_str(VCONFKEY_SETAPPL_DEVICE_NAME_STR, SETTING_ABOUT_DEFAULT_DEVICE_NAME);