tizen 2.4 release
[apps/home/settings.git] / setting-time / src / setting-time-main.c
index abaf54c..00fb438 100644 (file)
@@ -29,6 +29,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sqlite3.h>
+#include <eventsystem.h>
 
 #include <vconf.h>
 #include <vconf-keys.h>
 #include <unicode/ucal.h>
 #include <unicode/utmscale.h>
 
+#include <eventsystem.h>
+#include <bundle_internal.h>
+#include <system_settings.h>
+
 #define ONE_MINUTE 60
 #define PROGRESS_POPUP_SHOW 0
 #define DEF_BUF_SIZE 256
@@ -56,6 +61,8 @@ static char *get_timezone_displayname();
 static char *s_result;
 static int query_callback(void *NotUsed, int argc, char **argv, char **azColName);
 static bool setting_update_timezone(SettingTimeUG *ad);
+static void __setting_update_datefield_cb(void *cb);
+
 
 static int setting_time_main_create(void *cb);
 static int setting_time_main_destroy(void *cb);
@@ -69,10 +76,6 @@ setting_view setting_view_time_main = {
        .cleanup = setting_time_main_cleanup,
 };
 
-#if UN_SUPPORT_TIME_DYNAMIC_UPDATE
-static void setting_time_reboot_resp_cb(void *data, Evas_Object *obj,
-                                        void *event_info);
-#endif
 
 bool __update_timezone_idler(SettingTimeUG *ad)
 {
@@ -134,7 +137,7 @@ void time_changed_callback(keynode_t *key, void *data)
                ecore_idler_del(ad->refresh_time_idler);
                ad->refresh_time_idler = NULL;
        }
-       ad->refresh_time_idler = ecore_idler_add(setting_update_datefield, ad);
+       ad->refresh_time_idler = ecore_idler_add(setting_update_datefield_cb, ad);
 }
 
 void setting_time_update_time_date_format_string(SettingTimeUG *ad)
@@ -227,12 +230,16 @@ static void setting_time_main_int_vconf_change_cb(keynode_t *key, void *data)
                char *time;
                static char time_arr[DEF_BUF_SIZE];
                char *pa_time_format = get_pa_time_format_str();
-               if (pa_time_format) {
-                       if (!strncmp(pa_time_format, "IDS_COM_BODY_12_HOURS", strlen("IDS_COM_BODY_12_HOURS")))
-                               time = __setting_phone_lang_get_by_pattern("en_US", "hhmm");
-                       else
-                               time = __setting_phone_lang_get_by_pattern("en_US", "Hm");
-               }
+               setting_retm_if(NULL == pa_time_format, "pa_time_format is NULL");
+
+               char* lang = NULL;
+               int err = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &lang);
+               char *date = __setting_phone_lang_get_by_pattern(lang, "MMM/d/yyyy");
+
+               if (!strncmp(pa_time_format, "IDS_ST_BODY_12_HOURS", strlen("IDS_ST_BODY_12_HOURS")))
+                       time = __setting_phone_lang_get_by_pattern(lang, "hhmm");
+               else
+                       time = __setting_phone_lang_get_by_pattern(lang, "Hm");
 
                strncpy(time_arr, time, DEF_BUF_SIZE);
                time_arr[DEF_BUF_SIZE - 1] = '\0';
@@ -242,6 +249,34 @@ static void setting_time_main_int_vconf_change_cb(keynode_t *key, void *data)
        }
 }
 
