2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
31 static void changedTimeCallback(keynode_t* node, void* user_data) {
32 LOGD("entered KeyName: %s", vconf_keynode_get_name(node));
33 MultiCallbackUserData* callback = NULL;
35 if (user_data && !strcmp(vconf_keynode_get_name(node), VCONFKEY_SYSTEM_TIME_CHANGED)) {
37 ((TimeUtil*)user_data)->changeDefaultTimezone();
45 bRegisteredDateTimeChanged = false;
46 m_timezoneChangeCallback = NULL;
47 m_timeChangeCallback = NULL;
50 m_timezone = util.getDefaultTimezone();
52 if (vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, changedTimeCallback, (void*)this) == 0) {
53 LOGD("Success to register changedDateTimeCallback");
54 bRegisteredDateTimeChanged = true;
61 unsetTimeZoneChangeListener();
63 if (bRegisteredDateTimeChanged) {
64 vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, changedTimeCallback);
65 bRegisteredDateTimeChanged = false;
69 TZDatePtr TimeUtil::getCurrentDateTime()
71 TZDatePtr tz = TZDatePtr(new (std::nothrow) TZDate());
75 std::string TimeUtil::getLocalTimezone()
77 return TimeUtilTools::getLocalTimeZone();
80 std::vector<std::string> TimeUtil::getAvailableTimezones()
82 std::vector<std::string> vec = TimeUtilTools::getTimezonesArray();
85 std::string TimeUtil::getDateFormat(bool shortformat)
87 return TimeUtilTools::getDateFormat(shortformat);
89 std::string TimeUtil::getTimeFormat()
91 return TimeUtilTools::getTimeFormat();
93 bool TimeUtil::isLeapYear(long year)
95 return TimeUtilTools::isLeapyear(year);
98 void TimeUtil::changeDefaultTimezone()
102 std::string s_result;
104 std::string defaultTimezone = util.getDefaultTimezone();
106 if (m_timezone != defaultTimezone) {
107 m_timezone = defaultTimezone;
108 UnicodeString *timezoneId = util.toUnicodeString(defaultTimezone);
110 TimeZone* zone = TimeZone::createTimeZone(*timezoneId);
112 TimeZone::setDefault(*zone);
117 if (m_timezoneChangeCallback) {
118 LOGD("Timezone changed");
119 m_timezoneChangeCallback->invokeCallback("onsuccess");
122 if (m_timeChangeCallback) {
123 LOGD("Time changed");
124 m_timeChangeCallback->invokeCallback("onsuccess");
128 void TimeUtil::setDateTimeChangeListener(MultiCallbackUserData* callback)
131 m_timeChangeCallback = callback;
134 void TimeUtil::unsetDateTimeChangeListener()
138 if (m_timeChangeCallback) {
139 delete m_timeChangeCallback;
141 m_timeChangeCallback = NULL;
144 void TimeUtil::setTimeZoneChangeListener(MultiCallbackUserData* callback)
147 m_timezoneChangeCallback = callback;
150 void TimeUtil::unsetTimeZoneChangeListener()
154 if (m_timezoneChangeCallback) {
155 delete m_timezoneChangeCallback;
157 m_timezoneChangeCallback = NULL;