/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
#include <setting-time-main.h>
-#include <sysman.h>
+#include <sysman_managed.h>
#include <stdio.h>
#include <malloc.h>
+#include <time.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sqlite3.h>
+
+#include <vconf.h>
+#include <vconf-keys.h>
+
#include <unicode/udat.h>
#include <unicode/ustring.h>
#include <unicode/uloc.h>
#include <unicode/ucal.h>
#include <unicode/utmscale.h>
+#define ONE_MINUTE 60
+#define PROGRESS_POPUP_SHOW 0
+
/* ICU utilities*/
static UChar *uastrcpy(const char *chars);
static void ICU_set_timezone(const char *timezone);
static int get_timezone_isdst(int* isdst);
+static void get_gmt_offset(char *str_buf, int size);
+
+static char* get_timezone_str();
+static char* get_city_name_result();
+static bool get_city_name(char* tzname);
+
+static char* s_result;
+static int query_callback(void *NotUsed, int argc, char **argv, char **azColName);
+static bool setting_update_timezone(SettingTimeUG *ad);
static int setting_time_main_create(void *cb);
static int setting_time_main_destroy(void *cb);
.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
-#if TIME_CHANGED_HEYNOTY_CALLBACK
-void time_changed_callback(void *data)
+bool __update_timezone_idler(SettingTimeUG *ad)
{
+ setting_update_timezone(ad);
+ ad->update_timezone_idler = NULL;
+ return 0;
+}
+
+void time_changed_callback(keynode_t *key, void *data) {
+
SETTING_TRACE_DEBUG("time and timezone have been changed: TIME_CHANGED_HEYNOTY_CALLBACK");
SettingTimeUG *ad = (SettingTimeUG *)data;
+
+ int ret = setting_time_update_cb(ad);
+ if (ret != 0) {
+ SETTING_TRACE("FAIL: setting_time_update_db(ad)\n");
+ }
+
+ SETTING_TRACE("ad->is_datefield_selected:%d", ad->is_datefield_selected)
if(EINA_TRUE == ad->is_datefield_selected) {
/* Timezone is not changed and a selected value of the datefield is already changed */
SETTING_TRACE("Datefield is selected\n");
}
tzset();
-
// vconfset to update timezone
char pTZPath[__MAX_PATH_SIZE];
ssize_t nLen = readlink(SETTING_TZONE_SYMLINK_PATH, pTZPath, sizeof(pTZPath)-1);
-
if (nLen != -1) {
pTZPath[nLen] = '\0';
} else {
SETTING_TRACE("__setting_set_city_tzone ERROR");
return;
}
-
- setting_time_main_update(data);
-
char *timezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
setting_retm_if(timezone == NULL, "get vonf failed");
-
ICU_set_timezone(timezone);
FREE(timezone);
+
+ // update timezone
+ if (ad->update_timezone_idler) {
+ ecore_idler_del(ad->update_timezone_idler);
+ ad->update_timezone_idler = NULL;
+ }
+ ad->update_timezone_idler =
+ ecore_idler_add((Ecore_Task_Cb) __update_timezone_idler, ad);
+ // update time
+ if (ad->refresh_time_idler) {
+ ecore_idler_del(ad->refresh_time_idler);
+ ad->refresh_time_idler = NULL;
+ }
+ ad->refresh_time_idler = ecore_idler_add(setting_update_datefield, ad);
}
-#endif
void setting_time_update_time_date_format_string(SettingTimeUG *ad)
{
ret_if(!ts);
/* set time in particular format */
- ret =
- setting_get_int_slp_key(INT_SLP_SETTING_REGIONFORMAT_TIME1224,
- &value, &err);
+ ret = setting_get_int_slp_key(INT_SLP_SETTING_REGIONFORMAT_TIME1224, &value, &err);
if (ret == SETTING_RETURN_FAIL)
value = VCONFKEY_TIME_FORMAT_12;
pa_city = vconf_get_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT);
pa_timezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_INT);
- if ((pa_timezone != NULL)
- && (_(pa_city) != NULL && safeStrCmp(_(pa_city), "NULL"))) {
+ //if ((pa_timezone != NULL) && (_(pa_city) != NULL && safeStrCmp(_(pa_city), "NULL"))) {
+ if ((pa_timezone != NULL) && (_(pa_city) != NULL )) {
+ /* SETTING_TRACE_DEBUG("*** timezone: %s *** ", timezone); */
+ /* SETTING_TRACE_DEBUG("*** city: %s *** ", _(city)); */
+ /* SETTING_TRACE_DEBUG("*** ret: %d, dst: %d *** ", ret, dst); */
- ret = snprintf(time_zone_sub_str,
- CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT %s",
- _(pa_city), pa_timezone);
+ ret = snprintf(time_zone_sub_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT %s", _(pa_city), pa_timezone);
+ //ret = snprintf(time_zone_sub_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT %s", pa_timezone, _(pa_city));
FREE(pa_city);
retv_if(ret < 0, 0);
} else {
- ret =
- snprintf(time_zone_sub_str,
- CITY_BUF_SIZE + GMT_BUF_SIZE + 2,
- "%s, GMT +09", _("IDS_WCL_BODY_CITYNAME_SEOUL"));
+ ret = snprintf(time_zone_sub_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT +09", _("IDS_WCL_BODY_CITYNAME_SEOUL"));
retv_if(ret < 0, 0);
}
SETTING_TRACE("ad->data_tz:%p", ad->data_tz);
return 0;
}
-bool __update_timezone_idler(SettingTimeUG *ad)
-{
- setting_update_timezone(ad);
- ad->update_timezone_idler = NULL;
- return 0;
-}
static void setting_time_main_int_vconf_change_cb(keynode_t *key, void *data)
{
- SETTING_TRACE_BEGIN;
+ /* SETTING_TRACE_BEGIN; */
ret_if(NULL == data);
SettingTimeUG *ad = data;
int status = vconf_keynode_get_int(key);
char *vconf_name = vconf_keynode_get_name(key);
+ /* SETTING_TRACE("vconf_name:%s", vconf_name); */
if (!safeStrCmp(vconf_name, VCONFKEY_REGIONFORMAT_TIME1224)) {
+
if (ad->data_time) {
/* VCONFKEY_REGIONFORMAT_TIME1224 1:12H 2:24H */
if (status <= 2 && status > 0) /* 1, 2 */
time_format = "%H : %M";
}
+//get date format from datefiled itself, if elm_datetime_add() supports set date-format via ICU.
+#ifdef SUPPORT_DATEFIELD_DATE_FORMAT_AUTOSET
+ const char *old_format = elm_datetime_format_get(ad->data_time->eo_check);
+ snprintf(datefield_format, MAX_DATE_FORMAT_LEN + 1, //add one space " "
+ "%s", old_format);
+ safeStrNCat(datefield_format, time_format, MAX_DATETIME_FORMAT_LEN);
+ SETTING_TRACE("datefield_format:%s", datefield_format);
+#else
int value = SETTING_DATE_FORMAT_DD_MM_YYYY;
int err = -1;
if (ret == SETTING_RETURN_FAIL)
value = SETTING_DATE_FORMAT_DD_MM_YYYY;
- snprintf(datefield_format, MAX_DATETIME_FORMAT_LEN,
+ snprintf(datefield_format, MAX_DATETIME_FORMAT_LEN,
"%s %s", date_format_str[value], time_format);
+#endif
elm_datetime_format_set(ad->data_time->eo_check, datefield_format);
}
}
}
+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
*
***************************************************/
-#define ONE_MINUTE 60
static void setting_time_main_datefield_change_cb(void *data, Evas_Object *obj,
void *event_info)
{
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()) {
} else {
// otherwise, we apply a new date which has been changed by a user
}
-
+
struct tm _tm;
elm_datetime_value_get(obj, &_tm);
-
SETTING_TRACE("year : %d, month : %d, day : %d, hour : %d, min : %d",
_tm.tm_year, _tm.tm_mon, _tm.tm_mday, _tm.tm_hour, _tm.tm_min);
if (2037 < _tm.tm_year) {
- setting_create_popup_without_title(ad, ad->win_get,
- _("Cannot Set the year bigger than 2037"));
+ setting_create_simple_popup(ad, ad->win_get,
+ NULL, _(ERR_BIGGER_THAN_2037));
return;
}
#if SUPPORT_SCREEN_PROTECTED /* if not lock the current state, after set the time, the screen will become dimmed */
pm_lock_state(LCD_NORMAL, STAY_CUR_STATE, 0);
#endif
_tm.tm_sec = 0;
-
+
int isdst;
if (get_timezone_isdst(&isdst) == SETTING_RETURN_SUCCESS) {
_tm.tm_isdst = isdst;
} else {
- // error
+ // error
SETTING_TRACE_ERROR("get_timezone_isdst() failed");
return;
- }
+ }
/* local time -> gmtime */
time_t the_time = mktime(&_tm); /* represent local time */
- ad->changed_time = the_time;
- if ((time(NULL)/ONE_MINUTE) == (the_time/ONE_MINUTE))
+ if ( (time(NULL)/ONE_MINUTE) == (the_time/ONE_MINUTE) )
{
SETTING_TRACE("Time is not changed\n");
//current time didn't change
return;
}
- int ret = sysman_set_datetime(the_time);
- setting_retm_if(ret == -1, "sysman_set_datetime call failed");
- //----------------------------------------------------------
-
-
- /* exceptional handling */
- if (ad->heynoti_timer) {
- ecore_timer_del(ad->heynoti_timer);
- ad->heynoti_timer = NULL;
- }
- ad->heynoti_timer = ecore_timer_add(1, (Ecore_Task_Cb) setting_time_update_cb, ad);
-
+#if PROGRESS_POPUP_SHOW
+ // remove popup if created
if (ad->pop_progress) {
evas_object_del(ad->pop_progress);
ad->pop_progress = NULL;
}
- ad->pop_progress = setting_create_popup_with_progressbar(ad, ad->win_get,
- "pending_list",
- NULL, NULL, NULL, 0);
+
+ // create new popup
+ ad->pop_progress =
+ setting_create_popup_with_progressbar(ad, ad->win_get, "pending_list",
+ NULL, NULL, NULL, 0, TRUE, TRUE);
+#endif
+
+ // invoke API to change time
+ int ret = sysman_set_datetime(the_time);
+ setting_retm_if(ret == -1, "sysman_set_datetime call failed");
SETTING_TRACE_END;
}
struct tm ts_ret;
struct tm *ts = localtime_r(&ctime, &ts_ret);
retv_if(!ts, 1);
-
- elm_datetime_value_set(ad->data_time->eo_check, &ts_ret);
+
+ 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);
+ }
}
return 1;
}
SETTING_WEEKOFDAY_FORMAT_MONDAY,
"IDS_ST_BODY_MONDAY", NULL);
- setting_create_Gendial_exp_sub_field(scroller,
- &(ad->itc_1icon_1text_sub),
- NULL, rgd, parentItem,
- SWALLOW_Type_1RADIO, rgd,
- SETTING_WEEKOFDAY_FORMAT_TUESDAY,
- "IDS_ST_BODY_TUESDAY", NULL);
- setting_create_Gendial_exp_sub_field(scroller,
- &(ad->itc_1icon_1text_sub),
- NULL, rgd, parentItem,
- SWALLOW_Type_1RADIO, rgd,
- SETTING_WEEKOFDAY_FORMAT_WEDNESDAY,
- "IDS_ST_BODY_WEDNESDAY", NULL);
- setting_create_Gendial_exp_sub_field(scroller,
- &(ad->itc_1icon_1text_sub),
- NULL, rgd, parentItem,
- SWALLOW_Type_1RADIO, rgd,
- SETTING_WEEKOFDAY_FORMAT_THURSDAY,
- "IDS_ST_BODY_THURSDAY", NULL);
-
- setting_create_Gendial_exp_sub_field(scroller,
- &(ad->itc_1icon_1text_sub),
- NULL, rgd, parentItem,
- SWALLOW_Type_1RADIO, rgd,
- SETTING_WEEKOFDAY_FORMAT_FRIDAY,
- "IDS_ST_BODY_FRIDAY", NULL);
-
- setting_create_Gendial_exp_sub_field(scroller,
- &(ad->itc_1icon_1text_sub),
- NULL, rgd, parentItem,
- SWALLOW_Type_1RADIO, rgd,
- SETTING_WEEKOFDAY_FORMAT_SATURDAY,
- "IDS_ST_BODY_SATURDAY", NULL);
-
setting_update_chk_status(rgd,
data_parentItem->int_slp_setting_binded);
}
}
+/**
+ * layyout create - remove a conformant
+ */
+Evas_Object *setting_create_win_layout2(Evas_Object *win_layout,
+ Evas_Object *win_obj)
+{
+ Evas_Object *layout = NULL;
+ //Evas_Object *conform = elm_conformant_add(win_obj);
+ /* Base Layout */
+ layout = elm_layout_add(win_obj);
+ setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
+
+ elm_layout_theme_set(layout, "layout", "application", "default");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ //elm_win_resize_object_add(win_obj, layout);
+ //elm_win_resize_object_add(win_obj, conform);
+ //elm_object_content_set(conform, layout);
+
+ Evas_Object *bg = setting_create_bg(layout, win_obj, "group_list");
+ elm_object_part_content_set(layout, "elm.swallow.bg", bg);
+ evas_object_show(layout);
+ //evas_object_show(conform);
+ return layout;
+}
+
+
+
+Evas_Object *setting_create_layout_navi_bar2(Evas_Object *win_layout,
+ Evas_Object *win_obj,
+ char *title_str,
+ char *lbutton_str, char *rbutton_str, char *mbutton_str,
+ setting_call_back_func lbutton_click_cb, setting_call_back_func rbutton_click_cb,
+ setting_call_back_func mbutton_click_cb,
+ void *cb_data, Evas_Object *eo_view, /*any container obj constructed on any evas obj */
+ Evas_Object **navi_bar,
+ Evas_Object **titleobj)
+{
+
+ Evas_Object *layout = setting_create_win_layout2(win_layout, win_obj);
+ *navi_bar = setting_create_navi_bar(layout);
+
+ setting_create_navi_bar_buttons(title_str,
+ lbutton_str, rbutton_str, mbutton_str,
+ lbutton_click_cb, rbutton_click_cb,
+ mbutton_click_cb, cb_data, eo_view /*content */ ,
+ *navi_bar, NULL);
+ return layout;
+}
+
static int setting_time_main_create(void *cb)
{
SETTING_TRACE_BEGIN;
char *l_btn = NULL;
char *r_btn = NULL;
char *title = _("IDS_ST_BODY_DATE_AND_TIME");
- char *temp = NULL;
char *caller = NULL;
ad->is_datefield_selected = EINA_FALSE;
setting_call_back_func l_button_cb = NULL;
setting_call_back_func r_button_cb = NULL;
- bundle *data = ad->bundle_data;
+ service_h service = ad->bundle_data;
- if (data != NULL) {
- if (NULL != (temp = (char *)bundle_get_val(data, "caller")))
- caller = temp;
- if (NULL != (temp = (char *)bundle_get_val(data, "lbutton"))) {
- l_btn = temp;
- l_button_cb =
- setting_time_main_click_softkey_caller_exist_left_cb;
- }
- if (NULL != (temp = (char *)bundle_get_val(data, "title")))
- title = temp;
- if (NULL != (temp = (char *)bundle_get_val(data, "rbutton"))) {
- r_btn = temp;
- r_button_cb =
- setting_time_main_click_softkey_caller_exist_right_cb;
- }
- }
+ service_get_extra_data(service, "caller", &caller);
+ service_get_extra_data(service, "lbutton", &l_btn);
+ if(l_btn)
+ l_button_cb = setting_time_main_click_softkey_caller_exist_left_cb;
+ service_get_extra_data(service, "title", &title);
+ service_get_extra_data(service, "rbutton", &r_btn);
+ if(r_btn)
+ r_button_cb = setting_time_main_click_softkey_caller_exist_right_cb;
Evas_Object *scroller; /* scroller is a genlist */
ad->caller = caller;
if (ad->caller) {
- char *lbtn_str = (char *)g_strdup(l_btn);
- bool same_flag = FALSE;
- if (0 == safeStrCmp(l_btn, _("IDS_COM_BODY_BACK"))) {
- l_btn = _("IDS_COM_BODY_BACK");
- same_flag = TRUE;
- }
+ /* for setup wizard */
+ char *lbtn_str = (char *)g_strdup(l_btn);
+ bool same_flag = FALSE;
+ if (0 == safeStrCmp(l_btn, _("IDS_COM_BODY_BACK"))) {
+ l_btn = (char *)dgettext("sys_string", "IDS_COM_BODY_BACK");
+ same_flag = TRUE;
+ }
- Evas_Object *controllbar = NULL;
+ //Evas_Object *controllbar = NULL;
scroller = elm_genlist_add(ad->win_main_layout);
- if(scroller == NULL) {
- SETTING_TRACE_ERROR("Cannot set scroller object as contento of layout");
+ elm_object_style_set(scroller, "dialogue");
+ if(scroller == NULL) {
+ SETTING_TRACE_ERROR("Cannot set scroller object as contento of layout");
// free allocated data before return.
FREE(lbtn_str);
- return SETTING_DRAW_ERR_FAIL_SCROLLER;
- }
+ return SETTING_DRAW_ERR_FAIL_SCROLLER;
+ }
elm_genlist_clear(scroller);
-
ad->ly_main =
- setting_create_layout_navi_bar(ad->win_main_layout,
+ setting_create_layout_navi_bar2(ad->win_main_layout,
ad->win_get,
title,
- l_btn,
- r_btn, NULL,
- l_button_cb,
- r_button_cb,
- NULL, ad,
- scroller,
+ NULL, NULL, NULL,
+ NULL, NULL, NULL,
+ ad, scroller,
&ad->navi_bar,
- &controllbar);
-
- if (same_flag) {
- setting_time_main_controlbar_lbtn_label_set(controllbar,
- lbtn_str);
- }
- if (lbtn_str) {
- G_FREE(lbtn_str);
- }
-
+ NULL);
+ /* left button */
+ Evas_Object *lbtn_obj = elm_button_add(ad->win_main_layout);
+ if(lbtn_obj == NULL)
+ return SETTING_DRAW_ERR_FAIL_SCROLLER;
+
+ Evas_Object *licon_obj = elm_icon_add(ad->win_main_layout);
+ if(licon_obj == NULL)
+ return SETTING_DRAW_ERR_FAIL_SCROLLER;
+ elm_icon_file_set(licon_obj, IMG_PREVIOUS, NULL);
+
+ elm_object_style_set(lbtn_obj, "naviframe/toolbar/default");
+ elm_object_text_set(lbtn_obj, l_btn);
+ elm_object_part_content_set(lbtn_obj, "elm.swallow.content", licon_obj);
+ evas_object_smart_callback_add(lbtn_obj, "clicked", l_button_cb, ad);
+
+ /* right button */
+ Evas_Object *rbtn_obj = elm_button_add(ad->win_main_layout);
+ if(rbtn_obj == NULL)
+ return SETTING_DRAW_ERR_FAIL_SCROLLER;
+
+ Evas_Object *ricon_obj = elm_icon_add(ad->win_main_layout);
+ if(ricon_obj == NULL)
+ return SETTING_DRAW_ERR_FAIL_SCROLLER;
+ elm_icon_file_set(ricon_obj, IMG_NEXT, NULL);
+
+ elm_object_style_set(rbtn_obj, "naviframe/toolbar/default");
+ elm_object_text_set(rbtn_obj, r_btn);
+ elm_object_part_content_set(rbtn_obj, "elm.swallow.content", ricon_obj);
+ evas_object_smart_callback_add(rbtn_obj, "clicked", r_button_cb, ad);
+
+ Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navi_bar);
+ if(navi_it)
+ {
+ elm_object_item_part_content_set(navi_it, "toolbar_button1", lbtn_obj);
+ elm_object_item_part_content_set(navi_it, "toolbar_button2", rbtn_obj);
+ }
} else {
l_btn = _("IDS_COM_BODY_BACK");
title = _("IDS_ST_BODY_DATE_AND_TIME");
int err;
int ret = 0;
Elm_Object_Item *item;
- bool auto_flag = TRUE;
- if(!isEmulBin())
+ item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE, &value,
+ &err);
+ bool auto_flag = value;
+
+ if(auto_flag) //do special process only when auto mode
{
- item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE, &value, &err);
- auto_flag = value;
+ //to read TAPI vconfs
+ 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))
+ {
+ //1.to update timezone
+ 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.");
+ } else
+ SETTING_TRACE("sysman_set_timezone - successful : %s \n", tz_path);
+ if (!__setting_set_city_tzone(tzpath)) {
+ SETTING_TRACE("__setting_set_city_tzone ERROR")
+ }
+ 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);
+
+ // 2.to set current time
+ 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");
+ }
- /* UI automatic */
+ 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);
+ }
+ }
+
+ /* UI automatic */
+ if (!isEmulBin()) {
ad->data_auto =
- setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
- setting_time_main_mouse_up_Gendial_list_cb,
- ad, SWALLOW_Type_1TOGGLE, NULL,
- NULL, value,
- "IDS_ST_BODY_AUTOMATIC_UPDATE", NULL,
- setting_time_main_chk_btn_cb);
+ setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
+ setting_time_main_mouse_up_Gendial_list_cb,
+ ad, SWALLOW_Type_1TOGGLE, NULL,
+ NULL, value,
+ "IDS_ST_BODY_AUTOMATIC_UPDATE", NULL,
+ setting_time_main_chk_btn_cb);
if (ad->data_auto) {
ad->data_auto->userdata = ad;
} else {
SETTING_TRACE_ERROR("ad->data_auto is NULL");
}
- }
- else
- {
- setting_set_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE, FALSE, &err);
- auto_flag = FALSE;
- }
- /* UI add separator */
- item =
- elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
+ ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
+ NULL, NULL, 0, SETTING_TIME_AUTO_UPDATE_DESC, NULL,
+ NULL);
+ elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
- appcore_set_i18n("worldclock", SETTING_TIME_SHARE_LOCAL_PATH);
+ setting_set_i18n("worldclock", SETTING_TIME_SHARE_LOCAL_PATH);
char time_zone_sub_str[CITY_BUF_SIZE + GMT_BUF_SIZE + 3] = { 0, };
char *pa_timezone = NULL;
char *pa_city = NULL;
- pa_city = vconf_get_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT);
- pa_timezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_INT);
- if ((pa_timezone != NULL)
- && (_(pa_city) != NULL && safeStrCmp(_(pa_city), "NULL"))) {
- ret =
- snprintf(time_zone_sub_str,
- CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT %s",
- _(pa_city), pa_timezone);
+ pa_city = vconf_get_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT); // IDS_WCL_BODY_CITYNAME_SEOUL
+ pa_timezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_INT); // "Asia/Seoul"
+
+ if ((pa_timezone != NULL) && (_(pa_city) != NULL)) {
+
+ // don't use hard coded value
+ // get value from current timezone
+
+ char str_buf[GMT_BUF_SIZE] = {0, };
+ get_gmt_offset(str_buf, GMT_BUF_SIZE);
+
+ char* timezone_str = get_timezone_str();
+
+ bool ret = get_city_name(timezone_str);
+ if (ret) {
+ SETTING_TRACE(">>>>>> RESULT : %s", get_city_name_result());
+ }
+ char* cityname_id = _(get_city_name_result());
+ SETTING_TRACE("cityname_id:%s", cityname_id);
+ if (cityname_id && 0 != safeStrCmp(cityname_id, "NULL"))
+ ret = snprintf(time_zone_sub_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT %s", cityname_id, _(str_buf));
+ else
+ ret = snprintf(time_zone_sub_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT +09", _("IDS_WCL_BODY_CITYNAME_SEOUL"));
+
FREE(pa_city);
FREE(pa_timezone);
retv_if(ret < 0, 0);
} else {
- ret =
- snprintf(time_zone_sub_str,
- CITY_BUF_SIZE + GMT_BUF_SIZE + 2,
- "%s, GMT +09", _("IDS_WCL_BODY_CITYNAME_SEOUL"));
+ // default code
+ ret = snprintf(time_zone_sub_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT +09", _("IDS_WCL_BODY_CITYNAME_SEOUL"));
retv_if(ret < 0, 0);
}
/* create DATE_AND_TIME */
/* DATE_AND_TIME */
-
ret =
setting_get_int_slp_key(INT_SLP_SETTING_REGIONFORMAT_TIME1224,
&value, &err);
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");
}
-
- item =
- elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
+ item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
__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->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,
}
G_FREE(pa_time_format);
+#if APPLIED_DATATIME_DATA_FORMAT
+ char* pa_date_format = get_pa_date_format_str();
+ ad->data_date_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_ST_BODY_DATE_FORMAT",
+ pa_time_format);
+ if (ad->data_date_fmt) {
+ ad->data_date_fmt->int_slp_setting_binded =
+ INT_SLP_SETTING_DATE_FORMAT;
+ } else {
+ SETTING_TRACE_ERROR("ad->data_date_fmt is NULL");
+ }
+ 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,
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 (auto_flag)
{
}
setting_view_time_main.is_create = 1;
-
-#if TIME_CHANGED_HEYNOTY_CALLBACK
- /* ---------------------------------------------------------------- */
- /* heynoti registration */
- /* ---------------------------------------------------------------- */
- ad->noti_fd = heynoti_init();
-
- if (ad->noti_fd == -1) {
- SETTING_TRACE("heynoti_init FAIL");
- return SETTING_RETURN_FAIL;
- } else {
- SETTING_TRACE("heynoti_init OK");
- }
-
- if (-1 == heynoti_subscribe(ad->noti_fd, SETTING_TIME_CHANGED, time_changed_callback, (void *)ad)) {
- SETTING_TRACE("heynoti_subscribe FAIL");
- } else {
- SETTING_TRACE("heynoti_subscribe OK");
- }
-
- if (-1 == heynoti_attach_handler(ad->noti_fd)) {
- SETTING_TRACE("heynoti_attach_handler FAIL");
- } else {
- SETTING_TRACE("heynoti_attach_handler OK");
- }
-#endif
+ 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);
+ ad->update_timer = ecore_timer_add(3, (Ecore_Task_Cb) __refresh_date_timer, ad);
return SETTING_RETURN_SUCCESS;
}
SettingTimeUG *ad = (SettingTimeUG *) cb;
-#if TIME_CHANGED_HEYNOTY_CALLBACK
- /* Closing heynoti */
- if (ad->noti_fd != -1)//first need to check the fd validation
- {
- heynoti_unsubscribe(ad->noti_fd, SETTING_TIME_CHANGED, time_changed_callback);
- heynoti_close(ad->noti_fd);
- ad->noti_fd = -1;
- }
-#endif
if (ad->update_timer) {
ecore_timer_del(ad->update_timer);
ad->update_timer = NULL;
}
- if (ad->heynoti_timer) {
- ecore_timer_del(ad->heynoti_timer);
- ad->heynoti_timer = NULL;
- }
+
+#if PROGRESS_POPUP_SHOW
if (ad->pop_progress) {
evas_object_del(ad->pop_progress);
ad->pop_progress = NULL;
}
+#endif
if (ad->update_timezone_idler) {
ecore_idler_del(ad->update_timezone_idler);
ecore_idler_del(ad->refresh_time_idler);
ad->refresh_time_idler = NULL;
}
+
+ vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED,
+ time_changed_callback);
+
vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
setting_time_main_int_vconf_change_cb);
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;
return SETTING_RETURN_SUCCESS;
}
+
/* ***************************************************
**
**general func
}
-static int
-__setting_set_city_tzone(const char* pTZPath)
+static int __setting_set_city_tzone(const char* pTZPath)
{
// let's get city & timezone string from pTZPath
// 1. city name
char szTimezone[GMT_BUF_SIZE] = {0,};
char* pStr = strdup(pTZPath);
- // 2. timezone string +/-<n> ex. +9, -1
- time_t t = time(0);
-
- struct tm* data;
- data = localtime(&t);
- retv_if(!data, FALSE);
- data->tm_isdst = 0;
-
- time_t a = mktime(data);
- data = gmtime(&t);
- data->tm_isdst = 0;
-
- time_t b = mktime(data);
- int gmtoffset = (a-b)/3600;
- snprintf(szTimezone, GMT_BUF_SIZE, "%+d", gmtoffset);
-
- SETTING_TRACE("szTimezone is of a valid format: GMT: %s", szTimezone);
+ // 2. timezone string +/-<n> ex. +9, -1
+ get_gmt_offset(szTimezone, GMT_BUF_SIZE);
int ret = vconf_set_str(VCONFKEY_SETAPPL_TIMEZONE_INT, szTimezone);
if (ret == -1) {
}
static void
-setting_time_main_launch_worldclock_result_ug_cb(struct ui_gadget *ug,
- bundle *result, void *priv)
+setting_time_main_launch_worldclock_result_ug_cb(ui_gadget_h ug,
+ service_h result, void *priv)
{
SETTING_TRACE_BEGIN;
/* error check */
SettingTimeUG *ad = (SettingTimeUG *) priv;
- const char *city = bundle_get_val(result, "city");
- const char *tzpath = bundle_get_val(result, "tzpath");
+ char *city = NULL;
+ char *tzpath = NULL;
+ service_get_extra_data(result, "city", &city);
+ service_get_extra_data(result, "tzpath", &tzpath);
+
if (!tzpath) {
SETTING_TRACE("tzpath from worldclock UG is null.");
return;
} else {
SETTING_TRACE("tzpath : %s", tzpath );
}
+ SETTING_TRACE("city : %s", city );
/* --------------------------------------------------------------------- */
- /* create symbolic link /etc/localtime to /usr/share/zoneinfo */
- /* TODO add error handler */
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);
- // ASSERT tzpath format Zone/cityname <<--- need to have '/'
int ret = sysman_set_timezone(tz_path);
if (ret < 0) {
SETTING_TRACE("tzpath is not valid.");
return;
- }
- SETTING_TRACE("copy_file SUCCEEDED *********************** %s \n", tz_path);
+ } else
+ SETTING_TRACE("sysman_set_timezone - successful : %s \n", tz_path);
ret = vconf_set_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT, city);
setting_retm_if(ret != 0, "set vconf failed");
return;
}
- ad->heynoti_timer = ecore_timer_add(1, (Ecore_Task_Cb) setting_time_update_cb, ad);
- // update the display for timezone
+ // update the display for timezone
setting_update_timezone(ad);
-
+ static int t_event_val = -1;
+ vconf_set_int (VCONFKEY_SYSTEM_TIME_CHANGED, t_event_val);
SETTING_TRACE_END;
}
-void setting_time_main_launch_worldclock_destroy_ug_cb(struct ui_gadget *ug,
+void setting_time_main_launch_worldclock_destroy_ug_cb(ui_gadget_h ug,
void *priv)
{
SETTING_TRACE_BEGIN;
+ /* if(ug) ug_destroy(ug); */
/* restore the '<-' button on the navigate bar */
ret_if(!priv);
SettingTimeUG *ad = (SettingTimeUG *) priv;
}
-void setting_time_main_launch_worldclock_layout_ug_cb(struct ui_gadget *ug,
+void setting_time_main_launch_worldclock_layout_ug_cb(ui_gadget_h ug,
enum ug_mode mode,
void *priv)
{
SettingTimeUG *ad = (SettingTimeUG *) priv;
Evas_Object *base;
- if (!ug || !priv)
+ if (!priv)
return;
base = (Evas_Object *) ug_get_layout(ug);
case UG_MODE_FULLVIEW:
evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
- elm_win_resize_object_add(ad->win_get, base);
+ //elm_win_resize_object_add(ad->win_get, base);
evas_object_show(base);
break;
default:
SETTING_TRACE_END;
}
+
void setting_time_main_launch_worldclock_sg(void *data)
{
SETTING_TRACE_BEGIN;
/* error check */
retm_if(data == NULL, "Data parameter is NULL");
+
SettingTimeUG *ad = (SettingTimeUG *) data;
- if (ad->ug_loading) return; // prevent double-clicked
struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
setting_retm_if(!cbs, "calloc failed");
return;
}
+
Eina_Bool setting_update_datefield(void *cb)
{
SETTING_TRACE_BEGIN;
retvm_if(cb == NULL, EINA_FALSE, "Data parameter is NULL");
SettingTimeUG *ad = (SettingTimeUG *) cb;
- __refresh_date_timer(ad);
+ //__refresh_date_timer(ad);
+ if (ad->data_time) {
+ time_t ctime = time(NULL);
+ struct tm ts_ret;
+ struct tm *ts = localtime_r(&ctime, &ts_ret);
+ if (ts) elm_datetime_value_set(ad->data_time->eo_check, &ts_ret);
+ }
ad->refresh_time_idler = NULL;
return 0;
}
SettingTimeUG *ad = (SettingTimeUG *) data;
/* Create Bundle and send message */
- bundle *b = NULL;
- b = bundle_create();
-
- if (!b)
+ service_h svc;
+ if (service_create(&svc))
return;
- bundle_add(b, "result", "lbutton_click");
- ug_send_result(ad->ug, b);
- bundle_free(b);
+
+ service_add_extra_data(svc, "result", "lbutton_click");
+ ug_send_result(ad->ug, svc);
+
+ service_destroy(svc);
/* Send destroy request */
ug_destroy_me(ad->ug);
SettingTimeUG *ad = (SettingTimeUG *) data;
/* Create Bundle and send message */
- bundle *b = NULL;
- b = bundle_create();
-
- if (!b)
+ service_h svc;
+ if (service_create(&svc))
return;
- bundle_add(b, "result", "rbutton_click");
- ug_send_result(ad->ug, b);
- bundle_free(b);
+
+ service_add_extra_data(svc, "result", "rbutton_click");
+ ug_send_result(ad->ug, svc);
+
+ service_destroy(svc);
/* Send destroy request */
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");
+ SettingTimeUG *ad = (SettingTimeUG *) data;
+ int err;
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE,
+ SETTING_ON_OFF_BTN_ON, &err);
+ if (ad->data_tz) {
+ setting_disable_genlist_item(ad->data_tz->item);
+ }
+
+ if (ad->data_time) {
+ ad->data_time->isItemDisableFlag = FALSE;
+ setting_disable_evas_object(ad->data_time->eo_check);
+ setting_disable_genlist_item(ad->data_time->item);
+ }
+ __update_time_via_sim_card(ad);
+}
static void
setting_time_main_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE,
&bvalue, &err);
if (bvalue) {
- (void)
- setting_set_bool_slp_key
- (BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE,
- SETTING_ON_OFF_BTN_OFF, &err);
+ (void) setting_set_bool_slp_key (BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE, SETTING_ON_OFF_BTN_OFF, &err);
elm_check_state_set(ad->chk_auto, 0);
+
if (ad->data_tz) {
setting_enable_genlist_item(ad->data_tz->item);
}
setting_enable_evas_object(ad->data_time->eo_check);
setting_enable_genlist_item(ad->data_time->item);
}
-
+
} else {
+#if UN_SUPPORT_TIME_DYNAMIC_UPDATE
ad->pop =
- setting_create_popup_with_btn(ad, ad->win_get,
- _
- ("IDS_ST_POP_RESTART_PHONE_TO_USE_AUTOMATIC_UPDATE_Q"),
- NULL,
+ 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",
+ dgettext("sys_string",
"IDS_COM_SK_OK"),
_("IDS_COM_SK_CANCEL"));
+#else
+ __time_auto_update(ad);
+#endif
}
-
}
}
-
-static void
-setting_time_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
+static void setting_time_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
void *event_info)
{
SETTING_TRACE_BEGIN;
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_popup_without_title(ad, ad->win_get,
- _("Automatic time update is ON!"));
+ setting_create_simple_popup(ad, ad->win_get,
+ NULL, _(AUTO_TIME_UPDATE_ON));
} else {
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_popup_without_title(ad, ad->win_get,
- _("Automatic time update is ON!"));
+ setting_create_simple_popup(ad, ad->win_get,
+ NULL, _(AUTO_TIME_UPDATE_ON));
} else {
- // do nothing
+ /* 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 */
setting_set_bool_slp_key
(BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE,
SETTING_ON_OFF_BTN_OFF, &err);
-
+
if (ad->data_tz) {
setting_enable_genlist_item(ad->data_tz->item);
}
setting_enable_evas_object(ad->data_time->eo_check);
setting_enable_genlist_item(ad->data_time->item);
}
-
+
} else {
+ #if UN_SUPPORT_TIME_DYNAMIC_UPDATE
ad->pop =
- setting_create_popup_with_btn(ad, ad->win_get,
+ setting_create_popup_with_btn(ad, ad->win_get, NULL,
_("IDS_ST_POP_RESTART_PHONE_TO_USE_AUTOMATIC_UPDATE_Q"),
- NULL,
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 (!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);
}
}
+
void setting_time_main_btn_update_ok_cb(void *cb)
{
SETTING_TRACE_BEGIN;
/* It will return 0 on success or -1 if failed. */
}
+
void setting_time_main_btn_update_cancel_cb(void *cb)
{
SETTING_TRACE_BEGIN;
}
+
static UChar *uastrcpy(const char *chars)
{
int len = 0;
return str;
}
-/**
- * @todo how do this code represent error?
- */
+
static int get_timezone_isdst(int* isdst)
{
SETTING_TRACE_BEGIN;
- struct tm *ts;
+ struct tm *ts;
time_t ctime;
enum { BUFFERSIZE = 1024 };
}
SETTING_TRACE(" == tz_path = %s", buf);
- SETTING_TRACE(" == isdst = %d\n", ts->tm_isdst);
+ SETTING_TRACE(" == isdst = %d\n", ts->tm_isdst);
*isdst = ts->tm_isdst;
-
- return SETTING_RETURN_SUCCESS;
+
+ return SETTING_RETURN_SUCCESS;
}
+
static void ICU_set_timezone(const char *timezone)
{
SETTING_TRACE("ICU_set_timezone = %s ", timezone);
FREE(str);
}
+#if DISABLED_CODE
static void setting_time_main_controlbar_lbtn_label_set(
Evas_Object *controlbar,
char *label)
{
- SETTING_TRACE_BEGIN;
- setting_retm_if(controlbar == NULL, "controlbar parameter is NULL");
- setting_retm_if(label == NULL, "label parameter is NULL");
+ SETTING_TRACE_BEGIN;
+ setting_retm_if(controlbar == NULL, "controlbar parameter is NULL");
+ setting_retm_if(label == NULL, "label parameter is NULL");
- Evas_Object *eo_lbtn = NULL;
- Elm_Object_Item *first_item = NULL;
+ Evas_Object *eo_lbtn = NULL;
+ Elm_Object_Item *first_item = NULL;
- first_item = elm_toolbar_first_item_get(controlbar);
- setting_retm_if(first_item == NULL, "get first_item failed");
+ first_item = elm_toolbar_first_item_get(controlbar);
+ setting_retm_if(first_item == NULL, "get first_item failed");
eo_lbtn = elm_object_item_part_content_get(first_item, "object");
+ setting_retm_if(eo_lbtn == NULL, "get eo_lbtn failed");
+
+ elm_object_text_set(eo_lbtn, label);
+}
+#endif
+
+/**
+ * ex) timezone : Asia/Seoul --> returns "+09"
+ *
+ * char outstr2[4];
+ */
+static void get_gmt_offset(char *str_buf, int size)
+{
+ // timezone string +/-<n> ex. +9, -1
+ time_t t = time(0); // get unix time. sec.
+
+ struct tm* data;
+ data = localtime(&t); // save time as structure.
+ setting_retm_if(!data, "data is NULL");
+ data->tm_isdst = 0; // summer time, not applied.
+ time_t a = mktime(data);
- setting_retm_if(eo_lbtn == NULL, "get eo_lbtn failed");
+ data = gmtime(&a);
+ data->tm_isdst = 0; // summer time, not applied.
+ time_t b = mktime(data);
- elm_object_text_set(eo_lbtn, label);
+ int gmtoffset_hour = (a-b)/3600; // result : hour.
+ int gmtoffset_min = ((a-b)%3600)/60; // result : min.
+ if(gmtoffset_min != 0) {
+ gmtoffset_min = 30;
+ }
+
+ snprintf(str_buf, size, "%+d:%02u", gmtoffset_hour, gmtoffset_min);
+ SETTING_TRACE("szTimezone is of a valid format: GMT: %s", str_buf);
}
+
+
+// automatic
+static char* get_timezone_str()
+{
+ SETTING_TRACE_BEGIN;
+
+ enum { BUFFERSIZE = 1024 };
+ char buf[BUFFERSIZE];
+ ssize_t len = readlink("/opt/etc/localtime", buf, sizeof(buf)-1);
+
+ if (len != -1) {
+ buf[len] = '\0';
+ }
+ else {
+ /* handle error condition */
+ }
+ return g_strdup(buf+20); //Asia/Seoul
+}
+
+static char* get_city_name_result()
+{
+ return s_result;
+}
+
+
+// in_str = "Asia/Seoul"
+static bool get_city_name(char* tzname)
+{
+ sqlite3 *pSQLite3 = NULL;
+ char *szErrMsg = NULL;
+
+ int rst = sqlite3_open( "/opt/dbspace/.worldclock.db", &pSQLite3);
+ if ( rst )
+ {
+ printf( "Can't open database: %s\n", sqlite3_errmsg( pSQLite3 ));
+ sqlite3_close( pSQLite3 );
+ pSQLite3 = NULL;
+ return false;
+ }
+ else
+ {
+ printf("Database opened!!\n");
+ char query_str[256];
+ snprintf(query_str, 256, "SELECT city FROM city_table where tz_path=\"%s\"", tzname);
+ printf("%s \n", query_str);
+ rst = sqlite3_exec(pSQLite3, query_str, query_callback, 0, &szErrMsg);
+ }
+
+ //객체해제
+ sqlite3_free( szErrMsg );
+ sqlite3_close( pSQLite3 );
+ printf("Database close!!\n");
+ return true;
+}
+
+static int query_callback(void *NotUsed, int argc, char **argv, char **azColName)
+{
+ int i = 0;
+ printf("%s\n", argv[i] ? argv[i] : "NULL");
+ s_result = g_strdup(argv[i] ? argv[i] : "NULL");
+ return 0;
+};
+
+
+#if 0 /* example */
+int main(int argc, char* argv[])
+{
+ g_type_init ();
+ int ret;
+ // exporting - current status
+ if ( (argc == 2) && (0 == strcmp(argv[1], "export"))) {
+ setting_export();
+ }
+ else if ( (argc == 2) && (0 == strcmp(argv[1], "timezone_init"))) {
+
+ //////////////////////////////////////////////////////////////////////////
+ char* tz_path_zone_city = get_timezone_str();
+ bool ret = get_city_name(tz_path_zone_city);
+ if (ret) {
+ printf(">>>>>> RESULT : %s \n", get_city_name_result());
+ }
+ //////////////////////////////////////////////////////////////////////////
+ }
+ else {
+ // cfg create
+ // TRUE or FALSE
+ ret = setting_cfg_create();
+ }
+ return 0;
+}
+#endif
+
+
+