+static int _alarmmgr_set_timezone_helper(char *tzdata)
+{
+       int ret = alarmmgr_set_timezone(tzdata);
+       if (ret) {
+               /* set event system */
+               setting_set_event_system(SYS_EVENT_TIME_ZONE,
+                                        EVT_KEY_TIME_ZONE,
+                                        tzdata);
+       }
+
+       return ret;
+}
+
+static int _alarmmgr_set_systime_helper(time_t t_current)
+{
+       int ret;
+       ret = alarmmgr_set_systime(t_current);
+       if (ret) {
+               /* set event system */
+               setting_set_event_system(SYS_EVENT_SCREEN_AUTOROTATE_STATE,
+                                        EVT_KEY_TIME_CHANGED,
+                                        t_current);
+       }
+
+       return ret;
+}
+
+
 static void __update_time_via_sim_card(void *data)
 {
        setting_retm_if(data == NULL, "Data parameter is NULL");
@@ -253,8 +288,6 @@ static void __update_time_via_sim_card(void *data)
        ret += vconf_get_int(VCONFKEY_TELEPHONY_NITZ_EVENT_GMT, &t_offset);
        char *tzpath = vconf_get_str(VCONFKEY_TELEPHONY_NITZ_ZONE);
        if (ret != 0 || isEmptyStr(tzpath)) {
-               /*setting_create_simple_popup(ad, ad->ly_main, */
-               /*                          NULL, _(NOT_SUPPORT_AUTO_UPDATE_DESC)); */
                return;
        }
        ret = 0;/*reset.. */
@@ -266,12 +299,12 @@ static void __update_time_via_sim_card(void *data)
        safeCopyStr(tz_path, SETTING_TIME_ZONEINFO_PATH, MAX_COMMON_BUFFER_LEN / 4);
        g_strlcat(tz_path, tzpath, sizeof(tz_path));
        SETTING_TRACE("full tz_path:%s", tz_path);
-       ret = alarmmgr_set_timezone(tz_path);
+       ret = _alarmmgr_set_timezone_helper(tz_path);
        if (ret < 0) {
                SETTING_TRACE("tzpath is not valid.");
                return;
        } else
-               SETTING_TRACE("alarmmgr_set_timezone - successful : %s \n", tz_path);
+               SETTING_TRACE("_alarmmgr_set_timezone_helper - successful : %s \n", tz_path);
        if (!__setting_set_city_tzone(tzpath)) {
                SETTING_TRACE("__setting_set_city_tzone ERROR")
                return;
@@ -301,8 +334,8 @@ static void __update_time_via_sim_card(void *data)
        SETTING_TRACE("t_nitz:%d, t_offset:%d, t_uptime:%d", t_nitz, t_offset, t_uptime);
        time_t t_current = t_nitz + t_uptime - t_offset;
        SETTING_TRACE("t_current:%d", t_current);
-       ret = alarmmgr_set_datetime(t_current);
-       setting_retm_if(ret == -1, "alarmmgr_set_datetime call failed");
+       ret = _alarmmgr_set_systime_helper(t_current);
+       setting_retm_if(ret == -1, "_alarmmgr_set_systime_helper call failed");
        if (ad->data_time) {
                struct tm ts_ret;
                struct tm *ts = localtime_r(&t_current, &ts_ret);
@@ -348,15 +381,6 @@ static void setting_time_main_bool_vconf_change_cb(keynode_t *key, void *data)
 
 
                        } else {
-#if UN_SUPPORT_TIME_DYNAMIC_UPDATE
-                               ad->pop =
-                                   setting_create_popup_with_btn(ad, ad->win_get, NULL,
-                                                                 _("IDS_ST_POP_RESTART_PHONE_TO_USE_AUTOMATIC_UPDATE_Q"),
-                                                                 setting_time_reboot_resp_cb,
-                                                                 0, 2,
-                                                                 dgettext("sys_string", "IDS_COM_SK_OK"),
-                                                                 _("IDS_COM_SK_CANCEL"));
-#else
                                if (ad->data_tz) {
                                        setting_disable_genlist_item(ad->data_tz->item);
                                }
@@ -370,7 +394,6 @@ static void setting_time_main_bool_vconf_change_cb(keynode_t *key, void *data)
                                }
 
                                __update_time_via_sim_card(ad);
-#endif
                        }
                }
        }
