summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
Diffstat (limited to 'inc')
-rw-r--r--inc/clock_fwk_icu_label.h39
-rw-r--r--inc/ug_worldclock_efl.h30
-rw-r--r--inc/worldclock.h116
-rw-r--r--inc/worldclock_add_view.h54
-rw-r--r--inc/worldclock_const.h53
-rw-r--r--inc/worldclock_data.h36
-rw-r--r--inc/worldclock_dlog.h92
-rw-r--r--inc/worldclock_fwk_icu.h37
-rw-r--r--inc/worldclock_timezone.h1258
-rw-r--r--inc/worldclock_types.h88
-rw-r--r--inc/worldclock_util.h90
11 files changed, 1893 insertions, 0 deletions
diff --git a/inc/clock_fwk_icu_label.h b/inc/clock_fwk_icu_label.h
new file mode 100644
index 0000000..8e1c718
--- /dev/null
+++ b/inc/clock_fwk_icu_label.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __CLOCK_FWK_ICU_LABEL_H__
+#define __CLOCK_FWK_ICU_LABEL_H__
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ void init_alphabetic_index(char *lang);
+
+ void uninit_alphabetic_index();
+
+ int32_t get_alphabetic_index(char *cityname);
+
+ char *get_alphabetic_index_name(int32_t index);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/inc/ug_worldclock_efl.h b/inc/ug_worldclock_efl.h
new file mode 100644
index 0000000..20a0bf1
--- /dev/null
+++ b/inc/ug_worldclock_efl.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __helloUG_efl_H__
+#define __helloUG_efl_H__
+
+#include <Elementary.h>
+
+#define IS_STR_EQUAL(a, b) (!strcmp(a, b))
+#define IS_STR_NOT_EQUAL(a, b) (strcmp(a, b))
+
+//******************define:free *************************************
+#define FREEIF(p) ({ if (p) { free(p); p = NULL; } })
+#define EVAS_OBJECT_DELIF(p) ({ if (p) {evas_object_del(p); p = NULL; } })
+#define ECORE_TIMER_DELIF(p) ({ if (p) {ecore_timer_del(p); p = NULL; } })
+
+#endif /* __helloUG_efl_H__ */
diff --git a/inc/worldclock.h b/inc/worldclock.h
new file mode 100644
index 0000000..be1a4ff
--- /dev/null
+++ b/inc/worldclock.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __DEF_WORLDCLOCK_H__
+#define __DEF_WORLDCLOCK_H__
+
+#include <Elementary.h>
+#include <Ecore_IMF.h>
+#include <app.h>
+
+#include "worldclock_const.h"
+#include "worldclock_types.h"
+
+struct appdata {
+ int root_w;
+ int root_h;
+ int root_x;
+ int root_y;
+
+ //the caller
+ Wcl_Caller caller;
+ //the selection flag
+ Wcl_Selection_Flag selectionFlag;
+
+ //flag for if or not enter the loop update
+ bool flag_first; //as the flag for the first time to enter __ugview_index_update
+ bool flag_special_character; //as the flag for if or not have special character in index
+
+ //For store the default country list
+ Eina_List *default_list;
+ //flag for if or not hide the index
+ bool flag_index;
+ //if false shutdown app after reply to app_control
+ bool stay_alive;
+
+ app_control_h app_caller;
+
+ /* Add city List */
+ //For save current search content
+ char search_text[BUF_SIZE];
+ char current_mcc[MCC_BUF_SIZE];
+
+ Elm_Object_Item *item_selected; //for store the selected city item
+ int city_index; //for store the selected city index
+
+ Ecore_IMF_Context *imf_context;
+
+ /* public used widget */
+ Evas_Object *win;
+ Evas_Object *conform;
+ Evas_Object *bg;
+
+ // samsung window layout
+ Evas_Object *ly_main;
+ Evas_Object *more_btn;
+ Evas_Object *back_btn;
+
+ /* add layout */
+ Evas_Object *add_ly;
+ Evas_Object *add_layout;
+ Evas_Object *add_search_bar;
+ Evas_Object *add_fs_layout;
+ Evas_Object *add_genlist;
+ Evas_Object *add_index;
+ Evas_Object *nocontent;
+
+ Evas_Object *searchbar_rect;
+ Evas_Object *searchbar_entry;
+ Evas_Object *searchbar_button;
+
+ /* timer */
+ Ecore_Timer *add_view_quit_timer;
+ Ecore_Timer *add_view_update_timer;
+ Ecore_Timer *search_timer;
+
+ /* Home City */
+ Wcl_CitySet *home_cs;
+
+ Evas_Object *navi_bar;
+
+ // return a Wcl_CitySet, used in ug
+ Wcl_CitySet *return_data;
+
+#ifdef FEATURE_SORT_ORDER
+ //mark sort by name or gmt
+ Wcl_Addlist_Sort_Type sort;
+ Evas_Object *more_popup;
+
+ //sort popup box
+ Evas_Object *sort_popup; //sort popup
+ Evas_Object *sort_popup_genlist; //sort popup genlist
+ Evas_Object *sort_radio; //sort radio
+ Wcl_Addlist_Sort_Type sort_text; //sort text
+ Wcl_Addlist_Sort_Type ex_sort_text; //sort text
+#endif
+
+ Eina_Bool is_Empty;
+ int searched_num;
+ int searched_text_length;
+};
+
+#endif /* __DEF_WORLDCLOCK_H_ */
+
diff --git a/inc/worldclock_add_view.h b/inc/worldclock_add_view.h
new file mode 100644
index 0000000..7f61c20
--- /dev/null
+++ b/inc/worldclock_add_view.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __DEF_WORLDCLOCK_ADDVIEW_H_
+#define __DEF_WORLDCLOCK_ADDVIEW_H_
+
+#include <Elementary.h>
+#include "worldclock.h"
+
+/**
+ * Create add view for append new city into the selection list of worldclock
+ *
+ * @param[in] parent Evas_Object which is the parent of add view
+ * @param[in] data data which used in this function
+ * @param[in] func Callback function which used for invoking when exit from add view
+ *
+ * @return FAILED if create add view failed.
+ * SUCCESS if create add view successfully.
+ */
+int worldclock_ugview_add(Evas_Object * parent, void *data, Wcl_Return_Cb func);
+
+/**
+ * Update worldclock view
+ *
+ * @param[in] data data used for this function
+ *
+ * @return FAILED if update add view failed.
+ * SUCCESS if update add view successfully.
+ */
+int worldclock_ugview_update(void *data);
+
+/**
+ * Release all resources which used in add view when exit from add view
+ *
+ * @param[in] data data which used in this function
+ *
+ * @return
+ */
+void worldclock_ugview_free(void *data);
+
+#endif /* __DEF_WORLDCLOCK_ADDVIEW_H_ */
diff --git a/inc/worldclock_const.h b/inc/worldclock_const.h
new file mode 100644
index 0000000..8d6e120
--- /dev/null
+++ b/inc/worldclock_const.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __DEF_WORLDCLOCK_CONST_H_
+#define __DEF_WORLDCLOCK_CONST_H_
+
+#include <limits.h>
+
+#ifndef _
+#define _(s) (dgettext(PACKAGE, s))
+#endif
+#ifndef _EDJ
+#define _EDJ(o) (elm_layout_edje_get(o))
+#endif
+
+#define BUF_SIZE 256
+#define BUF_MIN_SIZE 32
+#define BUF_LARGE_SIZE 512
+#define BUF_PATH PATH_MAX
+
+#define CITY_BUF_SIZE 128
+#define COUNTRY_BUF_SIZE 128
+#define TIMEZONE_BUF_SIZE 32
+#define TZPATH_BUF_SIZE 128
+#define FLAG_BUF_SIZE 128
+#define MCC_BUF_SIZE 20
+
+#define PACKAGE "worldclock-efl"
+
+/* group name */
+#define GRP_ADD "ug_add_layout"
+
+#ifndef SUCCESS
+#define SUCCESS 0
+#endif
+#ifndef FAILED
+#define FAILED -1
+#endif
+
+#endif /* __DEF_WORLDCLOCK_CONST_H_ */
diff --git a/inc/worldclock_data.h b/inc/worldclock_data.h
new file mode 100644
index 0000000..b254123
--- /dev/null
+++ b/inc/worldclock_data.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __DEF_WORLDCLOCK_DATA_H_
+#define __DEF_WORLDCLOCK_DATA_H_
+
+#include <Elementary.h>
+#include "worldclock_types.h"
+
+Eina_List *worldclock_ug_data_get_default_city_list(Wcl_Selection_Flag selectFlag);
+Eina_Bool worldclock_ug_data_get_city_status_from_db(Wcl_CitySet * p_record);
+Eina_Bool worldclock_ug_data_open_database();
+Eina_Bool worldclock_ug_data_close_database();
+void worldclock_ug_data_cityset_copy(Wcl_CitySet * dst_city, const Wcl_CitySet * src_city);
+
+/*TODO Functions below are not used in current realization. Probably it will be used for Clock application*/
+Wcl_CitySet *worldclock_ug_data_get_local_city();
+Eina_List *worldclock_ug_data_get_all_added_city();
+Eina_List *worldclock_ug_data_get_search_city_list(const char *search_txt,
+ Wcl_Search_Type search_type, Wcl_Selection_Flag selectFlag);
+Eina_Bool worldclock_ug_data_update_db_record(Wcl_CitySet * p_record);
+
+#endif /* __DEF_WORLDCLOCK_DATA_H_ */
diff --git a/inc/worldclock_dlog.h b/inc/worldclock_dlog.h
new file mode 100644
index 0000000..aa87a9e
--- /dev/null
+++ b/inc/worldclock_dlog.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __DEF_WORLDCLOCK_DLOG_H__
+#define __DEF_WORLDCLOCK_DLOG_H__
+
+#include <dlog.h>
+#include "ug_worldclock_efl.h"
+
+//tag
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "WORLDCLOCK_UG"
+
+#define FUNCTION_LOG ENABLE
+#ifdef FUNCTION_LOG
+#define CLK_FUN_BEG() CLK_INFO("====>>>>fun=%s, BEGIN====>>>>", __FUNCTION__);
+#define CLK_FUN_END() CLK_INFO("====>>>>fun=%s, END====>>>>", __FUNCTION__);
+#else
+#define CLK_FUN_BEG()
+#define CLK_FUN_END()
+#endif
+#define CLK_INFO(fmt, arg...) (dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] "fmt, __FILE__, __LINE__, ##arg))
+#define CLK_ERR(fmt, arg...) (dlog_print(DLOG_ERROR, LOG_TAG, FONT_COLOR_RED"[%s:%d] "fmt FONT_COLOR_RESET, __FILE__, __LINE__, ##arg))
+
+#define CLK_FUN_DEBUG_BEG() //CLK_INFO("====>>>>fun=%s, BEGIN====>>>>",__FUNCTION__);
+#define CLK_FUN_DEBUG_END() //CLK_INFO("====>>>>fun=%s, END====>>>>", __FUNCTION__);
+#define CLK_DEBUG_INFO(fmt, arg...) //CLK_INFO(fmt, ##arg)
+#define CLK_DEBUG_INFO(fmt, arg...) //CLK_ERR(fmt,##arg)
+
+/* anci c color type */
+#define FONT_COLOR_RESET "\033[0m"
+#define FONT_COLOR_RED "\033[31m"
+#define FONT_COLOR_GREEN "\033[32m"
+#define FONT_COLOR_YELLOW "\033[33m"
+#define FONT_COLOR_CYAN "\033[36m"
+
+#define CLK_INFO_RED(fmt, arg...) (CLK_INFO(FONT_COLOR_RED fmt FONT_COLOR_RESET, ##arg))
+#define CLK_INFO_GREEN(fmt, arg...) (CLK_INFO(FONT_COLOR_GREEN fmt FONT_COLOR_RESET, ##arg))
+#define CLK_INFO_YELLOW(fmt, arg...) (CLK_INFO(FONT_COLOR_YELLOW fmt FONT_COLOR_RESET, ##arg))
+#define CLK_INFO_CYAN(fmt, arg...) (CLK_INFO(FONT_COLOR_CYAN fmt FONT_COLOR_RESET, ##arg))
+
+#define ret_if(expr) ({do { \
+ if (expr) { \
+ CLK_ERR("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+ } while (0); })
+#define retv_if(expr, val) ({do { \
+ if (expr) { \
+ CLK_ERR("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return (val); \
+ } \
+ } while (0); })
+#define retm_if(expr, fmt, arg...) ({do { \
+ if (expr) { \
+ CLK_ERR(fmt, ##arg); \
+ CLK_ERR("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+ } while (0); })
+#define retvm_if(expr, val, fmt, arg...) ({do { \
+ if (expr) { \
+ CLK_ERR(fmt, ##arg); \
+ CLK_ERR("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return (val); \
+ } \
+ } while (0); })
+
+#define GOTO_ERROR_IF(expr) \
+ ({do { \
+ if ((expr)) { \
+ CLK_ERR("(%s) goto error", #expr); \
+ goto error; \
+ } \
+ } while (0); })
+
+#endif // __DEF_WORLDCLOCK_DLOG_H__
diff --git a/inc/worldclock_fwk_icu.h b/inc/worldclock_fwk_icu.h
new file mode 100644
index 0000000..ea6a494
--- /dev/null
+++ b/inc/worldclock_fwk_icu.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __WCL_FWK_ICU_H__
+#define __WCL_FWK_ICU_H__
+#include <stdbool.h>
+
+/*BEG: Gong Xingsheng<x536.gong@samsung.com> add in Mon Nov 21 01:04:37 PST 2011
+ * this struct is saved hour, min, sec and current time format
+ * which is used in genlist item date
+ */
+
+typedef struct _worldclock_time_s worldclock_time_s;
+struct _worldclock_time_s {
+ int hour;
+ int min;
+ int sec;
+ bool bAm;
+};
+/*END: Gong Xingsheng<x536.gong@samsung.com> add in Mon Nov 21 01:04:37 PST 2011 */
+
+int worldclock_icu_dst_get(const char *tz_path);
+
+#endif //__WCL_FWK_ICU_H__
diff --git a/inc/worldclock_timezone.h b/inc/worldclock_timezone.h
new file mode 100644
index 0000000..2f05956
--- /dev/null
+++ b/inc/worldclock_timezone.h
@@ -0,0 +1,1258 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+
+{
+ "Abidjan", "Ivory Coast", "GMT+0", "Africa/Abidjan"
+}
+
+, {
+ "Abu Dhabi", "United Arab Emirates", "GMT+4", "Asia/Dubai"
+}
+
+, {
+ "Accra", "Ghana", "GMT-10", "Africa/Accra"
+}
+
+, {
+ "Addis Ababa", "Ethiopia", "GMT+3", "Africa/Addis_Ababa"
+}
+
+, {
+ "Adelaide", "Australia", "GMT+9:30", "Australia/Adelaide"
+}
+
+, {
+ "Alaska", "United States of America", "GMT-9", "America/Nome"
+}
+
+, {
+ "Algiers", "Algeria", "GMT+1", "Africa/Algiers"
+}
+
+, {
+ "Almaty", "Kazakhstan", "GMT+6", "Asia/Almaty"
+}
+
+, {
+ "Ambon", "Indonesia", "GMT+1", "Asia/Jayapura"
+}
+
+, {
+ "Amman", "Jordan", "GMT+2", "Asia/Amman"
+}
+
+, {
+ "Amsterdam", "Netherlands", "GMT+1", "Europe/Amsterdam"
+}
+
+, {
+ "Anadyr", "Russia", "GMT+12", "Asia/Anadyr"
+}
+
+, {
+ "Anchorage", "United States of America", "GMT-9", "America/Anchorage"
+}
+
+, {
+ "Ankara", "Turkey", "GMT+2", "Asia/Istanbul"
+}
+
+, {
+ "Antananarivo", "Madagascar", "GMT+3", "Indian/Antananarivo"
+}
+
+, {
+ "Ashgabat", "Turkmenistan", "GMT+5", "Asia/Ashgabat"
+}
+
+, {
+ "Asmera", "Eritrea", "GMT+3", "Africa/Asmara" /* not in zone.tab */
+}
+
+, {
+ "Astana", "Kazakhstan", "GMT+6", "Asia/Almaty" /* not in zone.tab */
+}
+
+, {
+ "Asuncion", "Paraguay", "GMT-4", "America/Asuncion"
+}
+
+, {
+ "Athens", "Greece", "GMT+2", "Europe/Athens"
+}
+
+, {
+ "Auckland", "New Zealand", "GMT+12", "Pacific/Auckland"
+}
+
+, {
+ "Austin", "United States of America", "GMT-6", "CST6CDT"
+}
+
+, {
+ "Azores", "Portugal", "GMT-1", "Atlantic/Azores"
+}
+
+, {
+ "Baghdad", "Iraq", "GMT+3", "Asia/Baghdad"
+}
+
+, {
+ "Baku", "Azerbaijan", "GMT+4", "Asia/Baku"
+}
+
+, {
+ "Baltimore", "United States of America", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Bamako", "Mali", "GMT+0", "Africa/Bamako"
+}
+
+, {
+ "Bangkok", "Thailand", "GMT+7", "Asia/Bangkok"
+}
+
+, {
+ "Bangui", "Central African Republic", "GMT+1", "Africa/Bangui"
+}
+
+, {
+ "Barcelona", "Spain", "GMT+2", "Europe/Madrid"
+}
+
+, {
+ "Bari", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Basse-Terre", "Guadeloupe", "GMT-4", "America/Guadeloupe"
+}
+
+, {
+ "Beijing", "China", "GMT+8", "Asia/Shanghai"
+}
+
+, {
+ "Beirut", "Lebanon", "GMT+2", "Asia/Beirut"
+}
+
+, {
+ "Belgrade", "Serbia", "GMT+1", "Europe/Belgrade"
+}
+
+, {
+ "Belize City", "Belize", "GMT-6", "America/Belize"
+}
+
+, {
+ "Berlin", "Germany", "GMT+1", "Europe/Berlin"
+}
+
+, {
+ "Bern", "Switzerland", "GMT+1", "Europe/Zurich"
+}
+
+, {
+ "Bishkek", "Kyrgyzstan", "GMT+6", "Asia/Bishkek"
+}
+
+, {
+ "Bissau", "Guinea Bissau", "GMT+0", "Africa/Bissau"
+}
+
+, {
+ "Bogota", "Colombia", "GMT-5", "America/Bogota"
+}
+
+, {
+ "Bologna", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Boston", "United States of America", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Brasilia", "Brazil", "GMT-3", "America/Sao_Paulo"
+}
+
+, {
+ "Bratislava", "Slovakia", "GMT+2", "Europe/Bratislava"
+}
+
+, {
+ "Bridgetown", "Barbados", "GMT-4", "America/Barbados"
+}
+
+, {
+ "Brisbane", "Australia", "GMT+10", "Australia/Brisbane"
+}
+
+, {
+ "Brussels", "Belgium", "GMT+1", "Europe/Brussels"
+}
+
+, {
+ "Bucharest", "Romania", "GMT+3", "Europe/Bucharest"
+}
+
+, {
+ "Budapest", "Hungary", "GMT+1", "Europe/Budapest"
+}
+
+, {
+ "Buenos Aires", "Argentina", "GMT-3", "America/Argentina/Buenos_Aires"
+}
+
+, {
+ "Cairo", "Egypt", "GMT+2", "Africa/Cairo"
+}
+
+, {
+ "Calgary", "Canada", "GMT-7", "MST7MDT"
+}
+
+, {
+ "Canary Islands", "Spain", "GMT+0", "Atlantic/Canary"
+}
+
+, {
+ "Canberra", "Australia", "GMT+10", "Australia/Canberra"
+}
+
+, {
+ "Canton", "China", "GMT+8", "Asia/Shanghai"
+}
+
+, {
+ "Cape Town", "Republic of South Africa", "GMT+2", "Africa/Johannesburg"
+}
+
+, {
+ "Caracas", "Venezuela", "GMT-4:30", "America/Caracas"
+}
+
+, {
+ "Cardiff", "Wales", "GMT+0", "Europe/London"
+}
+
+, {
+ "Casablanca", "Morocco", "GMT+0", "Africa/Casablanca"
+}
+
+, {
+ "Catanzaro", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Cayenne", "French Guiana", "GMT-3", "America/Cayenne"
+}
+
+, {
+ "Charlotte", "United States of America", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Charlotte Amalie", "United States Virgin Islands ", "GMT-5:30",
+ "America/St_Thomas"
+}
+, {
+ "Chelyabinsk", "Russia", "GMT+6", "Asia/Yekaterinburg"
+}
+
+, {
+ "Chennai", "India", "GMT+5:30", "Asia/Kolkata"
+}
+
+, {
+ "Chicago", "United States of America", "GMT-6", "America/Chicago"
+}
+
+, {
+ "Chisinau", "Moldova", "GMT+2", "Europe/Chisinau"
+}
+
+, {
+ "Chita", "Russia", "GMT+10", "Asia/Yakutsk"
+}
+
+, {
+ "Cleveland", "United States of America", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Colombo", "Sri Lanka", "GMT+5:30", "Asia/Colombo"
+}
+
+, {
+ "Columbus", "United States of America", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Conakry", "Guinea", "GMT+1", "Africa/Conakry"
+}
+
+, {
+ "Copenhagen", "Denmark", "GMT+1", "Europe/Copenhagen"
+}
+
+, {
+ "Cork", "Ireland", "GMT+0", "Europe/Dublin"
+}
+
+, {
+ "Crotone", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Dakar", "Senegal", "GMT+0", "Africa/Dakar"
+}
+
+, {
+ "Dallas", "United States of America", "GMT-6", "CST6CDT"
+}
+
+, {
+ "Damascus", "Syria", "GMT+2", "Asia/Damascus"
+}
+
+, {
+ "Dar es Salaam", "Tanzania", "GMT+3", "Africa/Dar_es_Salaam"
+}
+
+, {
+ "Darwin", "Australia", "GMT+9:30", "Australia/Darwin"
+}
+
+, {
+ "Delhi", "India", "GMT+5:30", "Asia/Kolkata"
+}
+
+, {
+ "Denpasar", "Indonesia", "GMT+8", "Asia/Makassar"
+}
+
+, {
+ "Denver", "United States of America", "GMT-7", "America/Denver"
+}
+
+, {
+ "Detroit", "United States of America", "GMT-5", "America/Detroit"
+}
+
+, {
+ "Dhaka", "Bangladesh", "GMT+6", "Asia/Dhaka"
+}
+
+, {
+ "Diego Garcia", "United Kingdom", "GMT+5", "Indian/Chagos" /* not in zone.tab */
+}
+
+, {
+ "Djibouti", "Djibouti", "GMT+3", "Africa/Djibouti"
+}
+
+, {
+ "Doha", "Qatar", "GMT+3", "Asia/Qatar"
+}
+
+, {
+ "Douala", "Cameroon", "GMT+1", "Africa/Douala"
+}
+
+, {
+ "Dubai", "United Arab Emirates", "GMT+4", "Asia/Dubai"
+}
+
+, {
+ "Dublin", "Ireland", "GMT+0", "Europe/Dublin"
+}
+
+, {
+ "Dushanbe", "Tajikistan", "GMT+5", "Asia/Dushanbe"
+}
+
+, {
+ "Easter Island", "Chile", "GMT-6", "Pacific/Easter"
+}
+
+, {
+ "Edinburgh", "Scotland", "GMT+0", "Europe/London"
+}
+
+, {
+ "El Paso", "United States of America", "GMT-7", "MST7MDT"
+}
+
+, {
+ "Florence", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Fort-de-France", "Martinique", "GMT-4", "America/Martinique"
+}
+
+, {
+ "Freetown", "Sierra Leone", "GMT+0", "Africa/Freetown"
+}
+
+, {
+ "Gaborone", "Botswana", "GMT+2", "Africa/Gaborone"
+}
+
+, {
+ "Galapagos Islands", "Ecuador", "GMT-7", "Pacific/Galapagos"
+}
+
+, {
+ "Geneva", "Switzerland", "GMT+1", "Europe/Paris"
+}
+
+, {
+ "Genoa", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Georgetown", "Guyana", "GMT-4", "America/Guyana"
+}
+
+, {
+ "Grytviken", "South Georgia", "GMT-2", "Atlantic/South_Georgia"
+}
+
+, {
+ "Guam", "United States of America", "GMT+10", "Pacific/Guam"
+}
+
+, {
+ "Guatemala City", "Guatemala", "GMT-6", "America/Guatemala"
+}
+
+, {
+ "Gustavia", "Saint Barthelemy", "GMT-4", "America/Antigua"
+}
+
+, {
+ "Halifax", "Canada", "GMT-4", "America/Halifax"
+}
+
+, {
+ "Hamburg", "Germany", "GMT+1", "Europe/Berlin"
+}
+
+, {
+ "Hanoi", "Vietnam", "GMT+7", "Asia/Ho_Chi_Minh"
+}
+
+, {
+ "Harare", "Zimbabwe", "GMT+2", "Africa/Harare"
+}
+
+, {
+ "Havana", "Cuba", "GMT-5", "America/Havana"
+}
+
+, {
+ "Hawaii", "United States of America", "GMT-10", "Pacific/Honolulu"
+}
+
+, {
+ "Helsinki", "Finland", "GMT+2", "Europe/Helsinki"
+}
+
+, {
+ "Hobart", "Australia", "GMT+10", "Australia/Hobart"
+}
+
+, {
+ "Hong Kong", "China", "GMT+8", "Asia/Hong_Kong"
+}
+
+, {
+ "Honolulu", "United States of America", "GMT-10", "Pacific/Honolulu"
+}
+
+, {
+ "Houston", "United States of America", "GMT-6", "CST6CDT"
+}
+
+, {
+ "Hovd", "Mongolia", "GMT+8", "Asia/Hovd"
+}
+
+, {
+ "Indianapolis", "United States of America", "GMT-5",
+ "America/Indiana/Indianapolis"
+}
+, {
+ "Irkutsk", "Russia", "GMT+9", "Asia/Irkutsk"
+}
+
+, {
+ "Islamabad", "Pakistan", "GMT+5", "Asia/Karachi"
+}
+
+, {
+ "Istanbul", "Turkey", "GMT+2", "Europe/Istanbul"
+}
+
+, {
+ "Izhevsk", "Russia", "GMT+4", "Europe/Moscow"
+}
+
+, {
+ "Jakarta", "Indonesia", "GMT+7", "Asia/Jakarta"
+}
+
+, {
+ "Jeddah", "Saudi Arabia", "GMT+3", "Asia/Riyadh"
+}
+
+, {
+ "Jerusalem", "Israel", "GMT+2", "Asia/Jerusalem"
+}
+
+, {
+ "Johannesburg", "South Africa", "GMT+2", "Africa/Johannesburg"
+}
+
+, {
+ "Kabul", "Afghanistan", "GMT+4:30", "Asia/Kabul"
+}
+
+, {
+ "Kaliningrad", "Russia", "GMT+3", "Europe/Kaliningrad"
+}
+
+, {
+ "Kamchatka", "Russia", "GMT+12", "Asia/Kamchatka"
+}
+
+, {
+ "Kampala", "Uganda", "GMT+3", "Africa/Kampala"
+}
+
+, {
+ "Karachi", "Pakistan", "GMT+5", "Asia/Karachi"
+}
+
+, {
+ "Kathmandu", "Nepal", "GMT+5:45", "Asia/Kathmandu"
+}
+
+, {
+ "Khabarovsk", "Russia", "GMT+11", "Asia/Vladivostok"
+}
+
+, {
+ "Kharkiv", "Ukraine", "GMT+2", "Europe/Kiev"
+}
+
+, {
+ "Khartoum", "Sudan", "GMT+3", "Africa/Khartoum"
+}
+
+, {
+ "Kiev", "Ukraine", "GMT+2", "Europe/Kiev"
+}
+
+, {
+ "Kingston", "Canada", "GMT-5", "America/Toronto"
+}
+
+, /* not in zone.tab */
+{
+ "Kingston", "Jamaica", "GMT-5", "America/Jamaica"
+}
+
+, {
+ "Kinshasa", "Democratic Republic of the Congo", "GMT+1", "Africa/Kinshasa"
+}
+
+, {
+ "Kolkata", "India", "GMT+5:30", "Asia/Kolkata"
+}
+
+, {
+ "Krasnoyarsk", "Russia", "GMT+8", "Asia/Krasnoyarsk"
+}
+
+, {
+ "Kuala Lumpur", "Malaysia", "GMT+8", "Asia/Kuala_Lumpur"
+}
+
+, {
+ "Kuwait", "Kuwait", "GMT+3", "Asia/Kuwait"
+}
+
+, {
+ "Kyiv", "Ukraine", "GMT+2", "Europe/Kiev" /* not in zone.tab */
+}
+
+, {
+ "Los Angeles", "United States of America", "GMT-7", "America/Los_Angeles"
+}
+
+, {
+ "La Paz", "Bolivia", "GMT-4", "America/La_Paz"
+}
+
+, {
+ "Lagos", "Nigeria", "GMT+1", "Africa/Lagos"
+}
+
+, {
+ "Las Vegas", "United States of America", "GMT-8", "PST8PDT"
+}
+
+, {
+ "Lima", "Peru", "GMT-5", "America/Lima"
+}
+
+, {
+ "Lisbon", "Portugal", "GMT+0", "Europe/Lisbon"
+}
+
+, {
+ "Ljubljana", "Slovakia", "GMT+1", "Europe/Ljubljana"
+}
+
+, {
+ "London", "United Kingdom", "GMT+0", "Europe/London"
+}
+
+, {
+ "Atlanta", "United States of America", "GMT-5", "America/Georgia/Atlanta"
+}
+
+, {
+ "Louisville", "United States of America", "GMT-5", "America/Kentucky/Louisville"
+}
+
+, {
+ "Luanda", "Angola", "GMT+1", "Africa/Luanda"
+}
+
+, {
+ "Lubumbashi", "Democratic Republic of the Congo", "GMT+2", "Africa/Lubumbashi"
+}
+
+, {
+ "Lusaka", "Zambia", "GMT+2", "Africa/Lusaka"
+}
+
+, {
+ "Luxembourg", "Luxembourg", "GMT+1", "Europe/Luxembourg"
+}
+
+, {
+ "Lviv", "Ukraine", "GMT+2", "Europe/Kiev"
+}
+
+, {
+ "Macau", "China", "GMT+8", "Asia/Macau"
+}
+
+, {
+ "Madrid", "Spain", "GMT+2", "Europe/Madrid"
+}
+
+, {
+ "Magadan", "Russia", "GMT+12", "Asia/Magadan"
+}
+
+, {
+ "Malabo", "Equaorial Guinea", "GMT+1", "Africa/Malabo"
+}
+
+, {
+ "Male", "Maldives", "GMT+5", "Indian/Maldives"
+}
+
+, {
+ "Managua", "Nicaragua", "GMT-6", "America/Managua"
+}
+
+, {
+ "Manama", "Bahrain", "GMT+3", "Asia/Bahrain"
+}
+
+, {
+ "Manila", "Philippines", "GMT+8", "Asia/Manila"
+}
+
+, {
+ "Maputo", "Mozambique", "GMT+2", "Africa/Maputo"
+}
+
+, {
+ "Marigot", "Saint Martin", "GMT-4", "America/Marigot"
+}
+
+, {
+ "Mazatlan", "Mexico", "GMT-7", "America/Mazatlan"
+}
+
+, {
+ "Mecca", "Saudi Arabia", "GMT+3", "Asia/Riyadh"
+}
+
+, {
+ "Melbourne", "Australia", "GMT+10", "Australia/Melbourne"
+}
+
+, {
+ "Memphis", "United States of America", "GMT-6", "CST6CDT"
+}
+
+, {
+ "Messina", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Mexico City", "Mexico", "GMT-6", "America/Mexico_City"
+}
+
+, {
+ "Miami", "United States of America", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Mid-Atlantic", "United States of America", "GMT-2", "America/New_York" /* not in zone.tab */
+}
+
+, {
+ "Midway Atoll", "United States of America", "GMT-11", "Pacific/Midway"
+}
+
+, {
+ "Milan", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Milwaukee", "United States of America", "GMT-6", "CST6CDT"
+}
+
+, {
+ "Minsk", "Belarus", "GMT+2", "Europe/Minsk"
+}
+
+, {
+ "Mogadishu", "Somalia", "GMT+2", "Africa/Mogadishu"
+}
+
+, {
+ "Monrovia", "Liberia", "GMT+0", "Africa/Monrovia"
+}
+
+, {
+ "Montevideo", "Uruguay", "GMT-3", "America/Montevideo"
+}
+
+, {
+ "Montreal", "Canada", "GMT-5", "America/Montreal"
+}
+
+, {
+ "Moscow", "Russia", "GMT+4", "Europe/Moscow"
+}
+
+, {
+ "Mumbai", "India", "GMT+5:30", "Asia/Kolkata"
+}
+
+, {
+ "Munich", "Germany", "GMT+1", "Europe/Berlin"
+}
+
+, {
+ "Muscat", "Oman", "GMT+4", "Asia/Muscat"
+}
+
+, {
+ "Nairobi", "Kenya", "GMT+3", "Africa/Nairobi"
+}
+
+, {
+ "Naples", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Naters", "Switzerland", "GMT+1", "Europe/Zurich"
+}
+
+, {
+ "Ndjamena", "Chad", "GMT+1", "Africa/Ndjamena"
+}
+
+, {
+ "New Delhi", "India", "GMT+5:30", "Asia/Kolkata" /* not in zone.tab */
+}
+
+, {
+ "New York", "United States of America", "GMT-4", "America/New_York"
+}
+
+, {
+ "Newfoundland", "Canada", "GMT-3:30", "America/St_Johns"
+}
+
+, {
+ "Niamey", "Niger", "GMT+1", "Africa/Niamey"
+}
+
+, {
+ "Nouakchott", "Mauritania", "GMT+1", "Africa/Nouakchott"
+}
+
+, {
+ "Noumea", "New Caledonia", "GMT+11", "Pacific/Noumea"
+}
+
+, {
+ "Novokuznetsk", "Russia", "GMT+7", "Asia/Novokuznetsk"
+}
+
+, /* not clear */
+{
+ "Novosibirsk", "Russia", "GMT+7", "Asia/Novosibirsk"
+}
+
+, {
+ "Nuku'alofa", "Tonga", "GMT+13", "Pacific/Tongatapu"
+}
+
+, {
+ "Nuuk", "Greenland", "GMT-3", "America/Godthab"
+}
+
+, {
+ "Omsk", "Russia", "GMT+7", "Asia/Omsk"
+}
+
+, {
+ "Osaka", "Japan", "GMT+9", "Asia/Tokyo"
+}
+
+, {
+ "Ottawa", "Canada", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Ouagadougou", "Burkina Faso", "GMT+0", "Africa/Ouagadougou"
+}
+
+, {
+ "Pago Pago", "Independent State of Samoa", "GMT-11", "Pacific/Pago_Pago"
+}
+
+, {
+ "Palermo", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Panama City", "Panama", "GMT-6", "America/Panama"
+}
+
+, {
+ "Paramaribo", "Surinam", "GMT-3", "America/Paramaribo"
+}
+
+, {
+ "Paris", "France", "GMT+1", "Europe/Paris"
+}
+
+, {
+ "Perm", "Russia", "GMT+6", "Asia/Yekaterinburg"
+}
+
+, {
+ "Perth", "Australia", "GMT+8", "Australia/Perth"
+}
+
+, {
+ "Petropavlovsk-Kamchatskiy", "Russia", "GMT+12", "Asia/Kamchatka"
+}
+
+, {
+ "Philadelphia", "United States of America", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Phnom Penh ", "Cambodia", "GMT-5", "Asia/Phnom_Penh"
+}
+
+, {
+ "Phoenix", "United States of America", "GMT-7", "America/Phoenix"
+}
+
+, {
+ "Podgorica", "Montenegro", "GMT+1", "Europe/Podgorica"
+}
+
+, {
+ "Ponta Delgada", "Portugal", "GMT-1", "Atlantic/Azores"
+}
+
+, {
+ "Port Louis", "Mauritius", "GMT+4", "Indian/Mauritius"
+}
+
+, {
+ "Port-au-Prince", "Haiti", "GMT-5", "America/Port-au-Prince"
+}
+
+, {
+ "Portland", "United States of America", "GMT-8", "PST8PDT"
+}
+
+, {
+ "Prague", "Czech Republic", "GMT+1", "Europe/Prague"
+}
+
+, {
+ "Pyongyang", "North Korea", "GMT+9", "Asia/Pyongyang"
+}
+
+, {
+ "Quito", "Ecuador", "GMT-5", "America/Guayaquil"
+}
+
+, {
+ "Rabat", "Morocco", "GMT+0", "Africa/Casablanca"
+}
+
+, {
+ "Rangoon", "Burma", "GMT+6:30", "Asia/Rangoon"
+}
+
+, {
+ "Recife", "Brazil", "GMT-3", "America/Recife"
+}
+
+, {
+ "Regina", "Canada", "GMT-6", "America/Regina"
+}
+
+, {
+ "Reykjavik", "Iceland", "GMT+0", "Atlantic/Reykjavik"
+}
+
+, {
+ "Riga", "Latvia", "GMT+2", "Europe/Riga"
+}
+
+, {
+ "Rio de Janeiro", "Brazil", "GMT-2", "America/Sao_Paulo"
+}
+
+, {
+ "Riyadh", "Saudi Arabia", "GMT+3", "Asia/Riyadh"
+}
+
+, {
+ "Rome", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Saint-Denis", "Reunion Island", "GMT+4", "Indian/Reunion"
+}
+
+, {
+ "Samara", "Russia", "GMT+4", "Europe/Samara"
+}
+
+, /* not clear */
+{
+ "San Antonio", "United States of America", "GMT-6", "CST6CDT"
+}
+
+, {
+ "San Diego", "United States of America", "GMT-8", "PST8PDT"
+}
+
+, {
+ "San Francisco", "United States of America", "GMT-8", "America/Los_Angeles"
+}
+
+, {
+ "San Jose", "United States of America", "GMT-8", "PST8PDT"
+}
+
+, {
+ "San Jose", "Costa Rica", "GMT-6", "America/Costa_Rica"
+}
+
+, {
+ "San Juan", "Puerto Rico", "GMT-4", "America/Puerto_Rico"
+}
+
+, {
+ "San Marino", "Italy", "GMT+1", "Europe/San_Marino"
+}
+
+, {
+ "San Salvador", "El Salvador", "GMT-6", "America/El_Salvador"
+}
+
+, {
+ "Sanaa", "Yemen", "GMT+3", "Asia/Aden" /* not in zone.tab */
+}
+
+, {
+ "Santiago", "Chile", "GMT-4", "America/Santiago"
+}
+
+, {
+ "Santo Domingo", "Dominican Republic", "GMT-4", "America/Santo_Domingo"
+}
+
+, {
+ "Sao Paulo", "Brazil", "GMT-2", "America/Sao_Paulo"
+}
+
+, {
+ "Seattle", "United States of America", "GMT-8", "PST8PDT"
+}
+
+, {
+ "Seoul", "Republic of Korea", "GMT+9", "Asia/Seoul"
+}
+
+, {
+ "Shanghai", "China", "GMT+8", "Asia/Shanghai"
+}
+
+, {
+ "Shenzhen", "China", "GMT+8", "Asia/Shanghai"
+}
+
+, {
+ "Singapore", "Republic of Singapore", "GMT+8", "Asia/Singapore"
+}
+
+, {
+ "Skopje", "Macedonia", "GMT+1", "Europe/Skopje"
+}
+
+, {
+ "Sofia ", "Bulgaria", "GMT+3", "Europe/Sofia"
+}
+
+, {
+ "St. John's", "Antigua and Barbuda", "GMT-4", "America/Antigua"
+}
+
+, {
+ "St. John's", "Canada", "GMT-3:30", "America/St_Johns"
+}
+
+, {
+ "St. Petersburg", "Russia", "GMT+4", "Europe/Moscow"
+}
+
+, {
+ "Stockholm", "Sweden", "GMT+2", "Europe/Stockholm"
+}
+
+, {
+ "Suva", "Fiji", "GMT+12", "Pacific/Fiji"
+}
+
+, {
+ "Sydney", "Australia", "GMT+11", "Australia/Sydney"
+}
+
+, {
+ "Tahiti", "French Polynesia", "GMT-10", "Pacific/Tahiti"
+}
+
+, {
+ "Taipei", "Taiwan", "GMT+8", "Asia/Taipei"
+}
+
+, {
+ "Tallinn", "Estonia", "GMT+2", "Europe/Tallinn"
+}
+
+, {
+ "Tarawa", "Kiribati", "GMT+12", "Pacific/Tarawa"
+}
+
+, {
+ "Tashkent", "Uzbekistan", "GMT+5", "Asia/Tashkent"
+}
+
+, {
+ "Tbilisi", "Georgia", "GMT+4", "Asia/Tbilisi"
+}
+
+, {
+ "Tegucigalpa", "Honduras", "GMT-6", "America/Tegucigalpa"
+}
+
+, {
+ "Tehran", "Iran", "GMT+3:30", "Asia/Tehran"
+}
+
+, {
+ "Thanh Pho Ho Chi Minh", "Vietnam", "GMT+7", "Asia/Ho_Chi_Minh"
+}
+
+, {
+ "The Settlement", "British Virgin Islands ", "GMT-4", "America/Tortola"
+}
+
+, {
+ "Tientsin", "China", "GMT+8", "Asia/Shanghai" /* not in zone.tab */
+}
+
+, {
+ "Tijuana", "Mexico", "GMT-5", "America/Tijuana"
+}
+
+, {
+ "Tokyo", "Japan", "GMT+9", "Asia/Tokyo"
+}
+
+, {
+ "Toronto", "Canada", "GMT-4", "America/Toronto"
+}
+
+, {
+ "Trehet", "France", "GMT+1", "Europe/Paris" /* not in zone.tab */
+}
+
+, {
+ "Tripoli", "Libya", "GMT+2", "Africa/Tripoli"
+}
+
+, {
+ "Tunis", "Tunisia", "GMT+2", "Africa/Tunis"
+}
+
+, {
+ "Turin", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Ufa", "Bashkiriya", "GMT+5", "Asia/Yekaterinburg"
+}
+
+, {
+ "Ulan Bator", "Mongolia", "GMT+8", "Asia/Ulan_Bator"
+}
+
+, {
+ "Vaduz", "Liechtenstein", "GMT+1", "Europe/Vaduz"
+}
+
+, {
+ "Valletta", "Malta", "GMT+1", "Europe/Malta"
+}
+
+, {
+ "Vancouver", "Canada", "GMT-8", "America/Vancouver"
+}
+
+, {
+ "Verona", "Italy", "GMT+1", "Europe/Rome"
+}
+
+, {
+ "Victoria", "Seychelles", "GMT+4", "Australia/Melbourne"
+}
+
+, {
+ "Vienna", "Austria", "GMT+1", "Europe/Vienna"
+}
+
+, {
+ "Vilnius", "Lithuania", "GMT+3", "Europe/Vilnius"
+}
+
+, {
+ "Vladivostok", "Russia", "GMT+11", "Asia/Vladivostok"
+}
+
+, {
+ "Volgograd", "Russia", "GMT+4", "Europe/Volgograd"
+}
+
+, /* not clear */
+{
+ "Warsaw", "Poland", "GMT+2", "Europe/Warsaw"
+}
+
+, {
+ "Washington, D.C.", "United States of America", "GMT-5", "EST5EDT"
+}
+
+, {
+ "Wellington", "New Zealand", "GMT+12", "Pacific/Auckland"
+}
+
+, {
+ "Winnipeg", "Canada", "GMT-5", "America/Winnipeg"
+}
+
+, {
+ "Yakutsk", "Russia", "GMT+10", "Asia/Yakutsk"
+}
+
+, {
+ "Yamoussoukro", "Ivory Coast", "GMT+0", "Africa/Abidjan"
+}
+
+, {
+ "Yaounde", "Cameroon", "GMT+1", "Africa/Douala" /* not in zone.tab */
+}
+
+, {
+ "Yekaterinburg", "Russia", "GMT+6", "Asia/Yekaterinburg"
+}
+
+, {
+ "Yerevan", "Armenia", "GMT+5", "Asia/Yerevan"
+}
+
+, {
+ "Yuzhno-Sakhalinsk", "Russia", "GMT+11", "Asia/Sakhalin"
+}
+
+, {
+ "Zagreb", "Croatia", "GMT+1", "Europe/Zagreb"
+}
+
+, {
+ "Zurich", "Switzerland", "GMT+1", "Europe/Zurich"
+}
+
+, {
+ "Hyderabad", "India", "GMT+5:30", "Asia/Andhra/Hyderabad"
+}
+
+, {
+ "Bangalore", "India", "GMT+5:30", "Asia/Karnataka/Bangalore"
+}
+
+, {
+ NULL, NULL, NULL, NULL
+}
+
+,
diff --git a/inc/worldclock_types.h b/inc/worldclock_types.h
new file mode 100644
index 0000000..92fd916
--- /dev/null
+++ b/inc/worldclock_types.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __DEF_WORLDCLOCK_TYPES_H__
+#define __DEF_WORLDCLOCK_TYPES_H__
+
+#include <Elementary.h>
+#include "worldclock_const.h"
+
+typedef void (*Wcl_Return_Cb) (void *, Eina_Bool);
+
+typedef enum {
+ WCL_CALLER_IS_APP_IT_SELF = 0,
+ WCL_CALLER_IS_SHARED_LIBRARY,
+ WCL_CALLER_IS_UI_GADGET,
+ WCL_CALLER_IS_LIVEBOX,
+ WCL_CALLER_IS_UNKNOW,
+} Wcl_Caller;
+
+#ifdef FEATURE_SORT_ORDER
+typedef enum {
+ WCL_SORT_BY_NAME = 1,
+ WCL_SORT_BY_TIMEZONE,
+
+ WCL_UNKNOW_SORT_TYPE,
+} Wcl_Addlist_Sort_Type;
+#endif
+
+typedef enum {
+ WCL_SELECT_IN_UNSELECTED = 0,
+ WCL_SELECT_IN_ALL,
+ WCL_SELECT_IF_HAS_TZPATH,
+
+ WCL_SELECTION_UNKNOW_FLAG,
+} Wcl_Selection_Flag;
+
+typedef enum {
+ WCL_SEARCH_BY_ALL_KEYWORDS = 0,
+ WCL_SEARCH_BY_CITY_NAME,
+ WCL_SEARCH_BY_COUNTRY_NAME,
+ WCL_SEARCH_BY_TIMEZONE,
+
+ WCL_UNKNOWN_SEARCH_TYPE,
+} Wcl_Search_Type;
+
+typedef enum {
+ WCL_DST_OFF = -1,
+ WCL_DST_AUTO = 0,
+ WCL_DST_1_HOUR,
+ WCL_DST_2_HOURS,
+
+ WCL_DST_TYPES_COUNT,
+
+ WCL_DST_UNKNOWN_TYPE,
+} Wcl_DST_Type;
+
+typedef struct _cs { /* city set */
+ int index; /* record index in db */
+ char city[CITY_BUF_SIZE]; /* city name */
+ char country[COUNTRY_BUF_SIZE]; /* country name */
+ char timezone[TIMEZONE_BUF_SIZE]; /* timezone */
+ int dst_type; /* dst type */
+ int dst_enabled; /* dst disable flag */
+ int selected; /* selected or not */
+ int sequence; /* sequence number in mainlist */
+ char tz_path[TZPATH_BUF_SIZE]; /* TZ path of city */
+
+ int dst; /* dst value */
+ volatile time_t now_time; /* the current time of city */
+
+ char flag[COUNTRY_BUF_SIZE]; /* flag image name */
+ char mcc[MCC_BUF_SIZE];
+} Wcl_CitySet;
+
+#endif // __DEF_WORLDCLOCK_TYPES_H__
diff --git a/inc/worldclock_util.h b/inc/worldclock_util.h
new file mode 100644
index 0000000..40f3dac
--- /dev/null
+++ b/inc/worldclock_util.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.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.
+ */
+
+#ifndef __DEF_WORLDCLOCK_UTIL_H_
+#define __DEF_WORLDCLOCK_UTIL_H_
+
+#include <Elementary.h>
+#include <unicode/umachine.h>
+#include "worldclock.h"
+
+/**
+ * Compare the city name of two cities
+ *
+ * @param[in] data1 record data of city1
+ * @param[in] data2 record data of city2
+ *
+ * @return -1 if city name of city2 is bigger than city1's
+ * 1 if city name of city1 is bigger than city2's
+ * 0 if city name of city2 is equal to city1, or meet error
+ */
+int worldclock_city_compare_cb(const void *data1, const void *data2);
+
+/**
+ * Compare timezone of two cities
+ *
+ * @param[in] data1 recorder of city1
+ * @param[in] data2 recorder of city2
+ *
+ * @return -1 if timezone of city2 is bigger than city1's
+ * 1 if timezone of city1 is bigger than city2's
+ * 0 if timezone of city2 is equal to city1, or meet error
+ */
+int worldclock_time_compare_cb(const void *data1, const void *data2);
+
+/**
+ * Remove all items in eina_list
+ *
+ * @param[in] glist given eina list
+ * @param[in] is_free_element flag to define if free data in every item is needed
+ *
+ * @return EINA_TRUE if remove successfully
+ */
+Eina_Bool worldclock_util_glist_remove_all(Eina_List * glist, Eina_Bool is_free_element);
+#if 0
+/**
+ * Creat new popup window, and show it
+ *
+ * @param[in] parent Parent for such popup
+ * @param[in] data Data used in this function
+ * @param[in] info String displayed on popup
+ *
+ * @return
+ */
+void worldclock_show_popup(Evas_Object * parent, Evas_Object ** p_popup, char *info);
+#endif
+
+/**
+ * Create layout by load edj according group name from edj file
+ *
+ * @param[in] parent Parent of new layout
+ * @param[in] file EDJE file
+ * @param[in] group name of group
+ *
+ * @return NULL if meet error
+ * Pointer to new layout
+ */
+Evas_Object *worldclock_load_edj(Evas_Object * parent, const char *file,
+ const char *group);
+
+int worldclock_dst_get(const Wcl_CitySet * cs);
+
+const char *worldclock_get_egje_path();
+const char *worldclock_get_locale_path();
+
+void worldclock_path_util_free();
+
+#endif /* __DEF_WORLDCLOCK_UTIL_H_ */