*/
#include <setting-time-main.h>
-#include <sysman.h>
+#include <sysman_managed.h>
#include <stdio.h>
#include <malloc.h>
.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)
{
}
}
+static void __update_time_via_sim_card(void *data)
+{
+ setting_retm_if(data == NULL, "Data parameter is NULL");
+ SettingTimeUG *ad = (SettingTimeUG *) data;
+ int ret = 0;
+ int t_nitz = 0;
+ int t_offset = 0;
+ ret += vconf_get_int(VCONFKEY_TELEPHONY_NITZ_GMT, &t_nitz);
+ 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..
+
+ // a.time zone
+ SETTING_TRACE("tz_path:%s", tzpath);
+
+ char tz_path[MAX_COMMON_BUFFER_LEN / 4 + 1];
+ 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 = sysman_set_timezone(tz_path);
+ if (ret < 0) {
+ SETTING_TRACE("tzpath is not valid.");
+ return;
+ } else
+ SETTING_TRACE("sysman_set_timezone - successful : %s \n", tz_path);
+ if (!__setting_set_city_tzone(tzpath)) {
+ SETTING_TRACE("__setting_set_city_tzone ERROR")
+ return;
+ }
+ if (get_city_name(tzpath)) {
+ SETTING_TRACE(">>>>>> RESULT : %s", get_city_name_result());
+ }
+ char* city = get_city_name_result();
+ SETTING_TRACE("city:%s", city);
+ if (city)
+ {
+ ret = vconf_set_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT, city);
+ setting_retm_if(ret != 0, "set vconf[%s] failed", VCONFKEY_SETAPPL_CITYNAME_INDEX_INT);
+ }
+ setting_update_timezone(ad);
+
+ // b.TIME AND DATE
+ int t_uptime = 0;
+ FILE *fp = fopen("/proc/uptime", "r");
+ if (fp) {
+ if (!fscanf(fp, "%d", &t_uptime)) {
+ SETTING_TRACE_ERROR("fscanf error");
+ }
+ fclose(fp);
+ fp = NULL;
+ } else {
+ SETTING_TRACE_ERROR("fopen error");
+ }
+
+ 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 = sysman_set_datetime(t_current);
+ setting_retm_if(ret == -1, "sysman_set_datetime call failed");
+ if (ad->data_time) {
+ struct tm ts_ret;
+ struct tm *ts = localtime_r(&t_current, &ts_ret);
+ ret_if(!ts);
+ elm_datetime_value_set(ad->data_time->eo_check, &ts_ret);
+ }
+
+ // time change - event
+ static int t_event_val = -1;
+ vconf_set_int (VCONFKEY_SYSTEM_TIME_CHANGED, t_event_val);
+}
+
+static void __sim_time_info_chg_cb(keynode_t *key, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(NULL == data);
+ SettingTimeUG *ad = data;
+ char *vconf_name = vconf_keynode_get_name(key);
+ SETTING_TRACE("vconf_name:%s", vconf_name);
+ if (!safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NITZ_GMT)
+ || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NITZ_EVENT_GMT)
+ || !safeStrCmp(vconf_name, VCONFKEY_TELEPHONY_NITZ_ZONE)) {
+ int value = 0;
+ int err = 0;
+ setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE, &value,
+ &err);
+ if (value)
+ {
+ int ret = 0;
+ int t_nitz = 0;
+ int t_offset = 0;
+ ret += vconf_get_int(VCONFKEY_TELEPHONY_NITZ_GMT, &t_nitz);
+ 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))
+ {
+ return;
+ }
+ __update_time_via_sim_card(ad);
+ }
+ }
+}
+
/* ***************************************************
*
*basic func
Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
SettingTimeUG *ad = list_item->userdata;
- if (EINA_FALSE == ad->is_datefield_selected) {
- SETTING_TRACE("Datefield is not selected\n");
- return;
- }
+ ad->is_datefield_selected = EINA_TRUE;
// If auto update is on, don't anything while the datefield has been updated (i.e., time runs)
if (1 == setting_time_check_automatic_time_update_state()) {
value = SETTING_DATE_FORMAT_DD_MM_YYYY;
/* UI format string */
+ (void)setting_create_Gendial_field_titleItem(scroller,
+ &(itc_group_item),
+ "IDS_ST_BODY_DATE_AND_TIME", NULL);
ad->data_time =
setting_create_Gendial_field_def(scroller, &(ad->itc_layout),
setting_time_main_mouse_up_Gendial_list_cb,
ad, SWALLOW_Type_LAYOUT_DATEFIELD,
NULL, NULL, is_12hours,
- "IDS_ST_BODY_DATE_AND_TIME",
+ NULL,//"IDS_ST_BODY_DATE_AND_TIME",
date_format_str[value],
setting_time_main_datefield_change_cb);
if (ad->data_time) {
ad->data_time->userdata = ad;
ad->data_time->isItemDisableFlag = auto_flag;
+ elm_genlist_item_select_mode_set(ad->data_time->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
} else {
SETTING_TRACE_ERROR("ad->data_time is NULL");
}
vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, time_changed_callback, (void *)ad);
/* register vconf key to get event callback for converting 12/24H */
- ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
- setting_time_main_int_vconf_change_cb, ad);
- setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_REGIONFORMAT_TIME1224, ret);
-
+ vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224, setting_time_main_int_vconf_change_cb, ad);
/* register vconf key to get event callback for date format */
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DATE_FORMAT_INT,
- setting_time_main_int_vconf_change_cb, ad);
- setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SETAPPL_DATE_FORMAT_INT, ret);
+ vconf_notify_key_changed(VCONFKEY_SETAPPL_DATE_FORMAT_INT, setting_time_main_int_vconf_change_cb, ad);
+
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_NITZ_GMT, __sim_time_info_chg_cb, ad);
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_NITZ_EVENT_GMT, __sim_time_info_chg_cb, ad);
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_NITZ_ZONE, __sim_time_info_chg_cb, ad);
/* to avoid update time-diff, every per 3s to update. */
ad->update_timer = ecore_timer_add(3, (Ecore_Task_Cb) __refresh_date_timer, ad);
vconf_ignore_key_changed(VCONFKEY_SETAPPL_DATE_FORMAT_INT,
setting_time_main_int_vconf_change_cb);
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NITZ_GMT, __sim_time_info_chg_cb);
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NITZ_EVENT_GMT, __sim_time_info_chg_cb);
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NITZ_ZONE, __sim_time_info_chg_cb);
+
if (ad->ly_main != NULL) {
evas_object_del(ad->ly_main);
setting_view_time_main.is_create = 0;
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)
{
ad->pop = NULL;
}
}
+#endif
+
static void __time_auto_update(void *data)
{
setting_retm_if(data == NULL, "Data parameter is NULL");
setting_disable_evas_object(ad->data_time->eo_check);
setting_disable_genlist_item(ad->data_time->item);
}
-
- int ret = 0;
-
- int t_nitz = 0;
- int t_offset = 0;
- ret += vconf_get_int(VCONFKEY_TELEPHONY_NITZ_GMT, &t_nitz);
- 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->win_get,
- NULL, _("TAPI doesn't support this sim card to update time automatically!"));
- return;
- }
- ret = 0;//reset..
-
- // a.time zone
- SETTING_TRACE("tz_path:%s", tzpath);
-
- char tz_path[MAX_COMMON_BUFFER_LEN / 4 + 1];
- 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 = sysman_set_timezone(tz_path);
- if (ret < 0) {
- SETTING_TRACE("tzpath is not valid.");
- return;
- } else
- SETTING_TRACE("sysman_set_timezone - successful : %s \n", tz_path);
- if (!__setting_set_city_tzone(tzpath)) {
- SETTING_TRACE("__setting_set_city_tzone ERROR")
- return;
- }
- if (get_city_name(tzpath)) {
- SETTING_TRACE(">>>>>> RESULT : %s", get_city_name_result());
- }
- char* city = get_city_name_result();
- SETTING_TRACE("city:%s", city);
- ret = vconf_set_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT, city);
- setting_retm_if(ret != 0, "set vconf failed");
- setting_update_timezone(ad);
-
- // b.TIME AND DATE
- int t_uptime = 0;
- FILE *fp = fopen("/proc/uptime", "r");
- fscanf(fp, "%d", &t_uptime);
- 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 = sysman_set_datetime(t_current);
- setting_retm_if(ret == -1, "sysman_set_datetime call failed");
- //ad->changed_time = t_current;
- if (ad->data_time) {
- struct tm ts_ret;
- struct tm *ts = localtime_r(&t_current, &ts_ret);
- ret_if(!ts);
- elm_datetime_value_set(ad->data_time->eo_check, &ts_ret);
- }
-
- // event notification
- static int t_event_val = -1;
- vconf_set_int (VCONFKEY_SYSTEM_TIME_CHANGED, t_event_val);
+ __update_time_via_sim_card(ad);
}
static void
SettingTimeUG *ad = (SettingTimeUG *) data;
SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
- if (ad->data_time && 0 != safeStrCmp("IDS_ST_BODY_DATE_AND_TIME", list_item->keyStr)) {
+ if (ad->data_time && ad->data_time != list_item) {
elm_object_focus_set(ad->data_time->eo_check, EINA_FALSE);
}
- if (!safeStrCmp("IDS_ST_BODY_TIME_ZONE", list_item->keyStr)) {
+ 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,
setting_time_main_launch_worldclock_sg(ad);
}
- } else if (!safeStrCmp("IDS_ST_BODY_DATE_AND_TIME", list_item->keyStr)) {
+ } 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,
} else {
/* setting_view_change(&setting_view_time_main, &setting_view_time_time, ad); */
}
- } else if (!safeStrCmp("IDS_ST_BODY_AUTOMATIC_UPDATE", list_item->keyStr)) {
+ } else if (ad->data_auto == list_item) {
ad->is_datefield_selected = EINA_FALSE;
int old_status = elm_check_state_get(list_item->eo_check);
/* new status */
#endif
}
- } else if (!safeStrCmp("IDS_ST_BODY_TIME_FORMAT", list_item->keyStr)
- || !safeStrCmp("IDS_ST_BODY_DATE_FORMAT", list_item->keyStr)
- || !safeStrCmp("IDS_CLD_BODY_FIRST_DAY_OF_WEEK", list_item->keyStr)) {
+ }
+ 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);
FREE(str);
}
-
+#if DISABLED_CODE
static void setting_time_main_controlbar_lbtn_label_set(
Evas_Object *controlbar,
char *label)
elm_object_text_set(eo_lbtn, label);
}
-
+#endif
/**
* ex) timezone : Asia/Seoul --> returns "+09"