@@ -502,7 +525,7 @@ static void setting_time_main_datefield_set_cb(void *data, Evas_Object *object,
        time_t the_time = mktime(&_tm); /* represent local time */
 
        /* invoke API to change time */
-       int ret = alarmmgr_set_systime(the_time);
+       int ret = _alarmmgr_set_systime_helper(the_time);
 
 #ifdef USE_TIMER_UPDATE_TIME_IN_TIME_VIEW
        if (ad->update_timer) {
@@ -514,7 +537,7 @@ static void setting_time_main_datefield_set_cb(void *data, Evas_Object *object,
        time_t cctime = time(NULL);
        struct tm ts_ret;
        struct tm *ts = localtime_r(&cctime, &ts_ret);
-       SETTING_TRACE("After alarmmgr_set_systime() ....year : %d, month : %d, day : %d, hour : %d, min : %d",
+       SETTING_TRACE("After _alarmmgr_set_systime_helper() ....year : %d, month : %d, day : %d, hour : %d, min : %d",
                      ts_ret.tm_year, ts_ret.tm_mon, ts_ret.tm_mday, ts_ret.tm_hour, ts_ret.tm_min);
 #endif
        Evas_Object *popup = NULL;
@@ -523,135 +546,31 @@ static void setting_time_main_datefield_set_cb(void *data, Evas_Object *object,
                evas_object_del(popup);
                popup = NULL;
        }
-       setting_retm_if(ret == -1, "alarmmgr_set_systime call failed");
+       setting_retm_if(ret == -1, "_alarmmgr_set_systime_helper call failed");
 }
 
 #ifdef USE_TIMER_UPDATE_TIME_IN_TIME_VIEW
 Eina_Bool __refresh_date_timer(void *data)
 {
-       /*SETTING_TRACE_BEGIN; */
+       SETTING_TRACE_BEGIN;
        SettingTimeUG *ad = data;
-       if (ad->data_time) {
-               time_t ctime = time(NULL);
-               struct tm ts_ret;
-               struct tm *ts = localtime_r(&ctime, &ts_ret);
-               retv_if(!ts, 1);
-
-               struct tm ui_time;
-               elm_datetime_value_get(ad->data_time->eo_check, &ui_time);
-               if ((ctime / ONE_MINUTE) != (mktime(&ui_time) / ONE_MINUTE)) {
-                       SETTING_TRACE("To refresh the UI element after 1 minute passed.\t in %s", __FUNCTION__);
-                       elm_datetime_value_set(ad->data_time->eo_check, &ts_ret);
-                       setting_update_timezone(ad);
-               }
-       }
+
+       __setting_update_datefield_cb(ad);
        return 1;
 }
 #endif
 
-static void __setting_time_main_exp_cb(void *data, Evas_Object *obj,
-                                       void *event_info)
+void hour_format_event_handler(const char *event_name, bundle *data, void *user_data)
 {
-       ret_if(NULL == data || NULL == event_info);
-       SETTING_TRACE_BEGIN;
-       SettingTimeUG *ad = (SettingTimeUG *) data;
-       Elm_Object_Item *parentItem = event_info;       /* parent item */
-       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
-       Evas_Object *scroller = elm_object_item_widget_get(parentItem);
-
-       Evas_Object *rgd;
-       if (data_parentItem == ad->data_time_fmt) {
-               setting_genlist_item_groupstyle_set(data_parentItem, data_parentItem->exp_style);
-
-               rgd = elm_radio_add(scroller);
-               elm_radio_value_set(rgd, -1);
-               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
-                                                                     &itc_multiline_1text_1icon,
-                                                                     /*&(ad->itc_1icon_1text_sub), */
-                                                                     NULL, NULL, parentItem,
-                                                                     SWALLOW_Type_1RADIO, rgd,
-                                                                     VCONFKEY_TIME_FORMAT_12,
-                                                                     "IDS_COM_BODY_12_HOURS",
-                                                                     NULL, SETTING_GROUP_STYLE_CENTER);
-
-               setting_create_Gendial_exp_sub_field_with_group_style(scroller,
-                                                                     &itc_multiline_1text_1icon,
-                                                                     /* &(ad->itc_1icon_1text_sub), */
-                                                                     NULL, NULL, parentItem,
-                                                                     SWALLOW_Type_1RADIO, rgd,
-                                                                     VCONFKEY_TIME_FORMAT_24,
-                                                                     "IDS_ST_BODY_24_HOURS",
-                                                                     NULL, SETTING_GROUP_STYLE_BOTTOM);
-
-               setting_update_chk_status(rgd,
-                                         data_parentItem->int_slp_setting_binded);
-
-       } else if (data_parentItem == ad->data_date_fmt) {
-               rgd = elm_radio_add(scroller);
-               elm_radio_value_set(rgd, -1);
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &itc_multiline_1text_1icon,
-                                                    /* &(ad->itc_1icon_1text_sub), */
-                                                    NULL, NULL, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    SETTING_DATE_FORMAT_DD_MM_YYYY,
-                                                    "IDS_ST_BODY_DDMMYYYY_DOT",
-                                                    NULL);
-
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &itc_multiline_1text_1icon,
-                                                    /* &(ad->itc_1icon_1text_sub), */
-                                                    NULL, NULL, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    SETTING_DATE_FORMAT_MM_DD_YYYY,
-                                                    "IDS_ST_BODY_MM_DD_YYYY_DOT",
-                                                    NULL);
-
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &itc_multiline_1text_1icon,
-                                                    /* &(ad->itc_1icon_1text_sub), */
-                                                    NULL, NULL, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    SETTING_DATE_FORMAT_YYYY_MM_DD,
-                                                    "IDS_COM_BODY_YYYYMMDD",
-                                                    NULL);
-
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &itc_multiline_1text_1icon,
-                                                    /* &(ad->itc_1icon_1text_sub), */
-                                                    NULL, NULL, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    SETTING_DATE_FORMAT_YYYY_DD_MM,
-                                                    "IDS_ST_BODY_YYYY_DD_MM_DOT",
-                                                    NULL);
-
-               setting_update_chk_status(rgd,
-                                         data_parentItem->int_slp_setting_binded);
-
-       } else if (data_parentItem == ad->data_firstday_week_fmt) {
-               rgd = elm_radio_add(scroller);
-               elm_radio_value_set(rgd, -1);
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &itc_multiline_1text_1icon,
-                                                    /* &(ad->itc_1icon_1text_sub), */
-                                                    NULL, rgd, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    SETTING_WEEKOFDAY_FORMAT_SUNDAY,
-                                                    "IDS_ST_BODY_SUNDAY", NULL);
-
-               setting_create_Gendial_exp_sub_field(scroller,
-                                                    &itc_multiline_1text_1icon,
-                                                    /* &(ad->itc_1icon_1text_sub), */
-                                                    NULL, rgd, parentItem,
-                                                    SWALLOW_Type_1RADIO, rgd,
-                                                    SETTING_WEEKOFDAY_FORMAT_MONDAY,
-                                                    "IDS_ST_BODY_MONDAY", NULL);
-
-               setting_update_chk_status(rgd,
-                                         data_parentItem->int_slp_setting_binded);
-       }
+       const char *hour_format_set = NULL;
+       SETTING_TRACE("hour format set event(%s) received", event_name);
+
+       hour_format_set = bundle_get_val(data, EVT_KEY_HOUR_FORMAT);
+       SETTING_TRACE("hour_format_set(%s)", hour_format_set);
 }
 
