2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 * http://floralicense.org/license/
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.
18 #include <Ecore_X.h> /* ecore_x_window_size_get */
19 #include <utilX.h> /* KEY_END */
21 #include <vconf-keys.h>
23 #include <appcore-efl.h>
24 #include <efl_assist.h>
25 #include <system_settings.h>
27 #include "setting-sound.h"
28 #include "setting-volume.h"
29 #include "setting-clock.h"
30 #include "setting-homescreen.h"
31 #include "setting-info.h"
32 #include "setting-bluetooth.h"
33 #include "setting-motion.h"
34 #include "setting-display.h"
35 #include "setting-language.h"
36 #include "setting-reset.h"
37 #include "setting-battery.h"
38 #include "setting-privacy.h"
39 #include "setting-double.h"
40 #include "setting-safety.h"
41 #include "setting-notification.h"
43 #include "setting-common-sound.h"
45 #include "setting_control_bt.h"
46 #include "setting_view_toast.h"
47 #include "setting_indicator_util.h"
49 #define FEATURE_SETTING_CHANGEABLE
51 #ifdef FEATURE_SETTING_CHANGEABLE
52 #include "setting-theme.h"
56 Evas_Object *_create_location_list(void *data);
57 static Evas_Object *location_genlist = NULL;
58 static void _location_cb(void *data, Evas_Object *obj, void *event_info);
61 #define LANGUAGE_ICON_DISABLED "b_settings_language_disabled.png"
62 #define LANGUAGE_ICON_ENABLED "b_settings_language.png"
64 static struct _menu_item setting_emergency_menu_its[] = {
65 #ifdef FEATURE_SETTING_EMUL
66 { "IDS_ST_BUTTON_CLOCK", "b_settings_change_clock.png", clock_cb },
68 /*#if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL) */
69 { "IDS_ST_OPT_SOUND_ABB2", "b_settings_volume.png", sound_cb },
70 /* { "IDS_ST_OPT_VOLUME", "b_settings_volume.png", volume_cb }, */
72 { "IDS_ST_MBODY_DISPLAY_ABB", "b_setting_display.png", display_cb },
73 #ifndef FEATURE_SETTING_EMUL
74 /* { "IDS_ST_BODY_BATTERY_ABB", "b_settings_battery.png", battery_cb }, */
75 { "IDS_QP_BUTTON_BLUETOOTH", "b_settings_bluetooth.png", bluetooth_cb },
77 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
78 { "IDS_ST_MBODY_SAFETY_ABB", "b_settings_safety.png", safety_cb },
83 static struct _menu_item setting_menu_its[] = {
84 { "IDS_ST_BUTTON_CLOCK", "b_settings_change_clock.png", clock_cb },
85 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
86 { "IDS_ST_BODY_WALLPAPERS", "b_setting_wallpaper.png", homescreen_cb },
87 { "IDS_ST_BUTTON_NOTIFICATIONS", "b_settings_notifications.png", notification_cb },
89 /*#ifndef FEATURE_SETTING_EMUL */
90 { "IDS_ST_OPT_SOUND_ABB2", "b_settings_volume.png", sound_cb },
91 /* { "IDS_ST_OPT_VOLUME", "b_settings_volume.png", volume_cb }, */
93 { "IDS_ST_MBODY_DISPLAY_ABB", "b_setting_display.png", display_cb },
94 #if defined(_LOCATION_MENU_ON)
95 { "Location", "b_settings_location.png", location_cb },
97 { "IDS_ST_MBODY_TEXT_INPUT_ABB", "text_input_icon.png", keyboard_cb },
98 #ifndef FEATURE_SETTING_EMUL
99 /* { "IDS_ST_BODY_BATTERY_ABB", "b_settings_battery.png", battery_cb }, */
100 { "IDS_QP_BUTTON_BLUETOOTH", "b_settings_bluetooth.png", bluetooth_cb },
101 /* { "IDS_WMGR_HEADER_MOTIONS", "b_settings_motion.png", motion_cb }, */
103 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
104 { "IDS_ST_MBODY_DOUBLE_PRESS_ABB", "b_setting_double-press.png", double_pressing_cb },
106 /* { "IDS_ST_BUTTON_LANGUAGE", "b_settings_language.png", language_cb }, */
107 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
108 /*{ "Safety", "b_settings_safety.png", safety_cb }, */
111 /* factory reset is not supported in tizen_2.3 */
113 { "IDS_ST_BODY_RESET_GEAR_ABB", "b_settings_reset.png", reset_gear_cb },
116 #ifndef FEATURE_SETTING_EMUL
117 { "IDS_ST_BUTTON_GEAR_INFO", "b_settings_info.png", gear_info_cb },
122 static int is_emergency;
123 static Elm_Object_Item *lang_item = NULL;
124 static bool running = false;
125 static Ecore_Timer *running_timer = NULL;
126 static Ecore_Timer *scrl_timer = NULL;
128 static Evas_Object *_create_bg(Evas_Object *parent);
129 static Evas_Object *_create_layout_main(Evas_Object *parent);
130 static Evas_Object *_create_naviframe_layout(Evas_Object *parent);
131 static void _create_view_layout(appdata *ad);
132 static int init_clocksetting(appdata *ad);
133 static Eina_Bool _app_ctrl_timer_cb(void *data);
134 static Eina_Bool _scroller_timer_cb(void *data);
136 #ifdef FEATURE_SETTING_CHANGEABLE
138 static Ea_Theme_Color_Table *_changeable_colors_set(void)
140 Ea_Theme_Color_Table *table;
142 /* Enable changeable UI */
143 ea_theme_changeable_ui_enabled_set(EINA_TRUE);
145 table = ea_theme_color_table_new(COLOR_INFO_TABLE);
146 ea_theme_colors_set(table, EA_THEME_STYLE_DEFAULT);
151 static void _changeable_colors_free(Ea_Theme_Color_Table *table)
153 /* when the process is killed, you don’t need to call this */
154 /*ea_theme_colors_unset(table, EA_THEME_STYLE_DEFAULT); // This API will be removed. */
155 ea_theme_color_table_free(table);
159 void clock_cb(void *data, Evas_Object *obj, void *event_info)
161 Evas_Object *layout = NULL;
162 Elm_Object_Item *nf_it = NULL;
166 DBG("Setting - ad is null");
171 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
175 if (is_running_clock) {
176 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
180 initialize_clock(data);
182 /*genlist = _create_clock_list(data); */
183 layout = _clock_type_cb(data);
184 if (layout == NULL) {
185 DBG("%s", "clock cb - layout is null");
190 const char* navi_title = _("IDS_ST_BUTTON_CLOCK");
191 Eina_Bool title_flag = EINA_TRUE;
193 const char* navi_title = NULL;
194 Eina_Bool title_flag = FALSE;
196 nf_it = elm_naviframe_item_push(ad->nf, navi_title, NULL, NULL, layout, NULL);
197 evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _clear_clock_cb, ad);
198 /*elm_naviframe_item_pop_cb_set(nf_it, _clear_clock_cb, ad); */
199 elm_naviframe_item_title_enabled_set(nf_it, title_flag, EINA_FALSE);
201 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
202 is_running_clock = 1;
204 ad->MENU_TYPE = SETTING_CLOCK;
207 void notification_cb(void *data, Evas_Object *obj, void *event_info)
209 Evas_Object *genlist = NULL;
210 Elm_Object_Item *nf_it = NULL;
214 DBG("Setting - ad is null");
219 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
225 genlist = _create_noti_list(data);
226 if (genlist == NULL) {
227 DBG("%s", "notification_cb - genlist is null");
231 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
233 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
235 elm_naviframe_item_pop_cb_set(nf_it, _clear_noti_cb, ad);
236 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
238 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
240 ad->MENU_TYPE = SETTING_NOTIFICATION;
243 void homescreen_cb(void *data, Evas_Object *obj, void *event_info)
245 Evas_Object *layout = NULL;
246 Elm_Object_Item *nf_it = NULL;
250 DBG("Setting - ad is null");
255 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
259 /*layout = _create_homescreen_list(data); */
260 layout = create_wallpaper_list(data);
261 if (layout == NULL) {
262 DBG("%s", "homescreen cb - layout is null");
266 const char* navi_title = _("IDS_ST_BODY_WALLPAPERS");
267 Eina_Bool title_flag = EINA_TRUE;
269 const char* navi_title = NULL;
270 Eina_Bool title_flag = FALSE;
272 nf_it = elm_naviframe_item_push(ad->nf, navi_title, NULL, NULL, layout, NULL);
273 /*elm_naviframe_item_pop_cb_set(nf_it, _clear_homescreen_cb, ad); */
274 evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _clear_homescreen_cb, ad);
275 elm_naviframe_item_title_enabled_set(nf_it, title_flag, EINA_FALSE);
277 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
279 ad->MENU_TYPE = SETTING_HOMESCREEN;
283 void sound_cb(void *data, Evas_Object *obj, void *event_info)
285 Evas_Object *genlist = NULL;
286 Elm_Object_Item *nf_it = NULL;
290 DBG("Setting - ad is null");
295 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
301 genlist = _create_sound_list(data);
302 if (genlist == NULL) {
303 DBG("%s", "sound cb - genlist is null");
307 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
309 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
311 elm_naviframe_item_pop_cb_set(nf_it, _clear_sound_cb, ad);
312 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
314 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
316 ad->MENU_TYPE = SETTING_SOUND;
319 void volume_cb(void *data, Evas_Object *obj, void *event_info)
321 Evas_Object *genlist = NULL;
322 Elm_Object_Item *nf_it = NULL;
326 DBG("Setting - ad is null");
331 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
335 _initialize_volume();
337 genlist = _create_volume_list(data);
338 if (genlist == NULL) {
339 DBG("%s", "volume cb - genlist is null");
343 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
345 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
347 /*elm_naviframe_item_pop_cb_set(nf_it, _clear_volume_cb, ad); */
348 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
350 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
352 ad->MENU_TYPE = SETTING_VOLUME;
355 void display_cb(void *data, Evas_Object *obj, void *event_info)
357 Evas_Object *genlist = NULL;
358 Elm_Object_Item *nf_it = NULL;
362 DBG("Setting - ad is null");
367 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
373 genlist = _create_display_list(data);
374 if (genlist == NULL) {
375 DBG("%s", "display cb - genlist is null");
379 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
381 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
384 /*elm_naviframe_item_pop_cb_set(nf_it, _clear_display_cb, ad); */
385 evas_object_event_callback_add(genlist, EVAS_CALLBACK_DEL, _clear_display_cb, ad);
386 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
388 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
390 ad->MENU_TYPE = SETTING_DISPLAY;
393 void keyboard_cb(void *data, Evas_Object *obj, void *event_info)
395 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
400 DBG("Setting - ad is null");
409 app_control_h service;
410 app_control_create(&service);
411 app_control_set_package(service, "org.tizen.w-text-input-setting");
412 app_control_send_launch_request(service, NULL, NULL);
413 app_control_destroy(service);
418 ecore_timer_del(running_timer);
419 running_timer = NULL;
421 running_timer = ecore_timer_add(0.5, (Ecore_Task_Cb)_app_ctrl_timer_cb, NULL);
425 void battery_cb(void *data, Evas_Object *obj, void *event_info)
427 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
429 Evas_Object *layout = NULL;
430 Elm_Object_Item *nf_it = NULL;
434 DBG("Setting - ad is null");
439 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
443 _initialize_battery();
444 layout = _battery_status_cb(data);
445 if (layout == NULL) {
446 DBG("%s", "battery cb - layout is null");
450 const char* navi_title = _("IDS_ST_BODY_BATTERY_ABB");
451 Eina_Bool title_flag = EINA_TRUE;
453 const char* navi_title = NULL;
454 Eina_Bool title_flag = FALSE;
456 nf_it = elm_naviframe_item_push(ad->nf, navi_title, NULL, NULL, layout, NULL);
457 /*elm_naviframe_item_pop_cb_set(nf_it, _clear_battery_list_cb, ad); */
458 evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _clear_battery_cb, ad);
459 elm_naviframe_item_title_enabled_set(nf_it, title_flag, EINA_FALSE);
461 ad->MENU_TYPE = SETTING_BATTERY;
464 void bluetooth_cb(void *data, Evas_Object *obj, void *event_info)
466 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
468 Evas_Object *genlist = NULL;
469 Elm_Object_Item *nf_it = NULL;
473 DBG("Setting - ad is null");
483 genlist = _create_bt_list(data);
484 if (genlist == NULL) {
485 DBG("%s", "bluetooth cb - genlist is null");
489 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
491 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
493 /*elm_naviframe_item_pop_cb_set(nf_it, _clear_bluetooth_cb, ad); */
494 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
496 ad->MENU_TYPE = SETTING_BLUETOOTH;
499 void location_cb(void *data, Evas_Object *obj, void *event_info)
501 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
503 Evas_Object *genlist = NULL;
504 Elm_Object_Item *nf_it = NULL;
508 DBG("Setting - ad is null");
516 genlist = _create_location_list(data);
517 if (genlist == NULL) {
518 DBG("%s", "bluetooth cb - genlist is null");
522 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
524 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
526 /*elm_naviframe_item_pop_cb_set(nf_it, _clear_bluetooth_cb, ad); */
527 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
529 ad->MENU_TYPE = SETTING_LOCATION;
532 void motion_cb(void *data, Evas_Object *obj, void *event_info)
534 Evas_Object *genlist = NULL;
535 Elm_Object_Item *nf_it = NULL;
539 DBG("Setting - ad is null");
544 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
548 _initialize_motion();
549 genlist = _create_motion_list(data);
550 if (genlist == NULL) {
551 DBG("%s", "motion cb - genlist is null");
555 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
557 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
559 elm_naviframe_item_pop_cb_set(nf_it, _clear_motion_cb, ad);
560 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
562 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
565 void lockscreen_cb(void *data, Evas_Object *obj, void *event_info)
567 Evas_Object *layout = NULL;
568 Elm_Object_Item *nf_it = NULL;
573 DBG("Setting - ad is null");
578 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
582 layout = create_privacy_list(data);
583 if (layout == NULL) {
584 DBG("%s", "lockscreen cb - genlist is null");
588 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, "empty");
590 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
593 elm_naviframe_item_pop_cb_set(nf_it, clear_privacy_cb, ad);
594 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
596 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
598 ad->MENU_TYPE = SETTING_SCREEN_LOCK;
601 void double_pressing_cb(void *data, Evas_Object *obj, void *event_info)
603 Evas_Object *layout = NULL;
604 Elm_Object_Item *nf_it = NULL;
609 DBG("Setting - ad is null");
614 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
618 init_double_pressing(ad);
620 layout = create_double_app_list(data);
621 if (layout == NULL) {
622 DBG("%s", "double cb - genlist is null");
627 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, "empty");
629 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
631 evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, clear_double_app_cb, ad);
632 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
634 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
636 ad->MENU_TYPE = SETTING_DOUBLE_PRESSING;
639 void language_cb(void *data, Evas_Object *obj, void *event_info)
641 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
643 Evas_Object *genlist = NULL;
644 Elm_Object_Item *nf_it = NULL;
648 DBG("Setting - ad is null");
653 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
657 if (is_connected_GM()) {
658 DBG("Setting - language can not change!!");
660 /* automatic freed!! */
661 struct _toast_data *toast = _create_toast(ad, _("IDS_ST_TPOP_CHANGE_LANGUAGE_ON_MOBILE_DEVICE"));
663 _show_toast(ad, toast);
668 _initialize_language(ad);
669 _set_launguage_update_cb(_update_main_menu_title);
671 genlist = _create_lang_list(data);
672 if (genlist == NULL) {
673 DBG("%s", "language cb - genlist is null");
677 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
679 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
681 elm_naviframe_item_pop_cb_set(nf_it, _clear_lang_cb, ad);
682 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
684 ad->MENU_TYPE = SETTING_LANGUAGE;
687 void safety_cb(void *data, Evas_Object *obj, void *event_info)
689 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
693 DBG("Setting - ad is null");
698 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
702 Evas_Object *layout = NULL;
703 Elm_Object_Item *nf_it = NULL;
705 layout = create_safety_list(ad);
706 if (layout == NULL) {
707 DBG("%s", "safety cb - genlist is null");
712 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, "empty");
714 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
716 elm_naviframe_item_pop_cb_set(nf_it, clear_safety_cb, ad);
717 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
719 ad->MENU_TYPE = SETTING_SAFETY;
722 void reset_gear_cb(void *data, Evas_Object *obj, void *event_info)
726 DBG("Setting - ad is null");
731 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
735 _reset_popup_cb(data, obj, event_info);
737 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
739 ad->MENU_TYPE = SETTING_RESET;
742 void gear_info_cb(void *data, Evas_Object *obj, void *event_info)
744 Evas_Object *genlist = NULL;
745 Elm_Object_Item *nf_it = NULL;
749 DBG("Setting - ad is null");
754 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
758 genlist = _create_info_list(data);
759 if (genlist == NULL) {
760 DBG("%s", "info cb - genlist is null");
764 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
766 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
768 elm_naviframe_item_pop_cb_set(nf_it, _clear_info_cb, ad);
769 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
771 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
773 ad->MENU_TYPE = SETTING_INFO;
776 static Eina_Bool _app_ctrl_timer_cb(void *data)
780 running_timer = NULL;
781 return ECORE_CALLBACK_CANCEL;
784 static Eina_Bool _scroller_timer_cb(void *data)
786 DBG("hide scroller bar");
788 Evas_Object *genlist = data;
791 elm_layout_signal_emit(genlist, "do-hide-vbar", "");
793 return ECORE_CALLBACK_CANCEL;
796 static void _quit_cb(void *data, Evas_Object *obj, void *ei)
799 //To make your application go to background,
800 //Call the elm_win_lower() instead
801 Evas_Object *win = (Evas_Object *) data;
807 static Eina_Bool _pop_cb(void *data, Elm_Object_Item *it)
809 /* Stop timer and task */
812 ecore_timer_del(running_timer);
813 running_timer = NULL;
819 ecore_timer_del(scrl_timer);
823 if (ad && ad->win_main) {
824 elm_win_lower(ad->win_main);
830 static Evas_Object *_create_bg(Evas_Object *parent)
834 if (parent == NULL) return NULL;
836 bg = elm_bg_add(parent);
837 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
838 elm_win_resize_object_add(parent, bg);
839 evas_object_show(bg);
844 static Evas_Object *_create_conform(Evas_Object *parent)
846 Evas_Object *conform;
848 if (parent == NULL) return NULL;
850 conform = elm_conformant_add(parent);
851 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
852 elm_win_resize_object_add(parent, conform);
853 evas_object_show(conform);
859 static Evas_Object *_create_layout_main(Evas_Object *parent)
863 if (parent == NULL) return NULL;
865 layout = elm_layout_add(parent);
867 if (layout == NULL) {
868 DBG("Failed elm_layout_add.\n");
872 elm_layout_theme_set(layout, "layout", "application", "default");
873 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
874 elm_win_resize_object_add(parent, layout);
876 evas_object_show(layout);
881 static void _lang_changed(app_event_info_h event_info, void *data)
884 if (ad && ad->MENU_TYPE == SETTING_LANGUAGE)
887 char *locale = vconf_get_str(VCONFKEY_LANGSET);
889 DBG("Setting - language is changed : %s", locale);
890 elm_language_set(locale);
891 elm_config_all_flush();
895 static void _window_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
897 appdata *ad = (appdata *)data;
898 evas_object_geometry_get(ad->win_main, NULL, NULL, &ad->root_w, &ad->root_h);
901 static void init_values(appdata *ad)
907 ad->is_motion_smart_relay_on = 1;
908 ad->is_motion_wake_up_on = 1;
911 static int init_clocksetting(appdata *ad)
913 DBG("init_clocksetting() is called!");
918 ad->bg = _create_bg(ad->win_main);
920 /* Conformant *** disable comform : lauching time issue *** */
922 ad->layout_main = _create_layout_main(ad->win_main);
923 /*ad->conform = _create_conform(ad->win_main); */
924 if (ad->layout_main == NULL)
929 elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_HIDE);
932 ad->nf = _create_naviframe_layout(ad->layout_main);
934 /* Naviframe Content */
935 _create_view_layout(ad);
939 int vibration_level = 0;
940 vconf_get_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, &vibration_level);
942 DBG("Setting - vibration level : %d", vibration_level);
944 if (vibration_level == 2) { /* wrong value!! */
945 vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, VIBRATION_LEVEL_HIGH_INT);
946 vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, VIBRATION_LEVEL_HIGH_INT);
951 static Evas_Object *_create_naviframe_layout(Evas_Object *parent)
953 Evas_Object *nf = NULL;
955 if (parent == NULL) return NULL;
957 nf = elm_naviframe_add(parent);
958 elm_object_part_content_set(parent, "elm.swallow.content", nf);
960 evas_object_show(nf);
965 static char *_gl_text_get(void *data, Evas_Object *obj, const char *part)
968 Item_Data *id = data;
969 int index = id->index;
971 DBG("_gl_text_get : -----> part : %s ", part);
976 if( index == LANGUAGE_MENU_INDEX ) {
977 if( is_connected_GM() ) {
978 strcpy(expression, "<font color=#515151>%s</font>");
980 strcpy(expression, "%s");
983 strcpy(expression, "%s");
987 snprintf(buf, sizeof(buf) - 1, "%s", _(setting_emergency_menu_its[index].name));
989 snprintf(buf, sizeof(buf) - 1, "%s", _(setting_menu_its[index].name));
994 static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part)
997 Item_Data *id = data;
998 int index = id->index;
1001 DBG("_gl_icon_get : -----> part : %s ", part);
1003 if (part && !strcmp(part, "elm.icon")) {
1005 snprintf(buf, sizeof(buf) - 1, "%s", setting_emergency_menu_its[index].icon_name);
1007 snprintf(buf, sizeof(buf) - 1, "%s", setting_menu_its[index].icon_name);
1009 Evas_Object *icon = elm_image_add(obj);
1010 elm_image_file_set(icon, EDJE_PATH, buf);
1011 evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
1012 evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1013 evas_object_size_hint_min_set(icon, 52, 52);
1020 static void _gl_del(void *data, Evas_Object *obj)
1022 Item_Data *id = data;
1027 static Evas_Object *_gl_indicator_get(void *data, Evas_Object *obj, const char *part)
1029 Evas_Object *layout = NULL;
1031 layout = elm_layout_add(obj);
1032 elm_layout_file_set(layout, EDJE_PATH, "setting/indicator");
1034 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1035 indicator_view_update(layout);
1036 evas_object_show(layout);
1037 DBG("indicator get!!!!!!!!");
1044 _gl_menu_title_text_get(void *data, Evas_Object *obj, const char *part)
1048 snprintf(buf, 1023, "%s", "Setting");
1053 static Evas_Object *_create_mainlist_winset(Evas_Object *parent, appdata *ad)
1055 Evas_Object *genlist = NULL;
1056 struct _menu_item *menu_its = NULL;
1059 /* Create item class */
1060 elm_theme_extension_add(NULL, EDJE_PATH);
1061 Elm_Genlist_Item_Class *itc_tmp = elm_genlist_item_class_new();
1062 itc_tmp->item_style = "setting_indicator";
1063 itc_tmp->func.content_get = _gl_indicator_get;
1064 itc_tmp->func.del = _gl_del;
1066 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1069 itc->item_style = "1text";
1071 itc->item_style = "1text.1icon";
1073 itc->func.text_get = _gl_text_get;
1074 itc->func.content_get = _gl_icon_get;
1075 itc->func.del = _gl_del;
1077 genlist = elm_genlist_add(ad->nf);
1078 if (genlist == NULL) {
1079 elm_genlist_item_class_free(itc);
1080 elm_genlist_item_class_free(itc_tmp);
1083 elm_genlist_realization_mode_set(genlist, EINA_TRUE);
1084 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1087 Elm_Genlist_Item_Class *title_item = elm_genlist_item_class_new();
1088 title_item ->func.text_get = _gl_menu_title_text_get;
1089 title_item->item_style = "title";
1090 title_item->func.del = _gl_del;
1092 elm_genlist_item_append(genlist, title_item, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1094 elm_genlist_item_class_free(title_item);
1098 Item_Data *id_indi = calloc(sizeof(Item_Data), 1);
1100 id_indi->index = idx;
1101 id_indi->item = elm_genlist_item_append(
1106 ELM_GENLIST_ITEM_NONE,
1108 elm_genlist_item_select_mode_set(id_indi->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1113 vconf_get_bool(VCONFKEY_SETAPPL_EMERGENCY_STATUS_BOOL, &is_emergency);
1119 menu_its = setting_emergency_menu_its;
1120 item_count = sizeof(setting_emergency_menu_its) / sizeof(struct _menu_item);
1122 menu_its = setting_menu_its;
1123 item_count = sizeof(setting_menu_its) / sizeof(struct _menu_item);
1126 DBG("Setting - Main menu item count: %d", item_count);
1128 /*while (menu_its[idx].name != NULL) { */
1129 for (idx = 0; idx < item_count - 1; idx++) {
1130 Item_Data *id = calloc(sizeof(Item_Data), 1);
1133 id->item = elm_genlist_item_append(
1134 genlist, /* genlist object */
1135 itc, /* item class */
1138 ELM_GENLIST_ITEM_NONE,
1144 Elm_Genlist_Item_Class *padding = elm_genlist_item_class_new();
1145 padding->item_style = "padding";
1146 padding->func.del = _gl_del;
1148 elm_genlist_item_append(genlist, padding, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1149 elm_genlist_item_class_free(padding);
1152 elm_genlist_item_class_free(itc);
1153 elm_genlist_item_class_free(itc_tmp);
1157 indicator_set_vconf_changed_cb(ad);
1162 static void _update_main_menu_title(void *data)
1164 DBG("_update_main_menu_title() is called");
1168 DBG("appdata is NULL");
1172 if (ad->main_genlist) {
1173 elm_genlist_realized_items_update(ad->main_genlist);
1177 static void _naviframe_back_cb(void *data, Evas_Object *obj, void *event_info)
1183 if (ad->MENU_TYPE == SETTING_BLUETOOTH) {
1184 clear_bt_resource();
1185 ad->MENU_TYPE = SETTING_MAIN;
1186 } else if (ad->MENU_TYPE == SETTING_VOLUME_2_DEPTH) {
1187 _clear_volume_resources();
1189 ad->MENU_TYPE = SETTING_VOLUME;
1190 } else if (ad->MENU_TYPE == SETTING_SOUND_RINGTONE) {
1193 ad->MENU_TYPE = SETTING_SOUND;
1194 } else if (ad->MENU_TYPE == SETTING_SOUND_NOTIFICATION) {
1197 ad->MENU_TYPE = SETTING_SOUND;
1200 ea_naviframe_back_cb(data, obj, event_info);
1203 static void _create_view_layout(appdata *ad)
1205 Evas_Object *genlist = NULL;
1206 Evas_Object *btn = NULL;
1207 Elm_Object_Item *nf_it = NULL;
1209 if (ad == NULL) return;
1210 if (ad->nf == NULL) return;
1212 genlist = _create_mainlist_winset(ad->win_main, ad);
1213 ad->main_genlist = genlist;
1216 Evas_Object *circle_genlist = eext_circle_object_genlist_add(genlist, ad->circle_surface);
1217 eext_circle_object_genlist_scroller_policy_set(circle_genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
1218 eext_rotary_object_event_activated_set(circle_genlist, EINA_TRUE);
1220 ea_object_event_callback_add(ad->nf, EA_CALLBACK_BACK, _naviframe_back_cb, ad);
1221 ea_object_event_callback_add(ad->nf, EA_CALLBACK_MORE, ea_naviframe_more_cb, NULL);
1224 nf_it = elm_naviframe_item_push(ad->nf, NULL, btn, NULL, genlist, "empty");
1226 nf_it = elm_naviframe_item_push(ad->nf, NULL, btn, NULL, genlist, NULL);
1228 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1230 elm_naviframe_item_pop_cb_set(nf_it, _pop_cb, ad); /* ad->win_main */
1232 /*register_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling, NULL); */
1235 static Evas_Object *create_win(const char *name)
1240 eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
1244 elm_win_title_set(eo, name);
1245 elm_win_autodel_set(eo, EINA_TRUE);
1247 if (elm_win_wm_rotation_supported_get(eo)) {
1248 int rots[4] = { 0, 90, 180, 270 };
1249 elm_win_wm_rotation_available_rotations_set(eo, (const int *)(&rots), 4);
1252 evas_object_smart_callback_add(eo, "delete,request", _quit_cb, NULL);
1256 int _time_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
1262 bool app_create(void *data)
1264 /*DBG("[TIME] 3. it taked %d msec from main to setting_main_app_create ", appcore_measure_time()); */
1265 /*appcore_measure_start(); */
1267 DBG("Setting - app_create");
1269 appdata *ad = (appdata *) data;
1272 DBG("app_create start.");
1274 ecore_x_window_size_get(ecore_x_window_root_first_get(), &ad->root_w, &ad->root_h);
1276 ad->win_main = create_win(PACKAGE);
1277 if (ad->win_main == NULL)
1280 ad->conform = _create_conform(ad->win_main);
1283 ad->circle_surface = eext_circle_surface_conformant_add(ad->conform);
1285 evas_object_resize(ad->win_main, ad->root_w, ad->root_h);
1287 double scale = elm_config_scale_get();
1289 DBG("Setting - scale is more less than 1.0");
1290 elm_config_scale_set(1.0);
1293 ad->evas = evas_object_evas_get(ad->win_main);
1295 locale = vconf_get_str(VCONFKEY_LANGSET);
1297 elm_language_set(locale);
1300 #ifdef FEATURE_SETTING_CHANGEABLE
1301 /* set color table for changeable color */
1302 ad->color_table = _changeable_colors_set();
1305 ad->is_first_launch = 1;
1309 init_clocksetting(ad);
1311 DBG("app_create finish.");
1313 DBG("[TIME] 4. setting_main_app_create taked %d msec ", appcore_measure_time());
1314 /*appcore_measure_start(); */
1316 evas_object_show(ad->win_main);
1318 int ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, _time_cb, NULL);
1319 DBG("ret = %d", ret);
1324 void app_terminate(void *data)
1326 DBG("Setting - app_terminate");
1330 indicator_unset_vconf_changed_cb();
1332 if (ad->alert_rdg) {
1333 ad->alert_rdg = NULL;
1336 ad->datetime = NULL;
1338 if (ad->dt_genlist_item_of_date) {
1339 ad->dt_genlist_item_of_date = NULL;
1341 if (ad->dt_genlist_item_of_time) {
1342 ad->dt_genlist_item_of_time = NULL;
1344 if (ad->pref_arm_rdg) {
1345 ad->pref_arm_rdg = NULL;
1347 if (ad->main_genlist) {
1348 ad->main_genlist = NULL;
1350 if (ad->double_rdg) {
1351 ad->double_rdg = NULL;
1353 if (ad->font_size_rdg) {
1354 ad->font_size_rdg = NULL;
1356 if (ad->language_item) {
1357 ad->language_item = NULL;
1359 if (ad->language_rdg) {
1360 ad->language_rdg = NULL;
1363 /* unregister motion vconf changed callback */
1364 /*unregister_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling); */
1366 #ifdef FEATURE_SETTING_CHANGEABLE
1367 if (ad->color_table) {
1368 _changeable_colors_free(ad->color_table);
1369 ad->color_table = NULL;
1372 int ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE);
1373 DBG("222222ret = %d", ret);
1376 void app_pause(void *data)
1378 DBG("Setting - app_pause()");
1382 if (ad->MENU_TYPE == SETTING_VOLUME_2_DEPTH) {
1383 _stop_all_volume_sound();
1384 } else if (ad->MENU_TYPE == SETTING_SOUND_RINGTONE ||
1385 ad->MENU_TYPE == SETTING_SOUND_NOTIFICATION) {
1386 _stop_all_sound_play();
1387 } else if (ad->MENU_TYPE == SETTING_BATTERY) {
1388 _clear_battery_cb(NULL, NULL, NULL, NULL);
1389 } else if (ad->MENU_TYPE == SETTING_SOUND) {
1390 _stop_all_sound_play();
1395 void app_resume(void *data)
1397 DBG("Setting - app_resume()");
1405 void app_reset(app_control_h service, void *data)
1407 DBG("Setting - app_reset()");
1411 char *operation = NULL;
1412 app_control_get_operation(service, &operation);
1413 DBG("operation : %s", operation);
1414 if (!ad->is_first_launch) {
1415 if (operation && !strcmp(operation, "http://tizen.org/appcontrol/operation/main")) {
1416 Elm_Object_Item *bottom = elm_naviframe_bottom_item_get(ad->nf);
1417 Elm_Object_Item *top = elm_naviframe_top_item_get(ad->nf);
1420 evas_object_del(ad->popup);
1424 while (bottom != top) {
1425 elm_object_item_del(top);
1426 top = elm_naviframe_top_item_get(ad->nf);
1429 if (ad->main_genlist) {
1430 elm_genlist_item_show(elm_genlist_first_item_get(ad->main_genlist),
1431 ELM_GENLIST_ITEM_SCROLLTO_TOP);
1432 elm_layout_signal_emit(ad->main_genlist, "do-show-vbar", "");
1435 ecore_timer_del(scrl_timer);
1438 scrl_timer = ecore_timer_add(1, (Ecore_Task_Cb)_scroller_timer_cb, ad->main_genlist);
1442 ad->is_first_launch = 0;
1446 elm_win_activate(ad->win_main);
1449 ad->MENU_TYPE = SETTING_MAIN;
1451 /* Register language change vconf */
1452 /*register_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling, NULL); */
1456 int main(int argc, char *argv[])
1458 DBG("%s,%d", __func__, __LINE__);
1462 ui_app_lifecycle_callback_s event_callback = {0,};
1463 app_event_handler_h handlers[5] = {NULL, };
1467 event_callback.create = app_create;
1468 event_callback.terminate = app_terminate;
1469 event_callback.pause = app_pause;
1470 event_callback.resume = app_resume;
1471 event_callback.app_control = app_reset;
1473 ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, NULL, NULL);
1474 ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, NULL, NULL);
1475 ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, _lang_changed, NULL);
1476 ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, NULL, NULL);
1477 ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, NULL, NULL);
1479 memset(&ad, 0x0, sizeof(appdata));
1481 ret = ui_app_main(argc, argv, &event_callback, &ad);
1482 if (APP_ERROR_NONE != ret) {
1484 ERR("app_main() is failed. err = %d", ret);
1491 int main(int argc, char *argv[])
1495 DBG("[TIME] 1. aul_launch -> main :: Setting main : %d msec ", appcore_measure_time_from("APP_START_TIME"));
1496 appcore_measure_start();
1498 struct appcore_ops ops = {
1499 .create = app_create,
1500 .terminate = app_terminate,
1502 .resume = app_resume,
1506 memset(&ad, 0x0, sizeof(appdata));
1509 ad.MENU_TYPE = SETTING_MAIN;
1511 DBG("[TIME] 2. main : %d msec ", appcore_measure_time());
1512 appcore_measure_start();
1514 return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
1519 /*////////////////////////////////////////////////////////////////////////////////////////////// */
1522 typedef struct Location_Item_Data {
1524 Elm_Object_Item *item;
1526 Evas_Object *state_label;
1527 } Location_Item_Data;
1529 struct _location_menu_item {
1532 void (*func)(void *data, Evas_Object *obj, void *event_info);
1537 static struct _location_menu_item location_menu_its[] = {
1538 { "Location", DISABLE, _location_cb },
1539 { NULL, DISABLE, NULL }
1542 static char *_gl_location_title_get(void *data, Evas_Object *obj, const char *part)
1544 char buf[1024] = {0,};
1545 Location_Item_Data *id = data;
1546 int index = id->index;
1547 char expression[32];
1549 if (!strcmp(part, "elm.text")) {
1550 snprintf(buf, sizeof(buf) - 1, "%s", location_menu_its[index].name);
1555 void _location_chk_changed_cb(void *data, Evas_Object *obj, void *event_info)
1557 DBG("Setting - _location_chk_changed_cb() is called!!");
1559 /*vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &sound_menu_its[2].is_enable_touch_sound); */
1561 /*location_menu_its[0].is_enable = !location_menu_its[0].is_enable; */
1563 /* Update touch sound enable state */
1564 /*vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, sound_menu_its[2].is_enable_touch_sound); */
1565 /*vconf_set_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, sound_menu_its[2].is_enable_touch_sound); */
1570 Evas_Object *_gl_sound_check_get(void *data, Evas_Object *obj, const char *part)
1572 Evas_Object *check = NULL;
1574 Sound_Item_Data *id = data;
1575 int index = id->index;
1577 if (!strcmp(part, "elm.icon")) {
1578 check = elm_check_add(obj);
1580 if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, &sound_menu_its[2].is_enable_touch_sound) < 0) {
1581 sound_menu_its[2].is_enable_touch_sound = TOUCH_SOUND_ENABLE; /* default value of touch sounds : on */
1583 elm_check_state_set(check, (sound_menu_its[2].is_enable_touch_sound) ? EINA_TRUE : EINA_FALSE);
1584 evas_object_smart_callback_add(check, "changed", _sound_chk_changed_cb, (void *)1);
1585 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
1586 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1587 evas_object_propagate_events_set(check, EINA_FALSE);
1597 static Evas_Object *_gl_location_check_get(void *data, Evas_Object *obj, const char *part)
1599 Evas_Object *check = NULL;
1601 Location_Item_Data *id = data;
1602 int index = id->index;
1604 if (!strcmp(part, "elm.icon")) {
1605 check = elm_check_add(obj);
1606 elm_object_style_set(check, "list");
1609 DBG("index = %d", index);
1610 elm_check_state_set(check, (location_menu_its[index].is_enable == 1) ? EINA_TRUE : EINA_FALSE);
1612 location_menu_its[index].check = check;
1614 /*evas_object_smart_callback_add(check, "changed", _location_chk_changed_cb, (void *)1); */
1615 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
1616 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1617 evas_object_propagate_events_set(check, EINA_FALSE);
1618 evas_object_repeat_events_set(check, EINA_TRUE);
1626 static void _location_gl_del(void *data, Evas_Object *obj)
1628 Location_Item_Data *id = data;
1637 _gl_menu_location_title_text_get(void *data, Evas_Object *obj, const char *part)
1641 snprintf(buf, 1023, "%s", _("Location"));
1646 Evas_Object *_create_location_list(void *data)
1650 DBG("%s", "_create_location_list - appdata is null");
1654 Evas_Object *genlist = NULL;
1655 struct _location_menu_item *menu_its = NULL;
1656 Elm_Genlist_Item_Class *temp_itc = NULL;
1659 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1660 itc->item_style = "1text.1icon.1";
1661 itc->func.text_get = _gl_location_title_get;
1662 itc->func.content_get = _gl_location_check_get;
1663 itc->func.del = _location_gl_del;
1665 Evas_Object *layout = elm_layout_add(ad->nf);
1666 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
1667 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1669 genlist = elm_genlist_add(layout);
1670 elm_genlist_block_count_set(genlist, 14);
1671 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1674 Elm_Genlist_Item_Class *title_item = elm_genlist_item_class_new();
1675 title_item ->func.text_get = _gl_menu_location_title_text_get;
1676 title_item->item_style = "title";
1677 title_item->func.del = _location_gl_del;
1679 elm_genlist_item_append(genlist, title_item, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1681 elm_genlist_item_class_free(title_item);
1684 menu_its = location_menu_its;
1686 int location_val = 0;
1687 vconf_get_int("db/location/setting/GpsEnabled", &location_val);
1688 location_menu_its[0].is_enable = location_val;
1690 Elm_Genlist_Item_Class *itc_arr[1] = { itc};
1692 for (idx = 0; idx < 1; idx++) {
1693 Location_Item_Data *id = calloc(sizeof(Location_Item_Data), 1);
1696 id->item = elm_genlist_item_append(
1697 genlist, /* genlist object */
1698 itc_arr[idx], /* item class */
1701 ELM_GENLIST_ITEM_NONE,
1702 menu_its[idx].func, /* call back */
1706 elm_genlist_item_class_free(itc);
1709 Elm_Genlist_Item_Class *padding = elm_genlist_item_class_new();
1710 padding->item_style = "padding";
1711 padding->func.del = _location_gl_del;
1713 elm_genlist_item_append(genlist, padding, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1714 elm_genlist_item_class_free(padding);
1716 location_genlist = genlist;
1718 elm_object_part_content_set(layout, "elm.genlist", genlist);
1723 static void _location_cb(void *data, Evas_Object *obj, void *event_info)
1725 DBG("Setting - %s", "Setting - _location_cb is called");
1727 Elm_Object_Item *it = (Elm_Object_Item *)event_info;
1728 elm_genlist_item_selected_set(it, EINA_FALSE);
1732 DBG("%s", "Setting - _location_cb - ad or check is null");
1736 DBG(" before %d", location_menu_its[0].is_enable);
1737 location_menu_its[0].is_enable = !location_menu_its[0].is_enable;
1738 DBG(" after %d", location_menu_its[0].is_enable);
1739 vconf_set_int("db/location/setting/GpsEnabled", location_menu_its[0].is_enable);
1740 /*location_menu_its[index].check = check; */
1741 elm_check_state_set(location_menu_its[0].check, (location_menu_its[0].is_enable == 1) ? EINA_TRUE : EINA_FALSE);