+int hour_format_event_reg_id;
+
 static int setting_time_main_create(void *cb)
 {
        SETTING_TRACE_BEGIN;
@@ -659,7 +578,6 @@ static int setting_time_main_create(void *cb)
 
        SettingTimeUG *ad = (SettingTimeUG *) cb;
 
-       char *l_btn = NULL;
        char *title = _(DATE_TIME_STR_DATE_AND_TIME);
        char *caller = NULL;
        ad->is_datefield_selected = EINA_FALSE;
@@ -673,7 +591,6 @@ static int setting_time_main_create(void *cb)
 
        ad->caller = caller;
 
-       l_btn = _("IDS_COM_BODY_BACK");
        title = DATE_TIME_STR_DATE_AND_TIME;
        gchar *title_str = NULL;
 
@@ -683,7 +600,8 @@ static int setting_time_main_create(void *cb)
        ad->ly_main =
            setting_create_layout_navi_bar_genlist(ad->win_main_layout,
                                                   ad->win_get, title_str,
-                                                  l_btn, NULL,
+                                                  NULL,
+                                                                                          NULL,
                                                   setting_time_main_click_softkey_left_cb,
                                                   NULL, ad, &scroller,
                                                   &ad->navi_bar);
@@ -719,11 +637,11 @@ static int setting_time_main_create(void *cb)
                        safeCopyStr(tz_path, SETTING_TIME_ZONEINFO_PATH, MAX_COMMON_BUFFER_LEN / 4);
                        g_strlcat(tz_path, tzpath, sizeof(tz_path));
                        SETTING_TRACE("full tz_path:%s", tz_path);
-                       ret = alarmmgr_set_timezone(tz_path);
+                       ret = _alarmmgr_set_timezone_helper(tz_path);
                        if (ret < 0) {
                                SETTING_TRACE("tzpath is not valid.");
                        } else
-                               SETTING_TRACE("alarmmgr_set_timezone - successful : %s \n", tz_path);
+                               SETTING_TRACE("_alarmmgr_set_timezone_helper - successful : %s \n", tz_path);
                        if (!__setting_set_city_tzone(tzpath)) {
                                SETTING_TRACE("__setting_set_city_tzone ERROR")
                        }
@@ -748,7 +666,7 @@ static int setting_time_main_create(void *cb)
                        SETTING_TRACE("t_nitz:%d, t_offset:%d, t_uptime:%d", t_nitz, t_offset, t_uptime);
                        time_t t_current = t_nitz + t_uptime - t_offset;
                        SETTING_TRACE("t_current:%d", t_current);
-                       ret = alarmmgr_set_systime(t_current);
+                       ret = _alarmmgr_set_systime_helper(t_current);
                }
                FREE(tzpath);
        }
@@ -817,7 +735,6 @@ static int setting_time_main_create(void *cb)
                              timezone_str, displayTimezone, _(str_buf));
                ret = snprintf(time_zone_sub_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT %s",
                               displayTimezone, _(str_buf));
-
                FREE(timezone_str);
                retv_if(ret < 0, 0);
        } else {
@@ -841,29 +758,26 @@ static int setting_time_main_create(void *cb)
        }
 
        /*  UI create "Time format" */
-       setting_enable_expandable_genlist(scroller, ad,
-                                         __setting_time_main_exp_cb, NULL);
-
-       char *pa_time_format = get_pa_time_format_str();
-       ad->data_time_fmt = setting_create_Gendial_exp_parent_field(scroller,
-                                                                   &(ad->itc_2text_3_parent),
-                                                                   setting_time_main_mouse_up_Gendial_list_cb,
-                                                                   ad, SWALLOW_Type_INVALID,
-                                                                   DATE_TIME_STR_TIME_FORMAT,
-                                                                   pa_time_format,
-                                                                   SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
+       value = VCONFKEY_TIME_FORMAT_12;
+       setting_get_int_slp_key(INT_SLP_SETTING_REGIONFORMAT_TIME1224, &value, &err);
+       ad->data_time_fmt = setting_create_Gendial_field_def(scroller,
+                                                            &(ad->itc_1text_1icon),
+                                                            setting_time_main_mouse_up_Gendial_list_cb,
+                                                            ad,
+                                                            SWALLOW_Type_1ICON_1RADIO,
+                                                            NULL,
+                                                            NULL,
+                                                            (value == VCONFKEY_TIME_FORMAT_24),
+                                                            "IDS_ST_MBODY_24_HOUR_CLOCK",
+                                                            NULL,
+                                                            setting_time_main_chk_btn_cb);
        if (ad->data_time_fmt) {
-               ad->data_time_fmt->int_slp_setting_binded =
-                   INT_SLP_SETTING_REGIONFORMAT_TIME1224;
-               ad->data_time_fmt->group_style = SETTING_GROUP_STYLE_NONE;
-
-               if (ad->is_expand_time_format_list && ad->data_time_fmt->item) {
-                       elm_genlist_item_expanded_set(ad->data_time_fmt->item, TRUE);
-               }
+               __BACK_POINTER_SET(ad->data_time_fmt);
+               ad->data_time_fmt->userdata = ad;
        } else {
                SETTING_TRACE_ERROR("ad->data_time_fmt is NULL");
        }
-       G_FREE(pa_time_format);
+       ADD_GL_HELP_NO_SEP(scroller, "IDS_ST_SBODY_SHOW_THE_TIME_IN_24_HOUR_FORMAT_INSTEAD_OF_12_HOUR_HAM_PM_FORMAT");
 
 #if APPLIED_DATATIME_DATA_FORMAT
        char *pa_date_format = get_pa_date_format_str();
@@ -872,8 +786,7 @@ static int setting_time_main_create(void *cb)
                                                                    setting_time_main_mouse_up_Gendial_list_cb,
                                                                    ad, SWALLOW_Type_INVALID,
                                                                    DATE_TIME_STR_TIME_FORMAT,
-                                                                   pa_time_format, SETTING_GROUP_STYLE_CENTER,
-                                                                   SETTING_GROUP_STYLE_CENTER);
+                                                                   pa_time_format);
        if (ad->data_date_fmt) {
                ad->data_date_fmt->int_slp_setting_binded =
                    INT_SLP_SETTING_DATE_FORMAT;
@@ -883,37 +796,6 @@ static int setting_time_main_create(void *cb)
        G_FREE(pa_date_format);
 #endif
 
-#if APPLIED_DATATIME_FIRSTDAY_WEEK
-       char *pa_week = get_pa_week_format_str();
-       ad->data_firstday_week_fmt =
-           setting_create_Gendial_exp_parent_field(scroller,
-                                                   &(ad->itc_2text_3_parent),
-                                                   setting_time_main_mouse_up_Gendial_list_cb,
-                                                   ad, SWALLOW_Type_INVALID,
-                                                   "IDS_CLD_BODY_FIRST_DAY_OF_WEEK",
-                                                   pa_week, SETTING_GROUP_STYLE_CENTER,
-                                                   SETTING_GROUP_STYLE_BOTTOM);
-       if (ad->data_firstday_week_fmt) {
-               ad->data_firstday_week_fmt->int_slp_setting_binded =
-                   INT_SLP_SETTING_WEEK_FORMAT;
-       } else {
-               SETTING_TRACE_ERROR("ad->data_firstday_week_fmt is NULL");
-       }
-       G_FREE(pa_week);
-#endif
-
-       /*item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL, */
-       /*                          ELM_GENLIST_ITEM_NONE, NULL, NULL); */
-       /*elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); */
-
-#if 0
-       if (!enable_automatic) {
-               if (ad->data_auto) {
-                       setting_disable_genlist_item(ad->data_auto->item);
-               }
-       }
-#endif
-
        if (auto_flag) {
                if (ad->data_tz) {
                        setting_disable_genlist_item(ad->data_tz->item);
@@ -942,6 +824,14 @@ static int setting_time_main_create(void *cb)
 #ifdef USE_TIMER_UPDATE_TIME_IN_TIME_VIEW
        ad->update_timer = ecore_timer_add(3, (Ecore_Task_Cb) __refresh_date_timer, ad);
 #endif
+
+       /* eventsystem */
+       if (ES_R_OK != eventsystem_register_event(SYS_EVENT_HOUR_FORMAT,
+                                                 &hour_format_event_reg_id,
+                                                 (eventsystem_handler)hour_format_event_handler, cb)) {
+               SETTING_TRACE_ERROR("error");
+       }
+
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -1003,6 +893,10 @@ static int setting_time_main_destroy(void *cb)
                setting_view_time_main.is_create = 0;
        }
 
+       if (ES_R_OK != eventsystem_unregister_event(hour_format_event_reg_id)) {
+               SETTING_TRACE_ERROR("error");
+       }
+
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -1027,7 +921,7 @@ static int setting_time_main_update(void *cb)
                        ecore_idler_del(ad->refresh_time_idler);
                        ad->refresh_time_idler = NULL;
                }
-               ad->refresh_time_idler = ecore_idler_add(setting_update_datefield, ad);
+               ad->refresh_time_idler = ecore_idler_add(setting_update_datefield_cb, ad);
        }
        return SETTING_RETURN_SUCCESS;
 }
@@ -1093,6 +987,7 @@ setting_time_main_launch_worldclock_result_ug_cb(ui_gadget_h ug,
 
        if (!tzpath) {
                SETTING_TRACE("tzpath from worldclock UG is null.");
+               setting_update_timezone(ad);
                return;
        } else {
                SETTING_TRACE("tzpath : %s", tzpath);
@@ -1105,7 +1000,7 @@ setting_time_main_launch_worldclock_result_ug_cb(ui_gadget_h ug,
        g_strlcat(tz_path, tzpath, sizeof(tz_path));
        SETTING_TRACE("full tz_path:%s", tz_path);
 
-       int ret = alarmmgr_set_timezone(tz_path);
+       int ret = _alarmmgr_set_timezone_helper(tz_path);
        if (ret < 0) {
                SETTING_TRACE("tzpath is not valid.");
                if (tzpath)
@@ -1114,7 +1009,7 @@ setting_time_main_launch_worldclock_result_ug_cb(ui_gadget_h ug,
                        FREE(city);
                return;
        } else
-               SETTING_TRACE("alarmmgr_set_timezone - successful : %s \n", tz_path);
+               SETTING_TRACE("_alarmmgr_set_timezone_helper - successful : %s \n", tz_path);
 
        ret = vconf_set_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT, city);
        setting_retm_if(ret != 0, "set vconf failed");
@@ -1155,11 +1050,6 @@ void setting_time_main_launch_worldclock_destroy_ug_cb(ui_gadget_h ug,
        }
        Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navi_bar);
        ret_if(!navi_it);
-       Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
-
-       if (back_btn != NULL) {
-               elm_object_style_set(back_btn, NAVI_BACK_BUTTON_STYLE); /* take into effect */
-       }
 
        elm_object_tree_focus_allow_set(ad->ly_main, EINA_TRUE);
 }
@@ -1219,8 +1109,7 @@ void setting_time_main_launch_worldclock_sg(void *data)
        return;
 }
 
-
-Eina_Bool setting_update_datefield(void *cb)
+static void __setting_update_datefield_cb(void *cb)
 {
        SETTING_TRACE_BEGIN;
        retvm_if(cb == NULL, EINA_FALSE, "Data parameter is NULL");
@@ -1232,21 +1121,19 @@ Eina_Bool setting_update_datefield(void *cb)
                struct tm *ts = localtime_r(&cctime, &ts_ret);
                SETTING_TRACE("year : %d, month : %d, day : %d, hour : %d, min : %d",
                              ts_ret.tm_year, ts_ret.tm_mon, ts_ret.tm_mday, ts_ret.tm_hour, ts_ret.tm_min);
-               SETTING_TRACE("time : %s", ctime(&cctime));
                if (ts) {
-#if 0
-                       if (ad->data_time->eo_check)
-                               elm_datetime_value_set(ad->data_time->eo_check, &ts_ret);
-#endif
 
-                       char *date = __setting_phone_lang_get_by_pattern("en_US", "MMM/d/yyyy");
+                       char* region = NULL;
+                       int err = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &region );
+                       char *date = __setting_phone_lang_get_by_pattern(region, "MMM/d/yyyy");
                        char *time;
                        static char date_arr[DEF_BUF_SIZE], time_arr[DEF_BUF_SIZE];
                        char *pa_time_format = get_pa_time_format_str();
-                       if (!strncmp(pa_time_format, "IDS_COM_BODY_12_HOURS", strlen("IDS_COM_BODY_12_HOURS")))
-                               time = __setting_phone_lang_get_by_pattern("en_US", "hhmm");
+                       setting_retvm_if(NULL == pa_time_format, FALSE, "pa_time_format is NULL");
+                       if (!strncmp(pa_time_format, "IDS_ST_BODY_12_HOURS", strlen("IDS_ST_BODY_12_HOURS")))
+                               time = __setting_phone_lang_get_by_pattern(region, "hhmm");
                        else
-                               time = __setting_phone_lang_get_by_pattern("en_US", "Hm");
+                               time = __setting_phone_lang_get_by_pattern(region, "Hm");
 
                        strncpy(date_arr, date, DEF_BUF_SIZE);
                        strncpy(time_arr, time, DEF_BUF_SIZE);
@@ -1254,18 +1141,34 @@ Eina_Bool setting_update_datefield(void *cb)
                        date_arr[DEF_BUF_SIZE - 1] = '\0';
                        time_arr[DEF_BUF_SIZE - 1] = '\0';
 
-                       elm_object_text_set(ad->data_time->btn_left, date_arr);
-                       evas_object_resize(ad->data_time->btn_left, 300, -1);
-                       elm_object_text_set(ad->data_time->btn_right, time_arr);
-                       evas_object_resize(ad->data_time->btn_right, 270, -1);
+                       if (ad->data_time->btn_left)
+                               elm_object_text_set(ad->data_time->btn_left, date_arr);
+                       else {
+                               SETTING_TRACE_ERROR("ad->data_time->btn_left is NULL");
+                       }
+                       if (ad->data_time->btn_right)
+                               elm_object_text_set(ad->data_time->btn_right, time_arr);
+                       else {
+                               SETTING_TRACE_ERROR("ad->data_time->btn_right is NULL");
+                       }
+                       SETTING_TRACE_BEGIN;
                        FREE(pa_time_format);
                }
        }
-       if (ad->refresh_time_idler) {
-               ecore_idler_del(ad->refresh_time_idler);
-               ad->refresh_time_idler = NULL;
-       }
-       return 0;
+}
+
+Eina_Bool setting_update_datefield_cb(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retvm_if(data == NULL, FALSE, "Data parameter is NULL");
+
+       SettingTimeUG *ad = (SettingTimeUG *) data;
+
+       __setting_update_datefield_cb(ad);
+
+       ad->refresh_time_idler = NULL;
+       return ECORE_CALLBACK_CANCEL;
 }
 
 /* ***************************************************
@@ -1345,25 +1248,6 @@ setting_time_main_click_softkey_caller_exist_right_cb(void *data,
        ug_destroy_me(ad->ug);
 }
 
-#if UN_SUPPORT_TIME_DYNAMIC_UPDATE
-static void setting_time_reboot_resp_cb(void *data, Evas_Object *obj,
-                                        void *event_info)
-{
-       SETTING_TRACE_BEGIN;
-       int response_type = btn_type(obj);
-       if (POPUP_RESPONSE_OK == response_type) {
-               setting_time_main_btn_update_ok_cb(data);
-       } else if (POPUP_RESPONSE_CANCEL == response_type) {
-               setting_time_main_btn_update_cancel_cb(data);
-       }
-
-       SettingTimeUG *ad = data;
-       if (ad->pop) {
-               evas_object_del(ad->pop);
-               ad->pop = NULL;
-       }
-}
-#endif
 
 static void __time_auto_update(void *data)
 {
@@ -1406,14 +1290,6 @@ setting_time_main_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
            (Setting_GenGroupItem_Data *) data;
        ad = list_item->userdata;
        list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
-       /*if (ad->data_auto) */
-       /*      ad->chk_auto = ad->data_auto->eo_check; */
-
-#if 0
-       if (ad->data_time) {
-               elm_object_focus_set(ad->data_time->eo_check, EINA_FALSE);
-       }
-#endif
 
        int err;
        if (obj == ad->data_auto->eo_check) {
@@ -1435,24 +1311,39 @@ setting_time_main_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
                                setting_enable_evas_object(ad->data_time->btn_right);
                                setting_enable_genlist_item(ad->data_time->item);
                        }
+               } else {
+                       __time_auto_update(ad);
+               }
+       }
 
 
 
+//#define FUNCTION_SYSTEM_SETTING 1
+#if FUNCTION_SYSTEM_SETTING
+       /* Time format */
+       if (ad->data_time_fmt == list_item) {
+               int err = 0;
+               int value = VCONFKEY_TIME_FORMAT_12;
+               if (list_item->chk_status) {
+                       err = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, true);
                } else {
-#if UN_SUPPORT_TIME_DYNAMIC_UPDATE
-                       ad->pop =
-                           setting_create_popup_with_btn(ad, ad->win_get, NULL,
-                                                         _("IDS_ST_POP_RESTART_PHONE_TO_USE_AUTOMATIC_UPDATE_Q"),
-                                                         setting_time_reboot_resp_cb,
-                                                         0, 2,
-                                                         dgettext("sys_string",
-                                                                  "IDS_COM_SK_OK"),
-                                                         _("IDS_COM_SK_CANCEL"));
+                       err = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, false);
+               }
+       }
 #else
-                       __time_auto_update(ad);
-#endif
+       /* Time format */
+       if (ad->data_time_fmt == list_item) {
+               int err = 0;
+               int value = VCONFKEY_TIME_FORMAT_12;
+               if (list_item->chk_status) {
+                       value = VCONFKEY_TIME_FORMAT_24;
+                       setting_set_event_system(SYS_EVENT_HOUR_FORMAT, EVT_KEY_HOUR_FORMAT, EVT_VAL_HOURFORMAT_24);
+               } else {
+                       setting_set_event_system(SYS_EVENT_HOUR_FORMAT, EVT_KEY_HOUR_FORMAT, EVT_VAL_HOURFORMAT_12);
                }
+               setting_set_int_slp_key(INT_SLP_SETTING_REGIONFORMAT_TIME1224, value, &err);
        }
+#endif
        SETTING_TRACE_END;
 }
 
@@ -1468,21 +1359,15 @@ static void setting_time_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *
        elm_genlist_item_selected_set(item, 0);
        Setting_GenGroupItem_Data *list_item =
            (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+       setting_retm_if(NULL == list_item, "list_item is NULL");
 
        SettingTimeUG *ad = (SettingTimeUG *) data;
        SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
 
-#if 0
-       if (ad->data_time && ad->data_time != list_item) {
-               elm_object_focus_set(ad->data_time->eo_check, EINA_FALSE);
-       }
-#endif
-
        if (ad->data_tz == list_item) {
                ad->is_datefield_selected = EINA_FALSE;
                if (1 == setting_time_check_automatic_time_update_state()) {
-                       setting_create_simple_popup(ad, ad->win_get,
-                                                   NULL, _(AUTO_TIME_UPDATE_ON));
+                       setting_create_popup(ad, ad->win_get, NULL, _(AUTO_TIME_UPDATE_ON), NULL, 0, false, false, 0);
                } else {
                        setting_time_main_launch_worldclock_sg(ad);
                }
@@ -1490,8 +1375,7 @@ static void setting_time_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *
        } else if (ad->data_time == list_item) {
                ad->is_datefield_selected = EINA_TRUE;
                if (1 == setting_time_check_automatic_time_update_state()) {
-                       setting_create_simple_popup(ad, ad->win_get,
-                                                   NULL, _(AUTO_TIME_UPDATE_ON));
+                       setting_create_popup(ad, ad->win_get, NULL, _(AUTO_TIME_UPDATE_ON), NULL, 0, false, false, 0);
                } else {
                        /* setting_view_change(&setting_view_time_main, &setting_view_time_time, ad); */
                }
@@ -1518,25 +1402,15 @@ static void setting_time_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *
                        }
 
                } else {
-#if UN_SUPPORT_TIME_DYNAMIC_UPDATE
-                       ad->pop =
-                           setting_create_popup_with_btn(ad, ad->win_get, NULL,
-                                                         _("IDS_ST_POP_RESTART_PHONE_TO_USE_AUTOMATIC_UPDATE_Q"),
-                                                         setting_time_reboot_resp_cb,
-                                                         0, 2,
-                                                         dgettext("sys_string", "IDS_COM_SK_OK"),
-                                                         _("IDS_COM_SK_CANCEL"));
-#else
                        __time_auto_update(ad);
-#endif
                }
-
-       } else if (ad->data_time_fmt == list_item
-                  || ad->data_date_fmt == list_item
-                  || ad->data_firstday_week_fmt == list_item) {
-               ad->is_datefield_selected = EINA_FALSE;
-               bool status = !elm_genlist_item_expanded_get(item);
-               elm_genlist_item_expanded_set(item, status);
+       } else if (ad->data_time_fmt == list_item)      {
+               int err = 0;
+               setting_update_gl_item_chk_status(list_item, !list_item->chk_status);
+               int value = VCONFKEY_TIME_FORMAT_12;
+               if (list_item->chk_status)
+                       value = VCONFKEY_TIME_FORMAT_24;
+               setting_set_int_slp_key(INT_SLP_SETTING_REGIONFORMAT_TIME1224, value, &err);
        }
 }
 
@@ -1577,7 +1451,7 @@ static UChar *uastrcpy(const char *chars)
        int len = 0;
        UChar *str = NULL;
        len = safeStrLen(chars);
-       str = (UChar *) malloc(sizeof(UChar) * (len + 1));
+       str = (UChar *) malloc(sizeof(UChar)*(len + 1));
        if (!str)
                return NULL;
        u_uastrcpy(str, chars);
@@ -1590,14 +1464,16 @@ static void ICU_set_timezone(const char *timezone)
        UErrorCode ec = U_ZERO_ERROR;
        UChar *str = uastrcpy(timezone);
 
-       ucal_setDefaultTimeZone(str, &ec);
-       if (U_SUCCESS(ec)) {
-               SETTING_TRACE("ucal_setDefaultTimeZone() SUCCESS ");
-       } else {
-               SETTING_TRACE("ucal_setDefaultTimeZone() FAILED : %s ",
-                             u_errorName(ec));
+       if (str) {
+               ucal_setDefaultTimeZone(str, &ec);
+               if (U_SUCCESS(ec)) {
+                       SETTING_TRACE("ucal_setDefaultTimeZone() SUCCESS ");
+               } else {
+                       SETTING_TRACE("ucal_setDefaultTimeZone() FAILED : %s ",
+                                       u_errorName(ec));
+               }
+               FREE(str);
        }
-       FREE(str);
 }
 
 /**
@@ -1715,35 +1591,35 @@ static char *get_timezone_displayname()
        status = U_ZERO_ERROR;
 
        /* get timezone display name (check dst) */
-       if (data) {
-               if (data->tm_isdst)
-                       ucal_getTimeZoneDisplayName(cal, UCAL_DST, localeID, displayName, SETTING_STR_SLP_LEN, &status);
-               else
-                       ucal_getTimeZoneDisplayName(cal, UCAL_STANDARD, localeID, displayName, SETTING_STR_SLP_LEN, &status);
-       }
-
-       if (U_FAILURE(status))
-               SETTING_TRACE_ERROR("ucal_getTimeZoneDisplayName got an error : %s, %d", displayName, status);
-       status = U_ZERO_ERROR;
-
-       ucal_close(cal);
+       if (cal) {
+               if (data) {
+                       if (data->tm_isdst)
+                               ucal_getTimeZoneDisplayName(cal, UCAL_DST, localeID, displayName, SETTING_STR_SLP_LEN, &status);
+                       else
+                               ucal_getTimeZoneDisplayName(cal, UCAL_STANDARD, localeID, displayName, SETTING_STR_SLP_LEN, &status);
+               }
 
-       int len = 0;
-       int len_str = 0;
-       int len_utf8 = 0;
-
-       len = u_strlen(displayName);
-       len_str = sizeof(char) * 4 * (len + 1);
-       timezone_str = (char *)calloc(1, len_str);
-       if (!timezone_str) {
-               SETTING_TRACE_ERROR("timezone string is null");
-               return NULL;
+               if (U_FAILURE(status)) {
+                       SETTING_TRACE_ERROR("ucal_getTimeZoneDisplayName got an error : %s, %d", displayName, status);
+                       status = U_ZERO_ERROR;
+               } else {
+                       int len = 0;
+                       int len_str = 0;
+                       int len_utf8 = 0;
+
+                       len = u_strlen(displayName);
+                       len_str = sizeof(char)*4*(len+1);
+                       timezone_str = (char *)calloc(1, len_str);
+                       if (!timezone_str) {
+                               SETTING_TRACE_ERROR("timezone string is null");
+                               return NULL;
+                       }
+                       u_strToUTF8(timezone_str, len_str, &len_utf8, displayName, len, &status);
+                       SETTING_TRACE("*************************** timezone : %s, %s", displayName, timezone_str);
+               }
+               ucal_close(cal);
        }
 
-       u_strToUTF8(timezone_str, len_str, &len_utf8, displayName, len, &status);
-
-       SETTING_TRACE("timezone : %s, %s", displayName, timezone_str);
-
        SETTING_TRACE_END;
        return timezone_str;