--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(efl-calendar C)
+
+FILE(GLOB SRCS src/*.c)
+FILE(GLOB COMM_SRCS common/*.c)
+
+SET(VENDOR "tizen")
+SET(CALENDAR_PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "org.${VENDOR}.${CALENDAR_PACKAGE}")
+SET(CALENDAR_PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${CALENDAR_PREFIX}/bin")
+SET(RESDIR "${CALENDAR_PREFIX}/res")
+SET(DATADIR "${CALENDAR_PREFIX}/data")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(ICONDIR "${RESDIR}/icons/default/small")
+SET(EDJDIR "${RESDIR}/edje")
+SET(SELECTED_TARGET "hd")
+SET(UGNAME "ug-calendar-efl")
+SET(UGSETTINGS "ug-calendar-settings-efl")
+SET(UGEDIT "ug-calendar-edit-efl")
+SET(UGDETAIL "ug-calendar-detail-efl")
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+ SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+ appcore-efl
+ dlog
+ heynoti
+ ui-gadget
+ utilX
+ alarm-service
+ accounts-svc
+ mm-player
+ pmapi
+ calendar
+ ecore-input
+ ecore-imf
+ ecore-x
+ ecore-evas
+ ecore
+ eina
+ evas
+ edje
+ icu-i18n
+ glib-2.0
+ appsvc
+ capi-appfw-application
+ capi-media-sound-manager
+ capi-media-wav-player
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fpie -Wall")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -g")
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ ADD_DEFINITIONS("-DCLD_DEBUG")
+ ADD_DEFINITIONS("-DCLD_FILE_LOGGING")
+ENDIF()
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+ ADD_DEFINITIONS("-DTARGET")
+ MESSAGE(STATUS "add -DTARGET")
+ENDIF()
+
+ADD_DEFINITIONS("-DCALENDAR_PACKAGE=\"${CALENDAR_PACKAGE}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DCALENDAR_PREFIX=\"${CALENDAR_PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DUGNAME=\"${UGNAME}\"")
+ADD_DEFINITIONS("-DUGSETTINGS=\"${UGSETTINGS}\"")
+ADD_DEFINITIONS("-DUGEDIT=\"${UGEDIT}\"")
+ADD_DEFINITIONS("-DUGDETAIL=\"${UGDETAIL}\"")
+
+SET(COMMON_LIB "common_lib")
+ADD_LIBRARY(${COMMON_LIB} STATIC ${COMM_SRCS})
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${COMMON_LIB} ${pkgs_LDFLAGS} "-pie -lm")
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
+# install desktop file
+CONFIGURE_FILE(${PKGNAME}.desktop.in ${CMAKE_BINARY_DIR}/${PKGNAME}.desktop)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${PKGNAME}.desktop DESTINATION /opt/share/applications)
+
+# ui-gadget
+ADD_SUBDIRECTORY(ug)
+
+# i18n
+ADD_SUBDIRECTORY(po)
+
+# data
+ADD_SUBDIRECTORY(data)
+
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+
+# vcs viewer
+ADD_SUBDIRECTORY(viewer)
\ No newline at end of file
--- /dev/null
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
\ No newline at end of file
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+#include "acct-svc.h"
+
+static bool __cal_account_get_capability_callback(account_capability_type_e capability_type, account_capability_state_e capability_value, void* user_data)
+{
+ c_retvm_if(!user_data, FALSE, "user_data is null");
+
+ bool *has_calendar = user_data;
+
+ if (capability_type == ACCOUNT_CAPABILITY_CALENDAR && capability_value == ACCOUNT_CAPABILITY_ENABLED)
+ {
+ *has_calendar = TRUE;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void __cal_account_free_acct(struct _acct *at)
+{
+ c_retm_if(!at, "at is null");
+
+ free(at->name);
+ free(at->icon);
+ free(at);
+}
+
+static bool __cal_account_get_callback(account_h handle, void* user_data)
+{
+ c_retvm_if(!handle, FALSE, "handle is null");
+ c_retvm_if(!user_data, FALSE, "user_data is null");
+
+ Eina_List** account_list = user_data;
+ struct _acct *at = NULL;
+ char *text;
+ account_error_e ret;
+ bool has_calendar = FALSE;
+
+ ret = account_get_capability(handle, __cal_account_get_capability_callback, &has_calendar);
+ c_retvm_if(ret != ACCOUNT_ERROR_NONE, FALSE, "account_get_capability is failed(%x)", ret);
+
+ if (has_calendar == TRUE)
+ {
+ at = calloc(1, sizeof(struct _acct));
+ c_retvm_if(!at, FALSE,"calloc is failed");
+ }
+ else
+ return FALSE;
+
+ text = NULL;
+ ret = account_get_email_address(handle, &text);
+ if (ret != ACCOUNT_ERROR_NONE)
+ {
+ ERR("account_get_email_address is failed(%x)", ret);
+ __cal_account_free_acct(at);
+ return FALSE;
+ }
+ if (text)
+ at->name = strdup(text);
+
+ text = NULL;
+ ret = account_get_icon_path(handle, &text);
+ if (ret != ACCOUNT_ERROR_NONE)
+ {
+ ERR("account_get_icon_path is failed(%x)", ret);
+ __cal_account_free_acct(at);
+ return FALSE;
+ }
+ if (text)
+ at->icon = strdup(text);
+
+ ret = account_get_account_id(handle, &at->id);
+ if (ret != ACCOUNT_ERROR_NONE)
+ {
+ ERR("account_get_account_id is failed(%x)", ret);
+ __cal_account_free_acct(at);
+ return FALSE;
+ }
+
+ *account_list = eina_list_append(*account_list, at);
+
+ return TRUE;
+}
+
+Eina_List* cal_account_svc_get_account_list(void)
+{
+ CAL_FN_START;
+
+ Eina_List *account_list = NULL;
+ account_error_e ret;
+
+ ret = account_foreach_account_from_db(__cal_account_get_callback, &account_list);
+ if (ret != ACCOUNT_ERROR_NONE)
+ {
+ ERR("account_foreach_account_from_db is failed(%x)", ret);
+
+ CAL_FN_END;
+
+ return NULL;
+ }
+
+ CAL_FN_END;
+
+ return account_list;
+}
+
+void cal_account_svc_free_account_list(Eina_List **h)
+{
+ Eina_List *l;
+ struct _acct *at;
+
+ if (!h || !*h)
+ return;
+
+ EINA_LIST_FOREACH(*h, l, at)
+ {
+ if (at)
+ {
+ free(at->name);
+ free(at->icon);
+ free(at);
+ }
+ }
+
+ *h = eina_list_free(*h);
+}
+
+char* cal_account_svc_get_account_icon_path(int account_id)
+{
+ account_error_e ret;
+ account_h account;
+ char* text = NULL;
+ char* icon_path = NULL;
+
+ ret = account_create(&account);
+ c_retvm_if(ret != ACCOUNT_ERROR_NONE, NULL, "account_create is failed(%d)", ret);
+
+ ret = account_query_account_by_account_id(account_id, &account);
+ if (ret != ACCOUNT_ERROR_NONE)
+ {
+ ERR("account_query_account_by_account_id is failed(%x)", ret);
+
+ ret = account_destroy(account);
+ c_retvm_if(ret != ACCOUNT_ERROR_NONE, NULL, "account_destroy is failed(%d)", ret);
+
+ return NULL;
+ }
+
+ ret = account_get_icon_path(account, &text);
+ if (ret != ACCOUNT_ERROR_NONE)
+ {
+ ERR("account_get_icon_path is failed(%x)", ret);
+
+ ret = account_destroy(account);
+ c_retvm_if(ret != ACCOUNT_ERROR_NONE, NULL, "account_destroy is failed(%d)", ret);
+
+ return NULL;
+ }
+
+ if (text)
+ icon_path = strdup(text);
+
+ ret = account_destroy(account);
+ c_retvm_if(ret != ACCOUNT_ERROR_NONE, NULL, "account_destroy is failed(%d)", ret);
+
+ return icon_path;
+}
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include "cld.h"
+
+static Calendar_color def_color[] = {
+ {90, 167, 48, 255,},
+ {221, 129, 0, 255,},
+ {0, 182, 252, 255,},
+ {122, 52, 122, 255,},
+ {22, 139, 121, 255,},
+ {40, 81, 163, 255,},
+};
+
+int calendar_svc_get_month_event_check(int account_id, time_t startdate, time_t enddate, int *day_flag);
+API int calendar_svc_get_month_event_list_by_period (int account_id, time_t startdate, time_t enddate, cal_iter **iter);
+
+static void __cal_calendar_svc_free_cslist(Eina_List **h)
+{
+ cal_struct *cs;
+ Eina_List *l;
+
+ if (!h || !*h)
+ return;
+
+ EINA_LIST_FOREACH(*h, l, cs) {
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ }
+ *h = eina_list_free(*h);
+}
+
+static void __cal_calendar_svc_free_tmlist(Eina_List **h)
+{
+ struct tmnode *tm;
+ Eina_List *l;
+
+ if (!h || !*h)
+ return;
+
+ EINA_LIST_FOREACH(*h, l, tm)
+ {
+ free(tm);
+ }
+ *h = eina_list_free(*h);
+}
+
+static inline struct tmnode* __cal_calendar_svc_get_tmnode(time_t s, time_t e, int rp, cal_struct *cs)
+{
+ struct tmnode *tm;
+
+ tm = malloc(sizeof(struct tmnode));
+ if (!tm)
+ return NULL;
+
+ tm->st = s;
+ tm->et = e;
+ tm->repeat = rp;
+ tm->cs = cs;
+
+ return tm;
+}
+
+static int __cal_calendar_svc_get_event_list(int acct_id, time_t st, time_t et, Eina_List **csl, Eina_List **tml)
+{
+ int r;
+ cal_iter *it;
+ cal_struct *cs;
+ cal_struct *cur;
+ time_t lst, let; // not real time_t
+ struct tmnode *tm;
+ time_t s, e, tmp;
+ int rp;
+ struct tm lstm={0,};
+ struct tm letm={0,};
+ struct tm stm = {0,};
+ struct tm etm = {0,};
+
+ it = NULL;
+ r = CALENDAR_SVC_GET_EVENT_LIST_BY_PERIOD(acct_id, st, et, &it);
+ if (r != CAL_SUCCESS)
+ return -1;
+
+ cur = NULL;
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+ cs = NULL;
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &cs);
+ if (r != CAL_SUCCESS)
+ break;
+
+ rp = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+ lst = let = 0;
+ localtime_r(&st,&stm);
+ localtime_r(&et,&etm);
+ memset(&lstm,0x00,sizeof(struct tm));
+ memset(&letm,0x00,sizeof(struct tm));
+
+ while (CALENDAR_SVC_UTIL_NEXT_VAILD_EVENT_TM(cs,
+ &stm, &etm, &lstm, &letm) == CAL_SUCCESS) {
+ s = mktime(&lstm);
+ e = mktime(&letm);
+
+ if (s == e)
+ tmp = e + 1;
+ else
+ tmp = e;
+
+ if( (s <= et) && (tmp >= st)){
+ if (cs != cur) {
+ cur = cs;
+ *csl = eina_list_append(*csl, cs);
+ }
+
+ tm = __cal_calendar_svc_get_tmnode(s, e, rp, cur);
+ if (tm)
+ *tml = eina_list_append(*tml, tm);
+ }
+ }
+ }
+ CALENDAR_SVC_ITER_REMOVE(&it);
+
+ return 0;
+}
+
+struct calsvc* _calendar_svc_get_event(int acct_id, time_t st, time_t et)
+{
+ CAL_FN_START;
+
+ int r;
+ struct calsvc *c;
+
+ CAL_CALLOC(c, 1, struct calsvc);
+
+ r = __cal_calendar_svc_get_event_list(acct_id, st, et, &c->cslist, &c->tmlist);
+ if (r)
+ {
+ CALENDAR_SVC_FREE_CS(&c);
+ return NULL;
+ }
+
+ CAL_FN_END;
+
+ return c;
+}
+
+int* _calendar_svc_get_simple_cs(int acct_id, time_t st, time_t et)
+{
+ CAL_FN_START;
+
+ int r;
+ int *month;
+
+ CAL_CALLOC(month, 31, int);
+
+ r = calendar_svc_get_month_event_check ( acct_id, st, et, month);
+
+ CAL_FN_END;
+
+ return month;
+}
+
+void _calendar_svc_free_cs(struct calsvc **csv)
+{
+ struct calsvc *c;
+
+ if (!csv || !*csv)
+ return;
+
+ c = *csv;
+
+ __cal_calendar_svc_free_cslist(&c->cslist);
+ __cal_calendar_svc_free_tmlist(&c->tmlist);
+ free(c);
+
+ *csv = NULL;
+}
+
+void _calendar_svc_free_cslist(Eina_List **h)
+{
+ return __cal_calendar_svc_free_cslist(h);
+}
+
+int _calendar_svc_get_account_visibility(int account_id)
+{
+ cal_struct* cs = NULL;
+ Eina_List* list = NULL;
+ Eina_List* l = NULL;
+ int r = 0;
+
+ list = CALENDAR_SVC_GET_CALENDARS(account_id);
+ EINA_LIST_FOREACH(list,l,cs)
+ {
+ r = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_TABLE_INT_VISIBILITY);
+ if(r == 1)
+ break;
+ }
+ if(r != 0 && r!=1)
+ {
+ return -1;
+ }
+ return r;
+}
+
+void _calendar_svc_set_account_visibility(int account_id, int value)
+{
+ cal_struct* cs = NULL;
+ Eina_List* list = NULL;
+ Eina_List* l = NULL;
+ int r = 0;
+
+ list = CALENDAR_SVC_GET_CALENDARS(account_id);
+ EINA_LIST_FOREACH(list,l,cs)
+ {
+ r = CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_TABLE_INT_VISIBILITY, value);
+ if(r != 0)
+ {
+ return;
+ }
+
+ r = CALENDAR_SVC_UPDATE(cs);
+ if(r != 0)
+ {
+ return;
+ }
+ }
+}
+
+void _calendar_svc_set_calendar_visibility(cal_struct* cs, int value)
+{
+ int r = 0;
+ int account_id = 0;
+ int cal_id = 0;
+
+ r = CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_TABLE_INT_VISIBILITY, value);
+ if(r)
+ {
+ DBG("\n calendar_svc_struct_set_int fail : %d \n", r);
+ return;
+ }
+ account_id = CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_TABLE_INT_ACCOUNT_ID);
+ cal_id = CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_TABLE_INT_INDEX);
+ r = CALENDAR_SVC_UPDATE(cs);
+ if(r != 0)
+ {
+ DBG("\n calendar_svc_update fail : %d \n", r);
+ return;
+ }
+}
+
+int _calendar_svc_get_calendar_visibility(cal_struct* cs)
+{
+ int r = 0;
+ int account_id = 0;
+ int cal_id = 0;
+
+ r = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_TABLE_INT_VISIBILITY);
+ account_id = CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_TABLE_INT_ACCOUNT_ID);
+ cal_id = CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_TABLE_INT_INDEX);
+ return r;
+}
+
+//cal_calendar_svc_find_event is used only in alarm call back
+Eina_List* _calendar_svc_find_event(int acct_id, const char *field, const void *val)
+{
+ Eina_List *csl;
+ int r;
+ cal_struct *cs;
+ cal_iter *it;
+ time_t t = time(NULL);
+
+ struct tm tm;
+ struct tm* tmp;
+
+ tmp = localtime_r((const time_t*)&t, &tm);
+ if(!tmp)
+ {
+ ERR("localtime_r return null");
+ return NULL;
+ }
+
+ it = NULL;
+ r = CALENDAR_SVC_FIND_EVENT_LIST(acct_id, field, val, &it);
+ if (r != CAL_SUCCESS)
+ return NULL;
+
+ csl = NULL;
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+ cs = NULL;
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &cs);
+ if (r != CAL_SUCCESS)
+ break;
+
+ csl = eina_list_append(csl, cs);
+ }
+
+ CALENDAR_SVC_ITER_REMOVE(&it);
+
+ return csl;
+}
+
+Eina_List* _calendar_svc_get_calendars(int acct_id)
+{
+ Eina_List *csl;
+ int r;
+ cal_iter *it=NULL;
+ cal_struct *cs=NULL;
+
+ it = NULL;
+ r = CALENDAR_SVC_GET_ALL(acct_id, 0, CAL_STRUCT_CALENDAR, &it);
+ if (r != CAL_SUCCESS)
+ {
+ DBG("calendar_svc_get_all fail : %d \n",r);
+ return NULL;
+ }
+
+ csl = NULL;
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+ cs = NULL;
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &cs);
+ if (r != CAL_SUCCESS)
+ {
+ DBG("calendar_svc_iter_get_info fail : %d \n",r);
+ break;
+ }
+
+ csl = eina_list_append(csl, cs);
+ }
+
+ CALENDAR_SVC_ITER_REMOVE(&it);
+
+ return csl;
+}
+
+Eina_List* _calendar_svc_get_calendars_with_account(int account_id, void* at)
+{
+ Eina_List *csl;
+ int r;
+ cal_iter *it=NULL;
+ cal_struct *cal=NULL;
+ struct _cs* cs = NULL;
+
+ it = NULL;
+ r = CALENDAR_SVC_GET_ALL(account_id, 0, CAL_STRUCT_CALENDAR, &it);
+ if (r != CAL_SUCCESS)
+ return NULL;
+
+ csl = NULL;
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+ cal = NULL;
+ cs = NULL;
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &cal);
+ if (r != CAL_SUCCESS)
+ break;
+ CAL_CALLOC(cs, 1, struct _cs);
+ cs->cs = cal;
+ cs->at = at;
+ csl = eina_list_append(csl, cs);
+ }
+
+ CALENDAR_SVC_ITER_REMOVE(&it);
+ return csl;
+}
+
+void _calendar_svc_set_calendar_color(cal_struct* cal, Calendar_color* color )
+{
+ char buf[16] = {0,};
+ int r;
+ snprintf(buf, sizeof(buf), "%d.%d.%d.%d", color->red, color->green, color->blue, color->alpha);
+
+ r = CALENDAR_SVC_STRUCT_SET_STR(cal, CAL_TABLE_TXT_COLOR, buf);
+ if (r != CAL_SUCCESS)
+ {
+ ERR("CALENDAR_SVC_STRUCT_SET_STR return %d", r);
+ return;
+ }
+
+ r = CALENDAR_SVC_UPDATE(cal);
+ if (r != CAL_SUCCESS)
+ {
+ ERR("calendar_svc_update return %d", r);
+ return;
+ }
+}
+
+void _calendar_svc_get_calendar_color(cal_struct* cal, Calendar_color* calendar_color )
+{
+ if(!cal || !calendar_color)
+ {
+ ERR("parameter is NULL");
+ return;
+ }
+
+ char* calendar = NULL;
+ char* color = NULL;
+ char* token = NULL;
+ char* temp = NULL;
+ int index = 0;
+
+ calendar = CALENDAR_SVC_STRUCT_GET_STR(cal, CAL_TABLE_TXT_COLOR);
+ if(calendar)
+ color = strdup(calendar);
+ else
+ {
+ ERR("CALENDAR_SVC_STRUCT_GET_STR return NULL");
+ }
+
+ if(CAL_STRLEN(color) > 8)
+ {
+ token = strtok_r(color, ".", &temp);
+ if(token)
+ calendar_color->red = atoi(token);
+ else
+ {
+ calendar_color->red = 0;
+ ERR("color : %s, token is NULL", calendar);
+ }
+
+ token = strtok_r(NULL, ".", &temp);
+ if(token)
+ calendar_color->green = atoi(token);
+ else
+ {
+ calendar_color->green = 0;
+ ERR("color : %s, token is NULL", calendar);
+ }
+
+ token = strtok_r(NULL, ".", &temp);
+ if(token)
+ calendar_color->blue = atoi(token);
+ else
+ {
+ calendar_color->blue = 0;
+ ERR("color : %s, token is NULL", calendar);
+ }
+
+ token = strtok_r(NULL, ".", &temp);
+ if(token)
+ calendar_color->alpha = atoi(token);
+ else
+ {
+ calendar_color->alpha = 255;
+ ERR("color : %s, token is NULL", calendar);
+ }
+ }
+ else
+ {
+ index = CALENDAR_SVC_STRUCT_GET_INT(cal, CAL_TABLE_INT_INDEX)%6;
+
+ *calendar_color = def_color[index];
+
+ CALENDAR_SVC_SET_CALENDAR_COLOR(cal, def_color+index);
+ }
+
+ free(color);
+}
+
+void _calendar_svc_add_event_changed_callback(void(*callback)(void *), void *user_data)
+{
+ c_retm_if(!callback, "callback is null");
+ c_retm_if(!user_data, "user_data is null");
+
+ int ret = calendar_svc_subscribe_change(callback, user_data);
+ c_retm_if(ret!= CAL_SUCCESS, "calendar_svc_subscribe_change() is failed");
+}
+
+void _calendar_svc_del_event_changed_callback(void(*callback)(void *))
+{
+ c_retm_if(!callback, "callback is null");
+
+ int ret = calendar_svc_unsubscribe_change(callback);
+ c_retm_if(ret!= CAL_SUCCESS, "calendar_svc_unsubscribe_change() is failed");
+}
+
+void _calendar_svc_add_calendar_changed_callback(const char *type, void(*callback)(void *), void *user_data)
+{
+ c_retm_if(!callback, "callback is null");
+ c_retm_if(!user_data, "user_data is null");
+
+ int ret = calendar_svc_subscribe_db_change(type, callback, user_data);
+ c_retm_if(ret!= CAL_SUCCESS, "calendar_svc_subscribe_db_change() is failed");
+}
+
+void _calendar_svc_del_calendar_changed_callback(const char *type, void(*callback)(void *))
+{
+ c_retm_if(!callback, "callback is null");
+
+ int ret = calendar_svc_unsubscribe_db_change(type, callback);
+ c_retm_if(ret!= CAL_SUCCESS, "calendar_svc_unsubscribe_db_change() is failed");
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+#include "cld.h"
+
+#ifdef CAL_TIMECHECK
+double cal_set_start_time(void)
+{
+ struct timeval tv;
+ double curtime;
+
+ gettimeofday(&tv, NULL);
+ curtime = tv.tv_sec * 1000 + (double)tv.tv_usec/1000;
+ return curtime;
+}
+
+double cal_exec_time(double start, double correction)
+{
+ double end = cal_set_start_time();
+ return (end - start - correction);
+}
+
+double cal_init_time(double correction)
+{
+ double temp_t;
+ temp_t = cal_set_start_time();
+ return cal_exec_time(temp_t, correction);
+}
+#endif//CAL_TIMECHECK
\ No newline at end of file
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+
+#include "cld.h"
+#include "external-ug.h"
+
+static void __cal_ug_destroy_callback(struct ui_gadget *ug, void *priv)
+{
+ c_retm_if(!ug, "ug is null");
+
+ ug_destroy(ug);
+}
+
+static void __cal_ug_layout_callback(struct ui_gadget *ug, enum ug_mode mode, void *priv)
+{
+ c_retm_if(!ug, "ug is null");
+ c_retm_if(mode != UG_MODE_FULLVIEW, "mode is invaild");
+
+ Evas_Object *base = ug_get_layout(ug);
+ if (!base) {
+ ERR("ug_get_layout() returned null");
+ ug_destroy(ug);
+ return;
+ }
+
+ switch (mode) {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_get_window(), base);
+ evas_object_show(base);
+ break;
+ default:
+ break;
+ }
+}
+
+static void __cal_ug_result_callback(struct ui_gadget *ug, bundle *res, void *priv)
+{
+ c_retm_if(!ug, "ug is null");
+}
+
+void cal_launch_ug(bundle *bd, char *ug_name, struct ug_cbs *cbs)
+{
+ CAL_FN_START;
+
+ c_retm_if(!bd, "bd is null");
+ c_retm_if(!ug_name, "ug_name is null");
+
+ struct ui_gadget *ug;
+ struct ug_cbs uc;
+
+ if (NULL == cbs) {
+ uc.destroy_cb = __cal_ug_destroy_callback;
+ uc.layout_cb = __cal_ug_layout_callback;
+ uc.result_cb = __cal_ug_result_callback;
+ uc.priv = NULL;
+ } else {
+ if (NULL == cbs->destroy_cb)
+ uc.destroy_cb = __cal_ug_destroy_callback;
+ else
+ uc.destroy_cb = cbs->destroy_cb;
+
+ if (NULL == cbs->layout_cb)
+ uc.layout_cb = __cal_ug_layout_callback;
+ else
+ uc.layout_cb = cbs->layout_cb;
+
+ if (NULL == cbs->result_cb)
+ uc.result_cb = __cal_ug_result_callback;
+ else
+ uc.result_cb = cbs->result_cb;
+
+ if (NULL == cbs->priv)
+ uc.priv = NULL;
+ else
+ uc.priv = cbs->priv;
+ }
+
+ ug = ug_create(NULL, ug_name, UG_MODE_FULLVIEW, bd, &uc);
+ if (!ug)
+ ERR("ug create error");
+}
+
+void cal_launch_ug_with_var(char *ug_name, struct ug_cbs *cbs,...)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ug_name, "ug_name is null");
+
+ char *key = NULL;
+ char *val = NULL;
+ bundle *bd = bundle_create();
+ c_retm_if(!bd, "bd is null");
+
+ va_list ap;
+ va_start(ap, cbs);
+ while (CAL_TRUE) {
+ key = va_arg(ap, char *);
+ val = va_arg(ap, char *);
+
+ if (!key || !val) {
+ break;
+ }
+
+
+ bundle_add(bd, key, val);
+ }
+
+ va_end(ap);
+
+ cal_launch_ug(bd, ug_name, cbs);
+
+ bundle_free(bd);
+}
+
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <Ecore_X.h>
+#include <unicode/uloc.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+
+#include "cld.h"
+
+extern int u_strlen(UChar*);
+extern void u_austrncpy(char*, UChar*, int);
+extern void u_uastrncpy(UChar*, char*, int);
+
+static UDateTimePatternGenerator *pattern_generator = NULL;
+static pthread_mutex_t mutex_lock = PTHREAD_MUTEX_INITIALIZER;
+static UErrorCode status = U_ZERO_ERROR;
+static int pattern_generator_reference_counter = 0;
+
+static const char *_icons[] = {
+ [CI_EDIT] = "01_navi_icon_edit.png",
+ [CI_NEW] = "01_navi_icon_new.png",
+ [CI_DEL] = "01_navi_icon_delete.png",
+ [CI_PHOTO] = "00_list_photo_default.png",
+};
+static char _partbuf[1024];
+static char _textbuf[1024];
+static char _titlebuf[1024];
+static char _sigbuf[1024];
+
+Eina_Bool cal_util_black_theme_check()
+{
+ const char *curr_theme = elm_theme_get(NULL);
+
+ if (curr_theme)
+ {
+ return (strstr(curr_theme,"black")?EINA_TRUE:EINA_FALSE);
+ }
+
+ return EINA_FALSE;
+}
+
+Evas_Object* cal_util_add_bg(Evas_Object *obj, Eina_Bool is_window)
+{
+ CAL_FN_START;
+
+ Evas_Object *bg;
+ CAL_ASSERT(obj);
+ bg = elm_bg_add(obj);
+ if (!bg)
+ return NULL;
+
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ if (is_window)
+ elm_win_resize_object_add(obj, bg);
+ else
+ elm_object_style_set(bg, "group_list");
+
+ evas_object_show(bg);
+
+ CAL_FN_END;
+
+ return bg;
+}
+
+Evas_Object* cal_util_add_layout(Evas_Object *win, const char *g)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!win, NULL, "win is null");
+
+ Eina_Bool r;
+ Evas_Object *eo = elm_layout_add(win);
+ c_retvm_if(!eo, NULL, "elm_layout_add returned null");
+
+ if (g) {
+ r = elm_layout_file_set(eo, EDJ_FILE, g);
+ c_warn_if(r == EINA_FALSE, "elm_layout_file_set is failed");
+ }
+ else {
+ r = elm_layout_theme_set(eo, "layout", "application", "default");
+ c_warn_if(r == EINA_FALSE, "elm_layout_theme_set is failed");
+ }
+
+ if (r == EINA_FALSE) {
+ evas_object_del(eo);
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(eo);
+
+ CAL_FN_END;
+
+ return eo;
+}
+
+Evas_Object* cal_util_add_rectangle(Evas_Object *p)
+{
+ Evas_Object *r;
+
+ r = evas_object_rectangle_add(evas_object_evas_get(p));
+ CAL_ASSERT(r);
+
+ evas_object_show(r);
+ return r;
+}
+
+static void cal_util_delete_window(void *data, Evas_Object *obj, void *event)
+{
+ elm_exit();
+}
+
+Evas_Object* cal_util_add_window(const char *name, Evas_Coord* w, Evas_Coord* h)
+{
+ CAL_FN_START;
+
+ Evas_Object *eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+ c_retvm_if(!eo, NULL, "elm_win_add returned null");
+
+ Evas_Coord width, height;
+
+ elm_win_title_set(eo, name);
+ elm_win_borderless_set(eo, EINA_TRUE);
+
+ /*For calendar ring, window delete callback is not needed.*/
+ if (strcmp(name, CALENDAR_RING))
+ evas_object_smart_callback_add(eo, "delete,request", cal_util_delete_window, NULL);
+
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &width, &height);
+ evas_object_resize(eo, width, height);
+
+ elm_win_conformant_set(eo, EINA_TRUE);
+ elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+
+ if (w && h) {
+ *w = width;
+ *h = height;
+ }
+
+ CAL_FN_END;
+
+ return eo;
+}
+
+Evas_Object* cal_util_add_icon(Evas_Object *p, enum cld_icon i)
+{
+ Eina_Bool r;
+ Evas_Object *ic;
+
+ CAL_ASSERT(p);
+
+ if (i < 0 || i >= CI_MAX)
+ return NULL;
+
+ ic = elm_icon_add(p);
+ if (!ic)
+ return NULL;
+
+ r = elm_icon_file_set(ic, EDJ_FILE, _icons[i]);
+ if (!r) {
+ evas_object_del(ic);
+ return NULL;
+ }
+
+ evas_object_size_hint_align_set(ic, 0.5, 0.5);
+
+ return ic;
+}
+
+Evas_Object* cal_util_add_icon_button(Evas_Object *p, enum cld_icon i)
+{
+ Evas_Object *ic;
+ Evas_Object *bt;
+
+ CAL_ASSERT(p);
+
+ ic = cal_util_add_icon(p, i);
+ if (!ic)
+ return NULL;
+
+ evas_object_size_hint_min_set(ic, 34, 34);
+
+ bt = elm_button_add(p);
+ if (!bt) {
+ evas_object_del(ic);
+ return NULL;
+ }
+
+ evas_object_size_hint_min_set(bt, 50, 50);
+
+ elm_object_content_set(bt, ic);
+
+ return bt;
+}
+
+char* cal_util_get_part_text(const char *fmt, int pos)
+{
+ snprintf(_partbuf, sizeof(_partbuf), fmt, pos);
+ return _partbuf;
+}
+
+
+void cal_util_set_text(Evas_Object *obj, const char *part, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vsnprintf(_textbuf, sizeof(_textbuf), fmt, ap);
+ va_end(ap);
+
+ edje_object_part_text_set(obj, part, _textbuf);
+}
+
+int cal_util_connect_pattern_generator()
+{
+ pthread_mutex_lock(&mutex_lock);
+ if(pattern_generator_reference_counter == 0)
+ {
+ uloc_setDefault(getenv("LC_TIME"), &status);
+ if(!pattern_generator)
+ pattern_generator = udatpg_open(uloc_getDefault(), &status);
+ if(!pattern_generator)
+ {
+ ERR("udatpg_open fail : %s", u_errorName(status));
+ pthread_mutex_unlock(&mutex_lock);
+ return -1;
+ }
+ }
+
+ pattern_generator_reference_counter++;
+ pthread_mutex_unlock(&mutex_lock);
+
+ return 0;
+}
+
+int cal_util_disconnect_pattern_generator()
+{
+ pthread_mutex_lock(&mutex_lock);
+
+ if(pattern_generator_reference_counter == 1)
+ {
+ if(pattern_generator)
+ udatpg_close(pattern_generator);
+ pattern_generator = NULL;
+ }
+
+ pattern_generator_reference_counter--;
+
+ pthread_mutex_unlock(&mutex_lock);
+
+ return 0;
+}
+
+
+UDate cal_util_get_u_date_from_time_t(time_t time)
+{
+ UDate date;
+ date = (UDate ) time*1000; /* Equivalent to Date = ucal_getNow() in Milliseconds */
+ return date;
+}
+
+UDate cal_util_get_u_date_from_tm(const struct tm* tm)
+{
+ UDate date;
+ time_t time;
+
+ time = timelocal((struct tm*)tm);
+
+ date = (UDate ) time*1000; /* Equivalent to Date = ucal_getNow() in Milliseconds */
+ return date;
+}
+
+static void __cal_util_generate_best_pattern(UChar *customSkeleton, const struct tm* tm)
+{
+ UErrorCode status = U_ZERO_ERROR;
+ UDateFormat *formatter;
+ UDate date;
+ UChar bestPattern[64] = {0,};
+ UChar formatted[64] = {0,};
+ char bestPatternString[128]={0,};
+ char formattedString[128] = {0,};
+ int32_t bestPatternCapacity, formattedCapacity;
+ int32_t bestPatternLength, formattedLength;
+ uloc_setDefault(getenv("LC_TIME"), &status);
+ const char* locale = uloc_getDefault();
+
+ bestPatternCapacity = (int32_t)(sizeof(bestPattern)/sizeof((bestPattern)[0]));
+ bestPatternLength = udatpg_getBestPattern(pattern_generator, customSkeleton, u_strlen(customSkeleton), bestPattern, bestPatternCapacity, &status);
+
+ u_austrncpy(bestPatternString, bestPattern, 128);
+
+ date = cal_util_get_u_date_from_tm(tm);
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, bestPattern, -1, &status);
+
+ formattedCapacity = (int32_t)(sizeof(formatted)/sizeof((formatted)[0]));
+ formattedLength = udat_format(formatter, date, formatted, formattedCapacity, NULL, &status);
+
+ u_austrncpy(formattedString, formatted, 128);
+
+ udat_close(formatter);
+
+ snprintf(_textbuf,1023,"%s",formattedString);
+}
+
+void cal_util_get_time_format_from_skeleton(const char* dateSkeleton, const char* timeSkeleton, const struct tm* tm)
+{
+ char skeleton[128]={'\0'};
+ UChar customSkeleton[64]={'\0'};
+ int dateSkeletonLength=0,timeSkeletonLength=0,skeletonLength=0;
+
+ if(dateSkeleton)
+ {
+ dateSkeletonLength = CAL_STRLEN(dateSkeleton);
+ CAL_STRNCPY(skeleton,dateSkeleton,dateSkeletonLength);
+ }
+
+ if(timeSkeleton)
+ {
+ timeSkeletonLength = CAL_STRLEN(timeSkeleton);
+ CAL_STRNCAT(skeleton,timeSkeleton,timeSkeletonLength);
+ }
+
+ skeletonLength = CAL_STRLEN(skeleton);
+
+ u_uastrncpy(customSkeleton, skeleton,skeletonLength);
+
+ __cal_util_generate_best_pattern(customSkeleton, tm);
+}
+
+void cal_util_set_time_text(Evas_Object *obj, const char *part, const char *date, const char* time,
+ const struct tm *tm)
+{
+ cal_util_get_time_format_from_skeleton(date, time, tm);
+
+ if (!CAL_STRCMP(part,"title/text"))
+ {
+ snprintf(_titlebuf, 1023,"%s",_textbuf);
+ edje_object_part_text_set(obj, part, _titlebuf);
+ }
+ else
+ edje_object_part_text_set(obj, part, _textbuf);
+}
+
+void cal_util_set_time_week_text(Evas_Object *obj, const char *part, const char *date, const char* time,
+ const struct tm *t, int start)
+{
+ c_retm_if(!obj, "obj is null.");
+ c_retm_if(!part, "part is null.");
+ c_retm_if(!t, "t is null.");
+
+ struct tm tm = *t;
+ char week_start[1024] = {0};
+ if (!CAL_STRCMP(part,"title/text")) {
+
+ tm.tm_mday -= CAL_UTIL_GET_WDAY(tm.tm_wday - start);
+ cal_util_get_time_format_from_skeleton(date, time, &tm);
+ snprintf(week_start, 1023, "%s", _textbuf);
+
+ tm.tm_mday += 7;
+ cal_util_get_time_format_from_skeleton(date, time, &tm);
+ snprintf(_titlebuf, 1023,"%s ~ %s", week_start, _textbuf);
+
+ edje_object_part_text_set(obj, part, _titlebuf);
+ }
+ else
+ edje_object_part_text_set(obj, part, _textbuf);
+}
+
+int cal_util_get_time_text(char* buf, int buf_size, const char *date, const char* time, const struct tm *tm)
+{
+ cal_util_get_time_format_from_skeleton(date, time, tm);
+ snprintf(buf, buf_size, "%s", _textbuf);
+ return CAL_STRLEN(_textbuf);
+}
+
+void cal_util_emit_signal(Evas_Object *obj, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vsnprintf(_sigbuf, sizeof(_sigbuf), fmt, ap);
+ va_end(ap);
+
+ edje_object_signal_emit(obj, _sigbuf, "prog");
+}
+
+Evas_Object* cal_util_add_separator(Evas_Object *box, const char *style)
+{
+ Evas_Object *sp;
+
+ if (!box || CAL_STRCMP(elm_object_widget_type_get(box), "box"))
+ return NULL;
+
+ sp = elm_separator_add(box);
+ if (sp) {
+ elm_separator_horizontal_set(sp, EINA_TRUE);
+ elm_object_style_set(sp, style);
+ evas_object_show(sp);
+ elm_box_pack_end(box, sp);
+ }
+
+ return sp;
+}
+
+Evas_Object* cal_util_add_scroller(Evas_Object *p)
+{
+ Evas_Object *sc;
+
+ sc = elm_scroller_add(p);
+ if (!sc)
+ return NULL;
+
+ elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
+ elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+
+ evas_object_show(sc);
+ return sc;
+}
+
+Evas_Object* cal_util_add_box(Evas_Object *p)
+{
+ Evas_Object *bx;
+
+ bx = elm_box_add(p);
+ if (!bx)
+ return NULL;
+
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.0);
+ evas_object_show(bx);
+
+ return bx;
+}
+
+void cal_util_set_controlbar_button(Evas_Object *btn, char *label, char *style, void (*func) (void *data, Evas_Object *obj, void *event_info), void* data)
+{
+ CAL_ASSERT(btn);
+
+ elm_object_style_set(btn, style);
+ evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5);
+ elm_object_text_set(btn, label);
+ evas_object_smart_callback_add(btn, "clicked", func, data);
+ evas_object_show(btn);
+}
+
+static void __cal_util_edit_field_changed_callback(void *data, Evas_Object *obj, void *event_info) // This callback is for showing(hiding) X marked button.
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ if (elm_object_focus_get(data)) {
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+ else
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ }
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void __cal_util_edit_field_focused_callback(void *data, Evas_Object *obj, void *event_info) // Focused callback will show X marked button and hide guidetext.
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void __cal_util_edit_field_unfocused_callback(void *data, Evas_Object *obj, void *event_info) // Unfocused callback will show guidetext and hide X marked button.
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+}
+
+static void __cal_util_edit_field_eraser_clicked_callback(void *data, Evas_Object *obj, const char *emission, const char *source) // When X marked button is clicked, empty entry's contents.
+{
+ c_retm_if(!data, "data is null");
+
+ elm_entry_entry_set(data, "");
+}
+
+Evas_Object * cal_util_add_edit_field(Evas_Object *parent, const char *title, const char *guide, Eina_Bool single_line, Eina_Bool is_editable)
+{
+ c_retvm_if(!parent, NULL, "parent is null");
+
+ Evas_Object *layout = elm_layout_add(parent);
+ c_retvm_if(!layout, NULL, "layout is null");
+
+ if (title && title[0] != '\0') {
+ elm_layout_theme_set(layout, "layout", "editfield", "title");
+ elm_object_part_text_set(layout, "elm.text", title);
+ }
+ else
+ elm_layout_theme_set(layout, "layout", "editfield", "default");
+
+ Evas_Object *entry = elm_entry_add(parent);
+ c_retvm_if(!entry, layout, "entry is null");
+
+ elm_object_part_content_set(layout, "elm.swallow.content", entry);
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ if (guide && guide[0] != '\0')
+ elm_object_part_text_set(layout, "elm.guidetext", guide);
+
+ elm_entry_single_line_set(entry, single_line);
+ elm_entry_scrollable_set(entry, single_line);
+
+ if (is_editable)
+ elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", __cal_util_edit_field_eraser_clicked_callback, entry);
+ else {
+ elm_entry_editable_set(entry, is_editable);
+ elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm");
+ }
+
+ evas_object_smart_callback_add(entry, "changed", __cal_util_edit_field_changed_callback, layout);
+ evas_object_smart_callback_add(entry, "focused", __cal_util_edit_field_focused_callback, layout);
+ evas_object_smart_callback_add(entry, "unfocused", __cal_util_edit_field_unfocused_callback, layout);
+
+ evas_object_show(layout);
+
+ return layout;
+}
+
+static void __cal_util_searchbar_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ if (elm_object_focus_get(data)) {
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+ else
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+ }
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void __cal_util_searchbar_with_cancel_btn_focused_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+
+ elm_object_signal_emit(data, "cancel,in", "");
+}
+
+static void __cal_util_searchbar_focused_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+
+ elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void __cal_util_searchbar_eraser_clicked_callback(void *data, Evas_Object *obj, const char *emission, const char *source) // When X marked button is clicked, empty entry's contents.
+{
+ c_retm_if(!data, "data is null");
+
+ elm_entry_entry_set(data, "");
+}
+
+static void __cal_util_searchbar_cancel_btn_clicked_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *searchbar_layout = data;
+ Evas_Object *entry = elm_object_part_content_get(searchbar_layout, "elm.swallow.content");
+ c_retm_if(!entry, "entry is null");
+
+ evas_object_hide(obj);
+
+ elm_entry_input_panel_hide(entry);
+
+ elm_entry_entry_set(entry, NULL);
+
+ elm_object_focus_set(entry, EINA_FALSE);
+}
+
+static void __cal_util_searchbar_unfocused_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ if (elm_entry_is_empty(obj))
+ elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+
+ elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+
+ elm_object_signal_emit(data, "cancel,out", "");
+}
+
+static void __cal_util_searchbar_symbol_clicked_callback(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ c_retm_if(!data, "data is null");
+
+ elm_object_focus_set(data, EINA_TRUE);
+}
+
+static void __cal_util_searchbar_bg_clicked_callback(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ c_retm_if(!data, "data is null");
+
+ elm_object_focus_set(data, EINA_TRUE);
+}
+
+Evas_Object * cal_util_add_searchbar(Evas_Object *parent, const char *text, const char *guide, Eina_Bool cancel_button)
+{
+ c_retvm_if(!parent, NULL, "parent is null");
+
+ Evas_Object *searchbar_layout = elm_layout_add(parent);
+ c_retvm_if(!searchbar_layout, NULL, "searchbar_layout is null");
+
+ if (cancel_button)
+ elm_layout_theme_set(searchbar_layout, "layout", "searchbar", "cancel_button");
+ else
+ elm_layout_theme_set(searchbar_layout, "layout", "searchbar", "default");
+
+ Evas_Object *entry = elm_entry_add(searchbar_layout);
+ c_retvm_if(!entry, searchbar_layout, "entry is null");
+
+ evas_object_show(entry);
+
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ elm_object_part_content_set(searchbar_layout, "elm.swallow.content", entry);
+
+ if (guide && strlen(guide))
+ elm_object_part_text_set(searchbar_layout, "elm.guidetext", guide);
+ else
+ elm_object_part_text_set(searchbar_layout, "elm.guidetext", S_("IDS_COM_BODY_SEARCH"));
+
+ if (text && strlen(text))
+ elm_object_text_set(entry, text);
+
+ if (cancel_button) {
+ Evas_Object *cancel_btn = elm_button_add(searchbar_layout);
+ c_retvm_if(!cancel_btn, searchbar_layout, "cancel_btn is null");
+
+ elm_object_part_content_set(searchbar_layout, "button_cancel", cancel_btn);
+ elm_object_style_set(cancel_btn, "searchbar/default");
+ elm_object_text_set(cancel_btn, S_("IDS_COM_SK_CANCEL"));
+
+ evas_object_smart_callback_add(entry, "focused", __cal_util_searchbar_with_cancel_btn_focused_callback, searchbar_layout);
+ evas_object_smart_callback_add(cancel_btn, "clicked", __cal_util_searchbar_cancel_btn_clicked_callback, searchbar_layout);
+
+ }
+ else {
+ evas_object_smart_callback_add(entry, "focused", __cal_util_searchbar_focused_callback, searchbar_layout);
+ }
+
+ evas_object_smart_callback_add(entry, "changed", __cal_util_searchbar_changed_callback, searchbar_layout);
+ evas_object_smart_callback_add(entry, "unfocused", __cal_util_searchbar_unfocused_callback, searchbar_layout);
+ elm_object_signal_callback_add(searchbar_layout, "elm,eraser,clicked", "elm", __cal_util_searchbar_eraser_clicked_callback, entry);
+ elm_object_signal_callback_add(searchbar_layout, "elm,bg,clicked", "elm", __cal_util_searchbar_bg_clicked_callback, entry);
+ elm_object_signal_callback_add(searchbar_layout, "elm,action,click", "", __cal_util_searchbar_symbol_clicked_callback, entry);
+
+ return searchbar_layout;
+}
+
+Evas_Object * cal_util_add_nocontents(Evas_Object *parent, const char *label)
+{
+ c_retvm_if(!parent, NULL, "parent is null");
+
+ Evas_Object *layout = elm_layout_add(parent);
+ c_retvm_if(!layout, NULL, "layout is null");
+
+ elm_layout_theme_set(layout, "layout", "nocontents", "full");
+
+ if (label && strlen(label))
+ elm_object_part_text_set(layout, "elm.text", label);
+
+ return layout;
+}
+
+Evas_Object * cal_util_add_controlbar(Evas_Object * parent)
+{
+ c_retvm_if(!parent, NULL, "parent is null");
+
+ Evas_Object *toolbar = elm_toolbar_add(parent);
+ c_retvm_if(!toolbar, NULL, "toolbar is null");
+
+ elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+ return toolbar;
+}
+
+static void __cal_util_popup_response_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ evas_object_del(data);
+}
+
+Evas_Object * cal_util_add_popup(Evas_Object *parent, const char *title, const char *desc,
+ void (*callback_func)(void *data, Evas_Object *obj, void *ei), void *data, ...)
+{
+ c_retvm_if(!parent, NULL, "parent is null");
+
+ Evas_Object *popup = elm_popup_add(parent);
+ c_retvm_if(!popup, NULL, "popup is null");
+
+ if (data)
+ evas_object_data_set(popup, "data", data);
+
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ if (title && strlen(title))
+ elm_object_part_text_set(popup, "title,text", title);
+
+ if (desc && strlen(desc))
+ elm_object_text_set(popup, desc);
+
+ va_list arg;
+ int i = 0;
+ Evas_Object *btn = NULL;
+ const char *label = NULL;
+ char part[16] = {0};
+
+ if (!callback_func)
+ callback_func = __cal_util_popup_response_callback;
+
+ va_start(arg, data);
+
+ while ((label = va_arg(arg, char*))) {
+ btn = elm_button_add(popup);
+ if (!btn) {
+ ERR("btn is null");
+ continue;
+ }
+
+ elm_object_text_set(btn, label);
+ snprintf(part, sizeof(part), "button%d", ++i);
+ elm_object_part_content_set(popup, part, btn);
+ evas_object_smart_callback_add(btn, "clicked", callback_func, popup);
+ }
+
+ va_end(arg);
+
+ if (!i)
+ elm_popup_timeout_set(popup, 3.0);
+
+ evas_object_show(popup);
+
+ return popup;
+}
+
+Evas_Object * cal_util_add_datetime(Evas_Object *parent, const char *title, struct tm *tm)
+{
+ c_retvm_if(!parent, NULL, "parent is null");
+
+ Evas_Object *layout = elm_layout_add(parent);
+ c_retvm_if(!layout, NULL, "layout is null");
+
+ Eina_Bool r = elm_layout_file_set(layout, EDJ_FILE, "dialoguegroup/datetime");
+ c_retvm_if(!r, NULL, "r is null");
+
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ Evas_Object *datetime = elm_datetime_add(layout);
+ c_retvm_if(!datetime, NULL, "datetime is null");
+
+ if (CAL_STRLEN(title))
+ elm_object_part_text_set(layout, "elm.text", title);
+
+ if (tm)
+ elm_datetime_value_set(datetime, (const struct tm *)tm);
+
+ elm_object_part_content_set(layout, "elm.icon", datetime);
+
+ return layout;
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <vconf.h>
+
+#include "cld.h"
+
+#define LINEMAX 256
+#define LOGFILE "/tmp/calendar.log"
+#define SIN_TBL_S (sizeof(SIN_TBL)/sizeof(SIN_TBL[0]) - 1)
+
+static time_t cal_max;
+static time_t cal_min;
+
+static const float const SIN_TBL[] = {
+ 0.0000f, 0.0174f, 0.0349f, 0.0523f, 0.0698f,
+ 0.0872f, 0.1045f, 0.1219f, 0.1392f, 0.1564f,
+ 0.1736f, 0.1908f, 0.2079f, 0.2249f, 0.2419f,
+ 0.2588f, 0.2756f, 0.2924f, 0.3090f, 0.3256f,
+ 0.3420f, 0.3584f, 0.3746f, 0.3907f, 0.4067f,
+ 0.4226f, 0.4384f, 0.4540f, 0.4695f, 0.4848f,
+ 0.5000f, 0.5150f, 0.5299f, 0.5446f, 0.5592f,
+ 0.5736f, 0.5878f, 0.6018f, 0.6157f, 0.6293f,
+ 0.6528f, 0.6561f, 0.6691f, 0.6820f, 0.6947f,
+ 0.7071f, 0.7193f, 0.7314f, 0.7431f, 0.7547f,
+ 0.7660f, 0.7772f, 0.7880f, 0.7986f, 0.8090f,
+ 0.8191f, 0.8290f, 0.8387f, 0.8480f, 0.8571f,
+ 0.8660f, 0.8746f, 0.8829f, 0.8910f, 0.8988f,
+ 0.9063f, 0.9135f, 0.9205f, 0.9272f, 0.9336f,
+ 0.9397f, 0.9455f, 0.9511f, 0.9563f, 0.9613f,
+ 0.9659f, 0.9703f, 0.9744f, 0.9781f, 0.9816f,
+ 0.9848f, 0.9877f, 0.9903f, 0.9926f, 0.9945f,
+ 0.9962f, 0.9976f, 0.9986f, 0.9994f, 0.9998f,
+ 1.0f
+};
+
+
+static int __cal_util_max_days[2][12] = {
+ { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
+ { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
+};
+int cal_util_get_max_days(int tm_year, int tm_mon)
+{
+ while (tm_mon < 0) {
+ tm_year -= 1;
+ tm_mon += 12;
+ }
+
+ while (tm_mon > 11) {
+ tm_year += 1;
+ tm_mon -= 12;
+ }
+
+ tm_year = tm_year + 1900;
+
+ return __cal_util_max_days[(!(tm_year & 0x3) && (!(tm_year % 400)
+ || (tm_year % 100)))][tm_mon];
+}
+
+static int __cal_util_get_cal_min(void)
+{
+ struct tm tm;
+ time_t t;
+
+ if (cal_min)
+ return cal_min;
+
+ t = time(NULL);
+ localtime_r(&t, &tm);
+
+ // 1902-1-1 00:00:00
+ tm.tm_year = 2;
+ tm.tm_mon = 0;
+ tm.tm_mday = 1;
+ tm.tm_hour = 0;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+
+ cal_min = mktime(&tm);
+ if(cal_min == -1)
+ cal_min = 0;
+ CAL_ASSERT(cal_min);
+
+ return cal_min;
+}
+
+static int __cal_util_get_cal_max(void)
+{
+ struct tm tm;
+ time_t t;
+
+ if (cal_max)
+ return cal_max;
+
+ t = time(NULL);
+ localtime_r(&t, &tm);
+
+ // 2037-12-31 23:59:59
+ tm.tm_year = 137;
+ tm.tm_mon = 11;
+ tm.tm_mday = 31;
+ tm.tm_hour = 23;
+ tm.tm_min = 59;
+ tm.tm_sec = 59;
+
+ cal_max = mktime(&tm);
+ if(cal_max == -1)
+ cal_max = 0;
+ CAL_ASSERT(cal_max);
+
+ return cal_max;
+}
+
+time_t cal_util_get_max_time(void)
+{
+ return __cal_util_get_cal_max();
+}
+
+time_t cal_util_get_min_time(void)
+{
+ return __cal_util_get_cal_min();
+}
+
+int cal_util_update_tm_year(struct tm *t, int delta)
+{
+ time_t r;
+ struct tm tmp;
+
+ tmp = *t;
+
+ tmp.tm_year += delta;
+ if (tmp.tm_mon == 1 && tmp.tm_mday == 29)
+ tmp.tm_mday = cal_util_get_max_days(tmp.tm_year, tmp.tm_mon);
+
+ r = mktime(&tmp);
+ if (r == (time_t)-1)
+ return -1;
+
+ if (r < __cal_util_get_cal_min() || r > __cal_util_get_cal_max())
+ return -1;
+
+ *t = tmp;
+ return 0;
+}
+
+int cal_util_update_tm_month(struct tm *t, int delta)
+{
+ time_t r;
+ int max;
+ struct tm tmp;
+
+ tmp = *t;
+ tmp.tm_mon += delta;
+
+ while (tmp.tm_mon < 0) {
+ tmp.tm_year -= 1;
+ tmp.tm_mon += 12;
+ }
+
+ while (tmp.tm_mon > 11) {
+ tmp.tm_year += 1;
+ tmp.tm_mon -= 12;
+ }
+
+ max = cal_util_get_max_days(tmp.tm_year, tmp.tm_mon);
+ if (max < tmp.tm_mday)
+ tmp.tm_mday = max;
+
+ r = mktime(&tmp);
+ if (r == (time_t)-1)
+ return -1;
+
+ if (r < __cal_util_get_cal_min() || r > __cal_util_get_cal_max())
+ return -1;
+
+ *t = tmp;
+ return 0;
+}
+
+int cal_util_update_tm_day(struct tm *t, int delta)
+{
+ time_t r;
+ struct tm tmp;
+
+ tmp = *t;
+ tmp.tm_mday += delta;
+
+ r = mktime(&tmp);
+ if (r == (time_t)-1)
+ return -1;
+
+ if (r < __cal_util_get_cal_min() || r > __cal_util_get_cal_max())
+ return -1;
+
+ *t = tmp;
+ return 0;
+}
+
+int cal_util_update_tm_hour(struct tm* tm, int delta)
+{
+ struct tm t;
+ struct tm* returned_tm = NULL;
+ time_t time = 0;
+
+ time = mktime(tm);
+ time = time + (delta * 60*60);
+
+ returned_tm = localtime_r(&time, &t);
+ if(!returned_tm)
+ {
+ ERR("localtime is failed.");
+ return -1;
+ }
+ CAL_MEMCPY(tm, &t, struct tm);
+
+ return 0;
+}
+
+int cal_util_get_day_time_t(struct tm *t, time_t *st, time_t *et)
+{
+ c_retvm_if(!t, -1 , "t is null");
+ c_retvm_if(!st, -1 , "st is null");
+ c_retvm_if(!et, -1 , "et is null");
+
+ time_t _t;
+ struct tm tm = *t;
+
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+
+ _t = mktime(&tm);
+ if (_t == (time_t) -1)
+ return -1;
+
+ *st = _t;
+ *et = _t + (24 * 60 * 60) - 1;
+
+ return 0;
+}
+
+int cal_util_get_week_time_t(struct tm *t, time_t *st, time_t *et, int start)
+{
+ c_retvm_if(!t, -1 , "t is null");
+ c_retvm_if(!st, -1 , "st is null");
+ c_retvm_if(!et, -1 , "et is null");
+
+ time_t _t;
+ struct tm tm = *t;
+
+ tm.tm_mday -= CAL_UTIL_GET_WDAY(tm.tm_wday - start);
+
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+
+ _t = mktime(&tm);
+ if (_t == (time_t) -1)
+ return -1;
+
+ *st = _t;
+ *et = _t + (7 * 24 * 60 * 60) - 1;
+
+ return 0;
+}
+
+int cal_util_get_month_time_t(struct tm *t, time_t *st, time_t *et)
+{
+ c_retvm_if(!t, -1 , "t is null");
+ c_retvm_if(!st, -1 , "st is null");
+ c_retvm_if(!et, -1 , "et is null");
+
+ time_t s, e;
+ struct tm tm = *t;
+
+ tm.tm_mday = 1;
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+
+ s = mktime(&tm);
+ if (s == (time_t) -1)
+ return -1;
+
+ tm.tm_mon++;
+ e = mktime(&tm);
+ if (e == (time_t) -1)
+ return -1;
+
+ *st = s;
+ *et = e - 3600;
+ return 0;
+}
+
+int cal_util_get_year_time_t(struct tm *t, time_t *st, time_t *et)
+{
+ c_retvm_if(!t, -1 , "t is null");
+ c_retvm_if(!st, -1 , "st is null");
+ c_retvm_if(!et, -1 , "et is null");
+
+ time_t s, e;
+ struct tm tm = *t;
+
+ tm.tm_mon = 0;
+ tm.tm_mday = 1;
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+
+ s = mktime(&tm);
+ if (s == (time_t) -1)
+ return -1;
+
+ tm.tm_year++;
+ e = mktime(&tm);
+ if (e == (time_t) -1)
+ return -1;
+
+ *st = s;
+ *et = e - 1;
+
+ return 0;
+}
+
+float cal_util_nsin(float f)
+{
+ if(f < 0.0 && f > 1.0)
+ return 0.0;
+
+ return SIN_TBL[(int)(SIN_TBL_S * f)];
+}
+
+int cal_util_get_week_flag(char *week_s)
+{
+ int i;
+ int flag;
+
+ flag = 0;
+ if (6 < CAL_STRLEN(week_s)) {
+ for (i = 0; i < 7; i++) {
+ if (week_s[i] == '1')
+ flag |= (1 << i);
+ }
+ }
+
+ return flag;
+}
+
+int cal_util_get_timezone_info(char **timezone_path, char **timezone_city, char **timezone_offset)
+{
+ c_retvm_if(!timezone_path, -1, "timezone_path is null");
+ c_retvm_if(!timezone_city, -1, "timezone_city is null");
+ c_retvm_if(!timezone_offset, -1, "timezone_offset is null");
+
+ int value = 0;
+ char *text = NULL;
+
+ int ret = vconf_get_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF, &value);
+ c_warn_if(ret, "vconf_get_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF, &value) is failed");
+
+ if (value) {
+
+ text = vconf_get_str(CAL_VCONFKEY_LOCK_TIMEZONE_PATH);
+ c_retvm_if(!text, -1, "vconf_get_str(CAL_VCONFKEY_LOCK_TIMEZONE_PATH) is failed");
+
+ if (*timezone_path)
+ free(*timezone_path);
+
+ *timezone_path = strdup(text);
+ c_retvm_if(!*timezone_path, -1, "timezone_path is null");
+
+
+ text = vconf_get_str(CAL_VCONFKEY_LOCK_TIMEZONE_CITY);
+ c_retvm_if(!text, -1, "vconf_get_str(CAL_VCONFKEY_LOCK_TIMEZONE_CITY) is failed");
+
+ if (*timezone_city)
+ free(*timezone_city);
+
+ *timezone_city = strdup(text);
+ c_retvm_if(!*timezone_city, -1, "timezone_city is null");
+
+
+ text = vconf_get_str(CAL_VCONFKEY_LOCK_TIMEZONE_OFFSET);
+ c_retvm_if(!text, -1, "vconf_get_str(CAL_VCONFKEY_LOCK_TIMEZONE_OFFSET) is failed");
+
+ if (*timezone_offset)
+ free(*timezone_offset);
+
+ *timezone_offset = g_strdup_printf("GMT%s",text);
+ c_retvm_if(!*timezone_offset, -1, "timezone_offset is null");
+ }
+ else {
+
+ text = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+ c_retvm_if(!text, -1, "vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID) is failed");
+
+ if (*timezone_path)
+ free(*timezone_path);
+
+ *timezone_path = strdup(text);
+ c_retvm_if(!*timezone_path, -1, "timezone_path is null");
+
+
+ text = vconf_get_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT);
+ c_retvm_if(!text, -1, "vconf_get_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT) is failed");
+
+ if (*timezone_city)
+ free(*timezone_city);
+
+ *timezone_city = strdup(text);
+ c_retvm_if(!*timezone_city, -1, "timezone_city is null");
+
+ text = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_INT);
+ if (!text) {
+ ERR("vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_INT) is failed");
+ text = "+9";
+ }
+
+ if (*timezone_offset)
+ free(*timezone_offset);
+
+ *timezone_offset = g_strdup_printf("GMT%s",text);
+ c_retvm_if(!*timezone_offset, -1, "timezone_offset is null");
+ }
+
+ return 0;
+}
--- /dev/null
+SET(IMAGE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/images/${SELECTED_TARGET}")
+
+# Alarm ring tone
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/sounds DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.wav")
+
+ADD_SUBDIRECTORY(edc)
+
+#SET(IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/images/wvga")
+#ADD_SUBDIRECTORY(wvga)
--- /dev/null
+SET(INC_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/inc)
+SET(LAYOUT_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/layout)
+
+# Layout for black theme
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-black-theme.edj
+ COMMAND edje_cc -id ${IMAGE_DIR}
+ ${LAYOUT_SRC_DIR}/${PROJECT_NAME}-black-theme.edc
+ ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-black-theme.edj
+ DEPENDS
+ ${INC_SRC_DIR}/${SELECTED_TARGET}-black-inc.edc
+ ${LAYOUT_SRC_DIR}/${PROJECT_NAME}-black-theme.edc
+ ${LAYOUT_SRC_DIR}/inc.acct.edc
+ ${LAYOUT_SRC_DIR}/inc.edit.edc
+ ${LAYOUT_SRC_DIR}/inc.images.edc
+ ${LAYOUT_SRC_DIR}/inc.layouts.edc
+ ${LAYOUT_SRC_DIR}/inc.main.day.edc
+ ${LAYOUT_SRC_DIR}/inc.main.day.tb.edc
+ ${LAYOUT_SRC_DIR}/inc.main.edc
+ ${LAYOUT_SRC_DIR}/inc.main.month.cal.edc
+ ${LAYOUT_SRC_DIR}/inc.main.month.edc
+ ${LAYOUT_SRC_DIR}/inc.main.month.cal.weekly.edc
+ ${LAYOUT_SRC_DIR}/inc.main.month.weekly.edc
+ ${LAYOUT_SRC_DIR}/inc.main.tab.edc
+ ${LAYOUT_SRC_DIR}/inc.main.title.edc
+ ${LAYOUT_SRC_DIR}/inc.main.week.edc
+ ${LAYOUT_SRC_DIR}/inc.main.week.item.edc
+ ${LAYOUT_SRC_DIR}/inc.main.year.cal.edc
+ ${LAYOUT_SRC_DIR}/inc.main.year.edc
+ ${LAYOUT_SRC_DIR}/inc.part.edc
+ ${LAYOUT_SRC_DIR}/inc.ring.edc
+ ${LAYOUT_SRC_DIR}/inc.ring.image.edc
+)
+ADD_CUSTOM_TARGET(edj_build-hd DEPENDS ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-black-theme.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} edj_build-hd)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-black-theme.edj DESTINATION ${EDJDIR})
+
+# Layout for white theme
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-white-theme.edj
+ COMMAND edje_cc -id ${IMAGE_DIR}
+ ${LAYOUT_SRC_DIR}/${PROJECT_NAME}-white-theme.edc
+ ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-white-theme.edj
+ DEPENDS
+ ${INC_SRC_DIR}/${SELECTED_TARGET}-white-inc.edc
+ ${LAYOUT_SRC_DIR}/${PROJECT_NAME}-white-theme.edc
+ ${LAYOUT_SRC_DIR}/inc.acct.edc
+ ${LAYOUT_SRC_DIR}/inc.edit.edc
+ ${LAYOUT_SRC_DIR}/inc.images.edc
+ ${LAYOUT_SRC_DIR}/inc.layouts.edc
+ ${LAYOUT_SRC_DIR}/inc.main.day.edc
+ ${LAYOUT_SRC_DIR}/inc.main.day.tb.edc
+ ${LAYOUT_SRC_DIR}/inc.main.edc
+ ${LAYOUT_SRC_DIR}/inc.main.month.cal.edc
+ ${LAYOUT_SRC_DIR}/inc.main.month.edc
+ ${LAYOUT_SRC_DIR}/inc.main.month.cal.weekly.edc
+ ${LAYOUT_SRC_DIR}/inc.main.month.weekly.edc
+ ${LAYOUT_SRC_DIR}/inc.main.tab.edc
+ ${LAYOUT_SRC_DIR}/inc.main.title.edc
+ ${LAYOUT_SRC_DIR}/inc.main.week.edc
+ ${LAYOUT_SRC_DIR}/inc.main.week.item.edc
+ ${LAYOUT_SRC_DIR}/inc.main.year.cal.edc
+ ${LAYOUT_SRC_DIR}/inc.main.year.edc
+ ${LAYOUT_SRC_DIR}/inc.part.edc
+ ${LAYOUT_SRC_DIR}/inc.ring.edc
+ ${LAYOUT_SRC_DIR}/inc.ring.image.edc
+)
+ADD_CUSTOM_TARGET(edj_build DEPENDS ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-white-theme.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} edj_build)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-white-theme.edj DESTINATION ${EDJDIR})
+
+# Icon
+SET(ICON_NAME ${PKGNAME})
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/${ICON_NAME}.edj
+ COMMAND edje_cc -id ${IMAGE_DIR}
+ ${LAYOUT_SRC_DIR}/${ICON_NAME}.edc
+ ${CMAKE_BINARY_DIR}/${ICON_NAME}.edj
+ DEPENDS ${LAYOUT_SRC_DIR}/${ICON_NAME}.edc
+)
+ADD_CUSTOM_TARGET(icon_build DEPENDS ${CMAKE_BINARY_DIR}/${ICON_NAME}.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} icon_build)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${ICON_NAME}.edj DESTINATION ${ICONDIR})
+
+# Image
+INSTALL(FILES ${IMAGE_DIR}/all_calendar.png DESTINATION ${RESDIR}/icons)
+INSTALL(FILES ${IMAGE_DIR}/${PKGNAME}.png DESTINATION ${RESDIR}/icons/default/small)
\ No newline at end of file
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+//retio defined
+#ifndef _RATIO_
+#define _RATIO_
+#define R_X (480.0/720.0)
+#define R_Y (800.0/1280.0)
+#endif
+
+#define WIDTH_OF_HD (720.0*R_X)
+#define HEIGHT_OF_HD (1280.0*R_Y)
+//size
+
+//color
+#define COLOR_OF_LINE_FOR_ACCT 75 75 75 255
+#define COLOR_OF_BASE_OF_SELECTOR_BUTTON_FOR_ACCT 233 233 233 255
+
+#define COLOR_OF_TOP_LINE_FOR_DAY 195 192 179 255
+
+#define COLOR_OF_BASE_OF_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_HORIZEN_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_MIDDLE_LINE_FOR_TAB 224 219 209 255
+#define COLOR_OF_VERT_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_ON_TIME_LINE_FOR_TAB 212 144 26 255
+
+#define COLOR_OF_LIST_LINE_FOR_MONTH 195 192 179 255
+
+#define COLOR_OF_WEEK_DAY_TEXT_FOR_MONTH_CAL 106 96 84 255
+#define COLOR_OF_SUNDAY_TEXT_FOR_MONTH_CAL 200 0 0 255
+#define COLOR_OF_SATDAY_TEXT_FOR_MONTH_CAL 106 96 84 255
+#define COLOR_OF_TODAY_FOR_MONTH_CAL 255 200 0 40
+#define COLOR_OF_BLOCK_DEFAULT_TEXT_FOR_MONTH_CAL 0 0 0 255
+#define COLOR_OF_BLOCK_SUNDAY_TEXT_FOR_MONTH_CAL 200 0 0 255
+#define COLOR_OF_BLOCK_SATDAY_TEXT_FOR_MONTH_CAL 0 0 0 255
+#define COLOR_OF_BLOCK_DISABLEDAY_TEXT_FOR_MONTH_CAL 195 192 179 255
+#define COLOR_OF_CHECK_BASE_FOR_MONTH_CAL 127 126 126 255
+#define COLOR_OF_TEXT_ON_CHECK_FOR_MONTH_CAL 255 255 255 255
+#define COLOR_OF_LINE_FOR_MONTH_CAL 195 192 179 255
+
+#define COLOR_OF_TEXT_FOR_MAIN_TAB 249 249 249 150
+#define COLOR_OF_TEXT_DEFAULT_FOR_MAIN_TAB 0 0 0 255
+#define COLOR_OF_TEXT_SELECTED_FOR_MAIN_TAB 255 255 255 255
+
+#define COLOR_OF_TODAY_FOR_YEAR_CAL 212 146 32 40
+#define COLOR_OF_DEFAULT_TEXT_FOR_YEAR_CAL 0 0 0 255
+#define COLOR_OF_SUNDAY_TEXT_FOR_YEAR_CAL 200 0 0 255
+#define COLOR_OF_SATDAY_TEXT_FOR_YEAR_CAL 0 0 0 255
+#define COLOR_OF_LINE_FOR_YEAR_CAL 195 192 179 255
+
+#define COLOR_OF_TEXT_FOR_RING 255 126 0 255
+#define COLOR_OF_DEFAULT_STOP_FOR_RING 255 74 22 255
+#define COLOR_OF_DEFAULT_PRESSED_FOR_RING 255 255 255 255
+
+//image
+#define LIST_PHOTO_DEFAUT "00_list_photo_default.png"
+#define DIALOG_EDIT_DEFAULT "01_dialoguegroup_edit_default.png"
+#define HEADER_ICON_ADD "01_header_icon_add.png"
+#define HEADER_ICON_DONE "01_header_icon_done.png"
+#define HEADER_ICON_OTHERS "01_header_icon_others.png"
+#define NAVI_ICON_DELETE "01_navi_icon_delete.png"
+#define NAVI_ICON_EDIT "01_navi_icon_edit.png"
+#define NAVI_ICON_NEW "01_navi_icon_new.png"
+#define MEMO_NOITEMS "49_memo_noitems.png"
+#define CALENDAR_BG_2 "57_calendar_bg2.png"
+#define CALENDAR_EVENT_BG_1 "57_calendar_event(1)_bg.png"
+#define CALENDAR_EVENT_BG_2 "57_calendar_event(2)_bg.png"
+#define CALENDAR_EVENT_BG_3 "57_calendar_event(3)_bg.png"
+#define CALENDAR_EVENT_BG_4 "57_calendar_event(4)_bg.png"
+#define CALENDAR_MONTH_VIEW_BG_1 "57_calendar_month_view(1)_bg.png"
+#define CALENDAR_SPIN_ICON_1 "57_calendar_spin_01_icon.png"
+#define CALENDAR_SPIN_ICON_2 "57_calendar_spin_02_icon.png"
+#define CALENDAR_TAB "57_calendar_tab.png"
+#define CALENDAR_TAB_FOCUS_BG "57_calendar_tab_focus_bg.png"
+#define CALENDAR_TAB_PRESS "57_calendar_tab_press.png"
+#define CALENDAR_TODAY_ICON "57_calendar_today_icon.png"
+#define CALENDAR_TODAY_ICON_PRESS "57_calendar_today_icon_press.png"
+#define CALENDAR_TODAY_ICON_2 "57_calendar_today_icon2.png"
+#define CALENDAR_WEEK_ARROW_FOCUS_ICON "57_calendar_week_arrow_focus_icon.png"
+#define CALENDAR_WEEK_ARROW_ICON "57_calendar_week_arrow_icon.png"
+#define CALENDAR_WEEK_VIEW_BG "57_calendar_week_view_bg.png"
+#define CALENDAR_WEEK_VIEW_PRESS "57_calendar_week_view_press.png"
+#define CALENDAR_YEAR_VIEW_BG "57_calendar_year_view_bg.png"
+#define ALL_CALENDAR "all_calendar.png"
+#define CALENDAR_SELSECTED "calendar_selected.png"
+#define NAVIBAR_ITEM_SEPARATOR "navibar_item_separator.png"
+#define NAVIBAR_ITEM_SEPARATOR_TEMP "navibar_item_separator_tmp.png"
+#define BG "P01_bg.png"
+#define CONTROL_TOP_BG "P01_control_top_bg.png"
+#define CONTROL_TOP_BG_TEMP "P01_control_top_bg_tmp.png"
+#define DAY_CURRENT_TIME "P01_day_current_time.png"
+#define EVENT "P01_event.png"
+#define NOSCHEDULE "P01_noschedule.png"
+#define TAB_BG "P01_tab_bg.png"
+#define TAB_DEFAULT "P01_tab_default.png"
+#define TAB_FOCUS "P01_tab_focus.png"
+#define TAB_PRESS "P01_tab_press.png"
+#define TITLE_BG "P01_title_bg.png"
+#define TITLE_BG_TMP "P01_title_bg_tmp.png"
+#define ALARM_CLOCK_BG_AM "58_alarm_clock_bg_AM.png"
+#define ALARM_CLOCK_BG_PM "58_alarm_clock_bg_PM.png"
+#define CLOCK_BG "58_clock_bg.png"
+#define CLOCK_BUTTON_NORMAL "58_clock_button_normal.png"
+#define CLOCK_BUTTON_PRESS "58_clock_button_press.png"
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+//retio defined
+#ifndef _RATIO_
+#define _RATIO_
+#define R_X (480.0/720.0)
+#define R_Y (800.0/1280.0)
+#endif
+
+#define WIDTH_OF_HD (720.0*R_X)
+#define HEIGHT_OF_HD (1280.0*R_Y)
+//size
+
+//color
+#define COLOR_OF_LINE_FOR_ACCT 75 75 75 255
+#define COLOR_OF_BASE_OF_SELECTOR_BUTTON_FOR_ACCT 233 233 233 255
+
+#define COLOR_OF_TOP_LINE_FOR_DAY 195 192 179 255
+
+#define COLOR_OF_BASE_OF_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_HORIZEN_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_MIDDLE_LINE_FOR_TAB 224 219 209 255
+#define COLOR_OF_VERT_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_ON_TIME_LINE_FOR_TAB 212 144 26 255
+
+#define COLOR_OF_LIST_LINE_FOR_MONTH 195 192 179 255
+
+#define COLOR_OF_WEEK_DAY_TEXT_FOR_MONTH_CAL 106 96 84 255
+#define COLOR_OF_SUNDAY_TEXT_FOR_MONTH_CAL 200 0 0 255
+#define COLOR_OF_SATDAY_TEXT_FOR_MONTH_CAL 106 96 84 255
+#define COLOR_OF_TODAY_FOR_MONTH_CAL 255 200 0 40
+#define COLOR_OF_BLOCK_DEFAULT_TEXT_FOR_MONTH_CAL 0 0 0 255
+#define COLOR_OF_BLOCK_SUNDAY_TEXT_FOR_MONTH_CAL 200 0 0 255
+#define COLOR_OF_BLOCK_SATDAY_TEXT_FOR_MONTH_CAL 0 0 0 255
+#define COLOR_OF_BLOCK_DISABLEDAY_TEXT_FOR_MONTH_CAL 195 192 179 255
+#define COLOR_OF_CHECK_BASE_FOR_MONTH_CAL 127 126 126 255
+#define COLOR_OF_TEXT_ON_CHECK_FOR_MONTH_CAL 255 255 255 255
+#define COLOR_OF_LINE_FOR_MONTH_CAL 195 192 179 255
+
+#define COLOR_OF_TEXT_FOR_MAIN_TAB 249 249 249 150
+#define COLOR_OF_TEXT_DEFAULT_FOR_MAIN_TAB 0 0 0 255
+#define COLOR_OF_TEXT_SELECTED_FOR_MAIN_TAB 255 255 255 255
+
+#define COLOR_OF_TODAY_FOR_YEAR_CAL 212 146 32 40
+#define COLOR_OF_DEFAULT_TEXT_FOR_YEAR_CAL 0 0 0 255
+#define COLOR_OF_SUNDAY_TEXT_FOR_YEAR_CAL 200 0 0 255
+#define COLOR_OF_SATDAY_TEXT_FOR_YEAR_CAL 0 0 0 255
+#define COLOR_OF_LINE_FOR_YEAR_CAL 195 192 179 255
+
+#define COLOR_OF_TEXT_FOR_RING 255 126 0 255
+#define COLOR_OF_DEFAULT_STOP_FOR_RING 255 74 22 255
+#define COLOR_OF_DEFAULT_PRESSED_FOR_RING 255 255 255 255
+
+//image
+#define LIST_PHOTO_DEFAUT "00_list_photo_default.png"
+#define DIALOG_EDIT_DEFAULT "01_dialoguegroup_edit_default.png"
+#define HEADER_ICON_ADD "01_header_icon_add.png"
+#define HEADER_ICON_DONE "01_header_icon_done.png"
+#define HEADER_ICON_OTHERS "01_header_icon_others.png"
+#define NAVI_ICON_DELETE "01_navi_icon_delete.png"
+#define NAVI_ICON_EDIT "01_navi_icon_edit.png"
+#define NAVI_ICON_NEW "01_navi_icon_new.png"
+#define MEMO_NOITEMS "49_memo_noitems.png"
+#define CALENDAR_BG_2 "57_calendar_bg2.png"
+#define CALENDAR_EVENT_BG_1 "57_calendar_event(1)_bg.png"
+#define CALENDAR_EVENT_BG_2 "57_calendar_event(2)_bg.png"
+#define CALENDAR_EVENT_BG_3 "57_calendar_event(3)_bg.png"
+#define CALENDAR_EVENT_BG_4 "57_calendar_event(4)_bg.png"
+#define CALENDAR_MONTH_VIEW_BG_1 "57_calendar_month_view(1)_bg.png"
+#define CALENDAR_SPIN_ICON_1 "57_calendar_spin_01_icon.png"
+#define CALENDAR_SPIN_ICON_2 "57_calendar_spin_02_icon.png"
+#define CALENDAR_TAB "57_calendar_tab.png"
+#define CALENDAR_TAB_FOCUS_BG "57_calendar_tab_focus_bg.png"
+#define CALENDAR_TAB_PRESS "57_calendar_tab_press.png"
+#define CALENDAR_TODAY_ICON "57_calendar_today_icon.png"
+#define CALENDAR_TODAY_ICON_PRESS "57_calendar_today_icon_press.png"
+#define CALENDAR_TODAY_ICON_2 "57_calendar_today_icon2.png"
+#define CALENDAR_WEEK_ARROW_FOCUS_ICON "57_calendar_week_arrow_focus_icon.png"
+#define CALENDAR_WEEK_ARROW_ICON "57_calendar_week_arrow_icon.png"
+#define CALENDAR_WEEK_VIEW_BG "57_calendar_week_view_bg.png"
+#define CALENDAR_WEEK_VIEW_PRESS "57_calendar_week_view_press.png"
+#define CALENDAR_YEAR_VIEW_BG "57_calendar_year_view_bg.png"
+#define ALL_CALENDAR "all_calendar.png"
+#define CALENDAR_SELSECTED "calendar_selected.png"
+#define NAVIBAR_ITEM_SEPARATOR "navibar_item_separator.png"
+#define NAVIBAR_ITEM_SEPARATOR_TEMP "navibar_item_separator_tmp.png"
+#define BG "P01_bg.png"
+#define CONTROL_TOP_BG "P01_control_top_bg.png"
+#define CONTROL_TOP_BG_TEMP "P01_control_top_bg_tmp.png"
+#define DAY_CURRENT_TIME "P01_day_current_time.png"
+#define EVENT "P01_event.png"
+#define NOSCHEDULE "P01_noschedule.png"
+#define TAB_BG "P01_tab_bg.png"
+#define TAB_DEFAULT "P01_tab_default.png"
+#define TAB_FOCUS "P01_tab_focus.png"
+#define TAB_PRESS "P01_tab_press.png"
+#define TITLE_BG "P01_title_bg.png"
+#define TITLE_BG_TMP "P01_title_bg_tmp.png"
+#define ALARM_CLOCK_BG_AM "58_alarm_clock_bg_AM.png"
+#define ALARM_CLOCK_BG_PM "58_alarm_clock_bg_PM.png"
+#define CLOCK_BG "58_clock_bg.png"
+#define CLOCK_BUTTON_NORMAL "58_clock_button_normal.png"
+#define CLOCK_BUTTON_PRESS "58_clock_button_press.png"
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+//retio defined
+#ifndef _RATIO_
+#define _RATIO_
+#define R_X (480.0/720.0)
+#define R_Y (800.0/1280.0)
+#endif
+
+#define WIDTH_OF_HD (720.0*R_X)
+#define HEIGHT_OF_HD (1280.0*R_Y)
+
+//size
+//color
+#define COLOR_OF_LINE_FOR_ACCT 75 75 75 255
+#define COLOR_OF_BASE_OF_SELECTOR_BUTTON_FOR_ACCT 233 233 233 255
+
+#define COLOR_OF_TOP_LINE_FOR_DAY 195 192 179 255
+
+#define COLOR_OF_BASE_OF_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_HORIZEN_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_MIDDLE_LINE_FOR_TAB 224 219 209 255
+#define COLOR_OF_VERT_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_ON_TIME_LINE_FOR_TAB 212 144 26 255
+
+#define COLOR_OF_LIST_LINE_FOR_MONTH 195 192 179 255
+
+#define COLOR_OF_WEEK_DAY_TEXT_FOR_MONTH_CAL 106 96 84 255
+#define COLOR_OF_SUNDAY_TEXT_FOR_MONTH_CAL 200 0 0 255
+#define COLOR_OF_SATDAY_TEXT_FOR_MONTH_CAL 106 96 84 255
+#define COLOR_OF_TODAY_FOR_MONTH_CAL 255 200 0 40
+#define COLOR_OF_BLOCK_DEFAULT_TEXT_FOR_MONTH_CAL 0 0 0 255
+#define COLOR_OF_BLOCK_SUNDAY_TEXT_FOR_MONTH_CAL 200 0 0 255
+#define COLOR_OF_BLOCK_SATDAY_TEXT_FOR_MONTH_CAL 0 0 0 255
+#define COLOR_OF_BLOCK_DISABLEDAY_TEXT_FOR_MONTH_CAL 195 192 179 255
+#define COLOR_OF_CHECK_BASE_FOR_MONTH_CAL 127 126 126 255
+#define COLOR_OF_TEXT_ON_CHECK_FOR_MONTH_CAL 255 255 255 255
+#define COLOR_OF_LINE_FOR_MONTH_CAL 195 192 179 255
+
+#define COLOR_OF_TEXT_FOR_MAIN_TAB 249 249 249 150
+#define COLOR_OF_TEXT_DEFAULT_FOR_MAIN_TAB 0 0 0 255
+#define COLOR_OF_TEXT_SELECTED_FOR_MAIN_TAB 255 255 255 255
+
+#define COLOR_OF_TODAY_FOR_YEAR_CAL 212 146 32 40
+#define COLOR_OF_DEFAULT_TEXT_FOR_YEAR_CAL 0 0 0 255
+#define COLOR_OF_SUNDAY_TEXT_FOR_YEAR_CAL 200 0 0 255
+#define COLOR_OF_SATDAY_TEXT_FOR_YEAR_CAL 0 0 0 255
+#define COLOR_OF_LINE_FOR_YEAR_CAL 195 192 179 255
+
+#define COLOR_OF_TEXT_FOR_RING 255 126 0 255
+#define COLOR_OF_DEFAULT_STOP_FOR_RING 255 74 22 255
+#define COLOR_OF_DEFAULT_PRESSED_FOR_RING 255 255 255 255
+
+//image
+#define LIST_PHOTO_DEFAUT "00_list_photo_default.png"
+#define DIALOG_EDIT_DEFAULT "01_dialoguegroup_edit_default.png"
+#define HEADER_ICON_ADD "01_header_icon_add.png"
+#define HEADER_ICON_DONE "01_header_icon_done.png"
+#define HEADER_ICON_OTHERS "01_header_icon_others.png"
+#define NAVI_ICON_DELETE "01_navi_icon_delete.png"
+#define NAVI_ICON_EDIT "01_navi_icon_edit.png"
+#define NAVI_ICON_NEW "01_navi_icon_new.png"
+#define MEMO_NOITEMS "49_memo_noitems.png"
+#define CALENDAR_BG_2 "57_calendar_bg2.png"
+#define CALENDAR_EVENT_BG_1 "57_calendar_event(1)_bg.png"
+#define CALENDAR_EVENT_BG_2 "57_calendar_event(2)_bg.png"
+#define CALENDAR_EVENT_BG_3 "57_calendar_event(3)_bg.png"
+#define CALENDAR_EVENT_BG_4 "57_calendar_event(4)_bg.png"
+#define CALENDAR_MONTH_VIEW_BG_1 "57_calendar_month_view(1)_bg.png"
+#define CALENDAR_SPIN_ICON_1 "57_calendar_spin_01_icon.png"
+#define CALENDAR_SPIN_ICON_2 "57_calendar_spin_02_icon.png"
+#define CALENDAR_TAB "57_calendar_tab.png"
+#define CALENDAR_TAB_FOCUS_BG "57_calendar_tab_focus_bg.png"
+#define CALENDAR_TAB_PRESS "57_calendar_tab_press.png"
+#define CALENDAR_TODAY_ICON "57_calendar_today_icon.png"
+#define CALENDAR_TODAY_ICON_PRESS "57_calendar_today_icon_press.png"
+#define CALENDAR_TODAY_ICON_2 "57_calendar_today_icon2.png"
+#define CALENDAR_WEEK_ARROW_FOCUS_ICON "57_calendar_week_arrow_focus_icon.png"
+#define CALENDAR_WEEK_ARROW_ICON "57_calendar_week_arrow_icon.png"
+#define CALENDAR_WEEK_VIEW_BG "57_calendar_week_view_bg.png"
+#define CALENDAR_WEEK_VIEW_PRESS "57_calendar_week_view_press.png"
+#define CALENDAR_YEAR_VIEW_BG "57_calendar_year_view_bg.png"
+#define ALL_CALENDAR "all_calendar.png"
+#define CALENDAR_SELSECTED "calendar_selected.png"
+#define NAVIBAR_ITEM_SEPARATOR "navibar_item_separator.png"
+#define NAVIBAR_ITEM_SEPARATOR_TEMP "navibar_item_separator_tmp.png"
+#define BG "P01_bg.png"
+#define CONTROL_TOP_BG "P01_control_top_bg.png"
+#define CONTROL_TOP_BG_TEMP "P01_control_top_bg_tmp.png"
+#define DAY_CURRENT_TIME "P01_day_current_time.png"
+#define EVENT "P01_event.png"
+#define NOSCHEDULE "P01_noschedule.png"
+#define TAB_BG "P01_tab_bg.png"
+#define TAB_DEFAULT "P01_tab_default.png"
+#define TAB_FOCUS "P01_tab_focus.png"
+#define TAB_PRESS "P01_tab_press.png"
+#define TITLE_BG "P01_title_bg.png"
+#define TITLE_BG_TMP "P01_title_bg_tmp.png"
+#define ALARM_CLOCK_BG_AM "58_alarm_clock_bg_AM.png"
+#define ALARM_CLOCK_BG_PM "58_alarm_clock_bg_PM.png"
+#define CLOCK_BG "58_clock_bg.png"
+#define CLOCK_BUTTON_NORMAL "58_clock_button_normal.png"
+#define CLOCK_BUTTON_PRESS "58_clock_button_press.png"
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+//retio defined
+#ifndef _RATIO_
+#define _RATIO_
+#define R_X (480.0/720.0)
+#define R_Y (800.0/1280.0)
+#endif
+
+#define WIDTH_OF_HD (720.0*R_X)
+#define HEIGHT_OF_HD (1280.0*R_Y)
+
+//size
+//color
+#define COLOR_OF_LINE_FOR_ACCT 75 75 75 255
+#define COLOR_OF_BASE_OF_SELECTOR_BUTTON_FOR_ACCT 233 233 233 255
+
+#define COLOR_OF_TOP_LINE_FOR_DAY 195 192 179 255
+
+#define COLOR_OF_BASE_OF_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_HORIZEN_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_MIDDLE_LINE_FOR_TAB 224 219 209 255
+#define COLOR_OF_VERT_LINE_FOR_TAB 195 192 179 255
+#define COLOR_OF_ON_TIME_LINE_FOR_TAB 212 144 26 255
+
+#define COLOR_OF_LIST_LINE_FOR_MONTH 195 192 179 255
+
+#define COLOR_OF_WEEK_DAY_TEXT_FOR_MONTH_CAL 106 96 84 255
+#define COLOR_OF_SUNDAY_TEXT_FOR_MONTH_CAL 200 0 0 255
+#define COLOR_OF_SATDAY_TEXT_FOR_MONTH_CAL 106 96 84 255
+#define COLOR_OF_TODAY_FOR_MONTH_CAL 255 200 0 40
+#define COLOR_OF_BLOCK_DEFAULT_TEXT_FOR_MONTH_CAL 0 0 0 255
+#define COLOR_OF_BLOCK_SUNDAY_TEXT_FOR_MONTH_CAL 200 0 0 255
+#define COLOR_OF_BLOCK_SATDAY_TEXT_FOR_MONTH_CAL 0 0 0 255
+#define COLOR_OF_BLOCK_DISABLEDAY_TEXT_FOR_MONTH_CAL 195 192 179 255
+#define COLOR_OF_CHECK_BASE_FOR_MONTH_CAL 127 126 126 255
+#define COLOR_OF_TEXT_ON_CHECK_FOR_MONTH_CAL 255 255 255 255
+#define COLOR_OF_LINE_FOR_MONTH_CAL 195 192 179 255
+
+#define COLOR_OF_TEXT_FOR_MAIN_TAB 249 249 249 150
+#define COLOR_OF_TEXT_DEFAULT_FOR_MAIN_TAB 0 0 0 255
+#define COLOR_OF_TEXT_SELECTED_FOR_MAIN_TAB 255 255 255 255
+
+#define COLOR_OF_TODAY_FOR_YEAR_CAL 212 146 32 40
+#define COLOR_OF_DEFAULT_TEXT_FOR_YEAR_CAL 0 0 0 255
+#define COLOR_OF_SUNDAY_TEXT_FOR_YEAR_CAL 200 0 0 255
+#define COLOR_OF_SATDAY_TEXT_FOR_YEAR_CAL 0 0 0 255
+#define COLOR_OF_LINE_FOR_YEAR_CAL 195 192 179 255
+
+#define COLOR_OF_TEXT_FOR_RING 255 126 0 255
+#define COLOR_OF_DEFAULT_STOP_FOR_RING 255 74 22 255
+#define COLOR_OF_DEFAULT_PRESSED_FOR_RING 255 255 255 255
+
+//image
+#define LIST_PHOTO_DEFAUT "00_list_photo_default.png"
+#define DIALOG_EDIT_DEFAULT "01_dialoguegroup_edit_default.png"
+#define HEADER_ICON_ADD "01_header_icon_add.png"
+#define HEADER_ICON_DONE "01_header_icon_done.png"
+#define HEADER_ICON_OTHERS "01_header_icon_others.png"
+#define NAVI_ICON_DELETE "01_navi_icon_delete.png"
+#define NAVI_ICON_EDIT "01_navi_icon_edit.png"
+#define NAVI_ICON_NEW "01_navi_icon_new.png"
+#define MEMO_NOITEMS "49_memo_noitems.png"
+#define CALENDAR_BG_2 "57_calendar_bg2.png"
+#define CALENDAR_EVENT_BG_1 "57_calendar_event(1)_bg.png"
+#define CALENDAR_EVENT_BG_2 "57_calendar_event(2)_bg.png"
+#define CALENDAR_EVENT_BG_3 "57_calendar_event(3)_bg.png"
+#define CALENDAR_EVENT_BG_4 "57_calendar_event(4)_bg.png"
+#define CALENDAR_MONTH_VIEW_BG_1 "57_calendar_month_view(1)_bg.png"
+#define CALENDAR_SPIN_ICON_1 "57_calendar_spin_01_icon.png"
+#define CALENDAR_SPIN_ICON_2 "57_calendar_spin_02_icon.png"
+#define CALENDAR_TAB "57_calendar_tab.png"
+#define CALENDAR_TAB_FOCUS_BG "57_calendar_tab_focus_bg.png"
+#define CALENDAR_TAB_PRESS "57_calendar_tab_press.png"
+#define CALENDAR_TODAY_ICON "57_calendar_today_icon.png"
+#define CALENDAR_TODAY_ICON_PRESS "57_calendar_today_icon_press.png"
+#define CALENDAR_TODAY_ICON_2 "57_calendar_today_icon2.png"
+#define CALENDAR_WEEK_ARROW_FOCUS_ICON "57_calendar_week_arrow_focus_icon.png"
+#define CALENDAR_WEEK_ARROW_ICON "57_calendar_week_arrow_icon.png"
+#define CALENDAR_WEEK_VIEW_BG "57_calendar_week_view_bg.png"
+#define CALENDAR_WEEK_VIEW_PRESS "57_calendar_week_view_press.png"
+#define CALENDAR_YEAR_VIEW_BG "57_calendar_year_view_bg.png"
+#define ALL_CALENDAR "all_calendar.png"
+#define CALENDAR_SELSECTED "calendar_selected.png"
+#define NAVIBAR_ITEM_SEPARATOR "navibar_item_separator.png"
+#define NAVIBAR_ITEM_SEPARATOR_TEMP "navibar_item_separator_tmp.png"
+#define BG "P01_bg.png"
+#define CONTROL_TOP_BG "P01_control_top_bg.png"
+#define CONTROL_TOP_BG_TEMP "P01_control_top_bg_tmp.png"
+#define DAY_CURRENT_TIME "P01_day_current_time.png"
+#define EVENT "P01_event.png"
+#define NOSCHEDULE "P01_noschedule.png"
+#define TAB_BG "P01_tab_bg.png"
+#define TAB_DEFAULT "P01_tab_default.png"
+#define TAB_FOCUS "P01_tab_focus.png"
+#define TAB_PRESS "P01_tab_press.png"
+#define TITLE_BG "P01_title_bg.png"
+#define TITLE_BG_TMP "P01_title_bg_tmp.png"
+#define ALARM_CLOCK_BG_AM "58_alarm_clock_bg_AM.png"
+#define ALARM_CLOCK_BG_PM "58_alarm_clock_bg_PM.png"
+#define CLOCK_BG "58_clock_bg.png"
+#define CLOCK_BUTTON_NORMAL "58_clock_button_normal.png"
+#define CLOCK_BUTTON_PRESS "58_clock_button_press.png"
--- /dev/null
+//set the theme
+#include "../inc/hd-black-inc.edc"
+
+collections {
+#include "inc.main.edc" // main layout: year, month, week, day, list
+#include "inc.main.title.edc" // title layout: year, month, week, day
+#include "inc.main.tab.edc" // tab layout: year, month, week, day, list
+
+#include "inc.main.month.edc" // month layout
+#include "inc.main.month.cal.edc" // month in month layout
+
+#include "inc.main.month.weekly.edc" // month layout for focuse weekly
+#include "inc.main.month.cal.weekly.edc" // month in month layout for focuse weekly
+
+#include "inc.main.year.edc" // year layout
+#include "inc.main.year.cal.edc" // month in year layout
+
+#include "inc.main.week.edc" // week layout
+#include "inc.main.week.item.edc" // item in box
+
+#include "inc.main.day.edc" // day layout
+#include "inc.main.day.tb.edc" // timeblock layout
+
+#include "inc.images.edc" // image part
+
+#include "inc.layouts.edc"
+
+#include "inc.acct.edc"
+#include "inc.acct.colorselector.edc"
+
+#include "inc.edit.edc"
+
+#include "inc.ring.edc"
+
+#include "inc.part.edc"
+
+}
\ No newline at end of file
--- /dev/null
+//set the theme
+#include "../inc/hd-white-inc.edc"
+
+collections {
+#include "inc.main.edc" // main layout: year, month, week, day, list
+#include "inc.main.title.edc" // title layout: year, month, week, day
+#include "inc.main.tab.edc" // tab layout: year, month, week, day, list
+
+#include "inc.main.month.edc" // month layout
+#include "inc.main.month.cal.edc" // month in month layout
+
+#include "inc.main.month.weekly.edc" // month layout for focuse weekly
+#include "inc.main.month.cal.weekly.edc" // month in month layout for focuse weekly
+
+#include "inc.main.year.edc" // year layout
+#include "inc.main.year.cal.edc" // month in year layout
+
+#include "inc.main.week.edc" // week layout
+#include "inc.main.week.item.edc" // item in box
+
+#include "inc.main.day.edc" // day layout
+#include "inc.main.day.tb.edc" // timeblock layout
+
+#include "inc.images.edc" // image part
+
+#include "inc.layouts.edc"
+
+#include "inc.acct.edc"
+#include "inc.acct.colorselector.edc"
+
+#include "inc.edit.edc"
+
+#include "inc.ring.edc"
+
+#include "inc.part.edc"
+}
\ No newline at end of file
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_EXTENDED_EDC_H__
+#define __CALENDAR_EXTENDED_EDC_H__
+
+#define PPART PART:
+#define PIMAGE IMAGE:
+
+/***********************************************************************/
+/* size difinition layer */
+#define PART_BG(iName)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ color: 0 0 0 0;\
+ } \
+} \
+
+#define PART_BG_EX(iName, iMinx, iMiny)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ min: iMinx iMiny;\
+ color: 0 0 0 0;\
+ } \
+} \
+
+#define PART_RECT(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: iR1x iR1y; to: iR1t; } \
+ rel2 { relative: iR2x iR2y; to: iR2t; } \
+ color: 0 0 0 0;\
+ } \
+} \
+
+#define PART_V_PIXEL_RECT(iName, size, iTo, iRy, iAy)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ min: 0 size;\
+ align: 0.5 iAy;\
+ fixed: 0 1;\
+ rel1 { relative: 0.0 iRy; to: iTo; } \
+ rel2 { relative: 1.0 iRy; to: iTo; } \
+ color: 0 0 0 0;\
+ } \
+} \
+
+#define PART_H_PIXEL_RECT(iName, size, iTo, iRx, iAx)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ min: size 0;\
+ align: iAx 0.5;\
+ fixed: 1 0;\
+ rel1 { relative: iRx 0.0; to: iTo; } \
+ rel2 { relative: iRx 1.0; to: iTo; } \
+ color: 0 0 0 0;\
+ } \
+} \
+
+#define PART_PIXEL_RECT(iName, iX, iY, iRx, iRy, iTo, iAx, iAy)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ min: iX iY;\
+ align: iAx iAy;\
+ fixed: 1 1;\
+ rel1 { relative: iRx iRy; to: iTo; } \
+ rel2 { relative: iRx iRy; to: iTo; } \
+ color: 0 0 0 0;\
+ } \
+} \
+
+
+/* vertical divided rect, index range from 0~N-1
+ * iIndex must be immediate integer and expression like (1+2) is not allowed
+ */
+#define PART_V_DIVID_RECT(iName, iTo, iIndex, iN)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 (iIndex%iN)/iN; to: iTo; } \
+ rel2 { relative: 1.0 (iIndex%iN+1)/iN; to: iTo; } \
+ color: 0 0 0 0;\
+ } \
+} \
+
+/* horizontal divided rect, index range from 0~N-1
+ * iIndex must be immediate integer and expression like (1+2) is not allowed
+ */
+#define PART_H_DIVID_RECT(iName, iTo, iIndex, iN)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: (iIndex%iN)/iN 0.0; to: iTo; } \
+ rel2 { relative: (iIndex%iN+1)/iN 1.0; to: iTo; } \
+ color: 0 0 0 0;\
+ } \
+} \
+
+#define PART_CLIPPER_RECT(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: iR1x iR1y; to: iR1t; } \
+ rel2 { relative: iR2x iR2y; to: iR2t; } \
+ color: 255 255 255 255;\
+ } \
+} \
+
+/***********************************************************************/
+/* mouse event filter layer */
+#define PART_EVENT_RECT(iName, iTo)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 1;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 0.0; to: iTo; } \
+ rel2 { relative: 1.0 1.0; to: iTo; } \
+ color: 0 0 0 0;\
+ } \
+} \
+
+/***********************************************************************/
+/* content layer */
+#define PART_COLOR_RECT(iName, iTo, iCr, iCg, iCb, iCa)\
+part {\
+ name: iName;\
+ type: RECT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 0.0; to: iTo; } \
+ rel2 { relative: 1.0 1.0; to: iTo; } \
+ color: iCr iCg iCb iCa;\
+ } \
+} \
+
+#define PART_IMAGE(iName, iTo, iImage)\
+part {\
+ name: iName;\
+ type: IMAGE;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 0.0; to: iTo; } \
+ rel2 { relative: 1.0 1.0; to: iTo; } \
+ image.normal : iImage;\
+ } \
+} \
+
+#define PART_IMAGE_REL(iName, iImage, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+PART_RECT("_"iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+PART_IMAGE(iName, "_"iName, iImage)\
+
+#define PART_BORDER_IMAGE(iName, iTo, iImage, iBl, iBr, iBt, iBb)\
+part {\
+ name: iName;\
+ type: IMAGE;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 0.0; to: iTo; } \
+ rel2 { relative: 1.0 1.0; to: iTo; } \
+ image.normal : iImage;\
+ image.border : iBl iBr iBt iBb;\
+ } \
+} \
+
+#define PART_SWALLOW(iName, iTo)\
+part {\
+ name: iName;\
+ type: SWALLOW;\
+ mouse_events: 1;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 0.0; to: iTo; } \
+ rel2 { relative: 1.0 1.0; to: iTo; } \
+ } \
+} \
+
+#define PART_SWALLOW_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+PART_RECT("_"iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+PART_SWALLOW(iName, "_"iName)\
+
+#define PART_UNVISIBLE_SWALLOW(iName, iTo)\
+part {\
+ name: iName;\
+ type: SWALLOW;\
+ mouse_events: 1;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ visible: 0;\
+ rel1 { relative: 0.0 0.0; to: iTo; } \
+ rel2 { relative: 1.0 1.0; to: iTo; } \
+ } \
+} \
+
+#define PART_UNVISIBLE_SWALLOW_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+PART_RECT("_"iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+PART_UNVISIBLE_SWALLOW(iName, "_"iName)\
+
+#define PART_CLIPPED_SWALLOW(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t,\
+ iAx, iAy, iCliper)\
+part {\
+ name: iName;\
+ type: SWALLOW;\
+ mouse_events: 0;\
+ scale: 1;\
+ clip_to: iCliper;\
+ description {\
+ state: "default" 0.0;\
+ align: iAx iAy;\
+ fixed: 1 1;\
+ rel1 { relative: iR1x iR1y; to: iR1t; } \
+ rel2 { relative: iR2x iR2y; to: iR2t; } \
+ } \
+} \
+
+#define PART_TEXT(iName, iTo, iText, iFont, iSize,\
+ iAx, iAy, iCr, iCg, iCb, iCa)\
+part {\
+ name: iName;\
+ type: TEXT;\
+ mouse_events: 0;\
+ scale: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 0.0; to: iTo; } \
+ rel2 { relative: 1.0 1.0; to: iTo; } \
+ color: iCr iCg iCb iCa;\
+ text {\
+ text: iText;\
+ font: iFont;\
+ size: iSize;\
+ align: iAx iAy;\
+ } \
+ } \
+} \
+
+#define PART_TEXT_REL(iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t,\
+ iText, iFont, iSize, iAx, iAy, iCr, iCg, iCb, iCa)\
+PART_RECT("_"iName, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+PART_TEXT(iName, "_"iName, iText, iFont, iSize, iAx, iAy, iCr, iCg, iCb, iCa)\
+
+/***********************************************************************/
+/* script */
+#define SCRIPT_CUSTOM_PART(iPart)\
+custom_state(PPART#iPart, "default", 0.0);\
+set_state(PPART#iPart, "custom", 0.0)
+
+#define SCRIPT_SET_REL(iPart, iR1x, iR1y, iR1t, iR2x, iR2y, iR2t)\
+set_state_val(PPART#iPart, STATE_REL1, iR1x, iR1y);\
+set_state_val(PPART#iPart, STATE_REL1_TO, PPART#iR1t, PPART#iR1t);\
+set_state_val(PPART#iPart, STATE_REL2, iR2x, iR2y);\
+set_state_val(PPART#iPart, STATE_REL2_TO, PPART#iR2t, PPART#iR2t)\
+
+#define SCRIPT_SET_VISIBLE(iPart, iV)\
+set_state_val(PPART#iPart, STATE_VISIBLE, iV)
+
+#define SCRIPT_SET_IMAGE(iPart, iV)\
+set_state_val(PPART#iPart, STATE_IMAGE, PIMAGE#iV)
+
+/***********************************************************************/
+/* program */
+#define PROGRAM_STATE_SET(isignal, isource, itarget, istate)\
+program {\
+ name: #isource#isignal;\
+ source: #isource;\
+ signal: #isignal;\
+ action: STATE_SET #istate 0.0;\
+ target: #itarget;\
+} \
+
+#define PROGRAM_SET_VISIBLE(isignal, isource, iPart, iV)\
+program {\
+ name: #isource#isignal;\
+ source: #isource;\
+ signal: #isignal;\
+ script {\
+ SCRIPT_SET_VISIBLE(iPart, iV);\
+ } \
+} \
+
+#define PROGRAM_SET_IMAGE(iname, isignal, isource, iPart, image)\
+program {\
+ name: iname;\
+ source: isource;\
+ signal: isignal;\
+ script {\
+ set_state_val(PPART#iPart, STATE_IMAGE, PIMAGE#image);\
+ } \
+} \
+
+#define PROGRAM_SET_INT(iname, isignal, isource, var, value)\
+program {\
+ name: iname;\
+ source: isource;\
+ signal: isignal;\
+ script {\
+ set_int(var, value);\
+ } \
+} \
+
+#endif /* __CALENDAR_EXTENDED_EDC_H__ */
--- /dev/null
+group{
+ name: "color_selector";
+ parts{
+ part {
+ name: "bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "rect.up";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 0.36; to: "bg"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "border.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 300 90;
+ align: 0.5 0.5;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "rect.up"; }
+ rel2 { relative: 0.5 0.5; to: "rect.up"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "border";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "border.bg"; }
+ rel2 { relative: 1.0 1.0; to: "border.bg"; }
+ color: 0 0 0 255;
+ }
+ }
+
+ part {
+ name: "color.bg";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: (300-4) (90-4);
+ align: 0.5 0.5;
+ fixed: 1 1;
+ rel1 { relative: 0.5 0.5; to: "rect.up"; }
+ rel2 { relative: 0.5 0.5; to: "rect.up"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "elm.swallow.color";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "color.bg"; }
+ rel2 { relative: 1.0 1.0; to: "color.bg"; }
+ }
+ }
+
+ part {
+ name: "event";
+ type: RECT;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "rect.up"; }
+ rel2 { relative: 1.0 1.0; to: "rect.up"; }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "elm.swallow.selector";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 { relative: 4/480 0.36; to: "bg"; }
+ rel2 { relative: (480-4)/480 1.0; to: "bg"; }
+ //rel2 { relative: (480-4)/480 0.7; to: "bg"; }
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+#define WIDTH_OF_CALENDAR_VIEW 720
+#define HEIGHT_OF_CALENDAR_VIEW 1280
+
+#define LINE_HIGHT 2
+
+#define HEIGHT_OF_SELECTOR_BASE 765
+#define HEIGHT_OF_SELECTOR_BUTTON_BASE 110
+#define SELECTOR_BUTTON_UP_PADDING 10
+#define SELECTOR_BUTTON_DOWN_PADDING 10
+#define SELECTOR_BUTTON_LEFT_PADDING 550
+#define SELECTOR_BUTTON_RIGHT_PADDING 10
+
+#define HEIGHT_OF_NAVIFRAME 100
+
+group { name, "acct";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ visible, 0;
+ }
+ }
+
+ part { name, "line";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ min:0 1;
+ fixed: 0 1;
+ rel1 {
+ relative, 0.0 0;
+ to, "base";
+ }
+ rel2 {
+ relative, 1.0 (LINE_HIGHT)/HEIGHT_OF_CALENDAR_VIEW;
+ to, "base";
+ }
+ color, COLOR_OF_LINE_FOR_ACCT;
+ }
+ }
+
+ part { name, "sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.0 1.0;
+ to, "line";
+ }
+ rel2.to, "base";
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+group { name, "edit";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ visible, 0;
+ }
+ }
+ part { name, "sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ }
+ }
+ part {
+ name: "toolbar";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 78;
+ fixed: 0 1;
+ align: 0.5 1.0;
+ rel1 { relative: 0.0 1.0; }
+ rel2 { relative: 1.0 1.0; offset: -1 -1;}
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+#define IMAGE(_name) \
+group { name, _name; \
+ images { \
+ image, _name COMP; \
+ } \
+ parts { \
+ part { name, "base"; \
+ description { \
+ state, "default" 0.0; \
+ image.normal, _name; \
+ } \
+ } \
+ } \
+}
+
+IMAGE(NAVI_ICON_NEW)
+IMAGE(NAVI_ICON_EDIT)
+IMAGE(NAVI_ICON_DELETE)
+IMAGE(LIST_PHOTO_DEFAUT)
+IMAGE(HEADER_ICON_ADD)
+IMAGE(HEADER_ICON_OTHERS)
+IMAGE(HEADER_ICON_DONE)
+IMAGE(BG)
+IMAGE(TAB_BG)
+IMAGE(TAB_DEFAULT)
+IMAGE(TAB_PRESS)
+IMAGE(NAVIBAR_ITEM_SEPARATOR_TEMP)
+IMAGE(CONTROL_TOP_BG)
+IMAGE(TITLE_BG)
+
+
+
+
+
--- /dev/null
+group { name, "dialoguegroup/weekly";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 140;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bottom_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 10;
+ fixed, 0 1;
+ rel1 { relative, 0.0 1.0; to, "base"; }
+ rel2.to, "base";
+ align, 0.5 1.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "text_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "content"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 0.5;
+ to_x, "content"; to_y, "base";
+ }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 0.5;
+ to_x, "right_padding"; to_y, "base";
+ }
+ }
+ }
+ part { name, "content";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 0.5;
+ to_x, "left_padding"; to_y, "base";
+ }
+ }
+ }
+ part { name, "content2";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 0.0;
+ to_x, "right_padding"; to_y, "bottom_padding";
+ }
+ align, 0.5 0.5;
+ }
+ }
+ }
+}
+
+group { name, "dialoguegroup/radio";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 74;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "content"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 0.5;
+ to_x, "content"; to_y, "base";
+ }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "right_padding"; to_y, "base";
+ }
+ text {
+ font, "SLP:style=Roman";
+ size, 40;
+ min, 0 0;
+ align, 0.0 0.5;
+ }
+ color, 0 0 0 255;
+ }
+ }
+
+ part { name, "datefield";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "right_padding"; to_y, "base";
+ }
+ }
+ }
+
+ part { name, "content";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 1.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ }
+ }
+
+ }
+}
+
+
+group { name, "dialoguegroup/alarm/custom";
+
+ images {
+ image, DIALOG_EDIT_DEFAULT COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 169;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 15 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bottom_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 16;
+ fixed, 0 1;
+ rel1 { relative, 0.0 1.0; to, "base"; }
+ rel2.to, "base";
+ align, 0.5 1.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "text_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "content"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 0.5;
+ to_x, "content"; to_y, "base";
+ }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 0.5;
+ to_x, "right_padding"; to_y, "base";
+ }
+ text {
+ font, "SLP:style=Roman";
+ size, 32;
+ min, 0 0;
+ align, 0.0 0.5;
+ }
+ color, 0 0 0 255;
+ }
+ }
+ part { name, "content";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 0.5;
+ to_x, "left_padding"; to_y, "base";
+ }
+ }
+ }
+ part { name, "base/custom";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "text_left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 0.0;
+ to_x, "right_padding"; to_y, "bottom_padding";
+ }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "input_bg";
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 80 0;
+ fixed, 1 0;
+ rel1.to, "base/custom";
+ rel2 { relative, 0.0 1.0; to, "base/custom"; }
+ image {
+ normal, "01_dialoguegroup_edit_default.png";
+ border, 13 13 9 14;
+ border_scale, 1;
+ }
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "input_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1.to, "input_bg";
+ rel2 { relative, 0.0 1.0; to, "input_bg"; }
+ color, 0 0 0 0;
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "input_sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 1.0 0.0; to, "input_left_padding"; }
+ rel2.to, "input_bg";
+ }
+ }
+ part { name, "button_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "input_bg"; }
+ rel2 { relative, 1.0 1.0; to, "input_bg"; }
+ align, 0.0 0.5;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "button";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 120 0;
+ fixed, 1 1;
+ rel1 { relative, 1.0 0.5; to, "button_left_padding"; }
+ rel2 { relative, 1.0 0.5; to, "button_left_padding"; }
+ align, 0.0 0.5;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text_left_padding2";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "button"; }
+ rel2 { relative, 1.0 1.0; to, "button"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text2";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "text_left_padding2"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "right_padding"; to_y, "base";
+ }
+ text {
+ font, "SLP:style=Roman";
+ size, 32;
+ min, 0 0;
+ align, 0.0 0.5;
+ }
+ color, 0 0 0 255;
+ }
+ }
+ }
+}
+
+group { name, "dialoguegroup/alarm/custom2";
+
+ images {
+ image, "01_dialoguegroup_edit_default.png" COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 74;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bottom_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 5;
+ fixed, 0 1;
+ rel1 { relative, 0.0 1.0; to, "base"; }
+ rel2.to, "base";
+ align, 0.5 1.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "content"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to_x, "content"; to_y, "base";
+ }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ min, 200 0;
+ fixed, 1 0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 1.0;
+ to_x, "text_left_padding"; to_y, "base";
+ }
+ }
+ }
+ part { name, "text_right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to_x, "text"; to_y, "base";
+ }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "content";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 1.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "base/custom";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_right_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "right_padding"; to_y, "base";
+ }
+ color, 0 0 0 0;
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "input_bg";
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 80 60;
+ fixed, 1 0;
+ rel1.to, "base/custom";
+ rel2 { relative, 0.0 1.0; to, "base/custom"; }
+ image {
+ normal, "01_dialoguegroup_edit_default.png";
+ border, 13 13 9 14;
+ border_scale, 1;
+ }
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "input_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 0;
+ fixed, 1 0;
+ rel1 { relative, 0.0 0.0; to, "input_bg"; offset, 2 0; }
+ rel2 { relative, 0.0 1.0; to, "input_bg"; }
+ color, 0 0 0 0;
+ align, 0.0 0.5;
+ }
+ }
+
+ part { name, "input_sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 1.0 0.0; to, "input_left_padding"; }
+ rel2 { relative, 1.0 1.0; to, "input_bg"; }
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "button_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "input_bg"; }
+ rel2 { relative, 1.0 1.0; to, "input_bg"; }
+ align, 0.0 0.5;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "button";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 120 74;
+ fixed, 1 1;
+ rel1 { relative, 1.0 0.5; to, "button_left_padding"; }
+ rel2 { relative, 1.0 0.5; to, "button_left_padding"; }
+ align, 0.0 0.5;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text_left_padding2";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "button"; }
+ rel2 { relative, 1.0 1.0; to, "button"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text2";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_left_padding2"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "right_padding"; to_y, "base";
+ }
+ }
+ }
+ }
+}
+
+
+group { name, "dialoguegroup/until";
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 60;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bottom_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 10;
+ fixed, 0 1;
+ rel1 { relative, 0.0 1.0; to, "base"; }
+ rel2.to, "base";
+ align, 0.5 1.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "content";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 1.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "content2_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to_x, "content"; to_y, "base";}
+ rel2 { relative, 1.0 1.0; to_x, "content"; to_y, "base";}
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "content2";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ //min, 180 0;
+ //fixed, 1 1;
+ rel1 { relative, 1.0 0.0; to_x, "content2_left_padding"; to_y, "base";}
+ rel2 { relative, 0.0 1.0; to_x, "right_padding"; to_y, "base";}
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ }
+}
+
+
+
+group { name, "dialoguegroup/repeat/times";
+
+ images {
+ image, "01_dialoguegroup_edit_default.png" COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 50;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "text_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "content"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 0.5;
+ to_x, "content"; to_y, "base";
+ }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "base/custom";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "right_padding"; to_y, "base";
+ }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "input_bg";
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 80 6;
+ fixed, 1 1;
+ rel1.to, "base/custom";
+ rel2 { relative, 0.0 1.0; to, "base/custom"; }
+ image {
+ normal, "01_dialoguegroup_edit_default.png";
+ border, 13 13 9 14;
+ border_scale, 1;
+ }
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "input_left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1.to, "input_bg";
+ rel2 { relative, 0.0 1.0; to, "input_bg"; }
+ color, 0 0 0 0;
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "input_sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 1.0 0.0; to, "input_left_padding"; }
+ rel2.to, "input_bg";
+ }
+ }
+ part { name, "content";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 1.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ }
+ }
+
+ part { name, "text_left_padding2";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "input_sw"; }
+ rel2 { relative, 1.0 1.0; to, "input_sw"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "text";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text_left_padding2"; to_y, "content";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "right_padding"; to_y, "content";
+ }
+ }
+ }
+
+ }
+}
+
+
+group { name, "dialoguegroup/repeat/date";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 84;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 15 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "content";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 1.0;
+ to_x, "left_padding"; to_y, "base";
+ }
+ }
+ }
+ part { name, "content_right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to_x, "content";to_y, "base"; }
+ rel1 { relative, 1.0 1.0; to_x, "content";to_y, "base"; }
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "content2";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 0.0 0.5;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "content_right_padding"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 1.0;
+ to_x, "base"; to_y, "base";
+ }
+ }
+ }
+ }
+}
+
+
+
+group { name, "dialoguegroup/swallow";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "pad/top_left";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 15 25;
+ fixed, 1 1;
+ rel1.to, "base";
+ rel2 { relative, 0.0 0.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "pad/bottom_right";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 15 25;
+ fixed, 1 1;
+ rel1 { relative , 1.0 1.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 1.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "content";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ align, 1.0 0.5;
+ rel1 {
+ relative, 1.0 1.0;
+ to, "pad/top_left";
+ }
+ rel2 {
+ relative, 0.0 0.0;
+ to, "pad/bottom_right";
+ }
+ }
+ }
+ }
+}
+
+group { name, "dialoguegroup/textblock";
+
+ styles {
+ style { name, "dialoguegroup_textblock";
+ base, "font=SLP:style=Roman font_size=28 color=#000000ff wrap=char";
+ tag, "br" "\n";
+ tag, "ps" "ps";
+ tag, "hilight" "+ font=SLP:style=Bold";
+ tag, "b" "+ font=SLP:style=Bold";
+ tag, "tab" "\t";
+ }
+ style { name, "dialoguegroup_textblock_white";
+ base, "font=SLP:style=Roman font_size=28 color=#ffffffff wrap=char";
+ tag, "br" "\n";
+ tag, "ps" "ps";
+ tag, "hilight" "+ font=SLP:style=Bold";
+ tag, "b" "+ font=SLP:style=Bold";
+ tag, "tab" "\t";
+ }
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ min, 0 80;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 15 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 15 0;
+ fixed, 1 0;
+ rel1 { relative , 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "top_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 10;
+ fixed, 0 1;
+ rel1.to, "base";
+ rel2 { relative, 1.0 0.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bottom_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 10;
+ fixed, 0 1;
+ rel1 { relative , 0.0 1.0; to, "base"; }
+ rel2.to, "base";
+ align, 0.0 1.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "text";
+ type, TEXTBLOCK;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ align, 1.0 0.5;
+ rel1 {
+ relative, 1.0 1.0;
+ to_x, "left_padding";
+ to_y, "top_padding";
+ }
+ rel2 {
+ relative, 0.0 0.0;
+ to_x, "right_padding";
+ to_y, "bottom_padding";
+ }
+ text {
+ style, "dialoguegroup_textblock";
+ min, 1 0;
+ }
+ }
+ description {
+ state, "pressed" 0.0;
+ inherit, "default" 0.0;
+ text.style, "dialoguegroup_textblock_white";
+ }
+ }
+
+ part { name, "evt";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ color, 0 0 0 0;
+ }
+ }
+ }
+
+ programs {
+ program { name, "text/down";
+ signal, "mouse,down,1";
+ source, "evt";
+ action, STATE_SET "pressed" 0.0;
+ target, "text";
+ }
+ program { name, "text/up";
+ signal, "mouse,up,1";
+ source, "evt";
+ action, STATE_SET "default" 0.0;
+ target, "text";
+ }
+ }
+}
+
+group { name, "dialoguegroup/location";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "pad/right";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 15 0;
+ fixed, 1 0;
+ rel1 { relative , 1.0 1.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 1.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "editfield/sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ align, 1.0 0.5;
+ rel1.to, "base";
+ rel2.to, "base";
+ }
+ }
+ }
+}
+
+//base 690x850
+//HD size 720x1280
+#define HEIGHT_OF_LIST_VIEW 920
+
+
+group { name, "list/base";
+
+ parts {
+
+ part { name, "base";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ align: 0.0 0.0;
+ }
+ }
+
+ part {name, "searchbar";
+ type, SWALLOW;
+ mouse_events, 1;
+ scale, 1;
+ description {
+ state: "default" 0.0;
+ min: 460 106;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "base";}
+ rel2 { relative: 1.0 0.0; to: "base";}
+ visible, 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ align: 0.0 0.0;
+ rel1 { relative: 0.0 0.0; to: "base";}
+ rel2 { relative: 0.0 0.0; to: "base";}
+ visible: 0;
+ }
+ }
+
+ part { name, "sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1 { relative: 0.0 1.0; to: "searchbar"; }
+ rel2.to, "base";
+ visible, 1;
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "show";
+ signal: "searchbar,show";
+ action: STATE_SET "default" 0.0;
+ target: "searchbar";
+ source: "prog";
+ }
+ program {
+ name: "hide";
+ signal: "searchbar,hide";
+ action: STATE_SET "hide" 0.0;
+ target: "searchbar";
+ source: "prog";
+ }
+ }
+}
+
+group { name, "rect/empty";
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 20;
+ }
+ }
+ }
+}
+
+
+group { name, "dialoguegroup/allday";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 100;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name: "elm.padding.icon.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 10 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "content";
+ }
+ rel2.to_x: "content";
+ align: 1.0 0.0;
+ }
+ }
+ part { name: "content";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 0;
+ to_x: "right_padding";
+ to_y: "base";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "right_padding";
+ to_y: "base";
+ }
+ }
+ }
+ part { name: "text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: 0 0;
+ to_x: "left_padding";
+ to_y: "base";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "elm.padding.icon.left";
+ to_y: "base";
+ }
+ color: 0 0 0 255;
+ text {
+ font: "SLP:style=Roman";
+ size: 40;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ }
+
+
+ }
+}
+
+group {
+ name: "ug_effect_sample";
+ parts {
+ part {
+ name: "clip";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 1 0; }
+ rel2 { relative: 2 1; }
+ color: 255 255 255 0;
+ }
+ description {
+ state: "show" 0.0;
+ rel1 { relative: 0 0; }
+ rel2 { relative: 1 1; }
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clip";
+ description {
+ rel1.to: "clip";
+ rel2.to: "clip";
+ }
+ }
+ part {
+ name: "event_blocker";
+ description {
+ state: "default" 0.0;
+ rel1.to: "clip";
+ rel2.to: "clip";
+ visible: 1;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "show";
+ signal: "elm,state,show";
+ action: STATE_SET "show" 0.0;
+ target: "clip";
+ target: "event_blocker";
+ transition: "DECELERATE" 1.2;
+ after: "show_end";
+ }
+
+ program {
+ name: "hide";
+ signal: "elm,state,hide";
+ action: STATE_SET "default" 0.0;
+ target: "clip";
+ target: "event_blocker";
+ transition: "DECELERATE" 1.0;
+ after: "hide_end";
+ }
+ program {
+ name: "disable_event_blocker";
+ signal: "elm,state,blocker,disabled";
+ action: STATE_SET "disabled" 0.0;
+ target: "event_blocker";
+ }
+ program {
+ name: "disable_blocker";
+ action: SIGNAL_EMIT "elm,state,blocker,disabled" "";
+ }
+ program {
+ name: "show_end";
+ action: SIGNAL_EMIT "elm,action,show,finished" "";
+ after: "disable_blocker";
+ }
+ program {
+ name: "hide_end";
+ action: SIGNAL_EMIT "elm,action,hide,finished" "";
+ after: "disable_blocker";
+ }
+ }
+}
+
+group { name: "popup_center_text_progressview";
+ parts{
+ part { name: "pad_t";
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.0;
+ min: 0 14;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "pad_l";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "pad_r";
+ }
+ }
+ }
+ part { name: "pad_l";
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 10 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part { name: "pad_r";
+ scale: 1;
+ description { state: "default" 0.0;
+ min : 10 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ align: 1.0 0.0;
+ }
+ }
+ part{ name:"elm.swallow.content";
+ type: SWALLOW;
+ scale : 1;
+ description { state: "default" 0.0;
+ min: 300 0;
+ align: 0.5 0.5;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.5 1.0;
+ to: "pad_t";
+ }
+ rel2 {
+ relative: 0.5 0.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_b";
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ min: 0 90;
+ fixed: 0 1;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "pad_l";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "pad_r";
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ type: SWALLOW;
+ scale : 1;
+ mouse_events: 1;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "pad_bm";
+ scale : 1;
+ mouse_events: 0;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ align: 0.0 1.0;
+ min: 0 52;
+ fixed: 0 1;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "pad_b";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_b";
+ }
+ }
+ }
+ part { name: "elm.text.subtext1";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "SLP:style=Medium";
+ size: 16;
+ min: 0 0;
+ align: 0.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_bm";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_bm";
+ }
+ }
+ }
+ part { name: "elm.text.subtext2";
+ type: TEXT;
+ scale : 1;
+ description { state: "default" 0.0;
+ text {
+ font: "SLP:style=Medium";
+ size: 16;
+ min: 0 0;
+ align: 1.0 1.0;
+ }
+ color: 108 108 108 255;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "pad_bm";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "pad_bm";
+ }
+ }
+ }
+ }
+}
+
+group { name, "dialoguegroup/datetime";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 100;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "left_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 30 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 {
+ relative: 0.0 1.0;
+ to: "base";
+ }
+ align, 0.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "right_padding";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 30 0;
+ fixed, 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "base";
+ }
+ rel2.to, "base";
+ align, 1.0 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 50 20;
+ fixed: 1 1;
+ visible: 1;
+ rel1 {
+ relative: 0.0 0.1;
+ to_x: "left_padding";
+ }
+ rel2 {
+ relative: 1.0 0.1;
+ to_y: "left_padding";
+ }
+ align: 0.0 0.2;
+ color: 165 165 165 255;
+ text {
+ font: "SLP:style=Roman";
+ size: 33;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ }
+ part { name: "elm.icon";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 1.0 0.5;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "left_padding";
+ to_y: "elm.text";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 0 0;
+ to_x: "right_padding";
+ to_y: "base";
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+// 480 x 920
+//origin size 480x800
+//HD size 720x1280
+#define HD_SCALE 800/1280
+#define WIDTH_OF_DAY_VIEW 480
+#define HEIGHT_OF_DAY_VIEW 855*HD_SCALE
+
+group { name, "main/day";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "list/sw";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2 { relative, 1.0 0.0; to, "base"; }
+ align, 0.5 0.0;
+ }
+ description {
+ state, "line1" 0.0;
+ inherit, "default" 0.0;
+ min, 0 120;
+ fixed, 0 1;
+ }
+ description {
+ state, "line2" 0.0;
+ inherit, "default" 0.0;
+ min, 0 240;
+ fixed, 0 1;
+ }
+ }
+ part { name, "cont/sw";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 1.0; to_x, "base"; to_y, "list/sw"; }
+ rel2.to, "base";
+ align, 0.5 0.0;
+ }
+ }
+ part { name, "line/top";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ min, 0 2;
+ fixed, 0 1;
+ rel1.to, "base";
+ rel2 { relative, 1.0 0.0; to, "base"; }
+ color, COLOR_OF_TOP_LINE_FOR_DAY;
+ align, 0.5 0.5;
+ }
+ }
+ }
+
+ programs {
+ program { name, "list/line0";
+ signal, "go,line0";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "list/sw";
+ transition, SINUSOIDAL 0.5;
+ }
+ program { name, "list/line1";
+ signal, "go,line1";
+ source, "prog";
+ action, STATE_SET "line1" 0.0;
+ target, "list/sw";
+ transition, SINUSOIDAL 0.5;
+ }
+ program { name, "list/line2";
+ signal, "go,line2";
+ source, "prog";
+ action, STATE_SET "line2" 0.0;
+ target, "list/sw";
+ transition, SINUSOIDAL 0.5;
+ }
+ }
+}
--- /dev/null
+/*
+#define ANI_TIME 0.3
+
+#define TIMEBLOCK(_pos, _prev, _alpha) \
+ part { name, "tb/base/"_pos; \
+ type, RECT; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ min, 0 140; \
+ fixed, 0 1; \
+ rel1 { \
+ relative, 0.0 1.0; \
+ to_x, "base"; to_y, "tb/base/"_prev; \
+ } \
+ rel2 { \
+ relative, 1.0 1.0; \
+ to_x, "base"; to_y, "tb/base/"_prev; \
+ } \
+ color, 0 0 0 0; \
+ align, 0.5 0.0; \
+ } \
+ description { \
+ state, "shrink" 0.0; \
+ inherit, "default" 0.0; \
+ min, 0 10; \
+ } \
+ } \
+ part { name, "tb/bg/"_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "tb/base/"_pos; \
+ rel2.to, "tb/base/"_pos; \
+ color, 0 0 0 _alpha; \
+ } \
+ } \
+ part { name, "tb/text/base/"_pos; \
+ type, RECT; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ min, 130 0; \
+ fixed, 1 0; \
+ rel1.to, "tb/base/"_pos; \
+ rel2 { relative, 0.0 1.0; to, "tb/base/"_pos; } \
+ align, 0.0 0.5; \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "tb/text/"_pos; \
+ type, TEXT; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "tb/text/base/"_pos; \
+ rel2.to, "tb/text/base/"_pos; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 30; \
+ align, 0.6 0.0; \
+ } \
+ color, 0 0 0 255; \
+ } \
+ description { \
+ state, "shrink" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 0; \
+ } \
+ } \
+ part { name, "tb/line/hori/"_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ min, 0 1; \
+ fixed, 0 1; \
+ rel1 { \
+ relative, 0.0 1.0; offset, 0 -1; \
+ to, "tb/base/"_pos; \
+ } \
+ rel2.to, "tb/base/"_pos; \
+ color, COLOR_OF_BASE_OF_LINE_FOR_TAB; \
+ align, 0.5 0.0; \
+ } \
+ } \
+ part { name, "tb/line/vert/"_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ min, 1 0; \
+ fixed, 1 0; \
+ rel1 { \
+ relative, 1.0 0.0; \
+ to, "tb/text/base/"_pos; \
+ } \
+ rel2 { \
+ relative, 1.0 1.0; \
+ to, "tb/text/base/"_pos; \
+ } \
+ color, COLOR_OF_BASE_OF_LINE_FOR_TAB; \
+ align, 1.0 0.5; \
+ } \
+ } \
+ part { name, "tb/sel/"_pos; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, 1.0 0.0; \
+ to_x, "tb/text/base/"_pos; to_y, "tb/base/"_pos; \
+ } \
+ rel2.to, "tb/base/"_pos; \
+ image { \
+ normal, CALENDAR_SELSECTED; \
+ border, 3 3 3 3; \
+ border_scale, 1; \
+ } \
+ visible, 0; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "tb/evtbase/"_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, 1.0 0.0; \
+ to_x, "tb/text/base/"_pos; to_y, "tb/base/"_pos; \
+ } \
+ rel2 { relative, 1.0 0.5; to, "tb/base/"_pos; } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "tb/evt/"_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "tb/base/"_pos; \
+ rel2.to, "tb/base/"_pos; \
+ color, 0 0 0 0; \
+ } \
+ description { \
+ state, "shrink" 0.0; \
+ inherit, "default" 0.0; \
+ color, 0 0 0 0; \
+ visible, 0; \
+ } \
+ } \
+ programs { \
+ program { name, "base/extend/"_pos; \
+ signal, "extend,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ transition, SINUSOIDAL ANI_TIME; \
+ target, "tb/base/"_pos; \
+ target, "tb/text/"_pos; \
+ target, "tb/evt/"_pos; \
+ } \
+ program { name, "base/shrink/"_pos; \
+ signal, "shrink,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "shrink" 0.0; \
+ transition, SINUSOIDAL ANI_TIME; \
+ target, "tb/base/"_pos; \
+ target, "tb/text/"_pos; \
+ target, "tb/evt/"_pos; \
+ } \
+ program { name, "tb/down/"_pos; \
+ signal, "mouse,down,1"; \
+ source, "tb/evt/"_pos; \
+ action, SIGNAL_EMIT "dn,"#_pos "edj"; \
+ } \
+ program { name, "tb/up/"_pos; \
+ signal, "mouse,up,1"; \
+ source, "tb/evt/"_pos; \
+ action, SIGNAL_EMIT "up,"#_pos "edj"; \
+ } \
+ program { name, "tb/select/"_pos; \
+ signal, "select,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "tb/sel/"_pos; \
+ } \
+ program { name, "tb/unselect/"_pos; \
+ signal, "unselect,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "tb/sel/"_pos; \
+ } \
+ }
+
+#define TBASE_DESC(_h) \
+ description { \
+ state, "height/"_h 0.0; \
+ inherit, "default" 0.0; \
+ min, 0 (130 * _h); \
+ }
+
+#define TBASE_PROG(_h) \
+ program { name, "base/"_h; \
+ signal, "go,"_h; \
+ source, "prog"; \
+ action, STATE_SET "height/"_h 0.0; \
+ transition, SINUSOIDAL ANI_TIME; \
+ target, "base"; \
+ after, "base/end"; \
+ }
+
+group { name, "main/day/tb/layout";
+
+ images {
+ image, "calendar_selected.png" COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 (130 * 24);
+ color, 0 0 0 0;
+ }
+ TBASE_DESC( 1) TBASE_DESC( 2) TBASE_DESC( 3) TBASE_DESC( 4)
+ TBASE_DESC( 5) TBASE_DESC( 6) TBASE_DESC( 7) TBASE_DESC( 8)
+ TBASE_DESC( 9) TBASE_DESC(10) TBASE_DESC(11) TBASE_DESC(12)
+ TBASE_DESC(13) TBASE_DESC(14) TBASE_DESC(15) TBASE_DESC(16)
+ TBASE_DESC(17) TBASE_DESC(18) TBASE_DESC(19) TBASE_DESC(20)
+ TBASE_DESC(21) TBASE_DESC(22) TBASE_DESC(23) TBASE_DESC(24)
+ }
+ programs {
+ TBASE_PROG( 1) TBASE_PROG( 2) TBASE_PROG( 3) TBASE_PROG( 4)
+ TBASE_PROG( 5) TBASE_PROG( 6) TBASE_PROG( 7) TBASE_PROG( 8)
+ TBASE_PROG( 9) TBASE_PROG(10) TBASE_PROG(11) TBASE_PROG(12)
+ TBASE_PROG(13) TBASE_PROG(14) TBASE_PROG(15) TBASE_PROG(16)
+ TBASE_PROG(17) TBASE_PROG(18) TBASE_PROG(19) TBASE_PROG(20)
+ TBASE_PROG(21) TBASE_PROG(22) TBASE_PROG(23) TBASE_PROG(24)
+
+ program { name, "base/end";
+ action, SIGNAL_EMIT "end,animation" "edj";
+ }
+ }
+
+ part { name, "tb/base/99";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2 { relative, 1.0 0.0; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+
+ TIMEBLOCK( 0, 99, 0)
+ TIMEBLOCK( 1, 0, 0)
+ TIMEBLOCK( 2, 1, 0)
+ TIMEBLOCK( 3, 2, 0)
+ TIMEBLOCK( 4, 3, 0)
+ TIMEBLOCK( 5, 4, 0)
+ TIMEBLOCK( 6, 5, 0)
+ TIMEBLOCK( 7, 6, 0)
+ TIMEBLOCK( 8, 7, 0)
+ TIMEBLOCK( 9, 8, 0)
+ TIMEBLOCK(10, 9, 0)
+ TIMEBLOCK(11, 10, 0)
+ TIMEBLOCK(12, 11, 10)
+ TIMEBLOCK(13, 12, 10)
+ TIMEBLOCK(14, 13, 10)
+ TIMEBLOCK(15, 14, 10)
+ TIMEBLOCK(16, 15, 10)
+ TIMEBLOCK(17, 16, 10)
+ TIMEBLOCK(18, 17, 10)
+ TIMEBLOCK(19, 18, 10)
+ TIMEBLOCK(20, 19, 10)
+ TIMEBLOCK(21, 20, 10)
+ TIMEBLOCK(22, 21, 10)
+ TIMEBLOCK(23, 22, 10)
+ }
+}
+*/
+
+group { name, "main/day/tb";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "sw";
+ type, SWALLOW;
+ clip_to, "clip";
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ }
+ }
+ part { name, "clip";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1.to, "sw";
+ rel2.to, "sw";
+ }
+ }
+ }
+}
+
+
+group { name, "main/day/tb/block";
+
+ images {
+ image, "calendar_selected.png" COMP;
+ image, DAY_CURRENT_TIME COMP;
+ image, NOSCHEDULE COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ repeat_events, 1;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bg/ampm";
+ type, RECT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ color, 0 0 0 0;
+ }
+ description {
+ state, "pm" 0.0;
+ inherit, "default" 0.0;
+ color, 0 0 0 10;
+ }
+ }
+ part { name, "bg/sel";
+ mouse_events, 0;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text/base"; to_y, "base";
+ }
+ rel2.to, "base";
+ image {
+ normal, "calendar_selected.png";
+ border, 3 3 3 3;
+ border_scale, 1;
+ }
+ visible, 0;
+ }
+ description {
+ state, "selected" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ }
+ }
+ part { name, "text/base";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 130 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ align, 0.0 0.5;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text";
+ type, TEXT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1.to, "text/base";
+ rel2.to, "text/base";
+ text {
+ font, "SLP:style=Medium";
+ size, 30;
+ align, 0.6 0.0;
+ }
+ color, 0 0 0 255;
+ }
+ description {
+ state, "hide" 0.0;
+ inherit, "default" 0.0;
+ visible, 0;
+ }
+ }
+ part { name, "line/hori";
+ type, RECT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 0 1;
+ fixed, 0 1;
+ rel1 {
+ relative, 1.0 1.0; offset, 0 -1;
+ to_x, "text/base"; to_y, "base";
+ }
+ rel2.to, "base";
+ color, COLOR_OF_HORIZEN_LINE_FOR_TAB;
+ align, 0.5 0.0;
+ }
+ }
+ part { name, "line/hori_mid";
+ type, RECT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 0 1;
+ fixed, 0 1;
+ rel1 {
+ relative, 1.0 0.5; offset, 0 -1;
+ to_x, "text/base"; to_y, "base";
+ }
+ rel2{
+ relative, 1.0 0.5;
+ to, "base";
+ }
+ color, COLOR_OF_MIDDLE_LINE_FOR_TAB;
+ align, 0.5 0.0;
+ }
+ }
+ part { name, "line/vert";
+ type, RECT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 1 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "text/base"; }
+ rel2 { relative, 1.0 1.0; to, "text/base"; }
+ color, COLOR_OF_VERT_LINE_FOR_TAB;
+ align, 1.0 0.5;
+ }
+ }
+ part { name, "evtbase/top";
+ type, RECT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "text/base"; to_y, "base";
+ }
+ rel2 { relative, 1.0 0.5; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "evtbase/bottom";
+ type, RECT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "text/base"; to_y, "base";
+ }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bg/contracted";
+ mouse_events, 0;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 62;
+ fixed, 0 1;
+ rel1 {
+ relative, 1.0 0.0; offset, 0 10;
+ to_x, "text/base"; to_y, "base";
+ }
+ rel2 {
+ relative, 1.0 1.0;offset, 0 -12;
+ to_x, "base"; to_y, "base";
+ }
+ image {
+ normal, "P01_noschedule.png";
+ border, 3 3 3 3;
+ border_scale, 1;
+ }
+ align, 0.5 0.0;
+ visible, 0;
+ }
+ description {
+ state, "contracted" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ }
+ }
+ part { name, "line/on_time";
+ type, RECT;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 0 4;
+ fixed, 0 1;
+ rel1 {
+ relative, 1.0 0.5; offset, 0 -2;
+ to_x, "text/base"; to_y, "base";
+ }
+ rel2{
+ relative, 1.0 0.5;
+ to, "base";
+ }
+ color, COLOR_OF_ON_TIME_LINE_FOR_TAB;
+ align, 0.5 0.0;
+ visible, 0;
+ }
+ description {
+ state, "show" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ }
+ }
+ part { name, "line/on_time/img";
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 9 18;
+ fixed, 1 1;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "text/base"; to_y, "base";
+ }
+ rel2{
+ relative, 1.0 0.5;
+ to_x, "text/base"; to_y, "base";
+ }
+ align, 1.0 0.5;
+ image.normal, "P01_day_current_time.png";
+ visible, 0;
+ }
+ description {
+ state, "show" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ }
+ }
+ }
+ programs {
+ program { name, "tb/down";
+ signal, "mouse,down,1";
+ source, "base";
+ action, SIGNAL_EMIT "dn" "edj";
+ }
+ program { name, "tb/up";
+ signal, "mouse,up,1";
+ source, "base";
+ action, SIGNAL_EMIT "up" "edj";
+ }
+ program { name, "tb/select";
+ signal, "select";
+ source, "prog";
+ action, STATE_SET "selected" 0.0;
+ target, "bg/sel";
+ }
+ program { name, "tb/unselect";
+ signal, "unselect";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "bg/sel";
+ }
+ program { name, "tb/am";
+ signal, "am";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "bg/ampm";
+ }
+ program { name, "tb/pm";
+ signal, "pm";
+ source, "prog";
+ action, STATE_SET "pm" 0.0;
+ target, "bg/ampm";
+ }
+ program { name, "tb/text/show";
+ signal, "show,text";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "text";
+ }
+ program { name, "tb/text/hide";
+ signal, "hide,text";
+ source, "prog";
+ action, STATE_SET "hide" 0.0;
+ target, "text";
+ }
+ program { name, "tb/on_time/show";
+ signal, "show,line";
+ source, "prog";
+ action, STATE_SET "show" 0.0;
+ target, "line/on_time";
+ }
+ program { name, "tb/on_time/show/img";
+ signal, "show,img";
+ source, "prog";
+ action, STATE_SET "show" 0.0;
+ target, "line/on_time/img";
+ }
+ program { name, "tb/on_time/hide";
+ signal, "hide,line";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "line/on_time";
+ }
+ program { name, "tb/on_time/hide/img";
+ signal, "hide,img";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "line/on_time/img";
+ }
+ program { name, "tb/contracted";
+ signal, "contracted";
+ source, "prog";
+ action, STATE_SET "contracted" 0.0;
+ target, "bg/contracted";
+ }
+ program { name, "tb/uncontracted";
+ signal, "uncontracted";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "bg/contracted";
+ }
+ }
+}
+
+
+
+group { name, "main/day/tb/event";
+
+ images {
+ image, CALENDAR_EVENT_BG_1 COMP;
+ image, CALENDAR_EVENT_BG_2 COMP;
+ image, CALENDAR_EVENT_BG_3 COMP;
+ image, CALENDAR_EVENT_BG_4 COMP;
+ }
+
+ styles {
+ style { name, "event_textblock";
+ base, "font=SLP:style=Roman font_size=30 color=#FFFFFFFF wrap=word";
+ tag, "br" "\n";
+ tag, "ps" "ps";
+ tag, "hilight" "+ font=SLP:style=Bold";
+ tag, "b" "+ font=SLP:style=Bold";
+ tag, "tab" "\t";
+ }
+ style { name, "event_textblock_p";
+ base, "font=SLP:style=Roman font_size=30 color=#000000FF wrap=word";
+ tag, "br" "\n";
+ tag, "ps" "ps";
+ tag, "hilight" "+ font=SLP:style=Bold";
+ tag, "b" "+ font=SLP:style=Bold";
+ tag, "tab" "\t";
+ }
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 0 65;
+ fixed, 0 1;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bg/top";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 0 5;
+ fixed, 0 1;
+ rel1.to, "base";
+ rel2 { relative, 1.0 0.0; to, "base"; }
+ color, 0 0 0 0;
+ align, 0.5 0.0;
+ }
+ }
+ part { name, "bg/bottom";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 0 5;
+ fixed, 0 1;
+ rel1 { relative, 0.0 1.0; to, "base"; }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ align, 0.5 1.0;
+ }
+ }
+ part { name, "bg/left";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 2 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ color, 0 0 0 0;
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "bg/right";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 2 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ align, 1.0 0.5;
+ }
+ }
+ part { name, "bg";
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 1.0;
+ to_x, "bg/left"; to_y, "bg/top";
+ }
+ rel2 {
+ relative, 0.0 0.0;
+ to_x, "bg/right"; to_y, "bg/bottom";
+ }
+ image {
+ border, 4 4 4 4;
+ border_scale, 1;
+ normal, "57_calendar_event(1)_bg.png";
+ }
+ color, 255 255 255 200;
+ }
+ description {
+ state, "bg2" 0.0;
+ inherit, "default" 0.0;
+ image.normal, "57_calendar_event(2)_bg.png";
+ }
+ description {
+ state, "bg3" 0.0;
+ inherit, "default" 0.0;
+ image.normal, "57_calendar_event(3)_bg.png";
+ }
+ description {
+ state, "bg4" 0.0;
+ inherit, "default" 0.0;
+ image.normal, "57_calendar_event(4)_bg.png";
+ }
+ }
+ part { name, "text/top";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 0 10;
+ fixed, 0 1;
+ rel1.to, "base";
+ rel2 { relative, 1.0 0.0; to, "base"; }
+ color, 0 0 0 0;
+ align, 0.5 0.0;
+ }
+ }
+ part { name, "text/bottom";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 0 10;
+ fixed, 0 1;
+ rel1 { relative, 0.0 1.0; to, "base"; }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ align, 0.5 1.0;
+ }
+ }
+ part { name, "text/left";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ color, 0 0 0 0;
+ align, 0.0 0.5;
+ }
+ }
+ part { name, "text/right";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 16 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ align, 1.0 0.5;
+ }
+ }
+ part { name, "text";
+ type, TEXTBLOCK;
+ scale, 1;
+ multiline, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 1.0;
+ to_x, "text/left"; to_y, "text/top";
+ }
+ rel2 {
+ relative, 0.0 0.0;
+ to_x, "text/right"; to_y, "text/bottom";
+ }
+ text.style, "event_textblock";
+ }
+ description {
+ state, "down" 0.0;
+ inherit, "default" 0.0;
+ text.style, "event_textblock_p";
+ }
+ }
+ part { name, "evt";
+ type, RECT;
+ repeat_events, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ color, 0 0 0 0;
+ }
+ description {
+ state, "longpressed" 0.0;
+ inherit, "default" 0.0;
+ color, 255 0 0 50;
+ }
+ }
+ }
+
+ programs {
+ program { name, "bg/1";
+ signal, "bg,color0";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "bg";
+ }
+ program { name, "bg/2";
+ signal, "bg,color1";
+ source, "prog";
+ action, STATE_SET "bg2" 0.0;
+ target, "bg";
+ }
+ program { name, "bg/3";
+ signal, "bg,color2";
+ source, "prog";
+ action, STATE_SET "bg3" 0.0;
+ target, "bg";
+ }
+ program { name, "bg/4";
+ signal, "bg,color3";
+ source, "prog";
+ action, STATE_SET "bg4" 0.0;
+ target, "bg";
+ }
+ program { name, "evt/down";
+ signal, "mouse,down,1";
+ source, "evt";
+ action, SIGNAL_EMIT "dn" "edj";
+ }
+ program { name, "evt/up";
+ signal, "mouse,up,1";
+ source, "evt";
+ action, SIGNAL_EMIT "up" "edj";
+ }
+ program { name, "evt/sel";
+ signal, "select";
+ source, "prog";
+ action, STATE_SET "down" 0.0;
+ target, "text";
+ }
+ program { name, "evt/unsel";
+ signal, "unselect";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "text";
+ }
+ program { name, "longpress/on";
+ signal, "longpress,on";
+ source, "prog";
+ action, STATE_SET "longpressed" 0.0;
+ target, "evt";
+ }
+ program { name, "longpress/off";
+ signal, "longpress,off";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "evt";
+ }
+ }
+}
--- /dev/null
+// Main view layout
+#define HEIGHT_OF_MAIN_VIEW 920
+#define WIDTH_OF_MAIN_VIEW 480
+#define HEIGHT_OF_NAVIFRAME 100
+#define HEIGHT_OF_CONTROLBAR 106
+#define HEIGHT_OF_TITLE 55
+#define HEIGHT_OF_TAB 104
+#define WIDTH_OF_TABLBAR 81
+
+group { name, "main";
+
+ images {
+ image, CALENDAR_BG_2 COMP;
+ image, BG COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "bg";
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ image {
+ normal, "P01_bg.png";
+ }
+ }
+ description {
+ state, "left_offset" 0.0;
+ inherit, "default" 0.0;
+ rel1 { relative, (-WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 0.0; to, "base"; }
+ rel2 { relative, (WIDTH_OF_MAIN_VIEW - WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 1.0; to, "base"; }
+ }
+ }
+
+ part { name, "cont/left";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1 { relative, 0.0 0.0; to, base; }
+ rel2 { relative, 0.0 1.0; to, base; }
+ align, 0.0 0.5;
+ color, 0 0 0 0;
+ }
+ description {
+ state, "left_offset" 0.0;
+ inherit, "default" 0.0;
+ rel1 { relative, (-WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 0.0; to, "base"; }
+ rel2 { relative, (-WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 1.0; to, "base"; }
+ }
+ }
+
+ part { name, "cont/right";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 0;
+ fixed, 1 0;
+ rel1 { relative, 1.0 0.0; to, base; }
+ rel2 { relative, 1.0 1.0; to, base; }
+ align, 1.0 0.5;
+ color, 0 0 0 0;
+ }
+ description {
+ state, "left_offset" 0.0;
+ inherit, "default" 0.0;
+ rel1 { relative, (WIDTH_OF_MAIN_VIEW-WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 0.0; to, "base"; }
+ rel2 { relative, (WIDTH_OF_MAIN_VIEW-WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 1.0; to, "base"; }
+ }
+ }
+
+ part { name, "cont";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 1.0;
+ to_x, "cont/left"; to_y, "title";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "cont/right"; to_y, "base";
+ }
+ }
+ description {
+ state, "no_title" 0.0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "cont/left"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "cont/right"; to_y, "base";
+ }
+ }
+ }
+
+ part { name, "title";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 0.0; to, base; }
+ rel2 { relative, 1.0 HEIGHT_OF_TITLE/HEIGHT_OF_MAIN_VIEW; to, base; }
+ align, 0.5 0.0;
+ visible, 1;
+ }
+ description {
+ state, "no_title" 0.0;
+ inherit, "default" 0.0;
+ visible, 0;
+ }
+ description {
+ state, "left_offset" 0.0;
+ inherit, "default" 0.0;
+ rel1 { relative, (-WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 0.0; to, "base"; }
+ rel2 { relative, (WIDTH_OF_MAIN_VIEW-WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW HEIGHT_OF_TITLE/HEIGHT_OF_MAIN_VIEW; to, "base"; }
+ }
+ }
+
+ part {
+ name: "elm.swallow.tabbar";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 1.0 0.0; to: "base";}
+ rel2 { relative: (WIDTH_OF_MAIN_VIEW+WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 1.0; to: "base";}
+ }
+ description {
+ state: "left_offset" 0.0;
+ inherit: "default" 0.0;
+ rel1 { relative: (WIDTH_OF_MAIN_VIEW-WIDTH_OF_TABLBAR)/WIDTH_OF_MAIN_VIEW 0.0; to: "base";}
+ rel2 { relative: 1.0 1.0; to: "base";}
+ }
+ }
+ }
+
+ programs {
+ program { name, "main/title/hide";
+ signal, "hide,title";
+ source, "prog";
+ action, STATE_SET "no_title" 0.0;
+ target, "title";
+ target, "cont";
+ }
+
+ program { name, "main/title/show";
+ signal, "show,title";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "title";
+ target, "cont";
+ transition: LINEAR 0.3;
+ }
+
+ program { name, "main/title/show/left";
+ signal, "show,title,left";
+ source, "prog";
+ action, STATE_SET "left_offset" 0.0;
+ target, "title";
+ transition: LINEAR 0.3;
+ }
+
+ program { name, "main/title/cont/left";
+ signal, "show,title,left";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "cont";
+ transition: LINEAR 0.3;
+ }
+
+ program { name, "main/left/offset";
+ signal, "left,offset";
+ source, "prog";
+ action, STATE_SET "left_offset" 0.0;
+ target : "cont/right";
+ target : "cont/left";
+ target, "bg";
+ target : "elm.swallow.tabbar";
+ transition: LINEAR 0.3;
+ }
+
+ program { name, "main/default";
+ signal, "right,default";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target : "cont/right";
+ target : "cont/left";
+ target, "bg";
+ target : "elm.swallow.tabbar";
+ transition: LINEAR 0.3;
+ }
+ }
+}
--- /dev/null
+//base 690x850
+//HD size 720x1280
+
+#ifndef _RATIO_
+#define _RATIO_
+#define R_X (480.0/720.0)
+#define R_Y (800.0/1280.0)
+#endif
+
+#define HEIGHT_OF_WDAY (47.0*R_Y)
+#define HEIGHT_OF_WDAY_LINE (3.0*R_Y)
+#define HEIGHT_OF_DAY_BLOCK (107.0*R_Y)
+#define WIDTH_OF_DAY_BLOCK (103.0*R_X)
+#define HEIGHT_OF_DAY_CHECK (32.0*R_Y)
+#define WIDTH_OF_DAY_CHECK (32.0*R_X)
+
+#define WD(_pos) \
+ part { name, "wday/"#_pos"/base"; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative: (_pos % 7 / 7) 0; \
+ to, "wday/base"; \
+ } \
+ rel2 { \
+ relative: (_pos % 7 / 7 + 1 / 7) 1; \
+ to, "wday/base"; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "wday/"#_pos"/text"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "wday/"#_pos"/base"; \
+ rel2.to, "wday/"#_pos"/base"; \
+ color, COLOR_OF_WEEK_DAY_TEXT_FOR_MONTH_CAL; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 26; \
+ } \
+ } \
+ description { \
+ state, "sunday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_SUNDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ description { \
+ state, "satday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_SATDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ } \
+ programs { \
+ program { name, "wday/"#_pos"/weekday"; \
+ signal, "weekday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "wday/"#_pos"/text"; \
+ } \
+ program { name, "wday/"#_pos"/sunday"; \
+ signal, "sunday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "sunday" 0.0; \
+ target, "wday/"#_pos"/text"; \
+ } \
+ program { name, "wday/"#_pos"/satday"; \
+ signal, "satday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "satday" 0.0; \
+ target, "wday/"#_pos"/text"; \
+ } \
+ }
+
+
+// day block
+#define DB(_pos) \
+ part { name, "db/"#_pos"/base"; \
+ type, RECT; \
+ ignore_flags, ON_HOLD; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos % 7 / 7) \
+ (_pos / 7 / 6 - _pos % 7 / 7 / 6); \
+ to, "day/base"; \
+ } \
+ rel2 { \
+ relative, (_pos % 7 / 7 + 1 / 7) \
+ (_pos / 7 / 6 - _pos % 7 / 7 / 6 + 1 / 6); \
+ to, "day/base"; \
+ offset, 0 0; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "db/"#_pos"/today"; \
+ type, RECT; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2.to, "db/"#_pos"/base"; \
+ visible, 0; \
+ } \
+ description { \
+ state, "today" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_TODAY_FOR_MONTH_CAL; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/sel"; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2 { \
+ offset, 0 0; \
+ to, "db/"#_pos"/base"; \
+ } \
+ image { \
+ normal, CALENDAR_SELSECTED; \
+ border, 3 3 3 3; \
+ border_scale,1 ; \
+ } \
+ visible, 0; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/bg"; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2 { \
+ offset, 0 0; \
+ to, "db/"#_pos"/base"; \
+ } \
+ image.normal, CALENDAR_WEEK_VIEW_PRESS; \
+ visible, 0; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/text"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2.to, "db/"#_pos"/base"; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 30; \
+ align, 0.2 0.0; \
+ } \
+ color, COLOR_OF_BLOCK_DEFAULT_TEXT_FOR_MONTH_CAL; \
+ } \
+ description { \
+ state, "sunday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_BLOCK_SUNDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ description { \
+ state, "satday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_BLOCK_SATDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ description { \
+ state, "disabled" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_BLOCK_DISABLEDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ } \
+ part { name, "db/"#_pos"/check"; \
+ type, RECT; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { relative, (WIDTH_OF_DAY_BLOCK-WIDTH_OF_DAY_CHECK)/WIDTH_OF_DAY_BLOCK (HEIGHT_OF_DAY_BLOCK-HEIGHT_OF_DAY_CHECK)/HEIGHT_OF_DAY_BLOCK; to, "db/"#_pos"/base"; } \
+ rel2.to, "db/"#_pos"/base"; \
+ color, COLOR_OF_CHECK_BASE_FOR_MONTH_CAL; \
+ visible, 0; \
+ } \
+ description { \
+ state, "checked" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/text_on_check"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/check"; \
+ rel2.to, "db/"#_pos"/check"; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 18; \
+ align, 0.5 0.5; \
+ } \
+ color, COLOR_OF_TEXT_ON_CHECK_FOR_MONTH_CAL; \
+ visible, 0; \
+ } \
+ description { \
+ state, "checked" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/block"; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2.to, "db/"#_pos"/base"; \
+ color, 0 0 0 0; \
+ visible, 0; \
+ } \
+ description { \
+ state, "disabled" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ programs { \
+ program { name, "db/"#_pos"/go_down"; \
+ signal, "dn,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "db/"#_pos"/bg"; \
+ } \
+ program { name, "db/"#_pos"/go_up"; \
+ signal, "up,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/bg"; \
+ } \
+ program { name, "db/"#_pos"/down"; \
+ signal, "mouse,down,1"; \
+ source, "db/"#_pos"/base"; \
+ action, SIGNAL_EMIT "dn,"_pos "cal"; \
+ } \
+ program { name, "db/"#_pos"/up"; \
+ signal, "mouse,up,1"; \
+ source, "db/"#_pos"/base"; \
+ action, SIGNAL_EMIT "up,"_pos "cal"; \
+ } \
+ program { name, "db/"#_pos"/select"; \
+ signal, "select,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "db/"#_pos"/sel"; \
+ } \
+ program { name, "db/"#_pos"/unselect"; \
+ signal, "unselect,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/sel"; \
+ } \
+ program { name, "db/"#_pos"/set_today"; \
+ signal, "today,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "today" 0.0; \
+ target, "db/"#_pos"/today"; \
+ } \
+ program { name, "db/"#_pos"/unset_today"; \
+ signal, "notoday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/today"; \
+ } \
+ program { name, "db/"#_pos"/set_check"; \
+ signal, "check,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "checked" 0.0; \
+ target, "db/"#_pos"/check"; \
+ target, "db/"#_pos"/text_on_check"; \
+ } \
+ program { name, "db/"#_pos"/unset_check"; \
+ signal, "uncheck,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/check"; \
+ target, "db/"#_pos"/text_on_check"; \
+ } \
+ program { name, "db/"#_pos"/weekday"; \
+ signal, "weekday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/text"; \
+ } \
+ program { name, "db/"#_pos"/sunday"; \
+ signal, "sunday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "sunday" 0.0; \
+ target, "db/"#_pos"/text"; \
+ } \
+ program { name, "db/"#_pos"/satday"; \
+ signal, "satday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "satday" 0.0; \
+ target, "db/"#_pos"/text"; \
+ } \
+ program { name, "db/"#_pos"/disable"; \
+ signal, "disable,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "disabled" 0.0; \
+ target, "db/"#_pos"/text"; \
+ target, "db/"#_pos"/block"; \
+ } \
+ program { name, "db/"#_pos"/enable"; \
+ signal, "enable,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/block"; \
+ } \
+ }
+
+// vertical line
+#define VL(_pos) \
+ part { name, "vl/"#_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos / 7) 0; \
+ offset, -1 -1; \
+ to, "day/base"; \
+ } \
+ rel2 { \
+ relative, (_pos / 7) 1; \
+ offset, -1 -1; \
+ to, "day/base"; \
+ } \
+ color, COLOR_OF_LINE_FOR_MONTH_CAL; \
+ } \
+ }
+
+// horizontal line
+#define HL(_pos) \
+ part { name, "hl/"#_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, 0 (_pos / 6); \
+ to, "day/base"; \
+ } \
+ rel2 { \
+ relative, 1 (_pos / 6); \
+ offset, -1 0; \
+ to, "day/base"; \
+ } \
+ color, COLOR_OF_LINE_FOR_MONTH_CAL; \
+ } \
+ }
+
+
+group { name, "main/month/cal";
+
+ images {
+ image, CALENDAR_SELSECTED COMP;
+ image, CALENDAR_WEEK_VIEW_PRESS COMP;
+ image, CALENDAR_MONTH_VIEW_BG_1 COMP;
+ image, CALENDAR_TODAY_ICON COMP;
+ image, EVENT COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "wday/base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 (0/HEIGHT_OF_CALENDAR_SW); to, "base"; }
+ rel2 { relative, 1.0 (HEIGHT_OF_WDAY+HEIGHT_OF_WDAY_LINE)/HEIGHT_OF_CALENDAR_SW; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "day/base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 (HEIGHT_OF_WDAY+HEIGHT_OF_WDAY_LINE)/HEIGHT_OF_CALENDAR_SW; to, "base"; }
+ rel2 { relative, 1.0 HEIGHT_OF_CALENDAR_SW/HEIGHT_OF_CALENDAR_SW; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "wday/line";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 1.0; offset, 0 (-1.0*HEIGHT_OF_WDAY_LINE); to, "wday/base"; }
+ rel2 { relative, 1.0 1.0; to, "wday/base"; }
+ color, COLOR_OF_LINE_FOR_MONTH_CAL;
+ }
+ }
+
+ WD(0) WD(1) WD(2) WD(3) WD(4) WD(5) WD(6)
+
+ DB( 0) DB( 1) DB( 2) DB( 3) DB( 4) DB( 5) DB( 6)
+ DB( 7) DB( 8) DB( 9) DB(10) DB(11) DB(12) DB(13)
+ DB(14) DB(15) DB(16) DB(17) DB(18) DB(19) DB(20)
+ DB(21) DB(22) DB(23) DB(24) DB(25) DB(26) DB(27)
+ DB(28) DB(29) DB(30) DB(31) DB(32) DB(33) DB(34)
+ DB(35) DB(36) DB(37) DB(38) DB(39) DB(40) DB(41)
+
+ VL( 1) VL( 2) VL( 3) VL( 4) VL( 5) VL( 6) VL(7)
+ HL( 0) HL( 1) HL( 2) HL( 3) HL( 4) HL( 5) HL(6)
+ }
+}
--- /dev/null
+//HD size 720x1280
+#ifndef _RATIO_
+#define _RATIO_
+#define R_X (480.0/720.0)
+#define R_Y (800.0/1280.0)
+#endif
+
+#define HEIGHT_OF_WEEK_THIS (105.0*R_Y)
+#define HEIGHT_OF_TOP (50.0*R_Y)
+#define HEIGHT_OF_EVENT (34.0*R_Y)
+#define HEIGHT_OF_GAP (2.0*R_Y)
+#define HEIGHT_OF_CHECK (32.0*R_Y)
+#define HEIGHT_OF_HEADER (50.0*R_Y)
+#define HEIGHT_OF_FOCUSE_WEEK (270.0*R_Y)
+#define WIDTH_OF_DAY (720.0/7*R_X)
+#define HEIGHT_OF_LINE_CAL_Y (2.0*R_Y)
+#define HEIGHT_OF_LINE_CAL_X (2.0*R_Y)
+#define HEIGHT_OF_LINE_HEADER_X (3.0*R_Y)
+
+#define WD(_pos) \
+ part { name, "wday/"#_pos"/base"; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative: (_pos % 7 / 7) 0; \
+ to, "wday/base"; \
+ } \
+ rel2 { \
+ relative: (_pos % 7 / 7 + 1 / 7) 1; \
+ to, "wday/base"; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "wday/"#_pos"/text"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "wday/"#_pos"/base"; \
+ rel2.to, "wday/"#_pos"/base"; \
+ color, COLOR_OF_WEEK_DAY_TEXT_FOR_MONTH_CAL; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 26; \
+ } \
+ } \
+ description { \
+ state, "sunday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_SUNDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ description { \
+ state, "satday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_SATDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ } \
+ programs { \
+ program { name, "wday/"#_pos"/weekday"; \
+ signal, "weekday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "wday/"#_pos"/text"; \
+ } \
+ program { name, "wday/"#_pos"/sunday"; \
+ signal, "sunday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "sunday" 0.0; \
+ target, "wday/"#_pos"/text"; \
+ } \
+ program { name, "wday/"#_pos"/satday"; \
+ signal, "satday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "satday" 0.0; \
+ target, "wday/"#_pos"/text"; \
+ } \
+ }
+
+
+// day block
+#define WWDB(_line,_pos) \
+ part { name, "db/"#_pos"/base"; \
+ type, RECT; \
+ ignore_flags, ON_HOLD; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos % 7 / 7) \
+ 1.0; \
+ to_x, "base"; \
+ to_y, "db/"_line"/base"; \
+ offset, 0 HEIGHT_OF_LINE_CAL_Y; \
+ } \
+ rel2 { \
+ relative, (_pos % 7 / 7 + 1 / 7) \
+ 1.0; \
+ to_x, "base"; \
+ to_y, "db/"_line"/base"; \
+ offset, 0 (HEIGHT_OF_WEEK_THIS+HEIGHT_OF_LINE_CAL_Y); \
+ } \
+ color, 0 0 0 0; \
+ } \
+ description { \
+ state, "default" 1.0; \
+ rel1 { \
+ relative, (_pos % 7 / 7) \
+ 1.0; \
+ to_x, "base"; \
+ to_y, "db/"_line"/base"; \
+ } \
+ rel2 { \
+ relative, (_pos % 7 / 7 + 1 / 7) \
+ 1.0; \
+ to_x, "base"; \
+ to_y, "db/"_line"/base"; \
+ offset, 0 HEIGHT_OF_FOCUSE_WEEK; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "db/"#_pos"/today"; \
+ type, RECT; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2.to, "db/"#_pos"/base"; \
+ visible, 0; \
+ } \
+ description { \
+ state, "today" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2.to, "db/"#_pos"/base"; \
+ color, COLOR_OF_TODAY_FOR_MONTH_CAL; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/sel"; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2 { \
+ offset, 0 0; \
+ to, "db/"#_pos"/base"; \
+ } \
+ image { \
+ normal, CALENDAR_SELSECTED; \
+ border, 3 3 3 3; \
+ border_scale,1 ; \
+ } \
+ visible, 0; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/bg"; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2 { \
+ offset, 0 0; \
+ to, "db/"#_pos"/base"; \
+ } \
+ image.normal, CALENDAR_WEEK_VIEW_PRESS; \
+ visible, 0; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/text"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2.to, "db/"#_pos"/base"; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 30; \
+ align, 0.2 0.0; \
+ } \
+ color, COLOR_OF_BLOCK_DEFAULT_TEXT_FOR_MONTH_CAL; \
+ } \
+ description { \
+ state, "sunday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_BLOCK_SUNDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ description { \
+ state, "satday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_BLOCK_SATDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ description { \
+ state, "disabled" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_BLOCK_DISABLEDAY_TEXT_FOR_MONTH_CAL; \
+ } \
+ } \
+ part { name, "db/"#_pos"/check"; \
+ type, RECT; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ offset,(WIDTH_OF_DAY-HEIGHT_OF_CHECK) (HEIGHT_OF_WEEK_THIS-HEIGHT_OF_CHECK); \
+ to, "db/"#_pos"/base"; \
+ } \
+ rel2.to, "db/"#_pos"/base"; \
+ color, COLOR_OF_CHECK_BASE_FOR_MONTH_CAL; \
+ visible, 0; \
+ } \
+ description { \
+ state, "checked" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/text_on_check"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/check"; \
+ rel2.to, "db/"#_pos"/check"; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 18; \
+ align, 0.5 0.5; \
+ } \
+ color, COLOR_OF_TEXT_ON_CHECK_FOR_MONTH_CAL; \
+ visible, 0; \
+ } \
+ description { \
+ state, "checked" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "db/"#_pos"/block"; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "db/"#_pos"/base"; \
+ rel2.to, "db/"#_pos"/base"; \
+ color, 0 0 0 0; \
+ visible, 0; \
+ } \
+ description { \
+ state, "disabled" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ programs { \
+ program { name, "db/"#_pos"/go_down"; \
+ signal, "dn,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "db/"#_pos"/bg"; \
+ } \
+ program { name, "db/"#_pos"/go_up"; \
+ signal, "up,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/bg"; \
+ } \
+ program { name, "db/"#_pos"/down"; \
+ signal, "mouse,down,1"; \
+ source, "db/"#_pos"/base"; \
+ action, SIGNAL_EMIT "dn,"_pos "cal"; \
+ } \
+ program { name, "db/"#_pos"/up"; \
+ signal, "mouse,up,1"; \
+ source, "db/"#_pos"/base"; \
+ action, SIGNAL_EMIT "up,"_pos "cal"; \
+ } \
+ program { name, "db/"#_pos"/select"; \
+ signal, "select,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "db/"#_pos"/sel"; \
+ } \
+ program { name, "db/"#_pos"/unselect"; \
+ signal, "unselect,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/sel"; \
+ } \
+ program { name, "db/"#_pos"/set_today"; \
+ signal, "today,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "today" 0.0; \
+ target, "db/"#_pos"/today"; \
+ } \
+ program { name, "db/"#_pos"/unset_today"; \
+ signal, "notoday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/today"; \
+ } \
+ program { name, "db/"#_pos"/set_focus_week"; \
+ signal, "week,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 1.0; \
+ target, "db/"#_pos"/base"; \
+ } \
+ program { name, "db/"#_pos"/unset_focus_week"; \
+ signal, "noweek,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/base"; \
+ } \
+ program { name, "db/"#_pos"/set_check"; \
+ signal, "check,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "checked" 0.0; \
+ target, "db/"#_pos"/check"; \
+ target, "db/"#_pos"/text_on_check"; \
+ } \
+ program { name, "db/"#_pos"/unset_check"; \
+ signal, "uncheck,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/check"; \
+ target, "db/"#_pos"/text_on_check"; \
+ } \
+ program { name, "db/"#_pos"/weekday"; \
+ signal, "weekday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/text"; \
+ } \
+ program { name, "db/"#_pos"/sunday"; \
+ signal, "sunday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "sunday" 0.0; \
+ target, "db/"#_pos"/text"; \
+ } \
+ program { name, "db/"#_pos"/satday"; \
+ signal, "satday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "satday" 0.0; \
+ target, "db/"#_pos"/text"; \
+ } \
+ program { name, "db/"#_pos"/disable"; \
+ signal, "disable,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "disabled" 0.0; \
+ target, "db/"#_pos"/text"; \
+ target, "db/"#_pos"/block"; \
+ } \
+ program { name, "db/"#_pos"/enable"; \
+ signal, "enable,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "db/"#_pos"/block"; \
+ } \
+ }
+
+// vertical line
+#undef VL
+#define VL(_pos) \
+ part { name, "vl/"#_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos / 7) 0; \
+ to, "day/base"; \
+ } \
+ rel2 { \
+ relative, (_pos / 7) 1; \
+ offset, 0 (-1.0*HEIGHT_OF_LINE_CAL_X); \
+ to, "day/base"; \
+ } \
+ color, COLOR_OF_LINE_FOR_MONTH_CAL; \
+ } \
+ }
+
+// horizontal line
+#define WHL(_line,_pos) \
+ part { name, "hl/"#_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, 0 1.0; \
+ offset, 0 -1; \
+ to_x, "day/base"; \
+ to_y, "db/"_line"/base"; \
+ } \
+ rel2 { \
+ relative, 1 1.0; \
+ offset, -1 -1; \
+ to_x, "day/base"; \
+ to_y, "db/"_line"/base"; \
+ } \
+ color, COLOR_OF_LINE_FOR_MONTH_CAL; \
+ } \
+ }
+
+
+group { name, "main/month/cal/weekly";
+
+ images {
+ image, CALENDAR_SELSECTED COMP;
+ image, CALENDAR_WEEK_VIEW_PRESS COMP;
+ image, CALENDAR_MONTH_VIEW_BG_1 COMP;
+ image, CALENDAR_TODAY_ICON COMP;
+ image, EVENT COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "wday/base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 (0/580); offset, 0 0; to, "base"; }
+ rel2 { relative, 1.0 (0/580); offset, 0 HEIGHT_OF_HEADER; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "day/base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 1.0; offset, 0 0; to, "wday/base"; }
+ rel2 { relative, 1.0 1.0; offset, 0 0; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "db/100/base";
+ type, RECT;
+ ignore_flags, ON_HOLD;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.0 0.0;
+ to, "day/base";
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to, "day/base";
+ offset, 0 0;
+ }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "wday/line";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 1.0; offset, 0 (-1.0*HEIGHT_OF_LINE_HEADER_X); to, "wday/base"; }
+ rel2 { relative, 1.0 1.0; offset, 0 0; to, "wday/base"; }
+ color, COLOR_OF_LINE_FOR_MONTH_CAL;
+ }
+ }
+
+ WD(0) WD(1) WD(2) WD(3) WD(4) WD(5) WD(6)
+
+ WWDB(100, 0) WWDB(100, 1) WWDB(100, 2) WWDB(100, 3) WWDB(100, 4) WWDB(100, 5) WWDB(100, 6)
+ WWDB(0, 7) WWDB(0, 8) WWDB(0, 9) WWDB(0,10) WWDB(0,11) WWDB(0,12) WWDB(0,13)
+ WWDB(7,14) WWDB(7,15) WWDB(7,16) WWDB(7,17) WWDB(7,18) WWDB(7,19) WWDB(7,20)
+ WWDB(14,21) WWDB(14,22) WWDB(14,23) WWDB(14,24) WWDB(14,25) WWDB(14,26) WWDB(14,27)
+ WWDB(21,28) WWDB(21,29) WWDB(21,30) WWDB(21,31) WWDB(21,32) WWDB(21,33) WWDB(21,34)
+ WWDB(28,35) WWDB(28,36) WWDB(28,37) WWDB(28,38) WWDB(28,39) WWDB(28,40) WWDB(28,41)
+
+ VL( 1) VL( 2) VL( 3) VL( 4) VL( 5) VL( 6)
+ WHL(0,1) WHL(7,2) WHL(14,3) WHL(21,4) WHL(28,5) WHL(35,6)
+
+ part { name, "list/base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.0 0.0;
+ to_x, "base";
+ to_y, "db/0/base";
+ offset, 0 HEIGHT_OF_TOP;
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to_x, "base";
+ to_y, "db/0/base";
+ offset, 0 HEIGHT_OF_FOCUSE_WEEK;
+ }
+ color, 0 0 0 0;
+ }
+ description {
+ state, "default" 0.1;
+ rel1 {
+ relative, 0.0 0.0;
+ to_x, "base";
+ to_y, "db/7/base";
+ offset, 0 HEIGHT_OF_TOP;
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to_x, "base";
+ to_y, "db/7/base";
+ offset, 0 HEIGHT_OF_FOCUSE_WEEK;
+ }
+ color, 0 0 0 0;
+ }
+ description {
+ state, "default" 0.2;
+ rel1 {
+ relative, 0.0 0.0;
+ to_x, "base";
+ to_y, "db/14/base";
+ offset, 0 HEIGHT_OF_TOP;
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to_x, "base";
+ to_y, "db/14/base";
+ offset, 0 HEIGHT_OF_FOCUSE_WEEK;
+ }
+ color, 0 0 0 0;
+ }
+ description {
+ state, "default" 0.3;
+ rel1 {
+ relative, 0.0 0.0;
+ to_x, "base";
+ to_y, "db/21/base";
+ offset, 0 HEIGHT_OF_TOP;
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to_x, "base";
+ to_y, "db/21/base";
+ offset, 0 HEIGHT_OF_FOCUSE_WEEK;
+ }
+ color, 0 0 0 0;
+ }
+ description {
+ state, "default" 0.4;
+ rel1 {
+ relative, 0.0 0.0;
+ to_x, "base";
+ to_y, "db/28/base";
+ offset, 0 HEIGHT_OF_TOP;
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to_x, "base";
+ to_y, "db/28/base";
+ offset, 0 HEIGHT_OF_FOCUSE_WEEK;
+ }
+ color, 0 0 0 0;
+ }
+ description {
+ state, "default" 0.5;
+ rel1 {
+ relative, 0.0 0.0;
+ to_x, "base";
+ to_y, "db/35/base";
+ offset, 0 HEIGHT_OF_TOP;
+ }
+ rel2 {
+ relative, 1.0 0.0;
+ to_x, "base";
+ to_y, "db/35/base";
+ offset, 0 HEIGHT_OF_FOCUSE_WEEK;
+ }
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "list/sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1.to, "list/base";
+ rel2.to, "list/base";
+ }
+ }
+
+ program { name, "db/set_focus_week/events/line1";
+ signal, "week,0";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "list/base";
+ }
+ program { name, "db/set_focus_week/events/line2";
+ signal, "week,7";
+ source, "prog";
+ action, STATE_SET "default" 0.1;
+ target, "list/base";
+ }
+ program { name, "db/set_focus_week/events/line3";
+ signal, "week,14";
+ source, "prog";
+ action, STATE_SET "default" 0.2;
+ target, "list/base";
+ }
+ program { name, "db/set_focus_week/events/line4";
+ signal, "week,21";
+ source, "prog";
+ action, STATE_SET "default" 0.3;
+ target, "list/base";
+ }
+ program { name, "db/set_focus_week/events/line5";
+ signal, "week,28";
+ source, "prog";
+ action, STATE_SET "default" 0.4;
+ target, "list/base";
+ }
+ program { name, "db/set_focus_week/events/line6";
+ signal, "week,35";
+ source, "prog";
+ action, STATE_SET "default" 0.5;
+ target, "list/base";
+ }
+ }
+}
+
+//week events
+// events block
+#define EB(_last,_line,_pos) \
+ part { name, #_line"/event/"#_pos; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_GAP; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ rel2 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_EVENT; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ description { \
+ state, "default" 0.1; \
+ rel1 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_GAP; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ rel2 { \
+ relative, (_pos/7 + 1/7) 1.0; \
+ offset, 0 HEIGHT_OF_EVENT; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ } \
+ description { \
+ state, "default" 0.2; \
+ rel1 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_GAP; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ rel2 { \
+ relative, (_pos/7+2/7) 1.0; \
+ offset, 0 HEIGHT_OF_EVENT; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ } \
+ description { \
+ state, "default" 0.3; \
+ rel1 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_GAP; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ rel2 { \
+ relative, (_pos/7+3/7) 1.0; \
+ offset, 0 HEIGHT_OF_EVENT; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ } \
+ description { \
+ state, "default" 0.4; \
+ rel1 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_GAP; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ rel2 { \
+ relative, (_pos/7+4/7) 1.0; \
+ offset, 0 HEIGHT_OF_EVENT; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ } \
+ description { \
+ state, "default" 0.5; \
+ rel1 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_GAP; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ rel2 { \
+ relative, (_pos/7+5/7) 1.0; \
+ offset, 0 HEIGHT_OF_EVENT; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ } \
+ description { \
+ state, "default" 0.6; \
+ rel1 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_GAP; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ rel2 { \
+ relative, (_pos/7+6/7) 1.0; \
+ offset, 0 HEIGHT_OF_EVENT; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ } \
+ description { \
+ state, "default" 0.7; \
+ rel1 { \
+ relative, _pos/7 1.0; \
+ offset, 0 HEIGHT_OF_GAP; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ rel2 { \
+ relative, (_pos/7+7/7) 1.0; \
+ offset, 0 HEIGHT_OF_EVENT; \
+ to_x, "base"; \
+ to_y, _last"/event/0"; \
+ } \
+ } \
+ } \
+ part { name, #_line"/bgcolor/"#_pos; \
+ type, RECT; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, _line"/event/"_pos; \
+ rel2.to, _line"/event/"_pos; \
+ visible, 0; \
+ } \
+ description { \
+ state, "green" 0.0; \
+ inherit, "default" 0.0; \
+ color, 124 167 101 255; \
+ visible, 1; \
+ } \
+ description { \
+ state, "blue" 0.0; \
+ inherit, "default" 0.0; \
+ color, 168 166 229 255; \
+ visible, 1; \
+ } \
+ description { \
+ state, "red" 0.0; \
+ inherit, "default" 0.0; \
+ color, 194 78 62 255; \
+ visible, 1; \
+ } \
+ description { \
+ state, "purple" 0.0; \
+ inherit, "default" 0.0; \
+ color, 127 103 158 255; \
+ visible, 1; \
+ } \
+ }\
+ programs { \
+ program { name, #_line"/0/"#_pos; \
+ signal, _line",0,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, #_line"/event/"#_pos; \
+ } \
+ program { name, #_line"/1/"#_pos; \
+ signal, _line",1,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.1; \
+ target, #_line"/event/"#_pos; \
+ } \
+ program { name, #_line"/2/"#_pos; \
+ signal, _line",2,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.2; \
+ target, #_line"/event/"#_pos; \
+ } \
+ program { name, #_line"/3/"#_pos; \
+ signal, _line",3,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.3; \
+ target, #_line"/event/"#_pos; \
+ } \
+ program { name, #_line"/4/"#_pos; \
+ signal, _line",4,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.4; \
+ target, #_line"/event/"#_pos; \
+ } \
+ program { name, #_line"/5/"#_pos; \
+ signal, _line",5,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.5; \
+ target, #_line"/event/"#_pos; \
+ } \
+ program { name, #_line"/6/"#_pos; \
+ signal, _line",6,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.6; \
+ target, #_line"/event/"#_pos; \
+ } \
+ program { name, #_line"/7/"#_pos; \
+ signal, _line",7,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.7; \
+ target, #_line"/event/"#_pos; \
+ } \
+ program { name, #_line"/nocolor/"#_pos; \
+ signal, _line",nocolor,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, #_line"/bgcolor/"#_pos; \
+ } \
+ program { name, #_line"/green/"#_pos; \
+ signal, _line",green,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "green" 0.0; \
+ target, #_line"/bgcolor/"#_pos; \
+ } \
+ program { name, #_line"/blue/"#_pos; \
+ signal, _line",blue,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "blue" 0.0; \
+ target, #_line"/bgcolor/"#_pos; \
+ } \
+ program { name, #_line"/red/"#_pos; \
+ signal, _line",red,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "red" 0.0; \
+ target, #_line"/bgcolor/"#_pos; \
+ } \
+ program { name, #_line"/purple/"#_pos; \
+ signal, _line",purple,"_pos; \
+ source, "prog"; \
+ action, STATE_SET "purple" 0.0; \
+ target, #_line"/bgcolor/"#_pos; \
+ } \
+ }
+
+#define TEXT(_line,_pos) \
+ part { name, #_line"/text/"#_pos; \
+ type, TEXT; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, _line"/event/"_pos; \
+ rel2.to, _line"/event/"_pos; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 18; \
+ align, 0.5 0.5; \
+ } \
+ color, 255 255 255 255; \
+ } \
+ }
+
+
+group { name, "main/month/week/events";
+
+ images {
+ image, CALENDAR_SELSECTED COMP;
+ image, CALENDAR_WEEK_VIEW_PRESS COMP;
+ image, CALENDAR_MONTH_VIEW_BG_1 COMP;
+ image, CALENDAR_TODAY_ICON_2 COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "0/event/0";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0 0.0;
+ offset, 0 0;
+ to, "base";
+ }
+ rel2 {
+ relative, 0 0;
+ offset, 0 0;
+ to, "base";
+ }
+ color, 0 0 0 0;
+ }
+ }
+
+ EB(0,1,0) EB(0,1,1) EB(0,1,2) EB(0,1,3) EB(0,1,4) EB(0,1,5) EB(0,1,6) EB(0,1,7)
+ EB(1,2,0) EB(1,2,1) EB(1,2,2) EB(1,2,3) EB(1,2,4) EB(1,2,5) EB(1,2,6) EB(1,2,7)
+ EB(2,3,0) EB(2,3,1) EB(2,3,2) EB(2,3,3) EB(2,3,4) EB(2,3,5) EB(2,3,6) EB(2,3,7)
+ EB(3,4,0) EB(3,4,1) EB(3,4,2) EB(3,4,3) EB(3,4,4) EB(3,4,5) EB(3,4,6) EB(3,4,7)
+ EB(4,5,0) EB(4,5,1) EB(4,5,2) EB(4,5,3) EB(4,5,4) EB(4,5,5) EB(4,5,6) EB(4,5,7)
+
+ TEXT(1,0) TEXT(1,1) TEXT(1,2) TEXT(1,3) TEXT(1,4) TEXT(1,5) TEXT(1,6) TEXT(1,7)
+ TEXT(2,0) TEXT(2,1) TEXT(2,2) TEXT(2,3) TEXT(2,4) TEXT(2,5) TEXT(2,6) TEXT(2,7)
+ TEXT(3,0) TEXT(3,1) TEXT(3,2) TEXT(3,3) TEXT(3,4) TEXT(3,5) TEXT(3,6) TEXT(3,7)
+ TEXT(4,0) TEXT(4,1) TEXT(4,2) TEXT(4,3) TEXT(4,4) TEXT(4,5) TEXT(4,6) TEXT(4,7)
+ TEXT(5,0) TEXT(5,1) TEXT(5,2) TEXT(5,3) TEXT(5,4) TEXT(5,5) TEXT(5,6) TEXT(5,7)
+
+ }
+
+}
--- /dev/null
+//HD size 720x1280
+#define HEIGHT_OF_MONTH_VIEW (920.0*R_Y)
+#define HEIGHT_OF_CALENDAR_SW (690.0*R_Y)
+#define HEIGHT_OF_WEEK_LINE (2.0*R_Y)
+#define HEIGHT_OF_WEEK (105.0*R_Y)
+#define HEIGHT_OF_VIEW (690.0*R_Y)
+#define HEIGHT_OF_BOTTOM_LINE (3.0*R_Y)
+
+group { name, "main/month";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ rel1 { relative, 0.0 0.0; }
+ rel2 { relative, 1.0 1.0; }
+ }
+ }
+
+ part { name, "cal/sw";
+ type, SWALLOW;
+ clip_to, "cal/clip";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 0.0; to, "base"; }
+ rel2 { relative, 1.0 (HEIGHT_OF_CALENDAR_SW/HEIGHT_OF_MONTH_VIEW); to, "base"; }
+ }
+ }
+
+ part { name, "cal/sw/left";
+ type, SWALLOW;
+ clip_to, "cal/clip";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, -1.0 0.0; to_x, "base"; to_y, "cal/sw"; }
+ rel2 { relative, 0.0 1.0; to_x, "base"; to_y, "cal/sw";}
+ }
+ }
+
+ part { name, "cal/sw/right";
+ type, SWALLOW;
+ clip_to, "cal/clip";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 1.0 0.0; to_x, "base"; to_y, "cal/sw"; }
+ rel2 { relative, 2.0 1.0; to_x, "base"; to_y, "cal/sw";}
+ }
+ }
+
+ part { name, "cal/clip";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1.to, "cal/sw";
+ rel2 { relative, 1.0 1.0; offset, 0 -2.0; to, "cal/sw"; }
+ }
+ description {
+ state, "default" 1.0;
+ rel1.to, "cal/sw";
+ rel2 { relative, 1.0 ((HEIGHT_OF_VIEW-HEIGHT_OF_WEEK)/HEIGHT_OF_VIEW); offset, 0 -3.0; to, "cal/sw"; }
+ }
+ description {
+ state, "default" 0.5;
+ rel1.to, "cal/sw";
+ rel2 { relative, 1.0 ((HEIGHT_OF_VIEW-2*HEIGHT_OF_WEEK-2*HEIGHT_OF_WEEK_LINE)/HEIGHT_OF_CALENDAR_SW); offset, 0 -2.0; to, "cal/sw"; }
+ }
+ }
+
+ part { name, "list/base";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.0 1.0;
+ to_x, "base"; to_y, "cal/clip";
+ }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "list/line";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { to, "list/base"; }
+ rel2 { relative, 1.0 0.0; offset, 0 HEIGHT_OF_BOTTOM_LINE; to, "list/base"; }
+ color, COLOR_OF_LIST_LINE_FOR_MONTH;
+ }
+ }
+
+ part { name, "list/sw";
+ type, SWALLOW;
+ description {
+ state, "default" 0.0;
+ rel1{ relative, 0.0 0.0; offset, 0 2; to, "list/base"; }
+ rel2.to, "list/base";
+ }
+ }
+ }
+
+ programs {
+ program { name, "cal/line5";
+ signal, "go,line5";
+ source, "prog";
+ action, STATE_SET "default" 1.0;
+ target, "cal/clip";
+ transition, SINUSOIDAL 0.0;
+ }
+ program { name, "cal/line6";
+ signal, "go,line6";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "cal/clip";
+ transition, SINUSOIDAL 0.0;
+ }
+ program { name, "cal/line4";
+ signal, "go,line4";
+ source, "prog";
+ action, STATE_SET "default" 0.5;
+ target, "cal/clip";
+ transition, SINUSOIDAL 0.0;
+ }
+ }
+}
--- /dev/null
+// 720 x 855
+#ifndef _RATIO_
+#define _RATIO_
+#define R_X (480.0/720.0)
+#define R_Y (800.0/1280.0)
+#endif
+
+//for month view
+#define W (720.0*R_X)
+#define H (855.0*R_Y)
+#define H_WEEK (105.0*R_Y)
+#define H_GAP (2.0*R_Y)
+#define H_LINE (3.0*R_Y)
+
+group { name, "main/month/weekly";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "cal/sw";
+ type, SWALLOW;
+ clip_to, "cal/clip";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 0.0; offset, 0 0; to, "base"; }
+ rel2 { relative, 1.0 0.0; offset, 0 H; to, "base"; }
+ }
+ }
+
+ part { name, "cal/sw/left";
+ type, SWALLOW;
+ clip_to, "cal/clip";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, -1.0 0.0; to_x, "base"; to_y, "cal/sw"; }
+ rel2 { relative, 0.0 1.0; to_x, "base"; to_y, "cal/sw";}
+ }
+ }
+
+ part { name, "cal/sw/right";
+ type, SWALLOW;
+ clip_to, "cal/clip";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 1.0 0.0; to_x, "base"; to_y, "cal/sw"; }
+ rel2 { relative, 2.0 1.0; to_x, "base"; to_y, "cal/sw";}
+ }
+ }
+
+ part { name, "cal/clip";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1.to, "cal/sw";
+ rel2 { relative, 1.0 1.0; offset, 0 0; to, "cal/sw"; }
+ }
+ description {
+ state, "default" 1.0;
+ rel1.to, "cal/sw";
+ rel2 { relative, 1.0 ((H-H_WEEK-H_GAP)/H); offset: 0 0; to, "cal/sw"; }
+ }
+ description {
+ state, "default" 0.5;
+ rel1.to, "cal/sw";
+ rel2 { relative, 1.0 ((H-2*H_WEEK-2*H_GAP)/H); offset: 0 0; to, "cal/sw"; }
+ }
+ }
+ part { name, "list/line";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 1.0; offset, 0 0; to, "cal/clip"; }
+ rel2 { relative, 1.0 1.0; offset, 0 H_LINE; to, "cal/clip"; }
+ color, COLOR_OF_LIST_LINE_FOR_MONTH;
+ }
+ }
+ }
+
+ programs {
+ program { name, "cal/line5";
+ signal, "go,line5";
+ source, "prog";
+ action, STATE_SET "default" 1.0;
+ target, "cal/clip";
+ transition, SINUSOIDAL 0.0;
+ }
+ program { name, "cal/line6";
+ signal, "go,line6";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "cal/clip";
+ transition, SINUSOIDAL 0.0;
+ }
+ program { name, "cal/line4";
+ signal, "go,line4";
+ source, "prog";
+ action, STATE_SET "default" 0.5;
+ target, "cal/clip";
+ transition, SINUSOIDAL 0.0;
+ }
+ }
+}
--- /dev/null
+// Main view tab layout
+group { name, "main/tab";
+
+ images {
+ image, CALENDAR_TAB COMP;
+ image, CALENDAR_TAB_FOCUS_BG COMP;
+ image, CALENDAR_TAB_PRESS COMP;
+ image, CALENDAR_TODAY_ICON COMP;
+ image, CALENDAR_TODAY_ICON_PRESS COMP;
+ image, TAB_FOCUS COMP;
+ image, TAB_BG COMP;
+ image, TAB_DEFAULT COMP;
+ image, TAB_PRESS COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "tab/bg";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 0.0 0.0; to, base; }
+ rel2 { relative, 1.0 1.0; offset, 0 0; to, base; }
+ image.normal, TAB_BG;
+ }
+ }
+
+#define PART_TAB(_name, x1, x2) \
+ part { name, "tab/"_name"/bg"; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { relative, x1 0.0; to, "tab/bg"; } \
+ rel2 { relative, x2 1.0; to, "tab/bg"; } \
+ image.normal, "P01_tab_default.png"; \
+ } \
+ description { \
+ state, "default" 1.0; \
+ inherit, "default" 0.0; \
+ image.normal, "P01_tab_press.png"; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ image.normal, TAB_FOCUS; \
+ } \
+ } \
+ part { name, "tab/"_name"/text"; \
+ type, TEXT; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "tab/"_name"/bg"; \
+ rel2.to, "tab/"_name"/bg"; \
+ color, COLOR_OF_TEXT_FOR_MAIN_TAB; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 30; \
+ align, 0.5 0.5; \
+ } \
+ } \
+ description { \
+ state, "default" 1.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_TEXT_DEFAULT_FOR_MAIN_TAB; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_TEXT_SELECTED_FOR_MAIN_TAB; \
+ } \
+ } \
+ part { name, "tab/"_name"/evt"; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { to_x, "tab/"_name"/bg"; to_y, "tab/bg"; } \
+ rel2 { to_x, "tab/"_name"/bg"; to_y, "tab/bg"; } \
+ color, 0 0 0 0; \
+ } \
+ }
+
+ PART_TAB("year", (0/4), (1/4))
+ PART_TAB("month", (1/4), (2/4))
+ PART_TAB("day", (2/4), (3/4))
+ PART_TAB("list", (3/4), (4/4))
+ }
+
+ programs {
+ program { name, "tab/reset";
+ signal, "reset";
+ source, "prog";
+ action, STATE_SET "default" 0.0;
+ target, "tab/year/bg";
+ target, "tab/year/text";
+ target, "tab/month/bg";
+ target, "tab/month/text";
+ target, "tab/day/bg";
+ target, "tab/day/text";
+ target, "tab/list/bg";
+ target, "tab/list/text";
+ }
+
+#define PROG_TAB(_name) \
+ program { name, "tab/"_name"/down"; \
+ signal, "mouse,down,1"; \
+ source, "tab/"_name"/evt"; \
+ filter, "tab/"_name"/bg" "default"; \
+ action, STATE_SET "default" 1.0; \
+ target, "tab/"_name"/bg"; \
+ target, "tab/"_name"/text"; \
+ } \
+ program { name, "tab/"_name"/up"; \
+ signal, "mouse,up,1"; \
+ source, "tab/"_name"/evt"; \
+ filter, "tab/"_name"/bg" "default"; \
+ action, STATE_SET "default" 0.0; \
+ target, "tab/"_name"/bg"; \
+ target, "tab/"_name"/text"; \
+ } \
+ program { name, "tab/"_name"/clicked"; \
+ signal, "mouse,clicked,1"; \
+ filter, "tab/"_name"/bg" "default"; \
+ source, "tab/"_name"/evt"; \
+ action, SIGNAL_EMIT _name "tab"; \
+ } \
+ program { name, "tab/"_name"/select"; \
+ signal, "select,"_name; \
+ source, "prog"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "tab/"_name"/bg"; \
+ target, "tab/"_name"/text"; \
+ }
+
+ PROG_TAB("year")
+ PROG_TAB("month")
+ PROG_TAB("day")
+ PROG_TAB("list")
+ }
+}
--- /dev/null
+// 462 x 632
+group { name, "main/title";
+
+ images {
+ image, CALENDAR_SPIN_ICON_1 COMP;
+ image, CALENDAR_SPIN_ICON_2 COMP;
+ }
+
+ styles {
+ style { name, "main/title";
+ base, "font=SLP:style=Medium font_size=40 align=center color=#000000ff wrap=none";
+ tag, "br" "\n";
+ tag, "hilight" "+ color=#ffff";
+ tag, "b" "+ color=#ffff";
+ tag, "g38" "+ color=#879E19 font="FONT_LIG" font_size=38";
+ tag, "tab" "\t";
+ }
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "title/text";
+ type, TEXTBLOCK;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ fixed, 0 1;
+ rel1 { relative, 1.0 0.5; to_x, "title/left"; to_y, "base"; }
+ rel2 { relative, 0.0 0.5; to_x, "title/right"; to_y, "base"; }
+ text {
+ style, "main/title";
+ min, 0 1;
+ }
+ }
+ }
+
+ part { name, "title/left";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 58 0;
+ fixed, 1 0;
+ rel1.to, "base";
+ rel2 {
+ relative, 0.0 1.0;
+ to, "base";
+ }
+ align, 0.0 0.5;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "title/left/img";
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 12 24;
+ fixed, 1 1;
+ rel1 { relative, 0.5 0.5; to, "title/left"; }
+ rel2 { relative, 0.5 0.5; to, "title/left"; }
+ align, 0.5 0.5;
+ image.normal, "57_calendar_spin_01_icon.png";
+ }
+ }
+
+ part { name, "title/right";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 58 0;
+ fixed, 1 0;
+ rel1 {
+ relative, 1.0 0.0;
+ to, "base";
+ }
+ rel2.to, "base";
+ align, 1.0 0.5;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "title/right/img";
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 12 24;
+ fixed, 1 1;
+ rel1 { relative, 0.5 0.5; to, "title/right"; }
+ rel2 { relative, 0.5 0.5; to, "title/right"; }
+ align, 0.5 0.5;
+ image.normal, "57_calendar_spin_02_icon.png";
+ }
+ }
+ }
+
+ programs {
+ program { name, "title/left/down";
+ signal, "mouse,down,1";
+ source, "title/left";
+ action, SIGNAL_EMIT "start,dec" "title";
+ }
+
+ program { name, "title/left/up";
+ signal, "mouse,up,1";
+ source, "title/left";
+ action, SIGNAL_EMIT "stop,dec" "title";
+ }
+
+ program { name, "title/right/down";
+ signal, "mouse,down,1";
+ source, "title/right";
+ action, SIGNAL_EMIT "start,inc" "title";
+ }
+
+ program { name, "title/right/up";
+ signal, "mouse,up,1";
+ source, "title/right";
+ action, SIGNAL_EMIT "stop,inc" "title";
+ }
+ }
+}
--- /dev/null
+// 462 x 580
+// day block in week view
+#define WDB(_pos) \
+ part { name, "wdb/"#_pos"/base"; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos % 2 / 2) \
+ (_pos / 2 / 4 - _pos % 2 / 2 / 4); \
+ to, "wdb/base"; \
+ } \
+ rel2 { \
+ relative, (_pos % 2 / 2 + 1 / 2) \
+ (_pos / 2 / 4 - _pos % 2 / 2 / 4 + 1 / 4); \
+ to, "wdb/base"; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "wdb/"#_pos"/sel"; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "wdb/"#_pos"/base"; \
+ rel2 { \
+ offset, 0 0; \
+ to, "wdb/"#_pos"/base"; \
+ } \
+ image { \
+ normal, CALENDAR_SELSECTED; \
+ border, 3 3 3 3; \
+ border_scale, 1; \
+ } \
+ visible, 0; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "wdb/"#_pos"/bg"; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "wdb/"#_pos"/base"; \
+ rel2.to, "wdb/"#_pos"/base"; \
+ image.normal, CALENDAR_WEEK_VIEW_PRESS; \
+ visible, 0; \
+ } \
+ description { \
+ state, "down" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "wdb/"#_pos"/title"; \
+ type, RECT; \
+ scale, 1; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "wdb/"#_pos"/base"; \
+ rel2 { \
+ relative, 1.0 0.0; \
+ offset, 0 30; \
+ to, "wdb/"#_pos"/base"; \
+ } \
+ align, 0.5 0.0; \
+ color, 195 192 179 76; \
+ } \
+ } \
+ part { name, "wdb/"#_pos"/text"; \
+ type, TEXT; \
+ scale, 1; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (72/231) 0.0; \
+ to, "wdb/"#_pos"/title"; \
+ } \
+ rel2 { \
+ relative, 1.0 1.0; \
+ to, "wdb/"#_pos"/title"; \
+ } \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 26; \
+ align, 0.0 0.5; \
+ } \
+ color, 105 95 83 255; \
+ } \
+ description { \
+ state, "sunday" 0.0; \
+ inherit, "default" 0.0; \
+ color, 200 0 0 255; \
+ } \
+ description { \
+ state, "satday" 0.0; \
+ inherit, "default" 0.0; \
+ color, 0 0 200 255; \
+ } \
+ } \
+ part { name, "wdb/"#_pos"/check"; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, 0.1 0.5; \
+ to, "wdb/"#_pos"/text"; \
+ } \
+ rel2 { \
+ relative, 0.1 0.5; \
+ to, "wdb/"#_pos"/text"; \
+ } \
+ min, 44 44; \
+ fixed, 1 1; \
+ image.normal, CALENDAR_WEEK_VIEW_BG; \
+ align, 0.5 0.5; \
+ visible, 0; \
+ } \
+ description { \
+ state, "checked" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "wdb/"#_pos"/disable"; \
+ type, SWALLOW; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "wdb/"#_pos"/base"; \
+ rel2.to, "wdb/"#_pos"/base"; \
+ } \
+ } \
+ part { name, "wdb/"#_pos"/sw"; \
+ type, SWALLOW; \
+ mouse_events, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, 0.0 1.0; \
+ to_x, "wdb/"#_pos"/base"; \
+ to_y, "wdb/"#_pos"/title"; \
+ } \
+ rel2.to, "wdb/"#_pos"/base"; \
+ } \
+ description { \
+ state, "state_1" 0.0; \
+ inherit, "default" 0.0; \
+ rel1 { \
+ relative, 0.0 1.0; \
+ to_x, "wdb/"#_pos"/base"; \
+ to_y, "wdb/"#_pos"/title"; \
+ } \
+ rel2 { \
+ relative, 1.0 (1/3); \
+ offset, 0 30; \
+ to_x, "wdb/"#_pos"/base"; \
+ to_y, "wdb/"#_pos"/base"; \
+ } \
+ } \
+ description { \
+ state, "state_2" 0.0; \
+ inherit, "default" 0.0; \
+ rel1 { \
+ relative, 0.0 1.0; \
+ to_x, "wdb/"#_pos"/base"; \
+ to_y, "wdb/"#_pos"/title"; \
+ } \
+ rel2 { \
+ relative, 1.0 (2/3); \
+ offset, 0 30; \
+ to_x, "wdb/"#_pos"/base"; \
+ to_y, "wdb/"#_pos"/base"; \
+ } \
+ } \
+ } \
+ programs { \
+ program { name, "wdb/"#_pos"/down"; \
+ signal, "mouse,down,1"; \
+ source, "wdb/"#_pos"/base"; \
+ action, STATE_SET "down" 0.0; \
+ target, "wdb/"#_pos"/bg"; \
+ } \
+ program { name, "wdb/"#_pos"/mouse_down"; \
+ signal, "mouse,down,1"; \
+ source, "wdb/"#_pos"/base"; \
+ action, SIGNAL_EMIT #_pos "down"; \
+ } \
+ program { name, "wdb/"#_pos"/up"; \
+ signal, "mouse,up,1"; \
+ source, "wdb/"#_pos"/base"; \
+ action, STATE_SET "default" 0.0; \
+ target, "wdb/"#_pos"/bg"; \
+ } \
+ program { name, "wdb/"#_pos"/click"; \
+ signal, "mouse,clicked,1"; \
+ source, "wdb/"#_pos"/base"; \
+ action, SIGNAL_EMIT #_pos "cal"; \
+ } \
+ program { name, "wdb/"#_pos"/weekday"; \
+ signal, "weekday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "wdb/"#_pos"/text"; \
+ } \
+ program { name, "wdb/"#_pos"/sunday"; \
+ signal, "sunday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "sunday" 0.0; \
+ target, "wdb/"#_pos"/text"; \
+ } \
+ program { name, "wdb/"#_pos"/satday"; \
+ signal, "satday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "satday" 0.0; \
+ target, "wdb/"#_pos"/text"; \
+ } \
+ program { name, "wdb/"#_pos"/select"; \
+ signal, "select,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "wdb/"#_pos"/sel"; \
+ } \
+ program { name, "wdb/"#_pos"/unselect"; \
+ signal, "unselect,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "wdb/"#_pos"/sel"; \
+ } \
+ program { name, "wdb/"#_pos"/set_check"; \
+ signal, "check,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "checked" 0.0; \
+ target, "wdb/"#_pos"/check"; \
+ } \
+ program { name, "wdb/"#_pos"/unset_check"; \
+ signal, "uncheck,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "wdb/"#_pos"/check"; \
+ } \
+ program { name, "wdb/"#_pos"/set_sw_1"; \
+ signal, "set_state_1,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "state_1" 0.0; \
+ target, "wdb/"#_pos"/sw"; \
+ } \
+ program { name, "wdb/"#_pos"/set_sw_2"; \
+ signal, "set_state_2,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "state_2" 0.0; \
+ target, "wdb/"#_pos"/sw"; \
+ } \
+ program { name, "wdb/"#_pos"/set_sw_default"; \
+ signal, "set_state_default,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "wdb/"#_pos"/sw"; \
+ } \
+ }
+
+group { name, "main/week";
+
+ images {
+ image, "57_calendar_week_view_press.png" COMP;
+ image, "57_calendar_week_view_bg.png" COMP;
+ image, "calendar_selected.png" COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "wdb/base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ offset, 0 1;
+ to, "base";
+ }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ }
+ }
+
+ WDB( 0) WDB( 1)
+ WDB( 2) WDB( 3)
+ WDB( 4) WDB( 5)
+ WDB( 6) WDB( 7)
+
+ part { name, "wdb/line/top";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2 {
+ relative, 1.0 0.0;
+ offset, -1 0;
+ to, "base";
+ }
+ color, 195 192 179 255;
+ }
+ }
+
+ part { name, "wdb/line/vertical";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.5 0.0;
+ to, "base";
+ }
+ rel2 {
+ relative, 0.5 1.0;
+ offset, 0 -1;
+ to, "base";
+ }
+ color, 195 192 179 255;
+ }
+ }
+ }
+}
--- /dev/null
+group { name, "main/week/more";
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "text";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ text {
+ font, "SLP:style=Medium";
+ size, 40;
+ align, 0.5 0.5;
+ text, "...";
+ }
+ }
+ }
+ }
+}
+
+group { name, "main/week/1line";
+
+ images {
+ image, CALENDAR_WEEK_ARROW_FOCUS_ICON COMP;
+ image, CALENDAR_WEEK_ARROW_ICON COMP;
+ image, CALENDAR_WEEK_VIEW_PRESS COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ min, 240 20;
+ fixed, 1 1;
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ visible, 1;
+ }
+ }
+ part { name, "base/bg";
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ image.normal, CALENDAR_WEEK_VIEW_PRESS;
+ visible, 0;
+ }
+ description {
+ state, "down" 0.0;
+ inherit, "default" 0.0;
+ visible, 1;
+ }
+ }
+ part { name, "icon_bg";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 24;
+ fixed, 1 1;
+ rel1 {
+ relative, 0.0 0.0;
+ to, "base";
+ }
+ rel2 {
+ relative, 0.0 1.0;
+ to, "base";
+ }
+ align, 0.0 0.5;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "icon";
+ type, SWALLOW;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 10 24;
+ fixed, 1 1;
+ rel1 {
+ relative, 0.0 0.0;
+ to, "icon_bg";
+ }
+ rel2 {
+ relative, 0.0 0.0;
+ to, "icon_bg";
+ }
+ }
+ }
+
+ part { name, "text_title";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "icon_bg"; to_y, "base";
+ }
+
+ rel2 {
+ relative, 1.0 0.5;
+ to_x, "base"; to_y, "base";
+ }
+ text {
+ font, "SLP:style=Medium";
+ size, 30;
+ align, 0.0 0.5;
+ text, "...";
+ }
+ color, 255 255 255 255;
+ }
+ }
+
+ part { name, "text_location";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.5;
+ to_x, "icon_bg"; to_y, "base";
+ }
+
+ rel2 {
+ relative, 1.0 1.0;
+ to_x, "base"; to_y, "base";
+ }
+ text {
+ font, "SLP:style=Medium";
+ size, 22;
+ align, 0.0 0.5;
+ text, "...";
+ }
+ color, 240 240 240 255;
+ }
+ }
+ programs {
+ program { name, "base/down";
+ signal, "mouse,down,1";
+ source, "base";
+ action, STATE_SET "down" 0.0;
+ target, "base/bg";
+ }
+ program { name, "base/up";
+ signal, "mouse,up,1";
+ source, "base";
+ action, STATE_SET "default" 0.0;
+ target, "base/bg";
+ }
+ }
+ }
+}
--- /dev/null
+// day block in year
+#define SDB(_pos) \
+ part { name, "sdb/"#_pos"/base"; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos % 7 / 7) \
+ (_pos / 7 / 6 - _pos % 7 / 7 / 6); \
+ to, "sdb/base"; \
+ } \
+ rel2 { \
+ relative, (_pos % 7 / 7 + 1 / 7) \
+ (_pos / 7 / 6 - _pos % 7 / 7 / 6 + 1 / 6); \
+ to, "sdb/base"; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "sdb/"#_pos"/today"; \
+ type, RECT; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "sdb/"#_pos"/base"; \
+ rel2.to, "sdb/"#_pos"/base"; \
+ visible, 0; \
+ } \
+ description { \
+ state, "today" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_TODAY_FOR_YEAR_CAL; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "sdb/"#_pos"/text"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "sdb/"#_pos"/base"; \
+ rel2.to, "sdb/"#_pos"/base"; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 15; \
+ align, 0.5 0.5; \
+ } \
+ color, COLOR_OF_DEFAULT_TEXT_FOR_YEAR_CAL; \
+ } \
+ description { \
+ state, "sunday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_SUNDAY_TEXT_FOR_YEAR_CAL; \
+ } \
+ description { \
+ state, "satday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_SATDAY_TEXT_FOR_YEAR_CAL; \
+ } \
+ } \
+ programs { \
+ program { name, "sdb/"#_pos"/weekday"; \
+ signal, "weekday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "sdb/"#_pos"/text"; \
+ } \
+ program { name, "sdb/"#_pos"/sunday"; \
+ signal, "sunday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "sunday" 0.0; \
+ target, "sdb/"#_pos"/text"; \
+ } \
+ program { name, "sdb/"#_pos"/satday"; \
+ signal, "satday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "satday" 0.0; \
+ target, "sdb/"#_pos"/text"; \
+ } \
+ program { name, "sdb/"#_pos"/set_today"; \
+ signal, "today,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "today" 0.0; \
+ target, "sdb/"#_pos"/today"; \
+ } \
+ }
+
+// day block header in year
+#define SDH(_pos) \
+ part { name, "sdh/"#_pos"/base"; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos % 7 / 7) 0.0; \
+ to, "sdh/base"; \
+ } \
+ rel2 { \
+ relative, (_pos % 7 / 7 + 1 / 7) 1.0; \
+ to, "sdh/base"; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "sdh/"#_pos"/text"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "sdh/"#_pos"/base"; \
+ rel2.to, "sdh/"#_pos"/base"; \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 12; \
+ align, 0.5 0.5; \
+ } \
+ color, COLOR_OF_DEFAULT_TEXT_FOR_YEAR_CAL; \
+ } \
+ description { \
+ state, "sunday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_SUNDAY_TEXT_FOR_YEAR_CAL; \
+ } \
+ description { \
+ state, "satday" 0.0; \
+ inherit, "default" 0.0; \
+ color, COLOR_OF_SATDAY_TEXT_FOR_YEAR_CAL; \
+ } \
+ } \
+ programs { \
+ program { name, "sdh/"#_pos"/weekday"; \
+ signal, "weekday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "sdh/"#_pos"/text"; \
+ } \
+ program { name, "sdh/"#_pos"/sunday"; \
+ signal, "sunday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "sunday" 0.0; \
+ target, "sdh/"#_pos"/text"; \
+ } \
+ program { name, "sdh/"#_pos"/satday"; \
+ signal, "satday,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "satday" 0.0; \
+ target, "sdh/"#_pos"/text"; \
+ } \
+ }
+
+group { name, "main/year/cal";
+
+ images {
+ image, CALENDAR_YEAR_VIEW_BG COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "sdh/base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.02 0.02;
+ to, "base";
+ }
+ rel2 {
+ relative, 0.98 (0.02 + (1 / 7));
+ to, "base";
+ }
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "sdh/line";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.0 1.0; offset, 0 -1; to, "sdh/base";
+ }
+ rel2.to, "sdh/base";
+ color, COLOR_OF_LINE_FOR_YEAR_CAL;
+ }
+ }
+
+ part { name, "sdb/base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 0.02 1.0;
+ to_x, "base"; to_y, "sdh/base";
+ }
+ rel2 {
+ relative, 0.98 0.98;
+ to, "base";
+ }
+ color, 0 0 0 0;
+ }
+ }
+
+ SDH(0) SDH(1) SDH(2) SDH(3) SDH(4) SDH(5) SDH(6)
+
+ SDB( 0) SDB( 1) SDB( 2) SDB( 3) SDB( 4) SDB( 5) SDB( 6)
+ SDB( 7) SDB( 8) SDB( 9) SDB(10) SDB(11) SDB(12) SDB(13)
+ SDB(14) SDB(15) SDB(16) SDB(17) SDB(18) SDB(19) SDB(20)
+ SDB(21) SDB(22) SDB(23) SDB(24) SDB(25) SDB(26) SDB(27)
+ SDB(28) SDB(29) SDB(30) SDB(31) SDB(32) SDB(33) SDB(34)
+ SDB(35) SDB(36) SDB(37) SDB(38) SDB(39) SDB(40) SDB(41)
+ }
+
+}
--- /dev/null
+//480 x 620
+//base_real 690x850
+//HD size 720x1280
+#define HD_SCALE 800/1280
+#define WIDTH_OF_YEAR_VIEW (WIDTH_OF_HD-PAD)
+#define PAD 15
+
+#define MB(_pos) \
+ part { name, "mb/"#_pos"/base"; \
+ type, RECT; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos % 3 / 3) \
+ (_pos / 3 / 4 - _pos % 3 / 3 / 4); \
+ to, "base_real"; \
+ } \
+ rel2 { \
+ relative, (_pos % 3 / 3 + 1 / 3) \
+ (_pos / 3 / 4 - _pos % 3 / 3 / 4 + 1 / 4); \
+ to, "base_real"; \
+ } \
+ color, 0 0 0 0; \
+ } \
+ } \
+ part { name, "mb/"#_pos"/sel"; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "mb/"#_pos"/base"; \
+ rel2 { \
+ offset, 0 0; \
+ to, "mb/"#_pos"/base"; \
+ } \
+ image { \
+ normal, CALENDAR_SELSECTED; \
+ border, 3 3 3 3; \
+ border_scale, 1; \
+ } \
+ visible, 0; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "mb/"#_pos"/bg"; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "mb/"#_pos"/base"; \
+ rel2 { \
+ offset, 0 0; \
+ to, "mb/"#_pos"/base"; \
+ } \
+ image.normal, CALENDAR_WEEK_VIEW_PRESS; \
+ visible, 0; \
+ } \
+ description { \
+ state, "selected" 0.0; \
+ inherit, "default" 0.0; \
+ visible, 1; \
+ } \
+ } \
+ part { name, "mb/"#_pos"/text"; \
+ type, TEXT; \
+ mouse_events, 0; \
+ scale, 1; \
+ description { \
+ state, "default" 0.0; \
+ rel1.to, "mb/"#_pos"/base"; \
+ rel2 { \
+ relative, 1.0 0.15; \
+ to, "mb/"#_pos"/base"; \
+ } \
+ text { \
+ font, "SLP:style=Medium"; \
+ size, 22; \
+ align, 0.5 0.5; \
+ } \
+ color, 0 0 0 255; \
+ } \
+ } \
+ part { name, "mb/"#_pos"/sw"; \
+ type, SWALLOW; \
+ mouse_events, 0; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, 0.0 0.15; \
+ to, "mb/"#_pos"/base"; \
+ } \
+ rel2.to, "mb/"#_pos"/base"; \
+ } \
+ } \
+ programs { \
+ program { name, "mb/"#_pos"/down"; \
+ signal, "mouse,down,1"; \
+ source, "mb/"#_pos"/base"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "mb/"#_pos"/bg"; \
+ } \
+ program { name, "mb/"#_pos"/up"; \
+ signal, "mouse,up,1"; \
+ source, "mb/"#_pos"/base"; \
+ action, STATE_SET "default" 0.0; \
+ target, "mb/"#_pos"/bg"; \
+ } \
+ program { name, "mb/"#_pos"/click"; \
+ signal, "mouse,clicked,1"; \
+ source, "mb/"#_pos"/base"; \
+ action, SIGNAL_EMIT #_pos "cal"; \
+ } \
+ program { name, "mb/"#_pos"/select"; \
+ signal, "select,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "selected" 0.0; \
+ target, "mb/"#_pos"/sel"; \
+ } \
+ program { name, "mb/"#_pos"/unselect"; \
+ signal, "unselect,"#_pos; \
+ source, "prog"; \
+ action, STATE_SET "default" 0.0; \
+ target, "mb/"#_pos"/sel"; \
+ } \
+ }
+
+#define HANDLE(_pos) \
+ part { name, "handle/"#_pos"/sw"; \
+ type, SWALLOW; \
+ description { \
+ state, "default" 0.0; \
+ rel1 { \
+ relative, (_pos % 3 / 3) \
+ (_pos / 3 / 4 - _pos % 3 / 3 / 4); \
+ to, "base"; \
+ } \
+ rel2 { \
+ relative, (_pos % 3 / 3 + 1 / 3) \
+ (_pos / 3 / 4 - _pos % 3 / 3 / 4 + 1 / 4); \
+ to, "base"; \
+ } \
+ } \
+ } \
+
+
+group { name, "year/layout";
+
+ parts {
+
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ rel1 { relative, 0.0 0.0; }
+ rel2 { relative, 1.0 1.0; }
+ }
+ }
+
+ part { name, "content";
+ type, SWALLOW;
+ clip_to, "clip";
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ }
+ }
+
+ part { name, "edje/handle";
+ type, SWALLOW;
+ clip_to, "clip";
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ }
+ }
+
+ part { name, "content/left";
+ type, SWALLOW;
+ clip_to, "clip";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, -1.0 0.0; to, "content"; }
+ rel2 { relative, 0.0 1.0; to, "content";}
+ }
+ }
+
+ part { name, "content/right";
+ type, SWALLOW;
+ clip_to, "clip";
+ description {
+ state, "default" 0.0;
+ rel1 { relative, 1.0 0.0; to, "content"; }
+ rel2 { relative, 2.0 1.0; to, "content";}
+ }
+ }
+
+ part { name, "clip";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1.to, "content";
+ rel2.to, "content";
+ }
+ }
+ }
+
+}
+
+group { name, "year/edje/handle";
+
+ parts {
+
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ rel1 { relative, 0.0 0.0; }
+ rel2 { relative, 1.0 1.0; }
+ }
+ }
+
+ HANDLE(0) HANDLE(1) HANDLE(2)
+ HANDLE(3) HANDLE(4) HANDLE(5)
+ HANDLE(6) HANDLE(7) HANDLE(8)
+ HANDLE(9) HANDLE(10) HANDLE(11)
+ }
+}
+
+group { name, "main/year/months";
+
+ images {
+ image, "calendar_selected.png" COMP;
+ image, "57_calendar_week_view_press.png" COMP;
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 244 240 230 255;
+ }
+ }
+ part { name, "base_real";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, PAD/WIDTH_OF_HD 0/HEIGHT_OF_HD; }
+ rel2 { relative, WIDTH_OF_YEAR_VIEW/WIDTH_OF_HD HEIGHT_OF_HD/HEIGHT_OF_HD; }
+ color, 0 0 0 0;
+ }
+ }
+
+ MB(0) MB(1) MB(2)
+ MB(3) MB(4) MB(5)
+ MB(6) MB(7) MB(8)
+ MB(9) MB(10) MB(11)
+ }
+}
--- /dev/null
+group { name, "edit/participant";\r
+\r
+ parts {\r
+ part { name, "base";\r
+ type, RECT;\r
+ scale,1;\r
+ description {\r
+ state, "default" 0.0;\r
+ visible, 0;\r
+ }\r
+ }\r
+ part { name, "mbe/bg";\r
+ type, RECT;\r
+ description {\r
+ state, "default" 0.0;\r
+ rel1.to, "base";\r
+ rel2.to, "mbe/sw";\r
+ visible, 0;\r
+ }\r
+ }\r
+ /*part { name, "label/base";\r
+ type, RECT;\r
+ scale, 1;\r
+ description {\r
+ state, "default" 0.0;\r
+ min, 0 40;\r
+ fixed, 0 1;\r
+ rel1.to, "base";\r
+ rel2 { relative, 1.0 0.0; to, "base"; }\r
+ color, 0 0 0 0;\r
+ align, 0.0 0.0;\r
+ }\r
+ }\r
+ part { name, "label/left";\r
+ type, RECT;\r
+ scale, 1;\r
+ description {\r
+ state, "default" 0.0;\r
+ min, 20 0;\r
+ fixed, 1 0;\r
+ rel1.to, "label/base";\r
+ rel2 { relative, 0.0 0.0; to, "label/base"; }\r
+ align, 0.0 0.0;\r
+ color, 0 0 0 0;\r
+ }\r
+ }\r
+ part { name, "label/text";\r
+ type, TEXT;\r
+ scale, 1;\r
+ description {\r
+ state, "default" 0.0;\r
+ rel1 {\r
+ relative, 1.0 0.0;\r
+ to_x, "label/left"; to_y, "label/base";\r
+ }\r
+ rel2.to, "label/base";\r
+ text {\r
+ font, "SLP:style=Medium";\r
+ size, 24;\r
+ align, 0.0 1.0;\r
+ }\r
+ color, 0 0 0 255;\r
+ }\r
+ }*/\r
+ part { name, "mbe/sw";\r
+ type, SWALLOW;\r
+ description {\r
+ state, "default" 0.0;\r
+ //rel1 { relative, 0.0 1.0; to, "label/base"; }\r
+ rel1.to, "base";\r
+ rel2 { relative, 1.0 0.0; to, "box/base"; }\r
+ align, 0.0 0.0;\r
+ }\r
+ }\r
+\r
+ part { name, "box/base";\r
+ type, RECT;\r
+ scale, 1;\r
+ description {\r
+ state, "default" 0.0;\r
+ min, 0 106;\r
+ fixed, 0 1;\r
+ rel1 { relative, 0.0 1.0; to, "base"; }\r
+ rel2.to, "base";\r
+ visible, 0;\r
+ align, 0.5 1.0;\r
+ }\r
+ description {\r
+ state, "list" 0.0;\r
+ inherit, "default" 0.0;\r
+ min, 0 106;\r
+ }\r
+ }\r
+ part { name, "box/top_left";\r
+ type, RECT;\r
+ scale, 1;\r
+ description {\r
+ state, "default" 0.0;\r
+ min, 10 10;\r
+ fixed, 1 1;\r
+ rel1.to, "box/base";\r
+ rel2 { relative, 0.0 0.0; to, "box/base"; }\r
+ align, 0.0 0.0;\r
+ color, 0 0 0 0;\r
+ }\r
+ }\r
+ part{ name, "box/bottom_right";\r
+ type, RECT;\r
+ scale, 1;\r
+ description {\r
+ state, "default" 0.0;\r
+ min, 10 10;\r
+ fixed, 1 1;\r
+ rel1 { relative, 1.0 1.0; to, "box/base"; }\r
+ rel2.to, "box/base";\r
+ color, 0 0 0 0;\r
+ align, 1.0 1.0;\r
+ }\r
+ }\r
+ part { name, "box/sw";\r
+ type, SWALLOW;\r
+ description {\r
+ state, "default" 0.0;\r
+ rel1 { relative, 1.0 1.0; to, "box/top_left"; }\r
+ rel2 { relative, 0.0 0.0; to, "box/bottom_right"; }\r
+ visible, 1;\r
+ }\r
+ description {\r
+ state, "list" 0.0;\r
+ inherit, "default" 0.0;\r
+ visible, 0;\r
+ }\r
+ }\r
+ part { name, "list/sw";\r
+ type, SWALLOW;\r
+ description {\r
+ state, "default" 0.0;\r
+ rel1.to, "box/base";\r
+ rel2.to, "box/base";\r
+ visible, 0;\r
+ }\r
+ description {\r
+ state, "list" 0.0;\r
+ inherit, "default" 0.0;\r
+ visible, 1;\r
+ }\r
+ }\r
+ }\r
+\r
+ programs {\r
+ program { name, "list/show";\r
+ signal, "show,list";\r
+ source, "prog";\r
+ action, STATE_SET "list" 0.0;\r
+ target, "box/base";\r
+ target, "box/sw";\r
+ target, "list/sw";\r
+ }\r
+ program { name, "list/hide";\r
+ signal, "hide,list";\r
+ source, "prog";\r
+ action, STATE_SET "default" 0.0;\r
+ target, "box/base";\r
+ target, "box/sw";\r
+ target, "list/sw";\r
+ }\r
+ }\r
+}\r
+\r
--- /dev/null
+#define MIN_STATE(_min) \
+ description { \
+ state, _min 0.0; \
+ inherit, "default" 0.0; \
+ image.normal, "ring/minute/58_alarm_clock_minute_"_min".png"; \
+ }
+
+#define MIN_PROG(_min) \
+ program { name, "min/"_min; \
+ signal, "min,"_min; \
+ source, "prog"; \
+ action, STATE_SET _min 0.0; \
+ target, "image/minute"; \
+ }
+
+#define HOUR_STATE(_hour) \
+ description { \
+ state, _hour 0.0; \
+ inherit, "default" 0.0; \
+ image.normal, "ring/hour/58_alarm_clock_hour_"_hour".png"; \
+ }
+
+#define HOUR_PROG(_hour) \
+ program { name, "hour/"_hour; \
+ signal, "hour,"_hour; \
+ source, "prog"; \
+ action, STATE_SET _hour 0.0; \
+ target, "image/hour"; \
+ }
+
+
+group { name, "ring";
+
+ images {
+ image, "ring/"CLOCK_BG COMP;
+ image, "ring/"CLOCK_BUTTON_NORMAL COMP;
+ image, "ring/"CLOCK_BUTTON_PRESS COMP;
+ image, "ring/"ALARM_CLOCK_BG_AM COMP;
+ image, "ring/"ALARM_CLOCK_BG_PM COMP;
+#include "inc.ring.image.edc"
+ }
+
+ parts {
+ part { name, "base";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "bg";
+ description {
+ state, "default" 0.0;
+ rel1.to, "base";
+ rel2.to, "base";
+ image.normal, "ring/58_clock_bg.png";
+ }
+ }
+ part { name, "padding/l";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 9 0;
+ fixed, 1 0;
+ align, 0.0 0.0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "padding/r";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 9 0;
+ fixed, 1 0;
+ align, 1.0 0.0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "padding/l/clock";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ min, 60 0;
+ fixed, 1 0;
+ align, 0.0 0.0;
+ rel1.to, "base";
+ rel2 { relative, 0.0 1.0; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "padding/r/clock";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 60 0;
+ fixed, 1 0;
+ align, 1.0 0.0;
+ rel1 { relative, 1.0 0.0; to, "base"; }
+ rel2.to, "base";
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "divider/currenttime";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 { relative, (13/20) 0.0; to, "base"; }
+ rel2 { relative, (13/20) 1.0; to, "base"; }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "rect/currenttime";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 (78/800);
+ to_x, "padding/l"; to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 (162/800);
+ to_x, "padding/r"; to_y, "base";
+ }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text/currenttime";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "rect/currenttime";
+ rel2 {
+ relative, 0.0 1.0;
+ to_x, "divider/currenttime";
+ to_y, "rect/currenttime";
+ }
+ text {
+ font, "SLP,style=Medium";
+ size, 80;
+ align, 1.0 1.0;
+ }
+ color, 255 255 255 255;
+ }
+ }
+ part { name, "text/ampm";
+ type, TEXT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 0.0;
+ to_x, "divider/currenttime";
+ to_y, "rect/currenttime";
+ }
+ rel2.to, "rect/currenttime";
+ text {
+ font, "SLP,style=Medium";
+ size, 26;
+ align, 0.0 1.0;
+ }
+ color, 255 255 255 255;
+ }
+ }
+
+ /* title */
+ part { name, "rect/title";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 (162/800);
+ to_x, "padding/l";
+ to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 (195/800);
+ to_x, "padding/r";
+ to_y, "base";
+ }
+ color, 0 0 0 0;
+ }
+ }
+ part { name, "text/title";
+ type, TEXT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ align, 0.5 0.5;
+ rel1 { to, "rect/title"; }
+ rel2 { to, "rect/title"; }
+ text {
+ font, "SLP,style=Medium";
+ size, 30;
+ align, 0.5 0.5;
+ }
+ color, COLOR_OF_TEXT_FOR_RING;
+ }
+ }
+
+ part { name, "rect/clock";
+ type, RECT;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 (260/1280);
+ to, "padding/l/clock";
+ }
+ rel2 {
+ relative, 0.0 (895/1280);
+ to, "padding/r/clock";
+ }
+ color, 0 0 0 0;
+ }
+ }
+
+ part { name, "image/clock";
+ type, IMAGE;
+ scale, 1;
+ mouse_events, 0;
+ description {
+ state, "default" 0.0;
+ rel1 { to, "rect/clock"; }
+ rel2 { to, "rect/clock"; }
+ image {
+ normal, "ring/58_alarm_clock_bg_AM.png";
+ }
+ }
+ description {
+ state, "pm" 0.0;
+ inherit, "default" 0.0;
+ image {
+ normal, "ring/58_alarm_clock_bg_PM.png";
+ }
+ }
+ description {
+ state, "am" 0.0;
+ inherit, "default" 0.0;
+ }
+ }
+
+ part { name, "image/minute";
+ type, IMAGE;
+ description {
+ state, "default" 0.0;
+ rel1.to, "rect/clock";
+ rel2.to, "rect/clock";
+ image.normal, "ring/minute/58_alarm_clock_minute_00.png";
+ }
+ MIN_STATE("00") MIN_STATE("01") MIN_STATE("02") MIN_STATE("03")
+ MIN_STATE("04") MIN_STATE("05") MIN_STATE("06") MIN_STATE("07")
+ MIN_STATE("08") MIN_STATE("09") MIN_STATE("10") MIN_STATE("11")
+ MIN_STATE("12") MIN_STATE("13") MIN_STATE("14") MIN_STATE("15")
+ MIN_STATE("16") MIN_STATE("17") MIN_STATE("18") MIN_STATE("19")
+ MIN_STATE("20") MIN_STATE("21") MIN_STATE("22") MIN_STATE("23")
+ MIN_STATE("24") MIN_STATE("25") MIN_STATE("26") MIN_STATE("27")
+ MIN_STATE("28") MIN_STATE("29") MIN_STATE("30") MIN_STATE("31")
+ MIN_STATE("32") MIN_STATE("33") MIN_STATE("34") MIN_STATE("35")
+ MIN_STATE("36") MIN_STATE("37") MIN_STATE("38") MIN_STATE("39")
+ MIN_STATE("40") MIN_STATE("41") MIN_STATE("42") MIN_STATE("43")
+ MIN_STATE("44") MIN_STATE("45") MIN_STATE("46") MIN_STATE("47")
+ MIN_STATE("48") MIN_STATE("49") MIN_STATE("50") MIN_STATE("51")
+ MIN_STATE("52") MIN_STATE("53") MIN_STATE("54") MIN_STATE("55")
+ MIN_STATE("56") MIN_STATE("57") MIN_STATE("58") MIN_STATE("59")
+ }
+ programs {
+ MIN_PROG("00") MIN_PROG("01") MIN_PROG("02") MIN_PROG("03")
+ MIN_PROG("04") MIN_PROG("05") MIN_PROG("06") MIN_PROG("07")
+ MIN_PROG("08") MIN_PROG("09") MIN_PROG("10") MIN_PROG("11")
+ MIN_PROG("12") MIN_PROG("13") MIN_PROG("14") MIN_PROG("15")
+ MIN_PROG("16") MIN_PROG("17") MIN_PROG("18") MIN_PROG("19")
+ MIN_PROG("20") MIN_PROG("21") MIN_PROG("22") MIN_PROG("23")
+ MIN_PROG("24") MIN_PROG("25") MIN_PROG("26") MIN_PROG("27")
+ MIN_PROG("28") MIN_PROG("29") MIN_PROG("30") MIN_PROG("31")
+ MIN_PROG("32") MIN_PROG("33") MIN_PROG("34") MIN_PROG("35")
+ MIN_PROG("36") MIN_PROG("37") MIN_PROG("38") MIN_PROG("39")
+ MIN_PROG("40") MIN_PROG("41") MIN_PROG("42") MIN_PROG("43")
+ MIN_PROG("44") MIN_PROG("45") MIN_PROG("46") MIN_PROG("47")
+ MIN_PROG("48") MIN_PROG("49") MIN_PROG("50") MIN_PROG("51")
+ MIN_PROG("52") MIN_PROG("53") MIN_PROG("54") MIN_PROG("55")
+ MIN_PROG("56") MIN_PROG("57") MIN_PROG("58") MIN_PROG("59")
+ }
+
+ part { name, "image/hour";
+ type, IMAGE;
+ description {
+ state, "default" 0.0;
+ rel1.to, "rect/clock";
+ rel2.to, "rect/clock";
+ image.normal, "ring/hour/58_alarm_clock_hour_08.png";
+ }
+ HOUR_STATE("00") HOUR_STATE("01") HOUR_STATE("02") HOUR_STATE("03")
+ HOUR_STATE("04") HOUR_STATE("05") HOUR_STATE("06") HOUR_STATE("07")
+ HOUR_STATE("08") HOUR_STATE("09") HOUR_STATE("10") HOUR_STATE("11")
+ HOUR_STATE("12") HOUR_STATE("13") HOUR_STATE("14") HOUR_STATE("15")
+ HOUR_STATE("16") HOUR_STATE("17") HOUR_STATE("18") HOUR_STATE("19")
+ HOUR_STATE("20") HOUR_STATE("21") HOUR_STATE("22") HOUR_STATE("23")
+ HOUR_STATE("24") HOUR_STATE("25") HOUR_STATE("26") HOUR_STATE("27")
+ HOUR_STATE("28") HOUR_STATE("29") HOUR_STATE("30") HOUR_STATE("31")
+ HOUR_STATE("32") HOUR_STATE("33") HOUR_STATE("34") HOUR_STATE("35")
+ HOUR_STATE("36") HOUR_STATE("37") HOUR_STATE("38") HOUR_STATE("39")
+ HOUR_STATE("40") HOUR_STATE("41") HOUR_STATE("42") HOUR_STATE("43")
+ HOUR_STATE("44") HOUR_STATE("45") HOUR_STATE("46") HOUR_STATE("47")
+ HOUR_STATE("48") HOUR_STATE("49") HOUR_STATE("50") HOUR_STATE("51")
+ HOUR_STATE("52") HOUR_STATE("53") HOUR_STATE("54") HOUR_STATE("55")
+ HOUR_STATE("56") HOUR_STATE("57") HOUR_STATE("58") HOUR_STATE("59")
+ }
+ programs {
+ HOUR_PROG("00") HOUR_PROG("01") HOUR_PROG("02") HOUR_PROG("03")
+ HOUR_PROG("04") HOUR_PROG("05") HOUR_PROG("06") HOUR_PROG("07")
+ HOUR_PROG("08") HOUR_PROG("09") HOUR_PROG("10") HOUR_PROG("11")
+ HOUR_PROG("12") HOUR_PROG("13") HOUR_PROG("14") HOUR_PROG("15")
+ HOUR_PROG("16") HOUR_PROG("17") HOUR_PROG("18") HOUR_PROG("19")
+ HOUR_PROG("20") HOUR_PROG("21") HOUR_PROG("22") HOUR_PROG("23")
+ HOUR_PROG("24") HOUR_PROG("25") HOUR_PROG("26") HOUR_PROG("27")
+ HOUR_PROG("28") HOUR_PROG("29") HOUR_PROG("30") HOUR_PROG("31")
+ HOUR_PROG("32") HOUR_PROG("33") HOUR_PROG("34") HOUR_PROG("35")
+ HOUR_PROG("36") HOUR_PROG("37") HOUR_PROG("38") HOUR_PROG("39")
+ HOUR_PROG("40") HOUR_PROG("41") HOUR_PROG("42") HOUR_PROG("43")
+ HOUR_PROG("44") HOUR_PROG("45") HOUR_PROG("46") HOUR_PROG("47")
+ HOUR_PROG("48") HOUR_PROG("49") HOUR_PROG("50") HOUR_PROG("51")
+ HOUR_PROG("52") HOUR_PROG("53") HOUR_PROG("54") HOUR_PROG("55")
+ HOUR_PROG("56") HOUR_PROG("57") HOUR_PROG("58") HOUR_PROG("59")
+ }
+
+ part { name, "image/stop";
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "rect/stop";
+ rel2.to, "rect/stop";
+ image {
+ normal, "ring/58_clock_button_normal.png";
+ border, 13 13 13 13;
+ border_scale, 1;
+ }
+ }
+ description {
+ state, "pressed" 0.0;
+ inherit, "default" 0.0;
+ image {
+ normal, "ring/58_clock_button_press.png";
+ border, 13 13 13 13;
+ border_scale, 1;
+ }
+ }
+ }
+ part { name, "text/stop";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1.to, "image/stop";
+ rel2.to, "image/stop";
+ text {
+ font, "SLP,style=Medium";
+ size, 35;
+ align, 0.5 0.5;
+ }
+ color, COLOR_OF_DEFAULT_STOP_FOR_RING;
+ }
+ description {
+ state, "pressed" 0.0;
+ inherit, "default" 0.0;
+ color, 255 255 255 255;
+ }
+ }
+ part { name, "rect/stop";
+ type, RECT;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ relative, 1.0 (630/800);
+ to_x, "padding/l";
+ to_y, "base";
+ }
+ rel2 {
+ relative, 0.0 (722/800);
+ to_x, "padding/r";
+ to_y, "base";
+ }
+ color, 0 0 0 0;
+ }
+ }
+ }
+
+ programs {
+ program { name, "go/am";
+ signal, "go,am";
+ source, "prog";
+ action, STATE_SET "am" 0.0;
+ target, "image/clock";
+ }
+ program { name, "go/pm";
+ signal, "go,pm";
+ source, "prog";
+ action, STATE_SET "pm" 0.0;
+ target, "image/clock";
+ }
+ program { name, "down/stop";
+ signal, "mouse,down,1";
+ source, "rect/stop";
+ action, STATE_SET "pressed" 0.0;
+ target, "image/stop";
+ target, "text/stop";
+ }
+ program { name, "up/stop";
+ signal, "mouse,up,1";
+ source, "rect/stop";
+ action, STATE_SET "default" 0.0;
+ target, "image/stop";
+ target, "text/stop";
+ }
+ program { name, "clicked/stop";
+ signal, "mouse,clicked,1";
+ source, "rect/stop";
+ action, SIGNAL_EMIT "stop" "edj";
+ }
+ }
+}
+
--- /dev/null
+image, "ring/hour/58_alarm_clock_hour_00.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_01.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_02.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_03.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_04.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_05.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_06.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_07.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_08.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_09.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_10.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_11.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_12.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_13.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_14.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_15.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_16.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_17.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_18.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_19.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_20.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_21.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_22.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_23.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_24.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_25.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_26.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_27.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_28.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_29.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_30.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_31.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_32.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_33.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_34.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_35.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_36.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_37.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_38.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_39.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_40.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_41.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_42.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_43.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_44.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_45.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_46.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_47.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_48.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_49.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_50.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_51.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_52.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_53.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_54.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_55.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_56.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_57.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_58.png" COMP;
+image, "ring/hour/58_alarm_clock_hour_59.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_00.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_01.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_02.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_03.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_04.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_05.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_06.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_07.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_08.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_09.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_10.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_11.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_12.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_13.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_14.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_15.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_16.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_17.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_18.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_19.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_20.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_21.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_22.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_23.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_24.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_25.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_26.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_27.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_28.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_29.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_30.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_31.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_32.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_33.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_34.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_35.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_36.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_37.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_38.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_39.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_40.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_41.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_42.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_43.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_44.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_45.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_46.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_47.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_48.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_49.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_50.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_51.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_52.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_53.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_54.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_55.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_56.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_57.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_58.png" COMP;
+image, "ring/minute/58_alarm_clock_minute_59.png" COMP;
--- /dev/null
+collections {
+ group { name, "icon";
+ externals {
+ external, "icon_calendar";
+ }
+
+ parts {
+ part { name, "icon";
+ type, EXTERNAL;
+ source, "icon_calendar";
+ description {
+ state, "default" 0.0;
+ }
+ }
+ }
+ }
+}
--- /dev/null
+efl-calendar (0.5.58) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.58
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Sat, 7 Apr 2012 13:55:04 +0900
+
+efl-calendar (0.5.57) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.57
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Fri, 6 Apr 2012 20:55:04 +0900
+
+efl-calendar (0.5.56) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.56
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Thu, 5 Apr 2012 17:55:04 +0900
+
+efl-calendar (0.5.55) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.55
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Thu, 5 Apr 2012 14:55:04 +0900
+
+efl-calendar (0.5.54) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.54
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Wed, 4 Apr 2012 14:55:04 +0900
+
+efl-calendar (0.5.53) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.53
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Mon, 3 Apr 2012 14:55:04 +0900
+
+efl-calendar (0.5.52) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.52
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Wed, 28 Mar 2012 22:55:04 +0900
+
+efl-calendar (0.5.51) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.51
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Tue, 27 Mar 2012 23:55:04 +0900
+
+efl-calendar (0.5.50) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.50
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Mon, 26 Mar 2012 22:41:04 +0900
+
+efl-calendar (0.5.49) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.49
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Sat, 24 Mar 2012 11:41:04 +0900
+
+efl-calendar (0.5.48) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.48
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Wed, 21 Mar 2012 20:41:04 +0900
+
+efl-calendar (0.5.47) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.47
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Wed, 21 Mar 2012 14:41:04 +0900
+
+efl-calendar (0.5.46) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.46
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Fri, 16 Mar 2012 20:41:04 +0900
+
+efl-calendar (0.5.45) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.45
+
+ -- Yin Shouchen <shouchen.yin@samsung.com> Sat, 25 Feb 2012 19:45:04 +0900
+
+efl-calendar (0.5.44) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.44
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Thu, 23 Feb 2012 10:41:04 +0900
+
+efl-calendar (0.5.43) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.43
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Wed, 22 Feb 2012 22:41:04 +0900
+
+efl-calendar (0.5.42) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.42
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Thu, 16 Feb 2012 15:41:04 +0900
+
+efl-calendar (0.5.41) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.41
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Fri, 30 Dec 2011 18:41:04 +0900
+
+efl-calendar (0.5.40) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.40
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Fri, 30 Dec 2011 18:41:04 +0900
+
+efl-calendar (0.5.39) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.39
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Fri, 30 Dec 2011 18:41:04 +0900
+
+efl-calendar (0.5.38) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.38
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Thu, 29 Dec 2011 22:31:14 +0900
+
+efl-calendar (0.5.37) unstable; urgency=low
+
+ * Release pkg.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.37
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Wed, 28 Dec 2011 15:35:19 +0900
+
+efl-calendar (0.5.36) unstable; urgency=low
+
+ * Add accounts-svc dependency for ug.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.36
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Tue, 27 Dec 2011 14:57:39 +0900
+
+efl-calendar (0.5.35) unstable; urgency=low
+
+ * Update code.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.35
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Fri, 23 Dec 2011 11:15:58 +0900
+
+efl-calendar (0.5.34) unstable; urgency=low
+
+ * Change name.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.34
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Thu, 22 Dec 2011 18:54:32 +0900
+
+efl-calendar (0.5.33) unstable; urgency=low
+
+ * Change name.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.33
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Thu, 22 Dec 2011 18:02:39 +0900
+
+efl-calendar (0.5.32) unstable; urgency=low
+
+ * Fix auto scrolling issue.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.32
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Thu, 22 Dec 2011 16:53:06 +0900
+
+efl-calendar (0.5.31) unstable; urgency=low
+
+ * Remove map, share option.
+ * Git: pkgs/e/efl-calendar
+ * Tag: efl-calendar_0.5.31
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Wed, 21 Dec 2011 20:20:40 +0900
+
+efl-calendar (0.5.30) unstable; urgency=low
+
+ * Release pkg.
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Tue, 20 Dec 2011 08:22:42 +0900
+
+efl-calendar (0.5.29) unstable; urgency=low
+
+ * Initial release.
+
+ -- Taeho Kang <taeho84.kang@samsung.com> Wed, 07 Dec 2011 12:00:00 +0900
--- /dev/null
+Source: efl-calendar
+Section: devel
+Priority: extra
+Maintainer: Youngjae Shin <yj99.shin@samsung.com>, Taeho Kang <taeho84.kang@samsung.com>
+Uploaders: Taeho Kang <taeho84.kang@samsung.com>
+Build-Depends: debhelper (>= 5), libappcore-efl-dev, libslp-utilx-dev, libslp-calendar-dev, dlog-dev, libalarm-dev, libslp-utilx-dev, libmm-player-dev, libaccounts-svc-dev, libui-gadget-dev, libheynoti-dev, libui-gadget-dev, libslp-pm-dev, libicu-dev, capi-appfw-application-dev, capi-media-wav-player-dev, capi-media-sound-manager-dev
+Standards-Version: 3.7.2
+
+Package: org.tizen.efl-calendar
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Calendar application
+ Beat UI Calendar application
+
+Package: org.tizen.calendar-viewer
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Calendar viewer application
+
+Package: org.tizen.efl-calendar-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Calendar application (debug package)
+ Beat UI Calendar application (debug package)
+
+Package: libug-calendar-efl
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, org.tizen.efl-calendar, org.tizen.calendar-viewer
+Description: Calendar UI gadget (EFL)
--- /dev/null
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
\ No newline at end of file
--- /dev/null
+/opt/ug/lib/*.so
--- /dev/null
+#!/bin/sh
+
+mkdir -p /opt/data/ug-calendar
+
+if [ ${USER} = "root" ]
+then
+ chgrp 6003 /opt/data/ug-calendar
+ chmod 770 /opt/data/ug-calendar
+fi
\ No newline at end of file
--- /dev/null
+/opt/apps/org.tizen.calendar-viewer/*
+/opt/share/applications/org.tizen.calendar-viewer.desktop
--- /dev/null
+@PREFIX@/bin/efl-calendar
+@RESDIR@/locale/*
+@RESDIR@/icons/*
+@RESDIR@/edje/*.edj
+@RESDIR@/sounds/*
+/opt/share/applications/org.tizen.efl-calendar.desktop
--- /dev/null
+#!/bin/sh
+# Automatically added by dh_makeshlibs
+if [ "$1" = "configure" ]; then
+ ldconfig
+fi
+# End automatically added section
+
+#if [ ${USER} = "root" ]
+if [ "`id -u`" = "0" ]
+then
+ # 5000 is inhouse user id
+ # do not use relative path
+ vconftool set -t int db/calendar/focusview 0 -u 5000
+ vconftool set -t int db/calendar/send 0 -u 5000
+ vconftool set -t int db/calendar/timezone_on_off 0 -u 5000
+ vconftool set -t string db/calendar/timezone_path "Asia/Seoul" -u 5000
+ vconftool set -t string db/calendar/timezone_city "IDS_WCL_BODY_CITYNAME_SEOUL" -u 5000
+ vconftool set -t string db/calendar/timezone_offset "GMT+9" -u 5000
+fi
--- /dev/null
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+CFLAGS = -Wall -g
+LDFLAGS ?=
+PREFIX ?= /opt/apps/org.tizen.efl-calendar
+RESDIR ?= /opt/apps/org.tizen.efl-calendar/res
+DATADIR ?= /opt/apps/org.tizen.efl-calendar/data
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
+
+CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+ mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && \
+ CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX="$(PREFIX)"
+
+ touch configure-stamp
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ cd $(CMAKE_BUILD_DIR) && $(MAKE)
+
+ for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+ cat $$f > $${f%.in}; \
+ sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
+ sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
+ sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
+ done
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ rm -rf $(CMAKE_BUILD_DIR)
+
+ for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+ rm -f $${f%.in}; \
+ done
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+# dh_installdirs
+
+ # Add here commands to install the package into debian/wavplayer.
+ cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+# dh_installchangelogs
+# dh_installdocs
+# dh_installexamples
+ dh_install --sourcedir=debian/tmp
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+# dh_installman
+ dh_link
+ dh_strip --dbg-package=org.tizen.efl-calendar-dbg
+ dh_compress
+ dh_fixperms
+# dh_perl
+ dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+#ifndef __CALENDAR_ACCOUNT_SVC_H__
+#define __CALENDAR_ACCOUNT_SVC_H__
+
+#include <account.h>
+#include <account-types.h>
+
+#include "cld.h"
+
+struct _acct {
+ int id;
+ char *name;
+ char *icon;
+ void *data;
+ Evas_Object* check;
+};
+
+#define CAL_ACCOUNT_SVC_STRUCT_GET_INT(acct, field, r) account_svc_get_value_int(acct, field, r);
+#define CAL_ACCOUNT_SVC_STRUCT_GET_STR(acct, field, r) account_svc_get_value_str(acct, field, r);
+
+Eina_List* cal_account_svc_get_account_list(void);
+void cal_account_svc_free_account_list(Eina_List **); // don't care about "data"
+char* cal_account_svc_get_account_icon_path(int account_id);
+
+#endif /* __CALENDAR_ACCOUNT_SVC_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_CAL_SVC_H__
+#define __CALENDAR_CAL_SVC_H__
+
+#include <time.h>
+#include <Elementary.h>
+#include <calendar-svc-provider.h>
+
+struct tmnode {
+ time_t st;
+ time_t et;
+ int repeat;
+ cal_struct *cs;
+};
+
+struct calsvc {
+ Eina_List *cslist;
+ Eina_List *tmlist;
+};
+
+struct _cs {
+ cal_struct* cs;
+ Evas_Object* check;
+ void* at;
+};
+
+typedef struct __cal_account_calendar_color Calendar_color;
+struct __cal_account_calendar_color
+{
+ int red;
+ int green;
+ int blue;
+ int alpha;
+};
+
+struct calsvc* _calendar_svc_get_event(int acct_id, time_t st, time_t et);
+void _calendar_svc_free_cs(struct calsvc **csv);
+void _calendar_svc_free_cslist(Eina_List **h);
+int _calendar_svc_get_account_visibility(int account_id);
+void _calendar_svc_set_account_visibility(int account_id, int value);
+void _calendar_svc_set_calendar_visibility(cal_struct* cs, int value);
+int _calendar_svc_get_calendar_visibility(cal_struct* cs);
+Eina_List* _calendar_svc_find_event(int acct_id, const char *field, const void *val);
+Eina_List *_calendar_svc_get_calendars(int acct_id);
+Eina_List *_calendar_svc_get_calendars_with_account(int account_id, void* at);
+int* _calendar_svc_get_simple_cs(int acct_id, time_t st, time_t et);
+void _calendar_svc_set_calendar_color(cal_struct* cs, Calendar_color* color );
+void _calendar_svc_get_calendar_color(cal_struct* cs, Calendar_color* calendar_color );
+void _calendar_svc_add_event_changed_callback(void(*callback)(void *), void *user_data);
+void _calendar_svc_del_event_changed_callback(void(*callback)(void *));
+void _calendar_svc_add_calendar_changed_callback(const char *type, void(*callback)(void *), void *user_data);
+void _calendar_svc_del_calendar_changed_callback(const char *type, void(*callback)(void *));
+
+
+#define CALENDAR_SVC_CONNECT() calendar_svc_connect()
+#define CALENDAR_SVC_DISCONNECT() calendar_svc_close()
+
+#define CALENDAR_SVC_STRUCT_GET_STR(cs, field) calendar_svc_struct_get_str(cs, field)
+#define CALENDAR_SVC_STRUCT_GET_INT(cs, field) calendar_svc_struct_get_int(cs, field)
+#define CALENDAR_SVC_STRUCT_GET_DOUBLE(cs, field) calendar_svc_struct_get_double(cs, field)
+#define CALENDAR_SVC_STRUCT_GET_TIME(cs, field, flag) calendar_svc_struct_get_time(cs, field, flag)
+#define CALENDAR_SVC_STRUCT_GET_TM(cs, field, flag) calendar_svc_struct_get_tm(cs, field, flag)
+#define CALENDAR_SVC_STRUCT_GET_LIST(cs, field, list) calendar_svc_struct_get_list(cs, field, list)
+
+#define CALENDAR_SVC_STRUCT_SET_STR(cs, field, val) calendar_svc_struct_set_str(cs, field, val)
+#define CALENDAR_SVC_STRUCT_SET_INT(cs, field, val) calendar_svc_struct_set_int(cs, field, val)
+#define CALENDAR_SVC_STRUCT_SET_DOUBLE(cs, field, val) calendar_svc_struct_set_double(cs, field, val)
+#define CALENDAR_SVC_STRUCT_SET_TIME(cs, field, flag, val) calendar_svc_struct_set_time(cs, field, flag, val)
+#define CALENDAR_SVC_STRUCT_SET_TM(cs, field, flag, val) calendar_svc_struct_set_tm(cs, field, flag, val)
+#define CALENDAR_SVC_STRUCT_SET_LIST(cs, field, list) calendar_svc_struct_store_list(cs, field, list)
+
+#define CALENDAR_SVC_STRUCT_FREE(cs) calendar_svc_struct_free(cs)
+#define CALENDAR_SVC_STRUCT_NEW(type) calendar_svc_struct_new(type)
+
+#define CALENDAR_SVC_VALUE_GET_STR(cs, field) calendar_svc_value_get_str(cs, field)
+#define CALENDAR_SVC_VALUE_GET_INT(cs, field) calendar_svc_value_get_int(cs, field)
+#define CALENDAR_SVC_VALUE_GET_TIME(cs, field, flag) calendar_svc_value_get_time(cs, field, flag)
+#define CALENDAR_SVC_VALUE_GET_TM(cs, field, flag) calendar_svc_value_get_tm(cs, field, flag)
+
+#define CALENDAR_SVC_VALUE_SET_STR(cs, field, val) calendar_svc_value_set_str(cs, field, val)
+#define CALENDAR_SVC_VALUE_SET_INT(cs, field, val) calendar_svc_value_set_int(cs, field, val)
+#define CALENDAR_SVC_VALUE_SET_TIME(cs, field, flag, val) calendar_svc_value_set_time(cs, field, flag, val)
+#define CALENDAR_SVC_VALUE_SET_TM(cs, field, flag, val) calendar_svc_value_set_tm(cs, field, flag, val)
+
+#define CALENDAR_SVC_VALUE_NEW(field) calendar_svc_value_new(field)
+#define CALENDAR_SVC_VALUE_FREE(value) calendar_svc_value_free(value)
+
+#define CALENDAR_SVC_FREE_CS(csv) _calendar_svc_free_cs(csv)
+#define CALENDAR_SVC_FREE_CS_LIST(list) _calendar_svc_free_cslist(list)
+
+#define CALENDAR_SVC_GET_ACCOUNT_VISIBILITY(account_id) _calendar_svc_get_account_visibility(account_id)
+#define CALENDAR_SVC_SET_ACCOUNT_VISIBILITY(account_id, visible)_calendar_svc_set_account_visibility(account_id, visible)
+#define CALENDAR_SVC_SET_CALENDAR_VISIBILITY(cs, visible) _calendar_svc_set_calendar_visibility(cs, visible)
+#define CALENDAR_SVC_GET_CALENDAR_VIGIBILITY(cs) _calendar_svc_get_calendar_visibility(cs)
+
+#define CALENDAR_SVC_GET_CALENDARS(account_id) _calendar_svc_get_calendars(account_id)
+#define CALENDAR_SVC_GET_CALENDARS_WITH_ACCOUNT(account_id, at) _calendar_svc_get_calendars_with_account(account_id, at)
+#define CALENDAR_SVC_SET_CALENDAR_COLOR(cs, color) _calendar_svc_set_calendar_color(cs, color)
+#define CALENDAR_SVC_GET_CALENDAR_COLOR(cs, color) _calendar_svc_get_calendar_color(cs, color)
+
+#define CALENDAR_SVC_ADD_EVENT_CHANGED_CALLBACK(callback, data)_calendar_svc_add_event_changed_callback(callback, data)
+#define CALENDAR_SVC_ADD_CALENDAR_CHANGED_CALLBACK(type, callback, data) _calendar_svc_add_calendar_changed_callback(type, callback, data)
+
+#define CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK(callback) _calendar_svc_del_event_changed_callback(callback)
+#define CALENDAR_SVC_DEL_CALENDAR_CHANGED_CALLBACK(type, callback) _calendar_svc_del_calendar_changed_callback(type, callback)
+
+#define CALENDAR_SVC_INSERT(cs) calendar_svc_insert(cs)
+#define CALENDAR_SVC_UPDATE(cs) calendar_svc_update(cs)
+#define CALENDAR_SVC_DELETE(type, index) calendar_svc_delete(type, index)
+#define CALENDAR_SVC_DELETE_ALL(account_id, type) calendar_svc_delete_all(account_id, type)
+
+#define CALENDAR_SVC_GET(type, index, field, cs) calendar_svc_get(type, index, field, cs)
+#define CALENDAR_SVC_GET_ALL(account_id, calendar_id, type, iter) calendar_svc_get_all(account_id, calendar_id, type, iter)
+#define CALENDAR_SVC_GET_LIST(account_id, calendar_id, data_type, field_type, offset, count, iter) calendar_svc_get_list(account_id, calendar_id, data_type, field_type, offset, count, iter)
+#define CALENDAR_SVC_GET_EVENT(account_id, start, end) _calendar_svc_get_event(account_id, start, end)
+#define CALENDAR_SVC_GET_EVENT_LIST_BY_PERIOD(account_id, start, end, iter) calendar_svc_get_event_list_by_period(account_id, start, end, iter)
+#define CALENDAR_SVC_GET_COUNT(account_id, calendar_id, type) calendar_svc_get_count(account_id, calendar_id, type)
+#define CALENDAR_SVC_GET_SIMPLE_CS(account_id, start, end) _calendar_svc_get_simple_cs(account_id, start, end)
+
+#define CALENDAR_SVC_FIND(account_id, calendar_id, data_type, search_type, search_value, iter) calendar_svc_find(account_id, calendar_id, data_type, search_type, search_value, iter)
+#define CALENDAR_SVC_FIND_EVENT(account_id, field, value) _calendar_svc_find_event(account_id, field, value)
+#define CALENDAR_SVC_FIND_EVENT_LIST(account_id, search_type, search_value, iter) calendar_svc_find_event_list(account_id, search_type, search_value, iter)
+
+#define CALENDAR_SVC_ITER_NEXT(iter) calendar_svc_iter_next(iter)
+#define CALENDAR_SVC_ITER_GET_INFO(iter, cs) calendar_svc_iter_get_info(iter, cs)
+#define CALENDAR_SVC_ITER_REMOVE(iter) calendar_svc_iter_remove(iter)
+
+#define CALENDAR_SVC_UTIL_NEXT_VAILD_EVENT_TM(cs, start, end, next_vaild_start, next_valid_end) calendar_svc_util_next_valid_event_tm(cs, start, end, next_vaild_start, next_valid_end)
+#define CALENDAR_SVC_UTIL_CONVERT_DB_TIME(from_time, from_tz, to_time, to_tz) calendar_svc_util_convert_db_time(from_time, from_tz, to_time, to_tz)
+#define CALENDAR_SVC_UTIL_SAVE_VCS_BY_INDEX(index, file) calendar_svc_util_save_vcs_by_index(index, file)
+#define CALENDAR_SVC_UTIL_CONVERT_VCS_TO_EVENT(data, size, cs) calendar_svc_util_convert_vcs_to_event(data, size, cs)
+
+#endif /* __CALENDAR_CAL_SVC_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+
+#ifndef __CALENDAR_LOG_H__
+#define __CALENDAR_LOG_H__
+
+#define CAL_DEBUGGING
+#define CAL_DLOG_OUT
+
+//#define CAL_TIMECHECK
+//#define CAL_USE_OWN_TIME
+
+#ifdef CAL_DLOG_OUT
+#define LOG_TAG "CALENDAR"
+#include <dlog.h>
+#define DLOG(prio, fmt, arg...) \
+ do { SLOG(prio, LOG_TAG, fmt, ##arg); } while (0)
+#define INFO(fmt, arg...) SLOGI(fmt, ##arg)
+#define ERR(fmt, arg...) SLOGE("%s(%d) " fmt, __FUNCTION__, __LINE__, ##arg)
+#define DBG(fmt, arg...) SLOGD("%s(%d) " fmt, __FUNCTION__, __LINE__, ##arg)
+#else //CAL_DLOG_OUT
+#define PRT(prio, fmt, arg...) \
+ do { fprintf((prio?stderr:stdout),"[Calendar]" fmt"\n", ##arg); } while (0)
+#define INFO(fmt, arg...) PRT(0, fmt, ##arg)
+#define ERR(fmt, arg...) PRT(1,"%s(%d) " fmt, __FUNCTION__, __LINE__, ##arg)
+#define DBG(fmt, arg...) \
+ do { \
+ printf("\x1b[105;37m[Calendar]\x1b[0m(%s)" fmt "\n", __FUNCTION__, ##arg); \
+ } while (0)
+#endif //CAL_DLOG_OUT
+
+#ifdef CAL_DEBUGGING
+
+#ifdef CAL_USE_OWN_TIME
+#define CAL_FN_START CAL_TIME_CHECK_START
+#define CAL_FN_END CAL_TIME_CHECK_END
+#else//CAL_USE_OWN_TIME
+#ifdef CAL_TIMECHECK
+#define CAL_FN_START DBG("START")
+#define CAL_FN_END DBG("END")
+#else//CAL_TIMECHECK
+#define CAL_FN_START DBG("")
+#define CAL_FN_END
+#endif//CAL_TIMECHECK
+#endif//CAL_USE_OWN_TIME
+
+#define c_warn_if(expr, fmt, arg...) do { \
+ if (expr) { \
+ ERR("(%s) -> "fmt, #expr, ##arg); \
+ } \
+} while (0)
+#define c_ret_if(expr) do { \
+ if (expr) { \
+ DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+} while (0)
+#define c_retv_if(expr, val) do { \
+ if (expr) { \
+ DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return (val); \
+ } \
+} while (0)
+#define c_retm_if(expr, fmt, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+} while (0)
+#define c_retvm_if(expr, val, fmt, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return (val); \
+ } \
+} while (0)
+#else //CAL_DEBUGGING
+#define CAL_FN_START
+#define CAL_FN_END
+#define DBG(...)
+
+#define c_warn_if(expr, fmt, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ } \
+} while (0)
+#define c_ret_if(expr) do { \
+ if (expr) { \
+ return; \
+ } \
+} while (0)
+#define c_retv_if(expr, val) do { \
+ if (expr) { \
+ return (val); \
+ } \
+} while (0)
+#define c_retm_if(expr, fmt, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ return; \
+ } \
+} while (0)
+#define c_retvm_if(expr, val, fmt, arg...) do { \
+ if (expr) { \
+ ERR(fmt, ##arg); \
+ return (val); \
+ } \
+} while (0)
+
+#endif //CAL_DEBUGGING
+
+#ifdef CAL_TIMECHECK
+double cal_correction, cal_startT;
+double cal_set_start_time(void);
+double cal_exec_time(double start, double correction);
+double cal_init_time(double correction);
+#define CAL_TIME_CHECK_START \
+ double cal_startT = 0, cal_correction = 0; \
+ cal_correction = cal_init_time(cal_correction);\
+ cal_startT = cal_set_start_time();
+#define CAL_TIME_CHECK_END DBG("time = %f ms\n", cal_exec_time(cal_startT, cal_correction));
+#else //CAL_TIMECHECK
+#define CAL_TIME_CHECK_START
+#define CAL_TIME_CHECK_END
+#endif //CAL_TIMECHECK
+
+
+#endif /* __CALENDAR_LOG_H__ */
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_UTILS_H__
+#define __CALENDAR_UTILS_H__
+
+#include <assert.h>
+#include <Elementary.h>
+
+#ifndef _
+# define _(str) gettext(str)
+#endif
+
+#ifndef N_
+# define gettext_noop(str) (str)
+# define N_(str) gettext_noop(str)
+#endif
+
+#ifndef S_
+# define S_(str) dgettext("sys_string", str)
+#endif
+
+#ifndef C_
+# define C_(str) dgettext(CALENDAR_PACKAGE, str)
+#endif
+
+#ifndef U_
+# define U_(str) dgettext(UGNAME, str)
+#endif
+
+#if !defined(EDJDIR)
+# define EDJDIR "/opt/apps/org.tizen.efl-calendar/res/edje"
+#endif
+
+#if !defined(CAL_VCONF_LAST_LONGITUDE)
+#define CAL_VCONFKEY_SEND_EVENT_METHOD "db/calendar/send"
+#define CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF "db/calendar/timezone_on_off"
+#define CAL_VCONFKEY_LOCK_TIMEZONE_PATH "db/calendar/timezone_path"
+#define CAL_VCONFKEY_LOCK_TIMEZONE_CITY "db/calendar/timezone_city"
+#define CAL_VCONFKEY_LOCK_TIMEZONE_OFFSET "db/calendar/timezone_offset"
+#define CAL_VCONFKEY_FOCUS_VIEW "db/calendar/focusview"
+#endif
+
+#define EDJ_FILE EDJDIR "/" CALENDAR_PACKAGE "-black-theme.edj"
+#define EDJ_FILE_WHITE EDJDIR "/" CALENDAR_PACKAGE "-white-theme.edj"
+
+
+#define CAL_UTIL_GET_PRIV_DATA(obj) evas_object_data_get(obj, "priv")
+#define CAL_UTIL_GET_EDJ_DATA(layout) elm_layout_edje_get(layout)
+
+#define CAL_MAX_HEAP_SIZE 5*1024*1024 /*Malloc more than this will not be allowd*/
+
+
+/* void *memcpy(size_t nelements, size_t bfbes);
+ * which will allocate a memory and copy the data to the allocated memory
+ *
+ */
+#define CAL_MEMCPY(dest,src,type) \
+ do{ \
+ if(src != NULL) \
+ { \
+ assert(dest); \
+ memcpy(dest,src,sizeof(type)); \
+ } \
+ } while(0);
+
+/* void *calloc(size_t nelements, size_t bfbes); */
+/* which allocates a region of memory large enough to hold nelements of size bfbes each.
+ The allocated region is initialized to zero. */
+#define CAL_CALLOC(ptr, no_elements, type) \
+ do { \
+ if ((int)(no_elements) <= 0) \
+ { \
+ ptr = NULL; \
+ } \
+ else if(CAL_MAX_HEAP_SIZE < no_elements* sizeof (type)) \
+ { \
+ assert(0); \
+ } \
+ else \
+ { \
+ ptr = (type *) calloc (no_elements , sizeof (type)); \
+ assert(ptr); \
+ }\
+ }while(0);
+
+/*
+ * Returns string length of src and 0 if it is NULL
+ */
+#define CAL_STRLEN(src) ((src != NULL)? strlen(src): 0)
+
+/*
+ * Gives comparison result of two strings and returns -1 if any of two is NULL
+ */
+#define CAL_STRCMP(str1, str2) g_strcmp0(str1, str2)
+
+/* This assert will log an err on stderr and abort, if assertion failed, */
+/* Use this only if the now service needs to be exited, if asertion fails */
+
+#define CAL_ASSERT(scalar_exp) \
+ do { \
+ if (!scalar_exp) \
+ { \
+ ERR("CAL_ASSERT()");\
+ assert(scalar_exp); \
+ } \
+ }while(0);
+
+#define CAL_STRDUP(str) (str && *str && strlen(str))?strdup(str):NULL
+
+#define CAL_STRNCPY(dest,src,size) \
+ do { \
+ if(src != NULL && dest != NULL && size > 0) \
+ { \
+ strncpy(dest,src,size); \
+ } \
+ }while(0);
+
+#define CAL_STRNCAT(dest,src,size) \
+ do { \
+ if(src != NULL && dest != NULL && size > 0) \
+ { \
+ strncat(dest,src,size); \
+ } \
+ }while(0);
+
+
+/*
+ Date & Time Format
+http://userguide.icu-project.org/formatparse/datetime
+*/
+#define CAL_UTIL_DATE_FORMAT_1 "EEMMMddyyyy" // Thu Aug 23 2001
+#define CAL_UTIL_DATE_FORMAT_2 "EE" // Thu
+#define CAL_UTIL_DATE_FORMAT_3 "ddEE" // 27 Thu
+#define CAL_UTIL_DATE_FORMAT_4 "MMMM" // August
+#define CAL_UTIL_DATE_FORMAT_5 "yyyy" // 2011
+#define CAL_UTIL_DATE_FORMAT_6 "MMMMyyyy" // August 2011
+#define CAL_UTIL_DATE_FORMAT_7 "EEEEMMMdd" // Thursday Aug 23
+#define CAL_UTIL_DATE_FORMAT_8 "dMMMMyyyy" // 23 August 2011
+#define CAL_UTIL_DATE_FORMAT_9 "d" // 27
+#define CAL_UTIL_DATE_FORMAT_10 "MMMd" // Aug 27
+#define CAL_UTIL_DATE_FORMAT_11 "MMMMdyyyy" // August 23 2011
+#define CAL_UTIL_DATE_FORMAT_12 "MMMdyyyy" // Aug 23 2011
+#define CAL_UTIL_DATE_FORMAT_13 "EEMMMMddyyyy" // Thu August 23 2001
+#define CAL_UTIL_DATE_FORMAT_14 "EEEE" // Thursday
+#define CAL_UTIL_DATE_FORMAT_15 "EEdMMMMyyyy" // Thu August 23 2001
+
+
+#define CAL_UTIL_TIME_FORMAT_1 "hhmma" // 07:58 AM
+#define CAL_UTIL_TIME_FORMAT_2 "hhmm" // 07:58
+#define CAL_UTIL_TIME_FORMAT_3 "hha" // 07 AM
+#define CAL_UTIL_TIME_FORMAT_4 "a" // AM
+#define CAL_UTIL_TIME_FORMAT_5 "hma" // 7:58 AM
+#define CAL_UTIL_TIME_FORMAT_6 "HHmm" // 19:58
+#define CAL_UTIL_TIME_FORMAT_7 "HH" // 19
+#define CAL_UTIL_TIME_FORMAT_8 "Hm" // 7:58 AM
+
+
+enum cld_icon {
+ CI_EDIT = 0,
+ CI_NEW,
+ CI_DEL,
+ CI_PHOTO,
+ CI_MAX
+};
+
+static inline int CAL_UTIL_GET_WDAY(int w)
+{
+ while (w > 6) w -= 7;
+ while (w < 0) w += 7;
+ return w;
+}
+
+int cal_util_get_max_days(int tm_year, int tm_mon);
+time_t cal_util_get_max_time(void);
+time_t cal_util_get_min_time(void);
+
+int cal_util_update_tm_year(struct tm *t, int delta);
+int cal_util_update_tm_month(struct tm *t, int delta);
+int cal_util_update_tm_day(struct tm *t, int delta);
+int cal_util_update_tm_hour(struct tm *tm, int delta);
+
+int cal_util_get_day_time_t(struct tm *t, time_t *st, time_t *et);
+int cal_util_get_week_time_t(struct tm *t, time_t *st, time_t *et, int start);
+int cal_util_get_month_time_t(struct tm *t, time_t *st, time_t *et);
+int cal_util_get_year_time_t(struct tm *t, time_t *st, time_t *et);
+
+float cal_util_nsin(float f);
+int cal_util_get_week_flag(char *week_s);
+
+int cal_util_get_time_text(char *buf, int buf_size, const char *date, const char *time, const struct tm *tm);
+
+int cal_util_connect_pattern_generator(void);
+int cal_util_disconnect_pattern_generator(void);
+
+//void cal_util_elm_theme_extension(Elm_Theme *theme);
+Evas_Object* cal_util_add_bg(Evas_Object *obj, Eina_Bool is_window);
+Evas_Object* cal_util_add_layout(Evas_Object *win, const char *group);
+Evas_Object* cal_util_add_window(const char *name, Evas_Coord *w, Evas_Coord *h);
+Evas_Object* cal_util_add_icon_button(Evas_Object *p, enum cld_icon i);
+Evas_Object* cal_util_add_icon(Evas_Object *p, enum cld_icon i);
+Evas_Object* cal_util_add_rectangle(Evas_Object *p);
+Evas_Object* cal_util_add_separator(Evas_Object *box, const char *style);
+Evas_Object* cal_util_add_scroller(Evas_Object *p);
+Evas_Object* cal_util_add_box(Evas_Object *p);
+Evas_Object* cal_util_add_edit_field(Evas_Object *parent, const char *title, const char *guide, Eina_Bool single_line, Eina_Bool is_editable);
+Evas_Object * cal_util_add_searchbar(Evas_Object *parent, const char *text, const char *guide, Eina_Bool cancel_button);
+Evas_Object * cal_util_add_nocontents(Evas_Object *parent, const char *label);
+Evas_Object * cal_util_add_controlbar(Evas_Object * parent);
+Evas_Object * cal_util_add_popup(Evas_Object *parent, const char *title, const char *desc,
+ void (*callback_func)(void *data, Evas_Object *obj, void *ei), void *data, ...);
+Evas_Object * cal_util_add_datetime(Evas_Object *parent, const char *title, struct tm *tm);
+
+static inline void cal_util_get_geometry(Evas_Coord_Rectangle *r, const Evas_Object *obj)
+{
+ evas_object_geometry_get(obj, &r->x, &r->y, &r->w, &r->h);
+}
+
+static inline void cal_util_delete_evas_object(Evas_Object **p)
+{
+ if (p && *p) {
+ evas_object_del(*p);
+ *p = NULL;
+ }
+}
+
+char* cal_util_get_part_text(const char *fmt, int i);
+void cal_util_set_text(Evas_Object *obj, const char *part, const char *fmt, ...);
+void cal_util_set_time_text(Evas_Object *obj, const char *part, const char *date, const char* time, const struct tm *tm);
+void cal_util_set_time_week_text(Evas_Object *obj, const char *part, const char *date, const char* time, const struct tm *t, int start);
+
+void cal_util_emit_signal(Evas_Object *obj, const char *fmt, ...);
+
+void cal_util_set_controlbar_button(Evas_Object *btn, char *label, char *style, void (*func) (void *data, Evas_Object *obj, void *event_info), void* data);
+Eina_Bool cal_util_black_theme_check();
+
+int cal_util_get_timezone_info(char **timezone_path, char **city_string_id, char **offset);
+
+
+#endif /* __CALENDAR_UTILS_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_H__
+#define __CALENDAR_H__
+
+#include <Elementary.h>
+#include "cld-log.h"
+#include "cld-utils.h"
+#include "cal-svc.h"
+#include "acct-svc.h"
+
+#if !defined(CALENDAR_RING)
+#define CALENDAR_RING "calendar-ring"
+#endif
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
+#if !defined(CALENDAR_PACKAGE)
+# define CALENDAR_PACKAGE "efl-calendar"
+#endif
+
+#if !defined(LOCALEDIR)
+# define LOCALEDIR "/opt/apps/org.tizen.efl-calendar/res/locale"
+#endif
+
+#if !defined(VCALENDAR_DATA_LEN)
+#define VCALENDAR_DATA_LEN 3000
+#endif
+
+enum cld_view {
+ CV_UNKNOWN = 0,
+ CV_YEAR,
+ CV_MONTH,
+ CV_DAY,
+ CV_LIST,
+ CV_EDIT,
+ CV_DETAIL,
+};
+
+typedef enum ug_type {
+ UG_UNKNOWN = 0,
+ UG_DETAIL,
+ UG_EDIT,
+ UG_MAX,
+}ug_type;
+
+typedef struct appdata
+{
+ Evas_Object *win; //window
+ Evas_Coord win_w; //width of window
+ Evas_Coord win_h; //height of window
+ Evas_Object *base; //base layout
+ Evas_Object *nv; //naviframe
+ Evas_Object *title; //title
+ Evas_Object *main; //main view( has year, month, day, list tabs)
+ Evas_Object *bg; //background
+ Evas_Object *cbar; //coontrol bar(calendar,today,delete,create)
+
+ Elm_Object_Item* main_navi_item; //Naviframe item for main layout.
+
+ enum cld_view request_view; //initial or requested view to show, when app is relaunched,
+
+ Eina_Bool is_update_view; //only update when it is needed
+ Eina_Bool is_pause; //prevent updating view during app pause state
+
+ struct tm base_tm; //base time
+ int base_hour; // This can be replace to base_tm.tm_hour
+ struct tm today_tm; //today time
+ Ecore_Timer *today_tmr; //to update today when day is changed.
+ Evas_Object *today_edj; //edj for content of month tab, Need to change name to calendar_edj.
+
+ int wday_start; //0~6, since sunday
+
+ int cid; //calendar id. for detail, edit view
+ struct tmnode* tm; //for repeat event
+ int acct_id; //this variable always have ALL_VISIBLE_ACCOUT == -2
+
+ Elm_Object_Item *bt_new; //button for "Create event" in controlbar
+ Elm_Object_Item *bt_delete; //button for "Delete" in controlbar
+ Elm_Object_Item *today_item; // scroll to top item of today in list view.
+
+ int notifd; //for heynoti
+ cal_struct* ical; //for vcard raw data used in calendar viewer.
+ Eina_Bool is_aul; //to check wheather launching with AUL
+ Elm_Object_Item* content; //pop all aul content & jump to calendar content.
+
+ Eina_Bool edit_special_one; //to remove this, cal_edit_create_view should have 1 more parameter.
+ Eina_Bool is_weekly; //check whethere monthly tab is for weekly or not.
+
+ struct ui_gadget *ug; //can access to ui_gadget* from ug_data
+ ug_type u_type; //ug type
+
+ int tm_year; //It would be better, if these are changed to struct tm. to save event with specific time
+ int tm_mon; //It would be better, if these are changed to struct tm. to save event with specific time
+ int tm_mday; //It would be better, if these are changed to struct tm. to save event with specific time
+
+ char *strnote; //to save str from memo
+ Eina_Bool show_save_popup; //to show save popup when edit UG is destroyed
+ int is_hour24; //to show time as 12 or 24 format
+
+ Elm_Theme *theme; //theme customization
+
+ int account_id; //for email sharing feature
+ int mail_id; //for email sharing feature
+ char *src_box; //for email sharing feature
+
+ Evas_Object *tabbar;
+}ug_data;
+
+#endif /* __CALENDAR_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+
+#ifndef __CALENDAR_EXTERNAL_UG_H__
+#define __CALENDAR_EXTERNAL_UG_H__
+
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+
+#include "cld.h"
+
+#if !defined(MESSAGE_COMPOSER)
+ #define MESSAGE_COMPOSER "msg-composer-efl"
+#endif
+
+#if !defined(EMAIL_COMPOSER)
+ #define EMAIL_COMPOSER "email-composer-efl"
+#endif
+
+#if !defined(UG_BT)
+ #define UG_BT "setting-bluetooth-efl"
+#endif
+
+#if !defined(MSG_FILE_NAME)
+ #define MSG_FILE_NAME "/opt/data/ug-calendar/[Calendar]message.vcs"
+#endif
+
+#if !defined(EMAIL_FILE_NAME)
+ #define EMAIL_FILE_NAME "/opt/data/ug-calendar/[Calendar]email.vcs"
+#endif
+
+#if !defined(BLUETOOTH_FILE_NAME)
+ #define BLUETOOTH_FILE_NAME "/opt/data/ug-calendar/[Calendar]bluetooth.vcs"
+#endif
+
+void cal_launch_ug(bundle *bd, char *ug_name, struct ug_cbs *cbs);
+void cal_launch_ug_with_var(char *ug_name, struct ug_cbs *cbs,...);
+
+#endif /* __CALENDAR_EXTERNAL_UG_H__ */
+
--- /dev/null
+Name=Calendar
+Name[en_US]=Calendar
+Name[ko_KR]=일정
+Name[nl_NL]=Agenda
+Name[de_DE]=Kalender
+Name[zh_HK]=日曆
+Name[zh_CN]=日历
+Name[ru_RU]=Календарь
+Name[zh_TW]=日曆
+Name[ja_JP]=カレンダー
+Name[es_ES]=Calendario
+Name[el_GR]=Ημερολόγιο
+Name[it_IT]=Agenda
+Name[tr_TR]=Takvim
+Name[pt_PT]=Calendário
+Name[fr_FR]=Calendrier
+Type=Application
+Exec=${BINDIR}/efl-calendar
+Icon=${PKGNAME}.png
+NoDisplay=FALSE
+Version=0.1.0
+X-TIZEN-TaskManage=True
+X-TIZEN-Multiple=False
+X-TIZEN-Service=create_event,view_event
+X-TIZEN-Removable=False
+Comment=Calendar application
--- /dev/null
+Name: org.tizen.efl-calendar
+Summary: Calendar application
+Version: 0.5.58
+Release: 1
+Group: devel
+License: Samsung Proprietary License
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(calendar)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(alarm-service)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(mm-player)
+BuildRequires: pkgconfig(accounts-svc)
+BuildRequires: pkgconfig(ui-gadget)
+BuildRequires: pkgconfig(heynoti)
+BuildRequires: pkgconfig(ui-gadget)
+BuildRequires: pkgconfig(pmapi)
+BuildRequires: pkgconfig(icu-i18n)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-media-sound-manager)
+BuildRequires: pkgconfig(capi-media-wav-player)
+
+BuildRequires: cmake
+BuildRequires: edje-bin
+BuildRequires: embryo-bin
+BuildRequires: gettext-devel
+
+%description -n org.tizen.efl-calendar
+Calendar application
+
+
+%package -n org.tizen.calendar-viewer
+Summary: Calendar viewer (EFL)
+Group: TO_BE/FILLED_IN
+Requires: org.tizen.efl-calendar = %{version}-%{release}
+
+%description -n org.tizen.calendar-viewer
+Calendar viewer
+
+%package -n libug-calendar-efl
+Summary: Calendar UI gadget (EFL)
+Group: devel
+Requires: %{name} = %{version}-%{release}
+Requires: org.tizen.efl-calendar
+
+%description -n libug-calendar-efl
+Calendar UI gadget
+
+
+%prep
+%setup -q
+
+
+%build
+%define PREFIX "/opt/apps/org.tizen.efl-calendar"
+%define RESDIR "/opt/apps/org.tizen.efl-calendar/res"
+%define DATADIR "/opt/apps/org.tizen.efl-calendar/data"
+
+cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX}
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+
+
+
+%post
+
+# Automatically added by dh_makeshlibs
+if [ "$1" = "configure" ]; then
+ ldconfig
+fi
+# End automatically added section
+
+# 5000 is inhouse user id
+# do not use relative path
+vconftool set -t int db/calendar/focusview 0 -u 5000
+vconftool set -t int db/calendar/send 0 -u 5000
+vconftool set -t int db/calendar/timezone_on_off 0 -u 5000
+vconftool set -t string db/calendar/timezone_path "Asia/Seoul" -u 5000
+vconftool set -t string db/calendar/timezone_city "IDS_WCL_BODY_CITYNAME_SEOUL" -u 5000
+vconftool set -t string db/calendar/timezone_offset "GMT+9" -u 5000
+
+mkdir -p /opt/data/ug-calendar
+chgrp 6003 /opt/data/ug-calendar
+chmod 770 /opt/data/ug-calendar
+
+%postun
+
+%files -n org.tizen.efl-calendar
+
+%defattr(-,root,root,-)
+/opt/apps/org.tizen.efl-calendar/bin/efl-calendar
+/opt/apps/org.tizen.efl-calendar/data/
+/opt/apps/org.tizen.efl-calendar/res/locale/*
+/opt/apps/org.tizen.efl-calendar/res/icons/*
+/opt/apps/org.tizen.efl-calendar/res/edje/*.edj
+/opt/apps/org.tizen.efl-calendar/res/sounds/*
+/opt/share/applications/org.tizen.efl-calendar.desktop
+
+%files -n org.tizen.calendar-viewer
+%defattr(-,root,root,-)
+/opt/apps/org.tizen.calendar-viewer/bin/calendar-viewer
+/opt/share/applications/org.tizen.calendar-viewer.desktop
+
+%files -n libug-calendar-efl
+%defattr(-,root,root,-)
+/opt/ug/lib/*.so
--- /dev/null
+# for i18n
+
+SET(POFILES de_DE.po el_GR.po en.po es_ES.po fr_FR.po it_IT.po ja_JP.po ko_KR.po nl_NL.po pt_PT.po ru_RU.po tr_TR.po zh_CN.po zh_HK.po zh_TW.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+MESSAGE(STATUS "po files ---")
+FOREACH(pofile ${POFILES})
+ SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+ MESSAGE(STATUS " ${pofile}")
+ GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+ GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+ SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${moFile}
+ COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+ DEPENDS ${absPofile}
+ )
+ INSTALL(FILES ${moFile}
+ DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+ SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Anhängen"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Memo"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Details"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "Keine Ergebnisse gefunden"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Monatlich"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Alle Kalender"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Vorher"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "vorher"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Täglich"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Tag"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Endzeit"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Monatlich"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Monat"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Startzeit"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Ort eingeben"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Hinweis eingeben"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Titel eingeben"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Monat"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Woche"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Wöchentlich"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Jährlich"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Teilnehmer eingeben"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "W"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Ganzen Tag"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "Woche"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Standardkonto"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Sendeoptionen"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Karte"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Titel"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Exportieren"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Kalender synchronisieren"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Ereignisse"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Sonntag"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Montag"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Erster Tag der Woche"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "Kein Ort ausgewählt"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Ereignis löschen"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Nachrichten an Empfänger senden?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Teilnehmer"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "Pünktlich"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Kalender"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Keine Kalender"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Liste"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Nur dieses Ereignis"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Alle sich wiederholenden Ereignisse"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Kein Titel"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Zeitzone festlegen"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Zeitzone"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "Stunde"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Wiederholen bis"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "mal"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Teilnehmer"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Verknüpfter Kalender"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Telefonkalender"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Ansicht nach Tagen"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Ansicht “Woche”"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Jahr"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Wiederholen"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Standort kann nicht gefunden werden"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Ort"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "Tag"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "Woche"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Abidjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Abu Dhabi"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Vae"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Accra"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Ghana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Addis Ababa"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Äthiopien"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Adelaide"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Australien"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Alaska"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "USA"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Elfenbeinküste"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Algier"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Algerien"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Almaty"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Kasachstan"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Ambon"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Indonesien"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Amman"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Jordanien"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Amsterdam"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Niederlande"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Anadyr"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Russland"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Anchorage"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Ankara"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Türkei"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Antananarivo"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "Madagaskar"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Ashgabat"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Turkmenistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Asmera"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Eritrea"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Astana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Asuncion"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Paraguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Athen"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Griechenland"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Auckland"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Neuseeland"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Austin"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Azoren"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Portugal"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Baghdad"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Irak"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Baku"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Aserbaidschan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Baltimore"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Bamako"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Mali"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Bangkok"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Thailand"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Bangui"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "Zentralafrikanische Republik"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Barcelona"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "Spanien"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Bari"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Italien"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Basse-Terre"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Guadeloupe"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Peking"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "China"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Beirut"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Libanon"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Belgrad"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Serbien"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Belize City"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Belize"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Berlin"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Deutschland"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Bern"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Schweiz"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Bishkek"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Kirgisistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Guinea-Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Bogota"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Kolumbien"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Bologna"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Brasilia"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Brasilien"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Bratislava"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Slovakei"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Bridgetown"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Barbados"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Brisbane"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Brüssel"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Belgien"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Bukarest"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Rumänien"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Budapest"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Ungarn"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Buenos Aires"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Argentinien"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Kairo"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Ägypten"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Calgary"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Kanada"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Kanarische Inseln"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Canberra"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Kanton"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Kapstadt"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "Republik Südafrika"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Caracas"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Venezuela"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Cardiff"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Wales"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Casablanca"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Marokko"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Catanzaro"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Speichern in"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "Keine Ereignisse"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Anpassen"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Speichern?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Neu sortieren"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Cayenne"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Französisch-Guayana"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Charlotte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Charlotte Amalie"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "Amerikanische Jungferninseln"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Tscheljabinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "Indien"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Chicago"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Chişinău"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Moldavien"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Chita"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Cleveland"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Colombo"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Sri Lanka"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Columbus"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Conakry"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Guinea"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Kopenhagen"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Dänemark"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Cork"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Irland"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Crotone"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Dakar"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Senegal"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Dallas"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Damaskus"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Syrien"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Daressalam"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Tansania"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Darwin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Denpasar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Denver"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Detroit"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Dhakar"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Bangladesch"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Diego Garcia"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "Großbritannien"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Doha"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Katar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Duala"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Kamerun"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Dubai"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Dublin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Dushanbe"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Tadschikistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Osterinsel"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Chile"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Edinburgh"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Schottland"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "El Paso"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Florenz"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Fort-de-France"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Martinique"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Freetown"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Sierra Leone"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Gaborone"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Botswana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Galápagos-Inseln"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Ecuador"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Genf"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Genua"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Georgetown"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Guyana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Grytviken"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "Südgeorgien"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Guam"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Guatemala-Stadt"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Gustavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Saint Barthélemy"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Halifax"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Hamburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Hanoi"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Vietnam"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Harare"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Zimbabwe"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "Havanna"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Cuba"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Hawaii"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Helsinki"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Finnland"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Hobart"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Ereignisse nach Woche anzeigen"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Layout in der Monatsansicht"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Ereignisse nach Tagen anzeigen"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Hongkong"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Honolulu"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Houston"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Chowd"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Mongolei"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Indianapolis"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Irkutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Islamabad"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Pakistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Istanbul"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Ischewsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Jakarta"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Dschidda"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Saudi-Arabien"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Jerusalem"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Israel"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Johannesburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Kabul"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Afghanistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Kaliningrad"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Kamtschatka"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Kampala"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Uganda"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Karatschi"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Kathmandu"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Nepal"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Chabarowsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Charkiw"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Ukraine"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Khartum"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Sudan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Kiew"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Kingston"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Jamaika"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Kinshasa"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "Demokratische Republik Kongo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Kolkata"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Krasnojarsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Kuala Lumpur"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Malaysia"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Kuwait"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Los Angeles"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "La Paz"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Bolivien"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Lagos"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Nigeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Las Vegas"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Lima"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Peru"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Lissabon"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Ljubljana"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "London"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Longhua"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Louisville"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Luanda"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Angola"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Lubumbashi"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Lusaka"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Sambia"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Luxemburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Lemberg"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Macao"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Magadan"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Malabo"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Äquatorialguinea"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Male"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Malediven"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Managua"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Nicaragua"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Manama"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Bahrain"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Manila"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Philippinen"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Maputo"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Mosambik"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Marigot"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Saint-Martin"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Mazatlán"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "Mexiko"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Riadh"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Melbourne"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Memphis"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Messina"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Mexico City"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Miami"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Mittelatlantik"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Midway Atoll"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Mailand"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Milwaukee"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Minsk"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Weißrussland"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Mogadishu"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Somalia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Monrovia"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Liberia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Montevideo"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Uruguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Montreal"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Moskau"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Mumbai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "München"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Maskat"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Oman"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Nairobi"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Kenia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Rom"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Naters"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "Ndjamena"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Naples"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "Chad"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Mekka"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "Neu Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "New York"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Neufundland"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Niamey"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "Niger"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Nouakchott"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "MAURETANIEN"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Nouméa"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "Neukaledonien"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Nowokusnezk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Nowosibirsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Nuku’alofa"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Tonga"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Nuuk"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Grönland"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Omsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Osaka"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Japan"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Ottawa"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ouagadougou"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Burkina Faso"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Pago Pago"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Samoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Palermo"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Panama City"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Panama"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Paramaribo"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Surinam"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Paris"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "Frankreich"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Perm"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Perth"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Petropawlowsk-Kamtschatski"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Philadelphia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Kambodscha"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Phoenix"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Podgorica"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Montenegro"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Ponta Delgada"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Port Louis"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "Mauritius"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Port-au-Prince"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Haiti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Portland"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Prag"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "Tschechische Republik"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Pjöngjang"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Nordkorea"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "Quito"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Rabat"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Yangon"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Burma"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Recife"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Regina"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Reykjavik"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "Island"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Riga"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Lettland"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Rio De Janeiro"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Saint-Denis"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Reunion"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Samara"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "San Antonio"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "San Diego"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "San Francisco"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "San Jose"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Costa Rica"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "San Juan"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Puerto Rico"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "San Marino"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "San Salvador"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "El Salvador"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Sana'a"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Jemen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Santiago"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Santo Domingo"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "Dominikanische Republik"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "Sao Paulo"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Seattle"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Seoul"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "Südkorea"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Shanghai"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Shenzhen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Singapur"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "Republik Singapur"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Skopje"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "Mazedonien"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Sofia"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Bulgarien"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "St.John's"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Antigua und Barbuda"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Stockholm"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Schweden"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Suva"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Fidschi"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "Republik Fidschi-Inseln"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Sydney"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Tahiti"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Französisch-Polynesien"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Taipeh"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Taiwan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Tallinn"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Estland"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Tarawa"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Kiribati"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Taschkent"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Usbekistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Tbilisi"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Georgia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Tegucigalpa"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Honduras"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Teheran"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Iran"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Ho-Chi-Minh-Stadt"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "Heimatort"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "Britische Jungferninseln"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Tientsin"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Tijuana"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Tokio"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Toronto"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Tréhet"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Tripoli"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Libyen"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Tunis"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Tunesien"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Turin"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ufa"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Bashkiriya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ulaanbaatar"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Vaduz"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Liechtenstein"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "Valletta"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Malta"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Vancouver"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Verona"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Viktoria"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Seychellen"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Wien"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Österreich"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Wilna"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Litauen"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Wladiwostok"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Wolgograd"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "St. Petersburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Warschau"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Polen"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Washington DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Wellington"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Winnipeg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Jakutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Yamusoukro"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Yaounde"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Jekaterinburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Yerevan"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Armenien"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Yuzhno-Sakhalinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Zagreb"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Kroatien"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Zürich"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Wird exportiert..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Importieren..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Importiert"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Exportiert"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Επισύναψη"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Σημείωση"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Λεπτομέρειες"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "Δεν βρέθηκαν αποτελέσματα"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Κάθε μήνα"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Όλα τα ημερολόγια"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Πριν"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "πριν"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Καθημερινά"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Ημέρα"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Ώρα λήξης"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Κάθε μήνα"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Μήνας"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Ώρα έναρξης"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Πατήστε για να εισάγετε τοποθεσία"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Πατήστε για να εισάγετε σημείωση"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Πατήστε για να εισάγετε τίτλο"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Μήνας"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Εβδομάδα"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Κάθε εβδομάδα"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Κάθε έτος"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Πατήστε για να εισάγετε συμμετέχοντα"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "Β"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Ολοήμερο"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "εβδομάδα"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Προεπ. λογαριασμός"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Επιλογές αποστολής"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Χάρτης"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Τίτλος"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Εξαγωγή"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Συγχρονισμός ημερολογίου"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Συμβάντα"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Κυριακή"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Δευτέρα"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Πρώτη ημέρα της εβδομάδας"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "Δεν έχει επιλεγεί τοποθεσία"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Διαγραφή συμβάντος"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Αποστολή μηνυμάτων στους συμμετέχοντες;"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Συμμετέχοντες"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "Έγκαιρα"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Ημερολόγια"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Δεν βρέθηκαν ημερολόγια"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Λίστα"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Μόνο αυτό το συμβάν"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Όλα τα επαναλαμβανόμενα συμβάντα"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Χωρίς τίτλο"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Κλείδωμα ζώνης ώρας"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Ζώνη ώρας"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "ώρα"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Επανάληψη μέχρι"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "φορές"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Συμμετέχων"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Συνδεδεμένο ημερολόγιο"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Ημερολόγιο τηλεφώνου"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Προβολή ημέρας"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Προβολή εβδομάδας"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Έτος"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Επανάληψη"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Δεν είναι δυνατή η εύρεση τοποθεσίας"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Θέση"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "ημέρα"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "εβδομάδα"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Αμπιτζάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Άμπου Ντάμπι"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Ηνωμένα Αραβικά Εμιράτα"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Άκρα"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Γκάνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Αντίς Αμπέμπα"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Αιθιοπία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Αδελαΐδα"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Αυστραλία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Αλάσκα"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "Η.Π.Α."
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Ακτή Ελεφαντοστού"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Αλγέρι"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Αλγερία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Άλμα Άτα"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Καζακστάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Άμπον"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Ινδονησία"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Αμάν"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Ιορδανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Άμστερνταμ"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Ολλανδία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Ανάντιρ"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Ρωσία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Άνκορατζ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Άγκυρα"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Τουρκία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Ανταναναρίβο"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "ΜΑΔΑΓΑΣΚΑΡΗ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Ασγκαμπάτ"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Τουρκμενιστάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Ασμάρα"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Ερυθραία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Αστάνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Ασουνσιόν"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Παραγουάη"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Αθήνα"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Ελλάδα"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Όκλαντ"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Νέα Ζηλανδία"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Ώστιν"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Αζόρες"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Πορτογαλία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Βαγδάτη"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Ιράκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Μπακού"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Αζερμπαϊτζάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Βαλτιμόρη"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Μπαμάκο"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Μάλι"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Μπανγκόγκ"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Ταϊλάνδη"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Μπανγκούι"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "Κεντροαφρικανική Δημοκρατία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Βαρκελώνη"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "Ισπανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Μπάρι"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Ιταλία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Μπας-Τερ"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Γουαδελούπη"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Πεκίνο"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "Κίνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Βηρυτός"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Λίβανος"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Βελιγράδι"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Σερβία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Πόλη Μπελίζε"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Μπελίζ"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Βερολίνο"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Γερμανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Βέρνη"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Ελβετία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Μπισκέκ"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Κιργκιστάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Μπισσάου"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Γουινέα Μπισσάου"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Μπογκοτά"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Κολομβία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Μπολόνια"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston "
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Μπραζίλια"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Βραζιλία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Μπρατισλάβα"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Σλοβακία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Μπρίτζταουν"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Μπαρμπέιντος"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Μπρίσμπεϊν"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Βρυξέλλες"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Βέλγιο"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Βουκουρέστι"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Ρουμανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Βουδαπέστη"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Ουγγαρία"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Μπουένος Άϊρες"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Αργεντινή"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Κάιρο"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Αίγυπτος"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Κάλγκαρι"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Καναδάς"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Κανάρια Νησιά"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Καμπέρα"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Καντόν"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Κέιπ Τάουν"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "Δημοκρατία της Νότιας Αφρικής"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Καράκας"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Βενεζουέλα"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Κάρντιφ"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Ουαλία"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Κασαμπλάνκα"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Μαρόκο"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Καταντζάρο"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Αποθήκευση σε"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "Κανένα συμβάν"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Προσαρμογή"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Αποθήκευση;"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Επανάληψη παραγγελίας"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Καγιέν"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Γαλλική Γουιάνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Σαρλότ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Σαρλότ Αμαλί"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "Ηνωμένες Πολιτείες Παρθένοι νήσοι"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Τσελιάμπινσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "Ινδία"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Σικάγο"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Κισινάου"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Μολδαβία"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Τσιτά"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Κλήβελαντ"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Κολόμπο"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Σρι Λάνκα"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Κολόμπους"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Κονακρί"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Γουϊνέα"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Κοπεγχάγη"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Δανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Κορκ"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Ιρλανδία"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Κρότωνας"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Ντακάρ"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Σενεγάλη"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Ντάλλας"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Δαμασκός"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Συρία"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Νταρ Ες Σαλάμ"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Τανζανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Ντάργουιν"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Δελχί"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Ντενπασάρ"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Ντένβερ"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Ντιτρόιτ"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Ντάκα"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Μπανγκλαντές"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Ντιέγκο Γκαρσία"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "Ηνωμένο Βασίλειο"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Τζιμπουτί"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Τζιμπουτί"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Ντόχα"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Κατάρ"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Ντουάλα"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Καμερούν"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Ντουμπάι"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Δουβλίνο"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Ντουσανμπέ"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Τατζικιστάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Νησί του Πάσχα"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Χιλή"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Εδιμβούργο"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Σκωτία"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "Ελ Πάσο"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Φλωρεντία"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Φορ ντε Φρανς"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Μαρτινίκα"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Φριτάουν"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Σιέρρα Λεόνε"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Καμπορόνε"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Μποτσουάνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Νησιά Γκαλαπάγκος"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Εκουαδόρ"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Γενεύη"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Γένοβα"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Τζορτζτάουν"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Γουιάνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Γκρυτβίκεν"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "Νότια Γεωργία"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Γκουάμ"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Πόλη της Γουατεμάλας"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Γουατεμάλα"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Γουστάβια"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Άγιος Βαρθολομαίος"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Χάλιφαξ"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Αμβούργο"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Ανόι"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Βιετνάμ"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Χαράρε"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Ζιμπάμπουε"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "Αβάνα"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Κούβα"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Χαβάη"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Ελσίνκι"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Φινλανδία"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "GMT+10(Χόμπαρτ)"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Εμφάνιση συμβάντων ανά εβδομάδα"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Διάταξη προβολής μήνα"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Εμφάνιση συμβάντων ανά ημέρα"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Χονγκ Κονγκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Χονολουλού"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Χιούστον"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Χοβντ"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Μογγολία"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Ιντιανάπολις"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Ιρκούτσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Ισλαμαμπάντ"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Πακιστάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Κωνσταντινούπολη"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Ιζέβσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Τζακάρτα"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Τζέντα"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Σαουδική Αραβία"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Ιερουσαλήμ"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Ισραήλ"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Γιοχάνεσμπουργκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Καμπούλ"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Αφγανιστάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Καλίνινγκραντ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Καμτσάτκα"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Καμπάλα"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Ουγκάντα"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Καράτσι"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Κατμαντού"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Νεπάλ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Κχαμπαρόβσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Καρκίβ"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Ουκρανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Χαρτούμ"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Σουδάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Κίεβο"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Κίνγκστον"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Τζαμάικα"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Κινσάσα"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "Λαϊκή Δημοκρατία του Κονγκό"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Καλκούτα"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Κρασνογιάρσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Κουάλα Λουμπούρ"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Μαλαισία"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Κουβέιτ"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Λος Άντζελες"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "Λα Παζ"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Βολιβία"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Λάγος"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Νιγηρία"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Λας Βέγκας"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Λίμα"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Περού"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Λισσαβόνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Λουμπλιάνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "Λονδίνο"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Λονγκχουά"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Λούισβιλ"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Λουάντα"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Αγκόλα"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Λουμπουμπάσι"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Λουσάκα"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Ζάμπια"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Λουξεμβούργο"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Λβιβ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Μακάο"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Μάγκανταν"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Μαλάμπο"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Ισημερινή Γουινέα"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Μαλέ"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Μαλβίδες"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Μανάγκουα"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Νικαράγουα"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Μανάμα"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Μπαχρέιν"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Μανίλα"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Φιλιππίνες"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Μαπούτο"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Μοζαμβίκη"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Μαριγκότ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Άγιος Μαρτίνος"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Μαζατλάν"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "Μεξικό"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Ριάντ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Μελβούρνη"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Μέμφις"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Μεσίνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Πόλη του Μεξικό"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Μαϊάμι"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Μεσ..Ατλαντ."
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Μιντγουέι Ατόλη"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Μιλάνο"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Μιλγουόκι"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Μίνσκ"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Λευκορωσία"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Μογκαντίσου"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Σομαλία"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Μονρόβια"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Λιβερία"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Μοντεβιδέο"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Ουρουγουάη"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Μόντρεαλ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Μόσχα"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Μουμπάι"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "Μόναχο"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Μουσκάτ"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Ομάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Ναϊρόμπι"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Κένυα"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Ρώμη"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Νάτερς"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "Ντζαμένα"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Νάπολη"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "ΤΣΑΝΤ"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Μέκκα"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "Νέο Δελχί"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "Νέα Υόρκη"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Newfoundland"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Νιαμέι"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "ΝΙΓΗΡΑΣ"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Νουακτσότ"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "ΜΑΥΡΙΤΑΝΙΑ"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Νουμέα"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "Νέα Καληδονία"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Νοβοκουζνέτσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Νοβοσιμπίρσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Νουκουαλόφα"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Τόνγκα"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Νουούκ"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Γροιλανδία"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Ομσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Οσάκα"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Ιαπωνία"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Οτάβα"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ουαγκαντουγκού"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Μπουργκίνα Φάσο"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Πάγκο Πάγκο"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Ανεξάρτητο κράτος των Σαμόα"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Παλέρμο"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Πόλη του Παναμά"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Παναμάς"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Παραμαρίμπο"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Σουρινάμ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Παρίσι"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "Γαλλία"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Περμ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Περθ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Πετροπαβλόσκ-Καμτσατσκί"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Φιλαδέλφεια"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Καμπότζη"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Φοίνιξ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Ποντγκόριτσα"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Μαυροβούνιο"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Πόντα Ντελγάδα"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Πορ Λουί"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "ΜΑΥΡΙΚΙΟΣ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Πορτ-ο-Πρενς"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Αϊτή"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Πόρτλαντ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Πράγα"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "Δημοκρατία της Τσεχίας"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Πιονγκγιάνγκ"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Βόρεια Κορέα"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "Κουίτο"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Ραμπάτ"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Γιανγκόν"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Βιρμανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Ρεσίφε"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Ρετζίνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Ρέικιαβικ"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "Ισλανδία"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Ρίγα"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Λετονία"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Ρίο ντε Τζανέιρο"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Σαιν Ντενί"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Ρεϊνιόν"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Σαμάρα"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "Σαν Αντόνιο"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "Σαν Ντιέγκο"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "Σαν Φρανσίσκο"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "Σαν Χοσέ"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Κόστα Ρίκα"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "Σαν Χουάν"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Πουέρτο Ρίκο"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "Άγιος Μαρίνος"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "Σαν Σαλβαδόρ"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "Ελ Σαλβαδόρ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Σανάα"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Υεμένη"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Σαντιάγο"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Άγιος Δομίνικος"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "Δομινικανή Δημοκρατία"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "Σάο Πάολο"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Σιάτλ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Σεούλ"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "Δημοκρατία της Κορέας"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Σαγκάη"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Σεντσέν"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Σιγκαπούρη"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "Δημοκρατία της Σιγκαπούρης"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Σκόπια"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "ΠΓΔΜ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Σόφια"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Βουλγαρία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "Σεντ Τζον"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Αντίγκουα και Μπαρμπούντα"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Στοκχόλμη"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Σουηδία"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Σούβα"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Φίτζι"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "Δημοκρατία των νησιών Φίτζι"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Σίδνεϋ"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Ταϊτή"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Γαλλική Πολυνησία"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Ταϊπέι"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Ταϊβάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "ΤΑΛΙΝ"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Εσθονία"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Ταράουα"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Κιριμπάτι"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Τασκένδη"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Ουζμπεκιστάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Τιφλίδα"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Γεωργία"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Τεγκουσιγκάλπα"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Ονδούρα"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Τεχεράνη"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Ιράν"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Πόλη Χο Τσι Μινχ"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "The settlement"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "Βρετανικές Παρθένοι νήσοι"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Τιανζίν"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Τιχουάνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Τόκυο"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Τορόντο"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Τρεέ"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Τρίπολη"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Λιβύη"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Τύνιδα"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Τυνησία"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Τορίνο"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ούφα"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Μπασκορτοστάν"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ουλάν Μπατόρ"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Βαντούζ"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Λιχτενστάιν"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "Βαλέτα"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Μάλτα"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Βανκούβερ"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Βερόνα"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Βικτόρια"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Σεϋχέλλες"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Βιέννη"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Αυστρία"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Βίλνιους"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Λιθουανία"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Βλαδιβοστόκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Βολγκογκράντ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "Αγία Πετρούπολη"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Βαρσοβία"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Πολωνία"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Ουάσινγκτον DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Ουέλιγκτον"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Γουίνιπεγκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Γιακούτσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Γιαμουσσούκρο"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Γιαουντέ"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Εκατέρινμπουργκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Ερεβάν"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Αρμενία"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Γιούζνο-Σάκαλινσκ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Ζάγκρεμπ"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Κροατία"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Ζυρίχη"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Εξαγωγή..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Εισαγωγή..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Έγινε εισαγωγή"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Έγινε εξαγωγή"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Attach"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Note"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Details"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "No results found"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Monthly"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "All calendar"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Before"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "before"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Daily"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Day"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "End time"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Monthly"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Month"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Start time"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Tap to enter location"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Tap to enter note"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Tap to enter title"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Month"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Week"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Weekly"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Yearly"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Tap to enter participant"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "W"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "All day"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "week"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Default account"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Sending options"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Map"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Title"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Export"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Calendar sync"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Events"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Sunday"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Monday"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "First day of week"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "No location selected"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Delete event"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Send messages to participants?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Participants"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "On time"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Calendars"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "No calendars"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "List"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Only this event"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "All repetitive events"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "No title"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Lock time zone"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Time zone"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "hour"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Repeat until"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "times"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Participant"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Linked calendar"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Phone calendar"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Daily view"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Weekly view"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Year"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Repeat"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Unable to find location"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Location"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "day"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "week"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Abidjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Abu Dhabi"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "United Arab Emirates"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Accra"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Ghana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Addis Ababa"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Ethiopia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Adelaide"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Australia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Alaska"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "USA"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Cote d’Ivoire"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Algiers"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Algeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Almaty"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Kazakhstan"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Ambon"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Indonesia"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Amman"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Jordan"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Amsterdam"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Netherlands"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Anadyr"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Russia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Anchorage"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Ankara"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Turkey"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Antananarivo"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "Madagascar"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Ashgabat"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Turkmenistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Asmara"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Eritrea"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Astana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Asuncion"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Paraguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Athens"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Greece"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Auckland"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "New Zealand"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Austin"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Azores"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Portugal"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Baghdad"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Iraq"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Baku"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Azerbaijan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Baltimore"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Bamako"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Mali"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Bangkok"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Thailand"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Bangui"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "Central African Republic"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Barcelona"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "Spain"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Bari"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Italy"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Basse-Terre"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Guadeloupe"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Beijing"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "China"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Beirut"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Lebanon"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Belgrade"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Serbia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Belize City"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Belize"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Berlin"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Germany"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Bern"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Switzerland"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Bishkek"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Kyrgyzstan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Guinea Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Bogota"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Colombia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Bologna"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston "
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Brasilia"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Brazil"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Bratislava"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Slovakia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Bridgetown"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Barbados"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Brisbane"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Brussels"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Belgium"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Bucharest"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Romania"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Budapest"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Hungary"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Buenos Aires"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Argentina"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Cairo"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Egypt"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Calgary"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Canada"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Canary Islands"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Canberra"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Canton"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Cape Town"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "South Africa"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Caracas"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Venezuela"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Cardiff"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Wales"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Casablanca"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Morocco"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Catanzaro"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Save to"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "No events"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Customise"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Save?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Reorder"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Cayenne"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "French Guiana"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Charlotte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Charlotte Amalie"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "United States Virgin Islands"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Chelyabinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "India"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Chicago"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Chisinau"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Moldova"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Chita"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Cleveland"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Colombo"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Sri Lanka"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Columbus"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Conakry"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Guinea"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Copenhagen"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Denmark"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Cork"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Ireland"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Crotone"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Dakar"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Senegal"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Dallas"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Damascus"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Syria"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Dar es Salaam"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Tanzania"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Darwin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Denpasar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Denver"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Detroit"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Dhaka"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Bangladesh"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Diego Garcia"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "United Kingdom"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Doha"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Qatar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Douala"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Cameroon"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Dubai"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Dublin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Dushanbe"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Tajikistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Easter Island"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Chile"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Edinburgh"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Scotland"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "El Paso"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Florence"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Fort-de-France"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Martinique"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Freetown"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Sierra Leone"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Gaborone"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Botswana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Galapagos Islands"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Ecuador"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Geneva"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Genoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Georgetown"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Guyana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Grytviken"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "South Georgia"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Guam"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Guatemala City"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Gustavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Saint Barthelemy"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Halifax"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Hamburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Hanoi"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Vietnam"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Harare"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Zimbabwe"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "Havana"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Cuba"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Hawaii"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Helsinki"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Finland"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Hobart"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Show events by week"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Layout in month view"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Show events by day"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Hong Kong"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Honolulu"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Houston"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Khovd"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Mongolia"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Indianapolis"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Irkutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Islamabad"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Pakistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Istanbul"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Izhevsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Jakarta"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Jeddah"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Saudi Arabia"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Jerusalem"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Israel"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Johannesburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Kabul"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Afghanistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Kaliningrad"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Kamchatka"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Kampala"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Uganda"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Karachi"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Kathmandu"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Nepal"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Khabarovsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Kharkiv"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Ukraine"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Khartoum"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Sudan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Kiev"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Kingston"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Jamaica"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Kinshasa"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "Democratic Republic of the Congo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Kolkata"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Krasnoyarsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Kuala Lumpur"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Malaysia"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Kuwait"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Los Angeles"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "La Paz"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Bolivia"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Lagos"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Nigeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Las Vegas"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Lima"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Peru"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Lisbon"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Ljubljana"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "London"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Longhua"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Louisville"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Luanda"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Angola"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Lubumbashi"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Lusaka"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Zambia"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Luxembourg"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Lviv"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Macau"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Magadan"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Malabo"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Equaorial Guinea"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Male"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Maldives"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Managua"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Nicaragua"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Manama"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Bahrain"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Manila"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Philippines"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Maputo"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Mozambique"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Marigot"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Saint Martin"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Mazatlan"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "Mexico"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Riyadh"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Melbourne"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Memphis"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Messina"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Mexico City"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Miami"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Mid-Atlantic"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Midway Atoll"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Milano"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Milwaukee"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Minsk"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Belarus"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Mogadishu"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Somalia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Monrovia"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Liberia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Montevideo"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Uruguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Montreal"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Moscow"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Mumbai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "Munich"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Muscat"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Oman"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Nairobi"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Kenya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Rome"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Naters"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "N'Djamena"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Napoli"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "Chad"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Makkah"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "New Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "New York"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Newfoundland"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Niamey"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "Niger"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Nouakchott"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "Mauritania"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Noumea"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "New Caledonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Novokuznetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Novosibirsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Nuku'alofa"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Tonga"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Nuuk"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Greenland"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Omsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Osaka"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Japan"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Ottawa"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ouagadougou"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Burkina Faso"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Pago Pago"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Samoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Palermo"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Panama City"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Panama"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Paramaribo"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Suriname"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Paris"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "France"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Perm"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Perth"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Petropavlovsk-Kamchatskiy"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Philadelphia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Cambodia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Phoenix"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Podgorica"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Montenegro"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Ponta Delgada"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Port Louis"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "Mauritius"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Port-au-Prince"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Haiti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Portland"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Prague"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "Czech Republic"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Pyongyang"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "North Korea"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "Quito"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Rabat"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Yangon"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Myanmar"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Recife"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Regina"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Reykjavik"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "Iceland"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Riga"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Latvia"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Rio de Janeiro"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Saint-Denis"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Reunion Island"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Samara"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "San Antonio"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "San Diego"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "San Francisco"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "San Jose"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Costa Rica"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "San Juan"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Puerto Rico"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "San Marino"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "San Salvador"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "El Salvador"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Sana’a"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Yemen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Santiago"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Santo Domingo"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "Dominican Republic"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "Sao Paulo"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Seattle"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Seoul"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "Republic of Korea"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Shanghai"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Shenzhen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Singapore"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "Republic of Singapore"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Skopje"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "Macedonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Sofia"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Bulgaria"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "St John's"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Antigua and Barbuda"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Stockholm"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Sweden"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Suva"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Fiji"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "Republic of Fiji"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Sydney"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Tahiti"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "French Polynesia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Taipei"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Taiwan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Tallinn"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Estonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Tarawa"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Kiribati"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Tashkent"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Uzbekistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Tbilisi"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Georgia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Tegucigalpa"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Honduras"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Tehran"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Iran"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Ho Chi Minh City"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "The Settlement"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "British Virgin Islands"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Tianjin"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Tijuana"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Tokyo"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Toronto"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Trehet"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Tripoli"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Libya"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Tunis"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Tunisia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Torino"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ufa"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Bashkiriya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ulaanbaatar"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Vaduz"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Liechtenstein"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "Valletta"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Malta"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Vancouver"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Verona"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Victoria"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Seychelles"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Vienna"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Austria"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Vilnius"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Lithuania"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Vladivostok"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Volgograd"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "St Petersburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Warszawa "
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Poland"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Washington DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Wellington"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Winnipeg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Yakutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Yamoussoukro"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Yaounde"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Yekaterinburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Yerevan"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Armenia"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Yuzhno-Sakhalinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Zagreb"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Croatia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Zurich"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Exporting..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Importing..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Imported"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Exported"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Adjuntar"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Detalles"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "No se han encontrado resultados"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Mensual"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Todos los calendarios"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Antes"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "antes"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Personalizar"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "A diario"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Día"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Hora de finalización"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Mensual"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Mes"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Hora de inicio"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Toque para introducir ubicación"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Toque para introducir nota"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Toque para escribir título"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Mes"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Semana"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Semanal"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Anual"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Toque para introducir participante"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "S"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Todo el día"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "semana"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Cuenta predetermin"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Opciones de envío"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Mapa"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Título"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Exportar"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Sincr. de calendario"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Eventos"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Domingo"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Lunes"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Primer día de la semana"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "No se ha seleccionado ninguna ubicación"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Eliminar evento"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "¿Enviar mensajes a participantes?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Participantes"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "En hora"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Calendarios"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Sin calendarios"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Lista"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Sólo este evento"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Todos los eventos repetitivos"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Sin título"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Bloquear zona horaria"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Zona horaria"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "hora"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Repetir hasta"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "veces"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Participante"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Calendario vinculado"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Calendario del teléfono"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Vista diaria"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Vista semanal"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Año"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Repetir"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "No se puede encontrar ubicación"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Ubicación"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "día"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "semana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Abidján"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Abu Dhabi"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Emiratos Árabes Unidos"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Accra"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Ghana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Addis Ababa"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Etiopía"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Adelaide"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Australia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Alaska"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "EE. UU."
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Costa de Marfil"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Argelia"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Algeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Almaty"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Kazajistán"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Ambon"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Indonesia"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Ammán"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Jordania"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Ámsterdam"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Países Bajos"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Anadyr"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Rusia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Anchorage"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Ankara"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Turquía"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Antananarivo"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "Madagascar"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Asjabad"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Turkmenistán"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Asmara"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Eritrea"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Astana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Asunción"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Paraguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Atenas"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Grecia"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Auckland"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Nueva Zelanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Austin"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Azores"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Portugal"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Bagdad"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Irak"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Bakú"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Azerbaiyán"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Baltimore"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Bamako"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Mali"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Bangkok"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Tailandia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Bangui"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "República Centroafricana"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Barcelona"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "España"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Bari"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Italia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Basse-Terre"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Guadalupe"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Pekín"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "China"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Beirut"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Líbano"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Belgrado"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Serbia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Ciudad de Belice"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Belice"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Berlín"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Alemania"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Berna"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Suiza"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Bishkek"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Kirguistán"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Guinea Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Bogotá"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Colombia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Bolonia"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston "
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Brasilia"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Brasil"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Bratislava"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Eslovaquia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Bridgetown"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Barbados"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Brisbane"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Bruselas"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Bélgica"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Bucarest"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Rumanía"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Budapest"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Hungría"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Buenos Aires"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Argentina"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "El Cairo"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Egipto"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Calgary"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Canadá"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Islas Canarias"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Canberra"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Cantón"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Ciudad del Cabo"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "República de Sudáfrica"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Caracas"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Venezuela"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Cardiff"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Gales"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Casablanca"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Marruecos"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Catanzaro"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Guardar en"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "No hay eventos"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Personalizar"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "¿Guardar?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Reordenar"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Cayena"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Guayana Francesa"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Charlotte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Charlotte Amalie"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "Islas Vírgenes de los Estados Unidos"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Chelyabinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "India"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Chicago"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Chisinau"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Moldavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Chita"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Cleveland"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Colombo"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Sri Lanka"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Columbus"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Conakry"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Guinea"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Copenhague"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Dinamarca"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Cork"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Irlanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Crotona"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Dakar"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Senegal"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Dallas"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Damasco"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Siria"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Dar es Salaam"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Tanzania"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Darwin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Denpasar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Denver"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Detroit"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Dhaka"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Bangladesh"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Diego Garcia"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "Reino Unido"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Yibuti"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Yibuti"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Doha"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Qatar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Douala"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Camerún"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Dubai"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Dublín"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Dusambé"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Tayikistán"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Isla de Pascua"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Chile"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Edimburgo"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Escocia"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "El Paso"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Florencia"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Fort-de-France"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Martinica"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Freetown"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Sierra Leona"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Gaborone"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Botswana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Islas Galápagos"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Ecuador"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Génova"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Génova"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Georgetown"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Guyana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Grytviken"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "Georgia del Sur"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Guam"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Ciudad de Guatemala"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Gustavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Saint Barthélemy"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Halifax"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Hamburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Hanoi"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Vietnam"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Harare"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Zimbabue"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "La Habana"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Cuba"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Hawai"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Helsinki"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Finlandia"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Hobart"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Mostrar eventos por semana"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Diseño en vista por mes"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Mostrar eventos por día"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Hong Kong"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Honolulu"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Houston"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Hovd"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Mongolia"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Indianápolis"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Irkutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Islamabad"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Paquistán"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Estambul"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Izhevsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Yakarta"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Jidda"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Arabia Saudí"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Jerusalén"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Israel"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Johannesburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Kabul"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Afganistán"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Kaliningrado"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Kamchatka"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Kampala"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Uganda"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Karachi"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Kathmandú"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Nepal"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Khabarovsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Kharkiv"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Ucrania"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Jartum"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Sudán"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Kiev"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Kingston"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Jamaica"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Kinshasa"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "República Democrática del Congo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Kolkata"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Krasnoyarsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Kuala Lumpur"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Malasia"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Kuwait"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Los Ángeles"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "La Paz"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Bolivia"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Lagos"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Nigeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Las Vegas"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Lima"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Perú"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Lisboa"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Liubliana"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "Londres"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Longhua"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Louisville"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Luanda"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Angola"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Lubumbashi"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Lusaka"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Zambia"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Luxemburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Lviv"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Macao"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Magadán"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Malabo"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Guinea Ecuatorial"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Malé"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Maldivas"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Managua"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Nicaragua"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Manama"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Bahréin"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Manila"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Filipinas"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Maputo"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Mozambique"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Marigot"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "San Martín"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Mazatlán"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "México"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Riad"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Melbourne"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Memphis"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Mesina"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Ciudad de México"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Miami"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Atlántico Central"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Midway Atoll"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Milán"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Milwaukee"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Minsk"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Bielorrusia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Mogadishu"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Somalia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Monrovia"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Liberia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Montevideo"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Uruguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Montreal"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Moscú"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Mumbai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "Múnich"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Mascate"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Omán"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Nairobi"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Kenia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Roma"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Naters"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "Ndjamena"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Nápoles"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "Chad"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "La Meca"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "Nueva Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "Nueva York"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Terranova"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Niamey"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "Níger"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Nouakchott"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "Mauritania"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Numea"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "Nueva Caledonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Novokuznetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Novosibirsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Nuku’alofa"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Tonga"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Nuuk"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Groenlandia"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Omsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Osaka"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Japón"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Ottawa"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ouagadougou"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Burkina Faso"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Pago Pago"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Estado Independiente de Samoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Palermo"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Ciudad de Panamá"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Panamá"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Paramaribo"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Suriname"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "París"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "Francia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Perm"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Perth"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Petropavlovsk-Kamchatskiy"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Filadelfia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Camboya"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Phoenix"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Podgorica"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Montenegro"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Ponta Delgada"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Port Louis"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "Mauricio"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Puerto Príncipe"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Haití"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Portland"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Praga"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "República Checa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Pyongyang"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Corea del Norte"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "Quito"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Rabat"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Rangún"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Birmania"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Recife"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Regina"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Reikiavik"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "Islandia"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Riga"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Letonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Rio De Janeiro"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Saint-Denis"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Isla Reunión"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Samara"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "San Antonio"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "San Diego"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "San Francisco"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "San José"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Costa Rica"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "San Juan"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Puerto Rico"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "San Marino"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "San Salvador"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "El Salvador"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Saná"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Yemen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Santiago"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Santo Domingo"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "República Dominicana"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "Sao Paulo"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Seattle"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Seúl"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "República de Corea"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Shanghái"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Shenzhen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Singapur"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "República de Singapur"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Skopje"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "MACEDONIA"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Sofía"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Bulgaria"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "St.Johns"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Antigua y Barbuda"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Estocolmo"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Suecia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Suva"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Fiyi"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "República de las Islas Fiji"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Sydney"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Tahití"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Polinesia Francesa"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Taipéi"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Taiwán"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Tallin"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Estonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Tarawa"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Kiribati"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Tashkent"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Uzbekistán"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Tiflis"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Georgia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Tegucigalpa"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Honduras"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Teherán"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Irán"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Ciudad Ho Chi Minh"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "The Settlement"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "Islas Vírgenes Británicas"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Tianjin"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Tijuana"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Tokio"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Toronto"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Tréhet"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Trípoli"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Libia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Túnez"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Túnez"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Turín"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ufa"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Bashkiriya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ulan Bator"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Vaduz"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Liechtenstein"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "La Valeta"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Malta"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Vancúver"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Verona"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Victoria"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Seychelles"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Viena"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Austria"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Vilnius"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Lituania"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Vladivostok"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Volgogrado"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "San Petersburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Varsovia"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Polonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Washington DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Wellington"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Winnipeg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Yakutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Yamusukro"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Yaounde"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Yekaterimburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Ereván"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Armenia"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Yuzhno-Sakhalinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Zagreb"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Croacia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Zúrich"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Exportando..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Importando..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Importadas"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Exportado"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Joindre"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Note"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Détails"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "Aucun résultat trouvé"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Mensuel"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Tout le calendrier"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Avant"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "avant"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Personnaliser"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Tous les jours"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Jour"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Heure de fin"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Mensuel"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Mois"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Heure de début"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Appuyez pour entrer une localisation"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Appuyez pour entrer une note"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Appuyez pour entrer un titre"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Mois"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Semaine"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Toutes les semaines"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Chaque année"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Appuyez pour entrer un participant"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "S"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Quotidien"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "semaine"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Compte par défaut"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Options d'envoi"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Carte"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Titre"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Exporter"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Synchro. des calendriers"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Evénements"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Dimanche"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Lundi"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Premier jour de la semaine"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "Aucun endroit sélectionné"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Supprimer l'événement"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Envoyer les messages aux participants ?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Participants"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "A l'heure"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Calendriers"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Aucun calendrier"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Liste"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Uniquement cet événement"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Tous les événements récurrents"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Sans titre"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Verrouiller fuseau horaire"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Fuseau horaire"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "heure"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Répéter jusqu'à"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "fois"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Participant"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Calendrier associé"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Calendrier du téléphone"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Affichage Jour"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Vue Semaine"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Année"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Nombre de répétitions"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Localisation introuvable"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Emplacement"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "jour"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "semaine"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Abidjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Abu Dhabi"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Émirats arabes unis"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Accra"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Ghana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Addis-Abeba"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Éthiopie"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Adélaïde"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Australie"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Alaska"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "Etats-Unis"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Côte d’Ivoire"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Alger"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Algérie"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Almaty"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Kazakhstan"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Ambon"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Indonésie"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Amman"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Jordanie"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Amsterdam"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Pays-Bas"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Anadyr"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Russie"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Anchorage"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Ankara"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Turquie"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Antananarivo"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "Madagascar"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Ashgabat"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Turkmenistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Asmara"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Érythrée"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Astana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Asuncion"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Paraguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Athènes"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Grèce"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Auckland"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Nouvelle-Zélande"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Austin"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Açores"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Portugal"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Baghdad"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Iraq"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Baku"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Azerbaïdjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Baltimore"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Bamako"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Mali"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Bangkok"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Thaïlande"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Bangui"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "République centrafricaine"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Barcelone"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "Espagne"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Bari"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Italie"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Basse-Terre"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Guadeloupe"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Pékin"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "Chine"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Beyrouth"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Liban"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Belgrade"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Serbie"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Belize City"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Belize"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Berlin"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Allemagne"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Berne"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Suisse"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Bichkek"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Kirghizistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Guinée-Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Bogotá"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Colombie"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Bologne"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston "
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Brasilia"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Brésil"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Bratislava"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Slovaquie"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Bridgetown"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Barbade"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Brisbane"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Bruxelles"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Belgique"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Bucarest"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Roumanie"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Budapest"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Hongrie"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Buenos Aires"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Argentine"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Le Caire"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Egypte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Calgary"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Canada"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Iles Canaries"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Canberra"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Canton"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Le Cap"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "Afrique du Sud"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Caracas"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Venezuela"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Cardiff"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Pays de Galles"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Casablanca"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Maroc"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Catanzaro"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Enregistrer sur"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "Aucun événement"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Personnaliser"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Enregistrer ?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Réorganiser"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Cayenne"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Guinée française"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Charlotte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Charlotte Amalie"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "Iles Vierges des Etats-Unis"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Chelyabinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "Inde"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Chicago"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Chişinău"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Moldavie"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Chita"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Cleveland"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Colombo"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Sri Lanka"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Columbus"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Conakry"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Guinée"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Copenhague"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Danemark"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Cork"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Irlande"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Crotone"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Dakar"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Sénégal"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Dallas"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Damas"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Syrie"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Dar es Salaam"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Tanzanie"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Darwin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Denpasar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Denver"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Detroit"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Dhaka"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Bangladesh"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Diego Garcia"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "Royaume-Uni"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Doha"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Qatar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Douala"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Cameroun"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Dubaï"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Dublin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Douchanbé"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Tajikistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Ile de Pâques"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Chili"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Édimbourg"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Ecosse"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "El Paso"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Florence"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Fort-de-France"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Martinique"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Freetown"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Sierra Leone"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Gaborone"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Botswana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Iles Galápagos"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Équateur"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Genève"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Gênes"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Georgetown"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Guyane"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Grytviken"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "Géorgie du Sud"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Guam"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Guatemala (ville)"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Gustavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Saint-Barthélemy"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Halifax"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Hambourg"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Hanoï"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Viêtnam"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Harare"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Zimbabwe"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "La Havane"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Cuba"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Hawaï"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Helsinki"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Finlande"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Hobart"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Afficher événements hebdomadaires"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Affichage mensuel"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Afficher événements quotidiens"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Hong Kong"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Honolulu"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Houston"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Hovd"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Mongolie"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Indianapolis"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Irkoutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Islamabad"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Pakistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Istanbul"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Izhevsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Jakarta"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Jeddah"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Arabie Saoudite"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Jérusalem"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Israël"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Johannesburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Kaboul"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Afghanistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Kaliningrad"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Kamtchatka"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Kampala"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Ouganda"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Karachi"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Katmandou"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Népal"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Khabarovsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Kharkiv"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Ukraine"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Khartoum"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Soudan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Kiev"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Kingston"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Jamaïque"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Kinshasa"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "République démocratique du Congo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Kolkata"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Krasnoïarsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Kuala Lumpur"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Malaisie"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Koweït"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Los Angeles"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "La Paz"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Bolivie"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Lagos"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Nigeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Las Vegas"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Lima"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Pérou"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Lisbonne"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Ljubljana"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "Londres"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Longhua"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Louisville"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Luanda"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Angola"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Lubumbashi"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Lusaka"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Zambie"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Luxembourg"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Lviv"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Macao"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Magadan"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Malabo"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Guinée équatoriale"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Malé"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Les Maldives"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Managua"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Nicaragua"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Manama"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Bahrain"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Manille"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Les Philippines"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Maputo"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Mozambique"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Marigot"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Saint-Martin"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Mazatlan"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "Mexique"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Riyad"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Melbourne"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Memphis"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Messine"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Mexico"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Miami"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Atlantique central"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Atoll de Midway"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Milan"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Milwaukee"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Minsk"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Bélarus"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Mogadishu"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Somalie"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Monrovia"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Libéria"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Montevideo"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Uruguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Montréal"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Moscou"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Mumbai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "Munich"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Mascate"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Oman"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Nairobi"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Kenya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Rome"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Naters"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "Ndjamena"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Naples"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "TCHAD"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Mecca"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "New Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "New York"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Terre-Neuve"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Niamey"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "Niger"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Nouakchott"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "MAURITANIE"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Nouméa"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "Nouvelle Calédonie"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Novokuznetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Novosibirsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Nuku'alofa"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Tonga"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Nuuk"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Groenland"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Omsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Osaka"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Japon"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Ottawa"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ouagadougou"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Burkina Faso"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Pago Pago"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Samoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Palerme"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Panama City"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Panama"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Paramaribo"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Suriname"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Paris"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "France"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Perm"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Perth"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Petropavlovsk-Kamchatskiy"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Philadelphie"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Cambodge"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Phoenix"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Podgorica"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Monténégro"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Ponta Delgada"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Port-Louis"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "Maurice"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Port-au-Prince"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Haïti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Portland"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Prague"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "République Tchèque"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Pyongyang"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Corée du Nord"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "QUITO"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Rabat"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Yangon"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Burma"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Recife"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Régina"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Reykjavík"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "Islande"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Riga"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Lettonie"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Rio De Janeiro"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Saint-Denis"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Ile de la Réunion"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Samara"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "San Antonio"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "San Diego"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "San Francisco"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "San José"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Costa Rica"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "San Juan"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Porto Rico"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "Saint-Marin"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "San Salvador"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "Salvador"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Sana’a"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Yémen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Santiago"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Saint-Domingue"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "République dominicaine"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "Sao Paulo"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Seattle"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Séoul"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "République de Corée"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Shanghai"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Shenzhen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Singapour"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "République de Singapour"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Skopje"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "Macédoine"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Sofia"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Bulgarie"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "St. John's"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Antigua et Barbuda"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Stockholm"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Suède"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Suva"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Fiji"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "République des îles Fidji"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Sydney"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Tahiti"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Polynésie française"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Taipei"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Taïwan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Tallinn"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Estonie"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Tarawa"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Kiribati"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Tachkent"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Ouzbékistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Tbilisi"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Géorgie"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Tegucigalpa"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Honduras"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Téhéran"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Iran"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Hô-Chi-Minh-Ville"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "The Settlement"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "Iles Vierges Britanniques"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Tianjin"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Tijuana"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Tokyo"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Toronto"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Tréhet"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Tripoli"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Libye"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Tunis"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Tunisie"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Turin"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ufa"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Bachkirie"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ulan Bator"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Vaduz"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Liechtenstein"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "La Valette"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Malte"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Vancouver"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Vérone"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Victoria"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Seychelles"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Vienne"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Autriche"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Vilnius"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Lituanie"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Vladivostok"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Volgograd"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "Saint-Pétersbourg"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Varsovie"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Pologne"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Washington DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Wellington"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Winnipeg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Lakoutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Yamoussoukro"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Yaoundé"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Lekaterinbourg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Yerevan"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Arménie"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Ioujno-Sakhalinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Zagreb"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Croatie"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Zurich"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Exportation..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Importation en cours..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Importé"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Exporté"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Allega"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Dettagli"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "Nessun risultato trovato"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Ogni mese"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Tutto il calendario"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Prima"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "prima"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Ogni giorno"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Giorno"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Ora fine"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Ogni mese"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Mese"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Ora inizio"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Tocca per inserire un luogo"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Tocca per inserire una nota"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Tocca per inserire il titolo"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Mese"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Settimana"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Ogni settimana"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Ogni anno"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Tocca per inserire un partecipante"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "S"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Tutto il giorno"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "settimana"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Account predefinito"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Opzioni di invio"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Mappa"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Titolo"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Esporta"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Sincronizza agenda"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Eventi"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Domenica"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Lunedì"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Primo giorno della settimana"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "Nessuna posizione selezionata"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Elimina evento"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Inviare messaggi ai partecipanti?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Partecipanti"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "All'ora esatta"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Calendari"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Nessun calendario"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Elenco"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Solo questo evento"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Tutti gli eventi ripetuti"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Nessun titolo"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Blocca fuso orario"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Fuso orario"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "ora"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Ripeti fino a"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "volte"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Partecipante"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Calendario collegato"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Calendario telefono"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Vista giorno"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Vista settimana"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Anno"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Ripeti"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Impossibile trovare posizione"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Posizione"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "giorno"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "settimana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Abidjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Abu Dhabi"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Emirati Arabi Uniti"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Accra"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Ghana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Addis Abeba"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Etiopia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Adelaide"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Australia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Alaska"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "Stati Uniti d'America"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Costa d'Avorio"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Algeri"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Algeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Almaty"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Kazakhstan"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Ambon"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Indonesia"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Amman"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Giordania"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Amsterdam"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Paesi Bassi"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Anadyr"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Russia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Anchorage"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Ankara"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Turchia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Antananarivo"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "Madagascar"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Ashgabat"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Turkmenistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Asmara"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Eritrea"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Astana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Asuncion"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Paraguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Atene"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Grecia"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Auckland"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Nuova Zelanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Austin"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Azzorre"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Portogallo"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Baghdad"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Iraq"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Baku"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Azerbaijan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Baltimora"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Bamako"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Mali"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Bangkok"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Tailandia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Bangui"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "Repubblica Centrafricana"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Barcellona"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "Spagna"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Bari"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Italia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Basse-Terre"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Guadalupa"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Pechino"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "Cina"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Beirut"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Libano"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Belgrado"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Serbia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Belize City"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Belize"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Berlino"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Germania"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Berna"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Svizzera"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Bishkek"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Kyrgyzstan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Guinea Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Bogota"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Colombia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Bologna"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston "
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Brasilia"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Brasile"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Bratislava"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Slovacchia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Bridgetown"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Barbados"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Brisbane"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Bruxelles"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Belgio"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Bucarest"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Romania"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Budapest"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Ungheria"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Buenos Aires"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Argentina"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Cairo"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Egitto"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Calgary"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Canada"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Isole Canarie"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Canberra"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Canton"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Città del Capo"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "Repubblica Sudafricana"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Caracas"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Venezuela"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Cardiff"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Galles"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Casablanca"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Marocco"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Catanzaro"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Salva in"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "Nessun evento"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Personalizza"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Salvare?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Riordina"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Caienna"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Guyana francese"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Charlotte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Charlotte Amalie"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "Isole Vergini Statunitensi"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Chelyabinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "India"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Chicago"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Chişinău"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Moldavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Chita"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Cleveland"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Colombo"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Sri Lanka"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Columbus"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Conakry"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Guinea"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Copenhagen"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Danimarca"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Cork"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Irlanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Crotone"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Dakar"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Senegal"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Dallas"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Damasco"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Siria"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Dar es Salaam"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Tanzania"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Darwin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Denpasar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Denver"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Detroit"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Dhaka"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Bangladesh"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Diego Garcia"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "Regno Unito"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Doha"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Qatar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Douala"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Camerun"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Dubai"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Dublino"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Dushanbe"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Tajikistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Isola di Pasqua"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Cile"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Edinburgo"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Scozia"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "El Paso"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Firenze"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Fort-de-France"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Martinica"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Freetown"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Sierra Leone"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Gaborone"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Botswana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Isole Galapagos"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Ecuador"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Ginevra"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Genova"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Georgetown"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Guyana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Grytviken"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "Georgia del Sud"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Guam"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Città del Guatemala"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Gustavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Saint Barthélemy"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Halifax"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Amburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Hanoi"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Vietnam"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Harare"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Zimbabwe"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "Havana"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Cuba"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Hawaii"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Helsinki"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Finlandia"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Hobart"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Mostra eventi per settimana"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Layout vista mese"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Mostra eventi per giorno"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Hong Kong"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Honolulu"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Houston"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Hovd"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Mongolia"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Indianapolis"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Irkutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Islamabad"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Pakistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Istanbul"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Izhevsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Jakarta"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Jeddah"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Arabia Saudita"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Gerusalemme"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Israele"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Johannesburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Kabul"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Afghanistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Kaliningrad"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Kamchatka"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Kampala"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Uganda"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Karachi"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Katmandu"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Nepal"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Khabarovsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Kharkiv"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Ucraina"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Khartoum"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Sudan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Kiev"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Kingston"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Giamaica"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Kinshasa"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "Repubblica Democratica del Congo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Calcutta"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Krasnoyarsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Kuala Lumpur"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Malesia"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Kuwait"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Los Angeles"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "La Paz"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Bolivia"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Lagos"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Nigeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Las Vegas"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Lima"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Perù"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Lisbona"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Lubiana"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "Londra"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Longhua"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Louisville"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Luanda"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Angola"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Lubumbashi"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Lusaka"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Zambia"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Lussemburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Leopoli"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Macau"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Magadan"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Malabo"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Guinea Equatoriale"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Male"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Maldive"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Managua"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Nicaragua"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Manama"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Bahrain"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Manila"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Filippine"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Maputo"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Mozambico"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Marigot"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Saint-Martin"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Mazatlan"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "Messico"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Riyadh"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Melbourne"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Memphis"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Messina"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Città del Messico"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Miami"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Atlantico centrale"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Atollo di Midway"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Milano"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Milwaukee"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Minsk"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Bielorussia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Mogadiscio"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Somalia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Monrovia"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Liberia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Montevideo"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Uruguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Montreal"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Mosca"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Mumbai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "Monaco di Baviera"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Muscat"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Oman"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Nairobi"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Kenya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Roma"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Naters"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "Ndjamena"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Napoli"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "Chad"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Mecca"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "Nuova Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "New York"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Terranova"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Niamey"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "Niger"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Nouakchott"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "Mauritania"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Nouméa"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "Nuova Caledonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Novokuznetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Novosibirsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Nuku’alofa"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Tonga"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Nuuk"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Groenlandia"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Omsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Osaka"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Giappone"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Ottawa"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ouagadougou"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Burkina Faso"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Pago Pago"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Stato Indipendente di Samoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Palermo"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Panama City"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Panama"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Paramaribo"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Suriname"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Parigi"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "Francia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Perm"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Perth"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Petropavlovsk-Kamchatskiy"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Filadelfia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Cambogia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Phoenix"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Podgorica"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Montenegro"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Ponta Delgada"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Port Louis"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "Mauritius"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Port-au-Prince"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Haiti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Portland"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Praga"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "Repubblica Ceca"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Pyongyang"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Corea del Nord"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "QUITO"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Rabat"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Yangon"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Burma"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Recife"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Regina"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Reykjavík"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "Islanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Riga"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Lettonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Rio De Janeiro"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Saint-Denis"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Isola di Reunion"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Samara"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "San Antonio"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "San Diego"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "San Francisco"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "San Jose"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Costa Rica"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "San Juan"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Porto Rico"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "San Marino"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "San Salvador"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "El Salvador"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Sana'a"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Yemen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Santiago"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Santo Domingo"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "Repubblica Dominicana"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "San Paolo"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Seattle"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Seul"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "Repubblica di Corea"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Shanghai"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Shenzhen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Singapore"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "Repubblica di Singapore"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Skopje"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "Macedonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Sofia"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Bulgaria"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "St.John's"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Antigua e Barbuda"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Stoccolma"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Svezia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Suva"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Fiji"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "Repubblica delle Isole Fiji"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Sydney"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Tahiti"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Polinesia francese"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Taipei"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Taiwan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Tallinn"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Estonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Tarawa"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Kiribati"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Tashkent"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Uzbekistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Tbilisi"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Georgia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Tegucigalpa"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Honduras"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Teheran"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Iran"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Ho Chi Minh"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "The Settlement"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "Isole Vergini Britanniche"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Tientsin"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Tijuana"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Tokyo"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Toronto"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Tréhet"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Tripoli"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Libia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Tunisi"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Tunisia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Torino"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ufa"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Bashkiriya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ulan Bator"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Vaduz"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Liechtenstein"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "La Valletta"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Malta"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Vancouver"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Verona"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Victoria"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Seychelles"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Vienna"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Austria"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Vilnius"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Lituania"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Vladivostok"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Volgograd"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "San Pietroburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Varsavia"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Polonia"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Washington DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Wellington"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Winnipeg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Yakutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Yamoussoukro"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Yaounde"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Ekaterinburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Yerevan"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Armenia"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Yuzhno-Sakhalinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Zagabria"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Croazia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Zurigo"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Esportazione..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Importazione..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Importati"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Esportazione eseguita"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "添付ファイル"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "説明"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "詳細"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "検索結果がありません。"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "毎月"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "全てのカレンダー"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "前"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "前"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "毎日"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "日表示"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "終了時刻"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "毎月"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "月表示"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "開始時刻"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "場所を入力"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "メモを入力"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "タイトルを入力"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "月表示"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "週"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "毎週"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "毎年"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "参加者を入力"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "週"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "終日"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "週"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "メインアカウント"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "送信オプション"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "地図"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "タイトル"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "エクスポート"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "カレンダー同期"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "イベント"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "日曜日"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "月曜日"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "週の始まり"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "場所が選択されていません。"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "イベントを削除"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "メッセージを参加者に送信しますか?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "参加者"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "開始時刻"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "カレンダー"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "カレンダーがありません。"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "リスト表示"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "このイベントのみ"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "全てのイベント"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "件名なし"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "タイムゾーンを固定"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "タイムゾーン"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "時間"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "繰り返し期間"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "回"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "参加者"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "リンクしたカレンダー"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "本体カレンダー"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "日常表示"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "週表示"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "年"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "繰り返し期間"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "現在地を検索できません。"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "位置"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "日付"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "週"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "アビジャン"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "アブダビ"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "アラブ首長国連邦"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "アクラ"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "ガーナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "アジスアベバ"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "エチオピア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "アデレード"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "オーストラリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "アラスカ"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "アメリカ(米国)"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "コートジボワール"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "アルジェ"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "アルジェリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "アルマトイ"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "カザフスタン"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "アンボン"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "インドネシア"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "アンマン"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "ヨルダン"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "アムステルダム"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "オランダ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "アナジル"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "ロシア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "アンカレッジ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "アンカラ"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "トルコ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "アンタナナリボ"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "マダガスカル"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "アシガバート"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "トルクメニスタン"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "アスマラ"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "エリトリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "アスタナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "アスンシオン"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "パラグアイ"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "アテネ"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "ギリシャ"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "オークランド"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "ニュージーランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "オースティン"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "アゾレス諸島"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "ポルトガル"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "バグダード"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "イラク"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "バクー"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "アゼルバイジャン"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "ボルティモア"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "バマコ"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "マリ"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "バンコク"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "タイ"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "バンギ"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "中央アフリカ共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "バルセロナ"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "スペイン"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "バーリ"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "イタリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "バステール"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "グアドループ"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "北京"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "中国"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "ベイルート"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "レバノン"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "ベオグラード"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "セルビア"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "ベリーズシティー"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "ベリーズ"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "ベルリン"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "ドイツ"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "ベルン"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "スイス"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "ビシュケク"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "キルギスタン"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "ビサウ"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "ギニアビサウ"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "ボゴタ"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "コロンビア"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "ボローニャ"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "ボストン"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "ブラジリア"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "ブラジル"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "ブラティスラヴァ"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "スロバキア"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "ブリッジタウン"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "バルバドス"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "ブリスベン"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "ブリュッセル"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "ベルギー"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "ブカレスト"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "ルーマニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "ブダペスト"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "ハンガリー"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "ブエノスアイレス"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "アルゼンチン"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "カイロ"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "エジプト"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "カルガリー"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "カナダ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "カナリア諸島"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "キャンベラ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "広東"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "ケープタウン"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "南アフリカ共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "カラカス"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "ベネズエラ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "カーディフ"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "ウェールズ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "カサブランカ"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "モロッコ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "カタンザーロ"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "保存先設定"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "イベントはありません。"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "カスタマイズ"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "保存しますか?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "並べ替え"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "カイエンヌ"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "仏領ギアナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "シャーロット"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "シャーロットアマリー"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "米領ヴァージン諸島"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "チェリャビンスク"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "チェンナイ"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "インド"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "シカゴ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "キシナウ"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "モルドバ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "チタ"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "クリーブランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "コロンボ"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "スリランカ"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "コロンバス"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "コナクリ"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "ギニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "コペンハーゲン"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "デンマーク"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "コーク"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "アイルランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "クロトーネ"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "ダカール"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "セネガル"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "ダラス"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "ダマスカス"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "シリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "ダルエスサラーム"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "タンザニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "ダーウィン"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "デリー"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "デンパサール"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "デンバー"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "デトロイト"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "ダッカ"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "バングラデシュ"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "ディエゴガルシア島"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "英国"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "ジブチ"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "ジブチ"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "ドーハ"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "カタール"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "ドゥアラ"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "カメルーン"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "ドバイ"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "ダブリン"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "ドゥシャンベ"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "タジキスタン"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "イースター島"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "チリ"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "エディンバラ"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "スコットランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "エルパソ"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "フィレンツェ"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "フォールドフランス"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "マルティニーク島"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "フリータウン"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "シエラレオネ"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "ハボローネ"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "ボツワナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "ガラパゴス諸島"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "エクアドル"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "ジュネーブ"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "ジェノヴァ"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "ジョージタウン"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "ガイアナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "グリトビケン"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "サウスジョージア"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "グアム"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "グアテマラシティー"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "グアテマラ"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "グスタビア"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "サンバルテルミー島"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "ハリファックス"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "ハンブルク"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "ハノイ"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "ベトナム"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "ハラレ"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "ジンバブエ"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "ハバナ"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "キューバ"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "ハワイ"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "ヘルシンキ"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "フィンランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "ホバート"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "週単位でイベント表示"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "月単位表示のレイアウト"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "日単位でイベント表示"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "香港"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "ホノルル"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "ヒューストン"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "ホブト"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "モンゴル"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "インディアナポリス"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "イルクーツク"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "イスラマバード"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "パキスタン"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "イスタンブール"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "イジェフスク"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "ジャカルタ"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "ジッダ"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "サウジアラビア"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "エルサレム"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "イスラエル"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "ヨハネスブルグ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "カブール"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "アフガニスタン"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "カリーニングラード"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "カムチャッカ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "カンパラ"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "ウガンダ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "カラチ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "カトマンズ"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "ネパール"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "ハバロフスク"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "ハリコフ"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "ウクライナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "ハルツーム"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "スーダン"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "キエフ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "キングストン"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "ジャマイカ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "キンシャサ"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "コンゴ民主共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "コルカタ"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "クラスノヤルスク"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "クアラルンプール"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "マレーシア"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "クウェート"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "ロサンゼルス"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "ラパス"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "ボリビア"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "ラゴス"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "ナイジェリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "ラスベガス"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "リマ"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "ペルー"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "リスボン"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "リュブリャナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "ロンドン"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "龍華"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "ルイビル"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "ルアンダ"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "アンゴラ"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "ルブンバシ"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "ルサカ"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "ザンビア"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "ルクセンブルグ"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "リヴィウ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "マカオ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "マドリード"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "マガダン"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "マラボ"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "赤道ギニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "マレ"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "モルディブ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "マナグア"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "ニカラグア"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "マナーマ"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "バーレーン"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "マニラ"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "フィリピン"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "マプト"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "モザンビーク"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "マリゴ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "サンマルタン"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "マサトラン"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "メキシコ"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "リヤド"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "メルボルン"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "メンフィス"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "メッシーナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "メキシコシティ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "マイアミ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "中央大西洋"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "ミッドウェー環礁"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "ミラノ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "ミルウォーキー"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "ミンスク"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "ベラルーシ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "モガディシュ"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "ソマリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "モンロビア"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "リベリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "モンテビデオ"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "ウルグアイ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "モントリオール"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "モスクワ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "ムンバイ"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "ミュンヘン"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "マスカット"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "オマーン"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "ナイロビ"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "ケニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "ローマ"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "ナテー"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "ヌジャメナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "ナポリ"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "チャド"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "メッカ"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "ニューデリー"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "ニューヨーク"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "ニューファンドランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "ニアメー"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "ニジェール"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "ヌアクショット"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "モーリタニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "ヌーメア"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "ニューカレドニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "ノヴォクズネツク"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "ノヴォシビルスク"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "ヌクアロファ"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "トンガ"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "ヌーク"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "グリーンランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "オムスク"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "大阪"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "日本"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "オタワ"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "ワガドゥグー"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "ブルキナファソ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "パゴパゴ"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "サモア独立国"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "パレルモ"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "パナマ市"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "パナマ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "パラマリボ"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "スリナム"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "パリ"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "フランス"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "ペルミ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "パース"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "ペトロパブロフスク-カムチャツキー"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "フィラデルフィア"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "プノンペン"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "カンボジア"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "フェニックス"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "ポドゴリツァ"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "モンテネグロ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "ポンタデルガダ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "ポートルイス"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "モーリシャス"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "ポルトープランス"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "ハイチ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "ポートランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "プラハ"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "チェコ共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "平壌"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "北朝鮮"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "キト"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "ラバト"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "ヤンゴン"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "ミャンマー"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "レシフェ"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "レジャイナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "レイキャビーク"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "アイスランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "リガ"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "ラトビア"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "リオデジャネイロ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "サンドニ"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "レユニオン島"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "サマラ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "サンアントニオ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "サンディエゴ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "サンフランシスコ"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "サンノゼ"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "コスタリカ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "サンファン"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "プエルトリコ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "サンマリノ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "サンサルバドル"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "エルサルバドル"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "サヌア"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "イエメン"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "サンティエゴ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "サントドミンゴ"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "ドミニカ共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "サンパウロ"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "シアトル"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "ソウル"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "韓国"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "上海"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "深セン市"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "シンガポール"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "シンガポール"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "スコピエ"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "マケドニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "ソフィア"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "ブルガリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "セントジョンズ"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "アンティグアバーブーダ"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "ストックホルム"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "スウェーデン"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "スバ"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "フィジー"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "フィジー諸島共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "シドニー"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "タヒチ"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "仏領ポリネシア"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "台北"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "台湾"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "タリン"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "エストニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "タラワ"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "キリバス"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "タシケント"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "ウズベキスタン"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "トビリシ"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "グルジア"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "テグシガルパ"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "ホンジュラス"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "テヘラン"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "イラン"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "ホーチミン市"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "ザ・セトルメント"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "英領バージン諸島"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "天津"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "ティフアナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "東京"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "トロント"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "トレエ"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "トリポリ"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "リビア"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "チュニス"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "チュニジア"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "トリノ"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "ウファ"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "バシキリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "ウランバートル"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "ファドゥーツ"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "リヒテンシュタイン"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "バレッタ"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "マルタ"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "バンクーバー"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "ベロナ"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "ビクトリア"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "セーシェル"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "ウィーン"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "オーストリア"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "ヴィリニュス"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "リトアニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "ウラジオストック"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "ボルゴグラード"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "サンクトペテルブルク"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "ワルシャワ"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "ポーランド"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "ワシントンDC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "ウェリントン"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "ウィニペグ"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "ヤクーツク"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "ヤムスクロ"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "ヤウンデ"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "エカテリンブルグ"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "エレバン"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "アルメニア"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "ユジノサハリンスク"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "ザグレブ"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "クロアチア"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "チューリッヒ"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "エクスポート中..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "インポート中..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "インポートしました。"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "エクスポートしました"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "첨부"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "메모"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "상세 정보"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "검색 결과가 없습니다"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "매월"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "모든 일정"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "전"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "전"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "매일"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "일"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "종료 시간"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "매월"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "월"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "시작 시간"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "위치를 입력하려면 누르세요"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "설명을 입력하려면 누르세요"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "제목을 입력하려면 누르세요"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "월"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "주"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "매주"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "매년"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "참석자를 입력하려면 누르세요"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "주"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "하루종일"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "주"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "기본 계정"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "전송 옵션"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "지도"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "제목"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "내보내기"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "일정 동기화"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "일정"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "일요일"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "월요일"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "주 시작 요일"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "선택된 위치가 없습니다"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "일정 삭제"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "참석자에게 메시지를 전송할까요?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "참석자"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "정각"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "일정 보기 설정"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "일정이 없습니다"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "목록"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "선택한 일정만"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "반복 일정"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "제목이 없습니다"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "시간대 고정"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "표준 시간대"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "시간"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "반복 종료일"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "회"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "참석자"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "링크된 캘린더"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "휴대폰 캘린더"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "일간 보기"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "주간 보기"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "년"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "반복"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "위치를 찾을 수 없습니다"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "위치"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "일"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "주"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "아비장"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "아부다비"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "아랍에미리트"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "아크라"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "가나"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "아디스아바바"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "에티오피아"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "애들레이드"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "오스트레일리아"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "알래스카"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "미국"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "코트디부아르"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "알제"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "알제리"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "알마티"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "카자흐스탄"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "암본"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "인도네시아"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "암만"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "요르단"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "암스테르담"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "네덜란드"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "아나디리"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "러시아"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "앵커리지"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "앙카라"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "터키"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "안타나나리보"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "마다가스카르"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "아시가바트"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "투르크메니스탄"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "아스마라"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "에리트레아"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "아스타나"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "아순시온"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "파라과이"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "아테네"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "그리스"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "오클랜드"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "뉴질랜드"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "오스틴"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "아조레스"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "포르투갈"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "바그다드"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "이라크"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "바쿠"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "아제르바이잔"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "볼티모어"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "바마코"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "말리"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "방콕"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "태국"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "방기"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "중앙아프리카 공화국"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "바르셀로나"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "스페인"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "바리"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "이탈리아"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "바스테르"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "과들루프"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "베이징"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "중국"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "베이루트"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "레바논"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "베오그라드"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "세르비아"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "벨리즈시티"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "벨리즈"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "베를린"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "독일"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "베른"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "스위스"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "비슈케크"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "키르기스스탄"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "비사우"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "기니비사우"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "보고타"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "콜롬비아"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "볼로냐"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "보스턴"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "브라질리아"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "브라질"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "브라티슬라바"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "슬로바키아"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "브리지타운"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "바베이도스"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "브리즈번"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "브뤼셀"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "벨기에"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "부쿠레슈티"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "루마니아"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "부다페스트"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "헝가리"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "부에노스아이레스"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "아르헨티나"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "카이로"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "이집트"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "캘거리"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "캐나다"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "카나리아 제도"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "캔버라"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "캔턴"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "케이프타운"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "남아프리카 공화국"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "카라카스"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "베네수엘라"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "카디프"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "웨일즈"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "카사블랑카"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "모로코"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "카탄차로"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "저장"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "일정이 없습니다"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "직접 입력"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "저장할까요?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "순서 변경"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "카옌"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "프랑스령 기아나"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "샬럿"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "샬럿아말리에"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "미국령 버진아일랜드"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "첼랴빈스크"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "첸나이"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "인도"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "시카고"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "키시너우"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "몰도바"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "치타"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "클리블랜드"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "콜롬보"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "스리랑카"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "콜럼버스"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "코나크리"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "기니"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "코펜하겐"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "덴마크"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "코크"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "아일랜드"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "크로토네"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "다카르"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "세네갈"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "댈러스"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "다마스쿠스"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "시리아"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "다르에스살람"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "탄자니아"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "다윈"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "델리"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "덴파사르"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "덴버"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "디트로이트"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "다카"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "방글라데시"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "디에고가르시아"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "영국"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "지부티"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "지부티"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "도하"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "카타르"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "두알라"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "카메룬"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "두바이"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "더블린"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "두샨베"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "타지키스탄"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "이스터 섬"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "칠레"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "에든버러"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "스코틀랜드"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "엘패소"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "피렌체"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "포르 드 프랑스"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "마르티니크"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "프리타운"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "시에라리온"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "가보로네"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "보츠와나"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "갈라파고스 제도"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "에콰도르"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "제네바"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "제노바"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "조지타운"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "가이아나"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "그리트비켄"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "사우스 조지아"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "괌"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "과테말라시티"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "과테말라"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "구스타비아"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "생 바르텔레미"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "핼리팩스"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "함부르크"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "하노이"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "베트남"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "하라레"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "짐바브웨"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "아바나"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "쿠바"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "하와이"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "헬싱키"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "핀란드"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "호바트"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "주간 단위로 일정 표시"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "월간 보기 레이아웃"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "요일 단위로 일정 표시"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "홍콩"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "호놀룰루"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "휴스턴"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "호브드"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "몽골"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "인디애나폴리스"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "이르쿠츠크"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "이슬라마바드"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "파키스탄"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "이스탄불"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "이젭스크"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "자카르타"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "제다"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "사우디아라비아"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "예루살렘"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "이스라엘"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "요하네스버그"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "카불"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "아프가니스탄"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "칼리닌그라드"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "캄차카"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "캄팔라"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "우간다"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "카라치"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "카트만두"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "네팔"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "하바롭스크"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "카르키프"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "우크라이나"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "카르툼"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "수단"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "키예프"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "킹스턴"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "자메이카"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "킨샤사"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "콩고 민주공화국"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "콜카타"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "크라스노야르스크"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "쿠알라룸푸르"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "말레이시아"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "쿠웨이트"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "로스앤젤레스"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "라파스"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "볼리비아"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "라고스"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "나이지리아"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "라스베이거스"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "리마"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "페루"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "리스본"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "류블랴나"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "런던"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "룽화"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "루이즈빌"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "루안다"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "앙골라"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "루붐바시"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "루사카"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "잠비아"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "룩셈부르크"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "리비브"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "마카오"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "마드리드"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "마가단"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "말라보"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "적도 기니"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "말레"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "몰디브"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "마나과"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "니카라과"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "마나마"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "바레인"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "마닐라"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "필리핀"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "마푸토"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "모잠비크"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "마리갓"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "생 마르텡"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "마사틀란"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "멕시코"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "리야드"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "멜버른"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "멤피스"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "메시나"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "멕시코시티"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "마이애미"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "대서양 연안 중부"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "미드웨이 아톨"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "밀라노"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "밀워키"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "민스크"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "벨라루스"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "모가디슈"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "소말리아"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "몬로비아"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "라이베리아"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "몬테비데오"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "우루과이"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "몬트리올"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "모스크바"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "뭄바이"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "뮌헨"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "무스카트"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "오만"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "나이로비"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "케냐"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "로마"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "네이터스"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "엔자메나"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "나폴리"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "차드"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "메카"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "뉴델리"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "뉴욕"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "뉴펀들랜드"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "니아메"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "니제르"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "누악쇼트"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "모리타니아"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "누메아"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "뉴칼레도니아"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "노보쿠즈네츠크"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "노보시비르스크"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "누쿠알로파"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "통가"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "누크"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "그린란드"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "옴스크"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "오사카"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "일본"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "오타와"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "와가두구"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "부르키나파소"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "파고파고"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "사모아독립국"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "팔레르모"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "파나마시티"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "파나마"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "파라마리보"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "수리남"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "파리"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "프랑스"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "페름"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "퍼스"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "페트로파블로프스크-캄차스키"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "필라델피아"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "프놈펜"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "캄보디아"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "피닉스"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "포드고리차"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "몬테네그로"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "폰타델가다"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "포트루이스"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "모리셔스"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "포르토프랭스"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "아이티"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "포틀랜드"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "프라하"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "체코"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "평양"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "북한"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "키토"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "라바트"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "양곤"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "미얀마"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "헤시피"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "리자이나"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "레이캬비크"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "아이슬란드"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "리가"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "라트비아"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "리우데자네이루"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "생드니"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "레위니옹 섬"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "사마라"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "샌안토니오"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "샌디에이고"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "샌프란시스코"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "산호세"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "코스타리카"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "산후안"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "푸에르토리코"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "산마리노"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "산살바도르"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "엘살바도르"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "사나"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "예멘"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "산티아고"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "산토도밍고"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "도미니카 공화국"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "상파울루"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "시애틀"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "서울"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "대한민국"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "상하이"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "선전"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "싱가포르"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "싱가포르"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "스코페"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "마케도니아"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "소피아"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "불가리아"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "세인트존스"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "앤티가 바부다"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "스톡홀름"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "스웨덴"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "수바"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "피지"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "피지"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "시드니"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "타히티"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "프랑스령 폴리네시아"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "타이베이"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "타이완"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "탈린"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "에스토니아"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "타라와"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "키리바시"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "타슈켄트"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "우즈베키스탄"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "트빌리시"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "그루지아"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "테구시갈파"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "온두라스"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "테헤란"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "이란"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "호치민 시"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "세틀먼트"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "영국령 버진 제도"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "톈진"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "티후아나"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "도쿄"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "토론토"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "트레"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "트리폴리"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "리비아"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "튀니스"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "튀니지"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "투린"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "우파"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "바시키리야"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "울란바토르"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "파두츠"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "리히텐슈타인"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "발레타"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "말타"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "밴쿠버"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "베로나"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "빅토리아"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "세이셸"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "비엔나"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "오스트리아"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "빌니우스"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "리투아니아"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "블라디보스토크"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "볼고그라드"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "세인트피터즈버그"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "바르샤바"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "폴란드"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "워싱턴 DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "웰링턴"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "위니펙"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "야쿠트"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "야무수크로"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "야운데"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "예카테린부르크"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "예레반"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "아르메니아"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "유즈노사할린스크"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "자그레브"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "크로아티아"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "취리히"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "내보내는 중..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "가져오는 중..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "가져오기가 완료되었습니다"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "내보냈습니다"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Bijvoegen"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Notitie"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Gegevens"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "Geen resultaten gevonden"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Maandelijks"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Alle agenda-items"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Voor"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "voor"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Dagelijks"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Dag"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Eindtijd"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Maandelijks"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Maand"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Begintijd"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Tik om locatie in te geven"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Tik om opmerking in te geven"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Tik om titel in te voeren"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Maand"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Week"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Wekelijks"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Jaarlijks"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Tik om deelnemer in te geven"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "W"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Hele dag"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "week"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Standaard account"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Verzendopties"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Kaart"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Titel"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Exporteren"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Agenda synchroniseren"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Gebeurtenissen"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Zondag"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Maandag"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Eerste dag van de week"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "Geen locatie geselecteerd"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Gebeurtenis verwijderen"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Berichten verzenden aan deelnemers?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Deelnemers"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "Op tijd"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Agenda's"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Geen agenda's"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Lijst"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Alleen deze gebeurtenis"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Alle terugkerende agenda-items"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Geen titel"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Tijdzone vergrendelen"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Tijdzone"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "uur"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Herhalen tot"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "keer"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Deelnemer"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Gekoppelde agenda"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Telefoonagenda"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Dagoverzicht"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Weekweergave"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "jaar"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Herhalen"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Kan locatie niet vinden"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Locatie"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "dag"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "week"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Abidjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Abu Dhabi"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Verenigde Arabische Emiraten"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Accra"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Ghana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Addis Ababa"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Ethiopië"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Adelaide"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Australië"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Alaska"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "VS"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Ivoorkust"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Algiers"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Algerije"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Alma Ata"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Kazachstan"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Ambon"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Indonesië"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Amman"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Jordanië"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Amsterdam"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Nederland"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Anadyr"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Rusland"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Anchorage"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Ankara"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Turkije"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Antananarivo"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "MADAGASCAR"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Ashgabat"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Turkmenistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Asmera"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Eritrea"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Astana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Asuncion"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Paraguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Athene"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Griekenland"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Auckland"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Nieuw-Zeeland"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Austin"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Azoren"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Portugal"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Bagdad"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Irak"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Baku"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Azerbeidzjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Baltimore"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Bamako"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Mali"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Bangkok"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Thailand"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Bangui"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "Centraal Afrikaanse Republiek"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Barcelona"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "Spanje"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Bari"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Italië"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Basse-Terre"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Guadeloupe"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Peking"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "China"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Beirut"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Libanon"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Belgrado"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Servië"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Belize City"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Belize"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Berlijn"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Duitsland"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Bern"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Zwitserland"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Bishkek"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Kirgizië"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Guinee-Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Bogota"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Colombia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Bologna"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston "
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Brasilia"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Brazilië"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Bratislava"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Slowakije"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Bridgetown"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Barbados"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Brisbane"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Brussel"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "België"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Boekarest"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Roemenië"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Boedapest"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Hongarije"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Buenos Aires"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Argentinië"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Caïro"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Egypte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Calgary"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Canada"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Canarische eilanden"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Canberra"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Canton"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Kaapstad"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "Republiek Zuid-Afrika"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Caracas"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Venezuela"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Cardiff"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Wales"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Casablanca"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Marokko"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Catanzaro"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Opslaan in"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "Geen gebeurtenissen"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Aanpassen"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Opslaan?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Indeling wijzigen"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Cayenne"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Frans-Guyana"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Charlotte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Charlotte Amalie"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "Verenigde Staten Maagdeneilanden"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Chelyabinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "India"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Chicago"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Chişinău"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Moldavië"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Chita"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Cleveland"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Colombo"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Sri Lanka"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Columbus"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Conakry"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Guinea"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Kopenhagen"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Denemarken"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Cork"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Ierland"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Crotone"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Dakar"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Senegal"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Dallas"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Damascus"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Syrië"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Dar es Salaam"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Tanzania"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Darwin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Denpasar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Denver"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Detroit"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Dhaka"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Bangladesh"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Diego Garcia"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "Verenigd Koninkrijk"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Djibouti"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Doha"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Qatar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Douala"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Kameroen"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Dubai"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Dublin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Dushanbe"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Tadzjikistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Paaseiland"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Chili"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Edinburgh"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Schotland"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "El Jadida"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Florence"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Fort-de-France"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Martinique"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Freetown"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Sierra Leone"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Gaborone"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Botswana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Galápagos eilanden"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Ecuador"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Genève"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Genua"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Georgetown"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Guyana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Grytviken"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "South Georgia"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Guam"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Guatemala City"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Gustavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Sint-Bartholomeus"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Halifax"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Hamburger"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Hanoi"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Vietnam"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Harare"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Zimbabwe"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "Havana"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Cuba"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Hawaii"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Helsinki"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Finland"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Hobart"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Agenda-items per week tonen"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Lay-out in maandweergave"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Agenda-items per dag tonen"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Hong Kong"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Honolulu"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Houston"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Hovd"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Mongolië"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Indianapolis"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Irkoetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Islamabad"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Pakistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Istanboel"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Izhevsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Jakarta"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Djedda"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Saudi-Arabië"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Jeruzalem"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Israël"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Johannesburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Kabul"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Afghanistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Kaliningrad"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Kamtsjatka"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Kampala"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Oeganda"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Karachi"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Kathmandu"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Nepal"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Chabarovsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Kharkiv"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Oekraïne"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Khartoem"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Soedan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Kiev"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Kingston"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Jamaica"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Kinshasa"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "Democratische Republiek Congo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Kolkata"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Krasnojarsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Kuala Lumpur"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Maleisië"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Koeweit"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Los Angeles"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "La Paz"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Bolivia"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Lagos"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Nigeria"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Las Vegas"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Lima"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Peru"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Lissabon"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Ljubljana"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "Londen"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Longhua"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Louisville"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Luanda"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Angola"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Lubumbashi"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Lusaka"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Zambia"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Luxemburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Lviv"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Macau"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Magadan"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Malabo"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Equatoriaal Guinea"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Male"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Maldiven"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Managua"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Nicaragua"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Manama"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Bahrein"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Manilla"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Filipijnen"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Maputo"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Mozambique"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Marigot"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Saint Martin"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Mazatlan"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "Mexico"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Riyadh"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Melbourne"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Memphis"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Messina"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Mexico-stad"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Miami"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Mid-Atlantic"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Midway Atoll"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Milaan"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Milwaukee"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Minsk"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Wit-Rusland"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Mogadishu"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Somalië"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Monrovia"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Liberia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Montevideo"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Uruguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Montreal"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Moskou"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Mumbai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "München"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Muscat"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Oman"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Nairobi"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Kenya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Rome"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Naters"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "Ndjamena"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Napels"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "TSJAAD"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Mecca"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "New Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "New York"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Newfoundland"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Niamey"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "NIGER"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Nouakchott"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "MAURITANIË"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Nouméa"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "Nieuw-Caledonië"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Novokuznetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Novosibirsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Nuku'alofa"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Tonga"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Nuuk"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Groenland"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Omsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Osaka"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Japan"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Ottawa"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ouagadougou"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Burkina Faso"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Pago Pago"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Onafhankelijke Staat Samoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Palermo"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Panama City"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Panama"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Paramaribo"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Suriname"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Parijs"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "Frankrijk"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Perm"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Perth"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Petropavlovsk-Kamchatskiy"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Philadelphia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Cambodja"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Phoenix"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Podgorica"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Montenegro"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Ponta Delgada"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Port Louis"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "MAURITIUS"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Port-au-Prince"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Haïti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Portland"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Praag"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "Tsjechische Republiek"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Pyongyang"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Noord-Korea"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "QUITO"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Rabat"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Yangon"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Burma"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Recife"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Regina"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Reykjavík"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "IJsland"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Riga"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Letland"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Rio de Janeiro"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Saint-Denis"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Reunion Island"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Samara"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "San Antonio"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "San Diego"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "San Francisco"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "San Jose"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Costa Rica"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "San Juan"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Puerto Rico"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "San Marino"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "San Salvador"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "El Jadida"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Sana'a"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Jemen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Santiago"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Santo Domingo"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "Dominicaanse Republiek"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "Sao Paulo"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Seattle"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Seoel"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "Republiek Korea"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Sjanghai"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Shenzhen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Singapore"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "Republiek Singapore"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Skopje"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "MACEDONIË"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Sofia"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Bulgarije"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "St John's"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Antigua en Barbuda"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Stockholm"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Zweden"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Suva"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Fiji"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "Republiek Fiji-eilanden"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Sydney"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Tahiti"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Frans-Polynesië"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Taipei"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Taiwan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Tallinn"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Estland"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Tarawa"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Kiribati"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Tasjkent"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Oezbekistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Tbilisi"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Georgië"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Tegucigalpa"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Honduras"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Teheran"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Iran"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Ho Chi Minhstad"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "The Settlement"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "Maagdeneilanden (Brits)"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Tianjin"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Tijuana"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Tokio"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Toronto"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Tréhet"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Tripoli"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Libië"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Tunis"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Tunesië"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Turin"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ufa"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Bashkiriya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ulan Bator"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Vaduz"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Liechtenstein"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "Valletta"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Malta"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Vancouver"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Verona"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Victoria"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Seychellen"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Wenen"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Oostenrijk"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Vilnius"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Litouwen"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Vladivostok"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Volgograd"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "St. Petersburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Warschau"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Polen"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Washington DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Wellington"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Winnipeg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Jakoetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Yamusoukro"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Yaounde"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Jekaterinenburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Yerevan"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Armenië"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Yuzhno-Sakhalinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Zagreb"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Kroatië"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Zürich"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Exporteren..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Importeren..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Geïmporteerd"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Geëxporteerd"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Anexar"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Nota"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Detalhes"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "Nenhuns resultados encontrados"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Mensalmente"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Todas as agendas"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Antes"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "antes"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Diariamente"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Dia"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Hora de fim"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Mensalmente"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Mês"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Hora de início"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Toque para introduzir localização"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Toque para introduzir nota"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Toque para introduzir título"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Mês"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Semana"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Semanalmente"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Anualmente"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Tocar para introduzir participante"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "S"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Todo o dia"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "semana"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Conta padrão"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Opções de envio"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Mapa"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Título"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Exportar"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Sincronização da agenda"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Eventos"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Domingo"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Segunda-feira"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Primeiro dia da semana"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "Sem localização seleccionada"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Eliminar evento"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Enviar mensagens aos participantes?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Participantes"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "Na hora"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Agendas"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Nenhumas agendas"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Lista"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Apenas este evento"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Todos os eventos de repetição"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Sem título"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Bloquear fuso horário"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Fuso horário"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "hora"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Repetir até"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "vezes"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Participante"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Agenda ligada"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Agenda do telefone"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Vista diária"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Vista semanal"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Ano"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Repetir"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Impossível encontrar localização"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Localização"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "dia"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "semana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Abidjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Abu Dhabi"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Emiratos Árabes Unidos"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Accra"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Gana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Adis Abeba"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Etiópia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Adelaide"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Austrália"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Alasca"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "EUA"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Costa do Marfim"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Argel"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Argélia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Almaty"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Cazaquistão"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Ambon"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Indonésia"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Amã"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Jordânia"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Amesterdão"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Holanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Anadyr"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Rússia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Âncora"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Ancara"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Turquia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Antananarivo"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "MADAGÁSCAR"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Ashkhabad"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Turquemenistão"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Asmera"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Eritreia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Astana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Asunción"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Paraguai"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Atenas"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Greece"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Auckland"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Nova Zelândia"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Austin"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Açores"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Portugal"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Bagdad"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Iraque"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Baku"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Azerbaijão"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Baltimore"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Bamako"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Mali"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Banguecoque"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Tailândia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Bangui"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "República Central Africana"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Barcelona"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "Espanha"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Bari"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Italy"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Basse-Terre"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Guadalupe"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Pequim"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "China"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Beirute"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Líbano"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Belgrado"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Sérvia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Cidade de Belize"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Belize"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Berlim"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Alemanha"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Berna"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Suíça"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Bishkek"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Quirguizistão"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Guiné-Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Bogotá"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Colômbia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Bolonha"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Brasília"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Brasil"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Bratislava"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Eslováquia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Bridgetown"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Barbados"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Brisbane"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Bruxelas"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Bélgica"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Bucareste"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Roménia"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Budapeste"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Hungria"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Buenos Aires"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Argentina"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Cairo"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Egipto"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Calgary"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Canadá"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Ilhas Canárias"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Camberra"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Cantão"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Cidade do Cabo"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "República da África do Sul"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Caracas"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Venezuela"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Cardiff"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "País de Gales"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Casablanca"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Marrocos"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Catanzaro"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Guardar em"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "Nenhuns eventos"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Personalizar"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Guardar?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Reordenar"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Caiena"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Guiana Francesa"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Charlotte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Charlotte Amalie"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "Ilhas Virgens dos Estados Unidos"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Chelyabinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "Índia"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Chicago"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Chisinau"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Moldova"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Chita"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Cleveland"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Colombo"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Sri Lanka"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Columbus"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Conakry"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Guiné"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Copenhaga"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Dinamarca"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Cork"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Irlanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Crotone"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Dakar"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Senegal"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Dallas"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Damasco"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Síria"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Dar es Salaam"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Tanzânia"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Darwin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Deli"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Denpasar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Denver"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Detroit"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Dacca"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Bangladesh"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Diego Garcia"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "Reino Unido"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Jibuti"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Jibuti"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Doha"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Qatar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Douala"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Camarões"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Dubai"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Dublin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Dushanbe"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Tajiquistão"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Ilha da Páscoa"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Chile"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Edimburgo"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Escócia"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "El Paso"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Florença"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Fort-de-France"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Martinica"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Freetown"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Serra Leoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Gaborone"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Botswana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Ilhas Galápagos"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Equador"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Genebra"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Génova"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Georgetown"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Guiana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Grytviken"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "Geórgia do Sul"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Guam"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Cidade da Guatemala"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Gustavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Saint Barthélemy"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Halifax"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Hamburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Hanoi"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Vietname"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Harare"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Zimbabué"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "Havana"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Cuba"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Havai"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Helsínquia"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Finlândia"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Hobart"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Mostrar eventos por semana"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Disposição em vista mensal"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Mostrar eventos por dia"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Hong Kong"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Honolulu"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Houston"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Hovd"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Mongólia"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Indianapolis"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Irkutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Islamabad"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Paquistão"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Istambul"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Izhevsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Jacarta"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Jeddah"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Arábia Saudita"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Jerusalém"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Israel"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Joanesburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Kabul"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Afeganistão"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Kaliningrado"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Kamtchatka"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Kampala"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Uganda"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Carachi"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Kathmandu"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Nepal"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Khabarovsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Kharkiv"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Ucrânia"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Cartum"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Sudão"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Kiev"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Kingston"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Jamaica"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Kinshasa"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "República Democrática do Congo"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Calcutá"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Krasnoyarsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Kuala Lumpur"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Malásia"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Kuwait"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Los Angeles"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "La Paz"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Bolívia"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Lagos"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Nigéria"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Las Vegas"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Lima"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Peru"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Lisboa"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Liubliana"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "Londres"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Longhua"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Louisville"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Luanda"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Angola"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Lubumbashi"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Lusaka"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Zâmbia"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Luxemburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Lviv"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Macau"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Magadã"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Malabo"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Guiné Equatorial"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Malé"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Maldivas"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Manágua"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Nicarágua"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Manama"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Bahrain"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Manila"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Filipinas"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Maputo"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Moçambique"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Marigot"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Saint-Martin"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Mazatlan"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "México"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Riade"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Melbourne"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Memphis"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Messina"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Cidade do México"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Miami"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Centro-Atlântico"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Atol de Midway"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Milão"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Milwaukee"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Minsk"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Bielorrússia"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Mogadishu"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Somália"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Monróvia"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Libéria"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Montevideu"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Uruguai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Montreal"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Moscovo"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Mumbai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "Munique"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Mascate"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Omã"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Nairobi"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Quénia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Roma"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Naters"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "N'Djamena"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Nápoles"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "TCHADE"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Meca"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "Nova Deli"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "Nova Iorque"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Terra Nova"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Niamey"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "NÍGER"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Nouakchott"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "MAURITÂNIA"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Nouméa"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "Nova Caledónia"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Novokuznetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Novosibirsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Nuku'alofa"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Tonga"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Nuuk"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Gronelândia"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Omsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Osaka"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Japão"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Ottawa"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ouagadougou"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Burkina Faso"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Pago Pago"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Estado Independente de Samoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Palermo"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Cidade do Panamá"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Panamá"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Paramaribo"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Suriname"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Paris"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "France"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Perm"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Perth"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Petropavlovsk-Kamchatskiy"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Filadélfia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Camboja"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Phoenix"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Podgorica"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Montenegro"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Ponta Delgada"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Port Louis"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "MAURÍCIAS"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Port-au-Prince"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Haiti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Portland"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Praga"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "República Checa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Pyongyang"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Coreia do Norte"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "Quito"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Rabat"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Yangon"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Burma"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Recife"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Regina"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Reiquiavique"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "Islândia"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Riga"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Letónia"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Rio De Janeiro"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Saint-Denis"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Ilha Reunião"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Samara"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "San Antonio"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "San Diego"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "São Francisco"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "San José"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Costa Rica"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "San Juan"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Porto Rico"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "São Marinho"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "São Salvador"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "El Salvador"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Sana"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Iémen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Santiago"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Santo Domingo"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "República Dominicana"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "São Paulo"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Seattle"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Seul"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "República da Coreia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Xangai"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Shenzhen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Singapura"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "República de Singapura"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Skopje"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "MACEDÓNIA"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Sofia"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Bulgária"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "St. John's"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Antígua e Barbuda"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Estocolmo"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Suécia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Suva"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Fiji"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "República das Ilhas Fiji"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Sydney"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Taiti"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Polinésia Francesa"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Taipei"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Taiwan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Talin"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Estónia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Tarawa"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Quiribati"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Tashkent"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Uzbequistão"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Tbilissi"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Geórgia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Tegucigalpa"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Honduras"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Teerão"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Irão"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Ho Chi Minh City"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "The Settlement"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "Ilhas Virgens Britânicas"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Tientsin"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Tijuana"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Tóquio"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Toronto"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Tréhet"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Tripoli"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Líbia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Tunis"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Tunísia"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Turim"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ufa"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Bashkiriya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ulan Bator"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Vaduz"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Liechtenstein"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "La Valeta"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Malta"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Vancouver"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Verona"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Victória"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Seicheles"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Viena"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Áustria"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Vilnius"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Lituânia"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Vladivostoque"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Volgogrado"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "São Petersburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Varsóvia"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Polónia"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Washington DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Wellington"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Winnipeg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Yakutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Yamusoukro"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Yaounde"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Yekaterinburgo"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Ierevan"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Arménia"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Yuzhno-Sakhalinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Zagreb"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Croácia"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Zurique"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "A exportar..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "A importar..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Importados"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Exportado"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Вложить"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Заметка"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Свойства"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "Ничего не найдено"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Ежемесячно"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Весь календарь"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "За"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "за"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Ежедневно"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "День"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Время окончания"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Ежемесячно"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Месяц"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Время начала"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Нажмите для ввода места"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Нажмите для ввода заметки"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Нажмите для ввода названия"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Месяц"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Неделя"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Еженедельно"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Ежегодно"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Нажмите для ввода участника"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "Н"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Весь день"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "неделя"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Уч. зап. по умолч."
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Параметры отправки"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Карта"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Название"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Экспорт"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Синхронизация календаря"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "События"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Воскресенье"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Понедельник"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Первый день недели"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "Местоположение не выбрано"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Удалить событие"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Отправить сообщения участникам?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Участники"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "Время включения"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Календари"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Нет календарей"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Список файлов"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Только это событие"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Все повторяющиеся события"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Нет названия"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Фикс. часовой пояс"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Часовой пояс"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "час"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Повторять до"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "раз(а)"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Участник"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Связанный календарь"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Календарь телефона"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "День"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Неделя"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Год"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Повтор"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Невозможно найти местоположение"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Расположение"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "день"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "неделя"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Абиджан"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Абу-Даби"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Объединенные Арабские Эмираты"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Аккра"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Гана"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Аддис-Абеба"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Эфиопия"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Аделаида"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Австралия"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Аляска"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "США"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Кот-д'Ивуар"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Алжир"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Алжир"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Алматы"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Казахстан"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Амбон"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Индонезия"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Амман"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Иордан"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Амстердам"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Нидерланды"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Анадырь"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Россия"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Анкоридж"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Анкара"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Турция"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Антананариву"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "Мадагаскар"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Ашхабад"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Туркменистан"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Асмара"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Эритрея"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Астана"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Асунсьон"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Парагвай"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Афины"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Греция"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Окленд"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Новая Зеландия"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Остин"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Азорские острова"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Португалия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Багдад"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Ирак"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Баку"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Азербайджан"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Балтимор"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Бамако"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Мали"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Бангкок"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Таиланд"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Банги"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "Центрально-Африканская Республика"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Барселона"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "Испания"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Бари"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "Италия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Бас-Тер"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Гваделупа"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Пекин"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "Китай"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Бейрут"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Ливан"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Белград"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Сербия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Белиз (город)"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Белиз"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Берлин"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Германия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Берн"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "Швейцария"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Бишкек"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Киргизия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Бисау"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Гвинея-Бисау"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Богота"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Колумбия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Болонья"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Бостон"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Бразилиа"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Бразилия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Братислава"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Словакия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Бриджтаун"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Барбадос"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Брисбен"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Брюссель"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Бельгия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Бухарест"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Румыния"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Будапешт"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Венгрия"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Буэнос-Айрес"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Аргентина"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Каир"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Египет"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Калгари"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Канада"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Канарские острова"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Канберра"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Кантон"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Кейптаун"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "Южно-Африканская Республика"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Каракас"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Венесуэла"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Кардифф"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Уэльс"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Касабланка"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Марокко"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Катандзаро"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Сохранить в"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "Нет событий"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Настроить"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Сохранить?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Изменить порядок"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Кайенна"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Французская Гвиана"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Шарлотт"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Шарлотта-Амалия"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "Виргинские острова (США)"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Челябинск"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Ченнай"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "Индия"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Чикаго"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Кишинёв"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Молдова"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Чита"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Кливленд"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Коломбо"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Шри-Ланка"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Колумбус"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Конакри"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Гвинея"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Копенгаген"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Дания"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Корк"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "Ирландия"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Кротоне"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Дакар"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Сенегал"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Даллас"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Дамаск"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Сирия"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Дар-эс-Салам"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Танзания"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Дарвин"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Дели"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Дэнпасар"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Денвер"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Детройт"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Дакка"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Бангладеш"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Диего-Гарсия"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "Великобритания"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Джибути"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Джибути"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Доха"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Катар"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Дуала"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Камерун"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Дубай"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Дублин"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Душанбе"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Таджикистан"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Остров Пасхи"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Чили"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Эдинбург"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "Шотландия"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "Эль-Пасо"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Флоренция"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Фор-де-Франс"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Мартиника"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Фритаун"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Сьерра-Леоне"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Габороне"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Ботсвана"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Галапагосские острова"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Эквадор"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Женева"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Генуя"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Джорджтаун"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Гайана"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Грютвикен"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "Южная Георгия"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Гуам"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Гватемала"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Гватемала"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Густавия"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Сен-Бартельми"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Галифакс"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Гамбург"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Ханой"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Вьетнам"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Хараре"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Зимбабве"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "Гавана"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Куба"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Гавайи"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Хельсинки"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Финляндия"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Хобарт"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Показать события по неделям"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Макет для просмотра по месяцам"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Показать события по дням"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Гонконг"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Гонолулу"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Хьюстон"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Ховд"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Монголия"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "Индианаполис"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Иркутск"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Исламабад"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Пакистан"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "Стамбул"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Ижевск"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Джакарта"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Джедда"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Саудовская Аравия"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Иерусалим"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "Израиль"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Йоханнесбург"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Кабул"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Афганистан"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Калининград"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Камчатка"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Кампала"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Уганда"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Карачи"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Катманду"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Непал"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Хабаровск"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Харьков"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Украина"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Хартум"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Судан"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Киев"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Кингстон"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Ямайка"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Киншаса"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "Демократическая Республика Конго"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Калькутта"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Красноярск"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Куала-Лумпур"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Малайзия"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Кувейт"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Лос-Анджелес"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "Ла-Пас"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Боливия"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Лагос"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Нигерия"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Лас-Вегас"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Лима"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Перу"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Лиссабон"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Любляна"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "Лондон"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Лунхуа"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Луисвилл"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Луанда"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Ангола"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Лубумбаши"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Лусака"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Замбия"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Люксембург"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Львов"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Макао"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Мадрид"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Магадан"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Малабо"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Экваториальная Гвинея"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Мале"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Мальдивы"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Манагуа"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Никарагуа"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Манама"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Бахрейн"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Манила"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Филиппины"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Мапуто"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Мозамбик"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Мариго"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Сен-Мартен"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Мазатлан"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "Мексика"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Эр-Рияд"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Мельбурн"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Мемфис"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Мессина"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Мехико"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Майами"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Средняя Атлантика"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Острова Мидуэй"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Милан"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Милуоки"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Минск"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Беларусь"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Могадишо"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Сомали"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Монровия"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Либерия"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Монтевидео"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Уругвай"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Монреаль"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Москва"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Мумбай"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "Мюнхен"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "Маскат"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Оман"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Найроби"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Кения"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Рим"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Натерс"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "Нджамена"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Неаполь"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "Чад"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Мекка"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "Нью-Дели"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "Нью-Йорк"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Ньюфаундленд"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Ниамей"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "Нигер"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Нуакшот"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "Мавритания"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Нумеа"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "Новая Каледония"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Новокузнецк"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Новосибирск"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Нукуалофа"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Тонга"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Нук"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Гренландия"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Омск"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Осака"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Япония"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Оттава"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Уагадугу"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Буркина-Фасо"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Паго-Паго"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Независимое Государство Самоа"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Палермо"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Панама-Сити"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Панама"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Парамарибо"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Суринам"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Париж"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "Франция"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Пермь"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Перт"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Петропавловск-Камчатский"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Филадельфия"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Пномпень"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Камбоджа"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Финикс"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Подгорица"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Черногория"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Понта-Делгада"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Порт-Луи"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "Маврикий"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Порт-о-Пренс"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Гаити"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Портленд"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Прага"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "Чешская Республика"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Пхеньян"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Северная Корея"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "Кито"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Рабат"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Янгон"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Бирма"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Ресифи"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Регина"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Рейкьявик"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "Исландия"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Рига"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Латвия"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Рио-де-Жанейро"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Сен-Дени"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Реюньон"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Самара"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "Сан-Антонио"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "Сан-Диего"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "Сан-Франциско"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "Сан-Хосе"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Коста-Рика"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "Сан-Хуан"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Пуэрто-Рико"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "Сан-Марино"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "Сан-Сальвадор"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "Сальвадор"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Сана"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Йемен"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Сантьяго"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Санто-Доминго"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "Доминиканская Республика"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "Сан-Паулу"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Сиэтл"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Сеул"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "Республика Корея"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Шанхай"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Шэньчжэнь"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Сингапур"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "Республика Сингапур"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Скопье"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "Македония"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "София"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Болгария"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "Сент-Джонс"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Антигуа и Барбуда"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Стокгольм"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "Швеция"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Сува"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Фиджи"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "Республика Островов Фиджи"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Сидней"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Таити"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Французская Полинезия"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Тайбэй"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Тайвань"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Таллин"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Эстония"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Тарава"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Кирибати"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Ташкент"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Узбекистан"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Тбилиси"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Грузия"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Тегусигальпа"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Гондурас"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Тегеран"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "Иран"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Хошимин"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "Сетлмент"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "Британские Виргинские острова"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Тяньцзинь"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Тиуана"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Токио"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Торонто"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Трее"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Триполи"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Ливия"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Тунис"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Тунис"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Турин"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Уфа"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Башкирия"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Улан-Батор"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Вадуц"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Лихтенштейн"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "Валлетта"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Мальта"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Ванкувер"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Верона"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Виктория"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Сейшельские острова"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Вена"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Австрия"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Вильнюс"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Литва"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Владивосток"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Волгоград"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "Санкт-Петербург"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Варшава"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Польша"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Вашингтон"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Веллингтон"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Виннипег"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Якутск"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Ямусукро"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Яунде"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Екатеринбург"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Ереван"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Армения"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Южно-Сахалинск"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Загреб"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Хорватия"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Цюрих"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Экспорт..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Импорт..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Импортировано"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Экспортировано"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "Ekle"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "Not"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "Ayrıntılar"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "Sonuç bulunamadı"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "Aylık"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "Tüm takvimler"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "Önce"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "Önce"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "Günlük"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "Gün"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "Bitiş saati"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "Aylık"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "Ay"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "Başlangıç saati"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "Konum girmek için dokun"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "Not girmek için dokun"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "Başlık girmek için dokun"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "Ay"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "Hafta"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "Haftalık"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "Yıllık"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "Katılımcı girmek için dokun"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "H"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "Gün boyu"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "Hafta"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "Varsayılan hesap"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "Gönderme seçenekleri"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "Harita"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "Başlık"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "Dışarı aktar"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "Takvim senkr"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "Olaylar"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "Pazar"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "Pazartesi"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "Haftanın ilk günü"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "Konum seçilmedi"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "Olayı sil"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "Mesajlar katılımcılara gönderilsin mi?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "Katılımcılar"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "Zamanında"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "Takvimler"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "Takvim yok"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "Listele"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "Sadece bu olay"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "Tüm tekrarlanan olaylar"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "Başlık yok"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "Saat dilimini kilitle"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "Saat dilimi"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "Saat"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "Son tekrarlama"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "defa"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "Katılımcı"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "Bağlı takvim"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "Telefon takvimi"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "Günlük görünüm"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "Haftalık görünüm"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "Yıl"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "Tekrar"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "Konum bulunamadı"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "Konum"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "Gün"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "Hafta"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "Abidjan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "Abu Dabi"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "Birleşik Arap Emirlikleri"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "Accra"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "Gana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "Addis Ababa"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "Etiyopya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "Adelaide"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "Avustralya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "Alaska"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "ABD"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "Fildişi Sahili"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "Cezayir"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "Cezayir"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "Alma Ata"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "Kazakistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "Ambon"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "Endonezya"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "Amman"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "Ürdün"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "Amsterdam"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "Hollanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "Anadyr"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "Rusya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "Anchorage"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "Ankara"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "Türkiye"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "Antananarivo"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "Madagaskar"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "Aşkabat"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "Türkmenistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "Asmara"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "Eritre"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "Astana"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "Asuncion"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "Paraguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "Atina"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "Yunanistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "Auckland"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "Yeni Zelanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "Austin"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "Azores"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "Portekiz"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "Bağdat"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "Irak"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "Bakü"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "Azerbaycan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "Baltimore"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "Bamako"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "Mali"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "Bangkok"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "Tayland"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "Bangui"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "Merkezi Afrika Cumhuriyeti"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "Barcelona"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "İspanya"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "Bari"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "İtalya"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "Basse-Terre"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "Guadeloupe"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "Pekin"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "Çin"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "Beyrut"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "Lübnan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "Belgrat"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "Sırbistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "Belize City"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "Belize"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "Berlin"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "Almanya"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "Bern"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "İsviçre"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "Bişkek"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "Kırgızistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "Bissau"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "Gine Bisav"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "Bogota"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "Kolombiya"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "Bologna"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "Boston "
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "Brezilya"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "Brezilya"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "Bratislava"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "Slovakya"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "Bridgetown"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "Barbados"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "Brisbane"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "Brüksel"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "Belçika"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "Bükreş"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "Romanya"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "Budapeşte"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "Macaristan"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "Buenos Aires"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "Arjantin"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "Kahire"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "Mısır"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "Calgary"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "Kanada"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "Kanarya Adaları"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "Canberra"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "Canton"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "Cape Town"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "Güney Afrika Cumhuriyeti"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "Venezuela"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "Venezuella"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "Cardiff"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "Galler"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "Casablanca"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "Morocco"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "Catanzaro"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "Kayıt yeri"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "Olay yok"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "Kişiselleştir"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "Kaydet?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "Yeniden düzenle"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "Cayenne"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "Fransız Guyanası"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "Charlotte"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "Charlotte Amalie"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "ABD Virgin Adaları"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "Chelyabinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "Chennai"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "Hindistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "Chicago"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "Chisinau"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "Moldova"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "Çita"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "Cleveland"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "Kolombo"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "Sri Lanka"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "Columbus"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "Conakry"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "Gine"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "Kopenhag"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "Danimarka"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "Cork"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "İrlanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "Crotone"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "Dakar"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "Senegal"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "Dallas"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "Damascus"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "Suriye"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "Dar üs Selam"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "Tanzanya"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "Darwin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "Denpasar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "Denver"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "Detroit"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "Dakka"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "Bangladeş"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "Diego Garcia"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "İngiltere"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "Cibuti"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "Cibuti"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "Doha"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "Katar"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "Douala"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "Kamerun"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "Dubai"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "Dublin"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "Duşanbe"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "Tacikistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "Easter Adası"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "Şili"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "Edinburgh"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "İskoçya"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "El Paso"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "Floransa"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "Fort-de-France"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "Martinique"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "Freetown"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "Sierra Leone"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "Gaborone"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "Botswana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "Galapagos Adaları"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "Ekvador"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "Cenevre"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "Genoa"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "Georgetown"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "Guyana"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "Grytviken"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "Güney Georgia"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "Guam"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "Guatemala"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "Gustavia"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "Saint Barthelemy"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "Halifax"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "Hamburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "Hanoi"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "Vietnam"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "Harare"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "Zimbabwe"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "Havana"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "Küba"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "Hawaii"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "Helsinki"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "Finlandiya"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "Hobart"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "Etkinlikleri haftalara göre göster"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "Ay görünümü düzeni"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "Etkinlikleri günlere göre göster"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "Hong Kong"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "Honolulu"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "Houston"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "Hovd"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "Moğolistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "İndianapolis"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "Irkutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "Islamabad"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "Pakistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "İstanbul"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "Izhevsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "Jakarta"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "Cidde"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "Suudi Arabistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "Kudüs"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "İsrail"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "Johannesburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "Kabil"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "Afganistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "Kaliningrad"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "Kamchatka"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "Kampala"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "Uganda"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "Karaçi"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "Kathmandu"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "Nepal"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "Khabarovsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "Kharkiv"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "Ukrayna"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "Khartoum"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "Sudan"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "Kiev"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "Kingston"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "Jamaika"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "Kinshasa"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "Kongo Demokratik Cumhuriyeti"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "Kalküta"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "Krasnoyarsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "Kuala Lumpur"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "Malezya"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "Kuveyt"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "Los Angeles"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "La Paz"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "Bolivya"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "Lagos"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "Nijerya"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "Las Vegas"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "Lima"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "Peru"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "Lizbon"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "Ljubljana"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "Londra"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "Longhua"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "Louisville"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "Luanda"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "Angola"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "Lubumbashi"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "Lusaka"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "Zambiya"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "Lüksemburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "Lviv"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "Macau"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "Madrid"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "Magadan"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "Malabo"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "Ekvator Ginesi"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "Male"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "Maldivler"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "Managua"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "Nikaragua"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "Manama"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "Bahreyn"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "Manila"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "Filipinler"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "Maputo"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "Mozambik"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "Marigot"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "Saint Martin"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "Mazatlan"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "Meksika"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "Riyad"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "Melbourne"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "Memphis"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "Messina"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "Mexico City"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "Miami"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "Orta-Atlantic"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "Midway Atolü"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "Milano"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "Milwaukee"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "Minsk"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "Belarus"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "Mogadishu"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "Somali"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "Monrovia"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "Liberya"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "Montevideo"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "Uruguay"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "Montreal"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "Moskova"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "Mumbai"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "Münih"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "muscat"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "Oman"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "Nairobi"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "Kenya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "Roma"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "Naters"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "N'Djamena"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "Napoli"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "Chad"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "Mekke"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "Yeni Delhi"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "New York"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "Newfoundland"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "Niamey"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "Nijerya"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "Nouakchott"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "Moritanya"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "Noumea"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "New Kaledonya"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "Novokuznetsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "Novosibirsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "Nuku’alofa"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "Tonga"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "Nuuk"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "Grönland"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "Omsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "Osaka"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "Japonya"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "Ottawa"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "Ouagadougou"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "Burkina Faso"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "Pago Pago"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "Bağımsız Samoa Devleti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "Palermo"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "Panama"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "Panama"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "Paramaribo"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "Surinam"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "Paris"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "Fransa"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "Perm"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "Perth"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "Petropavlovsk-Kamchatskiy"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "Philadelphia"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "Phnom Penh"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "Kamboçya"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "Phoenix"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "Podgorica"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "Karadağ"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "Ponta Delgada"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "Port Louis"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "Marityus"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "Port-au-Prince"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "Haiti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "Portland"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "Prag"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "Çek Cumhuriyeti"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "Pyongyang"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "Kuzey Kore"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "Quito"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "Rabat"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "Yangon"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "Burma"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "Recife"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "Regina"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "Reykjavik"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "İzlanda"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "Riga"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "Letonya"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "Rio de Janeiro"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "Saint-Denis"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "Reunion Adası"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "Samara"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "San Antonio"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "San Diego"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "San Francisco"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "San Jose"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "Kosta Rika"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "San Juan"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "Porto Riko"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "San Marino"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "San Salvador"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "El Salvador"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "Sana’a"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "Yemen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "Santiago"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "Santo Domingo"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "Dominik Cumhuriyeti"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "Sao Paulo"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "Seattle"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "Seul"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "Kore Cumhuriyeti"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "Şangay"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "Shenzhen"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "Singapur"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "Singapur Cumhuriyeti"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "Üsküp"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "Makedonya"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "Sofya"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "Bulgaristan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "St. John's"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "Antigua ve Barbuda"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "Stockholm"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "İsveç"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "Suva"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "Fiji"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "Fiji Adaları Cumhuriyeti"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "Sidney"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "Tahiti"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "Fransız Polinezyası"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "Taipei"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "Tayvan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "Talin"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "Estonya"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "Tarawa"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "Kiribati"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "Taşkent"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "Özbekistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "Tiflis"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "Gürcistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "Tegucigalpa"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "Honduras"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "Tahran"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "İran"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "Ho Şi Min Kenti"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "The Settlement"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "İngiliz Virgin Adaları"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "Tianjin"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "Tijuana"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "Tokyo"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "Toronto"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "Tréhet"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "Tripoli"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "Libya"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "Tunus"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "Tunus"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "Turin"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "Ufa"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "Bashkiriya"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "Ulan Bator"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "Vaduz"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "Liechtenstein"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "Valletta"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "Malta"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "Vancouver"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "Verona"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "Victoria"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "Seyşel Adaları"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "Viyana"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "Avusturya"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "Vilnius"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "Litvanya"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "Vladivostok"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "Volgograd"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "St. Petersburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "Varşova"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "Polonya"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "Washington DC"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "Wellington"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "Winnipeg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "Yakutsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "Yamoussoukro"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "Yaounde"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "Yekaterinburg"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "Erivan"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "Ermenistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "Yuzhno-Sakhalinsk"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "Zagreb"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "Hırvatistan"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "Zürih"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "Dışarı veriliyor..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "Dışarıdan alınıyor..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "Alındı"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "Dışarı verildi"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "附加"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "注释"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "详情"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "未找到结果"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "每月"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "全部日历"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "提前"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "提前"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "每日"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "日"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "结束时间"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "每月"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "月"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "开始时间"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "点击输入地点"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "点击输入说明"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "点击添加标题"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "月"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "周"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "每周"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "每年"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "点击输入参与者"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "周"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "全天"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "周"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "预置帐户"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "发送选项"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "地图"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "题目"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "输出"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "日历同步"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "事件"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "星期日"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "星期一"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "每周的第一天"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "未选择位置"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "删除事件"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "发送信息给参与者?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "参与者"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "准时"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "日历"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "无日历"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "列表"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "仅此事件"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "全部重复性事件"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "无标题"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "锁定时区"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "时区"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "小时"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "重复直到"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "次"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "参与人"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "链接的日历"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "手机日历"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "按日查看"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "按周查看"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "年"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "重复"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "无法找到位置"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "位置"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "日"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "周"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "阿比让"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "阿布扎比"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "阿拉伯联合酋长国"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "阿克拉"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "加纳"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "亚的斯亚贝巴"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "埃塞俄比亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "阿德莱德"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "澳大利亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "阿拉斯加"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "美国"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "科特迪瓦"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "阿尔及尔"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "阿尔及利亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "阿拉木图"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "哈萨克斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "安汶"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "印度尼西亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "安曼"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "约旦"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "阿姆斯特丹"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "荷兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "阿纳德尔河"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "俄罗斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "安克雷奇"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "安卡拉"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "土耳其"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "安塔那利佛"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "马达加斯加"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "阿什哈巴德"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "土库曼斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "阿斯马拉"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "厄立特里亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "阿斯坦纳"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "亚松森"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "巴拉圭"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "雅典"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "希腊"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "奥克兰"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "新西兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "奥斯汀"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "亚述尔群岛"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "葡萄牙"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "巴格达"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "伊拉克"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "巴库"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "阿塞拜疆"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "巴尔的摩"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "巴马科"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "马里"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "曼谷"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "泰国"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "班吉"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "中非共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "巴塞罗那"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "西班牙"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "巴里"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "意大利"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "巴斯特尔"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "瓜德罗普岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "北京"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "中国"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "贝鲁特"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "黎巴嫩"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "贝尔格莱德"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "塞尔维亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "伯利兹城"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "伯利兹"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "柏林"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "德国"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "伯尔尼"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "瑞士"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "比什凯克"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "吉尔吉斯斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "比绍"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "几内亚比绍"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "波哥大"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "哥伦比亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "博洛尼亚"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "波士顿"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "巴西利亚"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "巴西"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "布拉迪斯拉发"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "斯洛伐克"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "布里奇顿"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "巴巴多斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "布里斯班"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "布鲁塞尔"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "比利时"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "布加勒斯特"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "罗马尼亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "布达佩斯"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "匈牙利"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "布宜诺斯艾利斯"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "阿根廷"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "开罗"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "埃及"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "卡尔加里"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "加拿大"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "加那利群岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "堪培拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "广州"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "开普敦"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "南非共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "加拉加斯"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "委内瑞拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "加的夫"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "威尔士"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "卡萨布兰卡"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "摩洛哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "卡坦扎罗"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "保存至"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "没有事件"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "自定义"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "存储?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "重新排序"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "卡宴"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "法属圭亚那"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "夏洛特市"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "夏洛特阿马利亚"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "美属维尔京群岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "车里雅宾斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "陈奈"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "印度"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "芝加哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "基希讷乌"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "摩尔多瓦"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "赤塔"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "克里夫兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "科伦坡"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "斯里兰卡"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "哥伦布"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "科纳克里"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "几内亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "哥本哈根"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "丹麦"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "科克"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "爱尔兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "克努托内意大利"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "达喀尔"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "塞内加尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "达拉斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "大马士革"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "叙利亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "达累斯萨拉姆"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "坦桑尼亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "达尔文"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "登巴萨"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "丹佛"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "底特律"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "达卡"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "孟加拉国"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "迪戈加西亚岛"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "英国"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "吉布提"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "吉布提"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "多哈"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "卡塔尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "杜阿拉"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "喀麦隆"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "迪拜"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "都柏林"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "杜尚别"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "塔吉克斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "复活节岛"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "智利"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "爱丁堡"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "苏格兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "艾尔帕索"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "佛罗伦萨"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "法兰西堡"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "马提尼克"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "弗里敦"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "塞拉利昂"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "哈博罗内"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "博茨瓦那"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "加拉帕戈斯群岛"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "厄瓜多尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "日内瓦"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "热那亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "乔治敦"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "圭亚那"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "格雷特维根"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "南佐治亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "关岛"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "危地马拉市"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "危地马拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "古斯塔维亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "圣巴泰勒米岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "哈利法克斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "汉堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "河内"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "越南"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "哈拉雷"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "津巴布韦"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "哈瓦那"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "古巴"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "夏威夷"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "赫尔辛基芬"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "芬兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "霍巴特"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "按周显示事件"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "月视图布局"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "按日显示事件"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "香港"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "檀香山"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "休斯顿"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "科布"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "蒙古"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "印第安纳波利斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "伊尔库次克"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "伊斯兰堡"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "巴基斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "伊斯坦布尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "伊热夫斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "雅加达"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "吉达"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "沙特阿拉伯"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "耶路撒冷"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "以色列"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "约翰内斯堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "喀布尔"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "阿富汗"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "加里宁格勒"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "堪察加半岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "坎帕拉"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "乌干达"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "卡拉奇"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "加德满都"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "尼泊尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "哈巴罗夫斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "哈格岛"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "乌克兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "喀土穆"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "苏丹"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "基辅"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "金斯敦"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "牙买加"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "金沙萨"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "刚果民主共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "加尔各答"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "克拉斯诺亚尔斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "吉隆坡"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "马来西亚"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "科威特"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "洛杉矶"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "拉巴斯"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "玻利维亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "拉多斯"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "尼日利亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "拉斯维加斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "利马"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "秘鲁"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "里斯本"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "卢布尔雅那"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "伦敦"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "汕头市龙华"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "路易斯维尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "罗安达"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "安哥拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "卢本巴希"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "卢萨卡"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "赞比亚"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "卢森堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "利沃夫"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "澳门特别行政区"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "马德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "马加丹"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "马拉博"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "赤道几内亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "马累"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "马尔代夫"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "马那瓜"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "尼加拉瓜"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "麦纳麦"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "巴林"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "马尼拉"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "菲律宾"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "马普托"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "莫桑比克"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "马里戈特"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "圣马丁"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "马萨特兰"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "墨西哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "利雅得"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "墨尔本"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "孟菲斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "墨西拿"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "墨西哥城"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "迈阿密"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "中大西洋"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "中途岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "米兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "密尔沃基"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "明斯克"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "白俄罗斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "摩加迪沙"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "索马里"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "蒙罗维亚"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "利比里亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "蒙得维的亚"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "乌拉圭"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "蒙特利尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "莫斯科"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "孟买"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "慕尼黑"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "马斯喀特"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "阿曼"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "奈洛比"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "肯尼亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "罗马"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "那特斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "恩贾梅纳"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "那不勒斯"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "乍得"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "麦加"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "新德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "纽约"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "纽芬兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "尼亚美"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "尼日尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "努瓦克肖特"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "毛里塔尼亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "努美阿"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "新喀里多尼亚岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "新库兹涅茨克"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "新西伯利亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "努库阿洛法"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "汤加"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "努克"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "格陵兰岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "鄂木斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "大阪"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "日本"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "渥太华"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "瓦加杜古"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "布基纳法索"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "帕果-帕果"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "萨摩亚独立国"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "巴勒莫"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "巴拿马城"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "巴拿马"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "帕拉马里博"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "苏里南"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "巴黎"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "法国"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "彼尔姆"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "珀斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "彼得罗巴甫洛夫斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "费城"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "金边"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "柬埔寨"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "菲尼克斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "波德戈里察"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "黑山共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "蓬塔德尔加达"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "路易港"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "毛里求斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "太子港"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "海地"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "波特兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "布拉格"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "捷克共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "平壤"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "朝鲜"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "基多"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "拉巴特"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "仰光"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "缅甸"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "累西腓"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "里贾纳"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "雷克雅维克"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "冰岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "里加"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "拉脱维亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "里约热内卢"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "圣但尼"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "留尼汪岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "萨马拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "圣安东尼奥"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "圣迭戈"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "旧金山"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "圣何塞"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "哥斯达黎加"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "圣胡安"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "波多黎各"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "圣马力诺"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "圣萨尔瓦多"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "萨尔瓦多"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "萨拉"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "也门"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "圣地亚哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "圣多明各"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "多米尼加共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "圣保罗"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "西雅图"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "首尔"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "韩国"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "上海"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "深圳"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "新加坡"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "新加坡共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "斯科普里"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "马其顿"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "索非亚"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "保加利亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "圣约翰斯"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "安提瓜和巴布达"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "斯德哥尔摩"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "瑞典"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "苏瓦"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "斐济"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "斐济群岛共和国"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "悉尼"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "大溪地"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "法属波利尼西亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "台北"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "台湾"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "塔林"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "爱沙尼亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "塔拉瓦岛"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "基里巴斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "塔什干"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "乌兹别克斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "第比利斯"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "格鲁吉亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "特古西加尔巴"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "洪都拉斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "德黑兰"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "伊朗"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "胡志明市"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "塞特尔门特"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "英属维尔京群岛"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "天津"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "提华纳"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "东京"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "多伦多"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "特雷埃"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "的黎波里"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "利比亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "突尼斯"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "突尼斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "都灵"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "乌法"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "巴什噶尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "乌兰巴托"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "瓦杜兹"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "列支敦士登"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "瓦莱塔"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "马耳他"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "温哥华"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "维罗纳"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "维多利亚"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "塞舌尔"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "维也纳"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "奥地利"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "维尔纽斯"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "立陶宛"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "符拉迪斯托克"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "伏尔加格勒"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "圣彼得斯堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "华沙"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "波兰"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "华盛顿哥伦比亚特区"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "惠灵顿"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "温尼伯湖"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "雅库茨克"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "亚穆苏克罗"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "雅温德"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "叶卡特琳堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "埃里温"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "亚美尼亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "南萨哈林斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "萨格勒布"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "克罗地亚"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "苏黎世"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "导出中..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "导入中…"
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "已导入"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "已导出"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "附加"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "記事本"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "詳細資料"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "找不到結果"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "每月"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "所有日曆"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "前"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "提前"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "每日"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "日"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "結束時間"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "每月"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "月"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "開始時間"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "輕觸以輸入位置"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "輕觸以輸入備註"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "輕觸輸入主題"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "月"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "週"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "每週"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "每年"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "輕觸以輸入參與者"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "週"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "整天"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "週"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "預設帳戶"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "發送選項"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "地圖"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "標題"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "匯出"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "日曆同步"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "事件"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "星期日"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "星期一"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "星期的第一天"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "未選擇位置"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "刪除事件"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "發送訊息到參加者嗎?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "參與者"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "準時"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "日曆"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "無日曆"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "清單"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "只此事件"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "所有重複事件"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "無標題"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "鎖定時區"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "時區"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "小時"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "重複直至"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "時間"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "參與者"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "連結的日曆"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "手機日曆"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "按日檢視"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "按週檢視"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "年"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "重複"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "無法找到位置"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "位置"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "日"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "週"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "阿比讓"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "阿布扎比"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "阿拉伯聯合酋長國"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "阿克拉"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "加納"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "阿迪斯阿貝巴"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "埃塞俄比亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "阿得萊德"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "澳洲"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "阿拉斯加"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "美國"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "科特迪瓦"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "阿爾及爾"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "阿爾及利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "阿拉木圖"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "哈薩克斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "安汶"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "印度尼西亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "安曼"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "約旦"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "阿姆斯特丹"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "荷蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "阿納德爾"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "俄羅斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "安克拉治"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "安卡拉"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "土耳其"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "安塔那那利佛"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "馬達加斯加"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "阿什哈巴德"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "土庫曼斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "阿斯馬拉"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "厄立特里亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "阿斯塔納"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "亞松森"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "巴拉圭"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "雅典"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "希臘"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "奧克蘭"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "新西蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "奧斯丁"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "亞述爾群島"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "葡萄牙"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "巴格達"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "伊拉克"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "巴庫"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "阿塞拜疆"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "巴爾的摩"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "巴馬科"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "馬里"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "曼谷"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "泰國"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "班基"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "中非共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "巴塞羅那"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "西班牙"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "巴里"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "意大利"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "巴斯特爾"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "哥德普洛"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "北京"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "中國"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "貝魯特"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "黎巴嫩"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "貝爾格萊德"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "塞爾維亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "伯利茲市"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "伯利茲"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "柏林"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "德國"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "伯爾尼"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "瑞士"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "比什凱克"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "吉爾吉斯斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "比紹"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "幾內亞比紹"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "波哥大"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "哥倫比亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "博洛尼亞"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "波士頓"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "巴西利亞"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "巴西"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "布拉迪斯拉發"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "斯洛伐克"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "布列治敦"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "巴巴多斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "布里斯班"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "布魯塞爾"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "比利時"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "布加勒斯特"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "羅馬尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "布達佩斯"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "匈牙利"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "布宜諾斯艾利斯"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "阿根廷"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "開羅"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "埃及"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "卡爾加里"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "加拿大"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "加那利群島"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "坎培拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "廣州"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "開普敦"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "南非"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "加拉加斯"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "委內瑞拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "加地夫"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "威爾斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "卡薩布蘭卡"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "摩洛哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "卡坦扎羅"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "儲存至"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "無事件"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "自訂"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "要儲存嗎?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "重新排序"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "開雲"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "法屬圭亞那"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "夏洛特"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "夏洛特阿馬利亞"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "美屬維爾京群島"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "車里雅賓斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "欽奈"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "印度"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "芝加哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "基希訥烏"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "摩爾多瓦"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "赤塔"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "克利夫蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "科倫坡"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "斯里蘭卡"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "哥倫布"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "科納克里"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "幾內亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "哥本哈根"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "丹麥"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "科克"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "愛爾蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "克羅托內"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "達喀爾"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "塞內加爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "達拉斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "大馬士革"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "敘利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "達累斯薩拉姆"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "坦桑尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "達爾文"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "登巴薩"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "丹佛"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "底特律"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "達卡"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "孟加拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "迪戈加西亞島"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "英國"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "吉布提"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "吉布提"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "多哈"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "卡塔爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "杜阿拉"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "喀麥隆"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "迪拜"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "都柏林"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "杜尚别"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "塔吉克斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "伊斯特島"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "智利"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "愛丁堡"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "蘇格爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "埃爾帕索"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "佛羅倫薩"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "法蘭西堡"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "馬提尼克"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "自由城"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "塞拉利昂"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "哈博羅內"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "博茨瓦納"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "加拉帕戈斯群島"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "厄瓜多爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "日內瓦"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "熱那亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "喬治城"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "圭亞那"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "格力維肯"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "南喬治亞島"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "關島"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "危地馬拉市"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "危地馬拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "古斯塔維亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "聖巴泰勒米島"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "哈利法克斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "漢堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "河內"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "越南"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "哈拉雷"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "津巴布韋"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "哈瓦那"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "古巴"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "夏威夷"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "赫爾辛基"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "芬蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "霍巴特"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "按週顯示事件"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "按月份檢視配置"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "按日顯示事件"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "香港"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "檀香山"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "休斯頓"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "科布多"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "蒙古"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "印第安納波利斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "伊爾庫次克"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "伊斯蘭堡"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "巴基斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "伊斯坦布爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "伊熱夫斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "雅加達"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "吉達"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "沙特阿拉伯"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "耶路撒冷"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "以色列"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "約翰內斯堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "喀布爾"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "阿富汗"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "加里寧格勒"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "堪察加"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "坎帕拉"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "烏干達"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "卡拉奇"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "加德滿都"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "尼泊爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "哈巴羅夫斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "哈爾科夫"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "烏克蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "喀土穆"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "蘇丹"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "基輔"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "金斯頓"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "牙買加"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "金沙薩"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "剛果民主共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "加爾各答"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "克拉斯諾亞爾斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "吉隆坡"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "馬來西亞"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "科威特"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "洛杉磯"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "拉巴斯"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "玻利維亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "拉哥斯"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "尼日利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "拉斯維加斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "利馬"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "秘魯"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "里斯本"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "盧布爾雅那"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "倫敦"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "龍華"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "路易斯維爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "羅安達"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "安哥拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "盧本巴希"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "盧薩卡"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "贊比亞"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "盧森堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "利沃夫"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "澳門"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "馬德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "馬加丹"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "馬拉博"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "赤道畿內亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "馬累"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "馬爾代夫"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "馬拿瓜"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "尼加拉瓜"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "麥納瑪"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "巴林"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "馬尼拉"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "菲律賓"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "馬普托"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "莫桑比克"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "馬里戈特"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "聖馬爾坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "馬薩特蘭"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "墨西哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "利雅德"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "墨爾本"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "孟菲斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "墨西拿"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "墨西哥城"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "邁阿密"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "中大西洋"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "中途島"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "米蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "密爾沃基"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "明斯克"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "白俄羅斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "摩加迪休"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "索馬里"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "蒙羅維亞"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "利比里亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "蒙得維的亞"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "烏拉圭"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "蒙特利爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "莫斯科"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "孟買"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "慕尼黑"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "馬斯喀特"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "阿曼"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "奈洛比"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "肯尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "羅馬"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "納特斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "恩賈梅納"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "那不勒斯"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "乍得"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "麥加"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "新德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "紐約"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "紐芬蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "尼亞美"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "尼日爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "努瓦克肖特"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "毛里塔尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "努美阿"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "新喀里多尼亞群島"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "新庫茲涅茨克"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "新西伯利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "努庫阿洛法"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "湯加"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "努克"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "格陵蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "鄂木斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "大阪"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "日本"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "渥太華"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "瓦加杜古"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "布基納法索"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "帕果帕果"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "薩摩亞獨立國"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "巴勒莫"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "巴拿馬城"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "巴拿馬"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "巴拉馬利波"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "蘇利南"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "巴黎"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "法國"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "彼爾姆"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "珀斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "堪察加彼得羅巴甫洛夫斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "費城"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "金邊"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "柬埔寨"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "鳳凰城"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "波德戈里察"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "黑山共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "蓬塔德爾加達"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "路易港"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "毛里裘斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "太子港"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "海地"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "波特蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "布拉格"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "捷克共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "平壤"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "北韓"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "基多"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "拉巴特"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "仰光"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "緬甸"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "累西腓"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "里賈納"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "雷克雅未克"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "冰島"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "里加"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "拉脫維亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "里約熱內盧"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "聖但尼"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "留尼汪島"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "薩馬拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "聖安東尼奧"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "聖地牙哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "三藩市"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "聖何塞"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "哥斯達黎加"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "聖胡安"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "波多黎各"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "聖馬力諾"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "聖薩爾瓦多"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "薩爾瓦多"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "薩那"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "也門"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "聖地牙哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "聖多明各"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "多米尼加共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "聖保羅"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "西雅圖"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "首爾"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "韓國"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "上海"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "深圳"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "新加坡"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "新加坡共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "斯科普里"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "馬其頓"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "索非亞"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "保加利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "聖約翰斯"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "安地卡及巴布達"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "斯德哥爾摩"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "瑞典"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "蘇瓦"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "斐濟"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "斐濟"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "悉尼"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "大溪地"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "法屬玻利尼西亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "台北"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "台灣"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "塔林"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "愛沙尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "塔拉瓦"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "基里巴斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "塔什干"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "烏茲別克斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "第比利斯"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "格魯吉亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "特古西加爾巴"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "洪都拉斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "德黑蘭"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "伊朗"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "胡志明市"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "塞特爾門特"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "英屬維爾京群島"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "天津"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "蒂華納"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "東京"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "多倫多"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "特雷"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "的黎波里"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "利比亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "突尼斯"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "突尼西亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "都靈"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "烏法"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "巴什噶爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "烏蘭巴托"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "瓦杜茲"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "列支敦士登"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "瓦萊塔"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "馬耳他"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "溫哥華"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "維羅納"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "維多利亞"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "塞席爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "維也納"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "奧地利"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "維爾紐斯"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "立陶宛"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "海參崴"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "伏爾加格勒"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "聖彼德堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "華沙"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "波蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "華盛頓特區"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "威靈頓"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "溫尼伯"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "雅庫茨克"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "亞穆蘇克羅"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "雅溫得"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "葉卡捷琳堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "埃里溫"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "亞美尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "南薩哈林斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "薩格勒布"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "克羅地亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "蘇黎世"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "正在匯出..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "正在匯入..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "已匯入"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "已匯出"
+
--- /dev/null
+msgid "IDS_COM_POP_ATTACH"
+msgstr "附件"
+
+msgid "IDS_COM_BODY_NOTE"
+msgstr "備註"
+
+msgid "IDS_COM_BODY_DETAILS"
+msgstr "詳細資料"
+
+msgid "IDS_BR_BODY_NO_RESULTS_FOUND"
+msgstr "找不到結果"
+
+msgid "IDS_CLD_BODY_ADDEVENTREPEATMTHLY"
+msgstr "每月"
+
+msgid "IDS_CLD_BODY_ALL_CALENDAR"
+msgstr "所有日曆"
+
+msgid "IDS_CLD_BODY_BEFORE"
+msgstr "之前"
+
+msgid "IDS_CLD_BODY_BEFORE_LC"
+msgstr "之前"
+
+msgid "IDS_CLD_BODY_CUSTOMIZE_ATNT"
+msgstr "Customize"
+
+msgid "IDS_CLD_BODY_DAILY"
+msgstr "每日"
+
+msgid "IDS_CLD_BODY_DAY"
+msgstr "日"
+
+msgid "IDS_CLD_BODY_END_TIME"
+msgstr "結束時間"
+
+msgid "IDS_CLD_BODY_MONTHLY"
+msgstr "每月"
+
+msgid "IDS_CLD_BODY_REPEAT_MONTH"
+msgstr "月"
+
+msgid "IDS_CLD_BODY_START_TIME"
+msgstr "開始時間"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"
+msgstr "輕觸輸入位置"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_NOTE"
+msgstr "輕觸輸入說明"
+
+msgid "IDS_CLD_BODY_TAP_TO_ENTER_TITLE"
+msgstr "輕觸輸入標題"
+
+msgid "IDS_CLD_BODY_VIEWBY_MONTH"
+msgstr "月"
+
+msgid "IDS_CLD_BODY_WEEK"
+msgstr "週"
+
+msgid "IDS_CLD_BODY_WEEKLY"
+msgstr "每週"
+
+msgid "IDS_CLD_BODY_YEARLY"
+msgstr "每年"
+
+msgid "IDS_CLD_POP_TAP_TO_ENTER_PARTICIPANT"
+msgstr "輕觸輸入參與者"
+
+msgid "IDS_CLD_POP_WEEK_INITIAL"
+msgstr "週"
+
+msgid "IDS_COM_BODY_ALL_DAY"
+msgstr "整天"
+
+msgid "IDS_COM_POP_WEEK_LC"
+msgstr "週"
+
+msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT"
+msgstr "預設帳號"
+
+msgid "IDS_EMAIL_BODY_SENDING_OPTIONS"
+msgstr "傳送選項"
+
+msgid "IDS_LBS_BODY_MAP"
+msgstr "地圖"
+
+msgid "IDS_COM_BODY_DETAILS_TITLE"
+msgstr "標題"
+
+msgid "IDS_RSSR_OPT_EXPORT"
+msgstr "匯出"
+
+msgid "IDS_CLD_BODY_CALENDAR_SYNC"
+msgstr "日曆同步"
+
+msgid "IDS_CLD_BODY_EVENTS"
+msgstr "活動"
+
+msgid "IDS_ST_BODY_SUNDAY"
+msgstr "週日"
+
+msgid "IDS_ST_BODY_MONDAY"
+msgstr "週一"
+
+msgid "IDS_CLD_BODY_FIRST_DAY_OF_WEEK"
+msgstr "一週的第一天"
+
+msgid "IDS_CLD_BODY_NO_LOCATION_SELECTED"
+msgstr "沒有選擇地區"
+
+msgid "IDS_CLD_OPT_DELETE_EVENT"
+msgstr "刪除活動"
+
+msgid "IDS_CLD_POP_SEND_MESSAGES_TO_PARTICIPANTS_Q"
+msgstr "發送訊息到收件者?"
+
+msgid "IDS_CLD_BODY_PARTICIPANTS"
+msgstr "參與者"
+
+msgid "IDS_CLD_BODY_ON_TIME"
+msgstr "準時"
+
+msgid "IDS_CLD_BODY_CALENDARS"
+msgstr "日曆"
+
+msgid "IDS_CLD_HEADER_NO_CALENDARS"
+msgstr "無日曆"
+
+msgid "IDS_CLD_BODY_LIST"
+msgstr "清單"
+
+msgid "IDS_CLD_BODY_ONLY_THIS_EVENT"
+msgstr "僅此活動"
+
+msgid "IDS_CLD_POP_ALL_REPETITIVE_EVENTS"
+msgstr "所有重複事件"
+
+msgid "IDS_CLD_BODY_NO_TITLE"
+msgstr "無標題"
+
+msgid "IDS_CLD_MBODY_LOCK_TIME_ZONE"
+msgstr "鎖定時區"
+
+msgid "IDS_CLD_BODY_TIME_ZONE"
+msgstr "時區"
+
+msgid "IDS_CLD_BODY_HOUR_LC"
+msgstr "小時"
+
+msgid "IDS_CLD_BODY_REPEAT_UNTIL"
+msgstr "重複到"
+
+msgid "IDS_COM_POP_TIMES_LC"
+msgstr "時間"
+
+msgid "IDS_CLD_OPT_PARTICIPANT"
+msgstr "參與者"
+
+msgid "IDS_CLD_BODY_LINKED_CALENDAR"
+msgstr "日曆已連結"
+
+msgid "IDS_CLD_OPT_PHONE_CALENDAR"
+msgstr "手機日曆"
+
+msgid "IDS_CLD_BODY_DAILY_VIEW"
+msgstr "按日檢視"
+
+msgid "IDS_CLD_BODY_WEEKLY_VIEW"
+msgstr "按週檢視"
+
+msgid "IDS_CLD_BODY_YEAR"
+msgstr "年"
+
+msgid "IDS_CLD_BODY_REPEAT"
+msgstr "重覆"
+
+msgid "IDS_DB_BODY_UNABLE_TO_FIND_LOCATION"
+msgstr "找不到位置"
+
+msgid "IDS_COM_BODY_DETAILS_LOCATION"
+msgstr "位置"
+
+msgid "IDS_COM_POP_DAY_LC"
+msgstr "天"
+
+msgid "IDS_CLD_BODY_ALARMBEFORE_WEEK_LC"
+msgstr "週"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABIDJAN"
+msgstr "阿必尚"
+
+msgid "IDS_WCL_BODY_CITYNAME_ABUDHABI"
+msgstr "阿布達比"
+
+msgid "IDS_WCL_BODY_UNITED_ARAB_EMIRATES"
+msgstr "阿拉伯聯合大公國"
+
+msgid "IDS_WCL_BODY_CITYNAME_ACCRA"
+msgstr "阿克拉"
+
+msgid "IDS_WCL_BODY_GHANA"
+msgstr "迦納"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADDIS_ABABA"
+msgstr "阿地斯阿貝巴"
+
+msgid "IDS_WCL_BODY_ETHIOPIA"
+msgstr "衣索比亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ADELAIDE"
+msgstr "阿德雷得"
+
+msgid "IDS_WCL_BODY_AUSTRALIA"
+msgstr "澳大利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALASKA"
+msgstr "阿拉斯加"
+
+msgid "IDS_WCL_BODY_USA_M_COUNTRYNAME"
+msgstr "美國"
+
+msgid "IDS_WCL_BODY_COTE_DIVOIRE"
+msgstr "象牙海岸"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALGIERS"
+msgstr "阿爾及爾"
+
+msgid "IDS_WCL_BODY_ALGERIA"
+msgstr "阿爾及利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ALMATY"
+msgstr "阿拉木圖"
+
+msgid "IDS_WCL_BODY_KAZAKHSTAN"
+msgstr "哈薩克"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMBON"
+msgstr "安汶"
+
+msgid "IDS_WCL_BODY_INDONESIA"
+msgstr "印尼"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMMAN"
+msgstr "阿曼"
+
+msgid "IDS_WCL_BODY_JORDAN"
+msgstr "約旦"
+
+msgid "IDS_WCL_BODY_CITYNAME_AMSTERDAME"
+msgstr "阿姆斯特丹"
+
+msgid "IDS_WCL_BODY_NETHERLANDS"
+msgstr "荷蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANADYR"
+msgstr "阿納德爾"
+
+msgid "IDS_WCL_BODY_RUSSIA"
+msgstr "俄羅斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANCHORAGE"
+msgstr "安克拉治"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANKARA"
+msgstr "安卡拉"
+
+msgid "IDS_WCL_BODY_TURKEY"
+msgstr "土耳其"
+
+msgid "IDS_WCL_BODY_CITYNAME_ANTANANARIVO"
+msgstr "安塔那那利佛"
+
+msgid "IDS_WCL_BODY_MADAGASCAR"
+msgstr "馬達加斯加"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASHGABAT"
+msgstr "阿什哈巴德"
+
+msgid "IDS_WCL_BODY_TURKMENISTAN"
+msgstr "土庫曼"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASMARA"
+msgstr "阿斯馬拉"
+
+msgid "IDS_WCL_BODY_ERITREA"
+msgstr "厄立特里亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASTANA"
+msgstr "阿斯塔納"
+
+msgid "IDS_WCL_BODY_CITYNAME_ASUNCION"
+msgstr "亞松森"
+
+msgid "IDS_WCL_BODY_PARAGUAY"
+msgstr "巴拉圭"
+
+msgid "IDS_WCL_BODY_CITYNAME_ATHENS"
+msgstr "雅典"
+
+msgid "IDS_WCL_BODY_GREECE"
+msgstr "希臘"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUCKLAND"
+msgstr "奧克蘭"
+
+msgid "IDS_WCL_BODY_NEW_ZEALAND"
+msgstr "紐西蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_AUSTIN"
+msgstr "奧斯丁"
+
+msgid "IDS_WCL_BODY_CITYNAME_AZORES"
+msgstr "亞述爾群島"
+
+msgid "IDS_WCL_BODY_PORTUGAL"
+msgstr "葡萄牙"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAGHDAD"
+msgstr "巴格達"
+
+msgid "IDS_WCL_BODY_IRAQ"
+msgstr "伊拉克"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAKU"
+msgstr "巴庫"
+
+msgid "IDS_WCL_BODY_AZERBAIJAN"
+msgstr "亞塞拜然"
+
+msgid "IDS_WCL_BODY_CITYNAME_BALTIMORE"
+msgstr "巴爾的摩"
+
+msgid "IDS_WCL_BODY_CITYNAME_BAMAKO"
+msgstr "巴馬科"
+
+msgid "IDS_WCL_BODY_MALI"
+msgstr "馬利"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGKOK"
+msgstr "曼谷"
+
+msgid "IDS_WCL_BODY_THAILAND"
+msgstr "泰國"
+
+msgid "IDS_WCL_BODY_CITYNAME_BANGUI"
+msgstr "班基"
+
+msgid "IDS_WCL_BODY_CENTRAL_AFRICAN_REPUBLIC"
+msgstr "中非共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARCELONA"
+msgstr "巴塞隆納"
+
+msgid "IDS_WCL_BODY_SPAIN"
+msgstr "西班牙"
+
+msgid "IDS_WCL_BODY_CITYNAME_BARI"
+msgstr "巴里"
+
+msgid "IDS_WCL_BODY_ITALY"
+msgstr "義大利"
+
+msgid "IDS_WCL_BODY_CITYNAME_BASSE_TERRE"
+msgstr "巴斯特爾"
+
+msgid "IDS_WCL_BODY_GUADELOUPE"
+msgstr "瓜德羅普"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIJING"
+msgstr "北京"
+
+msgid "IDS_WCL_BODY_CHINA"
+msgstr "中國"
+
+msgid "IDS_WCL_BODY_CITYNAME_BEIRUT"
+msgstr "貝魯特"
+
+msgid "IDS_WCL_BODY_LEBANON"
+msgstr "黎巴嫩"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELGRADE"
+msgstr "貝爾格勒"
+
+msgid "IDS_WCL_BODY_SERBIA"
+msgstr "塞爾維亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_BELIZE_CITY"
+msgstr "貝里斯"
+
+msgid "IDS_WCL_BODY_BELIZE"
+msgstr "貝里斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERLIN"
+msgstr "柏林"
+
+msgid "IDS_WCL_BODY_GERMANY"
+msgstr "德國"
+
+msgid "IDS_WCL_BODY_CITYNAME_BERN"
+msgstr "伯恩"
+
+msgid "IDS_WCL_BODY_SWITZERLAND"
+msgstr "瑞士"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISHKEK"
+msgstr "比斯凱克"
+
+msgid "IDS_WCL_BODY_KYRGYZSTAN"
+msgstr "吉爾吉斯斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_BISSAU"
+msgstr "比索"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUINEA_BISSAU"
+msgstr "幾內亞比索"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOGOTA"
+msgstr "波哥大"
+
+msgid "IDS_WCL_BODY_COLOMBIA"
+msgstr "哥倫比亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_BOLOGNA"
+msgstr "波羅納"
+
+msgid "IDS_WCL_BODY_BOSTON"
+msgstr "波士頓"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRASILIA"
+msgstr "巴西利亞"
+
+msgid "IDS_WCL_BODY_BRAZIL"
+msgstr "巴西"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRATISLAVA"
+msgstr "伯拉第斯拉瓦"
+
+msgid "IDS_WCL_BODY_SLOVAKIA"
+msgstr "斯洛伐克"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRIDGETOWN"
+msgstr "橋鎮"
+
+msgid "IDS_WCL_BODY_BARBADOS"
+msgstr "巴貝多"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRISBANE"
+msgstr "布里斯班"
+
+msgid "IDS_WCL_BODY_CITYNAME_BRUSSELS"
+msgstr "布魯塞爾"
+
+msgid "IDS_WCL_BODY_BELGIUM"
+msgstr "比利時"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUCHAREST"
+msgstr "布加勒斯特"
+
+msgid "IDS_WCL_BODY_ROMANIA"
+msgstr "羅馬尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUDAPEST"
+msgstr "布達佩斯"
+
+msgid "IDS_WCL_BODY_HUNGARY_M_COUNTRY"
+msgstr "匈牙利"
+
+msgid "IDS_WCL_BODY_CITYNAME_BUENOSAIRES"
+msgstr "布宜諾斯艾利斯"
+
+msgid "IDS_WCL_BODY_ARGENTINA"
+msgstr "阿根廷"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAIRO"
+msgstr "開羅"
+
+msgid "IDS_WCL_BODY_EGYPT"
+msgstr "埃及"
+
+msgid "IDS_WCL_BODY_CITYNAME_CALGARY"
+msgstr "卡加立"
+
+msgid "IDS_WCL_BODY_CANADA"
+msgstr "加拿大"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANARY_ISLANDS"
+msgstr "金絲雀群島"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANBERRA"
+msgstr "坎培拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_CANTON"
+msgstr "廣州"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAPE_TOWN"
+msgstr "開普敦"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SOUTH_AFRICA"
+msgstr "南非"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARACAS"
+msgstr "卡拉卡斯"
+
+msgid "IDS_WCL_BODY_VENEZUELA"
+msgstr "委內瑞拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_CARDIFF"
+msgstr "加地夫"
+
+msgid "IDS_WCL_BODY_WALES_M_COUNTRYNAME"
+msgstr "威爾斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_CASABLANCA"
+msgstr "卡薩布蘭卡"
+
+msgid "IDS_WCL_BODY_MOROCCO"
+msgstr "摩洛哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_CATANZARO"
+msgstr "卡坦扎羅"
+
+msgid "IDS_ST_BODY_SAVE_TO"
+msgstr "儲存至"
+
+msgid "IDS_CLD_BODY_NO_EVENTS"
+msgstr "沒有活動"
+
+msgid "IDS_COM_BODY_CUSTOMISE"
+msgstr "自訂"
+
+msgid "IDS_COM_POP_ERRORMSG_SAVE_Q"
+msgstr "儲存?"
+
+msgid "IDS_WCL_OPT_REORDER"
+msgstr "重新排序"
+
+msgid "IDS_WCL_BODY_CITYNAME_CAYENNE"
+msgstr "卡宴"
+
+msgid "IDS_WCL_BODY_FRENCH_GUIANA"
+msgstr "法屬圭亞那"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE"
+msgstr "夏洛特"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHARLOTTE_AMALIE"
+msgstr "夏洛特阿馬利亞"
+
+msgid "IDS_WCL_BODY_UNITED_STATES_VIRGIN_ISLANDS_M_COUNTRYNAME"
+msgstr "美屬維爾京群島"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHELYABINSK"
+msgstr "車里雅賓斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHENNAI"
+msgstr "金奈"
+
+msgid "IDS_WCL_BODY_INDIA"
+msgstr "印度"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHICAGO"
+msgstr "芝加哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHISINAU"
+msgstr "基希訥烏"
+
+msgid "IDS_WCL_BODY_MOLDOVA"
+msgstr "摩爾多瓦"
+
+msgid "IDS_WCL_BODY_CITYNAME_CHITA"
+msgstr "赤塔"
+
+msgid "IDS_WCL_BODY_CITYNAME_CLEVELAND"
+msgstr "克里夫蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLOMBO"
+msgstr "可倫坡"
+
+msgid "IDS_WCL_BODY_SRI_LANKA"
+msgstr "斯里蘭卡"
+
+msgid "IDS_WCL_BODY_CITYNAME_COLUMBUS"
+msgstr "哥倫布"
+
+msgid "IDS_WCL_BODY_CITYNAME_CONAKRY"
+msgstr "柯那克里"
+
+msgid "IDS_WCL_BODY_GUINEA"
+msgstr "幾內亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_COPENHAGEN"
+msgstr "哥本哈根"
+
+msgid "IDS_WCL_BODY_DENMARK"
+msgstr "丹麥"
+
+msgid "IDS_WCL_BODY_CITYNAME_CORK"
+msgstr "科克"
+
+msgid "IDS_WCL_BODY_IRELAND"
+msgstr "愛爾蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_CROTONE"
+msgstr "克羅托內"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAKAR"
+msgstr "達喀爾"
+
+msgid "IDS_WCL_BODY_SENEGAL"
+msgstr "塞內加爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_DALLAS"
+msgstr "達拉斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAMASCUS"
+msgstr "大馬士革"
+
+msgid "IDS_WCL_BODY_SYRIA"
+msgstr "敘利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_DAR_ES_SALAAM"
+msgstr "達累斯薩拉姆"
+
+msgid "IDS_WCL_BODY_TANZANIA"
+msgstr "坦尚尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_DARWIN"
+msgstr "達爾文"
+
+msgid "IDS_WCL_BODY_CITYNAME_DELHI"
+msgstr "德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENPASAR"
+msgstr "登巴薩"
+
+msgid "IDS_WCL_BODY_CITYNAME_DENVER"
+msgstr "丹佛"
+
+msgid "IDS_WCL_BODY_CITYNAME_DETROIT"
+msgstr "底特律"
+
+msgid "IDS_WCL_BODY_CITYNAME_DHAKA"
+msgstr "達卡"
+
+msgid "IDS_WCL_BODY_BANGLADESH"
+msgstr "孟加拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_DIEGO_GARCIA"
+msgstr "地牙哥加西亞"
+
+msgid "IDS_WCL_BODY_UNITED_KINGDOM"
+msgstr "英國"
+
+msgid "IDS_WCL_BODY_CITYNAME_DJIBOUTI"
+msgstr "吉布地"
+
+msgid "IDS_WCL_BODY_DJIBOUTI"
+msgstr "吉布地"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOHA"
+msgstr "多哈"
+
+msgid "IDS_WCL_BODY_QATAR"
+msgstr "卡達"
+
+msgid "IDS_WCL_BODY_CITYNAME_DOUALA"
+msgstr "杜阿拉"
+
+msgid "IDS_WCL_BODY_CAMEROON"
+msgstr "喀麥隆"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBAI"
+msgstr "杜拜"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUBLIN"
+msgstr "都柏林"
+
+msgid "IDS_WCL_BODY_CITYNAME_DUSHANBE"
+msgstr "杜尚別"
+
+msgid "IDS_WCL_BODY_TAJIKISTAN"
+msgstr "塔吉克"
+
+msgid "IDS_WCL_BODY_CITYNAME_EASTER_ISLAND"
+msgstr "復活島"
+
+msgid "IDS_WCL_BODY_CHILE"
+msgstr "智利"
+
+msgid "IDS_WCL_BODY_CITYNAME_EDINBURGH"
+msgstr "愛丁堡"
+
+msgid "IDS_WCL_BODY_SCOTLAND_M_COUNTRYNAME"
+msgstr "蘇格蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_EL_PASO"
+msgstr "厄爾巴索"
+
+msgid "IDS_WCL_BODY_CITYNAME_FLORENCE"
+msgstr "佛羅倫斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_FORT_DE_FRANCE"
+msgstr "法蘭西堡"
+
+msgid "IDS_WCL_BODY_MARTINIQUE"
+msgstr "馬堤尼克"
+
+msgid "IDS_WCL_BODY_CITYNAME_FREETOWN"
+msgstr "自由城"
+
+msgid "IDS_WCL_BODY_SIERRA_LEONE"
+msgstr "獅子山"
+
+msgid "IDS_WCL_BODY_CITYNAME_GABORONE"
+msgstr "嘉柏隆"
+
+msgid "IDS_WCL_BODY_BOTSWANA"
+msgstr "波札那"
+
+msgid "IDS_WCL_BODY_CITYNAME_GALAPAGOS_ISLANDS"
+msgstr "加拉巴哥群島"
+
+msgid "IDS_WCL_BODY_ECUADOR"
+msgstr "厄瓜多爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENEVA"
+msgstr "日內瓦"
+
+msgid "IDS_WCL_BODY_CITYNAME_GENOA"
+msgstr "熱那亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_GEORGETOWN"
+msgstr "喬治城"
+
+msgid "IDS_WCL_BODY_GUYANA"
+msgstr "蓋亞那"
+
+msgid "IDS_WCL_BODY_CITYNAME_GRYTVIKEN"
+msgstr "格里特維肯"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOUTH_GEORGIA"
+msgstr "南喬治亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUAM"
+msgstr "關島"
+
+msgid "IDS_WCL_BODY_GUATEMALA_CITY"
+msgstr "瓜地馬拉市"
+
+msgid "IDS_WCL_BODY_GUATEMALA"
+msgstr "瓜地馬拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_GUSTAVIA"
+msgstr "古斯塔維亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_BARTHELEMY"
+msgstr "聖巴泰勒米島"
+
+msgid "IDS_WCL_BODY_CITYNAME_HALIFAX"
+msgstr "哈利法克斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAMBURG"
+msgstr "漢堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_HANOI"
+msgstr "河內"
+
+msgid "IDS_WCL_BODY_VIETNAM"
+msgstr "越南"
+
+msgid "IDS_WCL_BODY_CITYNAME_HARARE"
+msgstr "哈拉雷"
+
+msgid "IDS_WCL_BODY_ZIMBABWE"
+msgstr "辛巴威"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAVANA"
+msgstr "哈瓦那"
+
+msgid "IDS_WCL_BODY_CUBA"
+msgstr "古巴"
+
+msgid "IDS_WCL_BODY_CITYNAME_HAWAII"
+msgstr "夏威夷"
+
+msgid "IDS_WCL_BODY_CITYNAME_HELSINKI"
+msgstr "赫爾辛基"
+
+msgid "IDS_WCL_BODY_FINLAND"
+msgstr "芬蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOBART"
+msgstr "霍巴特"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"
+msgstr "依週顯示活動"
+
+msgid "IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"
+msgstr "依月份檢視配置"
+
+msgid "IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"
+msgstr "依日顯示活動"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONGKONG"
+msgstr "香港"
+
+msgid "IDS_WCL_BODY_CITYNAME_HONOLULU"
+msgstr "檀香山"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOUSTON"
+msgstr "休斯敦"
+
+msgid "IDS_WCL_BODY_CITYNAME_HOVD"
+msgstr "科布多"
+
+msgid "IDS_WCL_BODY_MONGOLIA"
+msgstr "蒙古"
+
+msgid "IDS_WCL_BODY_CITYNAME_INDIANAPOLIS"
+msgstr "印第安納波里"
+
+msgid "IDS_WCL_BODY_CITYNAME_IRKUTSK"
+msgstr "伊爾庫茨克"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISLAMABAD"
+msgstr "伊斯蘭堡"
+
+msgid "IDS_WCL_BODY_PAKISTAN"
+msgstr "巴基斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_ISTANBUL"
+msgstr "伊斯坦堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_IZHEVSK"
+msgstr "伊熱夫斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_JAKARTA"
+msgstr "雅加達"
+
+msgid "IDS_WCL_BODY_CITYNAME_JEDDAH"
+msgstr "吉達"
+
+msgid "IDS_WCL_BODY_SAUDI_ARABIA"
+msgstr "沙烏地阿拉伯"
+
+msgid "IDS_WCL_BODY_CITYNAME_JERUSALEM"
+msgstr "耶路撒冷"
+
+msgid "IDS_WCL_BODY_ISRAEL"
+msgstr "以色列"
+
+msgid "IDS_WCL_BODY_CITYNAME_JOHANNESBURG"
+msgstr "約翰尼斯堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_KABUL"
+msgstr "喀布爾"
+
+msgid "IDS_WCL_BODY_AFGHANISTAN"
+msgstr "阿富汗"
+
+msgid "IDS_WCL_BODY_CITYNAME_KALININGRAD"
+msgstr "加里寧格勒"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMCHATKA"
+msgstr "堪察加"
+
+msgid "IDS_WCL_BODY_CITYNAME_KAMPALA"
+msgstr "坎培拉"
+
+msgid "IDS_WCL_BODY_UGANDA"
+msgstr "烏干達"
+
+msgid "IDS_WCL_BODY_CITYNAME_KARACHI"
+msgstr "克洛奇"
+
+msgid "IDS_WCL_BODY_CITYNAME_KATHMANDU"
+msgstr "加德滿都"
+
+msgid "IDS_WCL_BODY_NEPAL"
+msgstr "尼泊爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHABAROVSK"
+msgstr "伯力"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARKIV"
+msgstr "哈爾科夫"
+
+msgid "IDS_WCL_BODY_UKRAINE"
+msgstr "烏克蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_KHARTOUM"
+msgstr "喀土穆"
+
+msgid "IDS_WCL_BODY_SUDAN"
+msgstr "蘇丹"
+
+msgid "IDS_WCL_BODY_CITYNAME_KIEV"
+msgstr "基輔"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINGSTON"
+msgstr "金斯頓"
+
+msgid "IDS_WCL_BODY_JAMAICA"
+msgstr "牙買加"
+
+msgid "IDS_WCL_BODY_CITYNAME_KINSHASA"
+msgstr "金夏沙"
+
+msgid "IDS_WCL_BODY_DEMOCRATIC_REPUBLIC_OF_THE_CONGO"
+msgstr "剛果民主共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_KOLKATA"
+msgstr "加爾各答"
+
+msgid "IDS_WCL_BODY_CITYNAME_KRASNOYARSK"
+msgstr "克拉斯諾亞爾斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_KUALA_LUMPUR"
+msgstr "吉隆坡"
+
+msgid "IDS_WCL_BODY_MALAYSIA"
+msgstr "馬來西亞"
+
+msgid "IDS_WCL_BODY_KUWAIT"
+msgstr "科威特"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOS_ANGELES"
+msgstr "洛杉磯"
+
+msgid "IDS_WCL_BODY_CITYNAME_LA_PAZ"
+msgstr "拉巴斯"
+
+msgid "IDS_WCL_BODY_BOLIVIA"
+msgstr "玻利維亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAGOS"
+msgstr "拉哥斯"
+
+msgid "IDS_WCL_BODY_NIGERIA"
+msgstr "奈及利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_LAS_VEGAS"
+msgstr "拉斯維加斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_LIMA"
+msgstr "利馬"
+
+msgid "IDS_WCL_BODY_PERU"
+msgstr "秘魯"
+
+msgid "IDS_WCL_BODY_CITYNAME_LISBON"
+msgstr "里斯本"
+
+msgid "IDS_WCL_BODY_CITYNAME_LJUBLJANA"
+msgstr "盧布爾雅那"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONDON"
+msgstr "倫敦"
+
+msgid "IDS_WCL_BODY_CITYNAME_LONGHUA"
+msgstr "龍華"
+
+msgid "IDS_WCL_BODY_CITYNAME_LOUISVILLE"
+msgstr "路易斯維爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUANDA"
+msgstr "羅安達"
+
+msgid "IDS_WCL_BODY_ANGOLA"
+msgstr "安哥拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUBUMBASHI"
+msgstr "盧本巴希"
+
+msgid "IDS_WCL_BODY_CITYNAME_LUSAKA"
+msgstr "路沙卡"
+
+msgid "IDS_WCL_BODY_ZAMBIA"
+msgstr "尚比亞"
+
+msgid "IDS_WCL_BODY_LUXEMBOURG"
+msgstr "盧森堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_LVIV"
+msgstr "利沃夫"
+
+msgid "IDS_WCL_BODY_CITYNAME_MACAU"
+msgstr "澳門"
+
+msgid "IDS_WCL_BODY_CITYNAME_MADRID"
+msgstr "馬德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAGADAN"
+msgstr "馬加丹"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALABO"
+msgstr "馬拉波"
+
+msgid "IDS_WCL_BODY_CITYNAME_EQUAORIAL_GUINEA"
+msgstr "赤道幾內亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_MALE"
+msgstr "馬列"
+
+msgid "IDS_WCL_BODY_MALDIVES"
+msgstr "馬爾地夫"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAGUA"
+msgstr "馬納瓜"
+
+msgid "IDS_WCL_BODY_NICARAGUA"
+msgstr "尼加拉瓜"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANAMA"
+msgstr "麥納瑪"
+
+msgid "IDS_WCL_BODY_BAHRAIN"
+msgstr "巴林"
+
+msgid "IDS_WCL_BODY_CITYNAME_MANILA"
+msgstr "馬尼拉"
+
+msgid "IDS_WCL_BODY_PHILIPPINES"
+msgstr "菲律賓"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAPUTO"
+msgstr "馬普托"
+
+msgid "IDS_WCL_BODY_MOZAMBIQUE"
+msgstr "莫三比克"
+
+msgid "IDS_WCL_BODY_CITYNAME_MARIGOT"
+msgstr "馬利戈特"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_MARTIN"
+msgstr "聖馬丁島"
+
+msgid "IDS_WCL_BODY_CITYNAME_MAZATLAN"
+msgstr "馬薩特蘭"
+
+msgid "IDS_WCL_BODY_MEXICO"
+msgstr "墨西哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIYADH"
+msgstr "利雅德"
+
+msgid "IDS_WCL_BODY_CITYNAME_MELBOURNE"
+msgstr "墨爾本"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEMPHIS"
+msgstr "孟菲斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_MESSINA"
+msgstr "梅西那"
+
+msgid "IDS_WCL_BODY_CITYNAME_MEXICO_CITY"
+msgstr "墨西哥市"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIAMI"
+msgstr "邁阿密"
+
+msgid "IDS_WCL_BODY_CITYNAME_MID_ATLANTIC"
+msgstr "中大西洋"
+
+msgid "IDS_WCL_BODY_CITYNAME_MIDWAY_ATOLL"
+msgstr "中途島"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILAN"
+msgstr "米蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_MILWAUKEE"
+msgstr "密爾瓦基"
+
+msgid "IDS_WCL_BODY_CITYNAME_MINSK"
+msgstr "明斯克"
+
+msgid "IDS_WCL_BODY_BELARUS"
+msgstr "白俄羅斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOGADISHU"
+msgstr "摩加迪休"
+
+msgid "IDS_WCL_BODY_SOMALIA"
+msgstr "索馬利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONROVIA"
+msgstr "蒙羅維亞"
+
+msgid "IDS_WCL_BODY_LIBERIA"
+msgstr "賴比瑞亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTEVIDEO"
+msgstr "蒙特維多"
+
+msgid "IDS_WCL_BODY_URUGUAY"
+msgstr "烏拉圭"
+
+msgid "IDS_WCL_BODY_CITYNAME_MONTREAL"
+msgstr "蒙特婁"
+
+msgid "IDS_WCL_BODY_CITYNAME_MOSCOW"
+msgstr "莫斯科"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUMBAI"
+msgstr "孟買"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUNICH"
+msgstr "慕尼黑"
+
+msgid "IDS_WCL_BODY_CITYNAME_MUSCAT"
+msgstr "馬斯喀特"
+
+msgid "IDS_WCL_BODY_OMAN"
+msgstr "阿曼"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAIROBI"
+msgstr "奈洛比"
+
+msgid "IDS_WCL_BODY_KENYA"
+msgstr "肯亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ROME"
+msgstr "羅馬"
+
+msgid "IDS_WCL_BODY_CITYNAME_NATERS"
+msgstr "納特斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_NDJAMENA"
+msgstr "恩賈梅納"
+
+msgid "IDS_WCL_BODY_CITYNAME_NAPLES"
+msgstr "那布勒斯"
+
+msgid "IDS_WCL_BODY_CHAD"
+msgstr "查德"
+
+msgid "IDS_WCL_BODY_MECCA"
+msgstr "麥加"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWDELHI"
+msgstr "新德里"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWYORK"
+msgstr "紐約"
+
+msgid "IDS_WCL_BODY_CITYNAME_NEWFOUNDLAND"
+msgstr "紐芬蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_NIAMEY"
+msgstr "尼阿美"
+
+msgid "IDS_WCL_BODY_NIGER"
+msgstr "尼日"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUAKCHOTT"
+msgstr "諾克少"
+
+msgid "IDS_WCL_BODY_MAURITANIA"
+msgstr "茅利塔尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOUMEA"
+msgstr "努美亞"
+
+msgid "IDS_WCL_BODY_NEW_CALEDONIA"
+msgstr "新喀里多尼亞群島"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOKUZNETSK"
+msgstr "新庫茲涅茨克"
+
+msgid "IDS_WCL_BODY_CITYNAME_NOVOSIBIRSK"
+msgstr "新西伯利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUKUALOFA"
+msgstr "奴瓜婁發"
+
+msgid "IDS_WCL_BODY_TONGA"
+msgstr "東加"
+
+msgid "IDS_WCL_BODY_CITYNAME_NUUK"
+msgstr "努克"
+
+msgid "IDS_WCL_BODY_GREENLAND_M_COUNTRYNAME"
+msgstr "格陵蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_OMSK"
+msgstr "鄂木斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_OSAKA"
+msgstr "大阪"
+
+msgid "IDS_WCL_BODY_JAPAN"
+msgstr "日本"
+
+msgid "IDS_WCL_BODY_CITYNAME_OTTAWA"
+msgstr "渥太華"
+
+msgid "IDS_WCL_BODY_CITYNAME_OUAGADOUGOU"
+msgstr "瓦加杜古"
+
+msgid "IDS_WCL_BODY_BURKINA_FASO"
+msgstr "布吉納法索"
+
+msgid "IDS_WCL_BODY_CITYNAME_PAGO_PAGO"
+msgstr "帕哥帕哥"
+
+msgid "IDS_WCL_BODY_INDEPENDENT_STATE_OF_SAMOA"
+msgstr "薩摩亞獨立國"
+
+msgid "IDS_WCL_BODY_CITYNAME_PALERMO"
+msgstr "巴勒莫"
+
+msgid "IDS_WCL_BODY_PANAMA_CITY"
+msgstr "巴拿馬市"
+
+msgid "IDS_WCL_BODY_PANAMA"
+msgstr "巴拿馬"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARAMARIBO"
+msgstr "巴拉馬利波"
+
+msgid "IDS_WCL_BODY_SURINAME"
+msgstr "蘇利南"
+
+msgid "IDS_WCL_BODY_CITYNAME_PARIS"
+msgstr "巴黎"
+
+msgid "IDS_WCL_BODY_FRANCE"
+msgstr "法國"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERM"
+msgstr "波恩"
+
+msgid "IDS_WCL_BODY_CITYNAME_PERTH"
+msgstr "伯斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_PETROPAVLOVSK_KAMCHATSKIY"
+msgstr "堪察加彼得巴甫洛夫斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHILADELPHIA"
+msgstr "費城"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHNOM_PENH"
+msgstr "金邊"
+
+msgid "IDS_WCL_BODY_CAMBODIA"
+msgstr "柬埔寨"
+
+msgid "IDS_WCL_BODY_CITYNAME_PHOENIX"
+msgstr "鳳凰城"
+
+msgid "IDS_WCL_BODY_CITYNAME_PODGORICA"
+msgstr "波德戈里察"
+
+msgid "IDS_WCL_BODY_MONTENEGRO"
+msgstr "蒙特內科羅共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_PONTA_DELGADA"
+msgstr "蓬塔德爾加達港"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_LOUIS"
+msgstr "路易士港"
+
+msgid "IDS_WCL_BODY_MAURITIUS"
+msgstr "模里西斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORT_AU_PRINCE"
+msgstr "太子港"
+
+msgid "IDS_WCL_BODY_HAITI"
+msgstr "海地"
+
+msgid "IDS_WCL_BODY_CITYNAME_PORTLAND"
+msgstr "波特蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_PRAGUE"
+msgstr "布拉格"
+
+msgid "IDS_WCL_BODY_CZECH_REPUBLIC"
+msgstr "捷克共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_PYONGYANG"
+msgstr "平壤"
+
+msgid "IDS_WCL_BODY_NORTH_KOREA"
+msgstr "北韓"
+
+msgid "IDS_WCL_BODY_CITYNAME_QUITO"
+msgstr "基多"
+
+msgid "IDS_WCL_BODY_CITYNAME_RABAT"
+msgstr "拉巴特"
+
+msgid "IDS_WCL_BODY_CITYNAME_YANGON"
+msgstr "仰光"
+
+msgid "IDS_WCL_BODY_BURMA"
+msgstr "緬甸"
+
+msgid "IDS_WCL_BODY_CITYNAME_RECIFE"
+msgstr "勒希非"
+
+msgid "IDS_WCL_BODY_CITYNAME_REGINA"
+msgstr "里賈納"
+
+msgid "IDS_WCL_BODY_CITYNAME_REYKJAVIK"
+msgstr "雷克雅維克"
+
+msgid "IDS_WCL_BODY_ICELAND"
+msgstr "冰島"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIGA"
+msgstr "里加"
+
+msgid "IDS_WCL_BODY_LATVIA"
+msgstr "拉脫維亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_RIO_DE_JANEIRO"
+msgstr "里約熱內盧"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAINT_DENIS"
+msgstr "聖德尼"
+
+msgid "IDS_WCL_BODY_REUNION_ISLAND_M_COUNTRYNAME"
+msgstr "留尼旺島"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAMARA"
+msgstr "薩瑪拉"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_ANTONIO"
+msgstr "聖安東尼奧"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_DIEGO"
+msgstr "聖地牙哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_FRANCISCO"
+msgstr "舊金山"
+
+msgid "IDS_WCL_BODY_SAN_JOSE"
+msgstr "聖荷西"
+
+msgid "IDS_WCL_BODY_COSTA_RICA"
+msgstr "哥斯大黎加"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_JUAN"
+msgstr "聖胡安"
+
+msgid "IDS_WCL_BODY_PUERTO_RICO"
+msgstr "波多黎各"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_MARINO"
+msgstr "聖馬利諾"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAN_SALVADOR"
+msgstr "聖薩爾瓦多"
+
+msgid "IDS_WCL_BODY_EL_SALVADOR"
+msgstr "薩爾瓦多"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANAA"
+msgstr "薩那"
+
+msgid "IDS_WCL_BODY_YEMEN"
+msgstr "葉門"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTIAGO"
+msgstr "聖地牙哥"
+
+msgid "IDS_WCL_BODY_CITYNAME_SANTO_DOMINGO"
+msgstr "聖多明哥"
+
+msgid "IDS_WCL_BODY_DOMINICAN_REPUBLIC"
+msgstr "多明尼加共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_SAO_PAULO"
+msgstr "聖保羅"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEATTLE"
+msgstr "西雅圖"
+
+msgid "IDS_WCL_BODY_CITYNAME_SEOUL"
+msgstr "首爾"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_KOREA"
+msgstr "韓國"
+
+msgid "IDS_WCL_BODY_CITYNAME_SHANGHAI"
+msgstr "上海"
+
+msgid "IDS_WCL_BODY_SHENZHEN"
+msgstr "深圳"
+
+msgid "IDS_WCL_BODY_CITYNAME_SINGAPORE"
+msgstr "新加坡"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_SINGAPORE_M_COUNTRY"
+msgstr "新加坡共和國"
+
+msgid "IDS_WCL_BODY_CITYNAME_SKOPJE"
+msgstr "斯科普里"
+
+msgid "IDS_WCL_BODY_MACEDONIA"
+msgstr "馬其頓"
+
+msgid "IDS_WCL_BODY_CITYNAME_SOFIA"
+msgstr "索非亞"
+
+msgid "IDS_WCL_BODY_BULGARIA"
+msgstr "保加利亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_JOHNS"
+msgstr "聖約翰"
+
+msgid "IDS_WCL_BODY_ANTIGUA_AND_BARBUDA"
+msgstr "安地卡及巴布達"
+
+msgid "IDS_WCL_BODY_CITYNAME_STOCKHOLM"
+msgstr "斯德哥爾摩"
+
+msgid "IDS_WCL_BODY_SWEDEN"
+msgstr "瑞典"
+
+msgid "IDS_WCL_BODY_CITYNAME_SUVA"
+msgstr "蘇瓦"
+
+msgid "IDS_WCL_BODY_FIJI_M_COUNTRYNAME"
+msgstr "斐濟"
+
+msgid "IDS_WCL_BODY_REPUBLIC_OF_THE_FIJI_ISLANDS"
+msgstr "斐濟"
+
+msgid "IDS_WCL_BODY_CITYNAME_SYDNEY"
+msgstr "雪梨"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAHITI"
+msgstr "大溪地"
+
+msgid "IDS_WCL_BODY_FRENCH_POLYNESIA"
+msgstr "法屬玻里尼西亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TAIPEI"
+msgstr "台北"
+
+msgid "IDS_WCL_BODY_TAIWAN"
+msgstr "台灣"
+
+msgid "IDS_WCL_BODY_CITYNAME_TALLINN"
+msgstr "塔林"
+
+msgid "IDS_WCL_BODY_ESTONIA"
+msgstr "愛沙尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TARAWA"
+msgstr "塔拉瓦"
+
+msgid "IDS_WCL_BODY_KIRIBATI"
+msgstr "吉里巴斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_TASHKENT"
+msgstr "塔什干"
+
+msgid "IDS_WCL_BODY_UZBEKISTAN"
+msgstr "烏茲別克斯坦"
+
+msgid "IDS_WCL_BODY_CITYNAME_TBILISI"
+msgstr "第比利斯"
+
+msgid "IDS_WCL_BODY_GEORGIA"
+msgstr "喬治亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEGUCIGALPA"
+msgstr "德古斯加巴"
+
+msgid "IDS_WCL_BODY_HONDURAS"
+msgstr "宏都拉斯"
+
+msgid "IDS_WCL_BODY_CITYNAME_TEHRAN"
+msgstr "德黑蘭"
+
+msgid "IDS_WCL_BODY_IRAN_M_COUNTRYNAME"
+msgstr "伊朗"
+
+msgid "IDS_WCL_BODY_CITYNAME_HO_CHI_MINH_CITY"
+msgstr "青坡胡志明"
+
+msgid "IDS_WCL_BODY_CITYNAME_THE_SETTLEMENT"
+msgstr "塞特爾門特"
+
+msgid "IDS_WCL_BODY_BRITISH_VIRGIN_ISLANDS"
+msgstr "英屬維爾京群島"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIANJIN"
+msgstr "天津"
+
+msgid "IDS_WCL_BODY_CITYNAME_TIJUANA"
+msgstr "提華納"
+
+msgid "IDS_WCL_BODY_CITYNAME_TOKYO"
+msgstr "東京"
+
+msgid "IDS_WCL_BODY_CITYNAME_TORONTO"
+msgstr "多倫多"
+
+msgid "IDS_WCL_BODY_CITYNAME_TREHET"
+msgstr "特雷埃"
+
+msgid "IDS_WCL_BODY_CITYNAME_TRIPOLI"
+msgstr "的黎波里"
+
+msgid "IDS_WCL_BODY_LIBYA"
+msgstr "利比亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TUNIS"
+msgstr "突尼斯"
+
+msgid "IDS_WCL_BODY_TUNISIA"
+msgstr "突尼西亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_TURIN"
+msgstr "杜林"
+
+msgid "IDS_WCL_BODY_CITYNAME_UFA"
+msgstr "烏法"
+
+msgid "IDS_WCL_BODY_BASHKIRIYA_M_COUNTRYNAME"
+msgstr "巴什噶爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_ULAN_BATOR"
+msgstr "烏蘭巴托"
+
+msgid "IDS_WCL_BODY_CITYNAME_VADUZ"
+msgstr "瓦都茲"
+
+msgid "IDS_WCL_BODY_LIECHTENSTEIN"
+msgstr "列支敦斯登"
+
+msgid "IDS_WCL_BODY_CITYNAME_VALLETTA"
+msgstr "瓦勒他"
+
+msgid "IDS_WCL_BODY_MALTA"
+msgstr "馬爾他"
+
+msgid "IDS_WCL_BODY_CITYNAME_VANCOUVER"
+msgstr "溫哥華"
+
+msgid "IDS_WCL_BODY_CITYNAME_VERONA"
+msgstr "維諾那"
+
+msgid "IDS_WCL_BODY_CITYNAME_VICTORIA"
+msgstr "維多利亞"
+
+msgid "IDS_WCL_BODY_SEYCHELLES"
+msgstr "塞席爾"
+
+msgid "IDS_WCL_BODY_CITYNAME_VIENNA"
+msgstr "維也納"
+
+msgid "IDS_WCL_BODY_AUSTRIA"
+msgstr "奧地利"
+
+msgid "IDS_WCL_BODY_CITYNAME_VILNIUS"
+msgstr "維爾紐斯"
+
+msgid "IDS_WCL_BODY_LITHUANIA"
+msgstr "立陶宛"
+
+msgid "IDS_WCL_BODY_CITYNAME_VLADIVOSTOK"
+msgstr "海參崴"
+
+msgid "IDS_WCL_BODY_CITYNAME_VOLGOGRAD"
+msgstr "伏爾加格勒"
+
+msgid "IDS_WCL_BODY_CITYNAME_ST_PETERSBURG"
+msgstr "聖彼得堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_WARSAW"
+msgstr "華沙"
+
+msgid "IDS_WCL_BODY_POLAND"
+msgstr "波蘭"
+
+msgid "IDS_WCL_BODY_CITYNAME_WASHINGTON_DC"
+msgstr "華盛頓特區"
+
+msgid "IDS_WCL_BODY_CITYNAME_WELLINGTON"
+msgstr "威靈頓"
+
+msgid "IDS_WCL_BODY_CITYNAME_WINNIPEG"
+msgstr "溫尼伯"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAKUTSK"
+msgstr "亞庫次克"
+
+msgid "IDS_WCL_BODY_CITYNAME_YAMOUSSOUKRO"
+msgstr "雅穆索戈"
+
+msgid "IDS_WCL_BODY_YAOUNDE"
+msgstr "雅恩德"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEKATERINBURG"
+msgstr "葉卡捷琳堡"
+
+msgid "IDS_WCL_BODY_CITYNAME_YEREVAN"
+msgstr "葉里溫"
+
+msgid "IDS_WCL_BODY_ARMENIA"
+msgstr "亞美尼亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_YUZHNO_SAKHALINSK"
+msgstr "南薩哈林斯克"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZAGREB"
+msgstr "札格拉布"
+
+msgid "IDS_WCL_BODY_CROATIA"
+msgstr "克羅埃西亞"
+
+msgid "IDS_WCL_BODY_CITYNAME_ZURICH"
+msgstr "蘇黎世"
+
+msgid "IDS_CLD_POP_EXPORTING_ING"
+msgstr "正在匯出..."
+
+msgid "IDS_CLD_POP_IMPORTING_ING"
+msgstr "正在匯入..."
+
+msgid "IDS_CLD_POP_IMPORTED"
+msgstr "已匯入"
+
+msgid "IDS_CLD_POP_EXPORTED"
+msgstr "已匯出"
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <alarm.h>
+
+#include "alm-mgr.h"
+#include "view-ring.h"
+
+static int __cal_alarm_manager_alarm_callback(alarm_id_t id, void *data)
+{
+ int r;
+ struct appdata *ad = data;
+ Eina_List *csl;
+
+ DBG("Alarm callback: %d", id);
+
+ CAL_ASSERT(ad);
+
+ csl = CALENDAR_SVC_FIND_EVENT(ad->acct_id, CAL_VALUE_INT_ALARMS_ID, (const void *)id);
+ if (!csl) {
+ ERR("Unregistered alarm ID: %d", id);
+ return 0;
+ }
+
+ r = cal_ring_add_alarm(data, csl);
+ if (r) {
+ ERR("ring add error");
+ CALENDAR_SVC_FREE_CS_LIST(&csl);
+ }
+
+ return 0;
+}
+
+int cal_alarm_manager_initialize(struct appdata *ad)
+{
+ int r;
+
+ r = alarmmgr_init(PACKAGE_NAME);
+ if (r != ALARMMGR_RESULT_SUCCESS)
+ {
+ ERR("Alarm manager init failed: %d", r);
+ return -1;
+ }
+
+ r = alarmmgr_set_cb(__cal_alarm_manager_alarm_callback, (void *)ad);
+ if (r != ALARMMGR_RESULT_SUCCESS)
+ {
+ ERR("Alarm manage set callback failed: %d", r);
+ return -1;
+ }
+
+ return 0;
+}
+
+void cal_alarm_manager_finish()
+{
+ alarmmgr_fini();
+
+ return;
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_ALARM_H__
+#define __CALENDAR_ALARM_H__
+
+#include <alarm.h>
+#include "cld.h"
+
+int cal_alarm_manager_initialize(struct appdata *ad);
+void cal_alarm_manager_finish(void);
+
+#endif /* __CALENDAR_ALARM_H__ */
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_DETAIL_H__
+#define __CALENDAR_DETAIL_H__
+
+#include "cld.h"
+
+void cal_detail_create_view(struct appdata *ad, Evas_Object *parent);
+void cal_viewer_create_view(struct appdata *ad, Evas_Object *parent, char* raw_data);
+
+
+#endif /* __CALENDAR_DETAIL_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <calendar-svc-provider.h>
+
+#include "edit-alarm.h"
+
+#define _HOUR (60)
+#define _DAY (60 * 24)
+#define _WEEK (60 * 24 * 7)
+
+#define _OFF -1
+#define _CUSTOM -2
+
+static const char *_name = "calendar/edit/alarm";
+
+struct _priv {
+ const char *name;
+ struct appdata* ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+
+ Evas_Object *sc; // scroller
+ Evas_Object *bx; // box
+
+ Evas_Object *r_grp; // radio
+ Evas_Object *r_grp_member[8];
+
+ Evas_Object *e_custom;
+ Evas_Object *b_custom;
+ int bt_idx;
+
+ Evas_Object *rect; // for scrolling
+
+ int selected;
+
+ Elm_Object_Item *pre_selected_it;
+
+ int min;
+
+ Elm_Theme *theme;
+
+ Evas_Object *ctx;
+
+ Evas_Coord_Rectangle ctx_r;
+
+ Eina_Bool is_imf_show;
+};
+
+struct __cal_edit_alarm_button {
+ const char *label;
+ int unit;
+};
+static struct __cal_edit_alarm_button cal_edit_alarm_button[] = {
+ { NULL, 1, },
+ { NULL, _HOUR, },
+ { NULL, _DAY, },
+ { NULL, _WEEK, },
+};
+
+static Elm_Entry_Filter_Limit_Size _limit_2char = {
+ .max_char_count = 2,
+};
+static Elm_Entry_Filter_Accept_Set _digit_only = {
+ .accepted = "0123456789",
+};
+
+static Elm_Genlist_Item_Class itc_seperator, itc_1text_1icon, itc_1icon, itc_2text_3icon;
+
+typedef struct __cal_edit_alarm_item_data cal_edit_alarm_item_data;
+struct __cal_edit_alarm_item_data
+{
+ struct _priv *p;
+ int type;
+ int data;
+ Elm_Object_Item *it;
+ Evas_Object *item_radio;
+};
+
+enum cal_edit_alarm_genlist_item_type{
+ _GTYPE_SPEA = -1,
+ _GTYPE_OFF,
+ _GTYPE_ON_TIME,
+ _GTYPE_5_MIN,
+ _GTYPE_15_MIN,
+ _GTYPE_1_HOUR,
+ _GTYPE_1_DAY,
+ _GTYPE_1_WEEK,
+ _GTYPE_CUSTOMIZE,
+ _GTYPE_MAX
+};
+
+
+static cal_edit_alarm_item_data cal_edit_alarm_item_datas[] =
+{
+ {NULL,_GTYPE_SPEA, 0, NULL, NULL},
+ {NULL,_GTYPE_OFF, _OFF, NULL, NULL},
+ {NULL,_GTYPE_ON_TIME, 0, NULL, NULL},
+ {NULL,_GTYPE_5_MIN, 5, NULL, NULL},
+ {NULL,_GTYPE_15_MIN, 15, NULL, NULL},
+ {NULL,_GTYPE_1_HOUR, _HOUR, NULL, NULL},
+ {NULL,_GTYPE_1_DAY, _DAY, NULL, NULL},
+ {NULL,_GTYPE_1_WEEK, _WEEK, NULL, NULL},
+ {NULL,_GTYPE_CUSTOMIZE, _CUSTOM, NULL, NULL},
+};
+
+
+static void __cal_edit_alarm_custom_ctx_selected_callback(void *data, Evas_Object *obj, void *ei);
+
+static void __cal_edit_alarm_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ struct _priv *p = data;
+
+ if (!p)
+ return;
+
+ if (p->rect)
+ evas_object_del(p->rect);
+
+ if (p->ctx) {
+ evas_object_del(p->ctx);
+ }
+
+ free(p);
+}
+
+static void __cal_edit_alarm_clicked_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p;
+ Evas_Event_Mouse_Up *ev = ei;
+ int val = (int)data;
+
+ if (ev && ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+
+
+ elm_radio_value_set(p->r_grp, val);
+ evas_object_size_hint_min_set(p->rect, 0, 0);
+ p->selected = val;
+}
+
+static void __cal_edit_alarm_set_custom(struct _priv *p)
+{
+ elm_radio_value_set(p->r_grp, _GTYPE_CUSTOMIZE);
+
+ elm_object_focus_set(p->e_custom, EINA_TRUE);
+ elm_entry_cursor_end_set(p->e_custom);
+}
+
+static void __cal_edit_alarm_custom_clicked_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+ Evas_Event_Mouse_Up *ev = ei;
+
+ if (ev && ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ __cal_edit_alarm_set_custom(p);
+}
+
+static inline void __cal_edit_alarm_set_button_label(struct _priv *p)
+{
+ elm_object_text_set(p->b_custom, _(cal_edit_alarm_button[p->bt_idx].label));
+}
+
+static void __cal_edit_alarm_custom_popup_hide_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ struct _priv* p = data;
+ p->ctx = NULL;
+ evas_object_del(obj);
+}
+
+static void __cal_edit_create_ctx_popup(struct _priv* p)
+{
+ c_retm_if(!p, "p is NULL.");
+
+ Evas_Object *ctx = p->ctx;
+
+ if (ctx)
+ evas_object_del(ctx);
+
+ p->ctx = elm_ctxpopup_add(p->ad->nv);
+ c_retm_if(!p->ctx, "elm_ctxpopup_add(p->ad->nv) returned null");
+
+ ctx = p->ctx;
+ evas_object_data_set(ctx, "priv", p);
+
+ evas_object_smart_callback_add(ctx, "dismissed", __cal_edit_alarm_custom_popup_hide_callback, p);
+ elm_ctxpopup_item_append(ctx, S_("IDS_COM_BODY_MINUTE_LC"), NULL, __cal_edit_alarm_custom_ctx_selected_callback, (const void *)0);
+ elm_ctxpopup_item_append(ctx, S_("IDS_COM_POP_HOUR_LC"), NULL, __cal_edit_alarm_custom_ctx_selected_callback, (const void *)1);
+ elm_ctxpopup_item_append(ctx, C_("IDS_COM_POP_DAY_LC"), NULL, __cal_edit_alarm_custom_ctx_selected_callback, (const void *)2);
+ elm_ctxpopup_item_append(ctx, C_("IDS_COM_POP_WEEK_LC"), NULL, __cal_edit_alarm_custom_ctx_selected_callback, (const void *)3);
+}
+
+static void __cal_edit_alarm_custom_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ struct _priv* p = data;
+ c_retm_if(!p, "p is null");
+
+ __cal_edit_create_ctx_popup(p);
+ c_retm_if(!p->ctx, "p is NULL.");
+ if (!p->is_imf_show) {
+ Evas_Coord x , y, w, h;
+ evas_object_geometry_get(p->b_custom, &x, &y, &w, &h);
+ evas_object_move(p->ctx, x+w, y);
+ } else {
+ evas_object_move(p->ctx, p->ctx_r.x+p->ctx_r.w, p->ctx_r.y);
+ }
+ evas_object_show(p->ctx);
+}
+
+static void __cal_edit_alarm_custom_ctx_selected_callback(void *data, Evas_Object *obj, void *ei)
+{
+ struct _priv* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "p is NULL.");
+
+ int index = (int)data;
+ p->bt_idx = index;
+ __cal_edit_alarm_set_button_label(p);
+
+ __cal_edit_alarm_set_custom(p);
+ p->selected = _GTYPE_CUSTOMIZE;
+ __cal_edit_alarm_custom_popup_hide_callback(p,p->ctx,ei);
+}
+
+static Evas_Object* __cal_edit_alarm_add_button(Evas_Object *parent, struct _priv *p)
+{
+ Evas_Object *bt;
+
+ bt = elm_button_add(parent);
+ if (!bt)
+ return NULL;
+
+ elm_object_focus_allow_set(bt, EINA_FALSE);
+ evas_object_propagate_events_set(bt, EINA_FALSE);
+ evas_object_smart_callback_add(bt, "clicked", __cal_edit_alarm_custom_button_callback, p);
+
+ return bt;
+}
+
+static inline void __cal_edit_alarm_get_week_str(int week, char *buf, int sz)
+{
+ snprintf(buf, sz, "%d %s %s", week,C_("IDS_COM_POP_WEEK_LC"), C_("IDS_CLD_BODY_BEFORE_LC"));
+}
+
+static inline void __cal_edit_alarm_get_day_str(int day, char *buf, int sz)
+{
+ snprintf(buf, sz, "%d %s %s", day, C_("IDS_COM_POP_DAY_LC"), C_("IDS_CLD_BODY_BEFORE_LC"));
+}
+
+static inline void __cal_edit_alarm_get_hour_str(int hour, char *buf, int sz)
+{
+ snprintf(buf, sz, "%d %s %s", hour, S_("IDS_COM_POP_HOUR_LC"), C_("IDS_CLD_BODY_BEFORE_LC"));
+}
+
+static inline void __cal_edit_alarm_get_min_str(int min, char *buf, int sz)
+{
+ snprintf(buf, sz, "%d %s %s", min, S_("IDS_COM_BODY_MINUTE_LC"), C_("IDS_CLD_BODY_BEFORE_LC"));
+}
+
+static inline void __cal_edit_alarm_get_str(int min, char *buf, int sz)
+{
+ if ((min % _WEEK) == 0) {
+ __cal_edit_alarm_get_week_str(min / _WEEK, buf, sz);
+ return;
+ }
+
+ if ((min % _DAY) == 0) {
+ __cal_edit_alarm_get_day_str(min / _DAY, buf, sz);
+ return;
+ }
+
+ if ((min % _HOUR) == 0) {
+ __cal_edit_alarm_get_hour_str(min / _HOUR, buf, sz);
+ return;
+ }
+
+ __cal_edit_alarm_get_min_str(min, buf, sz);
+}
+
+void cal_edit_alarm_get_alarm_str(int min, char *buf, int sz)
+{
+ if (!buf || sz < 0)
+ return;
+
+ if (min < 0) {
+ g_snprintf(buf,sz,"%s",S_("IDS_COM_BODY_OFF"));
+ return;
+ }
+
+ if (min == 0) {
+ g_snprintf(buf,sz,"%s", C_("IDS_CLD_BODY_ON_TIME"));
+ return;
+ }
+
+ __cal_edit_alarm_get_str(min, buf, sz);
+}
+
+int cal_edit_alarm_get_min(int tick, cal_sch_remind_tick_unit_t unit)
+{
+ int min;
+
+ min = tick;
+
+ switch (unit) {
+ case CAL_SCH_TIME_UNIT_MONTH:
+ min = min * _DAY * 30; // TODO: BUG!! not used!!
+ break;
+ case CAL_SCH_TIME_UNIT_WEEK:
+ min = min * _WEEK;
+ break;
+ case CAL_SCH_TIME_UNIT_DAY:
+ min = min * _DAY;
+ break;
+ case CAL_SCH_TIME_UNIT_HOUR:
+ min = min * _HOUR;
+ break;
+ default: // CAL_SCH_TIME_UNIT_MIN
+ break;
+ }
+
+ return min;
+}
+
+void cal_edit_alarm_get_tick(int min, int *tick, cal_sch_remind_tick_unit_t *unit)
+{
+ if (!tick || !unit)
+ return;
+
+ if (min == -1) {
+ *tick = -1;
+ *unit = CAL_SCH_TIME_UNIT_MIN;
+ return;
+ }
+
+ if ((min % _WEEK) == 0) {
+ *tick = min / _WEEK;
+ *unit = CAL_SCH_TIME_UNIT_WEEK;
+ return;
+ }
+
+ if ((min % _DAY) == 0) {
+ *tick = min / _DAY;
+ *unit = CAL_SCH_TIME_UNIT_DAY;
+ return;
+ }
+
+ if ((min % _HOUR) == 0) {
+ *tick = min / _HOUR;
+ *unit = CAL_SCH_TIME_UNIT_HOUR;
+ return;
+ }
+
+ *tick = min;
+ *unit = CAL_SCH_TIME_UNIT_MIN;
+}
+
+static char *__cal_edit_alarm_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ cal_edit_alarm_item_data *item_data = (cal_edit_alarm_item_data*)data;
+ int type = (int)item_data->type;
+ char buf[1024] = {0};
+
+ if (!CAL_STRCMP(part, "elm.text"))
+ {
+ switch ( type)
+ {
+ case _GTYPE_OFF:
+ case _GTYPE_ON_TIME:
+ case _GTYPE_5_MIN:
+ case _GTYPE_15_MIN:
+ case _GTYPE_1_HOUR:
+ case _GTYPE_1_DAY:
+ case _GTYPE_1_WEEK:
+ cal_edit_alarm_get_alarm_str(item_data->data, buf, sizeof(buf));
+ break;
+ case _GTYPE_CUSTOMIZE:
+ //return strdup(C_("IDS_CLD_BODY_CUSTOMIZE_ATNT"));
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ if(type == _GTYPE_CUSTOMIZE)
+ {
+ return strdup(C_("IDS_CLD_BODY_BEFORE_LC"));
+ }
+ }
+
+ return strdup(buf);
+}
+
+static void __cal_edit_alarm_genlist_item_delete_callback(void *data, Evas_Object *obj)
+{
+ CAL_ASSERT(data);
+ cal_edit_alarm_item_data*item_data = (cal_edit_alarm_item_data*)data;
+
+ CAL_ASSERT(item_data->p);
+ struct _priv* p = item_data->p;
+
+ CAL_ASSERT(p->r_grp_member);
+ p->r_grp_member[item_data->type] = NULL;
+
+ free(item_data);
+}
+
+static Eina_Bool __cal_edit_alarm_get_genlist_item_state(void *data, Evas_Object *obj, const char *part)
+{
+ return EINA_FALSE;
+}
+
+static void __cal_edit_alarm_set_radio_group(struct _priv *p, Evas_Object *rd, int val)
+{
+ if(!val)
+ {
+ p->r_grp = rd;
+ elm_radio_group_add(p->r_grp_member[1], p->r_grp);
+ elm_radio_group_add(p->r_grp_member[2], p->r_grp);
+ elm_radio_group_add(p->r_grp_member[3], p->r_grp);
+ elm_radio_group_add(p->r_grp_member[4], p->r_grp);
+ elm_radio_group_add(p->r_grp_member[5], p->r_grp);
+ elm_radio_group_add(p->r_grp_member[6], p->r_grp);
+ elm_radio_group_add(p->r_grp_member[7], p->r_grp);
+ }
+
+ elm_radio_group_add(rd, p->r_grp);
+
+}
+
+static Evas_Object* __cal_edit_alarm_add_radio(Evas_Object *dg, int val, struct _priv *p, cal_edit_alarm_item_data *item_data)
+{
+ Evas_Object *ly;
+ Evas_Object *rd;
+
+ ly = cal_util_add_layout(dg, "dialoguegroup/radio");
+ if (!ly)
+ return NULL;
+
+ char buf[1024] = {0};
+
+ cal_edit_alarm_get_alarm_str(item_data->data, buf, sizeof(buf));
+
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(ly), "text", buf);
+ evas_object_show(ly);
+ evas_object_data_set(ly, "priv", p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_UP, __cal_edit_alarm_clicked_callback, (void *)val);
+
+ rd = elm_radio_add(dg);
+ if (!rd) {
+ evas_object_del(ly);
+ return NULL;
+ }
+
+ elm_radio_state_value_set(rd, val);
+ elm_object_part_content_set(ly, "content", rd);
+ item_data->item_radio = rd;
+ *(p->r_grp_member + val) = rd;
+
+ __cal_edit_alarm_set_radio_group(p, rd, val);
+
+ return ly;
+}
+
+static void __cal_edit_alarm_entry_unfocused(void *data, Evas_Object *obj, void *event_info)
+{
+ struct _priv *p = (struct _priv *)data;
+
+ char min[8] = {0,};
+ snprintf(min, 7, "%d", p->min);
+ elm_entry_entry_set(p->e_custom, min);
+}
+
+static void __cal_edit_alarm_title_object_visible_changed(void *data, Evas_Object *obj, void *event_info)
+{
+ struct _priv *p = (struct _priv *)data;
+ elm_object_focus_set(p->e_custom, EINA_FALSE);
+}
+
+static void __cal_edit_input_panel_event_callback(void *data, Ecore_IMF_Context *imf_context, int value)
+{
+ c_retm_if(!data, "data is null");
+ struct _priv *p = data;
+
+ switch (value) {
+ case ECORE_IMF_INPUT_PANEL_STATE_SHOW:
+ c_retm_if(!p->b_custom, "p->b_custom is null");
+ cal_util_get_geometry(&p->ctx_r, p->b_custom);
+ p->is_imf_show = EINA_TRUE;
+ break;
+ case ECORE_IMF_INPUT_PANEL_STATE_HIDE:
+ p->is_imf_show = EINA_FALSE;
+ break;
+ }
+}
+
+static Evas_Object* __cal_edit_alarm_add_entry(Evas_Object *parent, struct _priv *p, cal_edit_alarm_item_data *item_data)
+{
+ Evas_Object *e;
+ Ecore_IMF_Context *ic;
+
+ e = elm_entry_add(parent);
+ if (!e)
+ return NULL;
+
+ elm_object_style_set(e, "font_color_black");
+ elm_entry_single_line_set(e, EINA_TRUE);
+ elm_entry_markup_filter_append(e, elm_entry_filter_limit_size, &_limit_2char);
+ elm_entry_markup_filter_append(e, elm_entry_filter_accept_set, &_digit_only);
+ elm_entry_input_panel_layout_set(e, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
+ elm_entry_context_menu_disabled_set(e, EINA_TRUE);
+
+ ic = elm_entry_imf_context_get(e);
+ if (!ic)
+ return NULL;
+
+ ecore_imf_context_input_panel_event_callback_add(ic, ECORE_IMF_INPUT_PANEL_STATE_EVENT, __cal_edit_input_panel_event_callback, p);
+
+ evas_object_smart_callback_add(e, "unfocused", __cal_edit_alarm_entry_unfocused, p);
+ evas_object_smart_callback_add(p->parent, "titleobj,visible,changed", __cal_edit_alarm_title_object_visible_changed, p);
+ return e;
+}
+
+static void __cal_edit_alarm_entry_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ cal_edit_alarm_item_data *item_data = (cal_edit_alarm_item_data *)data;
+ struct _priv *p = item_data->p;
+ const char *s = elm_entry_entry_get(p->e_custom);
+ p->min = atoi(s);
+}
+
+static Evas_Object* __cal_edit_alarm_add_custom_text_object(struct _priv *p, Evas_Object *dg, const char *text)
+{
+ Evas_Object *entry = NULL;
+
+ if (!text || text[0] == '\0')
+ return entry;
+
+ entry = elm_entry_add(dg);
+ CAL_ASSERT(entry);
+
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+ evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_EXPAND);
+ elm_entry_editable_set(entry, EINA_FALSE);
+ elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+ elm_entry_autocapital_type_set(entry, EINA_TRUE);
+
+ elm_entry_entry_set(entry, text);
+
+ return entry;
+}
+
+static Evas_Object* __cal_edit_alarm_add_custom_layout(Evas_Object *dg, const char *text, int val, struct _priv *p, cal_edit_alarm_item_data *item_data)
+{
+ Evas_Object *ly;
+ Evas_Object *rd;
+ Evas_Object *entry;
+ Evas_Object *bt;
+ Evas_Object *entry_custom;
+ Evas_Object *entry_before;
+
+ ly = cal_util_add_layout(dg, "dialoguegroup/alarm/custom2");
+ if (!ly)
+ return NULL;
+
+ entry_custom = __cal_edit_alarm_add_custom_text_object(p, dg, text);
+ if (!entry_custom)
+ {
+ evas_object_del(ly);
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "text", entry_custom);
+
+ entry_before = __cal_edit_alarm_add_custom_text_object(p, dg, C_("IDS_CLD_BODY_BEFORE_LC"));
+ if (!entry_before)
+ {
+ evas_object_del(ly);
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "text2", entry_before);
+
+ evas_object_show(ly);
+ evas_object_data_set(ly, "priv", p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_UP, __cal_edit_alarm_custom_clicked_callback, p);
+
+ rd = elm_radio_add(dg);
+ if (!rd)
+ {
+ evas_object_del(ly);
+ return NULL;
+ }
+
+ elm_radio_state_value_set(rd, val);
+ elm_object_part_content_set(ly, "content", rd);
+ item_data->item_radio = rd;
+ *(p->r_grp_member + val) = rd;
+
+ __cal_edit_alarm_set_radio_group(p, rd, val);
+
+ bt = __cal_edit_alarm_add_button(ly, p);
+ if (!bt)
+ {
+ evas_object_del(ly);
+ return NULL;
+ }
+
+ elm_object_style_set(bt, "sweep");
+ elm_object_part_content_set(ly, "button", bt);
+ p->b_custom = bt;
+ __cal_edit_alarm_set_button_label(p);
+
+ entry = __cal_edit_alarm_add_entry(ly, p, item_data);
+ if (!entry)
+ {
+ evas_object_del(ly);
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "input_sw", entry);
+ evas_object_smart_callback_add(entry, "changed", __cal_edit_alarm_entry_changed_callback, item_data);
+ p->e_custom = entry;
+
+ return ly;
+}
+
+
+static void __cal_edit_alarm_set_selected_state(cal_edit_alarm_item_data *item_data)
+{
+ struct _priv *p = item_data->p;
+ elm_radio_value_set(p->r_grp, p->selected);
+}
+
+static Evas_Object *__cal_edit_alarm_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ Evas_Object *e_obj = NULL;
+ char buf[16];
+ cal_edit_alarm_item_data *item_data = (cal_edit_alarm_item_data*)data;
+ struct _priv *p = item_data->p;
+
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ switch ( item_data->type )
+ {
+ case _GTYPE_OFF:
+ case _GTYPE_ON_TIME:
+ case _GTYPE_5_MIN:
+ case _GTYPE_15_MIN:
+ case _GTYPE_1_HOUR:
+ case _GTYPE_1_DAY:
+ case _GTYPE_1_WEEK:
+ e_obj = __cal_edit_alarm_add_radio(obj, item_data->type, p, item_data);
+ __cal_edit_alarm_set_selected_state(item_data);
+ break;
+ case _GTYPE_CUSTOMIZE:
+ e_obj =__cal_edit_alarm_add_custom_layout(obj, C_("IDS_COM_BODY_CUSTOMISE"), item_data->type, p, item_data);
+ __cal_edit_alarm_set_selected_state(item_data);
+ __cal_edit_alarm_set_button_label(p);
+ snprintf(buf, sizeof(buf), "%d", p->min);
+ elm_entry_entry_set(p->e_custom, buf);
+ break;
+ default:
+ break;
+ }
+ }
+ return e_obj;
+}
+
+static void __cal_edit_alarm_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ cal_edit_alarm_item_data *item_data;
+ Elm_Object_Item *it = elm_genlist_selected_item_get(obj);
+
+ if (it)
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ item_data = (cal_edit_alarm_item_data *)elm_object_item_data_get(it);
+
+ int type = item_data->type;
+ struct _priv *p = item_data->p;
+
+ switch ( type )
+ {
+ case _GTYPE_OFF:
+ case _GTYPE_ON_TIME:
+ case _GTYPE_5_MIN:
+ case _GTYPE_15_MIN:
+ case _GTYPE_1_HOUR:
+ case _GTYPE_1_DAY:
+ case _GTYPE_1_WEEK:
+ case _GTYPE_CUSTOMIZE:
+ if(_GTYPE_CUSTOMIZE != type)
+ elm_object_focus_set(p->e_custom, EINA_FALSE);
+ elm_radio_value_set(p->r_grp, type);
+ p->selected = type;
+ break;
+ default:
+ break;
+ }
+
+ return;
+}
+
+static void __cal_edit_alarm_append_genlist_item(Evas_Object *genlist, struct _priv *p)
+{
+ int i;
+ cal_edit_alarm_item_data *item_data;
+ for(i = 0; i < sizeof(cal_edit_alarm_item_datas)/sizeof(cal_edit_alarm_item_datas[0]); i++)
+ {
+ CAL_CALLOC(item_data, 1, cal_edit_alarm_item_data);
+
+ item_data->p = p;
+ item_data->type = cal_edit_alarm_item_datas[i].type;
+ item_data->data = cal_edit_alarm_item_datas[i].data;
+
+ if(_GTYPE_SPEA == item_data->type)
+ {
+ item_data->it = elm_genlist_item_append(genlist, &itc_seperator, (void*)item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_alarm_genlist_item_select_callback, NULL);
+ elm_genlist_item_select_mode_set(item_data->it, ELM_OBJECT_SELECT_MODE_NONE);
+ }
+ else
+ {
+ if(_GTYPE_CUSTOMIZE == item_data->type)
+ {
+ item_data->it = elm_genlist_item_append(genlist, &itc_1icon, (void*)item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_alarm_genlist_item_select_callback, NULL);
+ }
+ else
+ {
+ item_data->it = elm_genlist_item_append(genlist, &itc_1text_1icon, (void*)item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_alarm_genlist_item_select_callback, NULL);
+ }
+ }
+ }
+}
+
+static int __cal_edit_alarm_add_alarm_content(struct _priv *p)
+{
+ CAL_ASSERT(p);
+
+ p->sc = elm_genlist_add(p->ly);
+ CAL_ASSERT(p->sc);
+
+ Evas_Object* cf;
+
+ if(NULL != p->theme)
+ elm_object_theme_set(p->sc, p->theme);
+
+ itc_seperator.item_style = "dialogue/seperator";
+ itc_seperator.func.text_get = NULL;
+ itc_seperator.func.state_get = __cal_edit_alarm_get_genlist_item_state;
+ itc_seperator.func.del = __cal_edit_alarm_genlist_item_delete_callback;
+
+ itc_1text_1icon.item_style = "dialogue/1text.1icon.2";
+ itc_1text_1icon.func.del = __cal_edit_alarm_genlist_item_delete_callback;
+ itc_1text_1icon.func.content_get = __cal_edit_alarm_get_genlist_item_icon;
+ itc_1text_1icon.func.text_get = __cal_edit_alarm_get_genlist_item_label;
+
+ itc_1icon.item_style = "dialogue/1icon";
+ itc_1icon.func.del = __cal_edit_alarm_genlist_item_delete_callback;
+ itc_1icon.func.content_get = __cal_edit_alarm_get_genlist_item_icon;
+ itc_1icon.func.text_get = __cal_edit_alarm_get_genlist_item_label;
+
+ itc_2text_3icon.item_style = "dialogue.2text.3icon.2";
+ itc_2text_3icon.func.text_get = __cal_edit_alarm_get_genlist_item_label;
+ itc_2text_3icon.func.del = __cal_edit_alarm_genlist_item_delete_callback;
+ itc_2text_3icon.func.content_get = __cal_edit_alarm_get_genlist_item_icon;
+
+ __cal_edit_alarm_append_genlist_item(p->sc, p);
+
+ cf = elm_conformant_add(p->ad->win);
+ CAL_ASSERT(cf);
+
+ evas_object_size_hint_weight_set(cf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(cf);
+ elm_object_content_set(cf, p->sc);
+ elm_object_style_set(cf, "internal_layout");
+ elm_object_part_content_set(p->ly, "sw", cf);
+
+ return 0;
+}
+
+static void __cal_edit_alarm_set_radio(struct _priv *p, int min)
+{
+ CAL_ASSERT(p);
+
+ switch(min)
+ {
+ case _OFF:
+ p->selected = cal_edit_alarm_item_datas[1].type;
+ return;
+ case 0:
+ p->selected = cal_edit_alarm_item_datas[2].type;
+ return;
+ case 5:
+ p->selected = cal_edit_alarm_item_datas[3].type;
+ return;
+ case 15:
+ p->selected = cal_edit_alarm_item_datas[4].type;
+ return;
+ case _HOUR:
+ p->selected = cal_edit_alarm_item_datas[5].type;
+ return;
+ case _DAY:
+ p->selected = cal_edit_alarm_item_datas[6].type;
+ return;
+ case _WEEK:
+ p->selected = cal_edit_alarm_item_datas[7].type;
+ return;
+ default:
+ p->selected = cal_edit_alarm_item_datas[8].type;
+ break;
+ }
+
+ if ((min % _WEEK) == 0)
+ {
+ p->bt_idx = 3;
+ min = min / _WEEK;
+ }
+ else if ((min % _DAY) == 0)
+ {
+ p->bt_idx = 2;
+ min = min / _DAY;
+ }
+ else if ((min % _HOUR) == 0)
+ {
+ p->bt_idx = 1;
+ min = min / _HOUR;
+ }
+ else
+ p->bt_idx = 0;
+
+ p->min = min;
+}
+
+int cal_edit_alarm_get_alarm(Evas_Object *ly)
+{
+ struct _priv *p;
+ int r;
+
+ CAL_ASSERT(ly);
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name))
+ {
+ ERR("Invalid object");
+ return -1;
+ }
+
+ if (p->selected == _GTYPE_CUSTOMIZE )
+ {
+ const char *s = elm_entry_entry_get(p->e_custom);
+ r = atoi(s);
+ r = r * cal_edit_alarm_button[p->bt_idx].unit;
+ }
+ else
+ r = cal_edit_alarm_item_datas[p->selected+1].data;
+
+ return r;
+}
+
+Evas_Object *cal_edit_alarm_create_view(Evas_Object *parent, int min, struct appdata* ad)
+{
+ struct _priv *p;
+ Evas_Object *ly;
+ int r;
+
+ CAL_ASSERT(parent);
+
+ CAL_CALLOC(p, 1, struct _priv);
+
+ p->name = _name;
+ p->parent = parent;
+ p->ad = ad;
+ p->r_grp = NULL;
+ p->theme = ad->theme;
+
+ ly = cal_util_add_layout(parent, "edit");
+ if (!ly)
+ {
+ free(p);
+ return NULL;
+ }
+ p->ly = ly;
+
+ evas_object_data_set(ly, "priv", p);
+
+ cal_edit_alarm_button[0].label = S_("IDS_COM_BODY_MINUTE_LC");
+ cal_edit_alarm_button[1].label = S_("IDS_COM_POP_HOUR_LC");
+ cal_edit_alarm_button[2].label = C_("IDS_COM_POP_DAY_LC");
+ cal_edit_alarm_button[3].label = C_("IDS_COM_POP_WEEK_LC");
+
+ __cal_edit_alarm_set_radio(p, min);
+
+ r = __cal_edit_alarm_add_alarm_content(p);
+ if (r)
+ {
+ evas_object_del(ly);
+ free(p);
+ return NULL;
+ }
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_edit_alarm_delete_layout, p);
+ return ly;
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_EDIT_ALARM_H__
+#define __CALENDAR_EDIT_ALARM_H__
+
+#include "cld.h"
+
+/* return minutes: -1 = off, 0 = on time, ... */
+int cal_edit_alarm_get_alarm(Evas_Object *ly);
+
+void cal_edit_alarm_get_alarm_str(int min, char *buf, int sz);
+int cal_edit_alarm_get_min(int tick, cal_sch_remind_tick_unit_t unit);
+void cal_edit_alarm_get_tick(int min, int *tick, cal_sch_remind_tick_unit_t *unit);
+
+/* BEGIN: Added by Zhong Yuan, 2011/3/25 */
+Evas_Object *cal_edit_alarm_create_view(Evas_Object *parent, int min, struct appdata* ad);
+int cal_edit_alarm_get_alarm(Evas_Object *ly);
+
+
+/* END: Added by Zhong Yuan, 2011/3/25 PN: */
+
+
+// TODO: add more...
+
+#endif /* __CALENDAR_EDIT_ALARM_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include "edit-repeat.h"
+
+static const char *_name = "calendar/edit/repeat";
+
+struct _priv {
+ const char *name;
+ struct appdata* ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+
+ Evas_Object *win;
+
+ Evas_Object *end_date_ly[3];
+ Evas_Object *nv;
+ Evas_Object *ly_date;
+
+ int *occurrency;
+ struct tm *start_date_time;
+ struct tm *repeat_end_date_time;
+ int *is_all_day;
+
+ Evas_Object *box;
+
+ Evas_Object *repeat_radio_group;
+ Evas_Object *repeat_radio_group_member[5];
+ Evas_Object *repeat_until_radio_group;
+ Evas_Object *day_sel;
+
+ Evas_Object *times;
+ Evas_Object *end_date;
+
+ Evas_Object *scroll_win;
+ Evas_Object *rect;
+
+ Eina_Bool is_repeat_type;
+
+ int enter;
+ int selected_repeat_radio;
+ int prev_selected_repeat_radio;
+ int selected_repeat_until_radio;
+ int flag;
+ int time;
+
+ Elm_Theme *theme;
+
+ cal_repeat_term_t repeat;
+};
+
+static int __cal_edit_repeat_dayselector_index[] = {
+ ELM_DAYSELECTOR_SUN,
+ ELM_DAYSELECTOR_MON,
+ ELM_DAYSELECTOR_TUE,
+ ELM_DAYSELECTOR_WED,
+ ELM_DAYSELECTOR_THU,
+ ELM_DAYSELECTOR_FRI,
+ ELM_DAYSELECTOR_SAT,
+};
+
+static char *__cal_edit_repeat_repeat_str[] = {
+ [CAL_REPEAT_NONE] = NULL,
+ [CAL_REPEAT_EVERY_DAY] = NULL,
+ [CAL_REPEAT_EVERY_WEEK] = NULL,
+ [CAL_REPEAT_EVERY_MONTH] = NULL,
+ [CAL_REPEAT_EVERY_YEAR] = NULL,
+};
+
+static int __cal_edit_repeat_repeat_index[] = {
+ CAL_REPEAT_NONE,
+ CAL_REPEAT_EVERY_DAY,
+ CAL_REPEAT_EVERY_WEEK,
+ CAL_REPEAT_EVERY_MONTH,
+ CAL_REPEAT_EVERY_YEAR,
+};
+
+static const char *__cal_edit_repeat_repeat_until_str[] = {
+ [CAL_REPEAT_NONE] = NULL,
+ [CAL_REPEAT_EVERY_DAY] = NULL,
+ [CAL_REPEAT_EVERY_WEEK] = "",
+};
+
+static int __cal_edit_repeat_repeat_until_index[] = {
+ CAL_REPEAT_NONE,
+ CAL_REPEAT_EVERY_DAY,
+ CAL_REPEAT_EVERY_WEEK,
+};
+
+static Elm_Entry_Filter_Limit_Size _limit_2char = {
+ .max_char_count = 2,
+};
+static Elm_Entry_Filter_Accept_Set _digit_only = {
+ .accepted = "0123456789",
+};
+
+static Elm_Genlist_Item_Class itc_seperator, itc_1icon_1text, itc_1icon;
+
+typedef struct __cal_edit_repeat_item_data cal_edit_repeat_item_data;
+struct __cal_edit_repeat_item_data
+{
+ struct _priv *p;
+ int repeat_index;
+ int repeat_type;
+ Elm_Object_Item *it;
+ Evas_Object *item_radio;
+};
+
+static unsigned short days_table[12] = {
+ 0,
+ 31,
+ 31 + 28,
+ 31 + 28 + 31,
+ 31 + 28 + 31 + 30,
+ 31 + 28 + 31 + 30 + 31,
+ 31 + 28 + 31 + 30 + 31 + 30,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
+};
+
+#define is_leap_year_tm(y) (((y+1900)%4 == 0 && ((y+1900)%100 != 0 || (y+1900)%400 == 0))? 1 : 0)
+
+static int __cal_edit_repeat_get_day_of_week(struct tm* tm)
+{
+ CAL_ASSERT(tm);
+ int days = 0;
+ int year = 0;
+ int month = 0;
+
+ days = tm->tm_mday;
+ year = tm->tm_year+1900;
+ month = tm->tm_mon;
+
+ days=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400 + days_table[month] + tm->tm_mday + ( (month>1) ? is_leap_year_tm(year) : 0 ) ;
+ return days%7;
+}
+
+static void __cal_edit_repeat_set_weekly_selected_days(struct _priv *p, int val)
+{
+ int i, j;
+ int nds = 0;
+ Eina_Bool b;
+ if(NULL == p)
+ {
+ return;
+ }
+ if(val != CAL_REPEAT_EVERY_WEEK)
+ {
+ for (i = 0; i < sizeof(__cal_edit_repeat_dayselector_index)/sizeof(__cal_edit_repeat_dayselector_index[0]); i++)
+ {
+ b = elm_dayselector_day_selected_get(p->day_sel, __cal_edit_repeat_dayselector_index[i]);
+ if (b == EINA_TRUE)
+ {
+ elm_dayselector_day_selected_set(p->day_sel, __cal_edit_repeat_dayselector_index[i], EINA_FALSE);
+ }
+ }
+ }
+ else
+ {
+ for (j = 0; j < sizeof(__cal_edit_repeat_dayselector_index)/sizeof(__cal_edit_repeat_dayselector_index[0]); j++)
+ {
+ b = elm_dayselector_day_selected_get(p->day_sel, __cal_edit_repeat_dayselector_index[j]);
+ if (b == EINA_TRUE)
+ {
+ nds++;
+ }
+ }
+ if(0 == nds)
+ {
+ elm_dayselector_day_selected_set(p->day_sel, __cal_edit_repeat_get_day_of_week(p->start_date_time), EINA_TRUE);
+ }
+ }
+}
+
+static void __cal_edit_repeat_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ struct _priv *p = data;
+
+ free(p);
+}
+
+static void __cal_edit_repeat_clicked_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p;
+ Evas_Event_Mouse_Up *ev = ei;
+ int val = (int)data;
+
+ if (ev && ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ elm_radio_value_set(p->repeat_radio_group, val);
+ p->prev_selected_repeat_radio = p->selected_repeat_radio;
+ p->selected_repeat_radio = val;
+
+ __cal_edit_repeat_set_weekly_selected_days(p ,val);//added by zhongyuan
+}
+
+static void __cal_edit_repeat_entry_clicked_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p;
+ Evas_Event_Mouse_Up *ev = ei;
+ int val = (int)data;
+ const char* str = NULL;
+
+ if (ev && ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ elm_radio_value_set(p->repeat_until_radio_group, val);
+ if(1 == val)
+ {
+ elm_object_focus_set(p->times, EINA_TRUE);
+ elm_entry_cursor_end_set(p->times);
+ }
+ if(!elm_radio_value_get(p->repeat_radio_group))
+ {
+ elm_radio_value_set(p->repeat_radio_group, 1);
+ p->selected_repeat_radio = 1;
+ }
+ p->selected_repeat_until_radio = val;
+
+ str = elm_entry_entry_get(p->times);
+ if (!str || str[0] == '\0')
+ return;
+
+ *(p->occurrency) = atoi(str);
+}
+
+
+static inline Evas_Object* __cal_edit_repeat_add_layout(Evas_Object *dg, int val)
+{
+ Evas_Object *ly;
+
+ if (val == CAL_REPEAT_EVERY_WEEK)
+ return cal_util_add_layout(dg, "dialoguegroup/weekly");
+
+ ly = elm_layout_add(dg);
+ if (ly)
+ elm_layout_theme_set(ly, "dialogueitem", "base", "button_with_text");
+ return ly;
+}
+
+static void __cal_edit_repeat_unset_day_selector(struct _priv *p)
+{
+ c_retm_if(!p, "p is null");
+
+ int j;
+ int nds = 0;
+ Eina_Bool b;
+
+ for (j = 0; j < sizeof(__cal_edit_repeat_dayselector_index)/sizeof(__cal_edit_repeat_dayselector_index[0]); j++) {
+ b = elm_dayselector_day_selected_get(p->day_sel, __cal_edit_repeat_dayselector_index[j]);
+ if (b)
+ nds++;
+ }
+ if (nds == 0) {
+ elm_radio_value_set(p->repeat_radio_group, CAL_REPEAT_NONE);
+ p->prev_selected_repeat_radio = p->selected_repeat_radio;
+ p->selected_repeat_radio = CAL_REPEAT_NONE;
+ }
+}
+
+static void __cal_edit_repeat_day_selector_changed_callback(void *data, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+ int j;
+ int nds = 0;
+ Eina_Bool b;
+
+ elm_radio_value_set(p->repeat_radio_group, CAL_REPEAT_EVERY_WEEK);
+
+ if (p->prev_selected_repeat_radio != CAL_REPEAT_EVERY_WEEK
+ && p->selected_repeat_radio == CAL_REPEAT_EVERY_WEEK) {
+ for (j = 0; j < sizeof(__cal_edit_repeat_dayselector_index)/sizeof(__cal_edit_repeat_dayselector_index[0]); j++) {
+
+ b = elm_dayselector_day_selected_get(p->day_sel, __cal_edit_repeat_dayselector_index[j]);
+
+ if (b)
+ nds++;
+
+ if (1 < nds)
+ elm_dayselector_day_selected_set(p->day_sel, __cal_edit_repeat_dayselector_index[0], EINA_FALSE);
+ else if(nds == 0)
+ elm_dayselector_day_selected_set(p->day_sel, __cal_edit_repeat_dayselector_index[0], EINA_TRUE);
+ }
+ }
+
+ __cal_edit_repeat_unset_day_selector(p);
+}
+
+static Evas_Object* __cal_edit_repeat_add_day_selector(Evas_Object *dg, struct _priv *p)
+{
+ c_retvm_if(!dg, NULL, "dg is null");
+ c_retvm_if(!p, NULL, "p is null");
+
+ Evas_Object *ds = elm_dayselector_add(dg);
+ c_retvm_if(!ds, NULL, "ds is null");
+
+ evas_object_smart_callback_add(ds, "dayselector,changed", __cal_edit_repeat_day_selector_changed_callback, p);
+
+ evas_object_propagate_events_set(ds, EINA_FALSE);
+
+ return ds;
+}
+
+static cal_repeat_term_t __cal_edit_repeat_set_week(cal_repeat_term_t r, Evas_Object *ds, int *flag)
+{
+ int f;
+ int i;
+ Eina_Bool b;
+
+ if (r != CAL_REPEAT_EVERY_WEEK)
+ return r;
+
+ if (!ds || !flag)
+ return CAL_REPEAT_NONE;
+
+ f = 0;
+ for (i = 0; i < sizeof(__cal_edit_repeat_dayselector_index)/sizeof(__cal_edit_repeat_dayselector_index[0]); i++)
+ {
+ b = elm_dayselector_day_selected_get(ds, __cal_edit_repeat_dayselector_index[i]);
+ if (b == EINA_TRUE)
+ f |= (1 << i);
+ }
+ *flag = f;
+
+ if (f == 0)
+ return CAL_REPEAT_NONE;
+
+ if (f == 0x7f)
+ return CAL_REPEAT_EVERY_DAY;
+
+ return r;
+}
+
+cal_repeat_term_t cal_edit_repeat_get_repeat(Evas_Object *ly, int *flag, int *num, struct tm *repeat_end_date_time, int *occurrency)
+{
+ struct _priv *p;
+ cal_repeat_term_t r;
+ char* entry = NULL;
+
+ CAL_ASSERT(ly);
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name))
+ {
+ ERR("Invalid object");
+ return -1;
+ }
+
+
+ if (p->repeat_until_radio_group)
+ {
+ r = p->selected_repeat_until_radio;
+ *num = r;
+
+ switch(r)
+ {
+ case 0:
+ repeat_end_date_time->tm_year = 2037 - 1900;
+ repeat_end_date_time->tm_mon = 12 - 1;
+ repeat_end_date_time->tm_mday = 31;
+ repeat_end_date_time->tm_hour = 23;
+ repeat_end_date_time->tm_min = 59;
+ repeat_end_date_time->tm_sec = 59;
+ break;
+
+ case 1:
+ entry = (char*)elm_entry_entry_get(p->times);
+ if(entry)
+ *occurrency = atoi(entry);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ r = CAL_REPEAT_NONE;
+ if (p->repeat_radio_group)
+ r = p->selected_repeat_radio;
+
+ r = __cal_edit_repeat_set_week(r, p->day_sel, flag);
+ return r;
+}
+
+static inline void __cal_edit_repeat_get_week_str(cal_repeat_term_t term, int flag, char *buf, int sz)
+{
+ int i;
+ int idx;
+ time_t t = time(NULL);
+ struct tm tm;
+ struct tm *returned_tm = localtime_r(&t, &tm);
+ if(!returned_tm)
+ {
+ ERR("localtime return null");
+ return;
+ }
+
+ if (flag == 0x41)
+ {
+ CAL_STRNCPY(buf, _("Every weekends"), sz);
+ buf[sz-1] = '\0';
+ return;
+ }
+
+ if (flag == 0x3e)
+ {
+ CAL_STRNCPY(buf, _("Every weekdays"), sz);
+ buf[sz-1] = '\0';
+ return;
+ }
+
+ idx = 0;
+ cal_util_update_tm_day(&tm,(-1)*tm.tm_wday);
+
+ for (i = 0; i < 7; i++)
+ {
+ if ((flag >> i) & 1)
+ {
+ if (idx != 0)
+ {
+ CAL_STRNCAT(&buf[idx], ", ", sz - idx);
+ idx += sizeof(", ") - 1;
+ }
+ idx += cal_util_get_time_text(&buf[idx], sz - idx, CAL_UTIL_DATE_FORMAT_2, NULL, &tm);
+ }
+ cal_util_update_tm_day(&tm,1);
+ }
+}
+
+void cal_edit_repeat_get_repeat_str(cal_repeat_term_t term, int flag, char *buf, int sz)
+{
+ const char *s;
+
+ if (term == CAL_REPEAT_EVERY_WEEK && flag != 0) {
+ __cal_edit_repeat_get_week_str(term, flag, buf, sz);
+ return;
+ }
+
+ s = __cal_edit_repeat_repeat_str[term];
+ if (CAL_REPEAT_NONE == term || !s)
+ {
+ s = S_("IDS_COM_BODY_OFF");
+ }
+
+ CAL_STRNCPY(buf, _(s), sz);
+ buf[sz-1] = '\0';
+}
+
+static char *__cal_edit_repeat_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ CAL_ASSERT(data);
+ cal_edit_repeat_item_data *item_data = (cal_edit_repeat_item_data *)data;
+ int repeat_type = item_data->repeat_type;
+ int repeat_index = item_data->repeat_index;
+
+ if (!CAL_STRCMP(part, "elm.text"))
+ {
+ switch (repeat_type)
+ {
+ case -1:
+ return strdup(C_("IDS_CLD_BODY_REPEAT"));
+ case -2:
+ return strdup(C_("IDS_CLD_BODY_REPEAT_UNTIL"));
+ case 0:
+ return strdup(__cal_edit_repeat_repeat_until_str[__cal_edit_repeat_repeat_until_index[repeat_index]]);
+ case 1:
+ return strdup(__cal_edit_repeat_repeat_str[__cal_edit_repeat_repeat_index[repeat_index]]);
+ default:
+ return NULL;
+ }
+ }
+ return NULL;
+}
+
+static void __cal_edit_repeat_genlist_item_delete_callback(void *data, Evas_Object *obj)
+{
+ CAL_ASSERT(data);
+ cal_edit_repeat_item_data *item_data = (cal_edit_repeat_item_data*)data;
+
+ if (item_data->repeat_type)
+ {
+ CAL_ASSERT(item_data->p);
+ struct _priv* p = item_data->p;
+
+ CAL_ASSERT(p->repeat_radio_group_member);
+ p->repeat_radio_group_member[item_data->repeat_index] = NULL;
+ }
+
+ free(item_data);
+ return;
+}
+
+static Eina_Bool __cal_edit_repeat_get_genlist_item_state(void *data, Evas_Object *obj, const char *part)
+{
+ return EINA_FALSE;
+}
+
+static void __cal_edit_repeat_set_radio_group(struct _priv *p, Evas_Object *rd, int val)
+{
+ if (p->is_repeat_type)
+ {
+ if (!val)
+ {
+ p->repeat_radio_group = rd;
+ elm_radio_group_add(p->repeat_radio_group_member[1], p->repeat_radio_group);
+ elm_radio_group_add(p->repeat_radio_group_member[2], p->repeat_radio_group);
+ elm_radio_group_add(p->repeat_radio_group_member[3], p->repeat_radio_group);
+ elm_radio_group_add(p->repeat_radio_group_member[4], p->repeat_radio_group);
+ }
+
+ elm_radio_group_add(rd, p->repeat_radio_group);
+ }
+ else
+ {
+ if (!val)
+ p->repeat_until_radio_group = rd;
+
+ elm_radio_group_add(rd, p->repeat_until_radio_group);
+ }
+}
+
+static Evas_Object* __cal_edit_repeat_add_custom_text_object(struct _priv *p, Evas_Object *dg, const char *text)
+{
+ Evas_Object *entry = NULL;
+
+ if (!text || text[0] == '\0')
+ return entry;
+
+ entry = elm_entry_add(dg);
+ CAL_ASSERT(entry);
+
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+ evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_EXPAND);
+ elm_entry_editable_set(entry, EINA_FALSE);
+ elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+ elm_entry_autocapital_type_set(entry, EINA_TRUE);
+
+ elm_entry_entry_set(entry,text);
+
+ return entry;
+}
+
+static Evas_Object* __cal_edit_repeat_add_week_radio(Evas_Object *dg, const char *text, int val, struct _priv *p, cal_edit_repeat_item_data *item_data)
+{
+ Evas_Object *ly;
+ Evas_Object *rd;
+ Evas_Object *ds;
+ Evas_Object *entry_weekly;
+
+ ly = cal_util_add_layout(dg, "dialoguegroup/weekly");
+ if (!ly)
+ return NULL;
+
+ entry_weekly = __cal_edit_repeat_add_custom_text_object(p, dg, text);
+ if (!entry_weekly)
+ {
+ evas_object_del(ly);
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "text", entry_weekly);
+ evas_object_show(ly);
+
+ rd = elm_radio_add(dg);
+ if (!rd) {
+ evas_object_del(ly);
+ return NULL;
+ }
+
+ elm_radio_state_value_set(rd, val);
+ item_data->item_radio = rd;
+ *(p->repeat_radio_group_member + val) = rd;
+ __cal_edit_repeat_set_radio_group(p, rd, val);
+
+ ds = __cal_edit_repeat_add_day_selector(dg, p);
+ if (!ds)
+ {
+ evas_object_del(rd);
+ evas_object_del(ly);
+ return NULL;
+ }
+ p->day_sel = ds;
+ elm_object_part_content_set(ly, "content2", ds);
+ elm_object_part_content_set(ly, "content", rd);
+
+ return ly;
+}
+
+static Evas_Object* __cal_edit_repeat_add_radio(Evas_Object *dg, const char *text, int val, struct _priv *p, cal_edit_repeat_item_data *item_data)
+{
+ Evas_Object *ly;
+ Evas_Object *rd;
+
+ ly = cal_util_add_layout(dg, "dialoguegroup/radio");
+ if (!ly)
+ return NULL;
+
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(ly), "text", _(text));
+ evas_object_show(ly);
+ evas_object_data_set(ly, "priv", p);
+ if(p->is_repeat_type)
+ {
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_UP, __cal_edit_repeat_clicked_callback, (void *)val);
+ }
+ else
+ {
+ if(0 == val || 1 == val)
+ {
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_UP, __cal_edit_repeat_entry_clicked_callback, (void *)val);
+ }
+ }
+
+ rd = elm_radio_add(dg);
+ if (!rd) {
+ evas_object_del(ly);
+ return NULL;
+ }
+ evas_object_propagate_events_set(rd, EINA_TRUE);
+
+ elm_radio_state_value_set(rd, val);
+
+ if (val == 2)
+ elm_genlist_item_bring_in(elm_genlist_last_item_get(p->scroll_win), ELM_GENLIST_ITEM_SCROLLTO_TOP);
+
+ elm_object_part_content_set(ly, "content", rd);
+ item_data->item_radio = rd;
+
+ if (item_data->repeat_type)
+ *(p->repeat_radio_group_member + val) = rd;
+
+ __cal_edit_repeat_set_radio_group(p, rd, val);
+
+ if (!p->is_repeat_type)
+ p->end_date_ly[val] = ly;
+
+ return ly;
+}
+
+static void __cal_edit_repeat_entry_unfocused(void *data, Evas_Object *obj, void *event_info)
+{
+ struct _priv *p = (struct _priv *)data;
+
+ char times[8] = {0,};
+ snprintf(times, 7, "%d", p->time);
+ elm_entry_entry_set(p->times, times);
+
+}
+
+static void __cal_edit_repeat_entry_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ CAL_ASSERT(data);
+ struct _priv *p = data;
+
+ const char *s = elm_entry_entry_get(p->times);
+ p->time = atoi(s);
+}
+
+static Evas_Object* __cal_edit_repeat_add_entry(Evas_Object *parent, struct _priv *p)
+{
+ Evas_Object *e;
+ Ecore_IMF_Context *ic;
+
+ e = elm_entry_add(parent);
+ if (!e)
+ return NULL;
+
+ elm_object_style_set(e, "font_color_black");
+ elm_entry_single_line_set(e, EINA_TRUE);
+ elm_entry_markup_filter_append(e, elm_entry_filter_limit_size, &_limit_2char);
+ elm_entry_markup_filter_append(e, elm_entry_filter_accept_set, &_digit_only);
+ elm_entry_input_panel_layout_set(e, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
+ elm_entry_context_menu_disabled_set(e, EINA_TRUE);
+
+ ic = elm_entry_imf_context_get(e);
+ if (!ic)
+ return NULL;
+
+ evas_object_smart_callback_add(e, "unfocused", __cal_edit_repeat_entry_unfocused, p);
+ evas_object_smart_callback_add(e, "changed", __cal_edit_repeat_entry_changed_callback, p);
+
+ return e;
+}
+
+
+static Evas_Object* __cal_edit_repeat_add_times(Evas_Object *dg, const char *text, int val, struct _priv *p, cal_edit_repeat_item_data *item_data)
+{
+ Evas_Object *ly;
+ Evas_Object *rd;
+ Evas_Object *entry;
+ Evas_Object *entry_times;
+ char times[8] = {0,};
+
+ ly = cal_util_add_layout(dg, "dialoguegroup/repeat/times");
+ if (!ly)
+ return NULL;
+
+ entry_times = __cal_edit_repeat_add_custom_text_object(p, dg, text);
+ if (!entry_times)
+ {
+ evas_object_del(ly);
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "text", entry_times);
+
+ evas_object_show(ly);
+ evas_object_data_set(ly, "priv", p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_UP, __cal_edit_repeat_entry_clicked_callback, (void *)val);
+
+ rd = elm_radio_add(dg);
+ if (!rd) {
+ evas_object_del(ly);
+ return NULL;
+ }
+
+ elm_radio_state_value_set(rd, val);
+ elm_object_part_content_set(ly, "content", rd);
+ item_data->item_radio = rd;
+ __cal_edit_repeat_set_radio_group(p, rd, val);
+
+ entry = __cal_edit_repeat_add_entry(ly, p);
+ if (!entry)
+ {
+ evas_object_del(ly);
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "input_sw", entry);
+
+ //elm_entry_entry_set(entry,"10");
+ p->times = entry;
+ snprintf(times, 7, "%d", p->time);
+ elm_entry_entry_set(p->times, times);
+
+ return ly;
+}
+
+static void __cal_edit_repeat_end_date_changed_callback(void *data, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+
+ elm_datetime_value_get(obj, p->repeat_end_date_time);
+}
+
+static Evas_Object* __cal_edit_repeat_add_radio_tm(Evas_Object *dg, struct tm* repeat_end_date, int val, struct _priv *p, cal_edit_repeat_item_data *item_data)
+{
+ Evas_Object *ly;
+ Evas_Object *rd;
+ Evas_Object *df;
+
+ ly = cal_util_add_layout(dg, "dialoguegroup/radio");
+ if (!ly)
+ return NULL;
+
+ evas_object_show(ly);
+ evas_object_data_set(ly, "priv", p);
+
+ rd = elm_radio_add(dg);
+ if (!rd) {
+ evas_object_del(ly);
+ return NULL;
+ }
+
+ evas_object_propagate_events_set(rd, EINA_TRUE);
+
+ elm_radio_state_value_set(rd, val);
+
+ if (val == 2)
+ elm_genlist_item_bring_in(elm_genlist_last_item_get(p->scroll_win), ELM_GENLIST_ITEM_SCROLLTO_TOP);
+
+ elm_object_part_content_set(ly, "content", rd);
+ item_data->item_radio = rd;
+
+ if (item_data->repeat_type)
+ *(p->repeat_radio_group_member + val) = rd;
+
+ __cal_edit_repeat_set_radio_group(p, rd, val);
+
+ if (!p->is_repeat_type)
+ p->end_date_ly[val] = ly;
+
+ df = cal_util_add_datetime(dg, NULL, NULL);
+ c_retvm_if(!df, NULL, "df is null");
+
+ Evas_Object *datetime = elm_object_part_content_get(df, "elm.icon");
+ c_retvm_if(!datetime, NULL, "datetime is null");
+
+ elm_datetime_field_visible_set(datetime, ELM_DATETIME_HOUR, EINA_FALSE);
+ elm_datetime_field_visible_set(datetime, ELM_DATETIME_MINUTE, EINA_FALSE);
+ elm_datetime_field_visible_set(datetime, ELM_DATETIME_AMPM, EINA_FALSE);
+
+ elm_datetime_field_limit_set(datetime, ELM_DATETIME_YEAR, 70, 137);
+
+ if (repeat_end_date)
+ elm_datetime_value_set(datetime, repeat_end_date);
+
+ evas_object_smart_callback_add(datetime,"changed", __cal_edit_repeat_end_date_changed_callback, p);
+
+ evas_object_show(df);
+
+ elm_object_part_content_set(ly, "datefield", df);
+
+ return ly;
+}
+
+static Evas_Object* __cal_edit_repeat_add_radio_group(Evas_Object *dg, const char *text, int val, struct _priv *p, cal_edit_repeat_item_data *item_data)
+{
+ if (p->is_repeat_type)
+ {
+ if (val == CAL_REPEAT_EVERY_WEEK)
+ return __cal_edit_repeat_add_week_radio(dg, text, val, p, item_data);
+
+ return __cal_edit_repeat_add_radio(dg, text, val, p, item_data);
+ }
+ else
+ {
+ switch(val)
+ {
+ case 0:
+ return __cal_edit_repeat_add_radio(dg, S_("IDS_COM_BODY_NONE"), val, p, item_data);
+ case 1:
+ return __cal_edit_repeat_add_times(dg, text, val, p, item_data);
+ case 2:
+ return __cal_edit_repeat_add_radio_tm(dg, p->repeat_end_date_time, val, p, item_data);
+
+ default:
+ return NULL;
+ }
+ }
+}
+
+static void __cal_edit_repeat_set_selected_repeat_state(struct _priv *p)
+{
+ int i = 0;
+ Eina_Bool b;
+ elm_radio_value_set(p->repeat_radio_group, p->selected_repeat_radio);
+
+ if (p->selected_repeat_radio == CAL_REPEAT_EVERY_WEEK)
+ {
+ for (i = 0; i < sizeof(__cal_edit_repeat_dayselector_index)/sizeof(__cal_edit_repeat_dayselector_index[0]); i++)
+ {
+ b = ( (p->flag) >> i) & 1;
+ elm_dayselector_day_selected_set(p->day_sel, __cal_edit_repeat_dayselector_index[i], b);
+ }
+ }
+}
+
+static void __cal_edit_repeat_set_selected_repeat_until_state(struct _priv *p)
+{
+ char times[10] = {0};
+ elm_radio_value_set(p->repeat_until_radio_group, p->selected_repeat_until_radio);
+ switch (p->selected_repeat_until_radio)
+ {
+ case 1:
+ elm_radio_value_set(p->repeat_until_radio_group, 1);
+ snprintf(times,sizeof(times),"%d", p->time);
+ elm_entry_entry_set(p->times,times);
+ break;
+
+ case 2:
+ snprintf(times,sizeof(times),"%d", p->time);
+ elm_entry_entry_set(p->times,times);
+ elm_radio_value_set(p->repeat_until_radio_group, 2);
+
+ break;
+
+ default:
+ elm_radio_value_set(p->repeat_until_radio_group, 0);
+ snprintf(times,sizeof(times),"%d", p->time);
+ elm_entry_entry_set(p->times,times);
+
+ break;
+ }
+}
+
+static Evas_Object *__cal_edit_repeat_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ Evas_Object *e_obj = NULL;
+
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ cal_edit_repeat_item_data *item_data = (cal_edit_repeat_item_data *)data;
+ struct _priv *p = item_data->p;
+ int repeat_type = item_data->repeat_type;
+ int repeat_index = item_data->repeat_index;
+ if (repeat_type)
+ {
+ p->is_repeat_type = repeat_type;
+ e_obj = __cal_edit_repeat_add_radio_group(obj, __cal_edit_repeat_repeat_str[__cal_edit_repeat_repeat_index[repeat_index]], __cal_edit_repeat_repeat_index[repeat_index], p, item_data);
+ __cal_edit_repeat_set_selected_repeat_state(p);
+ }
+ else
+ {
+ p->is_repeat_type = false;
+ e_obj = __cal_edit_repeat_add_radio_group(obj, __cal_edit_repeat_repeat_until_str[__cal_edit_repeat_repeat_until_index[repeat_index]], __cal_edit_repeat_repeat_until_index[repeat_index], p, item_data);
+ __cal_edit_repeat_set_selected_repeat_until_state(p);
+ }
+ }
+
+ return e_obj;
+
+}
+
+static void __cal_edit_repeat_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ cal_edit_repeat_item_data *item_data;
+ Elm_Object_Item *it = elm_genlist_selected_item_get(obj);
+ if (it)
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ item_data = (cal_edit_repeat_item_data *)elm_object_item_data_get(it);
+ struct _priv *p = item_data->p;
+ int type = item_data->repeat_type;
+ int index = item_data->repeat_index;
+ if (type)
+ {
+ if (CAL_REPEAT_EVERY_WEEK == __cal_edit_repeat_repeat_index[index])
+ {
+ __cal_edit_repeat_set_weekly_selected_days(p, CAL_REPEAT_EVERY_WEEK);
+
+ p->prev_selected_repeat_radio = p->selected_repeat_radio;
+ }
+ else if (CAL_REPEAT_NONE == __cal_edit_repeat_repeat_index[index])
+ p->selected_repeat_until_radio = CAL_REPEAT_NONE;
+
+ p->selected_repeat_radio = __cal_edit_repeat_repeat_index[index];
+ elm_radio_value_set(p->repeat_radio_group, __cal_edit_repeat_repeat_index[index]);
+ elm_object_focus_set(p->times, EINA_FALSE);
+ }
+ else
+ {
+ elm_radio_value_set(p->repeat_until_radio_group, __cal_edit_repeat_repeat_until_index[index]);
+ p->selected_repeat_until_radio = __cal_edit_repeat_repeat_until_index[index];
+
+ if (CAL_REPEAT_EVERY_DAY != __cal_edit_repeat_repeat_until_index[index])
+ elm_object_focus_set(p->times, EINA_FALSE);
+ }
+}
+
+static void __cal_edit_repeat_add_separator(Evas_Object *genlist, struct _priv *p, int index)
+{
+ cal_edit_repeat_item_data *item_data = NULL;
+ CAL_CALLOC(item_data, 1, cal_edit_repeat_item_data);
+
+ item_data->repeat_index = index;
+ item_data->repeat_type = index;
+ item_data->p = p;
+ item_data->it = elm_genlist_item_append(genlist, &itc_seperator, (void*)item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_repeat_genlist_item_select_callback, NULL);
+
+ elm_genlist_item_select_mode_set(item_data->it, ELM_OBJECT_SELECT_MODE_NONE);
+}
+
+static void __cal_edit_repeat_add_repeat(Evas_Object *genlist, struct _priv *p)
+{
+ int i;
+ for (i = 0; i < sizeof(__cal_edit_repeat_repeat_index)/sizeof(__cal_edit_repeat_repeat_index[0]); i++)
+ {
+ cal_edit_repeat_item_data *item_data = NULL;
+ CAL_CALLOC(item_data, 1, cal_edit_repeat_item_data);
+
+ item_data->p = p;
+ item_data->repeat_index = i;
+ item_data->repeat_type = EINA_TRUE;
+ if (CAL_REPEAT_EVERY_WEEK == __cal_edit_repeat_repeat_index[i])
+ {
+ item_data->it = elm_genlist_item_append(genlist, &itc_1icon, (void*)item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_repeat_genlist_item_select_callback, NULL);
+ }
+ else
+ {
+ item_data->it = elm_genlist_item_append(genlist, &itc_1icon_1text, (void*)item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_repeat_genlist_item_select_callback, NULL);
+ }
+ }
+}
+
+static void __cal_edit_repeat_add_repeat_until(Evas_Object *genlist, struct _priv *p)
+{
+ int i;
+ for (i = 0; i < sizeof(__cal_edit_repeat_repeat_until_index)/sizeof(__cal_edit_repeat_repeat_until_index[0]); i++)
+ {
+ cal_edit_repeat_item_data *item_data = NULL;
+ CAL_CALLOC(item_data, 1, cal_edit_repeat_item_data);
+
+ item_data->p = p;
+ item_data->repeat_index = i;
+ item_data->repeat_type = EINA_FALSE;
+ if (CAL_REPEAT_NONE != __cal_edit_repeat_repeat_until_index[i])
+ {
+ item_data->it = elm_genlist_item_append(genlist, &itc_1icon, (void*)item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_repeat_genlist_item_select_callback, NULL);
+ }
+ else
+ {
+ item_data->it = elm_genlist_item_append(genlist, &itc_1icon_1text, (void*)item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_repeat_genlist_item_select_callback, NULL);
+ }
+ }
+}
+
+static void __cal_edit_repeat_add_genlist_item(Evas_Object *genlist, struct _priv *p)
+{
+ __cal_edit_repeat_add_separator(genlist, p, -1);
+ __cal_edit_repeat_add_repeat(genlist, p);
+ __cal_edit_repeat_add_separator(genlist, p, -2);
+ __cal_edit_repeat_add_repeat_until(genlist, p);
+
+}
+
+static int __cal_edit_repeat_add_content(struct _priv *p)
+{
+ p->scroll_win = elm_genlist_add(p->ly);
+ CAL_ASSERT(p->scroll_win);
+
+ Evas_Object* cf;
+
+ if (NULL != p->theme)
+ elm_object_theme_set(p->scroll_win, p->theme);
+
+ itc_seperator.item_style = "dialogue/title";
+ itc_seperator.func.text_get = __cal_edit_repeat_get_genlist_item_label;
+ itc_seperator.func.state_get = __cal_edit_repeat_get_genlist_item_state;
+ itc_seperator.func.del = __cal_edit_repeat_genlist_item_delete_callback;
+
+ itc_1icon_1text.item_style = "dialogue/1text.1icon.2";
+ itc_1icon_1text.func.text_get = __cal_edit_repeat_get_genlist_item_label;
+ itc_1icon_1text.func.del = __cal_edit_repeat_genlist_item_delete_callback;
+ itc_1icon_1text.func.content_get = __cal_edit_repeat_get_genlist_item_icon;
+
+ itc_1icon.item_style = "dialogue/1icon";
+ itc_1icon.func.text_get = __cal_edit_repeat_get_genlist_item_label;
+ itc_1icon.func.del = __cal_edit_repeat_genlist_item_delete_callback;
+ itc_1icon.func.content_get = __cal_edit_repeat_get_genlist_item_icon;
+
+ __cal_edit_repeat_add_genlist_item(p->scroll_win, p);
+
+ cf = elm_conformant_add(p->ad->win);
+ CAL_ASSERT(cf);
+
+ evas_object_size_hint_weight_set(cf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(cf);
+ elm_object_content_set(cf, p->scroll_win);
+ elm_object_style_set(cf, "internal_layout");
+ elm_object_part_content_set(p->ly, "sw", cf);
+
+ return 0;
+}
+
+static void __cal_edit_repeat_set_state(struct _priv *p, cal_repeat_term_t term, int num, struct tm* repeat_end_date_time, int* occurrency, int flag)
+{
+ p->selected_repeat_radio = term;
+ p->prev_selected_repeat_radio = term;
+ p->selected_repeat_until_radio = num;
+ p->flag = flag;
+}
+
+Evas_Object *cal_edit_repeat_create_view(Evas_Object *parent, struct appdata* ad, cal_repeat_term_t term, int num, struct tm* start_date_time, struct tm* repeat_end_date_time, int* occurrency, int* is_all_day, int flag)
+{
+ CAL_FN_START;
+
+ struct _priv *p;
+ Evas_Object *ly;
+ int r;
+
+ CAL_ASSERT(parent);
+
+ CAL_CALLOC(p, 1, struct _priv);
+
+ p->name = _name;
+ p->parent = parent;
+ p->repeat_radio_group = NULL;
+ p->repeat_until_radio_group = NULL;
+ p->ad = ad;
+ p->win = ad->win;
+ p->nv = ad->nv;
+ p->repeat = term;
+ p->ly_date = NULL;
+
+ ly = cal_util_add_layout(p->nv, "edit");
+ if (!ly)
+ {
+ free(p);
+ return NULL;
+ }
+
+ p->ly = ly;
+
+ p->occurrency = occurrency;
+ p->start_date_time = start_date_time;
+ p->repeat_end_date_time = repeat_end_date_time;
+ p->is_all_day = is_all_day;
+ p->theme = ad->theme;
+ p->time = *(p->occurrency);
+ evas_object_data_set(ly, "priv", p);
+
+ __cal_edit_repeat_repeat_str[CAL_REPEAT_NONE] = S_("IDS_COM_BODY_OFF");
+ __cal_edit_repeat_repeat_str[CAL_REPEAT_EVERY_DAY] = C_("IDS_CLD_BODY_DAILY");
+ __cal_edit_repeat_repeat_str[CAL_REPEAT_EVERY_WEEK] = C_("IDS_CLD_BODY_WEEKLY");
+ __cal_edit_repeat_repeat_str[CAL_REPEAT_EVERY_MONTH] = C_("IDS_CLD_BODY_MONTHLY");
+ __cal_edit_repeat_repeat_str[CAL_REPEAT_EVERY_YEAR] = C_("IDS_CLD_BODY_YEARLY");
+ __cal_edit_repeat_repeat_until_str[CAL_REPEAT_NONE] = S_("IDS_COM_BODY_NONE");
+ __cal_edit_repeat_repeat_until_str[CAL_REPEAT_EVERY_DAY] = C_("IDS_COM_POP_TIMES_LC");
+
+ __cal_edit_repeat_set_state(p, term, num, repeat_end_date_time, occurrency, flag);
+
+ r = __cal_edit_repeat_add_content(p);
+ if (r)
+ {
+ evas_object_del(ly);
+ free(p);
+ return NULL;
+ }
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_edit_repeat_delete_layout, p);
+
+ return ly;
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_EDIT_REPEAT_H__
+#define __CALENDAR_EDIT_REPEAT_H__
+
+#include "cld.h"
+
+/* Return layout */
+Evas_Object *edit_repeat_create(Evas_Object *parent, Evas_Object *nv, cal_repeat_term_t term, int num, struct tm* repeat_end_date_time, int* occurrency, int* is_all_day, int flag, Evas_Object *win);
+Evas_Object *cal_edit_repeat_create_view(Evas_Object *parent, struct appdata* ad, cal_repeat_term_t term, int num, struct tm* start_date_time, struct tm* repeat_end_date_time, int* occurrency, int* is_all_day, int flag);
+
+/* return term: cal_repeat_term_t, flag is for weekly */
+cal_repeat_term_t cal_edit_repeat_get_repeat(Evas_Object *ly, int *flag, int *num, struct tm *repeat_end_date_time, int *occurrency);
+
+void cal_edit_repeat_get_repeat_str(cal_repeat_term_t term, int flag, char *buf, int sz);
+
+#endif /* __CALENDAR_EDIT_REPEAT_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_EDIT_H__
+#define __CALENDAR_EDIT_H__
+
+#include "cld.h"
+
+int cal_edit_save(Evas_Object *sc);
+
+struct appdata;
+Evas_Object* cal_edit_create_content(Evas_Object *parent, struct appdata *ad, Evas_Object *nv,
+ Evas_Object *win, int cid);
+
+int cal_edit_save(Evas_Object *sc);
+
+void cal_edit_show_location_error_popup(void* data, int error_code);
+
+
+#endif /* __CALENDAR_EDIT_H__ */
+
--- /dev/null
+/*\r
+\r
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+\r
+This file is part of org.tizen.efl-calendar\r
+Written by Taeho Kang <taeho84.kang@samsung.com>\r
+\r
+PROPRIETARY/CONFIDENTIAL\r
+\r
+This software is the confidential and proprietary information of\r
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not\r
+disclose such Confidential Information and shall use it only in\r
+accordance with the terms of the license agreement you entered\r
+into with SAMSUNG ELECTRONICS.\r
+\r
+SAMSUNG make no representations or warranties about the suitability\r
+of the software, either express or implied, including but not limited\r
+to the implied warranties of merchantability, fitness for a particular\r
+purpose, or non-infringement. SAMSUNG shall not be liable for any\r
+damages suffered by licensee as a result of using, modifying or\r
+distributing this software or its derivatives.\r
+\r
+*/\r
+\r
+#include "cld.h"\r
+#include <glib.h>\r
+\r
+#define THIRTY_MIN (30 * 60)\r
+#define HH_IN_DAY (24 * 2)\r
+\r
+static const char *_name = "list/base";\r
+\r
+///TODO: get full path from caller\r
+#define VFILE_PATH "/opt/data/ug-calendar"\r
+\r
+static Elm_Entry_Filter_Limit_Size _limit_20char = {\r
+ .max_char_count = 20,\r
+};\r
+\r
+#define MAX_FETCH_COUNT 10\r
+\r
+#define ACCOUNT_LABLE_STRING_LENGTH 128\r
+\r
+struct _priv {\r
+ const char *name;\r
+ struct appdata *ad;\r
+ Evas_Object *parent;\r
+ Evas_Object *ly;\r
+ Evas_Object *no_content;\r
+ Evas_Object *bg;\r
+\r
+ Elm_Object_Item *bt_delete;\r
+ Evas_Object *gl;\r
+ Eina_List *evtlist;\r
+ Evas_Object *select_all_layout;\r
+ Evas_Object *select_all_check;\r
+ Evas_Object *box;\r
+\r
+ int totalcnt;\r
+ int offset;\r
+ Ecore_Idler* idler;\r
+ int num_check;\r
+ Evas_Object * notify;\r
+ Evas_Object * notify_layout;\r
+\r
+ int genlist_count;\r
+ Evas_Object *searchbar;\r
+ const char *searchtext;\r
+ Elm_Object_Item* navi_item;\r
+};\r
+\r
+typedef struct {\r
+ Elm_Object_Item *it; // Genlist Item pointer\r
+ Eina_Bool checked; // Check status\r
+ char *label;\r
+ cal_struct *cs;\r
+ struct tm* tm;\r
+ Elm_Genlist_Item_Type it_flag;\r
+}cal_list_delete_item_data;\r
+\r
+static Eina_Bool is_list_delete_destory;\r
+static int is_hour24;\r
+\r
+static void __cal_list_delete_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info);\r
+static void __cal_list_delete_event_update_noti_received_cb (void *user_data);\r
+static char* __cal_list_delete_get_genlist_item_label(void *data, Evas_Object *obj, const char *part);\r
+static Evas_Object *__cal_list_delete_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part);\r
+static void __cal_list_delete_update_all_check(struct _priv* p);\r
+static void __cal_list_delete_searchbar_entry_changed_callback(void *data, Evas_Object *obj, void *event_info);\r
+static void __cal_list_delete_cancel_button_callback(void *data, Evas_Object *obj, void *event_info);\r
+static void __cal_list_delete_searchbar_entry_unfocused_callback(void *data, Evas_Object *obj, void *event_info);\r
+static void __cal_list_delete_searchbar_clicked_callback(void *data, Evas_Object *obj, void *event_info);\r
+static void __cal_list_delete_create_searchbar(struct _priv *p);\r
+static void __cal_list_delete_append_with_idler(void* data);\r
+static void __cal_list_delete_create_searchbar(struct _priv *p);\r
+\r
+\r
+\r
+\r
+static Elm_Genlist_Item_Class itc_list = {\r
+ .item_style = "3text.5icon",\r
+ .func.text_get = __cal_list_delete_get_genlist_item_label,\r
+ .func.content_get = __cal_list_delete_get_genlist_item_icon,\r
+ .decorate_all_item_style = "edit_default",\r
+};\r
+\r
+static Calendar_color calendar_color;\r
+\r
+//TODO\r
+#define ELM_GENLIST_ITEM_GROUP (1<<1)\r
+\r
+static void __cal_list_delete_add_small_info(struct _priv *p, int count)\r
+{\r
+ c_retm_if(!p, "p is null");\r
+ struct appdata *ad = p->ad;\r
+\r
+ c_retm_if(!ad, "ug data is null");\r
+\r
+ Evas_Object *nv = ad->nv;\r
+ c_retm_if(!nv, "nv is null");\r
+\r
+ Evas_Object *notify = NULL;\r
+ Evas_Object *notify_layout = NULL;\r
+\r
+ char lable_str[ACCOUNT_LABLE_STRING_LENGTH] = { '\0'};\r
+ c_ret_if(count < 0);\r
+\r
+ if (!p->notify) {\r
+ notify = elm_notify_add(nv);\r
+ c_retm_if(!notify, "notify is null");\r
+\r
+ elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);\r
+ p->notify = notify;\r
+\r
+ notify_layout = elm_layout_add(notify);\r
+ if (!notify_layout) {\r
+ evas_object_del(p->notify);\r
+ p->notify = NULL;\r
+ return;\r
+ }\r
+\r
+ p->notify_layout = notify_layout;\r
+ elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64");\r
+ elm_object_content_set(notify, notify_layout);\r
+ }\r
+\r
+ snprintf(lable_str, sizeof(lable_str), "%s (%d)", S_("IDS_COM_POP_SELECTED"), count);\r
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(p->notify_layout), "elm.text", lable_str);\r
+\r
+ if (0 < count) {\r
+ evas_object_show(p->notify);\r
+ } else {\r
+ evas_object_hide(p->notify);\r
+ }\r
+}\r
+\r
+static void __cal_list_delete_genlist_item_check_changed_callback(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+ c_retm_if(!data, "data is null");\r
+ cal_list_delete_item_data *item_data = data;\r
+\r
+ Elm_Object_Item *it;\r
+ Eina_List* realized_list, *l;\r
+\r
+ struct _priv* p = CAL_UTIL_GET_PRIV_DATA(obj);\r
+ c_retm_if(!p, "p is null");\r
+\r
+ if (p->genlist_count <= 0) {\r
+ return;\r
+ }\r
+ item_data->checked = elm_check_state_get(obj);\r
+ if (item_data->checked)\r
+ p->num_check++;\r
+ else\r
+ p->num_check--;\r
+\r
+ if (item_data->checked || 0 < p->num_check)\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_FALSE);\r
+ else\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+\r
+ realized_list = elm_genlist_realized_items_get(p->gl);\r
+ EINA_LIST_FOREACH(realized_list, l, it) {\r
+ if (it)\r
+ elm_genlist_item_update(it);\r
+ }\r
+\r
+ if (p->num_check == p->genlist_count) {\r
+ elm_check_state_set(p->select_all_check,EINA_TRUE);\r
+ __cal_list_delete_update_all_check(p);\r
+ } else {\r
+ elm_check_state_set(p->select_all_check,EINA_FALSE);\r
+ __cal_list_delete_add_small_info(p, p->num_check);\r
+ }\r
+}\r
+\r
+static Evas_Object *__cal_list_delete_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)\r
+{\r
+ c_retvm_if(!part, NULL, "part is null");\r
+ c_retvm_if(!obj, NULL, "obj is null");\r
+ c_retvm_if(!data, NULL, "data is null");\r
+\r
+ Evas_Object *icon = NULL;\r
+ cal_struct *calendar = NULL;\r
+\r
+ struct _priv* p = CAL_UTIL_GET_PRIV_DATA(obj);\r
+ c_retvm_if(!p, NULL, "p is null");\r
+\r
+ cal_list_delete_item_data *item_data = (cal_list_delete_item_data *)data;\r
+\r
+ int r;\r
+ cal_struct *cs = item_data->cs;\r
+ c_retvm_if(!cs, NULL, "cs is null");\r
+\r
+\r
+ if (!CAL_STRCMP(part, "elm.edit.icon.1") ) {\r
+ icon = elm_check_add(obj);\r
+ c_retvm_if(!icon, NULL, "elm_check_add returned null");\r
+\r
+ elm_check_state_pointer_set(icon, &item_data->checked);\r
+ evas_object_smart_callback_add(icon, "changed", __cal_list_delete_genlist_item_check_changed_callback, item_data);\r
+ evas_object_propagate_events_set(icon, EINA_FALSE);\r
+ evas_object_data_set(icon, "priv", p);\r
+ return icon;\r
+ } else if (!CAL_STRCMP(part, "elm.swallow.colorbar")) {\r
+ r = calendar_svc_get(CAL_STRUCT_CALENDAR, CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_VALUE_INT_CALENDAR_ID), NULL, &calendar);\r
+ if (r != CAL_SUCCESS)\r
+ c_retvm_if(r != CAL_SUCCESS, NULL, "calendar_svc_get is failed(%d)", r);\r
+\r
+ icon = evas_object_rectangle_add(evas_object_evas_get(obj));\r
+ c_retvm_if(!icon, NULL, "evas_object_rectangle_add returned null");\r
+\r
+ evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
+ CALENDAR_SVC_GET_CALENDAR_COLOR(calendar, &calendar_color);\r
+ evas_object_color_set(icon, calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);\r
+ calendar_svc_struct_free(&calendar);\r
+ return icon;\r
+ }\r
+\r
+ return NULL;\r
+}\r
+\r
+static void __cal_list_delete_clear_event_list(struct _priv *p)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!p, "p is null");\r
+ cal_list_delete_item_data *item;\r
+ Eina_List *l = NULL;\r
+\r
+ EINA_LIST_FOREACH(p->evtlist, l, item) {\r
+ if (item) {\r
+ calendar_svc_struct_free(&item->cs);\r
+ item->cs = NULL;\r
+ free(item);\r
+ item=NULL;\r
+ }\r
+ }\r
+\r
+ if (p->evtlist) {\r
+ eina_list_free(p->evtlist);\r
+ p->evtlist = NULL;\r
+ }\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static void __cal_list_delete_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!data, "data is null");\r
+\r
+ struct _priv *p = data;\r
+ is_list_delete_destory = TRUE;\r
+\r
+ if (p->idler) {\r
+ ecore_idler_del(p->idler);\r
+ p->idler = NULL;\r
+ }\r
+\r
+ __cal_list_delete_clear_event_list(p);\r
+ calendar_svc_unsubscribe_change(__cal_list_delete_event_update_noti_received_cb);\r
+\r
+ if (p->notify) {\r
+ evas_object_del(p->notify);\r
+ }\r
+\r
+ if (p->searchbar) {\r
+ evas_object_smart_callback_del(elm_object_part_content_get(p->searchbar, "elm.swallow.content"), "changed", __cal_list_delete_searchbar_entry_changed_callback);\r
+ evas_object_smart_callback_del(p->searchbar, "cancel,clicked", __cal_list_delete_cancel_button_callback);\r
+ evas_object_del(p->searchbar);\r
+ p->searchbar = NULL;\r
+ }\r
+\r
+ if (p->box) {\r
+ elm_box_clear(p->box);\r
+ }\r
+\r
+ if (p->no_content) {\r
+ evas_object_del(p->no_content);\r
+ }\r
+\r
+ free(p);\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static char* __cal_list_delete_get_cs(cal_struct *cs)\r
+{\r
+ char buf[512];\r
+ char stime[512];\r
+ time_t st;\r
+ struct tm tm;\r
+ int repeat;\r
+ const char* time;\r
+\r
+ if (is_hour24)\r
+ time = CAL_UTIL_TIME_FORMAT_6;\r
+ else\r
+ time = CAL_UTIL_TIME_FORMAT_1;\r
+\r
+\r
+ st = CALENDAR_SVC_STRUCT_GET_TIME(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_GMT);\r
+ localtime_r(&st, &tm);\r
+\r
+ repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);\r
+\r
+ if (repeat == CAL_REPEAT_NONE)\r
+ {\r
+ cal_util_get_time_text(stime, sizeof(stime), NULL, time, &tm);\r
+ snprintf(buf, sizeof(buf), "%s", stime);\r
+ } else {\r
+ cal_util_get_time_text(stime, sizeof(stime), NULL, time, &tm);\r
+ snprintf(buf, sizeof(buf), "%s", stime);\r
+ }\r
+ return strdup(buf);\r
+}\r
+\r
+static char* __cal_list_delete_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)\r
+{\r
+ c_retvm_if(!part, NULL, "part is null");\r
+ c_retvm_if(!data, NULL, "data is null");\r
+\r
+ const char *str = NULL;\r
+ cal_list_delete_item_data *item = data;\r
+ cal_struct *cs = item->cs;\r
+ c_retvm_if(!cs, NULL, "cs is null");\r
+\r
+ if (!CAL_STRCMP(part, "elm.text.1")) {\r
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);\r
+ if (str)\r
+ return strdup(str);\r
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));\r
+ }\r
+\r
+ if (!CAL_STRCMP(part, "elm.text.2")) {\r
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_LOCATION);\r
+ if (str)\r
+ return strdup(str);\r
+ return strdup(C_("IDS_CLD_BODY_NO_LOCATION_SELECTED"));\r
+ }\r
+\r
+ if (!CAL_STRCMP(part, "elm.text.3"))\r
+ return __cal_list_delete_get_cs(cs);\r
+\r
+ return NULL;\r
+}\r
+\r
+static void __cal_list_delete_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+ c_retm_if(!data, "data is null");\r
+ c_retm_if(!obj, "obj is null");\r
+\r
+ Eina_List* realized_list, *l;\r
+ Elm_Object_Item* it;\r
+ cal_list_delete_item_data* item = data;\r
+\r
+ struct _priv *p = CAL_UTIL_GET_PRIV_DATA(obj);\r
+ c_retm_if(!p, "p is null");\r
+\r
+ if (p->genlist_count <= 0) {\r
+ return;\r
+ }\r
+ item->checked = !(item->checked);\r
+ if (item->checked) {\r
+ p->num_check++;\r
+ } else {\r
+ p->num_check--;\r
+ }\r
+\r
+ if (item->checked || 0 < p->num_check) {\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_FALSE);\r
+ }\r
+ else if (0 >= p->num_check) {\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+ }\r
+\r
+ it = elm_genlist_selected_item_get(obj);\r
+ if (it)\r
+ elm_genlist_item_selected_set(it, EINA_FALSE);\r
+\r
+ realized_list = elm_genlist_realized_items_get(obj);\r
+ EINA_LIST_FOREACH(realized_list, l, it) {\r
+ if (it)\r
+ elm_genlist_item_update(it);\r
+ }\r
+\r
+ if (p->num_check == p->genlist_count) {\r
+ elm_check_state_set(p->select_all_check,EINA_TRUE);\r
+ __cal_list_delete_update_all_check(p);\r
+ } else {\r
+ elm_check_state_set(p->select_all_check,EINA_FALSE);\r
+ __cal_list_delete_add_small_info(p, p->num_check);\r
+ }\r
+}\r
+\r
+static void __cal_list_delete_update_no_item(struct _priv *p)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!p, "priv is null.");\r
+\r
+ Elm_Object_Item *it = elm_genlist_first_item_get(p->gl);\r
+\r
+ if (!it)\r
+ {\r
+ if (p->box) {\r
+ elm_box_clear(p->box);\r
+ }\r
+ p->no_content = cal_util_add_nocontents(p->ly, C_("IDS_CLD_BODY_NO_EVENTS"));\r
+ c_retm_if(!p->no_content, "p->no_content is null.");\r
+\r
+ elm_object_part_content_set(p->ly, "sw", p->no_content);\r
+ evas_object_show(p->ly);\r
+\r
+ p->gl = NULL;\r
+ }\r
+ else\r
+ {\r
+ p->no_content = NULL;\r
+ }\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+Eina_Bool __cal_list_delete_update_fetch_list_idler(void* data)\r
+{\r
+ CAL_FN_START;\r
+\r
+ struct _priv *p = (struct _priv *)data;\r
+\r
+ c_retvm_if(!p, ECORE_CALLBACK_CANCEL, "priv is null.");\r
+\r
+ int r;\r
+ cal_iter *it=NULL;\r
+ int cal_id;\r
+ cal_id = 0;\r
+ it = NULL;\r
+ cal_list_delete_item_data *item;\r
+ Eina_Bool is_finished = EINA_FALSE;\r
+\r
+ if(is_list_delete_destory == EINA_TRUE)\r
+ return ECORE_CALLBACK_CANCEL;\r
+\r
+ if(p->idler == NULL)\r
+ return ECORE_CALLBACK_CANCEL;\r
+\r
+ r = calendar_svc_get_list(ALL_VISIBILITY_ACCOUNT, ALL_CALENDAR_ID,CAL_STRUCT_SCHEDULE,CAL_VALUE_LIST_FILED, p->offset,MAX_FETCH_COUNT,&it);\r
+\r
+ if (r != CAL_SUCCESS)\r
+ return ECORE_CALLBACK_CANCEL;\r
+\r
+ while (calendar_svc_iter_next(it) == CAL_SUCCESS)\r
+ {\r
+ item = calloc(1, sizeof(cal_list_delete_item_data));\r
+ c_retvm_if(!item, EINA_FALSE, "calloc is failed");\r
+\r
+ r = calendar_svc_iter_get_info(it, &item->cs);\r
+ if (r != CAL_SUCCESS)\r
+ break;\r
+\r
+ p->evtlist = eina_list_append(p->evtlist, item);\r
+ }\r
+\r
+ calendar_svc_iter_remove(&it);\r
+\r
+ if(eina_list_count(p->evtlist) < MAX_FETCH_COUNT)\r
+ is_finished = EINA_TRUE;\r
+\r
+ __cal_list_delete_append_with_idler(p);\r
+\r
+ if(is_finished || (p->offset== p->totalcnt))\r
+ {\r
+ if (p->idler)\r
+ {\r
+ ecore_idler_del(p->idler);\r
+ p->idler = NULL;\r
+ }\r
+\r
+ p->offset= 0;\r
+\r
+ CAL_FN_END;\r
+\r
+ return ECORE_CALLBACK_CANCEL;\r
+ }\r
+ else\r
+ {\r
+ CAL_FN_END;\r
+\r
+ return ECORE_CALLBACK_RENEW;\r
+ }\r
+\r
+ CAL_FN_END;\r
+\r
+ return ECORE_CALLBACK_CANCEL;\r
+}\r
+\r
+static void __cal_list_delete_get_event_list(struct _priv *p)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!p, "p is null");\r
+\r
+ int r;\r
+ cal_iter *it = NULL;\r
+ cal_list_delete_item_data *item;\r
+\r
+ p->totalcnt = calendar_svc_get_count(ALL_ACCOUNT_ID,ALL_CALENDAR_ID,CAL_STRUCT_SCHEDULE);\r
+\r
+\r
+ p->offset = 0;\r
+\r
+ r = calendar_svc_get_list(ALL_ACCOUNT_ID, ALL_CALENDAR_ID, CAL_STRUCT_SCHEDULE, CAL_VALUE_LIST_FILED, 0, MAX_FETCH_COUNT, &it);\r
+ c_retm_if(r != CAL_SUCCESS, "calendar_svc_get_list is failed(%d)", r);\r
+\r
+ while ((r = calendar_svc_iter_next(it)) == CAL_SUCCESS) {\r
+ item = calloc(1, sizeof(cal_list_delete_item_data));\r
+ c_retm_if(!item, "calloc is failed");\r
+\r
+ r = calendar_svc_iter_get_info(it, &item->cs);\r
+ if (r != CAL_SUCCESS) {\r
+ ERR("calendar_svc_iter_get_info is failed(%d)", r);\r
+ free(item);\r
+ break;\r
+ }\r
+ p->evtlist = eina_list_append(p->evtlist, item);\r
+ }\r
+\r
+ calendar_svc_iter_remove(&it);\r
+\r
+ if (eina_list_count(p->evtlist) < p->totalcnt) {\r
+ if (!p->idler) {\r
+ p->idler = ecore_idler_add(__cal_list_delete_update_fetch_list_idler,p);\r
+ }\r
+ }\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static bool __cal_list_delete_strstr(const char *pszParent, const char * pszChild)\r
+{\r
+ bool bRst = false;\r
+ if (!pszParent || !pszChild) {\r
+ return false;\r
+ }\r
+\r
+ GString * gSrc = g_string_new(pszParent);\r
+ if (!gSrc) {\r
+ return false;\r
+ }\r
+\r
+ GString * gDes = g_string_new(pszChild);\r
+ if (!gDes) {\r
+ g_string_free(gSrc,true);\r
+ return false;\r
+ }\r
+\r
+ gSrc = g_string_ascii_up(gSrc);\r
+ if (!gSrc) {\r
+ g_string_free(gDes,true);\r
+ return false;\r
+ }\r
+\r
+ gDes = g_string_ascii_up(gDes);\r
+ if (!gDes) {\r
+ g_string_free(gSrc,true);\r
+ return false;\r
+ }\r
+\r
+ if (g_strrstr(gSrc->str,gDes->str)) {\r
+ bRst = true;\r
+ } else {\r
+ bRst = false;\r
+ }\r
+\r
+ g_string_free(gSrc,true);\r
+ g_string_free(gDes,true);\r
+ return bRst;\r
+}\r
+\r
+\r
+static void __cal_list_delete_append_with_idler(void* data)\r
+{\r
+\r
+ c_retm_if(!data, "data is null");\r
+\r
+ struct _priv* p = data;\r
+ Eina_List *event_list, *l = NULL;\r
+ cal_list_delete_item_data *item = NULL;\r
+ Elm_Object_Item *it = NULL;\r
+ const char* summary = NULL;\r
+\r
+ event_list = eina_list_nth_list(p->evtlist, p->offset-1);;\r
+ if (event_list) {\r
+ event_list = eina_list_next(event_list);\r
+ c_retm_if(NULL == event_list, "eina_list_nth_list(append_list, 1) is null");\r
+ }\r
+ c_retm_if(!event_list, "eina_list_nth(list, %d) returned null", p->offset);\r
+\r
+\r
+ EINA_LIST_FOREACH(event_list, l, item)\r
+ {\r
+\r
+ if (item && item->cs)\r
+ {\r
+ if (p->searchtext && 0 < strlen(p->searchtext)) {\r
+ summary = CALENDAR_SVC_STRUCT_GET_STR(item->cs, CAL_VALUE_TXT_SUMMARY);\r
+ if (summary && __cal_list_delete_strstr(summary, p->searchtext))\r
+ {\r
+ it = elm_genlist_item_append(p->gl, &itc_list, item, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_delete_genlist_item_select_callback, item);\r
+ c_retm_if(!it, "elm_genlist_item_append is failed");\r
+ if (item && item->checked) {\r
+ p->num_check++;\r
+ }\r
+ p->genlist_count++;\r
+ }\r
+ } else {\r
+ if (item && item->checked) {\r
+ p->num_check++;\r
+ }\r
+\r
+ it = elm_genlist_item_append(p->gl, &itc_list, item, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_delete_genlist_item_select_callback, item);\r
+\r
+ c_retm_if(!it, "elm_genlist_item_append is failed");\r
+ p->genlist_count++;\r
+ }\r
+ }\r
+\r
+ p->offset++;\r
+ }\r
+}\r
+\r
+static void __cal_list_delete_append_genlist(struct _priv *p)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!p, "p is null");\r
+\r
+ Eina_List *l = NULL;\r
+ Elm_Object_Item *it = NULL;\r
+ struct appdata * ad = p->ad;\r
+ c_retm_if(!ad, "ad is null.");\r
+\r
+ cal_list_delete_item_data *item = NULL;\r
+ const char* summary = NULL;\r
+ p->genlist_count = 0;\r
+\r
+ EINA_LIST_FOREACH(p->evtlist, l, item)\r
+ {\r
+\r
+ if (item && item->cs)\r
+ {\r
+ if (p->searchtext && 0 < strlen(p->searchtext))\r
+ {\r
+ summary = CALENDAR_SVC_STRUCT_GET_STR(item->cs, CAL_VALUE_TXT_SUMMARY);\r
+ if (summary && __cal_list_delete_strstr(summary, p->searchtext)) {\r
+ it = elm_genlist_item_append(p->gl, &itc_list, item, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_delete_genlist_item_select_callback, item);\r
+ c_retm_if(!it, "elm_genlist_item_append is failed");\r
+ if (item && item->checked) {\r
+ p->num_check++;\r
+ }\r
+ p->genlist_count++;\r
+ }\r
+ } else {\r
+ if (item && item->checked) {\r
+ p->num_check++;\r
+ }\r
+ it = elm_genlist_item_append(p->gl, &itc_list, item, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_delete_genlist_item_select_callback, item);\r
+ c_retm_if(!it, "elm_genlist_item_append is failed");\r
+ p->genlist_count++;\r
+ }\r
+ }\r
+\r
+ p->offset++;\r
+ }\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static void __cal_list_delete_update_list(struct _priv *p)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!p, "p is null");\r
+\r
+ if (p->idler)\r
+ {\r
+ ecore_idler_del(p->idler);\r
+ p->idler = NULL;\r
+ }\r
+\r
+ if (!p->gl)\r
+ {\r
+ p->gl = elm_genlist_add(p->ly);\r
+ c_retm_if(!p->gl, "p->gl is null");\r
+ elm_genlist_decorate_mode_set(p->gl, EINA_TRUE);\r
+ evas_object_data_set(p->gl, "priv", p);\r
+ elm_genlist_scroller_policy_set(p->gl, ELM_SCROLLER_POLICY_OFF,ELM_SCROLLER_POLICY_OFF);\r
+ elm_genlist_block_count_set(p->gl, 20);\r
+ elm_genlist_homogeneous_set(p->gl, EINA_TRUE);\r
+ evas_object_size_hint_weight_set(p->gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
+ evas_object_size_hint_align_set(p->gl, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
+ evas_object_show(p->gl);\r
+ elm_object_focus_set(p->gl, EINA_TRUE);\r
+ elm_box_pack_end(p->box, p->gl);\r
+ }\r
+\r
+ __cal_list_delete_clear_event_list(p);\r
+ p->num_check = 0;\r
+ p->offset = 0;\r
+\r
+ __cal_list_delete_get_event_list(p);\r
+\r
+ elm_genlist_clear(p->gl);\r
+ __cal_list_delete_append_genlist(p);\r
+\r
+ if (p->genlist_count == p->num_check) {\r
+ elm_check_state_set(p->select_all_check,EINA_TRUE);\r
+ } else {\r
+ elm_check_state_set(p->select_all_check,EINA_FALSE);\r
+ }\r
+ __cal_list_delete_update_no_item(p);\r
+\r
+ if (p->num_check <= 0) {\r
+ evas_object_hide(p->notify);\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+ } else {\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_FALSE);\r
+ }\r
+\r
+ if (eina_list_count(p->evtlist) <= 0 ) {\r
+ evas_object_hide(p->searchbar);\r
+ }\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static void __cal_list_delete_event_update_noti_received_cb (void *user_data)\r
+{\r
+ c_retm_if(!user_data, "user_data is null");\r
+ struct _priv *p = (struct _priv *)user_data;\r
+ __cal_list_delete_update_list(p);\r
+}\r
+\r
+static void __cal_list_delete_update_all_check(struct _priv* p)\r
+{\r
+ c_retm_if(!p, "p is null");\r
+ c_retm_if(!p->gl, "p is null");\r
+\r
+ Elm_Object_Item *it;\r
+ Eina_List* realized_list, *l;\r
+ cal_list_delete_item_data* item_data;\r
+\r
+ if (elm_check_state_get(p->select_all_check)) {\r
+ p->num_check = p->genlist_count;\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_FALSE);\r
+ __cal_list_delete_add_small_info(p, p->genlist_count);\r
+ } else {\r
+ p->num_check = 0;\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+ evas_object_hide(p->notify);\r
+ }\r
+\r
+ it = elm_genlist_first_item_get(p->gl);\r
+ while (it) {\r
+ item_data = elm_object_item_data_get(it);\r
+ if (item_data) {\r
+ item_data->checked = elm_check_state_get(p->select_all_check);\r
+ }\r
+ it = elm_genlist_item_next_get(it);\r
+ }\r
+\r
+ realized_list = elm_genlist_realized_items_get(p->gl);\r
+ EINA_LIST_FOREACH(realized_list, l, it)\r
+ {\r
+ if (it) {\r
+ elm_genlist_item_update(it);\r
+ }\r
+ }\r
+}\r
+\r
+static void __cal_list_delete_select_all_mouse_up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
+{\r
+ c_retm_if(!data, "data is null");\r
+ struct _priv *p = data;\r
+\r
+ Evas_Event_Mouse_Up *ev = event_info;\r
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)\r
+ return;\r
+\r
+ if (p->genlist_count <= 0) {\r
+ return;\r
+ }\r
+ elm_check_state_set(p->select_all_check, !elm_check_state_get(p->select_all_check));\r
+\r
+ __cal_list_delete_update_all_check(p);\r
+}\r
+\r
+static void __cal_list_delete_select_all_changed_callback(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+ c_retm_if(!obj, "obj is null");\r
+\r
+ struct _priv* p = data;\r
+ c_retm_if(!p, "p is null");\r
+ if (p->genlist_count <= 0) {\r
+ return;\r
+ }\r
+\r
+ __cal_list_delete_update_all_check(p);\r
+}\r
+\r
+static void __cal_list_delete_create_select_all(struct _priv* p)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!p, "p is null");\r
+ c_retm_if(!p->ly, "p->ly is null");\r
+ c_retm_if(!p->box, "p->box is null");\r
+\r
+ Evas_Object* layout = p->select_all_layout = elm_layout_add(p->box);\r
+ c_retm_if(!layout, "elm_layout_add returned null");\r
+ elm_layout_theme_set(layout, "genlist", "item", "select_all/default");\r
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);\r
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_UP, __cal_list_delete_select_all_mouse_up_callback, p);\r
+\r
+ Evas_Object* check = p->select_all_check = elm_check_add(p->select_all_layout);\r
+ c_retm_if(!check, "elm_check_add returned null");\r
+ evas_object_smart_callback_add(check, "changed", __cal_list_delete_select_all_changed_callback, p);\r
+ evas_object_propagate_events_set(check, EINA_FALSE);\r
+\r
+ elm_object_part_content_set(layout, "elm.icon", check);\r
+ evas_object_data_set(p->select_all_layout, "layout", p->select_all_layout);\r
+ elm_object_part_text_set(p->select_all_layout, "elm.text", S_("IDS_COM_BODY_SELECT_ALL"));\r
+ elm_box_pack_start(p->box, p->select_all_layout);\r
+ evas_object_show(p->select_all_layout);\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static Evas_Object* __cal_list_delete_create_layout(Evas_Object *parent, struct appdata *ad)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retvm_if(!parent, NULL, "parent is null");\r
+ c_retvm_if(!ad, NULL, "ad is null");\r
+\r
+ struct _priv *p = NULL;\r
+ Evas_Object *ly;\r
+ Evas_Object *conform;\r
+ int r;\r
+\r
+ p = calloc(1, sizeof(struct _priv));\r
+ c_retvm_if(!p, NULL, "p is null");\r
+\r
+ p->name = _name;\r
+ p->ad = ad;\r
+ p->parent = parent;\r
+ p->searchtext = NULL;\r
+ p->notify_layout = NULL;\r
+ p->notify = NULL;\r
+ p->navi_item = NULL;\r
+ p->genlist_count = 0;\r
+ p->bg = NULL;\r
+ is_list_delete_destory = EINA_FALSE;\r
+\r
+ ly = cal_util_add_layout(parent, p->name);\r
+ if (!ly) {\r
+ ERR("cal_util_add_layout returned null");\r
+ free(p);\r
+ return NULL;\r
+ }\r
+ p->ly = ly;\r
+ evas_object_data_set(ly, "priv", p);\r
+\r
+ p->bg = cal_util_add_bg(ly,EINA_FALSE);\r
+ if (!p->bg) {\r
+ ERR("cal_util_add_bg returned null");\r
+ evas_object_del(ly);\r
+ free(p);\r
+ return NULL;\r
+ }\r
+ elm_object_part_content_set(ly, "base", p->bg);\r
+\r
+ conform = elm_conformant_add(ly);\r
+ if (NULL == conform) {\r
+ ERR("elm_conformant_add() return NULL");\r
+ evas_object_del(ly);\r
+ free(p);\r
+ p = NULL;\r
+ return NULL;\r
+ }\r
+\r
+ elm_object_style_set(conform, "internal_layout");\r
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+\r
+ p->box = elm_box_add(p->ly);\r
+ if (!p->box) {\r
+ ERR("elm_box_add returned null");\r
+ evas_object_del(ly);\r
+ free(p);\r
+ ERR("box is null");\r
+ return NULL;\r
+ }\r
+ evas_object_size_hint_weight_set(p->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
+ elm_object_content_set(conform, p->box);\r
+\r
+ __cal_list_delete_create_select_all(p);\r
+\r
+ elm_object_part_content_set(ly, "sw", conform);\r
+ evas_object_show(ly);\r
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_list_delete_delete_layout, p);\r
+ r = calendar_svc_subscribe_change(__cal_list_delete_event_update_noti_received_cb, (void*)p);\r
+ if (r != CAL_SUCCESS) {\r
+ ERR("calendar service subscribe failed");\r
+ evas_object_del(ly);\r
+ free(p);\r
+ p = NULL;\r
+ return NULL;\r
+ }\r
+\r
+ CAL_FN_END;\r
+\r
+ return ly;\r
+}\r
+\r
+static void __cal_list_delete_cancel_callback(void *data, Evas_Object *obj, void *ei)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!data, "data is null");\r
+ struct _priv *p = data;\r
+\r
+ elm_naviframe_prev_btn_auto_pushed_set(p->ad->nv, EINA_TRUE);\r
+ elm_naviframe_item_pop(p->ad->nv);\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static void __cal_list_delete_delete_button_callback(void *data, Evas_Object *obj, void *ei)\r
+{\r
+ CAL_FN_START;\r
+\r
+ Evas_Object *ly = data;\r
+ cal_list_delete_item_data *item;\r
+ Elm_Object_Item *it;\r
+ Elm_Object_Item *temp;\r
+ int cid;\r
+ int r;\r
+\r
+ struct _priv *p = CAL_UTIL_GET_PRIV_DATA(ly);\r
+ c_retm_if(!p, "p is null");\r
+ c_retm_if(!p->evtlist, "p->evtlist is null");\r
+\r
+ it = elm_genlist_first_item_get(p->gl);\r
+ while(it) {\r
+ item = elm_object_item_data_get(it);\r
+ temp = elm_genlist_item_next_get(it);\r
+\r
+\r
+ if (item && item->cs != NULL && item->checked == EINA_TRUE) {\r
+\r
+ cid = CALENDAR_SVC_STRUCT_GET_INT(item->cs, CAL_VALUE_INT_INDEX);\r
+ r = calendar_svc_delete(CAL_STRUCT_SCHEDULE, cid);\r
+ if (r != CAL_SUCCESS) {\r
+ ERR("Calendar service delete failed: %d", r);\r
+ }\r
+ elm_object_item_del(it);\r
+ }\r
+ it = temp;\r
+ }\r
+\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+ p->searchtext = NULL;\r
+}\r
+\r
+\r
+Evas_Object *cal_list_delete_view_create(Evas_Object *parent, struct appdata *ad)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retvm_if(!ad || !parent, NULL, "Input parameter is null");\r
+\r
+ Evas_Object *ly;\r
+ Evas_Object *controlbar;\r
+\r
+ ly = __cal_list_delete_create_layout(parent,ad);\r
+ c_retvm_if(!ly, NULL, "__cal_list_delete_create_layout(parent,ad) is failed");\r
+ struct _priv * p = (struct _priv *)CAL_UTIL_GET_PRIV_DATA(ly);\r
+ c_retvm_if(!p, NULL, "p is null");\r
+\r
+ elm_naviframe_prev_btn_auto_pushed_set(ad->nv, EINA_FALSE);\r
+\r
+ p->navi_item = elm_naviframe_item_push(ad->nv, S_("IDS_COM_BODY_DELETE"), NULL, NULL, ly, NULL);\r
+ if (!p->navi_item)\r
+ {\r
+ ERR("elm_naviframe_item_push is failed");\r
+ evas_object_del(ly);\r
+ return NULL;\r
+ }\r
+\r
+ controlbar = cal_util_add_controlbar(ad->nv);\r
+ if (!controlbar)\r
+ {\r
+ ERR("cal_util_add_controlbar(ad->nv) is failed");\r
+ elm_naviframe_prev_btn_auto_pushed_set(ad->nv, EINA_TRUE);\r
+ elm_naviframe_item_pop(ad->nv);\r
+ return NULL;\r
+ }\r
+\r
+ p->bt_delete = elm_toolbar_item_append(controlbar, NULL, S_("IDS_COM_BODY_DELETE"), __cal_list_delete_delete_button_callback, ly);\r
+ elm_toolbar_item_append(controlbar, NULL, S_("IDS_COM_SK_CANCEL"), __cal_list_delete_cancel_callback, p);\r
+ elm_object_item_part_content_set(p->navi_item, "controlbar", controlbar);\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+\r
+ CAL_FN_END;\r
+\r
+ return ly;\r
+}\r
+\r
+static void __cal_list_delete_searchbar_entry_changed_callback(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+ CAL_FN_START;\r
+\r
+ struct _priv *p = (struct _priv *)data;\r
+ c_retm_if(!p, "priv is null.");\r
+\r
+ p->searchtext = elm_object_text_get(elm_object_part_content_get(p->searchbar, "elm.swallow.content"));\r
+ DBG("%s %d", p->searchtext, strlen(p->searchtext));\r
+\r
+ elm_genlist_clear(p->gl);\r
+\r
+ if (!p->gl) {\r
+ p->gl = elm_genlist_add(p->parent);\r
+ c_retm_if(!p->gl, "p->gl is null");\r
+ elm_genlist_decorate_mode_set(p->gl, EINA_TRUE);\r
+ evas_object_data_set(p->gl, "priv", p);\r
+ }\r
+\r
+ evas_object_del(p->select_all_layout);\r
+ __cal_list_delete_create_select_all(p);\r
+\r
+ p->num_check = 0;\r
+ p->offset = 0;\r
+ __cal_list_delete_append_genlist(p);\r
+\r
+ Evas_Object *conform = elm_object_part_content_get(p->ly, "sw");\r
+ c_retm_if(!conform, "conform is null");\r
+\r
+ if (p->genlist_count)\r
+ elm_object_content_set(conform, p->box);\r
+ else {\r
+ elm_object_content_unset(conform);\r
+ evas_object_hide(p->box);\r
+ }\r
+\r
+ if (p->genlist_count == p->num_check) {\r
+ if (p->num_check == 0) {\r
+ elm_check_state_set(p->select_all_check,EINA_FALSE);\r
+ elm_object_disabled_set(p->select_all_check, EINA_TRUE);\r
+ } else {\r
+ elm_check_state_set(p->select_all_check,EINA_TRUE);\r
+ }\r
+ } else {\r
+ elm_check_state_set(p->select_all_check,EINA_FALSE);\r
+ }\r
+\r
+ if (p->genlist_count > 0) {\r
+ elm_object_disabled_set(p->select_all_check, EINA_FALSE);\r
+ }\r
+\r
+ if (0 < p->num_check)\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_FALSE);\r
+ else\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+\r
+ __cal_list_delete_add_small_info(p,p->num_check);\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static void __cal_list_delete_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+ CAL_FN_START;\r
+\r
+ c_retm_if(!data, "data is null");\r
+ struct _priv *p = (struct _priv *)data;\r
+ Eina_List *l = NULL;\r
+ cal_list_delete_item_data *item = NULL;\r
+\r
+ Evas_Object *en = elm_object_part_content_get(p->searchbar, "elm.swallow.content");\r
+ c_retm_if(!en, "elm_object_part_content_get returned null");\r
+\r
+ Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);\r
+ c_retm_if(!imf_context, "elm_entry_imf_context_get returned null");\r
+\r
+ if (imf_context)\r
+ ecore_imf_context_input_panel_hide(imf_context);\r
+\r
+ if (0 < p->num_check)\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_FALSE);\r
+ else\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+\r
+ p->num_check = 0;\r
+\r
+ EINA_LIST_FOREACH(p->evtlist, l, item) {\r
+ if (item != NULL && item->checked) {\r
+ p->num_check++;\r
+ }\r
+ }\r
+\r
+ if (p->genlist_count== p->num_check && p->num_check != 0) {\r
+ elm_check_state_set(p->select_all_check,EINA_TRUE);\r
+ } else {\r
+ elm_check_state_set(p->select_all_check,EINA_FALSE);\r
+ }\r
+ elm_object_disabled_set(p->select_all_check, EINA_FALSE);\r
+ __cal_list_delete_add_small_info(p,p->num_check);\r
+\r
+ CAL_FN_END;\r
+}\r
+\r
+static void __cal_list_delete_searchbar_entry_unfocused_callback(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+ c_retm_if(!data, "data is null.");\r
+ struct _priv *p = data;\r
+\r
+ if (p->num_check <= 0) {\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+ } else {\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_FALSE);\r
+ }\r
+ __cal_list_delete_add_small_info(p,p->num_check);\r
+}\r
+\r
+static void __cal_list_delete_searchbar_clicked_callback(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+ c_retm_if(!data, "data is null.");\r
+ struct _priv *p = data;\r
+\r
+ elm_object_item_disabled_set(p->bt_delete, EINA_TRUE);\r
+}\r
+\r
+static void __cal_list_delete_create_searchbar(struct _priv *p)\r
+{\r
+ c_retm_if(!p, "priv is null.");\r
+ c_retm_if(!p->ly, "p->ly is null.");\r
+ c_retm_if(!p->box, "p->box is null.");\r
+\r
+ p->searchbar = cal_util_add_searchbar(p->ly, NULL, NULL, EINA_TRUE);\r
+ c_retm_if(!p->searchbar, "cal_util_add_searchbar() returned null.");\r
+\r
+ Evas_Object *en = elm_object_part_content_get(p->searchbar, "elm.swallow.content");\r
+ c_retm_if(!en, "elm_object_part_content_get returned null.");\r
+\r
+ elm_entry_input_panel_layout_set(en, ELM_INPUT_PANEL_LAYOUT_NORMAL);\r
+ elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &_limit_20char);\r
+\r
+ evas_object_size_hint_weight_set(p->searchbar, EVAS_HINT_EXPAND, 0);\r
+ evas_object_size_hint_align_set(p->searchbar, EVAS_HINT_FILL, 0.0);\r
+\r
+ evas_object_smart_callback_add(en, "changed", __cal_list_delete_searchbar_entry_changed_callback, p);\r
+ evas_object_smart_callback_add(en, "unfocused", __cal_list_delete_searchbar_entry_unfocused_callback, p);\r
+ evas_object_smart_callback_add(p->searchbar, "clicked", __cal_list_delete_searchbar_clicked_callback, p);\r
+ evas_object_smart_callback_add(p->searchbar, "cancel,clicked", __cal_list_delete_cancel_button_callback, p);\r
+\r
+ evas_object_show(p->searchbar);\r
+ elm_object_part_content_set(p->ly, "searchbar", p->searchbar);\r
+}\r
+\r
+void cal_list_delete_update_view(Evas_Object *ly)\r
+{\r
+ CAL_FN_START;\r
+\r
+ struct _priv *p;\r
+\r
+ c_retm_if(!ly, "ly is null.");\r
+\r
+ p = CAL_UTIL_GET_PRIV_DATA(ly);\r
+ if (!p || CAL_STRCMP(p->name, _name)) {\r
+ ERR("Invalid object");\r
+ return;\r
+ }\r
+\r
+ __cal_list_delete_create_searchbar(p);\r
+\r
+ __cal_list_delete_update_list(p);\r
+\r
+}\r
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <Elementary.h>
+
+#include "detail.h"
+#include "alm-mgr.h"
+#include "edit-repeat.h"
+#include "list.h"
+#include "external-ug.h"
+#include "view.h"
+
+static const char *_name = "list/base";
+static Elm_Entry_Filter_Limit_Size _limit_20char = {
+ .max_char_count = 20,
+};
+
+#define MAX_FETCH_SETS 10
+
+typedef struct {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+
+ Evas_Object *box;
+ Evas_Object *searchbar;
+ Evas_Object *genlist;
+ Evas_Object *no_contents;
+
+ Eina_Bool is_repeat_mode;
+
+ Eina_List *event_list; // cal_struct list
+
+ struct calsvc *csv;
+
+ time_t from;
+ time_t to;
+
+ const char *searchtext;
+
+ int totalcnt;
+ int event_offset;
+ int cur_position;
+ Ecore_Idler* idler; // To append list
+
+ struct tm last_itc_h; // To prevent duplicated cal_list_itc_h, in add events & add events idler
+
+ Eina_Bool is_today_added; //To check real today item is added.
+
+ Evas_Object *popup;
+
+ Elm_Object_Item* navi_item;
+ Elm_Object_Item *bt_new;
+ Elm_Object_Item *bt_delete;
+
+}cal_list_data;
+
+typedef struct {
+ Eina_Bool is_header;
+ int mode;
+ Eina_Bool checked; // Check status
+ void *data;
+}cal_list_genlist_item_data;
+
+static int is_hour24;
+static Calendar_color calendar_color;
+static Eina_Bool is_view_destory = EINA_FALSE;
+
+static void __cal_list_delete_genlist_header_item(void *data, Evas_Object *obj);
+static void __cal_list_delete_genlist_item(void *data, Evas_Object *obj);
+static char* __cal_list_get_genlist_header_item_label(void *data, Evas_Object *obj, const char *part);
+static char* __cal_list_get_genlist_item_label(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__cal_list_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part);
+
+
+static Elm_Genlist_Item_Class cal_list_itc_h = {
+ .item_style = "grouptitle",
+ .func.text_get = __cal_list_get_genlist_header_item_label,
+ .func.del = __cal_list_delete_genlist_header_item,
+};
+
+static Elm_Genlist_Item_Class cal_list_itc = {
+ .item_style = "3text.5icon",
+ .func.text_get = __cal_list_get_genlist_item_label,
+ .func.del = __cal_list_delete_genlist_item,
+ .func.content_get = __cal_list_get_genlist_item_icon,
+};
+
+static inline cal_list_genlist_item_data* __cal_list_add_item(Eina_Bool is_header, const void *data)
+{
+ cal_list_genlist_item_data *i = calloc(1, sizeof(cal_list_genlist_item_data));
+ c_retvm_if(!i, NULL, "i is null");
+
+ i->is_header= is_header;
+ i->data = (void*)data;
+
+ return i;
+}
+
+static inline Elm_Object_Item *__cal_list_append_genlist_item(Evas_Object *obj,
+ const Elm_Genlist_Item_Class *itc, const void *data,
+ Elm_Object_Item *parent, Elm_Genlist_Item_Type flags,
+ Evas_Smart_Cb func, const void *func_data)
+{
+ Eina_Bool is_header;
+
+ if (!strcmp(itc->item_style, "grouptitle"))
+ is_header = EINA_TRUE;
+ else
+ is_header = EINA_FALSE;
+
+ cal_list_genlist_item_data *i = __cal_list_add_item(is_header, data);
+
+ return elm_genlist_item_append(obj, itc, i, parent, flags, func, func_data);
+}
+static inline Elm_Object_Item* __cal_list_add_group_item(Evas_Object *gl,
+ const Elm_Genlist_Item_Class *itc, struct tm *tm)
+{
+ c_retvm_if(!gl, NULL, "gl is null");
+
+ cal_list_data *p = (cal_list_data *)CAL_UTIL_GET_PRIV_DATA(gl);
+ c_retvm_if(!p, NULL, "p is null.");
+
+ struct tm *t;
+
+ t = malloc(sizeof(struct tm));
+ if (!t)
+ return NULL;
+
+ *t = *tm;
+
+ Elm_Object_Item *item = __cal_list_append_genlist_item(gl, itc, t, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ c_retvm_if(!item, NULL, "item is null");
+
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ return item;
+}
+
+static Evas_Object *__cal_list_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "data is null.");
+
+ cal_list_genlist_item_data *item_data = data;
+ struct tmnode* tm = NULL;
+ cal_struct *cs = NULL;
+ cal_struct *calendar = NULL;
+ Evas_Object *icon = NULL;
+ int r;
+ cal_list_data *p = NULL;
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retvm_if(!p, NULL, "priv is null.");
+
+ if (p->is_repeat_mode)
+ {
+ tm = (struct tmnode *)item_data->data;
+ cs = tm->cs;
+ }
+ else
+ {
+ tm = NULL;
+ cs = (cal_struct *)item_data->data;
+ }
+
+ if (!CAL_STRCMP(part, "elm.swallow.colorbar"))
+ {
+ r = CALENDAR_SVC_GET(CAL_STRUCT_CALENDAR, CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_VALUE_INT_CALENDAR_ID), NULL, &calendar);
+ if (r != CAL_SUCCESS)
+ {
+ ERR("CALENDAR_SVC_GET fail. %d", r);
+ return NULL;
+ }
+
+ icon = evas_object_rectangle_add(evas_object_evas_get(obj));
+ evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ CALENDAR_SVC_GET_CALENDAR_COLOR(calendar, &calendar_color);
+
+ evas_object_color_set(icon, calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);
+
+ CALENDAR_SVC_STRUCT_FREE(&calendar);
+
+ return icon;
+ }
+
+ return NULL;
+}
+
+static void __cal_list_delete_genlist_header_item(void *data, Evas_Object *obj)
+{
+ c_retm_if(!data, "data is null.");
+
+ cal_list_genlist_item_data *i = data;
+
+ free(i->data);
+ free(i);
+}
+
+static void __cal_list_delete_genlist_item(void *data, Evas_Object *obj)
+{
+ c_retm_if(!data, "data is null.");
+ cal_list_genlist_item_data *i = data;
+
+ free(i);
+}
+
+static void __cal_list_get_search_list(cal_list_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "priv is null.");
+
+ int r = 0;
+ cal_iter *it;
+ cal_struct *cs;
+ int cal_id;
+
+ cal_id = 0;
+
+ it = NULL;
+
+ CALENDAR_SVC_FIND(p->ad->acct_id, cal_id, CAL_STRUCT_SCHEDULE, CAL_VALUE_TXT_SUMMARY, p->searchtext , &it);
+
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS)
+ {
+ cs = NULL;
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &cs);
+ if (r != CAL_SUCCESS)
+ break;
+
+ p->event_list = eina_list_append(p->event_list, cs);
+ }
+
+ CALENDAR_SVC_ITER_REMOVE(&it);
+
+ CAL_FN_END;
+}
+
+static void __cal_list_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Object_Item *it;
+ int idx;
+ cal_struct *cs = data;
+ cal_list_data *p;
+ int repeat;
+
+ it = elm_genlist_selected_item_get(obj);
+ if (it)
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ idx = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_INDEX);
+ repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "priv is null.");
+
+ if (repeat)
+ {
+ p->ad->tm->st = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ p->ad->tm->et = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_END_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ }
+ p->ad->cid = idx;
+ cal_detail_create_view(p->ad, p->parent);
+}
+
+static void __cal_list_add_events_with_idler(cal_list_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "priv is null.");
+ c_retm_if(!p->event_list, "p->event_list is null.");
+ c_retm_if(p->event_offset < 1, "p->event_offset is smaller than 1");
+
+ struct appdata* ad = p->ad;
+ c_retm_if(!ad, "ad is null.");
+
+ Eina_List *l;
+ cal_struct *cs;
+ Elm_Object_Item *it;
+ time_t t;
+ struct tm cur;
+ int t_old, t_cur, t_today;
+ Eina_List *append_list=NULL;
+
+ it = NULL;
+ t_old = 0;
+ t_today = (p->ad->today_tm.tm_year << 9) | (p->ad->today_tm.tm_mon << 5) | p->ad->today_tm.tm_mday;
+ append_list = eina_list_nth_list(p->event_list, p->event_offset -1);
+ c_retm_if(!append_list, "append_list is null");
+
+ cs = eina_list_data_get(append_list);
+ t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ localtime_r(&t, &cur);
+ t_old = (cur.tm_year << 9) | (cur.tm_mon << 5) | cur.tm_mday;
+
+ append_list = eina_list_next(append_list);
+ c_retm_if(!append_list, "eina_list_nth_list(append_list, 1) is null");
+
+ EINA_LIST_FOREACH(append_list, l, cs) {
+
+ if (!cs) {
+ ERR("cs is null");
+ continue;
+ }
+
+ t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_END_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ localtime_r(&t, &cur);
+ t_cur = (cur.tm_year << 9) | (cur.tm_mon << 5) | cur.tm_mday;
+
+ if (t_old != t_cur) {
+
+ it = __cal_list_add_group_item(p->genlist, &cal_list_itc_h, &cur);
+ t_old = t_cur;
+
+ if (t_today == t_cur) {
+ ad->today_item = it;
+ p->is_today_added = EINA_TRUE;
+ }
+
+ if (!p->is_today_added) {
+ if (t_cur > t_today) {
+ ad->today_item = it;
+ p->is_today_added = EINA_TRUE;
+ }
+ else
+ ad->today_item = it;
+ }
+
+ p->last_itc_h = cur;
+ }
+
+ __cal_list_append_genlist_item(p->genlist, &cal_list_itc, cs, it,
+ ELM_GENLIST_ITEM_NONE, __cal_list_genlist_item_select_callback, cs);
+
+ p->event_offset++;
+ }
+
+ CAL_FN_END;
+}
+
+Eina_Bool __cal_list_update_fetch_list_idler(void* data)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "data is null.");
+
+ cal_list_data *p = data;
+ int r;
+ cal_iter *it=NULL;
+ cal_struct *cs=NULL;
+ int cal_id;
+ cal_id = 0;
+ it = NULL;
+ Eina_Bool is_finished = EINA_FALSE;
+
+ c_retvm_if(is_view_destory, ECORE_CALLBACK_CANCEL, "view is destroyed");
+ c_retvm_if(!p->idler, ECORE_CALLBACK_CANCEL, "p->idler is null");
+
+ r = CALENDAR_SVC_GET_LIST(ALL_VISIBILITY_ACCOUNT, ALL_CALENDAR_ID,CAL_STRUCT_SCHEDULE,
+ CAL_VALUE_LIST_FILED, p->event_offset,MAX_FETCH_SETS,&it);
+ c_retvm_if(r!=CAL_SUCCESS, ECORE_CALLBACK_CANCEL,
+ "CALENDAR_SVC_GET_LIST(ALL_VISIBILITY_ACCOUNT, ALL_CALENDAR_ID, CAL_STRUCT_SCHEDULE, CAL_VALUE_LIST_FILED, %d, %d) is failed(%d)",
+ CAL_VALUE_LIST_FILED, p->event_offset, r);
+
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+
+ cs = NULL;
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &cs);
+ if (r != CAL_SUCCESS) {
+ ERR("CALENDAR_SVC_ITER_GET_INFO() is failed(%d)", r);
+ break;
+ }
+
+ p->event_list = eina_list_append(p->event_list, cs);
+ }
+
+ CALENDAR_SVC_ITER_REMOVE(&it);
+
+ if (eina_list_count(p->event_list) < MAX_FETCH_SETS)
+ is_finished = EINA_TRUE;
+
+ __cal_list_add_events_with_idler(p);
+
+ if (is_finished || (p->event_offset == p->totalcnt)) {
+ if (p->idler)
+ {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
+ p->event_offset = 0;
+
+ DBG("Update genlist is done");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ CAL_FN_END;
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+static void __cal_list_get_events(cal_list_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "priv is null.");
+
+ int r;
+ cal_iter *it = NULL;
+ cal_struct *cs;
+ int cal_id = 0;
+
+ p->totalcnt = CALENDAR_SVC_GET_COUNT(p->ad->acct_id, cal_id, CAL_STRUCT_SCHEDULE);
+
+ r = CALENDAR_SVC_GET_LIST(p->ad->acct_id, cal_id, CAL_STRUCT_SCHEDULE,
+ CAL_VALUE_LIST_FILED, 0, MAX_FETCH_SETS, &it);
+ c_retm_if(r!=CAL_SUCCESS,
+ "CALENDAR_SVC_GET_LIST(%d, %d, CAL_STRUCT_SCHEDULE, CAL_VALUE_LIST_FILED,0, MAX_FETCH_SETS) is failed(%d)",
+ p->ad->acct_id, cal_id, r);
+
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+ cs = NULL;
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &cs);
+ if (r != CAL_SUCCESS) {
+ ERR("CALENDAR_SVC_ITER_GET_INFO() is failed(%d)", r);
+ break;
+ }
+
+ p->event_list = eina_list_append(p->event_list, cs);
+ }
+
+ CALENDAR_SVC_ITER_REMOVE(&it);
+
+ if (eina_list_count(p->event_list) < p->totalcnt)
+ p->idler = ecore_idler_add(__cal_list_update_fetch_list_idler,p);
+
+ CAL_FN_END;
+}
+
+static void __cal_list_add_event_to_genlist(cal_list_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "priv is null.");
+ Eina_List *l;
+ cal_struct *cs;
+ Elm_Object_Item *it;
+ time_t t;
+ struct tm cur;
+ int t_old, t_cur, t_today;
+ struct appdata* ad = p->ad;
+ c_retm_if(!ad, "ad is null.");
+
+ it = NULL;
+ t_old = 0;
+ t_today = (p->ad->today_tm.tm_year << 9) |
+ (p->ad->today_tm.tm_mon << 5) | p->ad->today_tm.tm_mday;
+
+ EINA_LIST_FOREACH(p->event_list, l, cs)
+ {
+ t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ localtime_r(&t, &cur);
+ t_cur = (cur.tm_year << 9) | (cur.tm_mon << 5) | cur.tm_mday;
+
+ if (t_old != t_cur)
+ {
+ it = __cal_list_add_group_item(p->genlist, &cal_list_itc_h, &cur);
+ t_old = t_cur;
+
+ if (t_today == t_cur)
+ {
+ ad->today_item = it;
+ p->is_today_added = EINA_TRUE;
+ }
+
+ if (!p->is_today_added)
+ {
+ if (t_cur > t_today)
+ {
+ ad->today_item = it;
+ p->is_today_added = EINA_TRUE;
+ }
+ else
+ ad->today_item = it;
+ }
+
+ p->last_itc_h = cur;
+ }
+
+ __cal_list_append_genlist_item(p->genlist, &cal_list_itc, cs, it,
+ ELM_GENLIST_ITEM_NONE, __cal_list_genlist_item_select_callback, cs);
+
+ p->event_offset++;
+ }
+
+ CAL_FN_END;
+}
+
+static void __cal_list_add_csv(cal_list_data *p)
+{
+ c_retm_if(!p, "priv is null.");
+ c_retm_if(!p->csv, "p->csv is null.");
+
+ Eina_List *l;
+ struct tmnode *tm;
+ Elm_Object_Item *it;
+ struct tm cur;
+ int t_old, t_cur, t_today;
+
+ it = NULL;
+ t_old = 0;
+ t_today = (p->ad->today_tm.tm_year << 9) |
+ (p->ad->today_tm.tm_mon << 5) | p->ad->today_tm.tm_mday;
+
+ EINA_LIST_FOREACH(p->csv->tmlist, l, tm) {
+ if(!tm)
+ continue;
+
+ localtime_r(&tm->st, &cur);
+ t_cur = (cur.tm_year << 9) | (cur.tm_mon << 5) | cur.tm_mday;
+
+ if (t_today && t_today <= t_cur)
+ {
+ it = __cal_list_add_group_item(p->genlist, &cal_list_itc_h, &p->ad->today_tm);
+ t_old = t_today;
+ t_today = 0;
+ }
+
+ if (t_old != t_cur)
+ {
+ it = __cal_list_add_group_item(p->genlist, &cal_list_itc_h, &cur);
+ t_old = t_cur;
+ }
+
+ __cal_list_append_genlist_item(p->genlist, &cal_list_itc, tm, it,
+ ELM_GENLIST_ITEM_NONE, __cal_list_genlist_item_select_callback, tm->cs);
+ }
+
+ if (p->csv->tmlist && t_today)
+ __cal_list_add_group_item(p->genlist, &cal_list_itc_h, &p->ad->today_tm);
+}
+
+static int __cal_list_sort_tm(const void *d1, const void *d2)
+{
+ const struct tmnode *t1 = d1;
+ const struct tmnode *t2 = d2;
+
+ if (!t1)
+ return 1;
+ if (!t2)
+ return -1;
+
+ return t1->st > t2->st ? 1 : -1;
+}
+
+static inline void __cal_list_sort_csv(struct calsvc *csv)
+{
+ if (!csv)
+ return;
+
+ int sz = eina_list_count(csv->tmlist);
+ csv->tmlist = eina_list_sort(csv->tmlist, sz, __cal_list_sort_tm);
+}
+
+static void __cal_list_update_genlist(cal_list_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "priv is null.");
+
+ struct appdata* ad = p->ad;
+ c_retm_if(!ad, "ad is null.");
+
+ if (p->idler)
+ {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
+ if (!p->genlist)
+ {
+ p->genlist = elm_genlist_add(p->parent);
+ c_retm_if(!p->genlist, "p->genlist is null.");
+ evas_object_data_set(p->genlist, "priv", p);
+ }
+
+ elm_genlist_clear(p->genlist);
+ ad->today_item = NULL;
+ CALENDAR_SVC_FREE_CS_LIST(&p->event_list);
+ CALENDAR_SVC_FREE_CS(&p->csv);
+ p->event_offset = 0;
+
+ if (p->is_repeat_mode) {
+ p->csv = CALENDAR_SVC_GET_EVENT(p->ad->acct_id, p->from, p->to);
+ __cal_list_sort_csv(p->csv);
+ __cal_list_add_csv(p);
+ p->totalcnt = eina_list_count(p->csv->tmlist);
+ }
+ else {
+ if (CAL_STRLEN(p->searchtext))
+ __cal_list_get_search_list(p);
+ else
+ __cal_list_get_events(p);
+
+ __cal_list_add_event_to_genlist(p);
+ }
+
+ CAL_FN_END;
+}
+
+static void __cal_list_update_no_item(cal_list_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "priv is null.");
+
+ Elm_Object_Item *it = elm_genlist_first_item_get(p->genlist);
+
+ if (!CAL_STRLEN(p->searchtext) && !it)
+ {
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->ly), "searchbar,hide", "prog");
+
+ if (!p->no_contents)
+ p->no_contents = cal_util_add_nocontents(p->ly, C_("IDS_CLD_BODY_NO_EVENTS"));
+
+ evas_object_hide(p->genlist);
+ evas_object_show(p->no_contents);
+ elm_object_part_content_set(p->ly, "sw", p->no_contents);
+ p->genlist = NULL;
+ }
+ else
+ {
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->ly), "searchbar,show", "prog");
+
+ evas_object_hide(p->no_contents);
+ evas_object_show(p->genlist);
+ elm_object_part_content_set(p->ly, "sw", p->genlist);
+ p->no_contents = NULL;
+ }
+
+ CAL_FN_END;
+}
+
+static void __cal_list_update_list(cal_list_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "priv is null.");
+
+ __cal_list_update_genlist(p);
+ __cal_list_update_no_item(p);
+
+ CAL_FN_END;
+}
+
+static void __cal_list_searchbar_entry_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ CAL_FN_START;
+
+ cal_list_data *p = (cal_list_data *)data;
+ c_retm_if(!p, "priv is null.");
+
+ p->searchtext = elm_object_text_get(elm_object_part_content_get(p->searchbar, "elm.swallow.content"));
+
+ __cal_list_update_list(p);
+
+ CAL_FN_END;
+}
+
+static void __cal_list_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ CAL_FN_START;
+
+ cal_list_data *p = (cal_list_data *)data;
+ c_retm_if(!p, "priv is null.");
+
+ Evas_Object *en = elm_object_part_content_get(p->searchbar, "elm.swallow.content");
+
+ Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
+
+ if (imf_context)
+ ecore_imf_context_input_panel_hide(imf_context);
+
+ elm_object_item_disabled_set(p->ad->bt_new, EINA_FALSE);
+
+ CAL_FN_END;
+}
+
+static void __cal_list_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ cal_list_data *p = data;
+ c_retm_if(!p, "priv is null.");
+
+ is_view_destory = EINA_TRUE;
+ if (p->idler) {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
+ CALENDAR_SVC_FREE_CS_LIST(&p->event_list);
+ CALENDAR_SVC_FREE_CS(&p->csv);
+
+ free(p);
+
+ CAL_FN_END;
+}
+
+static char* __cal_list_get_genlist_header_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "datais null.");
+
+ char buf[128];
+ cal_list_genlist_item_data *i = data;
+ const struct tm *t;
+
+ t = i->data;
+ if (!CAL_STRCMP(part, "elm.text"))
+ {
+ if (t == NULL)
+ return strdup(_("Repeat events"));
+
+ cal_util_get_time_text(buf, sizeof(buf), CAL_UTIL_DATE_FORMAT_1, NULL, t);
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+static char* __cal_list_get_genlist_item_cs_label(cal_struct *cs)
+{
+ c_retvm_if(!cs, NULL, "cs is null.");
+
+ char buf[512];
+ char stime[512];
+ time_t st;
+ struct tm tm;
+ const char* time;
+
+ if (is_hour24)
+ time = CAL_UTIL_TIME_FORMAT_6;
+ else
+ time = CAL_UTIL_TIME_FORMAT_1;
+
+ st = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ localtime_r(&st, &tm);
+
+ cal_util_get_time_text(stime, sizeof(stime), NULL, time, &tm);
+
+ snprintf(buf, sizeof(buf), "%s", stime);
+
+ return strdup(buf);
+}
+
+static char* __cal_list_get_genlist_item_tm_label(struct tmnode *tm)
+{
+ c_retvm_if(!tm, NULL, "tm is null.");
+
+ char buf[512];
+ char stime[512];
+ struct tm t;
+
+ localtime_r(&tm->st, &t);
+
+ if (is_hour24)
+ cal_util_get_time_text(stime, sizeof(stime), NULL, CAL_UTIL_TIME_FORMAT_6, &t);
+ else
+ cal_util_get_time_text(stime, sizeof(stime), NULL, CAL_UTIL_TIME_FORMAT_1, &t);
+
+ snprintf(buf, sizeof(buf), "%s", stime);
+
+ return strdup(buf);
+}
+
+static char* __cal_list_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "data is null");
+
+ struct tmnode *tm = NULL;
+ cal_struct *cs = NULL;
+ const char *str = NULL;
+ cal_list_data *p = NULL;
+ cal_list_genlist_item_data *i = data;
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retvm_if(!p, NULL, "p is null");
+
+ if (!i || !i->data || i->is_header)
+ return NULL;
+
+ if (p->is_repeat_mode)
+ {
+ tm = i->data;
+ cs = tm->cs;
+ }
+ else
+ {
+ tm = NULL;
+ cs = i->data;
+ }
+
+ c_retvm_if(!cs, NULL, "cs is null.");
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
+ }
+ else if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_LOCATION);
+ if (CAL_STRLEN(str))
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_LOCATION_SELECTED"));
+ }
+ else if (!CAL_STRCMP(part, "elm.text.3"))
+ {
+ if (p->is_repeat_mode)
+ return __cal_list_get_genlist_item_tm_label(tm);
+ else
+ return __cal_list_get_genlist_item_cs_label(cs);
+ } else if (!CAL_STRCMP(part, "elm.slide.text.1")) {
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
+ }
+
+ return NULL;
+}
+
+static void __cal_list_searchbar_entry_unfocused_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ cal_list_data *p = (cal_list_data *)data;
+ elm_object_item_disabled_set(p->ad->bt_new, EINA_FALSE);
+}
+
+static void __cal_list_searchbar_clicked_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ cal_list_data *p = (cal_list_data *)data;
+
+ elm_object_item_disabled_set(p->ad->bt_new, EINA_TRUE);
+}
+
+static void __cal_list_create_searchbar(cal_list_data *p)
+{
+ c_retm_if(!p, "priv is null.");
+ c_retm_if(!p->ly, "p->ly is null.");
+
+ Evas_Object *searchbar = cal_util_add_searchbar(p->ly, NULL, NULL, EINA_TRUE);
+ c_retm_if(!searchbar, "cal_util_add_searchbar() returned null.");
+
+ Evas_Object *en = elm_object_part_content_get(searchbar, "elm.swallow.content");
+ c_retm_if(!en, "elm_object_part_content_get returned null.");
+
+ elm_entry_input_panel_layout_set(en, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+ elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &_limit_20char);
+
+ evas_object_size_hint_weight_set(searchbar, EVAS_HINT_EXPAND, 0);
+ evas_object_size_hint_align_set(searchbar, EVAS_HINT_FILL, 0.0);
+
+ evas_object_smart_callback_add(en, "changed", __cal_list_searchbar_entry_changed_callback, p);
+ evas_object_smart_callback_add(en, "unfocused", __cal_list_searchbar_entry_unfocused_callback, p);
+ evas_object_smart_callback_add(searchbar, "clicked", __cal_list_searchbar_clicked_callback, p);
+ evas_object_smart_callback_add(searchbar, "cancel,clicked", __cal_list_cancel_button_callback, p);
+
+ evas_object_show(searchbar);
+ elm_object_part_content_set(p->ly, "searchbar", searchbar);
+
+ p->searchbar = searchbar;
+}
+
+Evas_Object* cal_list_create_list(struct appdata *ad, Evas_Object *parent)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!ad, NULL, "ad is null.");
+ c_retvm_if(!parent, NULL, "parent is null.");
+
+ cal_list_data *p;
+ Evas_Object *ly;
+ Evas_Object *gl;
+ Evas_Object *bg;
+ time_t st = 0;
+ time_t et = 0;
+
+ CAL_CALLOC(p, 1, cal_list_data);
+
+ p->name = _name;
+ p->ad = ad;
+ p->parent = parent;
+ p->popup = NULL;
+ is_hour24 = p->ad->is_hour24;
+
+ ly = cal_util_add_layout(parent, p->name);
+ if (!ly)
+ {
+ free(p);
+ ERR("ly is null.");
+ return NULL;
+ }
+
+ evas_object_data_set(ly, "priv", p);
+ p->ly = ly;
+ p->from = st;
+ p->to = et;
+ p->is_repeat_mode= EINA_FALSE;
+ p->idler = NULL;
+ is_view_destory = EINA_FALSE;
+
+ elm_object_item_disabled_set(p->ad->bt_new, EINA_FALSE);
+
+ bg = cal_util_add_bg(ly, EINA_FALSE);
+ if (!bg)
+ {
+ free(p);
+ free(ly);
+ ERR("bg is null.");
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "base", bg);
+
+ gl = elm_genlist_add(parent);
+ if (!gl)
+ {
+ free(p);
+ free(ly);
+ ERR("gl is null.");
+ return NULL;
+ }
+
+ p->genlist = gl;
+ evas_object_data_set(gl, "priv", p);
+ elm_object_part_content_set(ly, "sw", gl);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_list_delete_layout, p);
+
+ return ly;
+}
+
+void cal_list_scroll_today(struct appdata* ad)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ad, "ad is null.");
+
+ Elm_Object_Item* it = ad->today_item;
+ if (it)
+ {
+ elm_genlist_item_bring_in(it, ELM_GENLIST_ITEM_SCROLLTO_TOP);
+ DBG("scroll to : %p", it);
+ }
+
+ CAL_FN_END;
+}
+
+void cal_list_update_list(Evas_Object *ly)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ly, "ly is null.");
+
+ cal_list_data *p;
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name))
+ {
+ ERR("Invalid object");
+ return;
+ }
+
+ c_retm_if(!p->ad, "p->ad is null.");
+
+ __cal_list_create_searchbar(p);
+
+ __cal_list_update_genlist(p);
+ __cal_list_update_no_item(p);
+
+ if (!p->totalcnt)
+ elm_object_item_disabled_set(p->ad->bt_delete, EINA_TRUE);
+ else
+ elm_object_item_disabled_set(p->ad->bt_delete, EINA_FALSE);
+
+ p->ad->base_tm = p->ad->today_tm;
+
+ CAL_FN_END;
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_LIST_H__
+#define __CALENDAR_LIST_H__
+
+#include <time.h>
+#include "cld.h"
+
+/* return layout */
+Evas_Object *cal_list_create_list(struct appdata *ad, Evas_Object *parent);
+
+void cal_list_update_list(Evas_Object *ly);
+
+#endif /* __CALENDAR_LIST_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <appcore-efl.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <heynoti.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <aul.h>
+
+#include "view.h"
+#include "detail.h"
+#include "alm-mgr.h"
+
+#define NOTI_TIME_CHANGED "setting_time_changed"
+
+static void __cal_main_setup_data(struct appdata *ad);
+static Eina_Bool __cal_main_update_today(void *data);
+
+Eina_Bool noti_handle = 0;
+Ecore_Idler *idler=NULL;
+int totalcnt = 0;
+int realcnt = 0;
+struct appdata ad;
+
+static Evas_Object* __cal_main_add_base_layout(Evas_Object *win)
+{
+ Evas_Object *ly;
+ ly = cal_util_add_layout(win, NULL);
+ if (ly) {
+ elm_win_resize_object_add(win, ly);
+ }
+ return ly;
+}
+
+static void __cal_main_changed_callback(void *data)
+{
+ DBG("");
+
+ __cal_main_setup_data(&ad);
+
+ if(ad.is_pause)
+ {
+ ad.is_update_view = EINA_TRUE;
+ return;
+ }
+
+ cal_main_update_view(&ad);
+
+ return;
+}
+
+static void __cal_main_set_today_tm(struct appdata *ad)
+{
+ struct tm tm;
+ time_t t;
+ time_t now;
+
+ now = time(NULL);
+ localtime_r(&now, &tm);
+ tm.tm_min = 0; // min, sec reset for mktime()
+ tm.tm_sec = 0;
+
+ ad->today_tm = tm;
+
+ tm.tm_hour = 0;
+ t = mktime(&tm);
+ if (t == (time_t)-1)
+ {
+ ad->today_tmr = NULL;
+ return;
+ }
+
+ t = t + (24 * 60 * 60) - time(NULL);
+ ad->today_tmr = ecore_timer_add((double)t, __cal_main_update_today, ad);
+}
+
+static Eina_Bool __cal_main_update_today(void *data)
+{
+ struct appdata *ad = data;
+
+ __cal_main_set_today_tm(ad);
+
+ if (ad->today_edj)
+ edje_object_signal_emit(ad->today_edj, "update_today", "prog");
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __cal_main_setup_data(struct appdata *ad)
+{
+ __cal_main_set_today_tm(ad);
+
+ if(ad->base_tm.tm_year == 0)
+ ad->base_tm = ad->today_tm;
+
+ int r,val;
+
+ r = vconf_get_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT,&val);
+ if(0 > r)
+ {
+ ad->wday_start = 0;
+ }
+ else
+ {
+ ad->wday_start = val;
+ }
+
+ if(!ad->tm)
+ ad->tm = malloc(sizeof(struct tmnode));
+
+ r = vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224, &val);
+ if(0 > r)
+ {
+ ad->is_hour24 = 0;
+ }
+ else if( val == 1 || val == 2)
+ {
+ ad->is_hour24 = val -1;
+ }
+ else
+ ERR("vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224, &val); error");
+
+ ad->is_update_view = EINA_TRUE;
+
+ ad->acct_id = ALL_VISIBILITY_ACCOUNT;
+}
+
+static void __cal_main_time_changed_callback(void *data)
+{
+ struct appdata *ad = data;
+
+ DBG("");
+
+ __cal_main_update_today(ad);
+}
+
+static int __cal_main_initialize_notification(struct appdata *ad)
+{
+ int r;
+ int fd;
+
+ fd = heynoti_init();
+ if (fd < 0)
+ return -1;
+
+ r = heynoti_subscribe(fd, NOTI_TIME_CHANGED, __cal_main_time_changed_callback, ad);
+ if (r) {
+ heynoti_close(fd);
+ return -1;
+ }
+
+ r = heynoti_attach_handler(fd);
+ if (r) {
+ heynoti_close(fd);
+ return -1;
+ }
+
+ return fd;
+}
+
+static void __cal_main_timezone_vconf_changed_callback(keynode_t *node, void *user_data)
+{
+ CAL_FN_START;
+
+ c_retm_if(NULL == node, "node is null");
+ c_retm_if(NULL == user_data, "user_data is null");
+
+ cal_main_update_view(user_data);
+
+ return;
+}
+
+static void __cal_main_week_of_day_format_vconf_changed_callback(keynode_t *node, void *user_data)
+{
+ CAL_FN_START;
+
+ c_retm_if(NULL == node, "node is null");
+ c_retm_if(NULL == user_data, "user_data is null");
+
+ struct appdata* ad = user_data;
+ int r = vconf_keynode_get_int(node);
+ c_retm_if(r < 0, "vconf_keynode_get_int is failed");
+
+ ad->wday_start = r;
+
+ cal_main_update_view(ad);
+}
+
+static void __cal_main_view_of_month_format_vconf_changed_callback(keynode_t *node, void *user_data)
+{
+ CAL_FN_START;
+
+ c_retm_if(NULL == node, "node is null");
+ c_retm_if(NULL == user_data, "user_data is null");
+
+ struct appdata* ad = user_data;
+ int r = vconf_keynode_get_int(node);
+ c_retm_if(r < 0, "vconf_keynode_get_int is failed");
+
+ ad->is_weekly = r;
+
+ cal_main_update_view(ad);
+}
+
+
+static void __cal_main_time_format_vconf_changed_callback(keynode_t *node, void *user_data)
+{
+ CAL_FN_START;
+
+ c_retm_if(!node, "node is null");
+ c_retm_if(!user_data, "user_data is null");
+
+ struct appdata* ad = user_data;
+
+ int r = vconf_keynode_get_int(node);
+ c_retm_if(r < 0, "vconf_keynode_get_int is failed");
+
+ ad->is_hour24 = r -1;
+
+ cal_main_update_view(ad);
+}
+
+static Eina_Bool __cal_main_initialize_with_idler(void* data)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "data is null");
+
+ struct appdata* ad = data;
+ int r = 0;
+
+ r = vconf_notify_key_changed(CAL_VCONFKEY_FOCUS_VIEW,__cal_main_view_of_month_format_vconf_changed_callback,ad);
+ if (r!= CAL_SUCCESS)
+ ERR("vconf_notify_key_changed failed");
+
+ r = vconf_notify_key_changed(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT , __cal_main_week_of_day_format_vconf_changed_callback, ad);
+ if (r != CAL_SUCCESS)
+ ERR("vconf_notify_key_changed failed");
+
+ r = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224 , __cal_main_time_format_vconf_changed_callback, ad);
+ if (r != CAL_SUCCESS)
+ ERR("vconf_notify_key_changed failed");
+
+ r = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT , __cal_main_timezone_vconf_changed_callback, ad);
+ if (r != CAL_SUCCESS)
+ ERR("vconf_notify_key_changed failed");
+
+ r = cal_alarm_manager_initialize(ad);
+ c_warn_if(r, "cal_alarm_manager_initialize is failed(%d)", r);
+
+ ad->notifd = __cal_main_initialize_notification(ad);
+ c_warn_if(ad->notifd < 0, "__cal_main_initialize_notification is failed(%d)", ad->notifd);
+
+ r = account_connect();
+ c_warn_if(r != ACCOUNT_ERROR_NONE, "account_connect is failed(%x)", r);
+
+ UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+
+ cal_main_add_changed_callback(ad);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static int __cal_main_initialize(struct appdata *ad)
+{
+ c_retvm_if(!ad, -1, "ad is null");
+
+ int r;
+
+ __cal_main_setup_data(ad);
+
+ r = CALENDAR_SVC_CONNECT();
+ c_retvm_if(r != CAL_SUCCESS, -1, "CALENDAR_SVC_CONNECT is failed(%d)", r);
+
+ cal_util_connect_pattern_generator();
+
+ return 0;
+}
+
+static void __cal_main_finish(struct appdata *ad)
+{
+ int r;
+
+ ug_destroy_all();
+
+ if (ad->notifd >= 0)
+ heynoti_close(ad->notifd);
+
+ cal_util_disconnect_pattern_generator();
+
+ r = account_disconnect();
+ c_warn_if(r != ACCOUNT_ERROR_NONE, "account_connect is failed(%x)", r);
+
+ cal_alarm_manager_finish();
+
+ r = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, __cal_main_timezone_vconf_changed_callback);
+ if (r)
+ ERR("vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT) failed");
+
+ r = vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT_TIME1224, __cal_main_time_format_vconf_changed_callback);
+ if (r)
+ ERR("vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT_TIME1224) failed");
+
+ r = vconf_ignore_key_changed(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT, __cal_main_week_of_day_format_vconf_changed_callback);
+ if (r)
+ ERR("vconf_ignore_key_changed(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT) failed");
+
+ CALENDAR_SVC_DISCONNECT();
+}
+
+static void __cal_main_rendering_flush_callback(void *data, Evas *e, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+
+ evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST, __cal_main_rendering_flush_callback);
+
+ ecore_idler_add(__cal_main_initialize_with_idler, data);
+}
+
+static int __cal_main_add_naviframe(struct appdata *ad)
+{
+ c_retvm_if(!ad, -1, "ad is null");
+
+ ad->nv = elm_naviframe_add(ad->base);
+ c_retvm_if(!ad->nv, -1, "elm_naviframe_add returned null");
+
+ Evas *e = evas_object_evas_get(ad->nv);
+ c_retvm_if(!e, -1, "evas_object_evas_get returned null");
+
+ evas_event_callback_add(e, EVAS_CALLBACK_RENDER_FLUSH_POST, __cal_main_rendering_flush_callback, ad);
+
+ elm_object_theme_set(ad->nv, ad->theme);
+ elm_object_part_content_set(ad->base, "elm.swallow.content", ad->nv);
+
+ return 0;
+}
+
+static int cal_create(void *data)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!data, -1, "data is null");
+
+ struct appdata *ad = data;
+ int r;
+
+ ad->win = cal_util_add_window(CALENDAR_PACKAGE, &ad->win_w, &ad->win_h);
+ c_retvm_if(!ad->win, -1, "ad->win is null");
+
+ ad->bg = cal_util_add_bg(ad->win, EINA_TRUE);
+ c_retvm_if(!ad->bg, -1, "ad->bg is null");
+
+ ad->base = __cal_main_add_base_layout(ad->win);
+ c_retvm_if(!ad->base, -1, "ad->base is null");
+
+ r = __cal_main_initialize(ad);
+ c_retvm_if(r, -1, "__cal_main_initialize is failed(%d)", r);
+
+ ad->theme = elm_theme_new();
+ c_retvm_if(!ad->theme, -1, "ad->theme is null");
+ elm_theme_ref_set(ad->theme, NULL);
+
+ r = __cal_main_add_naviframe(ad);
+ c_retvm_if(r, -1, "__cal_main_add_naviframe is failed(%d)", r);
+
+ return 0;
+}
+
+static int cal_terminate(void *data)
+{
+ DBG("");
+ CAL_ASSERT(data);
+
+ struct appdata *ad = data;
+
+ ug_destroy_all();
+
+ __cal_main_finish(ad);
+
+ if (ad->win)
+ evas_object_del(ad->win);
+
+ return 0;
+}
+
+static void __cal_main_raise_main_view(struct appdata *ad)
+{
+ DBG("");
+
+ CAL_ASSERT(ad);
+
+ Elm_Object_Item* bottom = elm_naviframe_bottom_item_get(ad->nv);
+ if(!bottom)
+ return;
+
+ elm_naviframe_item_pop_to(bottom);
+
+ if(ad->main_navi_item == bottom)
+ elm_naviframe_item_pop(ad->nv);
+}
+
+static inline void __cal_main_add_naviframe_content(struct appdata *ad)
+{
+ DBG("");
+
+ switch (ad->request_view)
+ {
+ case CV_YEAR:
+ case CV_MONTH:
+ case CV_DAY:
+ case CV_LIST:
+ __cal_main_raise_main_view(ad);
+ cal_main_create_view(ad);
+ break;
+ case CV_DETAIL:
+ cal_detail_create_view(ad,ad->base);
+ break;
+ case CV_EDIT:
+ cal_edit_create_view(ad,ad->base);
+ break;
+ default:
+ /* TODO: add more */
+ break;
+ }
+
+ Evas_Object *back_button = elm_object_item_part_content_get(elm_naviframe_bottom_item_get(ad->nv), "prev_btn");
+ c_ret_if(!back_button);
+
+ elm_object_focus_allow_set(back_button, EINA_FALSE);
+
+}
+
+static int cal_resume(void *data)
+{
+ DBG("");
+ CAL_ASSERT(data);
+
+ struct appdata* ad = (struct appdata*)data;
+
+ ug_resume();
+
+ ad->is_pause = EINA_FALSE;
+
+ if (ad->is_update_view)
+ __cal_main_changed_callback(ad);
+
+ return 0;
+}
+
+static int __cal_main_select_view(bundle *b, struct appdata* ad)
+{
+ CAL_ASSERT(b);
+ CAL_ASSERT(ad);
+
+ const char* val = NULL;
+ int r = 0;
+
+ if (b)
+ val = bundle_get_val(b,AUL_K_SERVICE_NAME);
+
+ if (val)/*AUL SERVICE*/
+ {
+ if(!CAL_STRCMP(val,"create_event"))
+ {
+ ad->request_view = CV_MONTH;
+ ad->is_aul = EINA_TRUE;
+ ad->content = elm_naviframe_top_item_get(ad->nv);
+
+ return 0;
+ }
+ else if(!CAL_STRCMP(val,"view_event"))
+ {
+ ad->request_view = CV_DETAIL;
+ val = bundle_get_val(b, "index");
+
+ if(val)
+ {
+ ad->cid = atoi(val);
+ ad->is_aul = EINA_TRUE;
+ ad->content = elm_naviframe_top_item_get(ad->nv);
+ }
+ else
+ ad->request_view = CV_MONTH;
+
+ return 0;
+ }
+ }
+
+
+ if (b)
+ val = bundle_get_val(b, "caller");
+
+ if ( val && !CAL_STRCMP(val, "live"))/*LIVE MAGAZINE*/
+ {
+ val = bundle_get_val(b, "count");
+
+ if(val)
+ {
+ r = atoi(val);
+ if(r)
+ ad->request_view = CV_LIST;
+ else
+ {
+ ad->request_view = CV_EDIT;
+ ad->cid = 0;
+ }
+
+ return 0;
+ }
+ else
+ {
+ ad->request_view = CV_LIST;
+ ERR("bundle parsing error");
+ return 0;
+ }
+ }
+
+ ad->request_view = CV_MONTH;
+ return 0;
+}
+
+static int cal_reset(bundle *b, void *data)
+{
+ DBG("");
+
+ CAL_ASSERT(b);
+ CAL_ASSERT(data);
+
+ struct appdata *ad = data;
+
+ ug_destroy_all();
+
+ int r = __cal_main_select_view(b, ad);
+ if(r < 0)
+ {
+ ERR("__cal_main_select_view return error");
+ return -1;
+ }
+
+ if (ad->win)
+ elm_win_activate(ad->win);
+
+ evas_object_show(ad->win);
+
+ __cal_main_add_naviframe_content(ad);
+
+ return 0;
+}
+
+static int cal_pause(void *data)
+{
+ DBG("");
+
+ CAL_ASSERT(data);
+
+ struct appdata* ad = data;
+
+ CAL_ASSERT(ad->nv);
+
+ ug_pause();
+
+ if (ad->is_aul)
+ {
+ ad->is_aul = EINA_FALSE; //unset flag
+
+ if(ad->content && elm_naviframe_top_item_get(ad->nv) != elm_naviframe_bottom_item_get(ad->nv))
+ elm_naviframe_item_pop_to(ad->content); //pop to calendar app's content
+ else
+ elm_exit(); //if there is no calendar app's contents, exit.
+
+ ad->request_view = CV_UNKNOWN;
+ }
+
+ ad->is_pause = EINA_TRUE;
+
+ return 0;
+}
+
+int main(int argc, char *argv[])
+{
+ struct appcore_ops ops = {
+ .create = cal_create,
+ .reset = cal_reset,
+ .pause = cal_pause,
+ .resume = cal_resume,
+ .terminate = cal_terminate,
+ };
+
+ memset(&ad, 0x0, sizeof(struct appdata));
+ ops.data = &ad;
+
+ return appcore_efl_main(CALENDAR_PACKAGE, &argc, &argv, &ops);
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <Ecore_X.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include "timeblock.h"
+
+#define CAL_TIMEBLOCK_CONTENT_HEIGHT 16
+#define CAL_TIMEBLOCK_CONTRACT_HEIGHT 102
+#define CAL_TIMEBLOCK_NORMAL_HEIGHT 130
+#define CAL_TIMEBLOCK_TEXT_HEIGHT 30
+
+static void __cal_time_block_restack_time_block(struct timeblock *tb);
+
+void cal_time_block_show_current_time_line(struct timeblock *tb, int hour)
+{
+ int i;
+ struct timeblock_slice *t;
+
+ if (!tb)
+ return;
+
+ if(0 > hour || 23 < hour)
+ return;
+
+ for(i = 0; i < sizeof(tb->tbs)/sizeof(tb->tbs[0]); i++)
+ {
+ t = &tb->tbs[i];
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(t->ly), "hide,line", "prog");
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(t->ly), "hide,img", "prog");
+ }
+
+ if(NULL != tb->tbs[hour].ly)
+ {
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(tb->tbs[hour].ly), "show,line", "prog");
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(tb->tbs[hour].ly), "show,img", "prog");
+ }
+}
+
+void cal_time_block_hide_current_time_line(struct timeblock *tb)
+{
+ int i;
+ struct timeblock_slice *t;
+
+ if (!tb)
+ return;
+
+ for(i = 0; i < sizeof(tb->tbs)/sizeof(tb->tbs[0]); i++)
+ {
+ t = &tb->tbs[i];
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(t->ly), "hide,line", "prog");
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(t->ly), "hide,img", "prog");
+ }
+}
+
+static void _cal_time_block_show_contracted_bg(struct timeblock *tb)
+{
+ int i;
+ struct timeblock_slice *t;
+
+ if(NULL == tb)
+ return;
+
+ for(i = 0; i < sizeof(tb->tbs)/sizeof(tb->tbs[0]); i++)
+ {
+ t = &tb->tbs[i];
+ if(t->is_contracted)
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(t->ly), "contracted", "prog");
+ }
+}
+
+static void _cal_time_block_hide_contracted_bg(struct timeblock *tb)
+{
+ int i;
+ struct timeblock_slice *t;
+
+ if(NULL == tb)
+ return;
+
+ for(i = 0; i < sizeof(tb->tbs)/sizeof(tb->tbs[0]); i++)
+ {
+ t = &tb->tbs[i];
+ if(!t->is_contracted)
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(t->ly), "uncontracted", "prog");
+ }
+}
+
+
+static int __cal_time_block_sort_ev(const void *d1, const void *d2)
+{
+ const struct timeblock_event *t1 = d1;
+ const struct timeblock_event *t2 = d2;
+
+ if (!t1)
+ return 1;
+ if (!t2)
+ return -1;
+
+ return t1->sz < t2->sz ? 1 : -1;
+}
+
+static void __cal_time_block_delete_event_block_slice_overlap(struct timeblock *tb)
+{
+ struct eventblock_overlap *ebv = NULL;
+ Eina_List *l;
+ if(NULL == tb)
+ {
+ return;
+ }
+ EINA_LIST_FOREACH(tb->ebs_list, l, ebv)
+ {
+ if(NULL != ebv)
+ {
+ free(ebv);
+ }
+ }
+ tb->ebs_list = eina_list_free(tb->ebs_list);
+}
+
+static void _cal_time_block_clear_start_index(struct timeblock *tb)
+{
+ int i = 0;
+ struct eventblock_slice *eb = NULL;
+ if(NULL == tb)
+ {
+ return;
+ }
+ for(i = 0; i<sizeof(tb->ebs)/sizeof(tb->ebs[0]); i++)
+ {
+ eb = &tb->ebs[i];
+ eb->start_index = 0;
+ eb->real_sz = 0;
+ }
+}
+static void __cal_time_block_set_start_index(struct timeblock *tb)
+{
+ int i = 0;
+ int j = 0;
+ int k = 0;
+ int e = 0;
+ int sz = 0;
+ struct eventblock_slice *eb = NULL;
+ struct eventblock_slice *eb_tmp = NULL;
+ Eina_List *l;
+ const struct timeblock_event *ev = NULL;
+ if(NULL == tb)
+ {
+ return;
+ }
+ _cal_time_block_clear_start_index(tb);
+ for(i = 0; i<sizeof(tb->ebs)/sizeof(tb->ebs[0]); i++)
+ {
+ eb = &tb->ebs[i];
+ if(NULL != eb->list)
+ {
+ k = 0;
+ EINA_LIST_FOREACH(eb->list, l, ev)
+ {
+ if(NULL != ev)
+ {
+ e = ev->idx + ev->sz;
+ for(j = ev->idx; (j<e && j<sizeof(tb->ebs)/sizeof(tb->ebs[0])); j++)
+ {
+ eb_tmp = &tb->ebs[j];
+ if(j > ev->idx)
+ {
+ if(0 == k)
+ eb_tmp->start_index = eb->start_index + 1;
+ else
+ eb_tmp->start_index = eb_tmp->start_index + 1;
+ }
+ sz = eina_list_count(eb_tmp->list);
+ eb_tmp->real_sz = eb_tmp->start_index + sz;
+ }
+ k = 1;
+ }
+
+ }
+ }
+ }
+}
+
+static void __cal_time_block_set_event_block_slice_overlap_ranged(struct timeblock *tb)
+{
+ int i = 0;
+ int j = 0;
+ struct eventblock_slice *eb = NULL;
+ struct eventblock_overlap *ebv = NULL;
+ int nebs = 0;
+ if(NULL == tb)
+ {
+ return;
+ }
+ __cal_time_block_set_start_index(tb);
+ nebs = sizeof(tb->ebs)/sizeof(tb->ebs[0]);
+ __cal_time_block_delete_event_block_slice_overlap(tb);
+ while(i < nebs)
+ {
+
+ eb = &tb->ebs[i];
+ if(0 == eb->start_index)
+ {
+ if(0 == eb->real_sz)
+ {
+ i++;
+ continue;
+ }
+ CAL_CALLOC(ebv, 1, struct eventblock_overlap);
+ if(NULL == ebv)
+ {
+ return;
+ }
+ ebv->start_idx = i;
+ ebv->end_idx = i;
+ ebv->size = eb->real_sz;
+
+ if(nebs == i+1)
+ {
+ tb->ebs_list = eina_list_append(tb->ebs_list, ebv);
+ }
+ for(j = i+1; j < nebs; j++)
+ {
+
+ eb = &tb->ebs[j];
+ if((j == nebs-1) && (0 != eb->start_index))
+ {
+ if(eb->real_sz > ebv->size)
+ {
+ ebv->size = eb->real_sz;
+ }
+ ebv->end_idx = j;
+ tb->ebs_list = eina_list_append(tb->ebs_list, ebv);
+ }
+ else if(0 == eb->start_index)
+ {
+ ebv->end_idx = j - 1;
+ tb->ebs_list = eina_list_append(tb->ebs_list, ebv);
+ i = j;
+ break;
+ }
+ else
+ {
+ if(eb->real_sz > ebv->size)
+ {
+ ebv->size = eb->real_sz;
+ }
+ }
+ }
+
+ if(j >= nebs)
+ {
+ break;
+ }
+ }
+ }
+
+}
+
+static void __cal_time_block_move_event(struct timeblock_event *ev, Evas_Coord_Rectangle *base,
+ int idx, Evas_Coord w)
+{
+ c_retm_if(!ev, "ev is null");
+ c_retm_if(!ev->tb, "ev->tb is null");
+ c_retm_if(!ev->ly, "ev->ly is null");
+
+ evas_object_move(ev->ly, base->x + (idx * w), base->y);
+ evas_object_resize(ev->ly, w, base->h * ev->sz);
+}
+
+static void __cal_time_block_move_event_block_slice(struct timeblock *tb)
+{
+ c_retm_if(!tb, "tb is null");
+
+ struct eventblock_overlap *ebv = NULL;
+ Eina_List *l;
+ Eina_List *l2;
+ struct eventblock_slice *eb = NULL;
+ Evas_Coord_Rectangle base = {0};
+ struct timeblock_event *ev = NULL;
+ int count = 0;
+ int width = 0;
+ int i = 0;
+
+ __cal_time_block_set_event_block_slice_overlap_ranged(tb);
+
+ EINA_LIST_FOREACH(tb->ebs_list, l, ebv) {
+ if (ebv) {
+ if (0 < ebv->size) {
+ for ( i = ebv->start_idx; i <= ebv->end_idx; i++) {
+
+ eb = &tb->ebs[i];
+ cal_util_get_geometry(&base, eb->base);
+ width = base.w / ebv->size;
+ count = eb->start_index;
+
+ EINA_LIST_FOREACH(eb->list, l2, ev) {
+ if (ev) {
+ __cal_time_block_move_event(ev, &base, count, width);
+ count ++;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void cal_time_block_move(struct timeblock *time_block, Evas_Coord x, Evas_Coord y)
+{
+ c_retm_if(!time_block, "time_block is null");
+
+ int i;
+ struct timeblock_slice *t;
+
+ time_block->x = x;
+ time_block->y = y;
+
+ for (i = 0; i < sizeof(time_block->tbs)/sizeof(time_block->tbs[0]); i++) {
+ t = &time_block->tbs[i];
+ if (!t->ly)
+ continue;
+
+ evas_object_move(t->ly, x, y);
+ t->x = x;
+ t->y = y;
+
+ y += t->h;
+ }
+
+ __cal_time_block_move_event_block_slice(time_block);
+}
+
+static void __cal_time_block_resize_time_block(struct timeblock *time_block)
+{
+ int i;
+ Evas_Coord sum;
+
+ sum = 0;
+ for (i = 0; i < sizeof(time_block->tbs)/sizeof(time_block->tbs[0]); i++) {
+ struct timeblock_slice *t = &time_block->tbs[i];
+
+ if (!t->ly)
+ continue;
+
+ if (t->h > CAL_TIMEBLOCK_TEXT_HEIGHT) {
+ if (t->hide_text) {
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(t->ly), "show,text", "prog");
+ t->hide_text = EINA_FALSE;
+ }
+ }
+ else {
+ if (!t->hide_text) {
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(t->ly), "hide,text", "prog");
+ t->hide_text = EINA_TRUE;
+ }
+ }
+
+ evas_object_resize(t->ly, time_block->w, t->h);
+ sum += t->h;
+ }
+
+ time_block->h = sum;
+}
+
+static inline void __cal_time_block_set_size(struct timeblock *tb, Evas_Coord h)
+{
+ int i;
+
+ if (h > tb->normal_height)
+ h = tb->normal_height;
+ else if (h < tb->contract_height)
+ h = tb->contract_height;
+
+ for (i = 0; i < sizeof(tb->tbs)/sizeof(tb->tbs[0]); i++)
+ {
+ struct timeblock_slice *t = &tb->tbs[i];
+ t->is_contracted = EINA_FALSE;
+
+ if (t->cnt == 0)
+ t->h = h;
+ else
+ t->h = tb->normal_height;
+ }
+
+ tb->h_cur = h;
+}
+
+static int __cal_time_block_find_time_block(struct timeblock *tb, Evas_Coord y)
+{
+ int i;
+ struct timeblock_slice *t;
+
+ for (i = 1; i < sizeof(tb->tbs)/sizeof(tb->tbs[0]); i++) {
+ t = &tb->tbs[i];
+
+ if (t->y > y)
+ return i - 1;
+ }
+
+ return i - 1;
+}
+
+static void __cal_time_block_rearrange_time_block_after(struct timeblock *tb, int idx)
+{
+ int i;
+ struct timeblock_slice *prev;
+ struct timeblock_slice *t;
+
+ for (i = idx + 1; i < sizeof(tb->tbs)/sizeof(tb->tbs[0]); i++) {
+ t = &tb->tbs[i];
+ prev = &tb->tbs[i - 1];
+
+ t->y = prev->y + prev->h;
+ evas_object_move(t->ly, t->x, t->y);
+ }
+}
+
+static inline void __cal_time_block_rearrange_time_block(struct timeblock *tb, int idx)
+{
+ struct timeblock_slice *t;
+ struct timeblock_slice *next;
+ int i;
+
+ __cal_time_block_rearrange_time_block_after(tb, idx);
+
+ for (i = idx - 1; i >= 0; i--) {
+ t = &tb->tbs[i];
+ next = &tb->tbs[i + 1];
+
+ t->y = next->y - t->h;
+ evas_object_move(t->ly, t->x, t->y);
+ }
+
+ tb->y = tb->tbs[0].y;
+}
+
+
+static inline void __cal_time_block_set_size_contract(struct timeblock *tb, Evas_Coord h, int hour)
+{
+ int i = 0;
+ int j = 0;
+ int k = 0;
+ for(k = 0; k<sizeof(tb->tbs)/sizeof(tb->tbs[0]); k++)
+ {
+ struct timeblock_slice *t = &tb->tbs[k];
+ t->is_contracted = EINA_FALSE;
+ }
+
+ while(i < sizeof(tb->tbs)/sizeof(tb->tbs[0]))
+ {
+ struct timeblock_slice *t = &tb->tbs[i];
+ if (t->cnt == 0)
+ {
+ if(hour == i)
+ {
+ i += 1;
+ t->h = tb->normal_height;
+ continue;
+ }
+ else
+ {
+ t->is_contracted = EINA_TRUE;
+ t->h = tb->h_contract;
+ }
+ for(j = i+1; j<sizeof(tb->tbs)/sizeof(tb->tbs[0]); j++)
+ {
+ struct timeblock_slice *t_n = &tb->tbs[j];
+ if (t_n->cnt == 0)
+ {
+ if(hour == j)
+ {
+ i = j;
+ break;
+ }
+ else
+ {
+ t_n->h = h;
+ }
+ }
+ else
+ {
+ i = j;
+ break;
+ }
+ }
+
+ i = j;
+
+ }
+ else
+ {
+ i++;
+ }
+ }
+
+ tb->h_cur = tb->h_contract;
+
+}
+
+
+void cal_time_block_resize_contract(struct timeblock *tb, Evas_Coord y, Evas_Coord h, int hour)
+{
+ int idx;
+
+ idx = __cal_time_block_find_time_block(tb, y);
+
+ __cal_time_block_set_size_contract(tb, h, hour);
+
+ __cal_time_block_resize_time_block(tb);
+ __cal_time_block_rearrange_time_block(tb, idx);
+ __cal_time_block_move_event_block_slice(tb);
+ _cal_time_block_show_contracted_bg(tb);
+}
+
+void cal_time_block_resize(struct timeblock *tb, Evas_Coord y, Evas_Coord h)
+{
+ int idx;
+ if(h < 30)
+ {
+ return;
+ }
+ idx = __cal_time_block_find_time_block(tb, y);
+
+ __cal_time_block_set_size(tb, h);
+ __cal_time_block_resize_time_block(tb);
+ __cal_time_block_rearrange_time_block(tb, idx);
+ __cal_time_block_move_event_block_slice(tb);
+ _cal_time_block_hide_contracted_bg(tb);
+}
+
+static inline int __cal_time_block_get_color(struct timeblock *tb)
+{
+ int r;
+
+ r = tb->color;
+ tb->color = (tb->color + 1) & 0x3;
+
+ return r;
+}
+
+static Evas_Object* __cal_time_block_add_event_layout(struct timeblock *tb, const char *text)
+{
+ Evas_Object *ly;
+
+ ly = cal_util_add_layout(tb->parent, "main/day/tb/event");
+ CAL_ASSERT(ly);
+
+ evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ if (text)
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(ly), "text", text);
+
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "bg,color%d", __cal_time_block_get_color(tb));
+
+ evas_object_clip_set(ly, (Evas_Object*)tb->clip);
+
+ return ly;
+}
+
+static void __cal_time_event_mouse_down_callback(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+ c_retm_if(!ei, "ei is null");
+
+ Evas_Event_Mouse_Down *ev = ei;
+ struct timeblock_event *event = data;
+
+ event->mouse_down_y = ev->canvas.y;
+}
+
+static struct timeblock_event* __cal_time_block_add_event(struct timeblock *time_block, int cid, int hh, int sz, const char *text, struct tmnode* tm)
+{
+ CAL_ASSERT(time_block);
+ CAL_ASSERT(tm);
+
+ struct timeblock_event *e;
+ Evas_Object *ly;
+
+ CAL_CALLOC(e, 1, struct timeblock_event);
+
+ ly = __cal_time_block_add_event_layout(time_block, text);
+ CAL_ASSERT(ly);
+
+ e->cid = cid;
+ e->idx = hh;
+ e->sz = sz;
+ e->tb = time_block;
+ e->ly = ly;
+ e->tm = tm;
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_DOWN, __cal_time_event_mouse_down_callback, e);
+
+ return e;
+}
+
+static void __cal_time_block_event_callback(void *data, Evas_Object *obj, const char *e, const char *s)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ struct timeblock_event *ev = data;
+ struct timeblock *tb = ev->tb;
+ c_retm_if(!tb, "tb is null");
+
+ if (tb->lock)
+ return;
+
+ if (!CAL_STRCMP(e, "dn")) {
+ if (!tb->dn) {
+ tb->dn = obj;
+ edje_object_signal_emit(obj, "select", "prog");
+ }
+ return;
+ }
+
+ if (!CAL_STRCMP(e, "up")) {
+
+ if (tb->dn == obj) {
+ if (tb->cb) {
+ tb->cb(tb->cb_d, tb, EVENT_CLICKED, ev);
+ }
+
+ tb->dn = NULL;
+ edje_object_signal_emit(obj, "unselect", "prog");
+ }
+
+ return;
+ }
+}
+
+static int __cal_time_block_insert_event(struct timeblock *time_block, struct timeblock_event *ev)
+{
+ CAL_ASSERT(time_block);
+ CAL_ASSERT(ev);
+
+ int idx;
+ int i;
+ int e;
+ struct eventblock_slice *eb;
+
+ idx = ev->idx >> 1;
+ e = (ev->idx + ev->sz + 1) >> 1;
+
+ for (i = idx; i < e && i < sizeof(time_block->tbs)/sizeof(time_block->tbs[0]); i++)
+ time_block->tbs[i].cnt++;
+
+ eb = &time_block->ebs[ev->idx];
+ eb->list = eina_list_sorted_insert(eb->list, __cal_time_block_sort_ev, ev);
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(ev->ly), "*", "edj", __cal_time_block_event_callback, ev);
+
+ return idx;
+}
+
+static struct timeblock_event* __cal_time_block_find_event(struct timeblock *time_block, int cid)
+{
+ CAL_ASSERT(time_block);
+ int i;
+ struct eventblock_slice *eb;
+ struct timeblock_event *ev;
+ Eina_List *l;
+
+ for (i = 0; i < sizeof(time_block->ebs)/sizeof(time_block->ebs[0]); i++)
+ {
+ eb = &time_block->ebs[i];
+
+ EINA_LIST_FOREACH(eb->list, l, ev)
+ {
+ if (ev && ev->cid == cid)
+ return ev;
+ }
+ }
+
+ return NULL;
+}
+
+static void __cal_time_block_restack_time_block(struct timeblock *tb)
+{
+ int i;
+ Evas_Object *prev;
+ struct eventblock_slice *eb;
+ struct timeblock_event *ev;
+ Eina_List *l;
+
+ prev = NULL;
+ for (i = 0; i < sizeof(tb->ebs)/sizeof(tb->ebs[0]); i++)
+ {
+ eb = &tb->ebs[i];
+
+ EINA_LIST_FOREACH(eb->list, l, ev)
+ {
+ if (prev && NULL != ev)
+ evas_object_stack_above(ev->ly, prev);
+
+ if(ev)
+ prev = ev->ly;
+ }
+ }
+}
+
+void cal_time_block_add_event(struct timeblock *time_block, int cid, int hh, int sz, const char *text, struct tmnode* tm)
+{
+ CAL_ASSERT(time_block);
+ CAL_ASSERT(tm);
+
+ struct timeblock_event *e;
+ int idx;
+
+ e = __cal_time_block_find_event(time_block, cid);
+ if (e)
+ {
+ // TODO: update
+ e->tm = tm;
+ return;
+ }
+
+ e = __cal_time_block_add_event(time_block, cid, hh, sz, text, tm);
+ CAL_ASSERT(e);
+
+ idx = __cal_time_block_insert_event(time_block, e);
+
+ __cal_time_block_restack_time_block(time_block);
+ __cal_time_block_rearrange_time_block_after(time_block, idx);
+ __cal_time_block_move_event_block_slice(time_block);
+}
+
+void cal_time_block_get_geometry(struct timeblock *time_block, Evas_Coord_Rectangle *r)
+{
+ CAL_ASSERT(time_block);
+ CAL_ASSERT(r);
+
+ r->x = time_block->x;
+ r->y = time_block->y;
+ r->w = time_block->w;
+ r->h = time_block->h;
+}
+
+static void __cal_time_block_time_block_callback(void *data, Evas_Object *obj, const char *e, const char *s)
+{
+ struct timeblock_slice *t = data;
+ struct timeblock *tb = t->tb;
+
+ if (tb->lock)
+ return;
+
+ if (!CAL_STRCMP(e, "dn")) {
+ if (!tb->dn && t->h == tb->normal_height && !t->is_contracted) {
+ tb->dn = obj;
+ edje_object_signal_emit(obj, "select", "prog");
+ }
+ return;
+ }
+
+ if (!CAL_STRCMP(e, "up")) {
+ if (tb->dn == obj) {
+ if (tb->cb)
+ tb->cb(tb->cb_d, tb, TIMEBLOCK_CLICKED, (void *)t->idx);
+ tb->dn = NULL;
+ edje_object_signal_emit(obj, "unselect", "prog");
+ }
+ return;
+ }
+}
+
+static void __cal_time_block_add_time_block(struct timeblock *time_block)
+{
+ int i;
+ struct timeblock_slice *t;
+ struct eventblock_slice *e;
+ Evas_Object *ly;
+ Evas_Coord sum;
+ struct tm tm;
+ int is_hour24;
+ int r;
+
+ memset(&tm, 0, sizeof(struct tm));
+ cal_util_update_tm_hour(&tm, 0);
+ tm.tm_hour = 0;
+ tm.tm_min = 0;
+
+ r = vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224, &is_hour24);
+ if(0 > r)
+ {
+ is_hour24 = 0;
+ }
+ else if(is_hour24 ==1 || is_hour24 == 2)
+ {
+ is_hour24--;
+ }
+ else
+ {
+ ERR("vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224, &is_hour24) is failed");
+ }
+
+ sum = 0;
+ for (i = 0; i < sizeof(time_block->tbs)/sizeof(time_block->tbs[0]); i++)
+ {
+ ly = cal_util_add_layout(time_block->parent, "main/day/tb/block");
+ CAL_ASSERT(ly);
+
+ if(is_hour24)
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(ly), "text", NULL, CAL_UTIL_TIME_FORMAT_7, &tm);
+ else
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(ly), "text", NULL, CAL_UTIL_TIME_FORMAT_3, &tm);
+
+ cal_util_update_tm_hour(&tm, 1);
+
+ if (i > 11)
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(ly), "pm", "prog");
+
+ evas_object_clip_set(ly, (Evas_Object*)time_block->clip);
+ evas_object_show(ly);
+
+ t = &time_block->tbs[i];
+ t->ly = ly;
+ t->h = time_block->normal_height;
+ t->tb = time_block;
+ t->idx = i;
+ t->is_contracted = EINA_FALSE;
+
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(ly), "*", "edj", __cal_time_block_time_block_callback, t);
+
+ e = &time_block->ebs[i << 1];
+ e->tb = time_block;
+ e->base = edje_object_part_object_get(CAL_UTIL_GET_EDJ_DATA(ly), "evtbase/top");
+ e->real_sz = 0;
+ e->start_index = 0;
+
+ e = &time_block->ebs[(i << 1) + 1];
+ e->tb = time_block;
+ e->base = edje_object_part_object_get(CAL_UTIL_GET_EDJ_DATA(ly), "evtbase/bottom");
+ e->real_sz = 0;
+ e->start_index = 0;
+
+ sum += t->h;
+ }
+
+ time_block->h = sum;
+}
+
+static void __cal_time_resize_time_block(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct timeblock *time_block = data;
+ Evas_Coord w;
+
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, NULL);
+ time_block->w = w;
+
+ __cal_time_block_resize_time_block(time_block);
+ __cal_time_block_rearrange_time_block_after(time_block, 0);
+ __cal_time_block_move_event_block_slice(time_block);
+}
+
+struct timeblock* cal_time_block_create_time_block(Evas_Object *parent, Evas_Object *clip)
+{
+ CAL_FN_START;
+
+ struct timeblock *time_block;
+
+ CAL_ASSERT(parent);
+ CAL_ASSERT(clip);
+
+ CAL_CALLOC(time_block, 1, struct timeblock);
+
+ double scale = elm_config_scale_get();
+
+ time_block->parent = parent;
+ time_block->clip = clip;
+ time_block->normal_height = CAL_TIMEBLOCK_NORMAL_HEIGHT * scale;
+ time_block->contract_height = CAL_TIMEBLOCK_CONTENT_HEIGHT * scale;
+ time_block->h_contract = CAL_TIMEBLOCK_CONTRACT_HEIGHT * scale;
+
+ __cal_time_block_add_time_block(time_block);
+
+ time_block->h_cur = time_block->normal_height;
+
+ __cal_time_resize_time_block(time_block, NULL, parent, NULL);
+
+ return time_block;
+}
+
+static inline void __cal_time_block_clear_time_block(struct timeblock *time_block)
+{
+ CAL_ASSERT(time_block);
+
+ struct timeblock_event *ev;
+ struct eventblock_slice *eb;
+ int i;
+ Eina_List *l;
+
+ __cal_time_block_delete_event_block_slice_overlap(time_block);
+
+ for (i = 0; i < sizeof(time_block->ebs)/sizeof(time_block->ebs[0]); i++)
+ {
+ eb = &time_block->ebs[i];
+ if(NULL == eb)
+ return;
+
+ EINA_LIST_FOREACH(eb->list, l, ev)
+ {
+ if(NULL == ev)
+ return;
+
+ if (ev->ly)
+ evas_object_del(ev->ly);
+
+ free(ev);
+ }
+ eb->list = eina_list_free(eb->list);
+ }
+}
+
+static void __cal_time_block_delete_time_block_slice(struct timeblock *time_block)
+{
+ CAL_ASSERT(time_block);
+
+ struct timeblock_slice *tbs;
+ int i;
+
+ for(i = 0; i < sizeof(time_block->tbs)/sizeof(time_block->tbs[0]); i++)
+ {
+ tbs = &time_block->tbs[i];
+ if(NULL == tbs)
+ return;
+
+ if(tbs->ly)
+ {
+ evas_object_clip_unset(tbs->ly);
+
+ edje_object_signal_callback_del(CAL_UTIL_GET_EDJ_DATA(tbs->ly), "*", "edj", __cal_time_block_time_block_callback);
+
+ evas_object_del(tbs->ly);
+ }
+ }
+}
+
+void cal_time_block_delete_time_block(struct timeblock **tb)
+{
+ CAL_FN_START;
+
+ CAL_ASSERT(tb);
+ CAL_ASSERT(*tb);
+
+ __cal_time_block_clear_time_block(*tb);
+ __cal_time_block_delete_time_block_slice(*tb);
+
+ free(*tb);
+ *tb = NULL;
+}
+
+Evas_Coord cal_time_block_get_min(struct timeblock *tb)
+{
+ if (!tb)
+ return 0;
+
+ return tb->contract_height;
+}
+
+Evas_Coord cal_time_block_get_max(struct timeblock *tb)
+{
+ if (!tb)
+ return 0;
+
+ return tb->normal_height;
+}
+
+Evas_Coord cal_time_block_get_current(struct timeblock *tb)
+{
+ if (!tb)
+ return 0;
+
+ return tb->h_cur;
+}
+
+void cal_time_block_set_event_lock(struct timeblock *tb, Eina_Bool lock)
+{
+ if (!tb)
+ return;
+
+ tb->lock = lock;
+ if (tb->lock && tb->dn) {
+ edje_object_signal_emit(tb->dn, "unselect", "prog");
+ tb->dn = NULL;
+ }
+}
+
+void cal_time_block_unset_callback(struct timeblock *tb)
+{
+ if (!tb)
+ return;
+
+ tb->cb = NULL;
+ tb->cb_d = NULL;
+}
+
+
+void cal_time_block_set_callback(struct timeblock *tb, void (*cb)(void *data,
+ struct timeblock *tb ,enum timeblock_event_type e, void *event_info),
+ void *data)
+{
+ if (!tb)
+ return;
+
+ tb->cb = cb;
+ tb->cb_d = data;
+}
+
+void cal_time_block_clear_event(struct timeblock *time_block)
+{
+ CAL_FN_START;
+
+ int i;
+
+ if (!time_block)
+ return;
+
+ __cal_time_block_clear_time_block(time_block);
+
+ for (i = 0; i < sizeof(time_block->tbs)/sizeof(time_block->tbs[0]); i++)
+ time_block->tbs[i].cnt = 0;
+
+ time_block->color = 0;
+}
+
+Evas_Coord cal_time_block_get_first_event_y(struct timeblock *tb)
+{
+ int i;
+ Evas_Coord h;
+
+ if (!tb)
+ return 0;
+
+ h = 0;
+ for (i = 0; i < sizeof(tb->tbs)/sizeof(tb->tbs[0]); i++) {
+ if (tb->tbs[i].cnt > 0)
+ return h;
+ h += tb->tbs[i].h;
+ }
+
+ return 0;
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_TIMEBLOCK_H__
+#define __CALENDAR_TIMEBLOCK_H__
+
+#include "cld.h"
+
+#define TIMEBLOCK_INDEX 24
+#define EVENTBLOCK_INDEX 48
+
+enum timeblock_event_type {
+ TIMEBLOCK_CLICKED,
+ EVENT_CLICKED,
+};
+
+struct timeblock_slice {
+ struct timeblock *tb;
+ int idx;
+
+ Evas_Object *ly;
+ Evas_Coord x;
+ Evas_Coord y;
+ Evas_Coord h;
+
+ Eina_Bool hide_text;
+
+ Eina_Bool is_contracted;
+
+ int cnt;
+};
+
+struct eventblock_slice {
+ struct timeblock *tb;
+ const Evas_Object *base;
+ Eina_List *list; // evt list
+ int maxsize;
+ int real_sz;
+ int start_index;
+};
+
+struct timeblock_event {
+ int cid;
+ Evas_Object *ly;
+ int idx;
+ int sz;
+ struct timeblock *tb;
+ struct tmnode* tm;
+
+ Evas_Coord initial_coord_x;
+ Evas_Coord initial_coord_y;
+ Evas_Coord mouse_down_y;
+
+ int origin_ebs_idx;
+};
+
+struct eventblock_overlap
+{
+ int start_idx;
+ int end_idx;
+ int size;
+};
+
+struct timeblock {
+ Evas_Object *parent;
+ Evas_Object *clip;
+
+ struct timeblock_slice tbs[TIMEBLOCK_INDEX];
+ Evas_Coord x;
+ Evas_Coord y;
+ Evas_Coord w;
+ Evas_Coord h;
+
+ Evas_Coord normal_height;
+ Evas_Coord contract_height;
+ Evas_Coord h_cur;
+ Evas_Coord h_contract;
+
+ struct eventblock_slice ebs[EVENTBLOCK_INDEX];
+ int color;
+
+ Evas_Object *dn;
+ Eina_Bool lock;
+
+ void (*cb)(void *data, struct timeblock *tb, enum timeblock_event_type e, void *event_info);
+ void *cb_d;
+
+ Eina_List *ebs_list;
+};
+
+struct timeblock* cal_time_block_create_time_block(Evas_Object *parent, Evas_Object *clip);
+void cal_time_block_delete_time_block(struct timeblock **tb);
+
+void cal_time_block_move(struct timeblock *tb, Evas_Coord x, Evas_Coord y);
+void cal_time_block_resize(struct timeblock *tb, Evas_Coord y, Evas_Coord h);
+void cal_time_block_get_geometry(struct timeblock *tb, Evas_Coord_Rectangle *r);
+Evas_Coord cal_time_block_get_first_event_y(struct timeblock *tb);
+
+void cal_time_block_add_event(struct timeblock *tb, int cid, int hh, int sz, const char *text, struct tmnode *tm);
+void cal_time_block_set_event_lock(struct timeblock *tb, Eina_Bool lock);
+void cal_time_block_clear_event(struct timeblock *tb);
+
+Evas_Coord cal_time_block_get_min(struct timeblock *tb);
+Evas_Coord cal_time_block_get_max(struct timeblock *tb);
+Evas_Coord cal_time_block_get_current(struct timeblock *tb);
+
+void cal_time_block_set_callback(struct timeblock *tb, void (*cb)(void *data, struct timeblock *tb, enum timeblock_event_type e, void *event_info), void *data);
+void cal_time_block_unset_callback(struct timeblock *tb);
+
+void cal_time_block_show_current_time_line(struct timeblock *tb, int hour);
+void cal_time_block_hide_current_time_line(struct timeblock *tb);
+
+void cal_time_block_resize_contract(struct timeblock *tb, Evas_Coord y, Evas_Coord h, int hour);
+
+
+#endif /* __CALENDAR_TIMEBLOCK_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <Elementary.h>
+#include <ui-gadget.h>
+
+#include "view.h"
+#include "acct-svc.h"
+
+#define DEFAULT_LOCAL_CALENDAR_COLOR "95.190.0.255"
+
+#define ACCOUNT_LABLE_STRING_LENGTH 128
+
+
+static const char *_name = "acct";
+
+typedef struct {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly;
+ Evas_Object *ly_phone;
+
+ Evas_Object *gl;
+
+ Eina_List *acctlist;
+
+ Evas_Object* color_selector;
+ Evas_Object* color;
+ Evas_Object* rect;
+ struct _cs* cs;
+
+ Evas_Object* notify;
+
+ int selected_count;
+} cal_account_data;
+
+static char* __cal_account_get_genlist_item_label(void *, Evas_Object *, const char *);
+static Evas_Object* __cal_account_get_genlist_item_icon(void *, Evas_Object *, const char *);
+static void __cal_account_update_genlist(void* data);
+static void __cal_account_popup_response_callback(void *data, Evas_Object *obj, void *event_info);
+
+static Elm_Genlist_Item_Class itc = {
+ .item_style = "2text.3icon.3",
+ .func.text_get = __cal_account_get_genlist_item_label,
+ .func.content_get = __cal_account_get_genlist_item_icon,
+ .decorate_all_item_style = "edit_default",
+};
+
+static struct _acct def_at = { LOCAL_ACCOUNT_ID, "Local account", "/opt/apps/org.tizen.efl-calendar/res/icons/all_calendar.png", NULL, NULL, };
+
+static Calendar_color calendar_color;
+
+static void __cal_account_set_selected_count_label(void *data)
+{
+ c_retm_if(!data, "data is null");
+
+ cal_account_data *account_data = data;
+
+ if (account_data->selected_count <= 0)
+ {
+ if (account_data->notify)
+ evas_object_hide(account_data->notify);
+
+ return;
+ }
+
+ struct appdata *ad = account_data->ad;
+ c_retm_if(!ad, "appdata is null");
+
+ Evas_Object *nv = ad->nv;
+ c_retm_if(!nv, "nv is null");
+
+ Evas_Object *notify = NULL;
+ Evas_Object *selectioninfo_layout = NULL;
+ char lable_str[ACCOUNT_LABLE_STRING_LENGTH] = {'\0'};
+
+ if (!account_data->notify) {
+ notify = elm_notify_add(nv);
+ c_retm_if(!notify, "elm_notify_add returned null");
+
+ account_data->notify = notify;
+ elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
+
+ selectioninfo_layout = elm_layout_add(notify);
+ if (!selectioninfo_layout)
+ {
+ evas_object_del(notify);
+ account_data->notify = NULL;
+ return;
+ }
+
+ elm_layout_theme_set(selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_64");
+ elm_object_content_set(notify, selectioninfo_layout);
+ }
+ snprintf(lable_str, sizeof(lable_str), "%s(%d)", S_("IDS_COM_POP_SELECTED"), account_data->selected_count);
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(selectioninfo_layout), "elm.text", lable_str);
+
+ if (0 < account_data->selected_count) {
+ evas_object_show(account_data->notify);
+ } else {
+ evas_object_hide(account_data->notify);
+ }
+}
+
+static void __cal_account_clear_list(cal_account_data *account_data)
+{
+ c_retm_if(account_data == NULL, "account_data is null");
+
+ struct _acct *at;
+ Eina_List *l;
+
+ if(def_at.data)
+ {
+ CALENDAR_SVC_FREE_CS_LIST((Eina_List **)&def_at.data);
+ def_at.data = NULL;
+ }
+
+ if (account_data->acctlist)
+ {
+ EINA_LIST_FOREACH(account_data->acctlist, l, at)
+ {
+ if (NULL != at && at->data)
+ CALENDAR_SVC_FREE_CS_LIST((Eina_List **)&at->data);
+ }
+ cal_account_svc_free_account_list(&account_data->acctlist);
+ }
+}
+
+static char* __cal_account_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "data is null");
+ c_retvm_if(!obj, NULL, "obj is null");
+
+ struct _cs *cs = data;
+ const char* name = NULL;
+ struct _acct* at = NULL;
+
+ c_retvm_if(!cs->cs, NULL, "cs->cs is null");
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs->cs, CAL_TABLE_INT_INDEX) == DEFAULT_CALENDAR_ID)
+ return strdup(C_("IDS_CLD_OPT_PHONE_CALENDAR"));
+
+ name = CALENDAR_SVC_STRUCT_GET_STR(cs->cs, CAL_TABLE_TXT_NAME);
+ if (name)
+ return strdup(name);
+ }
+ else if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs->cs, CAL_TABLE_INT_INDEX) == DEFAULT_CALENDAR_ID)
+ return strdup(C_("IDS_EMAIL_BODY_DEFAULT_ACCOUNT"));
+
+ at = cs->at;
+ if (at && at->name)
+ return strdup(at->name);
+ }
+
+ return NULL;
+}
+
+static void __cal_account_check_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(data == NULL, "data is null");
+ c_retm_if(obj == NULL, "obj is null");
+
+ Eina_List * realized_list;
+ Elm_Object_Item *it;
+ Eina_List *l;
+ Evas_Object* check = obj;
+ Eina_Bool is_checked = EINA_FALSE;
+
+ cal_account_data* account_data = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(account_data == NULL, "account_data is null");
+
+ struct _cs *cs = data;
+
+ CALENDAR_SVC_SET_CALENDAR_VISIBILITY(cs->cs,elm_check_state_get(obj));
+
+ realized_list = elm_genlist_realized_items_get(account_data->gl);
+ EINA_LIST_FOREACH(realized_list, l, it) {
+ elm_genlist_item_update(it);
+ }
+
+ account_data->ad->is_update_view = EINA_TRUE;
+
+ is_checked = elm_check_state_get(check);
+ if (is_checked) {
+
+ account_data->selected_count++;
+ } else {
+
+ if (0 < account_data->selected_count) {
+ account_data->selected_count--;
+ }
+ }
+
+ __cal_account_set_selected_count_label(account_data);
+}
+
+static void __cal_account_color_selector_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(data == NULL, "data is null");
+ c_retm_if(obj == NULL, "obj is null");
+
+ Evas_Object *rect = data;
+ elm_colorselector_color_get(obj, &calendar_color.red, &calendar_color.green, &calendar_color.blue, &calendar_color.alpha);
+ evas_object_color_set(rect, calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);
+}
+
+static Evas_Object* __cal_account_create_colorselector(Evas_Object* parent, cal_account_data* account_data)
+{
+ c_retvm_if(!parent, NULL, "parent is null");
+ c_retvm_if(!account_data, NULL, "account_data is null");
+
+ Evas_Object *selector;
+ Evas_Object *rect;
+ Evas_Object *selector_layout;
+
+ selector_layout = cal_util_add_layout(parent, "color_selector");
+ c_retvm_if(!selector_layout, NULL, "layout is null");
+
+ selector = elm_colorselector_add(parent);
+ if (!selector)
+ {
+ ERR("elm_colorselector_add returned null");
+ evas_object_del(selector_layout);
+ return NULL;
+ }
+
+ elm_colorselector_mode_set(selector, ELM_COLORSELECTOR_COMPONENTS);
+ elm_object_part_content_set(selector_layout, "elm.swallow.selector", selector);
+ account_data->color = selector;
+
+ rect = evas_object_rectangle_add(evas_object_evas_get(parent));
+ if (!selector)
+ {
+ ERR("evas_object_rectangle_add returned null");
+ evas_object_del(selector_layout);
+ return NULL;
+ }
+
+ elm_object_part_content_set(selector_layout, "elm.swallow.color", rect);
+ account_data->rect = rect;
+
+ evas_object_smart_callback_add(selector, "changed", __cal_account_color_selector_changed_callback, rect);
+
+ return selector_layout;
+}
+
+static void __cal_account_popup_response_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *popup = data;
+ Evas_Object *button = obj;
+
+ Eina_List * realized_list;
+ Elm_Object_Item *it;
+ Eina_List *l;
+
+ cal_account_data* account_data = evas_object_data_get(popup, "data");
+ c_retm_if(!account_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ struct _cs *cs = account_data->cs;
+ c_retm_if(!cs, "cs is null");
+
+ if (!strcmp(elm_object_text_get(button), S_("IDS_COM_OPT_SAVE")))
+ CALENDAR_SVC_SET_CALENDAR_COLOR(cs->cs, &calendar_color);
+
+ realized_list = elm_genlist_realized_items_get(account_data->gl);
+ c_retm_if(!realized_list, "elm_genlist_realized_items_get returned null");
+
+ EINA_LIST_FOREACH(realized_list, l, it) {
+ elm_genlist_item_update(it);
+ }
+
+ evas_object_del(popup);
+}
+
+static Evas_Object* __cal_account_color_create_popup(cal_account_data* account_data)
+{
+ c_retvm_if(!account_data, NULL, "account_data is null");
+
+ Evas_Object *popup = NULL;
+ popup = cal_util_add_popup(account_data->ad->win, NULL, NULL,
+ __cal_account_popup_response_callback, account_data,
+ S_("IDS_COM_OPT_SAVE"), S_("IDS_IDLE_BUTTON_CANCEL"), NULL);
+ c_retvm_if(!popup, NULL, "cal_util_add_popup returned null");
+
+ evas_object_propagate_events_set(popup, EINA_FALSE);
+
+ account_data->color_selector = __cal_account_create_colorselector(popup, account_data);
+
+ if (!account_data->color_selector) {
+ ERR("__cal_account_create_colorselector returned null");
+ evas_object_del(popup);
+ return NULL;
+ }
+
+ elm_object_content_set(popup, account_data->color_selector);
+
+ return popup;
+}
+
+static void __cal_account_color_clicked_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ c_retm_if(data == NULL, "data is null");
+ c_retm_if(obj == NULL, "obj is null");
+ cal_account_data* account_data = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(account_data == NULL, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ Evas_Object *popup = NULL;
+
+ struct _cs* cs = data;
+
+ account_data->cs = cs;
+
+ popup = __cal_account_color_create_popup(account_data);
+ c_retm_if(popup == NULL, "popup is null");
+
+ CALENDAR_SVC_GET_CALENDAR_COLOR(cs->cs, &calendar_color);
+ elm_colorselector_color_set(account_data->color, calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);
+ evas_object_color_set(account_data->rect,calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);
+}
+
+static Evas_Object* __cal_account_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(data == NULL, NULL, "data is null");
+ c_retvm_if(obj == NULL, NULL, "obj is null");
+
+ struct _cs *cs = data;
+
+ cal_account_data* account_data = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retvm_if(account_data == NULL, NULL, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ Evas_Object* icon = NULL;
+ Evas_Object* check = NULL;
+ Eina_Bool checked;
+ Calendar_color color = {0,};
+ char* icon_path = NULL;
+
+ if (elm_genlist_decorate_mode_get(obj) && !strcmp(part, "elm.edit.icon.1"))
+ {
+ check = elm_check_add(obj);
+ c_retvm_if(check == NULL, NULL, "elm_check_add returned null");
+
+ evas_object_data_set(check, "priv", account_data);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+
+ checked = CALENDAR_SVC_STRUCT_GET_INT(cs->cs,CAL_TABLE_INT_VISIBILITY);
+ elm_check_state_set(check, checked);
+
+ evas_object_smart_callback_add(check, "changed", __cal_account_check_changed_callback, cs);
+ cs->check = check;
+
+ return check;
+ }
+ else if (!strcmp(part, "elm.icon.1"))
+ {
+ icon = elm_icon_add(obj);
+ c_retvm_if(icon == NULL, NULL, "elm_icon_add returned null");
+
+ if ( CALENDAR_SVC_STRUCT_GET_INT( cs->cs, CAL_TABLE_INT_INDEX) == DEFAULT_CALENDAR_ID)
+ elm_icon_file_set(icon, "/opt/apps/org.tizen.efl-calendar/res/icons/all_calendar.png", NULL);
+ else
+ {
+ icon_path = cal_account_svc_get_account_icon_path(CALENDAR_SVC_STRUCT_GET_INT( cs->cs, CAL_TABLE_INT_ACCOUNT_ID));
+ if (icon_path)
+ {
+ elm_icon_file_set(icon, icon_path, NULL);
+ free(icon_path);
+ }
+ else
+ {
+ ERR("cal_account_svc_get_account_icon_path returned null");
+ elm_icon_file_set(icon, "/opt/apps/org.tizen.efl-calendar/res/icons/all_calendar.png", NULL);
+ }
+ }
+
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+ return icon;
+ }
+ else if(!strcmp(part, "elm.icon.2"))
+ {
+ CALENDAR_SVC_GET_CALENDAR_COLOR(cs->cs, &color);
+
+ icon = evas_object_rectangle_add(evas_object_evas_get(obj));
+ c_retvm_if(icon == NULL, NULL, "evas_object_rectangle_add returned null");
+
+ evas_object_data_set(icon, "priv", account_data);
+ evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_propagate_events_set(icon, EINA_FALSE);
+ evas_object_color_set(icon, color.red, color.green, color.blue, color.alpha);
+
+ evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_UP, __cal_account_color_clicked_callback, cs);
+
+ return icon;
+ }
+ else if(!strcmp(part, "elm.swallow.colorbar"))
+ {
+ CALENDAR_SVC_GET_CALENDAR_COLOR(cs->cs, &color);
+ icon = evas_object_rectangle_add(evas_object_evas_get(obj));
+ c_retvm_if(icon == NULL, NULL, "evas_object_rectangle_add returned null");
+
+ evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_color_set(icon, color.red, color.green, color.blue, color.alpha);
+
+ return icon;
+ }
+ return NULL;
+}
+
+static void __cal_account_add_list(cal_account_data *account_data)
+{
+ c_retm_if(account_data == NULL, "account_data is null");
+
+ Evas_Object *gl;
+
+ gl = elm_genlist_add(account_data->ly);
+ c_retm_if(gl == NULL, "elm_genlist_add returned null");
+
+ elm_genlist_tree_effect_enabled_set(gl, EINA_TRUE);
+ elm_genlist_decorate_mode_set(gl, EINA_TRUE);
+
+ evas_object_data_set(gl, "priv", account_data);
+
+ elm_object_part_content_set(account_data->ly, "sw", gl);
+ account_data->gl = gl;
+}
+
+static void __cal_account_get_calendars(cal_account_data *account_data, struct _acct *at)
+{
+ c_retm_if(account_data == NULL, "account_data is null");
+ c_retm_if(at == NULL, "at is null");
+ c_retm_if(at->id < 1 , "at->id(%d) is less then 0", at->id);
+
+ Eina_List *csl = NULL;
+
+ csl = CALENDAR_SVC_GET_CALENDARS_WITH_ACCOUNT(at->id, at);
+
+ if (csl)
+ at->data = eina_list_merge(at->data, csl);
+}
+
+static void __cal_account_get_list(cal_account_data *account_data)
+{
+ c_retm_if(account_data == NULL, "account_data is null");
+
+ Eina_List *l;
+ struct _acct *at;
+
+ l = cal_account_svc_get_account_list();
+ if (l)
+ account_data->acctlist = eina_list_merge(account_data->acctlist, l);
+
+ EINA_LIST_FOREACH(account_data->acctlist, l, at)
+ __cal_account_get_calendars(account_data, at);
+}
+
+static inline void __cal_account_set_default_account(cal_account_data *account_data)
+{
+ c_retm_if(account_data == NULL, "account_data is null");
+
+ Eina_List *csl = NULL;
+
+ csl = CALENDAR_SVC_GET_CALENDARS_WITH_ACCOUNT(LOCAL_ACCOUNT_ID, &def_at);
+ if (csl)
+ def_at.data = eina_list_merge(def_at.data, csl);
+}
+
+static void __cal_account_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(data == NULL, "data is null");
+ c_retm_if(obj == NULL, "obj is null");
+
+ Elm_Object_Item *it;
+ cal_account_data *account_data = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(account_data == NULL, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ struct _cs *cs = data;
+
+
+ Eina_Bool is_checked = EINA_FALSE;
+
+ it = elm_genlist_selected_item_get(obj);
+ c_retm_if(it == NULL, "elm_genlist_selected_item_get returned null");
+
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ is_checked = elm_check_state_get(cs->check);
+ elm_check_state_set(cs->check, !is_checked);
+
+ if (!is_checked) {
+ account_data->selected_count++;
+ } else {
+ if (0 < account_data->selected_count)
+ account_data->selected_count--;
+ }
+
+
+ CALENDAR_SVC_SET_CALENDAR_VISIBILITY(cs->cs, !is_checked);
+
+ account_data->ad->is_update_view = EINA_TRUE;
+
+ __cal_account_set_selected_count_label(account_data);
+}
+
+static void __cal_account_update_genlist(void* data)
+{
+ CAL_FN_START;
+
+ c_retm_if(data == NULL, "data is null");
+
+ Eina_List* l, *ll;
+ struct _acct *at;
+ struct _cs* cs;
+ cal_account_data* account_data = data;
+ Eina_Bool checked = EINA_FALSE;
+
+ __cal_account_clear_list(account_data);
+ elm_genlist_clear(account_data->gl);
+
+ __cal_account_get_list(account_data);
+
+ __cal_account_set_default_account(account_data);
+ EINA_LIST_FOREACH(def_at.data, l, cs)
+ {
+ if (cs) {
+ checked = CALENDAR_SVC_STRUCT_GET_INT(cs->cs,CAL_TABLE_INT_VISIBILITY);
+ if (checked) {
+ account_data->selected_count ++;
+ }
+ elm_genlist_item_append(account_data->gl, &itc, cs, NULL, ELM_GENLIST_ITEM_NONE, __cal_account_genlist_item_select_callback, cs);
+ }
+ }
+
+ EINA_LIST_FOREACH(account_data->acctlist, l, at)
+ {
+ if (at)
+ {
+ EINA_LIST_FOREACH(at->data, ll, cs)
+ {
+ if (cs) {
+ checked = CALENDAR_SVC_STRUCT_GET_INT(cs->cs,CAL_TABLE_INT_VISIBILITY);
+ if (checked) {
+ account_data->selected_count ++;
+ }
+ elm_genlist_item_append(account_data->gl, &itc, cs, NULL, ELM_GENLIST_ITEM_NONE, __cal_account_genlist_item_select_callback, cs);
+ }
+ }
+ }
+ }
+}
+
+static void __cal_account_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(data == NULL, "data is null");
+
+ cal_account_data *account_data = data;
+
+ __cal_account_clear_list(account_data);
+
+ if (account_data->notify)
+ evas_object_del(account_data->notify);
+
+ free(account_data);
+
+ CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK(__cal_account_update_genlist);
+}
+
+static void __cal_account_button_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(data == NULL, "data is null");
+
+ cal_account_data *account_data = data;
+ Evas_Object *popup = cal_util_add_popup(account_data->ad->win, C_("IDS_COM_POP_ERRORMSG_SAVE_Q"), NULL,
+ __cal_account_popup_response_callback, account_data,
+ S_("IDS_COM_OPT_SAVE"), S_("IDS_IDLE_BUTTON_CANCEL"), NULL);
+ c_retm_if(!popup, "cal_util_add_popup returned null");
+
+ elm_popup_orient_set(popup, ELM_POPUP_ORIENT_CENTER);
+}
+
+static Evas_Object* __cal_account_create_layout(struct appdata *ad, Evas_Object *parent)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!ad || !parent, NULL, "Input parameter is null");
+
+ Evas_Object *ly;
+ Evas_Object *bg;
+ Evas_Object *close_button;
+ cal_account_data *account_data;
+
+ account_data = calloc(1, sizeof(cal_account_data));
+ c_retvm_if(account_data == NULL, NULL, "calloc(1, sizeof(cal_account_data)) is failed");
+
+ account_data->name = _name;
+ account_data->parent = parent;
+ account_data->ad = ad;
+ account_data->selected_count = 0;
+ account_data->notify = NULL;
+
+
+ ly = cal_util_add_layout(ad->nv, account_data->name);
+ if (!ly)
+ {
+ ERR("cal_util_add_layout returned null");
+ free(account_data);
+ return NULL;
+ }
+ account_data->ly = ly;
+ evas_object_data_set(ly, "priv", account_data);
+
+ bg = cal_util_add_bg(ly, EINA_FALSE);
+ if (!bg)
+ {
+ ERR("cal_util_add_bg returned null");
+ evas_object_del(ly);
+ free(account_data);
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "base", bg);
+
+ __cal_account_add_list(account_data);
+ __cal_account_update_genlist(account_data);
+
+ close_button = elm_button_add(account_data->ly);
+ elm_object_part_content_set(account_data->ly, "selector_button", close_button);
+ elm_object_text_set(close_button,S_("IDS_COM_BODY_CLOSE"));
+
+ evas_object_smart_callback_add(close_button, "clicked", __cal_account_button_callback, account_data);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_account_delete_layout, account_data);
+
+ CALENDAR_SVC_ADD_EVENT_CHANGED_CALLBACK(__cal_account_update_genlist, account_data);
+
+ return ly;
+}
+
+void cal_account_create_view(struct appdata *ad, Evas_Object *parent)
+{
+ CAL_FN_START;
+
+ c_retm_if(ad == NULL, "ad is null");
+ c_retm_if(ad->nv == NULL, "ad->nv is null");
+ c_retm_if(parent == NULL, "parent is null");
+
+ Evas_Object *ly;
+ Evas_Object *add;
+ Evas_Object *back;
+ Elm_Object_Item* navi_item;
+
+ ly = __cal_account_create_layout(ad, parent);
+ c_retm_if(ly == NULL, "__cal_account_create_layout returned null");
+
+ add = elm_button_add(ad->nv);
+ if (!add)
+ {
+ ERR("elm_button_add returned null");
+ evas_object_del(ly);
+ return;
+ }
+
+ navi_item = elm_naviframe_item_push(ad->nv, C_("IDS_CLD_BODY_CALENDARS"), NULL, NULL, ly, NULL);
+ if (!navi_item)
+ {
+ ERR("elm_naviframe_item_push returned null");
+ evas_object_del(add);
+ evas_object_del(ly);
+ return;
+ }
+
+ back = elm_object_item_part_content_get(navi_item, "prev_btn");
+ if (!navi_item)
+ {
+ ERR("elm_object_item_part_content_get returned null");
+ elm_naviframe_item_pop(ad->nv);
+ evas_object_del(add);
+ evas_object_del(ly);
+ return;
+ }
+
+ elm_object_style_set(back, "naviframe/back_btn/default");
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <aul.h>
+#include <appsvc.h>
+
+#include "view.h"
+#include "edit-repeat.h"
+#include "edit-alarm.h"
+#include "detail.h"
+#include "alm-mgr.h"
+#include "external-ug.h"
+
+
+static const char *_name = "view/detail";
+
+#define ARRAY_SIZE(array) \
+ ((int)(sizeof(array) / sizeof(array[0])))
+
+static int is_hour24;
+
+static void __cal_detail_update_view(void *data);
+static void __cal_detail_edit_button_callback(void *data, Evas_Object *obj, void *ei);
+
+enum genlist_item_type{
+ _GTYPE_TITLE_LOC = 1,
+ _GTYPE_START,
+ _GTYPE_END,
+ _GTYPE_ALARM,
+ _GTYPE_REPEAT,
+ _GTYPE_NOTE,
+ _GTYPE_LINKED_CAL,
+ _GTYPE_MAX
+};
+
+typedef struct {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+
+ const char *text;
+ Evas_Object *entry;
+ Evas_Object *genlist;
+ Evas_Object *bt_one;
+ Evas_Object *bt_all;
+ Evas_Object *popup;
+
+ cal_struct *cs;
+
+ int cid;
+
+ Eina_Bool is_deleted; //When event is deleted, updating view is not needed.
+ GList *alarm_list;
+}cal_detail_data;
+
+typedef struct {
+ cal_detail_data *p;
+ int type;
+ Elm_Object_Item *it;
+ int alarm_value;
+}cal_detail_genlist_item_data;
+
+static Elm_Genlist_Item_Class itc_seperator, itc_title_loc, itc_4_text, itc_mutilline, itc_parts, itc_linked_cal;
+
+static void __cal_detail_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "Input parameter is null");
+
+ cal_detail_data *p = data;
+
+ if (p->cs)
+ CALENDAR_SVC_STRUCT_FREE(&(p->cs));
+
+ free(p);
+
+ CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK(__cal_detail_update_view);
+
+}
+
+static cal_struct* __cal_detail_get_event(int idx)
+{
+ int r;
+ cal_struct *cs = NULL;
+ r = CALENDAR_SVC_GET(CAL_STRUCT_SCHEDULE, idx, NULL, &cs);
+ if (r != CAL_SUCCESS || CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_DELETED) ==1)
+ {
+ if(cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ ERR("CALENDAR_SVC_GET is failed");
+ return NULL;
+ }
+
+ return cs;
+}
+
+static void __cal_detail_get_time_text(time_t t, int allday, char *buf, int sz)
+{
+ struct tm tm;
+ const char* time;
+
+ localtime_r(&t, &tm);
+
+ if (is_hour24)
+ time = CAL_UTIL_TIME_FORMAT_6;
+ else
+ time = CAL_UTIL_TIME_FORMAT_1;
+
+ if (allday)
+ cal_util_get_time_text(buf, sz, CAL_UTIL_DATE_FORMAT_1, NULL, &tm);
+ else
+ cal_util_get_time_text(buf, sz, CAL_UTIL_DATE_FORMAT_1, time, &tm);
+}
+
+static void __cal_detail_get_start_time(cal_struct *cs, char *buf, int sz, cal_detail_data* p)
+{
+ CAL_ASSERT(p);
+ CAL_ASSERT(p->ad);
+
+ int allday;
+ time_t t;
+ int repeat;
+
+ allday = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+
+ if (repeat && !p->ad->is_aul)
+ t = p->ad->tm->st;
+ else
+ t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+
+ __cal_detail_get_time_text(t, allday, buf, sz);
+}
+
+static void __cal_detail_get_end_time(cal_struct *cs, char *buf, int sz, cal_detail_data* p)
+{
+ CAL_ASSERT(p);
+ CAL_ASSERT(p->ad);
+
+ int allday;
+ time_t t;
+ int repeat;
+
+ allday = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+
+ if (repeat && !p->ad->is_aul)
+ t = p->ad->tm->et;
+ else
+ t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_END_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+
+ __cal_detail_get_time_text(t, allday, buf, sz);
+}
+
+static void __cal_detail_get_alarm(cal_detail_data * p,cal_struct *cs)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!cs, "cs is null");
+
+ GList *al = NULL;
+
+ g_list_free(p->alarm_list);
+ p->alarm_list = NULL;
+
+ int r = CALENDAR_SVC_STRUCT_GET_LIST(cs, CAL_VALUE_LST_ALARM, &al);
+ c_retm_if(r!=CAL_SUCCESS, "CALENDAR_SVC_STRUCT_GET_LIST(CAL_VALUE_LST_ALARM) is failed(%d)", r);
+ if (!al)
+ return;
+
+ while (al) {
+ cal_value *val = al->data;
+ c_retm_if(!val, "val is null");
+
+ int tick = CALENDAR_SVC_VALUE_GET_INT(val, CAL_VALUE_INT_ALARMS_TICK);
+ cal_sch_remind_tick_unit_t unit = CALENDAR_SVC_VALUE_GET_INT(val, CAL_VALUE_INT_ALARMS_TICK_UNIT);
+ int min = cal_edit_alarm_get_min(tick, unit);
+ p->alarm_list = g_list_append(p->alarm_list,(void *)min);
+ al = g_list_next(al);
+ }
+
+ p->alarm_list = g_list_first(p->alarm_list);
+}
+
+static void __cal_detail_get_repeat(cal_struct *cs, char *buf, int sz)
+{
+ c_retm_if(!cs, "cs is null");
+
+ cal_repeat_term_t term;
+ int flag;
+
+ flag = 0;
+ term = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+ if (term == CAL_REPEAT_EVERY_WEEK)
+ {
+ char *sflag;
+ sflag = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_WEEK_FLAG);
+ flag = cal_util_get_week_flag(sflag);
+ }
+
+ cal_edit_repeat_get_repeat_str(term, flag, buf, sz);
+}
+
+static void __cal_detail_get_save_to_str(int calid, char *buf, int sz)
+{
+ cal_struct *cs = NULL;
+ const char *str = NULL;
+ int r;
+
+ r = CALENDAR_SVC_GET(CAL_STRUCT_CALENDAR, calid, NULL, &cs);
+ if (r != CAL_SUCCESS)
+ {
+ snprintf(buf, sz, "%s", _("Phone"));
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ return;
+ }
+
+ if (calid == DEFAULT_CALENDAR_ID)
+ str = C_("IDS_CLD_OPT_PHONE_CALENDAR");
+ else
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_TABLE_TXT_NAME);
+ if (!str)
+ str = C_("IDS_CLD_OPT_PHONE_CALENDAR");
+ }
+
+ snprintf(buf, sz, "%s", str);
+
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+}
+
+static void __cal_detail_get_save_to(cal_struct *cs, char *buf, int sz)
+{
+ int idx;
+
+ idx = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_CALENDAR_ID);
+ if (idx == -1)
+ {
+ snprintf(buf, sz, "%s", C_("IDS_CLD_OPT_PHONE_CALENDAR"));
+ return;
+ }
+
+ __cal_detail_get_save_to_str(idx, buf, sz);
+}
+
+static inline const char* __cal_detail_get_note(cal_struct *cs)
+{
+ c_retvm_if(!cs, NULL, "cs is null");
+
+ return CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_DESCRIPTION);
+}
+
+static void __cal_detail_back_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ cal_detail_data *p = data;
+
+ if((NULL != p->ad->ug) && (UG_DETAIL == p->ad->u_type))
+ {
+ ug_destroy_me(p->ad->ug);
+ }
+ else
+ {
+ if(p->ad->request_view == CV_DETAIL)
+ {
+ if(elm_naviframe_top_item_get(p->ad->nv) != elm_naviframe_bottom_item_get(p->ad->nv))
+ {
+ p->ad->request_view = CV_UNKNOWN;
+ p->ad->is_aul = EINA_FALSE;
+
+ elm_win_lower(p->ad->win);
+ }
+ else
+ elm_exit();
+ }
+
+ if(p->ad->is_update_view)
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->parent), "update", "prog");
+ }
+}
+
+static void __cal_viewer_back_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ elm_exit();
+}
+
+static void __cal_detail_error_popup_response_event_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ Evas_Object *popup = data;
+ struct appdata *ad = evas_object_data_get(popup, "data");
+
+ c_retm_if(!ad, "ad is null");
+ c_retm_if(!ad->win, "p->ad->win is null");
+
+ if (!elm_naviframe_top_item_get(ad->nv))
+ elm_exit();
+ else
+ elm_win_lower(ad->win);
+
+ evas_object_del(popup);
+}
+
+static void __cal_detail_delete_event(cal_detail_data* p, Eina_Bool is_delete_all)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "p is null");
+
+ GList* list = NULL;
+ cal_value* value = NULL;
+ time_t t = 0;
+ int r = 0;
+
+ if (!is_delete_all) {
+ cal_struct *cs = __cal_detail_get_event(p->cid);
+ c_retm_if(!cs, "cs is null");
+
+ t = p->ad->tm->st;
+ value = CALENDAR_SVC_VALUE_NEW(CAL_VALUE_LST_EXCEPTION_DATE);
+ CALENDAR_SVC_VALUE_SET_TIME(value,CAL_VALUE_GMT_EXCEPTION_DATE_TIME,CAL_TZ_FLAG_GMT,t);
+ CALENDAR_SVC_STRUCT_GET_LIST(cs,CAL_VALUE_LST_EXCEPTION_DATE,&list);
+ list = g_list_append(list,value);
+
+ CALENDAR_SVC_STRUCT_SET_LIST(cs,CAL_VALUE_LST_EXCEPTION_DATE,list);
+ r = CALENDAR_SVC_UPDATE(cs);
+ if (r != CAL_SUCCESS)
+ ERR("CALENDAR_SVC_UPDATE is failed %d", r);
+ else
+ p->is_deleted = EINA_TRUE;
+
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ }
+ else {
+ r = CALENDAR_SVC_DELETE(CAL_STRUCT_SCHEDULE, p->cid);
+ c_retm_if(r!=CAL_SUCCESS, "CALENDAR_SVC_DELETE(CAL_STRUCT_SCHEDULE, %d) is failed(%d)", p->cid, r);
+
+ p->is_deleted = EINA_TRUE;
+ }
+
+ evas_object_del(p->popup);
+
+ if ((p->ad->ug) && (UG_DETAIL == p->ad->u_type))
+ ug_destroy_me(p->ad->ug);
+ else {
+ if (elm_naviframe_top_item_get(p->ad->nv) == elm_naviframe_bottom_item_get(p->ad->nv))
+ elm_exit();
+ else
+ elm_naviframe_item_pop(p->ad->nv);
+ }
+}
+
+static void __cal_detail_delete_popup_response_event_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *popup = data;
+ Evas_Object *button = obj;
+
+ cal_detail_data* p = evas_object_data_get(popup, "data");
+ c_retm_if(!p, "p is null");
+
+ if (!strcmp(elm_object_text_get(button), C_("IDS_CLD_BODY_ONLY_THIS_EVENT")))
+ __cal_detail_delete_event(p, EINA_FALSE);
+ else if (!strcmp(elm_object_text_get(button), C_("IDS_CLD_POP_ALL_REPETITIVE_EVENTS"))
+ || !strcmp(elm_object_text_get(button), S_("IDS_COM_SK_OK")))
+ __cal_detail_delete_event(p, EINA_TRUE);
+
+ evas_object_del(popup);
+ p->popup = NULL;
+}
+
+static void __cal_detail_edit_popup_response_event_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *popup = data;
+ Evas_Object *button = obj;
+
+ cal_detail_data* p = evas_object_data_get(popup, "data");
+ c_retm_if(!p, "p is null");
+
+ struct appdata* ad = p->ad;
+ c_retm_if(!ad, "ad is null");
+
+ if (!strcmp(elm_object_text_get(button), C_("IDS_CLD_BODY_ONLY_THIS_EVENT")))
+ ad->edit_special_one = EINA_TRUE;
+ else if (!strcmp(elm_object_text_get(button), C_("IDS_CLD_POP_ALL_REPETITIVE_EVENTS")))
+ ad->edit_special_one = EINA_FALSE;
+ else {
+ evas_object_del(popup);
+ p->popup = NULL;
+ return;
+ }
+
+ cal_edit_create_view(ad, p->ly);
+
+ evas_object_del(popup);
+ p->popup = NULL;
+}
+
+static void __cal_detail_show_popup(cal_detail_data *p, const char *tit, Eina_Bool is_edit)
+{
+ void (*callback_func)(void *data, Evas_Object *obj, void *ei) = NULL;
+
+ if (is_edit)
+ callback_func = __cal_detail_edit_popup_response_event_callback;
+ else
+ callback_func = __cal_detail_delete_popup_response_event_callback;
+
+ cal_struct *cs = __cal_detail_get_event(p->cid);
+ c_retm_if(!cs, "__cal_detail_get_event(%d) is failed", p->cid);
+
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM)) {
+ p->popup = cal_util_add_popup(p->ad->win, NULL, tit, callback_func, p,
+ C_("IDS_CLD_BODY_ONLY_THIS_EVENT"), C_("IDS_CLD_POP_ALL_REPETITIVE_EVENTS"),
+ S_("IDS_COM_SK_CANCEL"), NULL);
+
+ elm_object_style_set(p->popup, "verticalbuttonstyle");
+ }
+ else {
+ p->popup = cal_util_add_popup(p->ad->win, NULL, tit, callback_func, p,
+ S_("IDS_COM_SK_OK"),S_("IDS_COM_SK_CANCEL"), NULL);
+ }
+
+ c_retm_if(!p->popup, "elm_popup_add(p->ad->win) returned null");
+}
+
+static void __cal_detail_delete_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ Evas_Object *ly = data;
+ cal_detail_data *p = CAL_UTIL_GET_PRIV_DATA(ly);
+ cal_struct *cs = NULL;
+
+ // TODO: add
+
+
+ if (p->cid) {
+ cs = __cal_detail_get_event(p->cid);
+
+ __cal_detail_show_popup(p, C_("IDS_CLD_OPT_DELETE_EVENT"), EINA_FALSE);
+ }
+
+ if(cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+}
+
+static void __cal_detail_edit_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ Evas_Object *ly = data;
+ cal_detail_data *p = CAL_UTIL_GET_PRIV_DATA(ly);
+ cal_struct *cs = NULL;
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ CAL_ASSERT(p);
+
+ cs = __cal_detail_get_event(p->cid);
+
+ if (0 != CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_VALUE_INT_REPEAT_TERM))
+ __cal_detail_show_popup(p,_("Edit event?"), EINA_TRUE);
+ else
+ cal_edit_create_view(p->ad, ly);
+
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+}
+
+static char* __cal_detail_get_title_location_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ c_retvm_if(!item_data, NULL, "item_data is null");
+
+ const char *title;
+ const char *loc;
+ cal_detail_data *p = item_data->p;
+ c_retvm_if(!p, NULL, "p is null");
+
+ cal_struct *cs = p->cs;
+ c_retvm_if(!cs, NULL, "cs is null");
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ title = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
+ if (title)
+ return strdup(title);
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ loc = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_LOCATION);
+ if (loc)
+ return strdup(loc);
+ }
+
+ return NULL;
+}
+
+static char* __cal_detail_get_save_to_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ cal_detail_data *p = item_data->p;
+ char buf[1024];
+ cal_struct *cs;
+ cs = p->cs;
+ if(NULL == cs)
+ {
+ return NULL;
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(C_("IDS_ST_BODY_SAVE_TO"));
+ }
+
+ if(!CAL_STRCMP(part, "elm.text.2"))
+ {
+ __cal_detail_get_save_to(cs, buf, sizeof(buf));
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+static char* __cal_detail_get_start_time_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ cal_struct *cs;
+ char buf[1024];
+ cal_detail_data *p = item_data->p;
+ cs = p->cs;
+ if(NULL == cs)
+ {
+ return NULL;
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(S_("IDS_COM_BODY_START"));
+ }
+
+ if(!CAL_STRCMP(part, "elm.text.2"))
+ {
+ __cal_detail_get_start_time(cs, buf, sizeof(buf), p);
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+static char* __cal_detail_get_end_time_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ cal_struct *cs;
+ char buf[1024];
+ cal_detail_data *p = item_data->p;
+ cs = p->cs;
+ if(NULL == cs)
+ {
+ return NULL;
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(S_("IDS_COM_BODY_END"));
+ }
+
+ if(!CAL_STRCMP(part, "elm.text.2"))
+ {
+ __cal_detail_get_end_time(cs, buf, sizeof(buf), p);
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+static void __cal_detail_get_alarm_text(cal_detail_genlist_item_data *data, char* buf, int buf_size)
+{
+ c_retm_if(!data, "data is null");
+ cal_edit_alarm_get_alarm_str(data->alarm_value, buf, buf_size);
+}
+
+static char* __cal_detail_add_alarm_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ cal_struct *cs;
+ char buf[1024] = {0};
+ cal_detail_data *p = item_data->p;
+ cs = p->cs;
+ if(NULL == cs)
+ {
+ return NULL;
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(S_("IDS_COM_BODY_ALARM"));
+ }
+
+ if(!CAL_STRCMP(part, "elm.text.2"))
+ {
+ __cal_detail_get_alarm_text(item_data, buf, sizeof(buf));
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+
+static char* __cal_detail_get_repeat_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ cal_struct *cs;
+ char buf[1024] = {0};
+ cal_detail_data *p = item_data->p;
+ cs = p->cs;
+ if(NULL == cs)
+ {
+ return NULL;
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(C_("IDS_CLD_BODY_REPEAT"));
+ }
+
+ if(!CAL_STRCMP(part, "elm.text.2"))
+ {
+ __cal_detail_get_repeat(cs, buf, sizeof(buf));
+
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+static char* __cal_detail_get_note_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ cal_struct *cs;
+
+ cal_detail_data *p = item_data->p;
+ cs = p->cs;
+ if (NULL == cs)
+ {
+ return NULL;
+ }
+
+ return NULL;
+}
+
+static Evas_Object* __cal_detail_add_note_object(cal_detail_data *p, Evas_Object *parent, const char *text)
+{
+ c_retvm_if(!p, NULL, "p is null");
+ c_retvm_if(!parent, NULL, "parent is null");
+ c_retvm_if(!text, NULL, "text is null");
+ c_retvm_if(!strlen(text), NULL, "strlen(text) is zero");
+
+ Evas_Object *layout = cal_util_add_edit_field(parent, C_("IDS_COM_BODY_NOTE"), NULL, EINA_FALSE, EINA_FALSE);
+ c_retvm_if(!layout, NULL, "layout is null");
+
+ Evas_Object *entry = elm_object_part_content_get(layout, "elm.swallow.content");
+ c_retvm_if(!entry, layout, "entry is null");
+
+ p->entry = entry;
+ p->text = text;
+
+ elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+ evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_EXPAND);
+ elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+ elm_entry_autocapital_type_set(entry, EINA_TRUE);
+ elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+
+ elm_entry_entry_set(entry, text);
+
+ return layout;
+}
+
+static Evas_Object* __cal_detail_add_note_icon(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ c_retvm_if(!obj, NULL, "obj is null");
+ c_retvm_if(!part, NULL, "part is null");
+ c_retvm_if(!item_data, NULL, "item_data is null");
+
+ cal_detail_data *p = item_data->p;
+ Evas_Object *edit_field = NULL;
+ const char *note = NULL;
+
+ cal_struct *cs = p->cs;
+ c_retvm_if(!cs, NULL, "cs is null");
+
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ note = __cal_detail_get_note(cs);
+ if (!CAL_STRLEN(note))
+ return NULL;
+
+ edit_field = __cal_detail_add_note_object(p, obj, elm_entry_utf8_to_markup(note));
+ }
+
+ return edit_field;
+}
+
+static Evas_Object *__cal_detail_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "data is null");
+
+ Evas_Object *e_obj = NULL;
+
+ cal_detail_genlist_item_data *item_data = (cal_detail_genlist_item_data*)data;
+ int type = item_data->type;
+
+ switch ( type )
+ {
+ case _GTYPE_NOTE:
+ e_obj = __cal_detail_add_note_icon(obj, part, item_data);
+ break;
+ default:
+ break;
+ }
+
+ return e_obj;
+}
+
+
+static char *__cal_detail_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "data is null");
+
+ cal_detail_genlist_item_data *item_data = (cal_detail_genlist_item_data*)data;
+ int type = item_data->type;
+
+ switch ( type )
+ {
+ case _GTYPE_TITLE_LOC:
+ return __cal_detail_get_title_location_text(obj, part, item_data);
+ break;
+ case _GTYPE_START:
+ return __cal_detail_get_start_time_text(obj, part, item_data);
+ break;
+ case _GTYPE_END:
+ return __cal_detail_get_end_time_text(obj, part, item_data);
+ break;
+ case _GTYPE_ALARM:
+ return __cal_detail_add_alarm_text(obj, part, item_data);
+ break;
+ case _GTYPE_REPEAT:
+ return __cal_detail_get_repeat_text(obj, part, item_data);
+ break;
+ case _GTYPE_NOTE:
+ return __cal_detail_get_note_text(obj, part, item_data);
+ break;
+ case _GTYPE_LINKED_CAL:
+ return __cal_detail_get_save_to_text(obj, part, item_data);
+ break;
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static void __cal_detail_genlist_item_delete_callback(void *data, Evas_Object *obj)
+{
+ c_retm_if(!data, "data is null");
+
+ cal_detail_genlist_item_data *item_data = (cal_detail_genlist_item_data*)data;
+
+ free(item_data);
+
+ return;
+}
+
+static Eina_Bool __cal_detail_get_genlist_item_state(void *data, Evas_Object *obj, const char *part)
+{
+ return EINA_FALSE;
+}
+
+static void __cal_detail_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ return;
+}
+
+static Elm_Object_Item* __cal_detail_add_genlist_item(Evas_Object *parent, Elm_Genlist_Item_Class *itc, int type, cal_detail_data *p)
+{
+ c_retvm_if(!parent, NULL, "parent is null");
+ c_retvm_if(!itc, NULL, "itc is null");
+ c_retvm_if(!p, NULL, "p is null");
+
+ cal_detail_genlist_item_data *item_data = calloc(1, sizeof(cal_detail_genlist_item_data));
+ c_retvm_if(!item_data, NULL, "calloc(1, sizeof(cal_detail_genlist_item_data)) is failed");
+
+ item_data->p = p;
+
+ item_data->type = type;
+
+ item_data->it = elm_genlist_item_append(parent, itc, (void*)(item_data), NULL, ELM_GENLIST_ITEM_NONE, __cal_detail_genlist_item_select_callback, NULL);
+ c_retvm_if(!item_data->it, NULL, "elm_genlist_item_append() is failed");
+
+ return item_data->it;
+}
+
+static Elm_Object_Item* __cal_detail_add_separator(Evas_Object *genlist, cal_detail_data *p)
+{
+ c_retvm_if(!p, NULL, "p is null");
+ c_retvm_if(!genlist, NULL, "genlist is null");
+
+ Elm_Object_Item *git = __cal_detail_add_genlist_item(genlist, &itc_seperator, 0, p);
+ c_retvm_if(!git, NULL, "__cal_detail_add_genlist_item returned null");
+
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_NONE);
+
+ return git;
+}
+
+
+static Elm_Object_Item* __cal_detail_add_title_location(Evas_Object *genlist, cal_detail_data *p)
+{
+ __cal_detail_add_separator(genlist, p);
+ return __cal_detail_add_genlist_item(genlist, &itc_title_loc, _GTYPE_TITLE_LOC, p);
+}
+
+static Elm_Object_Item* __cal_detail_add_start_time(Evas_Object *genlist, cal_detail_data *p)
+{
+ __cal_detail_add_separator(genlist, p);
+ return __cal_detail_add_genlist_item(genlist, &itc_4_text, _GTYPE_START, p);
+}
+
+static void __cal_detail_add_alarm_item(Evas_Object *genlist, Elm_Genlist_Item_Class *itc, int type, cal_detail_data *p, int alarm)
+{
+ c_retm_if(!genlist, "genlist is null");
+ c_retm_if(!itc, "itc is null");
+ c_retm_if(!p, "p is null");
+
+ cal_detail_genlist_item_data *item_data = calloc(1, sizeof(cal_detail_genlist_item_data));
+ c_retm_if(!item_data, "calloc is failed");
+
+ item_data->p = p;
+ item_data->type = type;
+ item_data->alarm_value = alarm;
+
+ item_data->it = elm_genlist_item_append(genlist, itc, item_data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ if (!item_data->it)
+ {
+ ERR("elm_genlist_item_append returned null");
+ free(item_data);
+ return ;
+ }
+}
+
+static void __cal_detail_add_alarm(Evas_Object *genlist, cal_detail_data *p)
+{
+ c_retm_if(!genlist, "genlist is null");
+ c_retm_if(!p, "p is null");
+ c_retm_if(!p->cs, "p->cs is null");
+
+ __cal_detail_add_separator(genlist, p);
+ __cal_detail_get_alarm(p, p->cs);
+
+ if (!p->alarm_list) {
+ __cal_detail_add_alarm_item(genlist, &itc_4_text, _GTYPE_ALARM, p, -1);
+ } else {
+ GList *alarm = p->alarm_list;
+ int alarm_min;
+
+ while (alarm) {
+ alarm_min = (int)alarm->data;
+ __cal_detail_add_alarm_item(genlist, &itc_4_text, _GTYPE_ALARM, p, alarm_min);
+ alarm = g_list_next(alarm);
+ }
+ }
+ return;
+}
+
+static Elm_Object_Item* __cal_detail_add_end_time(Evas_Object *genlist, cal_detail_data *p)
+{
+ __cal_detail_add_separator(genlist, p);
+ return __cal_detail_add_genlist_item(genlist, &itc_4_text, _GTYPE_END, p);
+}
+
+
+static Elm_Object_Item* __cal_detail_add_repeat(Evas_Object *genlist, cal_detail_data *p)
+{
+ __cal_detail_add_separator(genlist, p);
+ return __cal_detail_add_genlist_item(genlist, &itc_4_text, _GTYPE_REPEAT, p);
+}
+
+
+static Elm_Object_Item* __cal_detail_add_note(Evas_Object *genlist, cal_detail_data *p)
+{
+ c_retvm_if(!p, NULL, "p is null");
+ c_retvm_if(!genlist, NULL, "genlist is null");
+
+ cal_struct *cs = p->cs;
+ c_retvm_if(!cs, NULL, "cs is null");
+
+ const char *note = __cal_detail_get_note(cs);
+ if (!CAL_STRLEN(note))
+ return NULL;
+
+ __cal_detail_add_separator(genlist, p);
+
+ return __cal_detail_add_genlist_item(genlist, &itc_mutilline, _GTYPE_NOTE, p);
+}
+
+static Elm_Object_Item* __cal_detail_add_save_to(Evas_Object *genlist, cal_detail_data *p)
+{
+ __cal_detail_add_separator(genlist, p);
+
+ return __cal_detail_add_genlist_item(genlist, &itc_linked_cal, _GTYPE_LINKED_CAL, p);
+}
+
+static void __cal_detail_show_error_popup(cal_detail_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "p is null");
+ c_retm_if(!p->ad, "p->ad is null");
+ c_retm_if(!p->ad->win, "p->ad->win is null");
+
+ if (p->popup)
+ evas_object_del(p->popup);
+
+ p->popup = cal_util_add_popup(p->ad->win, S_("IDS_COM_POP_WARNING"), C_("IDS_CLD_BODY_NO_EVENTS"),
+ __cal_detail_error_popup_response_event_callback, p->ad, S_("IDS_COM_SK_OK"), NULL);
+ c_retm_if(!p->popup, "cal_util_add_popup(p->ad->win) returned null");
+}
+
+static Evas_Object *__cal_detail_create_genlist(cal_detail_data *p)
+{
+ c_retvm_if(!p, NULL, "p is null");
+ c_retvm_if(!p->ad, NULL, "p->ad is null");
+
+ Evas_Object *genlist;
+
+ if(p->ad->is_aul && p->ad->ical)
+ p->cs = p->ad->ical;
+ else
+ p->cs = __cal_detail_get_event(p->ad->cid);
+
+ if (!p->cs) {
+ __cal_detail_show_error_popup(p);
+ return NULL;
+ }
+
+ genlist = elm_genlist_add(p->ly);
+ c_retvm_if(!genlist, NULL, "elm_genlist_add(p->ly) returned null");
+
+ elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_NONE);
+
+ itc_seperator.item_style = "dialogue/seperator";
+ itc_seperator.func.text_get = NULL;
+ itc_seperator.func.state_get = __cal_detail_get_genlist_item_state;
+ itc_seperator.func.del = __cal_detail_genlist_item_delete_callback;
+
+
+ itc_title_loc.item_style = "dialogue/2text";
+ itc_title_loc.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_title_loc.func.del = __cal_detail_genlist_item_delete_callback;
+
+ itc_4_text.item_style = "dialogue/2text";
+ itc_4_text.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_4_text.func.del = __cal_detail_genlist_item_delete_callback;
+
+ itc_mutilline.item_style = "dialogue/1icon";
+ itc_mutilline.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_mutilline.func.del = __cal_detail_genlist_item_delete_callback;
+ itc_mutilline.func.content_get = __cal_detail_get_genlist_item_icon;
+
+ itc_parts.item_style = "dialogue/1icon";
+ itc_parts.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_parts.func.del = __cal_detail_genlist_item_delete_callback;
+ itc_parts.func.content_get = __cal_detail_get_genlist_item_icon;
+
+ itc_linked_cal.item_style = "dialogue/2text";
+ itc_linked_cal.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_linked_cal.func.del = __cal_detail_genlist_item_delete_callback;
+
+ __cal_detail_add_title_location(genlist, p);
+ __cal_detail_add_start_time(genlist, p);
+ __cal_detail_add_end_time(genlist, p);
+ __cal_detail_add_alarm(genlist, p);
+ __cal_detail_add_repeat(genlist, p);
+ __cal_detail_add_note(genlist, p);
+ __cal_detail_add_save_to(genlist, p);
+
+ return genlist;
+}
+
+static void __cal_detail_update_view(void *data)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ cal_detail_data *p = data;
+
+ if (p->is_deleted)
+ return;
+
+ Evas_Object *genlist;
+ struct appdata* ad = p->ad;
+ c_retm_if(!ad, "ad is null");
+
+ is_hour24 = ad->is_hour24;
+
+ cal_util_delete_evas_object(&p->genlist);
+ genlist = __cal_detail_create_genlist(p);
+ if (genlist)
+ {
+ elm_object_part_content_set(p->ly, "sw", genlist);
+ p->genlist = genlist;
+ }
+}
+
+
+static Evas_Object *__cal_detail_create_layout(struct appdata *ad, Evas_Object *parent)
+{
+ Evas_Object *ly;
+ cal_detail_data *p;
+ Evas_Object *genlist;
+ p = calloc(1, sizeof(cal_detail_data));
+
+ p->name = _name;
+ p->parent = parent;
+
+ ly = cal_util_add_layout(parent, "edit");
+ if (!ly)
+ {
+ free(p);
+ return NULL;
+ }
+ evas_object_data_set(ly, "priv", p);
+ p->ad = ad;
+ p->ly = ly;
+ p->cid = ad->cid;
+ p->alarm_list = NULL;
+
+ is_hour24 = ad->is_hour24;
+
+ elm_layout_theme_set(CAL_UTIL_GET_EDJ_DATA(ly),"layout", "application", "controlbar");
+
+ genlist = __cal_detail_create_genlist(p);
+ if (!genlist)
+ {
+ evas_object_del(ly);
+ free(p);
+ return NULL;
+ }
+
+ elm_object_part_content_set(p->ly, "sw", genlist);
+ p->genlist = genlist;
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_detail_delete_layout, p);
+
+ CALENDAR_SVC_ADD_EVENT_CHANGED_CALLBACK(__cal_detail_update_view, p);
+
+ return ly;
+}
+
+static void __cal_detail_save_to_calendar_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ Evas_Object *ly = data;
+ cal_detail_data *p;
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!p, "CAL_UTIL_GET_PRIV_DATA(ly) returned null");
+
+ cal_edit_create_view(p->ad, p->parent);
+}
+
+void cal_detail_create_view(struct appdata *ad, Evas_Object *parent)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ad || !parent, "Input parameter is null");
+
+ Evas_Object *ly;
+ Evas_Object *back_button;
+ Evas_Object *controlbar;
+ Elm_Object_Item* navi_item;
+
+ ly = __cal_detail_create_layout(ad, parent);
+ c_retm_if(!ly, "__cal_detail_create_layout(ad, parent) is failed");
+
+ navi_item = elm_naviframe_item_push(ad->nv, C_("IDS_COM_BODY_DETAILS"), NULL, NULL, ly, NULL);
+ if (!navi_item)
+ {
+ ERR("elm_naviframe_item_push is failed");
+ evas_object_del(ly);
+ return;
+ }
+
+ controlbar = cal_util_add_controlbar(ad->nv);
+ if (!controlbar)
+ {
+ ERR("cal_util_add_controlbar(ad->nv) is failed");
+ elm_naviframe_item_pop(ad->nv);
+ return;
+ }
+
+ elm_toolbar_item_append(controlbar, NULL, S_("IDS_COM_SK_EDIT"), __cal_detail_edit_button_callback, ly);
+ elm_toolbar_item_append(controlbar, NULL, S_("IDS_COM_BODY_DELETE"), __cal_detail_delete_button_callback, ly);
+
+ elm_object_item_part_content_set( navi_item, "controlbar", controlbar);
+
+ back_button = elm_object_item_part_content_get(navi_item, "prev_btn");
+ if (!back_button)
+ {
+ back_button = elm_button_add(ad->nv);
+ if (!back_button)
+ {
+ ERR("elm_button_add is failed.");
+ return;
+ }
+ elm_object_style_set(back_button, "naviframe/back_btn/default");
+ elm_object_item_part_content_set(navi_item, "prev_btn", back_button);
+ }
+ elm_object_style_set(back_button, "naviframe/back_btn/default");
+ evas_object_smart_callback_add(back_button, "clicked", __cal_detail_back_button_callback, CAL_UTIL_GET_PRIV_DATA(ly));
+}
+
+void cal_viewer_create_view(struct appdata *ad, Evas_Object *parent, char* raw_data)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ad || !parent || !raw_data, "Input parameter is null");
+
+ Evas_Object *ly;
+ Evas_Object *back_button;
+ Evas_Object *controlbar;
+ Elm_Object_Item* navi_item;
+
+ int r = CALENDAR_SVC_UTIL_CONVERT_VCS_TO_EVENT(raw_data, VCALENDAR_DATA_LEN, &ad->ical);
+ if (r != CAL_SUCCESS)
+ ERR("CALENDAR_SVC_UTIL_CONVERT_VCS_TO_EVENT fail. : %d", r);
+
+ ly = __cal_detail_create_layout(ad, parent);
+ c_retm_if(!ly, "__cal_detail_create_layout(ad, parent) is failed");
+
+ navi_item = elm_naviframe_item_push(ad->nv, _("VCS Viewer"), NULL, NULL, ly, NULL);
+ if (!navi_item)
+ {
+ ERR("elm_naviframe_item_push is failed");
+ evas_object_del(ly);
+ return;
+ }
+
+ controlbar = cal_util_add_controlbar(ad->nv);
+ if (!controlbar)
+ {
+ ERR("cal_util_add_controlbar(ad->nv) is failed");
+ elm_naviframe_item_pop(ad->nv);
+ return;
+ }
+
+ elm_toolbar_item_append(controlbar, NULL, _("Save to Calendar"), __cal_detail_save_to_calendar_button_callback, ly);
+
+ elm_object_item_part_content_set(navi_item, "controlbar", controlbar);
+
+ back_button = elm_object_item_part_content_get(navi_item, "prev_btn");
+ if (!back_button)
+ {
+ back_button = elm_button_add(ad->nv);
+ if (!back_button)
+ {
+ ERR("elm_button_add is failed.");
+ return;
+ }
+ elm_object_style_set(back_button, "naviframe/back_btn/default");
+ elm_object_item_part_content_set(navi_item, "prev_btn", back_button);
+ }
+ elm_object_style_set(back_button, "naviframe/back_btn/default");
+ evas_object_smart_callback_add(back_button, "clicked", __cal_viewer_back_button_callback, CAL_UTIL_GET_PRIV_DATA(ly));
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <ui-gadget-module.h>
+#include <appcore-efl.h>
+#include <vconf.h>
+
+#include "view.h"
+#include "edit-alarm.h"
+#include "edit-repeat.h"
+#include "alm-mgr.h"
+#include "acct-svc.h"
+
+#define INVALID_TIMEZONE_VALUE (100)
+
+typedef struct {
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+ Evas_Object *genlist;
+ Evas_Object *nv; // navigatino bar
+ Evas_Object *win;
+ Evas_Object *popup;
+
+ Evas_Object *e_title; // entry title
+ Evas_Object *entry_loc; // entry location
+ Evas_Object *l_start; // layout start
+ Evas_Object *l_end; // layout end
+ Evas_Object *l_alarm; // layout alarm
+ Evas_Object *l_repeat; // layout repeat
+ Evas_Object *l_saveto; // layout save event to
+ Evas_Object *e_note; // entry note
+ Elm_Object_Item *timezone_item; // timezone item
+
+ struct tm stm; // start
+ struct tm etm; // end
+ Eina_Bool allday;
+ Evas_Object *ly_date;
+
+ int timezone;
+ Eina_Bool is_selected_timezone;
+ char * timezone_path;
+ char * timezone_city;
+ char * timezone_offset;
+
+ int repeat_occurrences;
+ struct tm repeat_end_date_time;
+
+ GList *list_alm_min;
+ Evas_Object *ly_alarm;
+
+ cal_repeat_term_t repeat; // repeat off, daily, ...
+ int repeat_end_date_num;
+ int repeat_week; // for weekly
+ Evas_Object *ly_repeat;
+
+ int event_id;
+ int calid;
+ int accid;
+ Evas_Object *ly_saveto;
+
+ Evas_Object *sdt;
+ Evas_Object *edt;
+ int cid;
+
+ Evas_Object *c_allday;
+ char *stitle;
+ char *slocation;
+ const char *snote;
+ int n_attenders;
+
+ struct ui_gadget *ug_worldclock;
+
+ Ecore_Idler* idler;
+
+ Eina_List *calendar_list; //For save to
+ int alarm_count;
+ Elm_Object_Item *alarm_first_it;
+ Elm_Object_Item *alarm_last_it;
+ Evas_Object *add_button;
+
+}cal_edit_data;
+
+enum cal_edit_alarm_value {
+ CAL_EDIT_ALARM_OFF = -1,
+ CAL_EDIT_ALARM_ON_TIME,
+};
+
+enum genlist_item_type{
+ _GTYPE_TITLE = 1,
+ _GTYPE_LOC,
+ _GTYPE_START,
+ _GTYPE_END,
+ _GTYPE_ALLDAY,
+ _GTYPE_TIME_ZONE,
+ _GTYPE_ALARM,
+ _GTYPE_REPEAT,
+ _GTYPE_NOTE,
+ _GTYPE_LINKED_CAL,
+ _GTYPE_MAX
+};
+
+typedef struct
+{
+ cal_edit_data *p;
+ int type;
+ Elm_Object_Item *it;
+ struct _acct *at;
+ cal_struct* cs;
+ int alarm_value;
+ Evas_Object *obj;
+}Item_Data;
+
+static Elm_Object_Item* it; // To update
+static Elm_Genlist_Item_Class itc_seperator, itc_1icon, itc_1text_1icon, itc_2text_1btn, itc_2text, itc_2text_1icon_2, itc_2text_1icon_4, itc_2text_2icon_4;
+static Elm_Object_Item* __cal_edit_add_genlist_item(Evas_Object *genlist, Elm_Genlist_Item_Class *itc, int type, cal_edit_data *p);
+static Elm_Object_Item* __cal_edit_add_genlist_alarm_item(Evas_Object *genlist, Elm_Genlist_Item_Class *itc, int type, cal_edit_data *p, int alarm);
+static void __cal_edit_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info);
+
+
+static void __cal_edit_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ cal_edit_data *p = data;
+
+ struct appdata* ad = p->ad;
+ c_retm_if(!ad, "ad is null");
+
+ Eina_List* list;
+ cal_struct* cs;
+
+ if (p->idler) {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
+ if (p->timezone_city)
+ free(p->timezone_city);
+ if (p->timezone_path)
+ free(p->timezone_path);
+ if (p->timezone_offset)
+ free(p->timezone_offset);
+
+ if (p->calendar_list) {
+ EINA_LIST_FOREACH(p->calendar_list, list, cs) {
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ }
+ eina_list_free(p->calendar_list);
+ }
+
+ if (ad->edit_special_one)
+ ad->edit_special_one = EINA_FALSE;
+
+ free(p);
+}
+
+static void __cal_edit_cancel_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ elm_naviframe_item_pop(data);
+}
+
+static inline void __cal_edit_set_time_text(cal_edit_data *p)
+{
+ const char* date = NULL;
+ const char* time = NULL;
+
+ date = CAL_UTIL_DATE_FORMAT_1;
+
+ if (!p->allday)
+ {
+ if (p->ad->is_hour24)
+ time = CAL_UTIL_TIME_FORMAT_6;
+ else
+ time = CAL_UTIL_TIME_FORMAT_1;
+ }
+
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(p->l_start), "text", date, time, &p->stm);
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(p->l_end), "text", date, time, &p->etm);
+}
+
+static inline void __cal_edit_set_repeat_text(cal_edit_data *p)
+{
+ char buf[1024] = {0};
+
+ cal_edit_repeat_get_repeat_str(p->repeat, p->repeat_week, buf, sizeof(buf));
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(p->l_repeat), "text", buf);
+}
+
+static void __cal_edit_change_wday(cal_edit_data *p)
+{
+ int i;
+ int wday;
+
+ wday = 7;
+ for (i = 0; i < 7; i++) {
+ if ( ((p->repeat_week >> i) & 1) &&
+ (wday > CAL_UTIL_GET_WDAY(i - p->stm.tm_wday))) {
+ wday = CAL_UTIL_GET_WDAY(i - p->stm.tm_wday);
+ }
+ }
+
+ wday = CAL_UTIL_GET_WDAY(wday);
+
+ cal_util_update_tm_day(&p->stm, wday);
+ cal_util_update_tm_day(&p->etm, wday);
+ __cal_edit_set_time_text(p);
+}
+
+static inline cal_edit_data* __cal_edit_check_layout(Evas_Object *sc)
+{
+ cal_edit_data *p;
+
+ p = CAL_UTIL_GET_PRIV_DATA(sc);
+ if (!p)
+ return NULL;
+
+ return p;
+}
+
+static inline void __cal_edit_fill_entry(char **str, cal_struct *cs, const char *field)
+{
+ c_retm_if(!str, "str is null");
+ c_retm_if(!cs, "cs is null");
+
+ free(*str);
+
+ *str = CALENDAR_SVC_STRUCT_GET_STR(cs, field);
+
+ if (*str)
+ *str = elm_entry_utf8_to_markup((*str));
+}
+
+static inline void __cal_edit_fill_title(cal_edit_data *p, cal_struct *cs)
+{
+ __cal_edit_fill_entry(&(p->stitle), cs, CAL_VALUE_TXT_SUMMARY);
+
+}
+
+static inline void __cal_edit_fill_location(cal_edit_data *p, cal_struct *cs)
+{
+ __cal_edit_fill_entry(&(p->slocation), cs, CAL_VALUE_TXT_LOCATION);
+}
+
+static void __cal_edit_fill_note(cal_edit_data *p, cal_struct *cs)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!cs, "cs is null");
+
+ char *str = CALENDAR_SVC_STRUCT_GET_STR(cs,CAL_VALUE_TXT_DESCRIPTION);
+ if (str)
+ p->snote = strdup(str);
+}
+
+static void __cal_edit_fill_time(cal_edit_data *p, cal_struct *cs)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!cs, "cs is null");
+
+ time_t st = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ time_t et = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_END_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+
+ p->allday = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+
+ localtime_r(&st, &p->stm);
+ localtime_r(&et, &p->etm);
+
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_VALUE_INT_REPEAT_TERM)) {
+ st = p->ad->tm->st;
+ et = p->ad->tm->et;
+ localtime_r(&st, &p->stm);
+ localtime_r(&et, &p->etm);
+ }
+
+ p->timezone_city = CAL_STRDUP(CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_TZ_CITY_NAME));
+ c_warn_if(!p->timezone_city, "p->timezone_city is null");
+
+ p->timezone_path = CAL_STRDUP(CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_TZ_NAME));
+ c_warn_if(!p->timezone_path, "p->timezone_path is null");
+
+ p->timezone = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_TIMEZONE);
+
+ if (!p->timezone_city || !p->timezone_path) {
+ cal_util_get_timezone_info(&p->timezone_path, &p->timezone_city, &p->timezone_offset);
+ if (p->timezone_offset) {
+ char *text = strstr(p->timezone_offset, "T");
+ p->timezone = atoi(text+2);
+ }
+ }
+}
+
+static void __cal_edit_fill_alarm(cal_edit_data *p, cal_struct *cs)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!cs, "cs is null");
+
+ if (p->list_alm_min) {
+ g_list_free(p->list_alm_min);
+ p->list_alm_min = NULL;
+ }
+
+ GList *al = NULL;
+
+ int r = CALENDAR_SVC_STRUCT_GET_LIST(cs, CAL_VALUE_LST_ALARM, &al);
+ c_retm_if(r!=CAL_SUCCESS, "CALENDAR_SVC_STRUCT_GET_LIST(CAL_VALUE_LST_ALARM) is failed(%d)", r);
+ if (!al) {
+ p->alarm_count = 1;
+ return;
+ }
+
+ p->alarm_count = 0;
+
+ while (al) {
+
+ cal_value *val = al->data;
+ c_retm_if(!val, "val is null");
+
+ p->alarm_count++;
+
+ int tick = CALENDAR_SVC_VALUE_GET_INT(val, CAL_VALUE_INT_ALARMS_TICK);
+ cal_sch_remind_tick_unit_t unit = CALENDAR_SVC_VALUE_GET_INT(val, CAL_VALUE_INT_ALARMS_TICK_UNIT);
+
+ int min = cal_edit_alarm_get_min(tick, unit);
+ p->list_alm_min = g_list_append(p->list_alm_min,(void *)min);
+
+ al = g_list_next(al);
+ }
+
+ p->list_alm_min = g_list_first(p->list_alm_min);
+}
+
+static void __cal_edit_fill_repeat(cal_edit_data *p, cal_struct *cs)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!cs, "cs is null");
+
+ int flag = 0;
+ cal_repeat_term_t term = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+ if (term == CAL_REPEAT_EVERY_WEEK) {
+ char *sflag = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_WEEK_FLAG);
+ flag = cal_util_get_week_flag(sflag);
+ }
+
+ p->repeat = term;
+ p->repeat_week = flag;
+
+ struct tm *tm_tm = CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_REPEAT_END_DATE, CAL_TZ_FLAG_LOCAL);
+ CAL_MEMCPY(&(p->repeat_end_date_time),tm_tm, struct tm);
+
+
+ p->repeat_occurrences = CALENDAR_SVC_STRUCT_GET_INT(cs,"repeat_occurrences");
+
+ if (CAL_REPEAT_NONE != p->repeat) {
+ if (0 == p->repeat_occurrences)
+ p->repeat_end_date_num = 2;
+ else
+ p->repeat_end_date_num = 1;
+ }
+
+}
+
+static void __cal_edit_fill_save_to(cal_edit_data *p, cal_struct *cs)
+{
+ int calid;
+ int acct_id;
+
+ calid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_CALENDAR_ID);
+ if (calid < 1)
+ calid = DEFAULT_CALENDAR_ID;
+
+ acct_id = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ACCOUNT_ID);
+ if(acct_id < ALL_VISIBILITY_ACCOUNT)
+ acct_id = LOCAL_ACCOUNT_ID;
+
+ p->calid = calid;
+ p->accid = acct_id;
+}
+
+static void __cal_edit_fill_vcs_information(cal_edit_data *p)
+{
+ CAL_ASSERT(p);
+ struct appdata* ad = p->ad;
+ CAL_ASSERT(ad);
+
+ cal_struct* cs = p->ad->ical;
+
+ __cal_edit_fill_title(p, cs);
+ __cal_edit_fill_location(p, cs);
+ __cal_edit_fill_time(p, cs);
+ __cal_edit_fill_alarm(p, cs);
+ __cal_edit_fill_repeat(p, cs);
+ __cal_edit_fill_save_to(p, cs);
+ __cal_edit_fill_note(p, cs);
+
+ return;
+}
+
+
+static void __cal_edit_fill_detail_information(cal_edit_data *p, int cid)
+{
+ int r;
+ cal_struct *cs;
+
+ p->event_id = cid;
+
+ cs = NULL;
+ r = CALENDAR_SVC_GET(CAL_STRUCT_SCHEDULE, p->event_id, NULL, &cs);
+ if (r != CAL_SUCCESS)
+ {
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ return;
+ }
+
+ __cal_edit_fill_title(p, cs);
+ __cal_edit_fill_location(p, cs);
+ __cal_edit_fill_time(p, cs);
+ __cal_edit_fill_alarm(p, cs);
+ __cal_edit_fill_repeat(p, cs);
+ __cal_edit_fill_save_to(p, cs);
+ __cal_edit_fill_note(p, cs);
+
+ p->accid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ACCOUNT_ID);
+
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ return;
+}
+
+static inline cal_struct* __cal_edit_get_cs(int cid)
+{
+ cal_struct *cs;
+
+ if (cid == 0)
+ cs = CALENDAR_SVC_STRUCT_NEW(CAL_STRUCT_SCHEDULE);
+ else
+ {
+ int r;
+ cs = NULL;
+ r = CALENDAR_SVC_GET(CAL_STRUCT_SCHEDULE, cid, NULL, &cs);
+ if (r != CAL_SUCCESS)
+ {
+ if(cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ cs = NULL;
+ }
+ }
+
+ return cs;
+}
+
+static inline void __cal_edit_fill_cs_title(cal_edit_data *p, cal_struct *cs)
+{
+ if(p->stitle)
+ CALENDAR_SVC_STRUCT_SET_STR(cs, CAL_VALUE_TXT_SUMMARY, p->stitle);
+ else
+ CALENDAR_SVC_STRUCT_SET_STR(cs, CAL_VALUE_TXT_SUMMARY, C_("IDS_CLD_BODY_NO_TITLE"));
+}
+
+static inline void __cal_edit_fill_cs_location(cal_edit_data *p, cal_struct *cs)
+{
+ if (p->slocation)
+ CALENDAR_SVC_STRUCT_SET_STR(cs, CAL_VALUE_TXT_LOCATION, p->slocation);
+ else
+ CALENDAR_SVC_STRUCT_SET_STR(cs, CAL_VALUE_TXT_LOCATION, "");
+}
+
+static inline void __cal_edit_fill_cs_note(cal_edit_data *p, cal_struct *cs)
+{
+ if (p->snote)
+ CALENDAR_SVC_STRUCT_SET_STR(cs, CAL_VALUE_TXT_DESCRIPTION, p->snote);
+ else
+ CALENDAR_SVC_STRUCT_SET_STR(cs, CAL_VALUE_TXT_DESCRIPTION, "");
+}
+
+static void __cal_edit_fill_cs_time(cal_edit_data *p, cal_struct *cs)
+{
+ CAL_ASSERT(p);
+ CAL_ASSERT(cs);
+
+ struct tm stm,etm;
+
+ if (p->allday) {
+ p->stm.tm_hour = 0;
+ p->stm.tm_min = 0;
+ p->stm.tm_sec = 0;
+
+ p->etm.tm_hour = 23;
+ p->etm.tm_min = 59;
+ p->etm.tm_sec = 59;
+ memcpy(&stm,&p->stm,sizeof(struct tm));
+ memcpy(&etm,&p->etm,sizeof(struct tm));
+ }
+ else if (p->is_selected_timezone) {
+ char *local_tz_path = NULL;
+
+ local_tz_path = vconf_get_str(CAL_VCONFKEY_LOCK_TIMEZONE_PATH);
+ if (!local_tz_path) {
+ local_tz_path = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+ if (!local_tz_path) {
+ ERR("vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID) is failed");
+ local_tz_path = "Asia/Seoul";
+ }
+ }
+
+ CALENDAR_SVC_UTIL_CONVERT_DB_TIME(&p->stm,local_tz_path, &stm,p->timezone_path);
+ CALENDAR_SVC_UTIL_CONVERT_DB_TIME(&p->etm,local_tz_path, &etm,p->timezone_path);
+ }
+ else {
+ memcpy(&stm,&p->stm,sizeof(struct tm));
+ memcpy(&etm,&p->etm,sizeof(struct tm));
+ }
+
+ if (p->timezone_path)
+ CALENDAR_SVC_STRUCT_SET_STR(cs,CAL_VALUE_TXT_TZ_NAME,p->timezone_path);
+ if (p->timezone_city)
+ CALENDAR_SVC_STRUCT_SET_STR(cs,CAL_VALUE_TXT_TZ_CITY_NAME,p->timezone_city);
+
+ CALENDAR_SVC_STRUCT_SET_INT(cs,CAL_VALUE_INT_TIMEZONE,p->timezone);
+
+ CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_VALUE_INT_ALL_DAY_EVENT, p->allday);
+
+ CALENDAR_SVC_STRUCT_SET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL, &stm);
+ CALENDAR_SVC_STRUCT_SET_TM(cs, CAL_VALUE_GMT_END_DATE_TIME, CAL_TZ_FLAG_LOCAL, &etm);
+
+}
+
+static int __cal_edit_g_list_compare(const void* data1, const void* data2)
+{
+ return (int)data1 - (int)data2;
+}
+
+static int __cal_edit_g_list_compare_with_data(const void* data1, const void* data2, void* user_data)
+{
+ return (int)data1 - (int)data2;
+}
+
+static void __cal_edit_fill_cs_alarm(cal_edit_data *p, cal_struct *cs)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!cs, "cs is null");
+
+ int tick;
+ cal_sch_remind_tick_unit_t unit;
+ GList *al = NULL, *temp = NULL;
+
+ int count = 1;
+
+ Elm_Object_Item *it = p->alarm_first_it;
+ while (it && (count++ <= p->alarm_count)) {
+
+ Item_Data *item_data = elm_object_item_data_get(it);
+ c_retm_if(!item_data, "item_data is null");
+
+ if (g_list_find_custom(temp, (const void*)item_data->alarm_value, __cal_edit_g_list_compare))
+ continue;
+
+ temp = g_list_insert_sorted_with_data(temp, (void*)item_data->alarm_value, __cal_edit_g_list_compare_with_data, NULL);
+
+ cal_edit_alarm_get_tick(item_data->alarm_value, &tick, &unit);
+
+ if (tick != -1) {
+ cal_value *val = CALENDAR_SVC_VALUE_NEW(CAL_VALUE_LST_ALARM);
+ c_retm_if(!val, "calendar_svc_value_new is failed");
+
+ CALENDAR_SVC_VALUE_SET_INT(val, CAL_VALUE_INT_ALARMS_TICK, tick);
+ CALENDAR_SVC_VALUE_SET_INT(val, CAL_VALUE_INT_ALARMS_TICK_UNIT, unit);
+ al = g_list_append(al, val);
+ }
+
+ if (count-1 == p->alarm_count)
+ p->alarm_last_it = it;
+
+ it = elm_genlist_item_next_get(it);
+ }
+
+ CALENDAR_SVC_STRUCT_SET_LIST(cs, CAL_VALUE_LST_ALARM, al);
+}
+
+static inline void __cal_edit_get_week_string(int week, char *week_s)
+{
+ c_retm_if(!week_s,"week_s is null");
+
+ int i;
+
+ memset(week_s, 0, 7);
+ week_s[7] = '\0';
+
+ for (i = 0; i < 7; i++) {
+ if ((week >> i) & 1)
+ week_s[i] = '1';
+ else
+ week_s[i] = '0';
+ }
+}
+
+static void __cal_edit_fill_cs_repeat(cal_edit_data *p, cal_struct *cs)
+{
+ char sflag[8];
+
+ switch (p->repeat) {
+ case CAL_REPEAT_EVERY_WEEK:
+ __cal_edit_get_week_string(p->repeat_week, sflag);
+ CALENDAR_SVC_STRUCT_SET_STR(cs, CAL_VALUE_TXT_WEEK_FLAG, sflag);
+ case CAL_REPEAT_EVERY_DAY:
+ case CAL_REPEAT_EVERY_MONTH:
+ case CAL_REPEAT_EVERY_YEAR:
+ CALENDAR_SVC_STRUCT_SET_TIME(cs, CAL_VALUE_GMT_REPEAT_END_DATE, CAL_TZ_FLAG_LOCAL, cal_util_get_max_time());
+ CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_VALUE_INT_REPEAT_INTERVAL, 1);
+ break;
+ default:
+ break;
+ }
+
+ CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_VALUE_INT_REPEAT_TERM, p->repeat);
+
+ if (CAL_REPEAT_NONE != p->repeat)
+ {
+ p->repeat_end_date_time.tm_hour = p->stm.tm_hour;
+ p->repeat_end_date_time.tm_min = p->stm.tm_min;
+ p->repeat_end_date_time.tm_sec = p->stm.tm_sec;
+
+ if (1 == p->repeat_end_date_num)
+ CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_VALUE_INT_REPEAT_OCCURRENCES, p->repeat_occurrences);
+ else if (2 == p->repeat_end_date_num)
+ CALENDAR_SVC_STRUCT_SET_TM(cs,CAL_VALUE_GMT_REPEAT_END_DATE,CAL_TZ_FLAG_LOCAL,&p->repeat_end_date_time);
+ }
+}
+
+static void __cal_edit_fill_cs_save_to(cal_edit_data *p, cal_struct *cs)
+{
+ CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_VALUE_INT_CALENDAR_ID, p->calid);
+
+ if (p->accid == ALL_ACCOUNT_ID)
+ CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_VALUE_INT_ACCOUNT_ID, LOCAL_ACCOUNT_ID);
+ else
+ CALENDAR_SVC_STRUCT_SET_INT(cs, CAL_VALUE_INT_ACCOUNT_ID, p->accid);
+}
+
+static inline void __cal_edit_mark_deleted(GList *al)
+{
+ GList *p;
+ cal_value *val;
+
+ p = al;
+ while (p) {
+ val = p->data;
+ CALENDAR_SVC_VALUE_SET_INT(val, CAL_VALUE_INT_DETAIL_DELETE, 1);
+ p = g_list_next(p);
+ }
+}
+
+Eina_Bool cal_edit_check_email_vailidity(const char* email)
+{
+ c_retvm_if(!email, EINA_FALSE, "email is null");
+
+ const char* temp = strchr(email, '@');
+ c_retvm_if(!temp, EINA_FALSE, "%s is invalid address", email);
+ c_retvm_if(*(temp+1) == '.', EINA_FALSE, "%s is invalid address", email);
+
+ temp = strchr(temp, '.');
+ c_retvm_if(!temp, EINA_FALSE, "%s is invalid address", email);
+ c_retvm_if(strlen(temp) <= 1, EINA_FALSE, "%s is invalid address", email);
+
+ return EINA_TRUE;
+}
+
+static inline void __cal_edit_fill_cs(cal_edit_data *p, cal_struct *cs)
+{
+ __cal_edit_fill_cs_title(p, cs);
+ __cal_edit_fill_cs_location(p, cs);
+ __cal_edit_fill_cs_time(p, cs);
+ __cal_edit_fill_cs_alarm(p, cs);
+ __cal_edit_fill_cs_repeat(p, cs);
+ __cal_edit_fill_cs_note(p, cs);
+ __cal_edit_fill_cs_save_to(p, cs);
+}
+
+static void __cal_edit_reponse_event_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+
+ Evas_Object *popup = data;
+ evas_object_del(popup);
+}
+
+static int __cal_edit_get_date(Evas_Object *df, struct tm *res)
+{
+ int r;
+ struct tm tm;
+ time_t t;
+
+ t = time(NULL);
+ localtime_r(&t, &tm); // to fill hidden field
+
+ elm_datetime_value_get(df, &tm);
+
+ r = mktime(&tm);
+ if (r == (time_t)-1)
+ return -1;
+
+ *res = tm;
+
+ return 0;
+}
+
+static void __cal_edit_title_entry_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ const char *str;
+ Item_Data *item_data = (Item_Data *)data;
+ cal_edit_data *p = item_data->p;
+
+ free(p->stitle);
+
+
+ str = elm_entry_entry_get(p->e_title);
+ if (!str || str[0] == '\0')
+ p->stitle = NULL;
+ else
+ p->stitle = elm_entry_markup_to_utf8(str);
+}
+
+
+static Evas_Object * __cal_edit_add_title_icon(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ c_retvm_if(!obj, NULL, "obj is null");
+ c_retvm_if(!part, NULL, "part is null");
+ c_retvm_if(!item_data, NULL, "item_data is null");
+
+ cal_edit_data *p = item_data->p;
+ c_retvm_if(!p, NULL, "p is null");
+
+ if (!CAL_STRCMP(part, "elm.icon")) {
+ Evas_Object *ef = cal_util_add_edit_field(obj, C_("IDS_COM_BODY_DETAILS_TITLE"), C_("IDS_CLD_BODY_TAP_TO_ENTER_TITLE"), EINA_TRUE, EINA_TRUE);
+ c_retvm_if(!ef, NULL, "ef is null");
+
+ Evas_Object *entry = elm_object_part_content_get(ef, "elm.swallow.content");
+ c_retvm_if(!entry, ef, "entry is null");
+
+ p->e_title = entry;
+ if (p->stitle)
+ elm_entry_entry_set(p->e_title, p->stitle);
+
+ evas_object_smart_callback_add(p->e_title, "changed", __cal_edit_title_entry_changed_callback, item_data);
+
+ return ef;
+ }
+
+ return NULL;
+}
+
+static inline int _edit_safe_strcmp(char *s1, char *s2)
+{
+ if (NULL == s1 || NULL == s2)
+ return !(s1 == s2);
+ else
+ return strcmp(s1, s2);
+}
+
+static void _edit_location_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ char *str;
+ Item_Data *item_data = (Item_Data *)data;
+ cal_edit_data *p = item_data->p;
+
+ str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ if (str && *str) {
+ if (!_edit_safe_strcmp(str, p->slocation)) {
+ free(str);
+ return;
+ } else {
+ free(p->slocation);
+ p->slocation = str;
+ }
+ } else {
+ free(p->slocation);
+ p->slocation = NULL;
+ }
+}
+
+
+static Evas_Object * __cal_edit_add_location_icon(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ Evas_Object *ly = NULL;
+ Evas_Object *ef;
+ Evas_Object *en;
+
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ ly = cal_util_add_layout(obj, "dialoguegroup/location");
+ if (!ly)
+ return NULL;
+
+ ef = cal_util_add_edit_field(ly, C_("IDS_COM_BODY_DETAILS_LOCATION"), C_("IDS_CLD_BODY_TAP_TO_ENTER_LOCATION"), EINA_TRUE, EINA_TRUE);
+ if (!ef) {
+ ERR("ef is null");
+ evas_object_del(ly);
+ return NULL;
+ }
+
+ elm_object_part_content_set(ly, "editfield/sw", ef);
+
+ en = elm_object_part_content_get(ef, "elm.swallow.content");
+
+ if (item_data->p->slocation)
+ elm_entry_entry_set(en, item_data->p->slocation);
+
+ evas_object_smart_callback_add(en, "changed", _edit_location_entry_changed_cb, item_data);
+ elm_entry_cnp_mode_set(en, ELM_CNP_MODE_PLAINTEXT);
+ }
+
+ return ly;
+}
+
+static Evas_Object* __cal_edit_add_date_field(Evas_Object *dg, cal_edit_data *p, struct tm *tm)
+{
+ c_retvm_if(!dg, NULL, "dg is null");
+ c_retvm_if(!p, NULL, "p is null");
+ c_retvm_if(!tm, NULL, "tm is null");
+
+ struct appdata* ad = p->ad;
+ c_retvm_if(!ad, NULL, "ad is null");
+
+ Evas_Object *layout = cal_util_add_datetime(dg, NULL, tm);
+ c_retvm_if(!layout, NULL, "layout is null");
+
+ Evas_Object *dt = elm_object_part_content_get(layout, "elm.icon");
+ if (!dt) {
+ ERR("dt is null");
+ evas_object_del(layout);
+ return NULL;
+ }
+
+ if (!p->allday)
+ {
+ elm_datetime_field_visible_set(dt, ELM_DATETIME_HOUR, EINA_TRUE);
+ elm_datetime_field_visible_set(dt, ELM_DATETIME_MINUTE, EINA_TRUE);
+
+ if (ad->is_hour24)
+ {
+ elm_datetime_format_set(dt, "%b %d , %Y %H : %M");
+ elm_datetime_field_visible_set(dt, ELM_DATETIME_AMPM, EINA_FALSE);
+ }
+ else
+ {
+ elm_datetime_format_set(dt, "%b %d , %Y %I : %M %p");
+ elm_datetime_field_visible_set(dt, ELM_DATETIME_AMPM, EINA_TRUE);
+ }
+ }
+ else
+ {
+ elm_datetime_field_visible_set(dt, ELM_DATETIME_HOUR, EINA_FALSE);
+ elm_datetime_field_visible_set(dt, ELM_DATETIME_MINUTE, EINA_FALSE);
+ elm_datetime_field_visible_set(dt, ELM_DATETIME_AMPM, EINA_FALSE);
+ }
+
+ elm_datetime_field_limit_set(dt, ELM_DATETIME_YEAR, 70, 137);
+
+ return layout;
+}
+
+static void __cal_edit_start_date_changed_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+ cal_edit_data *p = data;
+
+ c_retm_if(!p->sdt, "p->sdt is null");
+ c_retm_if(!p->edt, "p->edt is null");
+
+ struct tm tm;
+
+ __cal_edit_get_date(p->sdt, &(p->stm));
+ __cal_edit_get_date(p->edt, &(p->etm));
+
+ elm_datetime_value_get(p->sdt, &tm);
+
+ cal_util_update_tm_hour(&tm, 1);
+
+ elm_datetime_value_set(p->edt, &tm);
+
+ __cal_edit_get_date(p->sdt, &(p->stm));
+ __cal_edit_get_date(p->edt, &(p->etm));
+}
+
+
+static Evas_Object * __cal_edit_add_start_date_icon(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ Evas_Object *icon_obj = NULL;
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ cal_edit_data *p = item_data->p;
+ icon_obj = __cal_edit_add_date_field(obj, p, &p->stm);
+ elm_object_part_text_set(icon_obj, "elm.text", S_("IDS_COM_BODY_START"));
+
+ p->sdt = elm_object_part_content_get(icon_obj, "elm.icon");
+ c_warn_if(!p->sdt, "p->sdt is null");
+
+ evas_object_smart_callback_add(p->sdt, "changed", __cal_edit_start_date_changed_callback, p);
+ }
+
+ return icon_obj;
+}
+
+static void __cal_edit_end_date_changed_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ cal_edit_data *p = data;
+
+ __cal_edit_get_date(p->edt, &(p->etm));
+}
+
+static Evas_Object * __cal_edit_add_end_date_icon(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ Evas_Object *icon_obj = NULL;
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ cal_edit_data *p = item_data->p;
+ icon_obj = __cal_edit_add_date_field(obj, p, &p->etm);
+ elm_object_part_text_set(icon_obj, "elm.text", S_("IDS_COM_BODY_END"));
+
+ p->edt = elm_object_part_content_get(icon_obj, "elm.icon");
+ c_warn_if(!p->edt, "p->edt is null");
+
+ evas_object_smart_callback_add(p->edt,"changed", __cal_edit_end_date_changed_callback, p);
+ }
+ return icon_obj;
+}
+
+static void __cal_edit_all_day_changed_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_ASSERT(data);
+ cal_edit_data *p = data;
+
+ CAL_ASSERT(p->ad);
+
+ p->allday = elm_check_state_get(obj);
+ if (!p->allday) {
+
+ elm_datetime_field_visible_set(p->sdt, ELM_DATETIME_HOUR, EINA_TRUE);
+ elm_datetime_field_visible_set(p->edt, ELM_DATETIME_HOUR, EINA_TRUE);
+ elm_datetime_field_visible_set(p->sdt, ELM_DATETIME_MINUTE, EINA_TRUE);
+ elm_datetime_field_visible_set(p->edt, ELM_DATETIME_MINUTE, EINA_TRUE);
+
+ if (!p->ad->is_hour24) {
+ elm_datetime_field_visible_set(p->sdt, ELM_DATETIME_AMPM, EINA_TRUE);
+ elm_datetime_field_visible_set(p->edt, ELM_DATETIME_AMPM, EINA_TRUE);
+ }
+ }
+ else {
+
+ elm_datetime_field_visible_set(p->sdt, ELM_DATETIME_HOUR, EINA_FALSE);
+ elm_datetime_field_visible_set(p->edt, ELM_DATETIME_HOUR, EINA_FALSE);
+ elm_datetime_field_visible_set(p->sdt, ELM_DATETIME_MINUTE, EINA_FALSE);
+ elm_datetime_field_visible_set(p->edt, ELM_DATETIME_MINUTE, EINA_FALSE);
+ elm_datetime_field_visible_set(p->sdt, ELM_DATETIME_AMPM, EINA_FALSE);
+ elm_datetime_field_visible_set(p->edt, ELM_DATETIME_AMPM, EINA_FALSE);
+ }
+}
+
+static Evas_Object * __cal_edit_add_all_day_icon(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ CAL_ASSERT(obj);
+ CAL_ASSERT(item_data);
+
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ cal_edit_data *p = item_data->p;
+ Evas_Object *rd;
+
+ rd = elm_check_add(obj);
+ elm_check_state_set(rd, p->allday);
+ elm_object_style_set(rd, "on&off");
+ p->c_allday = rd;
+ evas_object_smart_callback_add(rd, "changed", __cal_edit_all_day_changed_callback, p);
+ elm_check_state_set(p->c_allday, p->allday);
+ evas_object_propagate_events_set(rd, EINA_FALSE);
+
+ return rd;
+ }
+
+ return NULL;
+}
+
+static void __cal_edit_note_entry_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+
+ Item_Data *item_data = data;
+ cal_edit_data *p = item_data->p;
+ c_retm_if(!p, "p is null");
+
+ const char *str = elm_entry_markup_to_utf8(elm_entry_entry_get(p->e_note));
+
+ if (!CAL_STRLEN(str))
+ p->snote = NULL;
+ else
+ p->snote = str;
+}
+
+
+static Evas_Object * __cal_edit_add_note_icon(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ c_retvm_if(!obj , NULL, "obj is null");
+ c_retvm_if(!part , NULL, "part is null");
+ c_retvm_if(!item_data , NULL, "item_data is null");
+
+ cal_edit_data *p = item_data->p;
+ c_retvm_if(!p , NULL, "p is null");
+
+ if (!CAL_STRCMP(part, "elm.icon")) {
+ Evas_Object *ef = cal_util_add_edit_field(obj, C_("IDS_COM_BODY_NOTE"), C_("IDS_CLD_BODY_TAP_TO_ENTER_NOTE"), EINA_FALSE, EINA_TRUE );
+ if (ef) {
+ Evas_Object *entry = elm_object_part_content_get(ef, "elm.swallow.content");
+ c_retvm_if(!entry, ef, "entry is null");
+
+ evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_EXPAND);
+ elm_entry_autocapital_type_set(entry, EINA_TRUE);
+ elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+
+ p->e_note = entry;
+
+ if (p->snote)
+ elm_entry_entry_set(p->e_note, elm_entry_utf8_to_markup(p->snote));
+
+ evas_object_smart_callback_add(p->e_note, "changed", __cal_edit_note_entry_changed_callback, item_data);
+
+ return ef;
+ }
+ }
+ return NULL;
+}
+
+static void __cal_edit_set_default_information(cal_edit_data *p)
+{
+ time_t now;
+
+ now = time(NULL);
+ localtime_r(&now, &p->stm);
+ p->stm.tm_sec = 0;
+ localtime_r(&now, &p->etm);
+ p->etm.tm_sec = 0;
+ p->allday = 0;
+
+ p->repeat = CAL_REPEAT_NONE;
+ p->repeat_week = 0;
+
+ p->calid = DEFAULT_CALENDAR_ID;
+ p->accid = ALL_ACCOUNT_ID;
+
+ p->repeat_occurrences = 10;
+
+ cal_util_get_timezone_info(&p->timezone_path, &p->timezone_city, &p->timezone_offset);
+ if (p->timezone_offset) {
+ char *text = strstr(p->timezone_offset, "T");
+ p->timezone = atoi(text+2);
+ }
+}
+
+
+static Evas_Object* __cal_edit_add_save_to_icon(void *item_data, Evas_Object *obj, const char *part)
+{
+ if (!item_data)
+ {
+ ERR("item_data is null");
+ return NULL;
+ }
+
+ Evas_Object *icon = NULL;
+ char* default_icon_path = "/opt/apps/org.tizen.efl-calendar/res/icons/all_calendar.png";
+ char* icon_path = NULL;
+ cal_struct* cs = (cal_struct*)item_data;
+ Eina_Bool r = EINA_FALSE;
+ int cid = 0;
+ int aid = 0;
+
+ cid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_TABLE_INT_INDEX);
+ aid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_TABLE_INT_ACCOUNT_ID);
+
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ icon = elm_icon_add(obj);
+
+ if (!icon)
+ {
+ ERR("elm_icon_add fail");
+ return NULL;
+ }
+
+ if ( cid == DEFAULT_CALENDAR_ID) {
+ r = elm_icon_file_set(icon, default_icon_path, NULL);
+ c_warn_if(!r, "elm_icon_file_set(%s) is failed", default_icon_path);
+ }
+ else {
+ icon_path = cal_account_svc_get_account_icon_path(aid);
+ if (icon_path) {
+ r = elm_icon_file_set(icon, icon_path, NULL);
+ c_warn_if(!r, "elm_icon_file_set(%s) is failed", default_icon_path);
+ free(icon_path);
+ }
+ else {
+ r = elm_icon_file_set(icon, default_icon_path, NULL);
+ c_warn_if(!r, "elm_icon_file_set(%s) is failed", default_icon_path);
+ }
+
+ }
+
+ if (!r) {
+ ERR("");
+ evas_object_del(icon);
+ icon = NULL;
+ }
+ else
+ evas_object_show(icon);
+ }
+
+ return icon;
+}
+
+static Evas_Object *__cal_edit_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ Evas_Object *e_obj = NULL;
+ Item_Data *item_data = (Item_Data*)data;
+
+ switch ( item_data->type)
+ {
+ case _GTYPE_TITLE:
+ e_obj = __cal_edit_add_title_icon(obj, part, item_data);
+ break;
+ case _GTYPE_LOC:
+ e_obj = __cal_edit_add_location_icon(obj, part, item_data);
+ break;
+ case _GTYPE_START:
+ e_obj = __cal_edit_add_start_date_icon(obj, part, item_data);
+ break;
+ case _GTYPE_END:
+ e_obj = __cal_edit_add_end_date_icon(obj, part, item_data);
+ break;
+ case _GTYPE_ALLDAY:
+ e_obj = __cal_edit_add_all_day_icon(obj, part, item_data);
+ break;
+ case _GTYPE_NOTE:
+ e_obj = __cal_edit_add_note_icon(obj, part, item_data);
+ break;
+ default:
+ break;
+ }
+
+ return e_obj;
+}
+
+static char* __cal_edit_add_start_text(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(S_("IDS_COM_BODY_START"));
+ }
+
+ return NULL;
+}
+
+static char* __cal_edit_add_end_text(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(S_("IDS_COM_BODY_END"));
+ }
+
+ return NULL;
+}
+
+static void __cal_edit_get_alarm_text(Item_Data *data, char* buf, int buf_size)
+{
+ c_retm_if(!data, "data is null");
+ cal_edit_alarm_get_alarm_str(data->alarm_value, buf, buf_size);
+}
+
+static Eina_Bool __cal_edit_check_alarm_time_passed(cal_edit_data *p, cal_struct *cs)
+{
+ time_t alarm;
+ time_t current_time = time(NULL);
+ struct tm start_tm;
+ char buf[32] = {0};
+ Item_Data *item_data = NULL;
+ Elm_Object_Item *it;
+ c_retvm_if(!p, EINA_FALSE, "p is null");
+ c_retvm_if(!p->genlist, EINA_FALSE, "genlist is null");
+
+ start_tm = p->stm;
+ if (p->allday) {
+ start_tm.tm_hour = 0;
+ start_tm.tm_min = 0;
+ start_tm.tm_sec = 0;
+ }
+
+ int count = 1;
+
+ it = p->alarm_first_it;
+ while (it && (count++ <= p->alarm_count)) {
+
+ item_data = elm_object_item_data_get(it);
+ c_retvm_if(!item_data, EINA_FALSE, "item_data is null");
+
+ cal_edit_alarm_get_alarm_str(item_data->alarm_value, buf, sizeof(buf));
+ if (!strcmp(buf, S_("IDS_COM_BODY_OFF"))) {
+ it = elm_genlist_item_next_get(it);
+ continue;
+ }
+
+ alarm = mktime(&start_tm)-item_data->alarm_value*60;
+ if (alarm < current_time)
+ return EINA_TRUE;
+
+ it = elm_genlist_item_next_get(it);
+ }
+
+ return EINA_FALSE;
+}
+
+static void __cal_edit_show_result_popup(cal_edit_data *p,int result)
+{
+ char buf[100]={0,};
+
+ switch(result)
+ {
+ case CAL_ERR_EVENT_START_DATE:
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "Start date is invalid!",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ break;
+ case CAL_ERR_EVENT_END_DATE:
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "End date is invalid!",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ break;
+ case CAL_ERR_EVENT_REPEAT_END_DATE:
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "Repeat end date is invalid!",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ break;
+ case CAL_ERR_EVENT_DURATION:
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "Event duration is invalid!",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ break;
+ case CAL_ERR_EVENT_REPEAT_DURATION_TOO_SHORT:
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "Event duration is longer than repeat duration!",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ break;
+ case CAL_ERR_DB_LOCK:
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "Sync in progress, try later.",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ break;
+ default:
+ snprintf(buf,100,"not saved(internal error-%d)!",result);
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), buf,
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ break;
+ }
+}
+
+int __cal_edit_save(cal_edit_data *p)
+{
+ CAL_FN_START;
+
+ int r;
+ cal_struct *cs;
+ cal_struct *cs_temp;
+
+ cs = __cal_edit_get_cs(p->event_id);
+ if (!cs)
+ return -1;
+
+ cs_temp = __cal_edit_get_cs(p->event_id);
+ if (!cs_temp)
+ {
+ if(cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ return -1;
+ }
+
+ if (__cal_edit_check_alarm_time_passed(p,cs) && p->repeat == CAL_REPEAT_NONE)
+ {
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "Alarm time already passed!",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ if (cs_temp)
+ CALENDAR_SVC_STRUCT_FREE(&cs_temp);
+
+ return -1;
+ }
+
+ __cal_edit_fill_cs(p, cs);
+
+ if (p->event_id)
+ {
+ if (p->ad->edit_special_one)
+ {
+ GList* list = NULL;
+ cal_value* value = NULL;
+ time_t t = 0;
+
+ CALENDAR_SVC_STRUCT_SET_INT(cs,"original_event_id",CALENDAR_SVC_STRUCT_GET_INT(cs,"index"));
+ CALENDAR_SVC_STRUCT_SET_INT(cs,CAL_VALUE_INT_REPEAT_TERM,0);
+ p->ad->cid = CALENDAR_SVC_INSERT(cs);
+
+ t = p->ad->tm->st;
+ value = CALENDAR_SVC_VALUE_NEW(CAL_VALUE_LST_EXCEPTION_DATE);
+ CALENDAR_SVC_VALUE_SET_TIME(value,CAL_VALUE_GMT_EXCEPTION_DATE_TIME,CAL_TZ_FLAG_GMT,t);
+ CALENDAR_SVC_VALUE_SET_INT(value, CAL_VALUE_INT_EXCEPTION_DATE_ID, p->ad->cid);
+ CALENDAR_SVC_STRUCT_GET_LIST(cs_temp,CAL_VALUE_LST_EXCEPTION_DATE,&list);
+ list = g_list_append(list,value);
+ CALENDAR_SVC_STRUCT_SET_LIST(cs_temp,CAL_VALUE_LST_EXCEPTION_DATE,list);
+
+ CALENDAR_SVC_STRUCT_SET_INT(cs_temp,CAL_VALUE_INT_ACCOUNT_ID,p->accid);
+
+ CALENDAR_SVC_UPDATE(cs_temp);
+ }
+ else
+ {
+ r = CALENDAR_SVC_UPDATE(cs);
+ if (r != CAL_SUCCESS)
+ {
+ __cal_edit_show_result_popup(p,r);
+
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ if (cs_temp)
+ CALENDAR_SVC_STRUCT_FREE(&cs_temp);
+
+ return -1;
+ }
+ }
+ }
+ else
+ {
+
+ r = CALENDAR_SVC_INSERT(cs);
+ if (r <= 0)
+ {
+ __cal_edit_show_result_popup(p,r);
+
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ if (cs_temp)
+ CALENDAR_SVC_STRUCT_FREE(&cs_temp);
+
+ return -1;
+ }
+ }
+
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ CALENDAR_SVC_STRUCT_FREE(&cs_temp);
+
+ return 0;
+}
+
+static void __cal_edit_save_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ Evas_Object *ly = data;
+ Elm_Object_Item* navi_item = NULL;
+ int r;
+ cal_edit_data *p = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!p, "p is null");
+
+ r = __cal_edit_save(p);
+ c_retm_if(r, "cal_edit_save() is failed");
+
+ if ((NULL != p->ad->ug) && (UG_EDIT == p->ad->u_type))
+ {
+ ug_destroy_me(p->ad->ug);
+ return;
+ }
+ else if (p->ad->request_view == CV_EDIT)
+ {
+ if (elm_naviframe_top_item_get(p->ad->nv) != elm_naviframe_bottom_item_get(p->ad->nv))
+ {
+ p->ad->request_view = CV_UNKNOWN;
+ elm_win_lower(p->ad->win);
+ }
+ else
+ elm_exit();
+ }
+
+ elm_naviframe_prev_btn_auto_pushed_set(p->ad->nv, EINA_TRUE);
+ elm_naviframe_item_pop(p->ad->nv);
+ navi_item = elm_naviframe_top_item_get(p->ad->nv);
+}
+
+static char* __cal_edit_add_allday_text(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ if (!CAL_STRCMP(part, "elm.text"))
+ {
+ return strdup(C_("IDS_COM_BODY_ALL_DAY"));
+ }
+
+ return NULL;
+}
+
+static char* __cal_edit_add_timezone_text(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ CAL_ASSERT(item_data);
+
+ cal_edit_data *p = item_data->p;
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ return strdup(C_("IDS_CLD_BODY_TIME_ZONE"));
+
+ if (!CAL_STRCMP(part, "elm.text.2")) {
+ if (!p->timezone_offset) {
+ ERR("p->timezone_offset is null");
+ return NULL;
+ }
+
+ return g_strdup_printf("%s, %s", C_(p->timezone_city), p->timezone_offset);
+ }
+
+ return NULL;
+}
+
+static char* __cal_edit_add_alarm_text(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ CAL_ASSERT(item_data);
+
+ cal_edit_data *p = item_data->p;
+ CAL_ASSERT(p);
+
+ char buf[1024];
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(S_("IDS_COM_BODY_ALARM"));
+ }
+ if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ __cal_edit_get_alarm_text(item_data, buf, sizeof(buf));
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static void __cal_edit_get_repeat_text(cal_edit_data *p, char* buf, int buf_size)
+{
+ cal_edit_repeat_get_repeat_str(p->repeat, p->repeat_week, buf, buf_size);
+}
+
+static char* __cal_edit_add_repeat_text(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ char buf[1024] = {0};
+ CAL_ASSERT(item_data);
+
+ cal_edit_data *p = item_data->p;
+ CAL_ASSERT(p);
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(C_("IDS_CLD_BODY_REPEAT"));
+ }
+ if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ __cal_edit_get_repeat_text(p, buf, sizeof(buf));
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static void __cal_edit_get_save_to_str(int calid, char *buf, int sz)
+{
+ cal_struct *cs = NULL;
+ const char *str;
+ int r;
+
+ r = CALENDAR_SVC_GET(CAL_STRUCT_CALENDAR, calid, NULL, &cs);
+ if (r != CAL_SUCCESS)
+ {
+ snprintf(buf, sz, "%s", _("Phone"));
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ return;
+ }
+
+ if (calid == DEFAULT_CALENDAR_ID)
+ str = C_("IDS_CLD_OPT_PHONE_CALENDAR");
+ else
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_TABLE_TXT_NAME);
+ if (!str)
+ str = C_("IDS_CLD_OPT_PHONE_CALENDAR");
+ }
+
+ snprintf(buf, sz, "%s", str);
+
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+}
+
+static char* __cal_edit_add_save_to_text(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ CAL_FN_START;
+
+ char buf[1024];
+ CAL_ASSERT(item_data);
+
+ cal_edit_data *p = item_data->p;
+ CAL_ASSERT(p);
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(C_("IDS_ST_BODY_SAVE_TO"));
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ if ( p->calid == DEFAULT_CALENDAR_ID)
+ return strdup(C_("IDS_CLD_OPT_PHONE_CALENDAR"));
+ else
+ {
+ __cal_edit_get_save_to_str(p->calid, buf, sizeof(buf));
+ return strdup(buf);
+ }
+ }
+ return NULL;
+}
+
+static char* __cal_edit_add_note_text(Evas_Object *obj, const char *part, Item_Data *item_data)
+{
+ cal_edit_data *p = item_data->p;
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ return strdup(S_("IDS_COM_BODY_NOTE"));
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.2") && p->snote)
+ {
+ return strdup(p->snote);
+ }
+
+ return NULL;
+}
+
+static char *__cal_edit_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ Item_Data *item_data = (Item_Data*)data;
+ int type = (int)item_data->type;
+
+ switch ( type )
+ {
+ case _GTYPE_TITLE:
+ break;
+ case _GTYPE_LOC:
+ break;
+ case _GTYPE_START:
+ return __cal_edit_add_start_text(obj, part, item_data);
+ case _GTYPE_END:
+ return __cal_edit_add_end_text(obj, part, item_data);
+ case _GTYPE_ALLDAY:
+ return __cal_edit_add_allday_text(obj, part, item_data);
+ case _GTYPE_TIME_ZONE:
+ return __cal_edit_add_timezone_text(obj, part, item_data);
+ case _GTYPE_ALARM:
+ return __cal_edit_add_alarm_text(obj, part, item_data);
+ case _GTYPE_REPEAT:
+ return __cal_edit_add_repeat_text(obj, part, item_data);
+ case _GTYPE_LINKED_CAL:
+ return __cal_edit_add_save_to_text(obj, part, item_data);
+ case _GTYPE_NOTE:
+ return __cal_edit_add_note_text(obj, part, item_data);
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static void __cal_edit_genlist_item_delete(void *data, Evas_Object *obj)
+{
+ Item_Data *item_data = (Item_Data*)data;
+ free(item_data);
+
+ return;
+}
+
+static Eina_Bool __cal_edit_get_genlist_item_state(void *data, Evas_Object *obj, const char *part)
+{
+ return EINA_FALSE;
+}
+
+
+static void __cal_edit_alarm_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+
+ Item_Data * item_data = data;
+
+ cal_edit_data *p = item_data->p;
+ c_retm_if(!p, "p is null");
+
+ item_data->alarm_value = cal_edit_alarm_get_alarm(p->ly_alarm);
+
+ if (item_data->it)
+ elm_genlist_item_update(item_data->it);
+
+ elm_naviframe_item_pop(p->nv);
+}
+
+static void __cal_edit_repeat_callback(void *data, Evas_Object *obj, void *ei)
+{
+ cal_edit_data *p = data;
+
+ p->repeat = cal_edit_repeat_get_repeat(p->ly_repeat, &p->repeat_week, &(p->repeat_end_date_num), &(p->repeat_end_date_time),&(p->repeat_occurrences));
+
+ if(CAL_REPEAT_NONE != p->repeat)
+ {
+ if (p->repeat == CAL_REPEAT_EVERY_WEEK)
+ __cal_edit_change_wday(p);
+
+ if(1 != p->repeat_end_date_num)
+ {
+ if(timegm(&(p->repeat_end_date_time)) <= timegm(&p->stm))
+ {
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "Repeat end time is invalid!",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ return;
+ }
+ }
+ else
+ {
+ DBG("p->repeat_occurrences is %d\n",p->repeat_occurrences);
+ if(p->repeat_occurrences == 0)
+ {
+ cal_util_add_popup(p->win, S_("IDS_COM_POP_WARNING"), "Repeat occurrence is invalid!",
+ __cal_edit_reponse_event_callback, NULL, NULL);
+ return;
+ }
+
+ time_t now;
+ time(&now);
+ struct tm *tm = localtime(&now);
+ if(NULL != tm)
+ {
+ tm->tm_mon += 1;
+ CAL_MEMCPY(&p->repeat_end_date_time, tm, struct tm);
+ }
+ }
+ __cal_edit_set_repeat_text(p);
+ }
+
+ if(it)
+ {
+ elm_genlist_item_update(it);
+ it = NULL;
+ }
+
+ elm_naviframe_item_pop(p->nv);
+
+}
+
+static void __cal_edit_repeat_select_callback(Item_Data *item_data)
+{
+ cal_edit_data *p = item_data->p;
+ Evas_Object *btn_save;
+ Evas_Object *btn_cancel;
+ Elm_Object_Item* navi_item;
+
+ if (!p->nv)
+ p->nv = elm_naviframe_add(p->genlist);
+
+ p->ly_repeat = cal_edit_repeat_create_view(p->parent, p->ad, p->repeat, p->repeat_end_date_num, &(p->stm), &(p->repeat_end_date_time),&(p->repeat_occurrences), (int*)&(p->allday), p->repeat_week);
+ CAL_ASSERT(p->ly_repeat);
+
+ it = item_data->it;
+
+ navi_item = elm_naviframe_item_push(p->nv, C_("IDS_CLD_BODY_REPEAT"), NULL, NULL, p->ly_repeat, NULL);
+
+ btn_save = elm_button_add(p->nv);
+ cal_util_set_controlbar_button(btn_save, S_("IDS_COM_OPT_SAVE"), "naviframe/title/default", __cal_edit_repeat_callback, p);
+ elm_object_item_part_content_set(navi_item, "title_right_btn", btn_save);
+
+ btn_cancel = elm_button_add(p->nv);
+ cal_util_set_controlbar_button(btn_cancel,S_("IDS_COM_SK_CANCEL"),
+ "naviframe/title/default", __cal_edit_cancel_button_callback, p->nv);
+ elm_object_item_part_content_set(navi_item, "title_left_btn", btn_cancel);
+}
+
+
+static void __cal_edit_ug_destroy_callback(struct ui_gadget *ug, void *priv)
+{
+ CAL_FN_START;
+
+ cal_edit_data* p = (cal_edit_data*) priv;
+
+ if (p->ug_worldclock) {
+ ug_destroy(p->ug_worldclock);
+ p->ug_worldclock= NULL;
+ }
+
+ Elm_Object_Item* navi_item = elm_naviframe_top_item_get(p->nv);
+ Evas_Object *back_btn = elm_object_item_part_content_get(navi_item, "prev_btn");
+ if (back_btn != NULL) {
+ elm_object_style_set(back_btn, "naviframe/back_btn/default"); /* take into effect */
+ }
+}
+
+static void __cal_edit_ug_result_callback(struct ui_gadget *ug, bundle *result, void *priv)
+{
+ CAL_FN_START;
+
+ c_retm_if(!priv, "priv is null");
+ c_retm_if(!result, "result is null");
+
+ cal_edit_data *p = priv;
+
+ const char* city = bundle_get_val(result, "city");
+ c_retm_if(!city, "city is null");
+
+ const char* timezone = bundle_get_val(result, "timezone");
+ c_retm_if(!timezone, "timezone is null");
+
+ const char* tzpath = bundle_get_val(result, "tzpath");
+ c_retm_if(!tzpath, "tzpath is null");
+
+ if (timezone)
+ p->timezone = atoi(timezone);
+
+ if (p->timezone_city)
+ free(p->timezone_city);
+
+ p->timezone_city = strdup(C_(city));
+
+ if (p->timezone_path)
+ free(p->timezone_path);
+
+ p->timezone_path= strdup(tzpath);
+
+ if (p->timezone_offset)
+ free(p->timezone_offset);
+
+ p->timezone_offset= g_strdup_printf("GMT%s",timezone);
+
+ p->is_selected_timezone = EINA_TRUE;
+
+ elm_genlist_item_update(p->timezone_item);
+}
+
+static void __cal_edit_ug_layout_callback(struct ui_gadget *ug, enum ug_mode mode, void *priv)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ug, "ug is null");
+
+ Evas_Object *base = ug_get_layout(ug);
+ if (!base) {
+ ug_destroy(ug);
+ return;
+ }
+
+ switch (mode)
+ {
+ case UG_MODE_FULLVIEW:
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(ug_get_window(), base);
+ evas_object_show(base);
+ break;
+ default:
+ DBG("Unsupported ug layout");
+ break;
+ }
+
+}
+
+static void __cal_edit_timezone_select_callback(Item_Data *item_data)
+{
+ c_retm_if(!item_data, "item_data is null");
+
+ cal_edit_data *p = item_data->p;
+ struct ug_cbs uc;
+ struct ui_gadget *ug;
+ memset(&uc, 0, sizeof(struct ug_cbs));
+ uc.destroy_cb = __cal_edit_ug_destroy_callback;
+ uc.layout_cb = __cal_edit_ug_layout_callback;
+ uc.result_cb = __cal_edit_ug_result_callback;
+ uc.priv = p;
+
+ ug = ug_create(NULL, "worldclock-efl", UG_MODE_FULLVIEW, NULL, &uc);
+ p->ug_worldclock = ug;
+}
+
+static void __cal_edit_alarm_select_callback(Item_Data *item_data)
+{
+ c_retm_if(!item_data, "item_data is null");
+
+ Evas_Object *btn_save;
+ Evas_Object *btn_cancel;
+ Elm_Object_Item* navi_item;
+ cal_edit_data *p = item_data->p;
+
+ c_retm_if(!p, "p is null");
+ c_retm_if(!p->nv, "p->nv is null");
+
+ p->ly_alarm = cal_edit_alarm_create_view(p->win, item_data->alarm_value, p->ad);
+ c_retm_if(!p->ly_alarm, "p->ly_alarm is null");
+
+ it = item_data->it;
+
+ navi_item = elm_naviframe_item_push(p->nv, S_("IDS_COM_BODY_ALARM"), NULL, NULL, p->ly_alarm, NULL);
+
+ btn_save = elm_button_add(p->nv);
+ cal_util_set_controlbar_button(btn_save,S_("IDS_COM_OPT_SAVE"), "naviframe/title/default", __cal_edit_alarm_callback, item_data);
+ elm_object_item_part_content_set(navi_item, "title_right_btn", btn_save);
+
+ btn_cancel = elm_button_add(p->nv);
+ cal_util_set_controlbar_button(btn_cancel,S_("IDS_COM_SK_CANCEL"), "naviframe/title/default", __cal_edit_cancel_button_callback, p->nv);
+ elm_object_item_part_content_set(navi_item, "title_left_btn", btn_cancel);
+}
+
+static void __cal_edit_save_to_popup_list_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ cal_struct* cs = data;
+
+ cal_edit_data *p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "p is null");
+
+ Elm_Object_Item *item = elm_genlist_selected_item_get(obj);
+ c_retm_if(!item, "elm_genlist_selected_item_get() returned null");
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ if (cs)
+ {
+ p->calid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_TABLE_INT_INDEX);
+ p->accid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_TABLE_INT_ACCOUNT_ID);
+ }
+ else
+ {
+ p->calid = DEFAULT_CALENDAR_ID;
+ p->accid = LOCAL_ACCOUNT_ID;
+ }
+
+ elm_genlist_item_update(it);
+
+ evas_object_del(p->popup);
+ p->popup = NULL;
+}
+
+static void __cal_edit_save_to_popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *popup = data;
+
+ cal_edit_data *p = evas_object_data_get(popup, "data");
+
+ evas_object_del(popup);
+
+ c_retm_if(!p, "p is null");
+
+ p->popup = NULL;
+}
+
+static Evas_Object* __cal_edit_create_save_to_popup(Item_Data *item_data)
+{
+ c_retvm_if(!item_data, NULL, "item_data is null");
+
+ Evas_Object *popup = NULL;
+ Evas_Object *genlist = NULL;
+ cal_edit_data *p = item_data->p;
+ c_retvm_if(!p, NULL, "p is null");
+
+ cal_struct *cs;
+ Eina_List *l;
+
+ if (!p->calendar_list)
+ {
+ p->calendar_list = CALENDAR_SVC_GET_CALENDARS(p->accid);
+ c_retvm_if(!p->calendar_list, NULL, "p->calendar_list is null");
+ }
+
+ popup = cal_util_add_popup(p->ad->win, C_("IDS_ST_BODY_SAVE_TO"), NULL,
+ __cal_edit_save_to_popup_hide_cb, p, S_("IDS_COM_BODY_CLOSE"), NULL);
+ c_retvm_if(!popup, NULL, "popup is null");
+ elm_object_style_set(popup, "liststyle");
+
+ genlist = elm_genlist_add(popup);
+ if (!genlist) {
+ ERR("elm_genlist_add(popup) returned null");
+ evas_object_del(popup);
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_data_set(genlist, "priv", p);
+
+ EINA_LIST_FOREACH(p->calendar_list, l, cs)
+ {
+ if (cs)
+ elm_genlist_item_append(genlist, &itc_2text_1icon_2, cs, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_save_to_popup_list_sel, cs);
+ }
+
+ elm_object_content_set(popup, genlist);
+ evas_object_show(genlist);
+
+ return popup;
+}
+
+static void __cal_edit_show_save_to_popup(Item_Data *item_data)
+{
+ c_retm_if(!item_data, "item_data is null");
+
+ it = item_data->it;
+ c_retm_if(!it, "selected item is null");
+
+ cal_edit_data *p = item_data->p;
+ c_retm_if(!p, "p is null");
+
+ Evas_Object *popup = __cal_edit_create_save_to_popup(item_data);
+ c_retm_if(!popup, "popup is NULL");
+
+ p->popup = popup;
+}
+
+static void __cal_edit_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!obj, "obj is null");
+
+ Elm_Object_Item *it = elm_genlist_selected_item_get(obj);
+ c_retm_if(!it, "elm_genlist_selected_item_get() returned null");
+
+ Item_Data *item_data = (Item_Data *)elm_object_item_data_get(it);
+ c_retm_if(!it, "elm_object_item_data_get() returned null");
+
+ int type = item_data->type;
+
+ cal_edit_data *p = item_data->p;
+ c_retm_if(!p, "p is null");
+
+ switch ( type )
+ {
+ case _GTYPE_TITLE:
+ break;
+ case _GTYPE_LOC:
+ break;
+ case _GTYPE_START:
+ elm_object_focus_set(p->sdt, EINA_TRUE);
+ break;
+ case _GTYPE_END:
+ elm_object_focus_set(p->edt, EINA_TRUE);
+ break;
+ case _GTYPE_ALLDAY:
+ elm_check_state_set(p->c_allday, !elm_check_state_get(p->c_allday));
+ __cal_edit_all_day_changed_callback(p, p->c_allday, event_info);
+ break;
+ case _GTYPE_TIME_ZONE:
+ __cal_edit_timezone_select_callback(item_data);
+ break;
+ case _GTYPE_ALARM:
+ __cal_edit_alarm_select_callback(item_data);
+ break;
+ case _GTYPE_REPEAT:
+ __cal_edit_repeat_select_callback(item_data);
+ break;
+ case _GTYPE_NOTE:
+ break;
+ case _GTYPE_LINKED_CAL:
+ __cal_edit_show_save_to_popup(item_data);
+ break;
+ default:
+ break;
+ }
+
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ return;
+}
+
+static char *__cal_edit_get_genlist_save_to_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "data is null");
+ c_retvm_if(!part, NULL, "part is null");
+
+ cal_struct *cs = (cal_struct*)data;
+ const char *name;
+ int cid;
+ char* description;
+
+ if (!CAL_STRCMP(part,"elm.text.1")) {
+ if (!cs)
+ return strdup(C_("IDS_CLD_OPT_PHONE_CALENDAR"));
+
+ cid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_TABLE_INT_INDEX);
+ if (cid == DEFAULT_CALENDAR_ID)
+ return strdup(C_("IDS_CLD_OPT_PHONE_CALENDAR"));
+
+ name = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_TABLE_TXT_NAME);
+ if (name)
+ return strdup(name);
+
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
+ }
+ else if (!CAL_STRCMP(part,"elm.text.2")) {
+ if (!cs)
+ return strdup(S_("IDS_COM_POP_NO_ACCOUNTS"));
+
+ cid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_TABLE_INT_INDEX);
+ if (cid == DEFAULT_CALENDAR_ID)
+ return strdup(C_("IDS_EMAIL_BODY_DEFAULT_ACCOUNT"));
+
+ description = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_TABLE_TXT_DESCRIPTION);
+ if (description)
+ return strdup(description);
+
+ return strdup(S_("IDS_COM_POP_NO_ACCOUNTS"));
+ }
+
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
+}
+
+static Elm_Object_Item* __cal_edit_add_genlist_item(Evas_Object *genlist, Elm_Genlist_Item_Class *itc, int type, cal_edit_data *p)
+{
+ c_retvm_if(!genlist, NULL, "genlist is null");
+ c_retvm_if(!itc, NULL, "itc is null");
+ c_retvm_if(!p, NULL, "p is null");
+
+ Item_Data *item_data = calloc(1, sizeof(Item_Data));
+ c_retvm_if(!item_data, NULL, "calloc is failed");
+
+ item_data->p = p;
+ item_data->type = type;
+
+ item_data->it = elm_genlist_item_append(genlist, itc, item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_genlist_item_select_callback, NULL);
+ if (!item_data->it)
+ {
+ ERR("elm_genlist_item_append returned null");
+ free(item_data);
+ return NULL;
+ }
+
+ if ( type == _GTYPE_START || type == _GTYPE_END )
+ elm_genlist_item_select_mode_set( item_data->it, ELM_OBJECT_SELECT_MODE_NONE );
+
+ return item_data->it;
+}
+
+static Elm_Object_Item* __cal_edit_add_genlist_alarm_item(Evas_Object *genlist, Elm_Genlist_Item_Class *itc, int type, cal_edit_data *p, int alarm)
+{
+ c_retvm_if(!genlist, NULL, "genlist is null");
+ c_retvm_if(!itc, NULL, "itc is null");
+ c_retvm_if(!p, NULL, "p is null");
+
+ Item_Data *item_data = calloc(1, sizeof(Item_Data));
+ c_retvm_if(!item_data, NULL, "calloc is failed");
+
+ item_data->p = p;
+ item_data->type = type;
+ item_data->alarm_value = alarm;
+
+ if (!p->alarm_first_it) {
+ item_data->it = elm_genlist_item_append(genlist, &itc_2text, item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_edit_genlist_item_select_callback, NULL);
+ p->alarm_first_it = p->alarm_last_it = item_data->it;
+ } else {
+ item_data->it = elm_genlist_item_insert_after(genlist, itc, item_data, NULL,p->alarm_last_it, ELM_GENLIST_ITEM_NONE, __cal_edit_genlist_item_select_callback, NULL);
+ p->alarm_last_it = item_data->it;
+ }
+
+ if (!item_data->it)
+ {
+ ERR("elm_genlist_item_append returned null");
+ free(item_data);
+ return NULL;
+ }
+
+ return item_data->it;
+}
+
+
+static Elm_Object_Item* __cal_edit_add_separator(Evas_Object *genlist, cal_edit_data *p)
+{
+ c_retvm_if(!genlist, NULL, "genlist is null");
+ c_retvm_if(!p, NULL, "p is null");
+
+ Elm_Object_Item *git = __cal_edit_add_genlist_item(genlist, &itc_seperator, 0, p);
+ c_retvm_if(!git, NULL, "__cal_edit_add_genlist_item returned null");
+
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_NONE);
+
+ return git;
+}
+
+static Elm_Object_Item* __cal_edit_set_title(Evas_Object *genlist, cal_edit_data *p)
+{
+ __cal_edit_add_separator(genlist, p);
+
+ return __cal_edit_add_genlist_item(genlist, &itc_1icon, _GTYPE_TITLE, p);
+}
+
+static Elm_Object_Item* __cal_edit_set_location(Evas_Object *genlist, cal_edit_data *p)
+{
+ return __cal_edit_add_genlist_item(genlist, &itc_1icon, _GTYPE_LOC, p);
+}
+
+static Elm_Object_Item* __cal_edit_set_start_date(Evas_Object *genlist, cal_edit_data *p)
+{
+ __cal_edit_add_separator(genlist, p);
+
+ return __cal_edit_add_genlist_item(genlist, &itc_1icon, _GTYPE_START, p);
+}
+
+static Elm_Object_Item* __cal_edit_set_end_date(Evas_Object *genlist, cal_edit_data *p)
+{
+ return __cal_edit_add_genlist_item(genlist, &itc_1icon, _GTYPE_END, p);
+}
+
+static Elm_Object_Item* __cal_edit_set_all_day(Evas_Object *genlist, cal_edit_data *p)
+{
+ return __cal_edit_add_genlist_item(genlist, &itc_1text_1icon, _GTYPE_ALLDAY, p);
+}
+
+static Elm_Object_Item* __cal_edit_set_time_zone(Evas_Object *genlist, cal_edit_data *p)
+{
+ __cal_edit_add_separator(genlist, p);
+
+ return __cal_edit_add_genlist_item(genlist, &itc_2text, _GTYPE_TIME_ZONE, p);
+}
+
+static void __cal_edit_set_alarm(Evas_Object *genlist, cal_edit_data *p)
+{
+ __cal_edit_add_separator(genlist, p);
+
+ GList *temp = p->list_alm_min;
+
+ if (!temp)
+ p->alarm_first_it = p->alarm_last_it =
+ __cal_edit_add_genlist_alarm_item(genlist, &itc_2text_1btn, _GTYPE_ALARM, p,
+ (p->event_id?CAL_EDIT_ALARM_OFF:CAL_EDIT_ALARM_ON_TIME));
+ else {
+ while (temp) {
+ __cal_edit_add_genlist_alarm_item(genlist, &itc_2text_1btn, _GTYPE_ALARM, p, (int)temp->data);
+
+ temp = g_list_next(temp);
+ }
+ }
+}
+
+static Elm_Object_Item* __cal_edit_set_repeat(Evas_Object *genlist, cal_edit_data *p)
+{
+ __cal_edit_add_separator(genlist, p);
+
+ return __cal_edit_add_genlist_item(genlist, &itc_2text, _GTYPE_REPEAT, p);
+}
+
+static Elm_Object_Item* __cal_edit_set_note(Evas_Object *genlist, cal_edit_data *p)
+{
+ __cal_edit_add_separator(genlist, p);
+
+ return __cal_edit_add_genlist_item(genlist, &itc_1icon, _GTYPE_NOTE, p);
+}
+
+static Elm_Object_Item* __cal_edit_set_save_to(Evas_Object *genlist, cal_edit_data *p)
+{
+ __cal_edit_add_separator(genlist, p);
+
+ return __cal_edit_add_genlist_item(genlist, &itc_2text, _GTYPE_LINKED_CAL, p);
+
+}
+
+static void __cal_edit_set_edit(cal_edit_data *p)
+{
+ time_t t;
+
+ if (p->ad)
+ {
+ p->stm.tm_year = p->ad->base_tm.tm_year;
+ p->stm.tm_mon = p->ad->base_tm.tm_mon;
+ p->stm.tm_mday = p->ad->base_tm.tm_mday;
+
+ if (-1 != p->ad->base_hour)
+ {
+ p->stm.tm_hour = p->ad->base_hour;
+ p->stm.tm_min = 0;
+ }
+ }
+
+ if (p->stm.tm_min)
+ cal_util_update_tm_hour(&p->stm,1);
+
+ p->stm.tm_min = p->stm.tm_sec = 0;
+
+ t = mktime(&p->stm);
+ t += 60 * 60; // add 1 hour
+ localtime_r(&t, &p->etm);
+
+ p->allday = EINA_FALSE;
+}
+
+static Eina_Bool __cal_edit_append_widget_idler(void* data)
+{
+ c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "data is null");
+
+ cal_edit_data *p = (cal_edit_data *)data;
+ Evas_Object *genlist = p->genlist;
+
+ __cal_edit_set_note(genlist, p);
+
+ __cal_edit_set_save_to(genlist, p);
+
+ p->idler = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Evas_Object* __cal_edit_create_genlist(cal_edit_data* p)
+{
+ Elm_Object_Item* item = NULL;
+ Evas_Object *genlist = elm_genlist_add(p->ly);
+ c_retvm_if(!genlist, NULL, "elm_genlist_add() is failed");
+
+ evas_object_data_set(genlist, "priv", p);
+
+ if (p->ad->theme)
+ elm_object_theme_set(genlist, p->ad->theme);
+
+ itc_seperator.item_style = "dialogue/separator/21/with_line";
+ itc_seperator.func.text_get = NULL;
+ itc_seperator.func.state_get = __cal_edit_get_genlist_item_state;
+ itc_seperator.func.del = __cal_edit_genlist_item_delete;
+
+ itc_1icon.item_style = "dialogue/1icon";
+ itc_1icon.func.text_get = __cal_edit_get_genlist_item_label;
+ itc_1icon.func.del = __cal_edit_genlist_item_delete;
+ itc_1icon.func.content_get = __cal_edit_get_genlist_item_icon;
+
+ itc_1text_1icon.item_style = "dialogue/1text.1icon";
+ itc_1text_1icon.func.text_get = __cal_edit_get_genlist_item_label;
+ itc_1text_1icon.func.del = __cal_edit_genlist_item_delete;
+ itc_1text_1icon.func.content_get = __cal_edit_get_genlist_item_icon;
+
+ itc_2text.item_style = "dialogue/2text.3";
+ itc_2text.func.text_get = __cal_edit_get_genlist_item_label;
+ itc_2text.func.del = __cal_edit_genlist_item_delete;
+ itc_2text.func.content_get = __cal_edit_get_genlist_item_icon;
+ itc_2text.func.state_get = NULL;
+
+ itc_2text_1btn.item_style = "dialogue/2text.1icon.6";
+ itc_2text_1btn.func.text_get = __cal_edit_get_genlist_item_label;
+ itc_2text_1btn.func.content_get = __cal_edit_get_genlist_item_icon;
+ itc_2text_1btn.func.state_get = NULL;
+ itc_2text_1btn.func.del = __cal_edit_genlist_item_delete;
+ itc_2text_1btn.decorate_item_style = "dialogue/edit/contact";
+
+ itc_2text_1icon_4.item_style = "dialogue/2text.1icon.4";
+ itc_2text_1icon_4.func.text_get = __cal_edit_get_genlist_item_label;
+ itc_2text_1icon_4.func.del = __cal_edit_genlist_item_delete;
+ itc_2text_1icon_4.func.content_get = __cal_edit_get_genlist_item_icon;
+
+ itc_2text_1icon_2.item_style = "dialogue/2text.1icon.2";
+ itc_2text_1icon_2.func.text_get = __cal_edit_get_genlist_save_to_item_label;
+ itc_2text_1icon_2.func.content_get = __cal_edit_add_save_to_icon;
+
+ itc_2text_2icon_4.item_style = "dialogue/2text.2icon.4";
+ itc_2text_2icon_4.func.text_get = __cal_edit_get_genlist_item_label;
+ itc_2text_2icon_4.func.del = __cal_edit_genlist_item_delete;
+ itc_2text_2icon_4.func.content_get = __cal_edit_get_genlist_item_icon;
+
+ __cal_edit_set_title(genlist, p);
+ __cal_edit_set_location(genlist, p);
+ __cal_edit_set_start_date(genlist, p);
+ __cal_edit_set_end_date(genlist, p);
+ __cal_edit_set_all_day(genlist, p);
+
+ p->timezone_item = __cal_edit_set_time_zone(genlist, p);
+
+ __cal_edit_set_alarm(genlist, p);
+
+ item = __cal_edit_set_repeat(genlist, p);
+ if (p->ad->edit_special_one)
+ elm_object_item_disabled_set(item, EINA_TRUE);
+
+ evas_object_show(genlist);
+
+ return genlist;
+}
+
+static void __cal_edit_layout_rendering_callback(void *data, Evas *e, void *event_info)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ cal_edit_data* p = data;
+
+ evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST, __cal_edit_layout_rendering_callback);
+
+ if (p->idler)
+ return;
+
+ if (!p->idler)
+ p->idler = ecore_idler_add(__cal_edit_append_widget_idler,p);
+
+ CAL_FN_END;
+}
+
+static Evas_Object *__cal_edit_create_layout(struct appdata *ad, Evas_Object *parent)
+{
+ c_retvm_if(!ad, NULL, "ad is null");
+ c_retvm_if(!parent, NULL, "parent is null");
+
+ Evas *e;
+ Evas_Object *ly;
+ Evas_Object *cf;
+ struct tm tm = {0};
+ cal_edit_data *p = calloc(1, sizeof(cal_edit_data));
+ c_retvm_if(!p, NULL, "calloc(1, sizeof(cal_edit_data)) returned null");
+
+ p->parent = parent;
+ p->nv = ad->nv;
+ p->win = ad->win;
+ p->snote = ad->strnote;
+ p->is_selected_timezone = EINA_FALSE;
+ p->popup = NULL;
+ p->alarm_count = 1;
+ p->alarm_last_it = NULL;
+ p->alarm_first_it = NULL;
+ p->list_alm_min = NULL;
+ p->add_button = NULL;
+ time_t t = time(NULL);
+ localtime_r(&t,&tm);
+ tm.tm_mon += 1;
+ CAL_MEMCPY(&p->repeat_end_date_time, &tm, struct tm);
+
+ ly = cal_util_add_layout(ad->nv, "edit");
+ if (!ly)
+ {
+ ERR("cal_util_add_layout return null");
+ free(p);
+ return NULL;
+ }
+
+ e = evas_object_evas_get(ly);
+ p->ad = ad;
+ p->ly = ly;
+ p->event_id = ad->cid;
+ evas_object_data_set(ly, "priv", p);
+
+ if (ad->is_aul && ad->ical)
+ __cal_edit_fill_vcs_information(p);
+ else {
+ if (p->event_id)
+ __cal_edit_fill_detail_information(p, p->event_id);
+ else {
+ __cal_edit_set_default_information(p);
+ __cal_edit_set_edit(p);
+ }
+ }
+
+ p->genlist = __cal_edit_create_genlist(p);
+ if (!p->genlist)
+ {
+ evas_object_del(ly);
+ free(p);
+ return NULL;
+ }
+
+ cf = elm_conformant_add(ad->win);
+ if (!cf)
+ {
+ ERR("elm_conformant_add(ad->win) is failed");
+ evas_object_del(ly);
+ free(p);
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(cf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(cf);
+ elm_object_content_set(cf, p->genlist);
+ elm_object_style_set(cf, "internal_layout");
+ elm_object_part_content_set(ly, "sw", cf);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_edit_delete_layout, p);
+ evas_event_callback_add(e, EVAS_CALLBACK_RENDER_FLUSH_POST, __cal_edit_layout_rendering_callback, p);
+
+ return ly;
+}
+
+static void __cal_edit_back_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ cal_edit_data *p = data;
+ Elm_Object_Item* navi_item = NULL;
+
+ if ((NULL != p->ad->ug) && (UG_EDIT == p->ad->u_type))
+ {
+ ug_destroy_me(p->ad->ug);
+ }
+ else
+ {
+ if (p->ad->request_view == CV_EDIT)
+ {
+ if (elm_naviframe_top_item_get(p->ad->nv) != elm_naviframe_bottom_item_get(p->ad->nv))
+ {
+ p->ad->request_view = CV_UNKNOWN;
+ elm_win_lower(p->ad->win);
+ }
+ else
+ elm_exit();
+ }
+
+ elm_naviframe_prev_btn_auto_pushed_set(p->ad->nv, EINA_TRUE);
+ elm_naviframe_item_pop(p->ad->nv);
+ navi_item = elm_naviframe_top_item_get(p->ad->nv);
+
+ if (p->ad->is_update_view)
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->parent), "update", "prog");
+ }
+}
+
+static void __cal_edit_add_controlbar( struct appdata *ad, Evas_Object *ly)
+{
+ c_retm_if(!ad, "ad is null");
+ c_retm_if(!ly, "ly is null");
+
+ Elm_Object_Item* navi_item;
+ const char *title;
+ Evas_Object *btn_save;
+ Evas_Object *btn_cancel;
+
+ if (ad->cid)
+ title = S_("IDS_COM_SK_EDIT");
+ else
+ title = S_("IDS_COM_SK_NEW");
+
+ elm_naviframe_prev_btn_auto_pushed_set(ad->nv, EINA_FALSE);
+
+ navi_item = elm_naviframe_item_push(ad->nv, title, NULL, NULL, ly, NULL);
+ c_retm_if(!navi_item, "elm_naviframe_item_push returned null");
+
+ btn_save = elm_button_add(ad->nv);
+ c_retm_if(!btn_save, "elm_button_add(ad->nv) returned null");
+ cal_util_set_controlbar_button(btn_save, S_("IDS_COM_OPT_SAVE"), "naviframe/title/default", __cal_edit_save_button_callback, ly);
+ elm_object_item_part_content_set(navi_item, "title_right_btn", btn_save);
+
+ btn_cancel = elm_button_add(ad->nv);
+ c_retm_if(!btn_cancel, "elm_button_add(ad->nv) returned null");
+ cal_util_set_controlbar_button(btn_cancel, S_("IDS_COM_SK_CANCEL"), "naviframe/title/default", __cal_edit_back_button_callback, CAL_UTIL_GET_PRIV_DATA(ly));
+ elm_object_item_part_content_set(navi_item, "title_left_btn", btn_cancel);
+}
+
+void cal_edit_create_view(struct appdata *ad, Evas_Object *parent)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ad, "ad is null");
+ c_retm_if(!parent, "parent is null");
+
+ Evas_Object *ly = __cal_edit_create_layout(ad, parent);
+ c_retm_if(!ly, "__cal_edit_create_layout(ad, parent) returned null");
+
+ __cal_edit_add_controlbar(ad, ly);
+
+ CAL_FN_END;
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <math.h>
+
+#include "view.h"
+#include "detail.h"
+#include "timeblock.h"
+
+#define ANI_TIME 0.3
+#define WINDOW_WIDTH 480
+#define THIRTY_MIN (30 * 60)
+#define HH_IN_DAY (24 * 2)
+
+static const char *_name = "main/day/tb";
+
+enum cal_day_stack_action_type {
+ STACK_START = 0,
+ STACK_CLICK,
+ STACK_SCROLL,
+ STACK_FLICK,
+};
+
+enum cal_day_input_signal_type {
+ SINGLE_MOUSE_DOWN,
+ SINGLE_MOUSE_UP,
+ SINGLE_MOUSE_MOVE,
+};
+
+struct _priv {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+
+ Evas_Object *clip;
+
+ Evas_Object *scroller;
+ Evas_Coord_Rectangle scroller_coord;
+
+ Evas_Object *base;
+ Evas_Object *event_rectangle;
+
+ struct timeblock *time_block;
+ struct timeblock *tb_t;
+ struct timeblock *left_time_block;
+ struct timeblock *right_time_block;
+ struct timeblock *temporary_time_block;
+ Evas_Coord tb_t_d;
+
+ Eina_Bool scrl_freezed;
+
+ Evas_Coord_Point single_mouse_down;
+ Evas_Coord_Point single_mouse_move;
+
+ Evas_Coord mouse_down_distance;
+
+ enum cal_day_stack_action_type stack_action_type;
+
+ Ecore_Idler *idler_for_scrolling;
+ Ecore_Idler *idler_for_time_block;
+
+ struct tm tm;
+
+ struct calsvc *csv;
+ struct calsvc *left_csv;
+ struct calsvc *right_csv;
+ struct calsvc *temporary_csv;
+
+ Evas_Coord base_y;
+
+};
+
+
+#define THIRTY_MIN (30 * 60)
+#define HH_IN_DAY (24 * 2) // Half hour
+
+static void __cal_day_time_time_block_callback(void *data, struct timeblock *time_block, enum timeblock_event_type e, void *ei);
+
+static void __cal_day_time_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+ struct _priv *p = data;
+
+ if (p->idler_for_scrolling)
+ ecore_idler_del(p->idler_for_scrolling);
+
+ if (p->idler_for_time_block)
+ ecore_idler_del(p->idler_for_time_block);
+
+ if (p->base)
+ evas_object_del(p->base);
+
+ if (p->event_rectangle)
+ evas_object_del(p->event_rectangle);
+
+
+ if (p->time_block)
+ cal_time_block_delete_time_block(&p->time_block);
+
+ if (p->left_time_block)
+ cal_time_block_delete_time_block(&p->left_time_block);
+
+ if (p->right_time_block)
+ cal_time_block_delete_time_block(&p->right_time_block);
+
+ if (p->temporary_time_block)
+ cal_time_block_delete_time_block(&p->temporary_time_block);
+
+ if (p->tb_t)
+ p->tb_t = NULL;
+
+ if (p->left_csv)
+ CALENDAR_SVC_FREE_CS(&p->left_csv);
+
+ if (p->right_csv)
+ CALENDAR_SVC_FREE_CS(&p->right_csv);
+
+ if (p->csv)
+ CALENDAR_SVC_FREE_CS(&p->csv);
+
+ if (p->temporary_csv)
+ CALENDAR_SVC_FREE_CS(&p->temporary_csv);
+
+ if (p)
+ free(p);
+}
+
+static void inline __cal_day_time_freeze(struct _priv *p)
+{
+ if (!p->scrl_freezed)
+ {
+ elm_object_scroll_freeze_push(p->scroller);
+ p->scrl_freezed = EINA_TRUE;
+ }
+}
+
+static void inline __cal_day_time_thaw(struct _priv *p)
+{
+ if (p->scrl_freezed)
+ {
+ elm_object_scroll_freeze_pop(p->scroller);
+ p->scrl_freezed = EINA_FALSE;
+ }
+}
+
+static void __cal_day_time_scroll(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+ Evas_Coord_Point xy;
+
+ evas_object_geometry_get(p->base, &xy.x, &xy.y, NULL, NULL);
+ cal_time_block_move(p->time_block, xy.x, xy.y);
+}
+
+static inline Evas_Coord __cal_day_time_get_distance(Evas_Coord_Point *s, Evas_Coord_Point *e)
+{
+ return (Evas_Coord)sqrt((s->x - e->x) * (s->x - e->x)
+ + (s->y - e->y) * (s->y - e->y));
+}
+
+static void __cal_day_time_flick_stack(struct _priv *p)
+{
+ CAL_FN_START;
+
+ c_ret_if(!p->time_block);
+
+ Evas_Coord_Rectangle r;
+ Evas_Coord d = p->single_mouse_move.x - p->single_mouse_down.x;
+
+ cal_time_block_get_geometry(p->time_block, &r);
+ cal_time_block_move(p->time_block, p->scroller_coord.x + d, r.y);
+
+ if (p->tb_t)
+ cal_time_block_move(p->tb_t, p->scroller_coord.x + d + r.w * p->tb_t_d, r.y);
+}
+
+static char* __cal_day_time_get_time_block_text(cal_struct *cs)
+{
+ CAL_ASSERT(cs);
+
+ const char *tit;
+ const char *loc;
+ char *str;
+ int size = 0;
+
+ tit = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
+ if (!tit)
+ tit = C_("IDS_CLD_BODY_NO_TITLE");
+
+ loc = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_LOCATION);
+ if (!loc || loc[0] == '\0')
+ loc = C_("IDS_CLD_BODY_NO_LOCATION_SELECTED");
+
+ size = CAL_STRLEN(tit) + CAL_STRLEN(loc) + 6;
+ CAL_CALLOC(str, size, char);
+ if (!str)
+ return strdup(tit);
+
+ snprintf(str, size, "%s<br>%s", tit, loc);
+
+ return str;
+}
+
+static void __cal_day_time_add_event(struct timeblock *time_block, struct tmnode *tm, time_t base)
+{
+ CAL_ASSERT(time_block);
+ CAL_ASSERT(tm);
+
+ char *text;
+ int cid;
+ int hh;
+ int sz;
+ time_t et;
+
+ text = __cal_day_time_get_time_block_text(tm->cs);
+ cid = CALENDAR_SVC_STRUCT_GET_INT(tm->cs, CAL_VALUE_INT_INDEX);
+
+ hh = (tm->st - base)/THIRTY_MIN;
+ if (hh < 0)
+ hh = 0;
+
+ et = ((tm->et - 1 - base)/THIRTY_MIN) + 1;
+ if (et > HH_IN_DAY)
+ et = HH_IN_DAY;
+
+ sz = et - hh;
+ if (sz <= 0)
+ sz = 1;
+
+ cal_time_block_add_event(time_block, cid, hh, sz, text, tm);
+
+ free(text);
+}
+
+static void __cal_day_time_add_events(struct timeblock *time_block, struct _priv * p, struct tm *day)
+{
+ CAL_ASSERT(time_block);
+ CAL_ASSERT(p);
+ CAL_ASSERT(day);
+
+ time_t st, et;
+ Eina_List *l;
+ struct tmnode *tm;
+ int acctid = p->ad->acct_id;
+ int allday;
+
+ cal_util_get_day_time_t(day, &st, &et);
+
+ if(p->csv)
+ CALENDAR_SVC_FREE_CS(&p->csv);
+
+ p->csv = CALENDAR_SVC_GET_EVENT(acctid, st, et);
+ CAL_ASSERT(p->csv);
+
+ EINA_LIST_FOREACH(p->csv->tmlist, l, tm)
+ {
+ if(NULL != tm)
+ {
+ allday = CALENDAR_SVC_STRUCT_GET_INT(tm->cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (!allday)
+ __cal_day_time_add_event(time_block, tm, st);
+ }
+ }
+}
+
+static void __cal_day_time_add_events_left(struct timeblock *tb, struct _priv * p, struct tm *day)
+{
+ CAL_FN_START;
+
+ time_t st, et;
+ Eina_List *l;
+ struct tmnode *tm;
+ int acctid = p->ad->acct_id;
+
+ cal_util_get_day_time_t(day, &st, &et);
+
+ if(p->left_csv)
+ CALENDAR_SVC_FREE_CS(&p->left_csv);
+
+ p->left_csv = CALENDAR_SVC_GET_EVENT(acctid, st, et);
+ if (!p->left_csv)
+ return;
+
+ EINA_LIST_FOREACH(p->left_csv->tmlist, l, tm)
+ {
+ int allday;
+ if(NULL != tm)
+ {
+ allday = CALENDAR_SVC_STRUCT_GET_INT(tm->cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (!allday)
+ {
+ __cal_day_time_add_event(tb, tm, st);
+ }
+ }
+ }
+}
+
+static void __cal_day_time_add_events_right(struct timeblock *tb, struct _priv * p, struct tm *day)
+{
+ CAL_FN_START;
+
+ time_t st, et;
+ Eina_List *l;
+ struct tmnode *tm;
+ int acctid = p->ad->acct_id;
+
+ cal_util_get_day_time_t(day, &st, &et);
+
+ if(p->right_csv)
+ CALENDAR_SVC_FREE_CS(&p->right_csv);
+
+ p->right_csv = CALENDAR_SVC_GET_EVENT(acctid, st, et);
+ if (!p->right_csv)
+ return;
+
+ EINA_LIST_FOREACH(p->right_csv->tmlist, l, tm)
+ {
+ int allday;
+ if(NULL != tm)
+ {
+ allday = CALENDAR_SVC_STRUCT_GET_INT(tm->cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (!allday)
+ {
+ __cal_day_time_add_event(tb, tm, st);
+ }
+ }
+ }
+}
+
+static void __cal_day_time_add_events_tmp(struct timeblock *tb, struct _priv * p, struct tm *day)
+{
+ CAL_FN_START;
+
+ time_t st, et;
+ Eina_List *l;
+ struct tmnode *tm;
+ int acctid = p->ad->acct_id;
+
+ cal_util_get_day_time_t(day, &st, &et);
+
+ if(p->temporary_csv)
+ CALENDAR_SVC_FREE_CS(&p->temporary_csv);
+
+ p->temporary_csv = CALENDAR_SVC_GET_EVENT(acctid, st, et);
+ if (!p->temporary_csv)
+ return;
+
+ EINA_LIST_FOREACH(p->temporary_csv->tmlist, l, tm)
+ {
+ int allday;
+ if(NULL != tm)
+ {
+ allday = CALENDAR_SVC_STRUCT_GET_INT(tm->cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (!allday)
+ {
+ __cal_day_time_add_event(tb, tm, st);
+ }
+ }
+ }
+}
+
+static void __cal_day_time_move_side_time_block(struct _priv *p)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!p->time_block, "p->time_block is null");
+
+ Evas_Coord_Rectangle r = {0};
+ Evas_Coord_Rectangle r1 = {0};
+
+ cal_time_block_get_geometry(p->time_block, &r);
+
+ cal_util_get_geometry(&r1, p->scroller);
+ p->scroller_coord = r1;
+
+ if (p->left_time_block)
+ {
+ cal_time_block_move(p->left_time_block, p->scroller_coord.x + r.w *(-1), r.y);
+ }
+
+ if (p->right_time_block)
+ {
+ cal_time_block_move(p->right_time_block, p->scroller_coord.x + r.w *(1), r.y);
+ }
+
+
+}
+
+static struct timeblock * __cal_day_time_create_time_block_left_right(struct _priv *p, Evas_Coord d)
+{
+ CAL_FN_START;
+
+ c_retv_if(!p, NULL);
+
+ struct tm tm = p->tm;
+
+ int r = cal_util_update_tm_day(&tm, d);
+ c_retvm_if(r < 0, NULL, "cal_util_update_tm_day() returned %d", r);
+
+ struct timeblock *time_block = cal_time_block_create_time_block(p->scroller, p->clip);
+ c_retv_if(!time_block, NULL);
+
+ if (d < 0) // left
+ __cal_day_time_add_events_left(time_block, p, &tm);
+ else // right
+ __cal_day_time_add_events_right(time_block, p, &tm);
+
+ cal_time_block_resize(time_block, 0, cal_time_block_get_current(p->time_block));
+
+ if (d < 0) // left
+ p->left_time_block = time_block;
+ else // right
+ p->right_time_block = time_block;
+
+ return time_block;
+
+}
+
+static void __cal_day_time_create_time_block_t(struct _priv *p, Evas_Coord d)
+{
+ if(p->left_time_block && p->right_time_block)
+ {
+
+ if(d > 0)
+ {
+ p->tb_t_d = -1;
+ p->tb_t = p->left_time_block;
+ }
+ else
+ {
+ p->tb_t_d = 1;
+ p->tb_t = p->right_time_block;
+ }
+ }
+ else
+ {
+
+ struct tm tm;
+ int r;
+
+ if (p->temporary_time_block)
+ cal_time_block_clear_event(p->temporary_time_block);
+
+ if (!p->temporary_time_block)
+ p->temporary_time_block = cal_time_block_create_time_block(p->scroller, p->clip);
+
+ if (!p->temporary_time_block)
+ return;
+
+ tm = p->tm;
+ if (d > 0) // left
+ p->tb_t_d = -1;
+ else // right
+ p->tb_t_d = 1;
+
+ r = cal_util_update_tm_day(&tm, p->tb_t_d);
+ if (r == -1)
+ return;
+
+ __cal_day_time_add_events_tmp(p->temporary_time_block, p, &tm);
+
+ cal_time_block_resize(p->temporary_time_block, 0, cal_time_block_get_current(p->time_block));
+
+ p->tb_t = p->temporary_time_block;
+ }
+}
+
+static void __cal_day_time_update_day(struct _priv *p)
+{
+ CAL_FN_START;
+
+ c_ret_if(!p);
+
+ if (( 0 < p->tb_t_d && !p->right_time_block) ||( p->tb_t_d < 0 && !p->left_time_block)) {
+ __cal_day_time_move_side_time_block(p);
+ return;
+ }
+
+ Evas_Coord_Rectangle rect = {0};
+ Evas_Coord_Rectangle rect1 = {0};
+
+ cal_time_block_get_geometry(p->time_block, &rect);
+
+ cal_util_get_geometry(&rect1, p->scroller);
+ p->scroller_coord = rect1;
+
+ int r = cal_util_update_tm_day(&p->ad->base_tm, p->tb_t_d);
+ c_retm_if(r < 0, "cal_util_update_tm_day() is returned %d", r);
+
+ struct tm tm = p->ad->base_tm;
+ r = cal_util_update_tm_day(&tm, p->tb_t_d);
+ c_warn_if(r < 0, "cal_util_update_tm_day() is returned %d", r);
+
+ cal_time_block_hide_current_time_line(p->time_block);
+ cal_time_block_unset_callback(p->time_block);
+
+ if (0 < p->tb_t_d) {
+ if (p->left_time_block)
+ cal_time_block_delete_time_block(&p->left_time_block);
+
+ if (p->left_csv)
+ CALENDAR_SVC_FREE_CS(&p->left_csv);
+
+ p->left_time_block = p->time_block;
+ p->left_csv = p->csv;
+
+ p->time_block = p->right_time_block;
+ p->csv = p->right_csv;
+
+ p->right_time_block = NULL;
+ p->right_csv = NULL;
+
+ if (r == 0) {
+ p->right_time_block = cal_time_block_create_time_block(p->scroller, p->clip);
+
+ __cal_day_time_add_events_right(p->right_time_block, p, &tm);
+ }
+ }
+ else if (p->tb_t_d < 0) {
+ if (p->right_time_block)
+ cal_time_block_delete_time_block(&p->right_time_block);
+
+ if (p->right_csv)
+ CALENDAR_SVC_FREE_CS(&p->right_csv);
+
+ p->right_time_block = p->time_block;
+ p->right_csv = p->csv;
+
+ p->time_block = p->left_time_block;
+ p->csv = p->left_csv;
+
+ p->left_time_block = NULL;
+ p->left_csv = NULL;
+
+ if (r == 0) {
+ p->left_time_block = cal_time_block_create_time_block(p->scroller, p->clip);
+
+ __cal_day_time_add_events_right(p->left_time_block, p, &tm);
+ }
+ }
+
+ cal_time_block_show_current_time_line(p->time_block, p->tm.tm_hour);
+ cal_time_block_set_callback(p->time_block, __cal_day_time_time_block_callback, p);
+
+ cal_time_block_move(p->left_time_block, p->scroller_coord.x + rect.w *(-1), rect.y);
+ cal_time_block_move(p->time_block, p->scroller_coord.x , rect.y);
+ cal_time_block_move(p->right_time_block, p->scroller_coord.x + rect.w *(1), rect.y);
+
+ cal_main_update_title_text(p->ad->title, CV_DAY, &p->ad->base_tm, p->ad->wday_start);
+
+ cal_day_update_genlist(p->parent);
+}
+
+static void __cal_day_time_stack_action(struct _priv *p)
+{
+ switch (p->stack_action_type)
+ {
+ case STACK_FLICK:
+ __cal_day_time_flick_stack(p);
+ break;
+
+ case STACK_START:
+ case STACK_CLICK:
+ case STACK_SCROLL:
+ default:
+ // do nothing
+ break;
+ }
+}
+
+static void __cal_day_time_transact_stack(struct _priv *p, enum cal_day_input_signal_type input)
+{
+ CAL_ASSERT(p);
+
+ switch (p->stack_action_type)
+ {
+ case STACK_START:
+ if (input == SINGLE_MOUSE_DOWN)
+ p->stack_action_type = STACK_CLICK;
+ break;
+
+ case STACK_CLICK:
+ if (input == SINGLE_MOUSE_UP)
+ {
+ p->stack_action_type = STACK_START;
+ }
+ else if (input == SINGLE_MOUSE_MOVE)
+ {
+ Evas_Coord d;
+ Evas_Coord th = elm_finger_size_get();
+
+ d = p->single_mouse_move.y - p->single_mouse_down.y;
+ if (d > th || d < (th * -1))
+ {
+ cal_time_block_set_event_lock(p->time_block, EINA_TRUE);
+ p->stack_action_type = STACK_SCROLL;
+ break;
+ }
+
+ d = p->single_mouse_move.x - p->single_mouse_down.x;
+ if (d > th || d < (th * -1))
+ {
+ if ((d < 0 && !p->right_time_block) || (0 < d && !p->left_time_block)) {
+ cal_time_block_set_event_lock(p->time_block, EINA_TRUE);
+ p->stack_action_type = STACK_SCROLL;
+ break;
+ }
+
+ __cal_day_time_freeze(p);
+ cal_time_block_set_event_lock(p->time_block, EINA_TRUE);
+ __cal_day_time_create_time_block_t(p, d);
+ p->stack_action_type = STACK_FLICK;
+ }
+ }
+ break;
+
+ case STACK_SCROLL:
+ if (input == SINGLE_MOUSE_UP) {
+ cal_time_block_set_event_lock(p->time_block, EINA_FALSE);
+ p->stack_action_type = STACK_START;
+ }
+ break;
+
+ case STACK_FLICK:
+ if (input == SINGLE_MOUSE_UP) {
+ Evas_Coord_Rectangle r;
+ Evas_Coord d;
+ Evas_Coord th;
+
+ // TODO: start animation: go left or right
+ cal_time_block_get_geometry(p->time_block, &r);
+ cal_time_block_move(p->time_block, p->scroller_coord.x, r.y);
+ cal_time_block_move(p->tb_t, 0 - r.w, r.y); // hide
+ p->stack_action_type = STACK_START;
+ cal_time_block_set_event_lock(p->time_block, EINA_FALSE);
+ __cal_day_time_thaw(p);
+
+ d = p->single_mouse_move.x - p->single_mouse_down.x;
+ th = r.w >> 1;
+ if (d > th || d < (th * -1))
+ __cal_day_time_update_day(p);
+ }
+ break;
+ }
+}
+
+static void __cal_day_time_mouse_down_event_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+ Evas_Event_Mouse_Down *ev = ei;
+
+ p->single_mouse_down.x = ev->canvas.x;
+ p->single_mouse_down.y = ev->canvas.y;
+
+ __cal_day_time_transact_stack(p, SINGLE_MOUSE_DOWN);
+ __cal_day_time_stack_action(p);
+}
+
+static void __cal_day_time_mouse_up_event_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+ // Evas_Event_Mouse_Up *ev = ei;
+
+ __cal_day_time_transact_stack(p, SINGLE_MOUSE_UP);
+ __cal_day_time_stack_action(p);
+}
+
+static void __cal_day_time_mouse_move_event_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+ Evas_Event_Mouse_Move *ev = ei;
+
+ p->single_mouse_move.x = ev->cur.canvas.x;
+ p->single_mouse_move.y = ev->cur.canvas.y;
+
+ __cal_day_time_transact_stack(p, SINGLE_MOUSE_MOVE);
+ __cal_day_time_stack_action(p);
+}
+
+// Event mismatch workaround
+static void __cal_day_time_mouse_out_event_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+
+ __cal_day_time_transact_stack(p, SINGLE_MOUSE_UP);
+ __cal_day_time_stack_action(p);
+}
+
+static Evas_Object* __cal_day_time_add_base_layout(Evas_Object *parent, struct _priv *p)
+{
+ Evas_Object *base;
+
+ base = cal_util_add_rectangle(parent);
+ if (!base)
+ return NULL;
+
+ evas_object_size_hint_align_set(base, EVAS_HINT_FILL, 0);
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_color_set(base, 0, 0, 0, 0);
+
+ evas_object_event_callback_add(base, EVAS_CALLBACK_MOVE, __cal_day_time_scroll, p);
+
+ return base;
+}
+
+static Evas_Object* __cal_day_time_add_event_rectangle(Evas_Object *parent, struct _priv *p)
+{
+ Evas_Object *evt;
+
+ evt = cal_util_add_rectangle(parent);
+ if (!evt)
+ return NULL;
+
+ evas_object_size_hint_align_set(evt, EVAS_HINT_FILL, 0);
+ evas_object_size_hint_weight_set(evt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_color_set(evt, 0, 0, 0, 0);
+
+ evas_object_repeat_events_set(evt, EINA_TRUE);
+
+ evas_object_event_callback_add(evt, EVAS_CALLBACK_MOUSE_DOWN, __cal_day_time_mouse_down_event_callback, p);
+ evas_object_event_callback_add(evt, EVAS_CALLBACK_MOUSE_UP, __cal_day_time_mouse_up_event_callback, p);
+ evas_object_event_callback_add(evt, EVAS_CALLBACK_MOUSE_MOVE, __cal_day_time_mouse_move_event_callback, p);
+ evas_object_event_callback_add(evt, EVAS_CALLBACK_MOUSE_OUT, __cal_day_time_mouse_out_event_callback, p);
+
+ return evt;
+}
+
+static void __cal_day_time_add_content(Evas_Object *ly, struct _priv *p)
+{
+ Evas_Object *scroller;
+ Evas_Object *box;
+
+ scroller = cal_util_add_scroller(ly);
+ CAL_ASSERT(scroller);
+ p->scroller = scroller;
+
+ box = cal_util_add_box(ly);
+ CAL_ASSERT(box);
+
+ elm_object_content_set(scroller, box);
+
+ p->base = __cal_day_time_add_base_layout(ly, p);
+ CAL_ASSERT(p->base);
+ elm_box_pack_end(box, p->base);
+
+ p->event_rectangle = __cal_day_time_add_event_rectangle(ly, p);
+ CAL_ASSERT(p->event_rectangle);
+
+ elm_object_part_content_set(ly, "sw", p->scroller);
+}
+
+static void __cal_day_time_resize_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ struct _priv *p = data;
+ Evas_Coord_Rectangle r = {0};
+
+ cal_util_get_geometry(&r, p->scroller);
+ p->scroller_coord = r;
+ evas_object_resize(p->event_rectangle, r.w, r.h);
+ evas_object_move(p->event_rectangle, 0, r.y);
+
+ p->base_y = r.y;
+ cal_time_block_get_geometry(p->time_block, &r);
+
+ evas_object_size_hint_min_set(p->base, 0, r.h);
+}
+
+static inline void __cal_day_time_time_block_clicked_callback(struct _priv *p, int hour)
+{
+ p->ad->base_hour = hour;
+ p->ad->cid = 0;
+ cal_edit_create_view(p->ad, p->ad->main);
+}
+
+static inline void __cal_day_time_event_clicked_callback(struct _priv *p, struct timeblock_event* ev)
+{
+ CAL_ASSERT(p);
+ CAL_ASSERT(ev);
+
+ int repeat = 0;
+
+ repeat = CALENDAR_SVC_STRUCT_GET_INT(ev->tm->cs, CAL_VALUE_INT_REPEAT_TERM);
+ if(repeat)
+ memcpy(p->ad->tm, ev->tm, sizeof(struct tmnode));
+
+ p->ad->cid = ev->cid;
+ cal_detail_create_view(p->ad, p->ad->main);
+}
+
+static void __cal_day_time_time_block_callback(void *data, struct timeblock *time_block, enum timeblock_event_type e, void *ei)
+{
+ CAL_ASSERT(data);
+ CAL_ASSERT(time_block);
+
+ struct _priv *p = (struct _priv *)data;
+
+ switch (e)
+ {
+ case TIMEBLOCK_CLICKED:
+ __cal_day_time_time_block_clicked_callback(p, (int)ei);
+ break;
+ case EVENT_CLICKED:
+ __cal_day_time_event_clicked_callback(p, (struct timeblock_event *)ei);
+ break;
+ }
+}
+
+static Eina_Bool __cal_day_time_scroll_bring_with_idler(void *data)
+{
+ CAL_FN_START;
+
+ struct _priv *p = data;
+ Evas_Coord y;
+
+ y = cal_time_block_get_first_event_y(p->time_block);
+ elm_scroller_region_bring_in(p->scroller, 0, y, 0, p->scroller_coord.h);
+ p->idler_for_scrolling = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+Evas_Object* cal_day_create_time_block(struct tm *tm, struct appdata *ad, Evas_Object *parent)
+{
+ CAL_FN_START;
+
+ struct _priv *p;
+ Evas_Object *ly;
+
+ CAL_ASSERT(ad && parent);
+
+ CAL_CALLOC(p, 1, struct _priv);
+
+ p->name = _name;
+ p->ad = ad;
+ p->parent = parent;
+ p->left_time_block = NULL;
+ p->right_time_block = NULL;
+ p->temporary_time_block = NULL;
+ p->idler_for_time_block = NULL;
+
+ ly = cal_util_add_layout(parent, p->name);
+ CAL_ASSERT(ly);
+ p->ly = ly;
+ evas_object_data_set(ly, "priv", p);
+
+ __cal_day_time_add_content(ly, p);
+
+ p->clip = (Evas_Object*)edje_object_part_object_get(CAL_UTIL_GET_EDJ_DATA(ly), "clip");
+
+ p->time_block = cal_time_block_create_time_block(p->scroller, p->clip);
+ CAL_ASSERT(p->time_block);
+
+ p->csv = NULL;
+ p->left_csv = NULL;
+ p->right_csv = NULL;
+ p->temporary_csv = NULL;
+
+ cal_time_block_set_callback(p->time_block, __cal_day_time_time_block_callback, p);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_RESIZE, __cal_day_time_resize_layout, p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_day_time_delete_layout, p);
+
+ return ly;
+}
+
+static Eina_Bool __cal_day_time_create_timeblock_with_idler(void *data)
+{
+ CAL_FN_START;
+
+ c_retv_if(!data, ECORE_CALLBACK_CANCEL);
+
+ struct _priv *p = data;
+
+ Evas_Coord_Rectangle r;
+ cal_util_get_geometry(&r, p->scroller);
+ evas_object_move(p->scroller, 0, r.y);
+
+ if (p->idler_for_time_block)
+ ecore_idler_del(p->idler_for_time_block);
+
+ if (p->left_time_block)
+ cal_time_block_delete_time_block(&p->left_time_block);
+
+ p->left_time_block = __cal_day_time_create_time_block_left_right(p, -1);
+
+ if (p->right_time_block)
+ cal_time_block_delete_time_block(&p->right_time_block);
+
+ p->right_time_block = __cal_day_time_create_time_block_left_right(p, 1);
+
+ __cal_day_time_move_side_time_block(p);
+
+ p->idler_for_time_block = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+
+void cal_day_time_update_time_block(Evas_Object *ly, struct tm *tm)
+{
+ CAL_FN_START;
+
+ c_ret_if(!ly);
+ c_ret_if(!tm);
+
+ struct _priv *p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name))
+ {
+ ERR("Invalid object");
+ return;
+ }
+
+ // TODO : check day and update
+ Eina_Bool d = p->tm.tm_year != tm->tm_year ||
+ p->tm.tm_mon != tm->tm_mon ||
+ p->tm.tm_mday != tm->tm_mday;
+
+ cal_time_block_clear_event(p->time_block);
+
+ p->tm = *tm;
+
+ __cal_day_time_add_events(p->time_block, p, tm);
+
+ cal_time_block_show_current_time_line(p->time_block, p->tm.tm_hour);
+
+ if (d)
+ {
+ if (p->idler_for_scrolling)
+ ecore_idler_del(p->idler_for_scrolling);
+ p->idler_for_scrolling = ecore_idler_add(__cal_day_time_scroll_bring_with_idler, p);
+ }
+
+ if (!p->idler_for_time_block)
+ p->idler_for_time_block = ecore_idler_add(__cal_day_time_create_timeblock_with_idler, p);
+}
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include "view.h"
+#include "detail.h"
+
+static const char *_name = "main/day";
+
+struct _priv {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+
+ Evas_Object *time_block; // layout
+
+ Evas_Object *genlist;
+ struct calsvc *csv;
+};
+
+static char* __cal_day_get_genlist_item_label(void *data, Evas_Object *obj, const char *part);
+static Elm_Genlist_Item_Class itc = {
+ .item_style = "dialogue/1text",
+ .func.text_get = __cal_day_get_genlist_item_label,
+};
+
+static void __cal_day_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ CAL_ASSERT(data);
+
+ struct _priv *p = data;
+
+ CALENDAR_SVC_FREE_CS(&p->csv);
+
+ free(p);
+}
+
+static char* __cal_day_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ struct tmnode *tm = (struct tmnode *)data;
+ const char *str;
+
+ if (!tm || !tm->cs)
+ return NULL;
+
+ if (!CAL_STRCMP(part, "elm.text")) {
+ str = CALENDAR_SVC_STRUCT_GET_STR(tm->cs, CAL_VALUE_TXT_SUMMARY);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
+ }
+
+ return NULL;
+}
+
+static void __cal_day_genlist_item_select_callback(void *data, Evas_Object *obj, void *ei)
+{
+ struct _priv *p;
+ struct tmnode* tm = (struct tmnode*)data;
+ cal_struct *cs = tm->cs;
+ Elm_Object_Item *it;
+ int idx;
+
+ it = elm_genlist_selected_item_get(obj);
+ if (it)
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ idx = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_INDEX);
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ CAL_ASSERT(p);
+
+ p->ad->cid = idx;
+ memcpy(p->ad->tm, tm, sizeof(struct tmnode));
+
+ cal_detail_create_view(p->ad, p->parent);
+}
+
+static void __cal_day_get_events(struct _priv *p)
+{
+ time_t st, et;
+
+ cal_util_get_day_time_t(&p->ad->base_tm, &st, &et);
+
+ p->csv = CALENDAR_SVC_GET_EVENT(p->ad->acct_id, st, et);
+}
+
+void cal_day_update_genlist(Evas_Object *ly)
+{
+ CAL_FN_START;
+
+ c_ret_if(!ly);
+
+ struct _priv *p = CAL_UTIL_GET_PRIV_DATA (ly);
+ c_ret_if(!p);
+ c_ret_if(!p->genlist);
+
+ Eina_List *l;
+ struct tmnode *tm;
+ int line;
+
+ elm_genlist_clear(p->genlist);
+ CALENDAR_SVC_FREE_CS(&p->csv);
+
+ __cal_day_get_events(p);
+
+ line = 0;
+ if (p->csv) {
+ EINA_LIST_FOREACH(p->csv->tmlist, l, tm) {
+ if(NULL != tm)
+ {
+ int allday = CALENDAR_SVC_STRUCT_GET_INT(tm->cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (allday) {
+ elm_genlist_item_append(p->genlist, &itc, tm, NULL,
+ ELM_GENLIST_ITEM_NONE, __cal_day_genlist_item_select_callback, tm);
+ line++;
+ }
+ }
+ }
+ }
+ if (line > 2)
+ line = 2;
+
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(p->ly), "go,line%d", line);
+}
+
+Evas_Object* cal_day_create_view(struct appdata *ad, Evas_Object *main)
+{
+ CAL_FN_START;
+
+ struct _priv *p;
+ Evas_Object *ly;
+ Evas_Object *genlist;
+ Evas_Object *time_block;
+
+ CAL_ASSERT(ad);
+
+ CAL_CALLOC(p, 1, struct _priv);
+
+ p->name = _name;
+ p->ad = ad;
+ p->parent = main;
+
+ ly = cal_util_add_layout(ad->nv, p->name);
+ CAL_ASSERT(ly);
+
+ p->ly = ly;
+ evas_object_data_set(ly, "priv", p);
+
+ genlist = elm_genlist_add(ly);
+ CAL_ASSERT(genlist);
+
+ p->genlist = genlist;
+ elm_object_part_content_set(ly, "list/sw", genlist);
+ evas_object_data_set(genlist, "priv", p);
+
+ time_block = cal_day_create_time_block(&ad->base_tm, ad, ly);
+ CAL_ASSERT (time_block);
+
+ p->time_block = time_block;
+ elm_object_part_content_set(ly, "cont/sw", time_block);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_day_delete_layout, p);
+
+ return ly;
+}
+
+void cal_day_update_view(Evas_Object *ly)
+{
+ CAL_FN_START;
+
+ struct _priv *p;
+
+ CAL_ASSERT(ly);
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name)) {
+ ERR("Invalid object");
+ return;
+ }
+
+ cal_day_update_genlist(ly);
+
+ cal_day_time_update_time_block(p->time_block, &p->ad->base_tm);
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include "view.h"
+#include "list.h"
+
+Evas_Object* cal_list_create_view(struct appdata *ad, Evas_Object *main)
+{
+ CAL_FN_START;
+
+ CAL_ASSERT(ad);
+
+ return cal_list_create_list(ad, main);
+}
+
+void cal_list_update_view(Evas_Object *ly)
+{
+ CAL_FN_START;
+
+ CAL_ASSERT(ly);
+
+ cal_list_update_list(ly);
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include "view.h"
+#include "detail.h"
+
+enum {
+ ST_PREV = -1,
+ ST_CURR = 0,
+ ST_NEXT = 1,
+};
+
+struct _day {
+ int enabled:1;
+ int checked:1;
+};
+
+typedef struct {
+ int cid;
+ int is_repeat;
+ int line;
+ int width;
+ int color;
+ int showed;
+ char title[512];
+ time_t start_time;
+ time_t end_time;
+}weekly_event;
+
+struct _priv {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly;
+ Evas_Object *month;
+ struct calsvc *csv;
+ Evas_Object *gl;
+ Evas_Object *popup;
+
+ int base_pos_for_weekly;
+ int index_for_press;
+ struct tm cur_tm;
+ struct _day day[42];
+ int pos_today;
+ int pos_selected;
+ int pos_start;
+ int pos_end;
+ int pos_down;
+ GList* list[7];
+ int weekline;
+ int down_x;
+ int down_y;
+};
+
+static const char *_name = NULL;
+static Calendar_color calendar_color;
+
+static Evas_Object *__cal_month_calendar_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part);
+static char* __cal_month_calendar_get_genlist_item_label(void *data, Evas_Object *obj, const char *part);
+static void __cal_month_calendar_signal_week(struct _priv *p,Evas_Object *eo);
+static int __cal_month_calendar_get_weekly_events(struct _priv *p);
+
+static Elm_Genlist_Item_Class itc = {
+ .item_style = "3text.5icon",
+ .func.content_get = __cal_month_calendar_get_genlist_item_icon,
+ .func.text_get = __cal_month_calendar_get_genlist_item_label,
+};
+
+static Evas_Object *__cal_month_calendar_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "data is null");
+ c_retvm_if(!obj, NULL, "obj is null");
+
+ struct tmnode *tm = data;
+ c_retvm_if(!tm->cs, NULL, "tm->cs is null");
+
+ struct _priv* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retvm_if(!p, NULL, "p is null");
+
+ int r;
+ Evas_Object *icon = NULL;
+ cal_struct *calendar = NULL;
+
+ if (!CAL_STRCMP(part, "elm.swallow.colorbar"))
+ {
+ r = CALENDAR_SVC_GET(CAL_STRUCT_CALENDAR, CALENDAR_SVC_STRUCT_GET_INT(tm->cs,CAL_VALUE_INT_CALENDAR_ID), NULL, &calendar);
+ if (r != CAL_SUCCESS)
+ {
+ ERR("CALENDAR_SVC_GET fail. %d", r);
+ return NULL;
+ }
+
+ icon = evas_object_rectangle_add(evas_object_evas_get(obj));
+ evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ CALENDAR_SVC_GET_CALENDAR_COLOR(calendar, &calendar_color);
+
+ evas_object_color_set(icon, calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);
+
+ CALENDAR_SVC_STRUCT_FREE(&calendar);
+
+ return icon;
+ }
+
+ return NULL;
+}
+
+static void __cal_month_calendar_make_time_text(time_t t, struct tm *tm, char *buf, int sz)
+{
+ struct tm ttm;
+ const char* date;
+ const char* time;
+
+ localtime_r(&t, &ttm);
+
+ time = CAL_UTIL_TIME_FORMAT_6;
+
+ if (ttm.tm_year != tm->tm_year)
+ date = CAL_UTIL_DATE_FORMAT_11;
+ else if (ttm.tm_mon != tm->tm_mon)
+ date = CAL_UTIL_DATE_FORMAT_10;
+ else if (ttm.tm_mday != tm->tm_mday)
+ date = CAL_UTIL_DATE_FORMAT_9;
+ else
+ date = NULL;
+
+ cal_util_get_time_text(buf, sz, NULL, time, &ttm);
+}
+
+
+static char* __cal_month_calendar_get_time_text(struct tmnode *tm, struct _priv *p)
+{
+ char buf[512];
+ char stime[512];
+
+ __cal_month_calendar_make_time_text(tm->st, &p->ad->base_tm, stime, sizeof(stime));
+
+ snprintf(buf, sizeof(buf), "%s", stime);
+
+ return strdup(buf);
+}
+
+static char* __cal_month_calendar_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data, NULL, "data is null");
+
+ const char *str;
+
+ struct tmnode *tm = data;
+ c_retvm_if(!tm->cs, NULL, "tm->cs is null");
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(tm->cs, CAL_VALUE_TXT_SUMMARY);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
+ }
+ else if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(tm->cs, CAL_VALUE_TXT_LOCATION);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_LOCATION_SELECTED"));
+ }
+ else if (!CAL_STRCMP(part, "elm.text.3"))
+ {
+ int allday = CALENDAR_SVC_STRUCT_GET_INT(tm->cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (allday)
+ return strdup(C_("IDS_COM_BODY_ALL_DAY"));
+
+ struct _priv *p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retvm_if(!p, NULL, "p is null");
+
+ return __cal_month_calendar_get_time_text(tm, p);
+ }
+
+ return NULL;
+}
+
+static int __cal_month_calendar_get_first_wday(int mday, int wday)
+{
+ return CAL_UTIL_GET_WDAY(wday - mday + 1);
+}
+
+static void __cal_month_calendar_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+ struct _priv *p = data;
+
+ struct appdata *ad = p->ad;
+ c_retm_if(!ad, "ad is null");
+
+ if (ad->today_edj && ad->today_edj == CAL_UTIL_GET_EDJ_DATA(obj))
+ ad->today_edj = NULL;
+
+ if (p->popup) {
+ evas_object_del(p->popup);
+ }
+
+ free(p);
+
+ CAL_FN_END;
+}
+
+static inline void __cal_month_calendar_set_color(Evas_Object *ly, int pos, int wday)
+{
+ const char *p;
+
+ switch (wday) {
+ case 0: p = "sunday"; break;
+ case 6: p = "satday"; break;
+ default: p = "weekday";
+ }
+
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "%s,%d", p, pos);
+}
+
+static inline void __cal_month_calendar_set_disabled(Evas_Object *ly, struct _priv *p, int pos)
+{
+ struct _day *d = &p->day[pos];
+
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "disable,%d", pos);
+
+ d->enabled = 0;
+}
+
+static inline void __cal_month_calendar_set_enabled(Evas_Object *ly, struct _priv *p, int pos, int wday)
+{
+ struct _day *d = &p->day[pos];
+
+ if (!d->enabled) {
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "enable,%d", pos);
+
+ __cal_month_calendar_set_color(ly, pos, wday);
+ d->enabled = 1;
+ }
+}
+
+static inline void __cal_month_calendar_set_today(Evas_Object *eo, int pos)
+{
+ if (pos == -1)
+ return;
+
+ cal_util_emit_signal(eo, "today,%d", pos);
+}
+
+static inline void __cal_month_calendar_unset_today(Evas_Object *eo, int *pos)
+{
+ if (*pos == -1)
+ return;
+
+ cal_util_emit_signal(eo, "notoday,%d", *pos);
+ *pos = -1;
+}
+
+static inline void __cal_month_calendar_set_focuse_week(struct _priv *p,Evas_Object *eo, int pos)
+{
+ if (pos == -1)
+ return;
+
+ int i = 0;
+
+ cal_util_emit_signal(eo, "today,%d", p->pos_today);
+
+ if(pos >= 0 && pos <= 6)//line 1
+ {
+ for(i=0; i<=41; i++)
+ {
+ if(i >= 0 && i <= 6)
+ {
+ cal_util_emit_signal(eo, "week,%d", i);
+ cal_util_emit_signal(eo, "uncheck,%d", i);
+ cal_util_emit_signal(eo, "unselect,%d", i);
+ p->base_pos_for_weekly = 0;
+ }
+ else
+ {
+ cal_util_emit_signal(eo, "noweek,%d", i);
+ if( -1 == p->day[i].checked)
+ {
+ cal_util_emit_signal(eo, "check,%d", i);
+ }
+ }
+ }
+ }
+ else if(pos >= 7 && pos <= 13)//line 2
+ {
+ for(i=0; i<=41; i++)
+ {
+ if(i >= 7 && i <= 13)
+ {
+ cal_util_emit_signal(eo, "week,%d", i);
+ cal_util_emit_signal(eo, "uncheck,%d", i);
+ cal_util_emit_signal(eo, "unselect,%d", i);
+ p->base_pos_for_weekly = 7;
+ }
+ else
+ {
+ cal_util_emit_signal(eo, "noweek,%d", i);
+ if( -1 == p->day[i].checked)
+ {
+ cal_util_emit_signal(eo, "check,%d", i);
+ }
+ }
+ }
+ }
+ else if(pos >= 14 && pos <= 20)//line 3
+ {
+ for(i=0; i<=41; i++)
+ {
+ if(i >= 14 && i <= 20)
+ {
+ cal_util_emit_signal(eo, "week,%d", i);
+ cal_util_emit_signal(eo, "uncheck,%d", i);
+ cal_util_emit_signal(eo, "unselect,%d", i);
+ p->base_pos_for_weekly = 7*2;
+ }
+ else
+ {
+ cal_util_emit_signal(eo, "noweek,%d", i);
+ if( -1 == p->day[i].checked)
+ {
+ cal_util_emit_signal(eo, "check,%d", i);
+ }
+ }
+ }
+ }
+ else if(pos >= 21 && pos <= 27)//line 4
+ {
+ for(i=0; i<=41; i++)
+ {
+ if(i >= 21 && i <= 27)
+ {
+ cal_util_emit_signal(eo, "week,%d", i);
+ cal_util_emit_signal(eo, "uncheck,%d", i);
+ cal_util_emit_signal(eo, "unselect,%d", i);
+ p->base_pos_for_weekly = 7*3;
+
+ }
+ else
+ {
+ cal_util_emit_signal(eo, "noweek,%d", i);
+
+ if( -1 == p->day[i].checked)
+ {
+ cal_util_emit_signal(eo, "check,%d", i);
+ }
+ }
+ }
+ }
+ else if(pos >= 28 && pos <= 34)//line 5
+ {
+ for(i=0; i<=41; i++)
+ {
+ if(i >= 28 && i <= 34)
+ {
+ cal_util_emit_signal(eo, "week,%d", i);
+ cal_util_emit_signal(eo, "uncheck,%d", i);
+ cal_util_emit_signal(eo, "unselect,%d", i);
+ p->base_pos_for_weekly = 7*4;
+ }
+ else
+ {
+ cal_util_emit_signal(eo, "noweek,%d", i);
+ if( -1 == p->day[i].checked)
+ {
+ cal_util_emit_signal(eo, "check,%d", i);
+ }
+ }
+ }
+ }
+ else if(pos >= 35 && pos <= 41)//line 6
+ {
+ for(i=0; i<=41; i++)
+ {
+ if(i >= 35 && i <= 41)
+ {
+ cal_util_emit_signal(eo, "week,%d", i);
+ cal_util_emit_signal(eo, "uncheck,%d", i);
+ cal_util_emit_signal(eo, "unselect,%d", i);
+ p->base_pos_for_weekly = 7*5;
+ }
+ else
+ {
+ cal_util_emit_signal(eo, "noweek,%d", i);
+ if( -1 == p->day[i].checked)
+ {
+ cal_util_emit_signal(eo, "check,%d", i);
+ }
+ }
+ }
+ }
+}
+
+
+static inline void __cal_month_calendar_set_selected(Evas_Object *eo, int pos)
+{
+ if (pos < 0 || pos >= 42)
+ return;
+
+ cal_util_emit_signal(eo, "select,%d", pos);
+}
+
+static inline void __cal_month_calendar_set_unselected(Evas_Object *eo, int *pos)
+{
+ if (*pos == -1)
+ return;
+
+ cal_util_emit_signal(eo, "unselect,%d", *pos);
+ *pos = -1;
+}
+
+static inline int __cal_month_calendar_get_start_day(int *st, struct tm *t, int start, int max)
+{
+ int day;
+ int prev_day;
+
+ prev_day = CAL_UTIL_GET_WDAY(__cal_month_calendar_get_first_wday(t->tm_mday, t->tm_wday) - start);
+ if (prev_day > 0) {
+ day = max - prev_day + 1;
+ *st = ST_PREV;
+ } else {
+ day = 1;
+ *st = ST_CURR;
+ }
+
+ return day;
+}
+
+static int __cal_month_calendar_update_today(Evas_Object *eo, struct _priv *p)
+{
+
+ struct appdata *ad = p->ad;
+ struct tm *t = &p->cur_tm;
+
+ CAL_ASSERT(ad);
+
+ __cal_month_calendar_unset_today(eo, &p->pos_today);
+ ad->today_edj = NULL;
+
+ if (t->tm_year == ad->today_tm.tm_year && t->tm_mon == ad->today_tm.tm_mon)
+ {
+ p->pos_today = p->pos_start + ad->today_tm.tm_mday - 1;
+ __cal_month_calendar_set_today(eo, p->pos_today);
+ ad->today_edj = eo;
+ }
+
+ return 0;
+}
+
+void cal_month_calendar_update_select(Evas_Object *ly)
+{
+ CAL_ASSERT(ly);
+ Evas_Object* eo = CAL_UTIL_GET_EDJ_DATA(ly);
+
+ struct _priv* p = CAL_UTIL_GET_PRIV_DATA(ly);
+ CAL_ASSERT(p);
+ CAL_ASSERT(p->ad);
+
+ cal_main_update_title_text(p->ad->title, CV_MONTH, &p->ad->base_tm, p->ad->wday_start);
+
+ __cal_month_calendar_set_unselected(eo, &p->pos_selected);
+ p->pos_selected = p->pos_start + p->ad->base_tm.tm_mday - 1;
+ __cal_month_calendar_set_selected(eo, p->pos_selected);
+
+ if(p->ad->is_weekly)
+ {
+ __cal_month_calendar_get_weekly_events(p);
+ __cal_month_calendar_set_focuse_week(p, eo, p->pos_selected);
+ __cal_month_calendar_signal_week(p,CAL_UTIL_GET_EDJ_DATA(p->ly));
+ }
+}
+
+static void __cal_month_calendar_get_simple_check(struct _priv *p, time_t st, time_t et, char *map, int map_sz)
+{
+ int* month;
+ int i = 0;
+ month = CALENDAR_SVC_GET_SIMPLE_CS(p->ad->acct_id, st, et);
+ if (!month)
+ return;
+
+ for (i = 0; i < cal_util_get_max_days(p->cur_tm.tm_year, p->cur_tm.tm_mon); i++)
+ {
+ if(month[i])
+ map[i] = month[i];
+ }
+
+ free(month);
+}
+
+static void __cal_month_calendar_update_check(Evas_Object *ly, struct _priv *p)
+{
+ time_t st, et;
+ int r, i;
+ char m[42] = { 0 }; // change to bitmap??
+ int max;
+ char part[32] = {0};
+ char text[32] = {0};
+
+ r = cal_util_get_month_time_t(&p->cur_tm, &st, &et);
+ if (r == -1)
+ {
+ ERR("Invalid time conversion");
+ return;
+ }
+
+ max = cal_util_get_max_days(p->cur_tm.tm_year, p->cur_tm.tm_mon);
+
+ __cal_month_calendar_get_simple_check(p, st, et, &m[p->pos_start], max);
+
+ for (i = 0; i < 42; i++)
+ {
+ if (m[i])
+ {
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "check,%d", i);
+ p->day[i].checked = 1;
+
+ memset(part,0x00, sizeof part);
+ memset(text,0x00, sizeof text);
+
+ snprintf(part,sizeof part,"db/%d/text_on_check",i);
+ snprintf(text,sizeof text,"%d",m[i]>99?99:m[i]);
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(ly),part,text);
+ }
+ else
+ {
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "uncheck,%d", i);
+ p->day[i].checked = 0;
+ }
+ }
+}
+
+static int __cal_month_calendar_fill_calendar(Evas_Object *ly, struct tm *t, int start)
+{
+ struct _priv *p;
+ int line = 6; // default
+ int prev_max, cur_max;
+ int day, i, st, wday;
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ CAL_ASSERT(p);
+
+ p->cur_tm = *t;
+
+ prev_max = cal_util_get_max_days(t->tm_year, t->tm_mon - 1);
+ cur_max = cal_util_get_max_days(t->tm_year, t->tm_mon);
+
+ day = __cal_month_calendar_get_start_day(&st, t, start, prev_max);
+ wday = start;
+ p->pos_start = 0;
+ p->pos_end = 41;
+
+ for (i = 0; i < 42; i++)
+ {
+ cal_util_set_text(CAL_UTIL_GET_EDJ_DATA(ly), cal_util_get_part_text("db/%d/text", i), "%d", day);
+
+ switch (st)
+ {
+ case ST_PREV:
+ __cal_month_calendar_set_disabled(ly, p, i);
+ if (day == prev_max)
+ {
+ st = ST_CURR;
+ day = 0;
+ p->pos_start = i + 1;
+ }
+ break;
+
+ case ST_CURR:
+ __cal_month_calendar_set_enabled(ly, p, i, wday);
+ if (day == cur_max)
+ {
+ st = ST_NEXT;
+ day = 0;
+ line = (int)(i / 7) + 1;
+ p->pos_end = i;
+ }
+ break;
+
+ case ST_NEXT:
+ __cal_month_calendar_set_disabled(ly, p, i);
+ break;
+ }
+
+ day++;
+ wday = CAL_UTIL_GET_WDAY(wday + 1);
+ }
+
+ __cal_month_calendar_update_today(CAL_UTIL_GET_EDJ_DATA(ly), p);
+
+ return line;
+}
+
+static void __cal_month_calendar_click_event_callback(struct _priv *p, Evas_Object *obj, int pos)
+{
+ CAL_ASSERT(p);
+
+ struct appdata *ad = p->ad;
+ CAL_ASSERT(ad);
+
+ if (p->pos_selected == pos) {
+ DBG("cal_cb: double clicked %d", pos);
+
+ if (p->ad->is_weekly)
+ return;
+
+ if (p->day[pos].checked) {
+ cal_main_change_view(p->parent, CV_DAY);
+ }
+ else {
+ p->ad->base_hour = -1;
+ p->ad->cid = 0; // new
+ cal_edit_create_view(p->ad, p->parent);
+ }
+ return;
+ }
+
+ p->cur_tm.tm_mday = pos - p->pos_start + 1;
+ ad->base_tm = p->cur_tm;
+
+ cal_month_calendar_update_select(p->month);
+ edje_object_signal_emit(obj, "changed", "prog");
+}
+
+static void __cal_month_calendar_cal_event_callback(void *data, Evas_Object *obj, const char *e, const char *src)
+{
+ struct _priv *p = data;
+ c_retm_if(!p, "p is null");
+
+ struct appdata *ad = p->ad;
+ c_retm_if(!ad, "ad is null");
+
+ int pos = atoi(&e[3]);
+
+ if (!strncmp(e, "up,", 3))
+ {
+ if (p->pos_down == pos)
+ __cal_month_calendar_click_event_callback(p, obj, pos);
+
+ edje_object_signal_emit(obj, e, "prog");
+
+ return;
+ }
+
+ if (!strncmp(e, "dn,", 3))
+ {
+ p->pos_down = pos;
+
+ edje_object_signal_emit(obj, e, "prog");
+
+ return;
+ }
+}
+
+static void __cal_month_calendar_prog_event_callback(void *data, Evas_Object *obj, const char *e, const char *src)
+{
+ struct _priv *p = data;
+
+ if (!CAL_STRCMP(e, "update_today")) {
+ __cal_month_calendar_update_today(obj, p);
+ return;
+ }
+
+ if (CAL_STRCMP(e, "moved")) {
+ return;
+ }
+
+ if (p->pos_down == -1) {
+ return;
+ }
+
+ cal_util_emit_signal(obj, "up,%d", p->pos_down);
+ p->pos_down = -1;
+}
+
+static void __cal_month_calendar_set_wday_text(Evas_Object *ly, int start)
+{
+ int i;
+ struct tm t = { 0, };
+ struct _priv* p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if(!p)
+ {
+ ERR("p is null");
+ return;
+ }
+
+ t = p->ad->base_tm;
+
+ cal_util_update_tm_day(&t, t.tm_wday*(-1)+start);
+
+ if (!t.tm_wday)
+ {
+ for (i = 0; i < 7; i++) {
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(ly), cal_util_get_part_text("wday/%d/text", i), CAL_UTIL_DATE_FORMAT_2, NULL, &t);
+
+ if (t.tm_wday == 6) {
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "satday,%d", i);
+ cal_util_update_tm_day(&t, t.tm_wday*(-1));
+ continue;
+ }
+
+ if (t.tm_wday == 0)
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "sunday,%d", i);
+
+ cal_util_update_tm_day(&t, 1);
+ }
+ }
+ else
+ {
+ for (i = 0; i < 7; i++) {
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(ly), cal_util_get_part_text("wday/%d/text", i), CAL_UTIL_DATE_FORMAT_2, NULL, &t);
+
+ if (t.tm_wday == 6)
+ {
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "satday,%d", i);
+ cal_util_update_tm_day(&t, t.tm_wday*(-1));
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(ly), cal_util_get_part_text("wday/%d/text", ++i), CAL_UTIL_DATE_FORMAT_2, NULL, &t);
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "sunday,%d", i);
+ }
+
+ cal_util_update_tm_day(&t, 1);
+ }
+ }
+}
+
+static gint __cal_month_calendar_events_compare(gconstpointer a,gconstpointer b)
+{
+ weekly_event *p1 = (weekly_event *)a;
+ weekly_event *p2 = (weekly_event *)b;
+
+ if (p2->start_time < p1->start_time)
+ return 1;
+ else if(p1->start_time < p2->start_time)
+ return -1;
+ else
+ return 0;
+}
+
+static void __cal_month_calendar_signal_clean(struct _priv *p,Evas_Object *eo)
+{
+ int i = 0;
+ int line = 0;
+
+ for(i=0; i<7; i++)
+ {
+ for(line=1; line<7; line++)
+ {
+ cal_util_emit_signal(eo,"%d,%d,%d",line,0,i);
+ cal_util_emit_signal(eo,"%d,%s,%d",line,"nocolor",i);
+ }
+ }
+
+}
+
+static int __cal_month_calendar_clean_list(struct _priv *p)
+{
+ int i = 0;
+
+ if(NULL == p)
+ {
+ return -1;
+ }
+
+ for(i=0; i<7; i++)
+ {
+ g_list_free(p->list[i]);
+ p->list[i] = NULL;
+ }
+ return 0;
+}
+
+static int __cal_month_calendar_get_week_time(struct _priv *p, int *first_day, int *last_day)
+{
+ int day = 0;
+ int today = 0;
+ int start_day = 0;
+
+ if(-1 == p->pos_selected)
+ {
+ day = p->pos_today;
+ }
+ else
+ {
+ day = p->pos_selected;
+ }
+
+ today = day - p->pos_start + 1;
+ start_day = day - (day+1)%7 +1;
+
+ if(day <= 6)
+ {
+ *first_day = 1;
+ *last_day = 6 - p->pos_start + 1;
+ }
+ else if(0 == (day+1)%7)
+ {
+ *first_day = today - 6;
+ *last_day = today;
+ }
+ else
+ {
+ *first_day = today - day%7;
+ if(start_day+6 > p->pos_end)
+ {
+ *last_day = p->pos_end - p->pos_start + 1;
+ }
+ else
+ {
+ *last_day = *first_day + 6;
+ }
+ }
+
+ return 0;
+}
+
+static bool __cal_month_calendar_is_last(GList** list)
+{
+ int i = 0;
+
+ if (!list)
+ return FALSE;
+
+ for (i=0; i<7; i++) {
+ if (list[i])
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void __cal_month_calendar_line_arrange(GList** list,int index,const int line)
+{
+ weekly_event *temp = NULL;
+ GList *list_temp = list[index];
+
+ if (list_temp && list_temp->data) {
+ temp = list_temp->data;
+ temp->line = line;
+ temp->showed = 1;
+
+ if (0 == temp->width)
+ temp->width = 1;
+
+ if (7 <= index + temp->width)
+ return;
+
+ __cal_month_calendar_line_arrange(list, index + temp->width, line);
+ }
+ else {
+ if (7 <= index + 1)
+ return;
+
+ __cal_month_calendar_line_arrange(list, index + 1, line);
+ }
+}
+
+static void __cal_month_calendar_get_next(GList** list)
+{
+ c_retm_if(!list, "list is null");
+
+ int i = 0;
+ weekly_event *temp = NULL;
+
+ for (i=0;i<7;i++) {
+
+ if (list[i] && list[i]->data) {
+
+ temp = (weekly_event*)list[i]->data;
+
+ if (temp->showed)
+ list[i] = list[i]->next;
+ }
+ }
+}
+
+static int __cal_month_calendar_get_weekly_events(struct _priv *p)
+{
+ c_retvm_if(!p, -1, "p is null");
+
+ int i = 0;
+ int start_i = 0;
+ int line = 1;
+ int start_day = 0;
+ int end_day = 0;
+ int day_num = 0;
+ cal_iter *iter = NULL;
+ cal_struct *record = NULL;
+ weekly_event *event = NULL;
+ struct tm end_time = {0};
+ struct tm start_time = {0};
+ struct tm st = {0};
+ struct tm et = {0};
+ time_t ls, le;
+ int index = 0;
+
+ //clean
+ __cal_month_calendar_signal_clean(p,CAL_UTIL_GET_EDJ_DATA(p->ly));
+
+ //free the list if not NULL
+ __cal_month_calendar_clean_list(p);
+
+ //calculate the time of this week
+ __cal_month_calendar_get_week_time(p,&start_day,&end_day);
+
+ day_num = end_day - start_day + 1;
+ if (day_num < 7) {
+ if (end_day < 7)
+ start_i = 7 - day_num;
+ }
+ else {
+ start_i = 0;
+ }
+
+ memcpy(&start_time, &p->cur_tm, sizeof(struct tm));
+ memcpy(&end_time, &p->cur_tm, sizeof(struct tm));
+
+ start_time.tm_mday = start_day;
+ start_time.tm_hour = 0;
+ start_time.tm_min = 0;
+ start_time.tm_sec = 0;
+
+ end_time.tm_mday = end_day;
+ end_time.tm_hour = 23;
+ end_time.tm_min = 59;
+ end_time.tm_sec = 59;
+
+ ls = mktime(&start_time);
+ le = mktime(&end_time);
+
+ if (CAL_SUCCESS != CALENDAR_SVC_GET_EVENT_LIST_BY_PERIOD(0,ls,le,&iter))
+ return -1;
+
+ record = CALENDAR_SVC_STRUCT_NEW("schedule");
+
+ while (CAL_SUCCESS == CALENDAR_SVC_ITER_NEXT(iter)) {
+
+ CALENDAR_SVC_ITER_GET_INFO(iter,&record);
+
+ memset(&st,0x00,sizeof(struct tm));
+ memset(&et,0x00,sizeof(struct tm));
+
+ while (CAL_SUCCESS == CALENDAR_SVC_UTIL_NEXT_VAILD_EVENT_TM(record,&start_time,&end_time,&st,&et)) {
+
+ if (end_day < st.tm_mday)
+ break;
+
+ if (et.tm_mday < start_day)
+ continue;
+
+ if (st.tm_mday < start_day)
+ st.tm_mday = start_day;
+
+ if (et.tm_mday > end_day)
+ et.tm_mday = end_day;
+
+ //get the info
+ event = (weekly_event*)calloc(1, sizeof(weekly_event));
+ c_retvm_if(!event, -1, "event is null");
+
+ event->cid = CALENDAR_SVC_STRUCT_GET_INT(record,"index");
+
+ g_snprintf(event->title, sizeof(event->title), CALENDAR_SVC_STRUCT_GET_STR(record,"summary"));
+
+ event->is_repeat = 1;
+ event->start_time = mktime(&st);
+ event->end_time = mktime(&et);
+ event->width = et.tm_mday - st.tm_mday + 1;
+ if (event->width < 1)
+ event->width = 1;
+
+ index = st.tm_mday - start_day + start_i;
+
+ if (6 < index)
+ index = 6;
+ else if (index < 0)
+ index = 0;
+
+ p->list[index] = g_list_append(p->list[index],event);
+ }
+ }
+
+ if (record)
+ CALENDAR_SVC_STRUCT_FREE(&record);
+
+ if (iter)
+ CALENDAR_SVC_ITER_REMOVE(&iter);
+
+ for (i=start_i; i < day_num; i++) {
+ if (p->list[i])
+ p->list[i] = g_list_sort(p->list[i], __cal_month_calendar_events_compare);
+ }
+
+ GList* list_t[7];
+
+ for (i=0; i < 7; i++)
+ list_t[i] = p->list[i];
+
+ //calculate the line of each event
+ while (__cal_month_calendar_is_last(p->list)) {
+
+ __cal_month_calendar_line_arrange(p->list, 0, line);
+
+ line++;
+
+ if (5 < line)
+ break;
+
+ __cal_month_calendar_get_next(p->list);
+ }
+
+ for (i=0; i < 7; i++)
+ p->list[i] = list_t[i];
+
+ //free the memory
+ if (record)
+ CALENDAR_SVC_STRUCT_FREE(&record);
+
+ return 0;
+}
+
+static void __cal_month_calendar_signal_week(struct _priv *p,Evas_Object *eo)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!eo, "eo is null");
+
+ int i = 0;
+ weekly_event *temp = NULL;
+ char text[20] = {0};
+ char *color[4] = {"green","blue","red","purple"};
+ int color_index = -1;
+ GList* list = NULL;
+
+ for (i=0; i<7; i++) {
+
+ if (!p->list[i])
+ continue;
+
+ list = g_list_first( p->list[i]);
+ while (list && list->data) {
+ color_index++;
+ temp = list->data;
+
+ cal_util_emit_signal(eo,"%d,%d,%d",temp->line,temp->width,i);
+ if (0 == temp->is_repeat)
+ cal_util_emit_signal(eo,"%d,%s,%d",temp->line,color[color_index%4],i);
+ else {
+ cal_util_emit_signal(eo,"%d,%s,%d",temp->line,color[(temp->cid)%4],i);
+ color_index = (temp->cid)%4;
+ }
+
+ memset(text,0x00,sizeof(text));
+ g_snprintf(text,sizeof(text),"%d/text/%d",temp->line,i);
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(p->ly), text, temp->title);
+
+ list = list->next;
+ }
+ }
+}
+
+static void __cal_month_calendar_mouse_down(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ struct _priv *p = data;
+ Evas_Event_Mouse_Down *ev = ei;
+ char eve[8] = {0};
+ int offset = 0;
+
+ Evas_Coord_Rectangle r;
+ cal_util_get_geometry (&r, ly);
+ offset = ev->canvas.x/(r.w/7);
+ if (6 < offset)
+ offset = 6;
+
+ p->down_x = ev->canvas.x;
+ p->down_y = ev->canvas.y;
+
+ if ( -1 == p->day[p->base_pos_for_weekly + offset].enabled) {
+ p->index_for_press = p->base_pos_for_weekly + offset;
+ snprintf(eve, sizeof(eve) , "dn,%d", p->index_for_press);
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->month), eve, "prog");
+ }
+}
+
+static void __cal_month_calendar_mouse_move(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ struct _priv *p = data;
+ char eve[8] = {0};
+
+ if( -1 != p->index_for_press)
+ {
+ snprintf(eve, sizeof(eve) , "up,%d", p->index_for_press);
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->month), eve, "prog");
+ p->index_for_press = -1;
+ }
+}
+
+static bool __cal_month_calendar_event_exists(GList** list,int index)
+{
+ int i = 0;
+ GList *list_temp = NULL;
+ weekly_event *event = NULL;
+
+ for(i=0; i<=index; i++)
+ {
+ if(NULL == list[i])
+ {
+ continue;
+ }
+
+ list_temp = g_list_first(list[i]);
+ while(NULL != list_temp)
+ {
+ event = list_temp->data;
+ if(NULL == event)
+ {
+ list_temp = g_list_next(list_temp);
+ continue;
+ }
+ if(event->width >= index - i + 1)
+ {
+ return TRUE;
+ }
+ list_temp = g_list_next(list_temp);
+ }
+ }
+
+ return FALSE;
+}
+
+static void __cal_month_calendar_genlist_item_select_callback(void *data, Evas_Object *obj, void *ei)
+{
+ struct tmnode* tm = data;
+ cal_struct *cs = tm->cs;
+ int idx;
+ Elm_Object_Item *it;
+ struct _priv *p;
+ int repeat;
+
+ it = elm_genlist_selected_item_get(obj);
+ if (it)
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ idx = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_INDEX);
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ CAL_ASSERT(p);
+
+ repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+ if (repeat) {
+ memcpy(p->ad->tm, tm, sizeof(struct tmnode));
+ }
+
+ p->ad->cid = idx;
+
+ cal_detail_create_view(p->ad, p->parent);
+
+ if (p->popup) {
+ evas_object_hide(p->popup);
+ }
+}
+
+static void __cal_month_calendar_get_events(struct _priv *p)
+{
+ time_t st, et;
+
+ cal_util_get_day_time_t(&p->ad->base_tm, &st, &et);
+
+ p->csv = CALENDAR_SVC_GET_EVENT(p->ad->acct_id, st, et);
+}
+
+static void __cal_month_calendar_update_genlist(struct _priv *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "p is null");
+ c_retm_if(!p->gl, "p->gl is null");
+
+ Eina_List *l;
+ struct tmnode *tm;
+ Elm_Object_Item *it = NULL;
+ elm_genlist_clear(p->gl);
+
+ CALENDAR_SVC_FREE_CS(&p->csv);
+
+ __cal_month_calendar_get_events(p);
+ c_retm_if(!p->csv, "p->csv is null");
+
+ EINA_LIST_FOREACH(p->csv->tmlist, l, tm) {
+ if (tm) {
+ it = elm_genlist_item_append(p->gl, &itc, tm, NULL, ELM_GENLIST_ITEM_NONE, __cal_month_calendar_genlist_item_select_callback, tm);
+ c_retm_if(!it, "elm_genlist_item_append() returned null");
+ }
+ }
+
+ CAL_FN_END;
+}
+
+static void __cal_month_calendar_popup_delete_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+
+ struct _priv* p = data;
+
+ p->popup = NULL;
+ p->gl = NULL;
+}
+
+void __cal_month_calendar_events_of_one_weekday(void *data)
+{
+ c_retm_if(!data, "data is null");
+
+ struct _priv *p = data;
+ c_retm_if(!p->parent, "p->parent is null");
+
+ char title[1024] = {0};
+
+ cal_util_get_time_text(title, sizeof(title), CAL_UTIL_DATE_FORMAT_13, NULL, &p->ad->base_tm);
+
+ if (!p->popup) {
+ p->popup = cal_util_add_popup(p->parent, title, NULL, NULL, NULL, S_("IDS_COM_BODY_CLOSE"), NULL);
+ c_retm_if(!p->popup, "cal_util_add_popup returned null");
+
+ elm_object_style_set(p->popup,"menustyle");
+
+ evas_object_event_callback_add(p->popup, EVAS_CALLBACK_DEL, __cal_month_calendar_popup_delete_callback, p);
+ }
+
+ if (!p->gl) {
+ p->gl = elm_genlist_add(p->popup);
+ evas_object_data_set(p->gl, "priv", p);
+ evas_object_show(p->gl);
+ elm_object_content_set(p->popup, p->gl);
+ }
+
+ __cal_month_calendar_update_genlist(p);
+}
+
+static void __cal_month_calendar_mouse_up(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ struct _priv *p = data;
+ Evas_Event_Mouse_Down *ev = ei;
+ int start_day = 0;
+ int end_day = 0;
+ int num_of_enable = 0;
+ char eve[8] = {0};
+
+ if (ev->canvas.x != p->down_x && ev->canvas.y != p->down_y)
+ return;
+
+ Evas_Coord_Rectangle r;
+ cal_util_get_geometry (&r, ly);
+ int day_width = r.w/7;
+
+ __cal_month_calendar_get_week_time(p,&start_day,&end_day);
+
+ if(7 != (num_of_enable = end_day - start_day + 1))
+ {
+ if(end_day < 7)
+ {
+ if(ev->canvas.x < (7 - num_of_enable) * day_width)
+ {
+ return;
+ }
+ start_day -= (7 - num_of_enable);
+ }
+ else if(start_day > 7)
+ {
+ if(ev->canvas.x > num_of_enable * day_width)
+ {
+ return;
+ }
+ }
+ }
+
+ if(ev->canvas.x > 0 && ev->canvas.x < 1*day_width)
+ {
+ p->ad->base_tm.tm_mday = start_day;
+
+ if(!__cal_month_calendar_event_exists(p->list,0))
+ {
+ p->ad->base_hour = -1;
+ p->ad->cid = 0; // new
+ cal_edit_create_view(p->ad, p->parent);
+ }
+ else
+ {
+ __cal_month_calendar_events_of_one_weekday(p);
+ }
+ }
+ else if(ev->canvas.x > 1*day_width && ev->canvas.x < 2*day_width)
+ {
+ p->ad->base_tm.tm_mday = start_day+1;
+ if(!__cal_month_calendar_event_exists(p->list,1))
+ {
+ p->ad->base_hour = -1;
+ p->ad->cid = 0; // new
+ cal_edit_create_view(p->ad, p->parent);
+ }
+ else
+ {
+ __cal_month_calendar_events_of_one_weekday(p);
+ }
+ }
+ else if(ev->canvas.x > 2*day_width && ev->canvas.x < 3*day_width)
+ {
+ p->ad->base_tm.tm_mday = start_day+2;
+ if(!__cal_month_calendar_event_exists(p->list,2))
+ {
+ p->ad->base_hour = -1;
+ p->ad->cid = 0; // new
+ cal_edit_create_view(p->ad, p->parent);
+ }
+ else
+ {
+ __cal_month_calendar_events_of_one_weekday(p);
+ }
+ }
+ else if(ev->canvas.x > 3*day_width && ev->canvas.x < 4*day_width)
+ {
+ p->ad->base_tm.tm_mday = start_day+3;
+ if(!__cal_month_calendar_event_exists(p->list,3))
+ {
+ p->ad->base_hour = -1;
+ p->ad->cid = 0; // new
+ cal_edit_create_view(p->ad, p->parent);
+ }
+ else
+ {
+ __cal_month_calendar_events_of_one_weekday(p);
+ }
+ }
+ else if(ev->canvas.x > 4*day_width && ev->canvas.x < 5*day_width)
+ {
+ p->ad->base_tm.tm_mday = start_day+4;
+ if(!__cal_month_calendar_event_exists(p->list,4))
+ {
+ p->ad->base_hour = -1;
+ p->ad->cid = 0; // new
+ cal_edit_create_view(p->ad, p->parent);
+ }
+ else
+ {
+ __cal_month_calendar_events_of_one_weekday(p);
+ }
+ }
+ else if(ev->canvas.x > 5*day_width && ev->canvas.x < 6*day_width)
+ {
+ p->ad->base_tm.tm_mday = start_day+5;
+ if(!__cal_month_calendar_event_exists(p->list,5))
+ {
+ p->ad->base_hour = -1;
+ p->ad->cid = 0; // new
+ cal_edit_create_view(p->ad, p->parent);
+ }
+ else
+ {
+ __cal_month_calendar_events_of_one_weekday(p);
+ }
+ }
+ else
+ {
+ p->ad->base_tm.tm_mday = start_day+6;
+ if(!__cal_month_calendar_event_exists(p->list,6))
+ {
+ p->ad->base_hour = -1;
+ p->ad->cid = 0; // new
+ cal_edit_create_view(p->ad, p->parent);
+ }
+ else
+ {
+ __cal_month_calendar_events_of_one_weekday(p);
+ }
+ }
+
+ if(-1 != p->index_for_press)
+ {
+ snprintf(eve, sizeof(eve) , "up,%d", p->index_for_press);
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->month), eve, "prog");
+ p->index_for_press = -1;
+ }
+
+}
+
+Evas_Object* cal_month_calendar_create_content(struct tm *t, struct appdata *ad,
+ Evas_Object *main, Eina_Bool tmp)
+{
+ CAL_FN_START;
+
+ struct _priv *p;
+ Evas_Object *ly;
+ time_t r;
+
+ CAL_ASSERT(ad);
+
+ r = mktime(t);
+ if (r == -1)
+ return NULL;
+
+ CAL_CALLOC(p, 1, struct _priv);
+
+ p->ad = ad;
+ p->parent = main;
+ p->pos_down = p->pos_today = p->pos_selected = -1;
+ p->pos_start = p->pos_end = -1;
+
+ if(!ad->is_weekly)
+ p->name = _name = "main/month/cal";
+ else if(ad->is_weekly)
+ p->name = _name = "main/month/cal/weekly";
+ else
+ return NULL;
+
+ ly = cal_util_add_layout(ad->nv, p->name);
+ if (!ly)
+ {
+ free(p);
+ return NULL;
+ }
+
+ p->month = ly;
+ evas_object_data_set(ly, "priv", p);
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(ly), "*", "cal", __cal_month_calendar_cal_event_callback, p);
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(ly), "*", "prog", __cal_month_calendar_prog_event_callback, p);
+
+ __cal_month_calendar_set_wday_text(ly, ad->wday_start);
+
+ if (tmp == EINA_TRUE)
+ {
+ p->weekline = __cal_month_calendar_fill_calendar(ly, t, ad->wday_start);
+ __cal_month_calendar_update_check(ly, p);
+ }
+
+ if (p->ad->is_weekly)
+ {
+ Evas_Object *events = cal_util_add_layout(ad->nv, "main/month/week/events");
+
+ elm_object_part_content_set(ly, "list/sw", events);
+ evas_object_event_callback_add(events, EVAS_CALLBACK_MOUSE_DOWN, __cal_month_calendar_mouse_down, p);
+ evas_object_event_callback_add(events, EVAS_CALLBACK_MOUSE_UP, __cal_month_calendar_mouse_up, p);
+ evas_object_event_callback_add(events, EVAS_CALLBACK_MOUSE_MOVE, __cal_month_calendar_mouse_move, p);
+
+ p->ly = events;
+
+ __cal_month_calendar_get_weekly_events(p);
+
+ if(-1 == p->pos_selected)
+ {
+ __cal_month_calendar_set_focuse_week(p, CAL_UTIL_GET_EDJ_DATA(ly), p->pos_today);
+ }
+ else
+ {
+ __cal_month_calendar_set_focuse_week(p, CAL_UTIL_GET_EDJ_DATA(ly), p->pos_selected);
+ }
+
+ __cal_month_calendar_signal_week(p,CAL_UTIL_GET_EDJ_DATA(p->ly));
+ }
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_month_calendar_delete_layout, p);
+
+ CAL_FN_END;
+
+ return ly;
+}
+
+void cal_month_update_month_calendar(Evas_Object *ly, struct tm *t)
+{
+ CAL_FN_START;
+
+ struct _priv *p;
+ struct appdata *ad;
+
+ CAL_ASSERT(ly);
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name)) {
+ ERR("update month calendar: Invalid object");
+ return;
+ }
+
+ ad = p->ad;
+ CAL_ASSERT(ad);
+
+ p->weekline = __cal_month_calendar_fill_calendar(ly, t, ad->wday_start);
+ cal_month_calendar_update_select(ly);
+ __cal_month_calendar_update_check(ly, p);
+
+ if (p->ad->is_weekly)
+ {
+ __cal_month_calendar_get_weekly_events(p);
+
+ if(-1 == p->pos_selected)
+ __cal_month_calendar_set_focuse_week(p, CAL_UTIL_GET_EDJ_DATA(ly), p->pos_today);
+ else
+ __cal_month_calendar_set_focuse_week(p, CAL_UTIL_GET_EDJ_DATA(ly), p->pos_selected);
+
+ __cal_month_calendar_signal_week(p,CAL_UTIL_GET_EDJ_DATA(p->ly));
+ }
+
+ CAL_FN_END;
+}
+
+int cal_month_get_weekline(Evas_Object *ly)
+{
+ struct _priv *p;
+
+ CAL_ASSERT(ly);
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name)) {
+ ERR("get weekline: Invalid object");
+ return 6;
+ }
+
+ return p->weekline;
+}
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <vconf.h>
+
+#include "view.h"
+#include "detail.h"
+#include "edit-repeat.h"
+#include "external-ug.h"
+
+static const char *_name = NULL;
+
+#define MONTH_CAL_CBAR_H 41
+#define MONTH_CAL_X 0
+#define MONTH_CAL_Y 200
+
+#define ANIMATION_TIME 0.2
+
+#define INITIAL_FETCH_SIZE 4
+#define IDLER_FETCH_SIZE 4
+
+
+typedef enum{
+ FOCUS_IN_DAILY = 0,
+ FOCUS_IN_WEEKLY
+}focus_in_month_view_type;
+
+typedef struct {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+
+ Evas_Object *month;
+ Evas_Object *month_left;
+ Evas_Object *month_right;
+ Evas_Coord_Rectangle rect;
+ Evas_Coord_Rectangle oringinal_size;
+
+ focus_in_month_view_type calendar_focus_view;
+
+ Evas_Object *gl;
+ struct calsvc *csv;
+
+ int single_moved;
+ int multi_touched;
+ Evas_Coord_Point down1, down2;
+ int down_d;
+ int down_is_called;
+
+ Evas_Coord_Point move1, move2;
+
+ Ecore_Idler *idler;
+ int event_offset;
+
+ Ecore_Animator *ani;
+ double ani_start;
+
+ Evas_Coord_Rectangle pos_from;
+ Evas_Coord_Rectangle pos_to;
+
+ int d;
+
+
+}cal_month_data;
+extern void cal_month_update_month_calendar(Evas_Object *ly, struct tm *t);
+static Evas_Object *__cal_month_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part);
+static char* __cal_month_get_genlist_item_label(void *data, Evas_Object *obj, const char *part);
+static void __cal_month_mouse_move_event_callback(void *data, Evas *e, Evas_Object *ly, void *ei);
+static void __cal_month_update_genlist(cal_month_data *p);
+static void __cal_month_changed_callback(void *data, Evas_Object *obj, const char *e, const char *src);
+static void __cal_month_rendering_flush_callback(void *data, Evas *e, void *event_info);
+
+static Elm_Genlist_Item_Class itc = {
+ .item_style = "3text.5icon",
+ .func.content_get = __cal_month_get_genlist_item_icon,
+ .func.text_get = __cal_month_get_genlist_item_label,
+};
+
+static int is_hour24;
+static Calendar_color calendar_color;
+
+static inline void __cal_month_stop_animation(cal_month_data *p)
+{
+ if (p->ani)
+ ecore_animator_del(p->ani);
+
+ p->ani = NULL;
+}
+
+static void __cal_month_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+ c_retm_if(!e, "e is null");
+
+ cal_month_data *p = data;
+
+ CALENDAR_SVC_FREE_CS(&p->csv);
+
+ __cal_month_stop_animation(p);
+
+ if (p->idler)
+ ecore_idler_del(p->idler);
+
+ evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST, __cal_month_rendering_flush_callback);
+
+ free(p);
+
+ DBG("");
+}
+
+static void __cal_month_resize_view(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ cal_month_data *p = data;
+
+ cal_util_get_geometry(&p->rect, p->month);
+}
+
+static void __cal_month_make_time_text(time_t t, struct tm *tm, char *buf, int sz)
+{
+ struct tm ttm;
+ const char* date;
+ const char* time;
+
+ localtime_r(&t, &ttm);
+
+ if(is_hour24)
+ time = CAL_UTIL_TIME_FORMAT_6;
+ else
+ time = CAL_UTIL_TIME_FORMAT_1;
+
+ if (ttm.tm_year != tm->tm_year)
+ date = CAL_UTIL_DATE_FORMAT_11;
+ else if (ttm.tm_mon != tm->tm_mon)
+ date = CAL_UTIL_DATE_FORMAT_10;
+ else if (ttm.tm_mday != tm->tm_mday)
+ date = CAL_UTIL_DATE_FORMAT_9;
+ else
+ date = NULL;
+
+ cal_util_get_time_text(buf, sz, NULL, time, &ttm);
+}
+
+static char* __cal_month_get_time_text(struct tmnode *tm, cal_month_data *p)
+{
+ char buf[512];
+ char stime[512];
+
+ __cal_month_make_time_text(tm->st, &p->ad->base_tm, stime, sizeof(stime));
+
+ snprintf(buf, sizeof(buf), "%s", stime);
+ return strdup(buf);
+}
+
+static Evas_Object *__cal_month_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ Evas_Object *icon = NULL;
+ struct tmnode *tm = (struct tmnode *)data;
+ int r;
+ cal_struct *cs = NULL;
+ cal_struct *calendar = NULL;
+ cal_month_data* p = NULL;
+
+ if(!tm)
+ {
+ ERR("tm is null");
+ return NULL;
+ }
+
+ cs = tm->cs;
+ if(!cs)
+ {
+ ERR("cs is null");
+ return NULL;
+ }
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+
+ if (!CAL_STRCMP(part, "elm.swallow.colorbar"))
+ {
+ r = CALENDAR_SVC_GET(CAL_STRUCT_CALENDAR, CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_VALUE_INT_CALENDAR_ID), NULL, &calendar);
+ if (r != CAL_SUCCESS)
+ {
+ ERR("CALENDAR_SVC_GET fail. %d", r);
+ return NULL;
+ }
+
+ icon = evas_object_rectangle_add(evas_object_evas_get(obj));
+ evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ CALENDAR_SVC_GET_CALENDAR_COLOR(calendar, &calendar_color);
+
+ evas_object_color_set(icon, calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);
+
+ CALENDAR_SVC_STRUCT_FREE(&calendar);
+
+ return icon;
+ }
+
+ return NULL;
+}
+
+static char* __cal_month_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ cal_month_data *p;
+ struct tmnode *tm = (struct tmnode *)data;
+ const char *str;
+
+ if (!tm || !tm->cs)
+ return NULL;
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(tm->cs, CAL_VALUE_TXT_SUMMARY);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
+ }
+ else if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(tm->cs, CAL_VALUE_TXT_LOCATION);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_LOCATION_SELECTED"));
+ }
+ else if (!CAL_STRCMP(part, "elm.text.3"))
+ {
+ int allday = CALENDAR_SVC_STRUCT_GET_INT(tm->cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (allday)
+ return strdup(C_("IDS_COM_BODY_ALL_DAY"));
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ return __cal_month_get_time_text(tm, p);
+ }
+
+ return NULL;
+}
+
+static void __cal_month_genlist_item_select_callback(void *data, Evas_Object *obj, void *ei)
+{
+ struct tmnode* tm = data;
+ cal_struct *cs = tm->cs;
+ int idx;
+ Elm_Object_Item *it;
+ cal_month_data *p;
+ int repeat;
+
+ it = elm_genlist_selected_item_get(obj);
+ if (it)
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ idx = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_INDEX);
+
+ p = CAL_UTIL_GET_PRIV_DATA(obj);
+ CAL_ASSERT(p);
+
+ repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+ if(repeat)
+ {
+ memcpy(p->ad->tm, tm, sizeof(struct tmnode));
+ }
+ p->ad->cid = idx;
+
+ cal_detail_create_view(p->ad, p->parent);
+}
+
+static void __cal_month_get_events(cal_month_data *p)
+{
+ time_t st, et;
+
+ cal_util_get_day_time_t(&p->ad->base_tm, &st, &et);
+
+ p->csv = CALENDAR_SVC_GET_EVENT(p->ad->acct_id, st, et);
+}
+
+static void __cal_month_update_genlist(cal_month_data *p)
+{
+ c_retm_if(!p, "p is null");
+
+ Evas_Object* gl;
+ Eina_List *l;
+ struct tmnode *tm;
+ int count = 0;
+
+ CALENDAR_SVC_FREE_CS(&p->csv);
+ __cal_month_get_events(p);
+
+ if (!p->csv || !p->csv->tmlist || !eina_list_count(p->csv->tmlist))
+ {
+ if (p->gl)
+ elm_genlist_clear(p->gl);
+
+ return;
+ }
+
+ if (!p->gl)
+ {
+ gl = elm_genlist_add(p->ly);
+ if (gl)
+ {
+ p->gl = gl;
+ elm_object_part_content_set(p->ly, "list/sw", gl);
+ evas_object_data_set(gl, "priv", p);
+ }
+ }
+ else
+ elm_genlist_clear(p->gl);
+
+ p->event_offset = 0;
+
+ EINA_LIST_FOREACH(p->csv->tmlist, l, tm)
+ {
+ if (tm)
+ {
+ elm_genlist_item_append(p->gl, &itc, tm, NULL, ELM_GENLIST_ITEM_NONE, __cal_month_genlist_item_select_callback, tm);
+
+ count ++;
+ p->event_offset++;
+
+ //First time, Just need to show 4 items. Another items will be add with idler
+ if (count == INITIAL_FETCH_SIZE)
+ return;
+ }
+ }
+}
+
+static Eina_Bool __cal_month_update_genlist_with_idler(void* data)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "data is null");
+
+ Eina_List *l, *event_list;
+ struct tmnode *tm;
+ int count = 0;
+
+ cal_month_data* p = data;
+ c_retvm_if(!p, ECORE_CALLBACK_CANCEL, "p is null");
+
+ if (!p->gl)
+ {
+ ERR("p->gl is null");
+ p->idler = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (!p->csv)
+ {
+ ERR("p->csv is null");
+ p->idler = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ event_list = eina_list_nth_list(p->csv->tmlist, p->event_offset);
+
+ EINA_LIST_FOREACH(event_list, l, tm)
+ {
+ if (tm)
+ {
+ elm_genlist_item_append(p->gl, &itc, tm, NULL, ELM_GENLIST_ITEM_NONE, __cal_month_genlist_item_select_callback, tm);
+
+ count ++;
+ p->event_offset++;
+
+ if (count == IDLER_FETCH_SIZE && p->event_offset < eina_list_count(p->csv->tmlist))
+ return ECORE_CALLBACK_RENEW;
+ }
+ }
+
+ p->idler = NULL;
+
+ CAL_FN_END;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Evas_Object* __cal_month_create_month_d(cal_month_data *p, int d)
+{
+ struct tm t;
+ struct appdata *ad = p->ad;
+ int r;
+
+ t = ad->base_tm;
+
+ r = cal_util_update_tm_month(&t, d);
+ if (r == -1)
+ return cal_util_add_layout(p->ly, "rect/empty");
+
+ return cal_month_calendar_create_content(&t, ad, p->parent, EINA_TRUE);
+}
+
+static void __cal_month_move_month_calendar_to_left(cal_month_data *p, Evas_Coord x)
+{
+ if (p->month_left == NULL) {
+ p->month_left = __cal_month_create_month_d(p, -1);
+ elm_object_part_content_set(p->ly, "cal/sw/left", p->month_left);
+ }
+
+ if(0 > p->oringinal_size.x)
+ {
+ evas_object_move(p->month_left, x, p->rect.y);
+ }
+ else
+ {
+ evas_object_move(p->month_left, x, p->oringinal_size.y);
+ }
+}
+
+static void __cal_month_move_month_calendar_to_right(cal_month_data *p, Evas_Coord x)
+{
+ if (p->month_right == NULL) {
+ p->month_right = __cal_month_create_month_d(p, 1);
+ elm_object_part_content_set(p->ly, "cal/sw/right", p->month_right);
+ }
+
+ if(0 > p->oringinal_size.x)
+ {
+ evas_object_move(p->month_right, x, p->rect.y);
+ }
+ else
+ {
+ evas_object_move(p->month_right, x, p->oringinal_size.y);
+ }
+
+}
+
+static void __cal_month_move_month_calendar(cal_month_data *p)
+{
+ Evas_Coord dx;
+ Evas_Coord x;
+
+ dx = p->move1.x - p->down1.x;
+ if (!p->single_moved && dx < 15 && dx > -15)
+ return;
+
+ if (!p->single_moved)
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->month), "moved", "prog");
+
+ p->single_moved = 1;
+
+ if(0 > p->oringinal_size.x)
+ {
+ x = p->rect.x + dx;
+
+ evas_object_move(p->month, x, p->rect.y);
+
+ __cal_month_move_month_calendar_to_left(p, x - p->rect.w);
+ __cal_month_move_month_calendar_to_right(p, x + p->rect.w);
+ }
+ else
+ {
+ x = p->oringinal_size.x + dx;
+
+ evas_object_move(p->month, x, p->oringinal_size.y);
+
+ __cal_month_move_month_calendar_to_left(p, x - p->oringinal_size.w);
+ __cal_month_move_month_calendar_to_right(p, x + p->oringinal_size.w);
+ }
+}
+
+static inline void __cal_month_move_objects(cal_month_data *p, Evas_Coord dx)
+{
+ CAL_ASSERT(p);
+
+ if(!dx)
+ return;
+
+ Evas_Coord x;
+
+ x = p->pos_from.x + dx;
+
+ evas_object_move(p->month, x, p->rect.y);
+
+ __cal_month_move_month_calendar_to_left(p, x - p->rect.w);
+ __cal_month_move_month_calendar_to_right(p, x + p->rect.w);
+}
+
+
+static inline int __cal_month_update_month_view(cal_month_data *p, int d)
+{
+ CAL_ASSERT(p);
+
+ int r;
+
+ r = cal_util_update_tm_month(&p->ad->base_tm, d);
+ if (r == -1)
+ return -1;
+
+ edje_object_signal_callback_del(CAL_UTIL_GET_EDJ_DATA(p->month), "changed", "prog", __cal_month_changed_callback);
+ evas_object_event_callback_del(p->month, EVAS_CALLBACK_MOUSE_MOVE, __cal_month_mouse_move_event_callback);
+
+ elm_object_part_content_unset(p->ly, "cal/sw");
+ elm_object_part_content_unset(p->ly, "cal/sw/left");
+ elm_object_part_content_unset(p->ly, "cal/sw/right");
+
+ if(d > 0)
+ {
+ evas_object_del(p->month_left);
+ p->month_left = p->month;
+ p->month = p->month_right;
+ p->month_right = __cal_month_create_month_d(p, 1);
+ }
+ else if(d < 0)
+ {
+ evas_object_del(p->month_right);
+ p->month_right = p->month;
+ p->month = p->month_left;
+ p->month_left = __cal_month_create_month_d(p, -1);
+ }
+ else
+ {
+ ERR("");
+ CAL_ASSERT(EINA_FALSE);
+ }
+
+ cal_month_calendar_update_select(p->month);
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(p->ly), "go,line%d", cal_month_get_weekline(p->month));
+
+ elm_object_part_content_set(p->ly, "cal/sw", p->month);
+ elm_object_part_content_set(p->ly, "cal/sw/left", p->month_left);
+ elm_object_part_content_set(p->ly, "cal/sw/right", p->month_right);
+
+ evas_object_show(p->ly);
+
+ evas_object_event_callback_add(p->month, EVAS_CALLBACK_MOUSE_MOVE, __cal_month_mouse_move_event_callback, p);
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(p->month), "changed", "prog", __cal_month_changed_callback, p);
+
+ __cal_month_update_genlist(p);
+
+ return 0;
+}
+
+
+static Eina_Bool __cal_month_animation(void *data)
+{
+ cal_month_data *p = data;
+ double elapsed_t;
+ Evas_Coord dx;
+
+ elapsed_t = ecore_time_get() - p->ani_start;
+ if (elapsed_t > ANIMATION_TIME)
+ elapsed_t = ANIMATION_TIME;
+
+ dx = (p->pos_to.x - p->pos_from.x) * cal_util_nsin(elapsed_t / ANIMATION_TIME);
+ __cal_month_move_objects(p, dx);
+
+ if (elapsed_t == ANIMATION_TIME || dx == 0)
+ {
+ if (p->ani)
+ {
+ ecore_animator_del(p->ani);
+ p->ani = NULL;
+ }
+
+ if(p->d)
+ {
+ __cal_month_update_month_view(p,p->d);
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+static inline void __cal_month_start_animation(cal_month_data *p)
+{
+ if (p->pos_from.x == p->pos_to.x)
+ return;
+
+ if (!p->ani)
+ p->ani = ecore_animator_add(__cal_month_animation, p);
+ p->ani_start = ecore_time_get();
+}
+
+
+static void __cal_month_mouse_up_event_callback(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ CAL_ASSERT(data);
+ cal_month_data *p = data;
+
+ CAL_ASSERT(p->ad);
+ struct appdata* ad = p->ad;
+
+ Evas_Event_Mouse_Up *ev = ei;
+
+ p->down_is_called = 0;
+
+ if (p->single_moved)
+ {
+ int dx = p->down1.x - ev->canvas.x;
+ int d = 1;
+
+ p->single_moved = 0;
+
+ if (dx < 0) {
+ d = -1;
+ dx = dx * -1;
+ }
+
+ cal_util_get_geometry(&p->pos_from,p->month);
+
+
+ if (dx > (p->rect.w >> 1))
+ {
+ if (d < 0)
+ {
+ p->d = -1;
+ p->pos_to.x = p->ad->win_w;
+ p->pos_to.y = p->pos_from.y;
+ p->pos_to.w = p->pos_from.w;
+ p->pos_to.h = p->pos_from.h;
+ }
+ else
+ {
+ p->d = 1;
+ p->pos_to.x = -(p->ad->win_w);
+ p->pos_to.y = p->pos_from.y;
+ p->pos_to.w = p->pos_from.w;
+ p->pos_to.h = p->pos_from.h;
+ }
+ __cal_month_start_animation(p);
+ }
+ else
+ {
+ __cal_month_move_month_calendar_to_left(p, MONTH_CAL_X - ad->win_w);
+ __cal_month_move_month_calendar_to_right(p, MONTH_CAL_X + ad->win_w);
+ evas_object_move(p->month, MONTH_CAL_X, p->pos_from.y);
+ }
+
+ return;
+ }
+
+}
+
+static void __cal_month_mouse_down_event_callback(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ cal_month_data *p = data;
+ Evas_Event_Mouse_Down *ev = ei;
+
+ p->down1.x = p->move1.x = ev->canvas.x;
+ p->down1.y = p->move1.y = ev->canvas.y;
+
+ p->down_is_called = 1;
+
+ cal_util_get_geometry(&p->oringinal_size,p->month);
+}
+
+static void __cal_month_mouse_move_event_callback(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ cal_month_data *p = data;
+ Evas_Event_Mouse_Move *ev = ei;
+
+ if (0 == p->down_is_called)
+ return;
+
+ p->move1.x = ev->cur.canvas.x;
+ p->move1.y = ev->cur.canvas.y;
+
+ if (!p->multi_touched)
+ __cal_month_move_month_calendar(p);
+}
+
+static void __cal_month_changed_callback(void *data, Evas_Object *obj, const char *e, const char *src)
+{
+ __cal_month_update_genlist(data);
+}
+
+static void __cal_month_rendering_flush_callback(void *data, Evas *e, void *event_info)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+ c_retm_if(!e, "evas is null");
+
+ evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST, __cal_month_rendering_flush_callback);
+
+ cal_month_data* p = data;
+
+ if (!p->gl || p->idler ||!p->csv || eina_list_count(p->csv->tmlist) == p->event_offset)
+ return;
+
+ p->idler = ecore_idler_add(__cal_month_update_genlist_with_idler, p);
+ c_retm_if(!p->idler, "p->idler is null");
+
+ CAL_FN_END;
+}
+
+Evas_Object* cal_month_create_view(struct appdata *ad, Evas_Object *main)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!ad, NULL, "ad is null");
+ c_retvm_if(!main, NULL, "main is null");
+
+ cal_month_data *p;
+ Evas_Object *ly;
+ Evas_Object *month;
+ Evas_Object *list_bg;
+
+ p = calloc(1, sizeof(cal_month_data));
+ c_retvm_if(!p, NULL, "calloc(1, sizeof(cal_month_data)) is failed");
+
+ vconf_get_int(CAL_VCONFKEY_FOCUS_VIEW, (int*)&p->calendar_focus_view);
+
+ if (FOCUS_IN_DAILY == p->calendar_focus_view)
+ {
+ ad->is_weekly = FALSE;
+ p->name = _name = "main/month";
+ }
+ else if (FOCUS_IN_WEEKLY == p->calendar_focus_view)
+ {
+ ad->is_weekly = TRUE;
+ p->name = _name = "main/month/weekly";
+ }
+ else
+ return NULL;
+
+ p->ad = ad;
+
+ is_hour24 = ad->is_hour24;
+
+ p->parent = main;
+ p->oringinal_size.x = -1;
+ p->oringinal_size.y = -1;
+ p->oringinal_size.w = -1;
+ p->oringinal_size.h = -1;
+ ly = cal_util_add_layout(ad->nv, p->name);
+ if (!ly) {
+ free(p);
+ return NULL;
+ }
+ evas_object_data_set(ly, "priv", p);
+ p->ly = ly;
+
+ month = cal_month_calendar_create_content(&ad->base_tm, ad, main, EINA_FALSE);
+ if (!month)
+ {
+ ERR("cal_month_calendar_create_content(&ad->base_tm, ad, ly, EINA_FALSE) is failed");
+ evas_object_del(ly);
+ free(p);
+ return NULL;
+ }
+
+ elm_object_part_content_set(ly, "cal/sw", month);
+ p->month = month;
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(month), "changed", "prog", __cal_month_changed_callback, p);
+
+ list_bg = cal_util_add_bg(ly, EINA_FALSE);
+ if (!list_bg)
+ {
+ ERR("cal_util_add_bg(ly, EINA_FALSE) is failed");
+ evas_object_del(ly);
+ free(p);
+ return NULL;
+ }
+
+ elm_object_part_content_set(ly, "list/base", list_bg);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_month_delete_layout, p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_DOWN, __cal_month_mouse_down_event_callback, p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_UP, __cal_month_mouse_up_event_callback, p);
+ evas_object_event_callback_add(month, EVAS_CALLBACK_MOUSE_MOVE, __cal_month_mouse_move_event_callback, p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_RESIZE, __cal_month_resize_view, p);
+
+ CAL_FN_END;
+
+ return ly;
+}
+
+void cal_month_update_view(Evas_Object *ly)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ly, "ly is null");
+
+ cal_month_data *p;
+ struct appdata *ad;
+ Evas *e;
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name)) {
+ ERR("update month view: Invalid object");
+ return;
+ }
+
+ ad = p->ad;
+ c_retm_if(!ad, "ad is null");
+
+ cal_month_update_month_calendar(p->month, &ad->base_tm);
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(p->ly), "go,line%d", cal_month_get_weekline(p->month));
+
+ __cal_month_update_genlist(p);
+
+ cal_util_delete_evas_object(&p->month_left);
+ cal_util_delete_evas_object(&p->month_right);
+
+ e = evas_object_evas_get(ly);
+ c_retm_if(!e, "evas_object_evas_get(ly) is failed");
+
+ evas_event_callback_add(e, EVAS_CALLBACK_RENDER_FLUSH_POST, __cal_month_rendering_flush_callback,p);
+
+ CAL_FN_END;
+}
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <Ecore_X.h>
+
+#include "view.h"
+
+#define ANIMATION_TIME 0.2
+
+typedef enum year_index {
+ CAL_YEAR_PREV_YEAR = -1,
+ CAL_YEAR_CURR_YEAR,
+ CAL_YEAR_NEXT_YEAR,
+}year_index;
+
+static const char *_name = "main/year/months";
+
+struct _year{
+ int year;
+ Evas_Object* image;
+ Evas* evas;
+ Evas_Object* edj;
+ Evas_Object* ly;
+ struct _priv* p;
+};
+
+struct _priv {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *parent;
+ Evas_Object *ly; // self
+ Evas_Object *handle_base;
+
+ struct _year* prev_year;
+ struct _year* cur_year;
+ struct _year* next_year;
+
+ Eina_Bool ignore_mouse_down; // block mouse down event during flick
+ int downed;
+ Evas_Coord_Rectangle rect;
+ Evas_Coord_Point down1,down2;
+ Evas_Coord_Point move1,move2;
+
+ int pos_selected;
+ int pos_down;
+
+ Evas_Coord_Rectangle mouse_down_position;
+ Evas_Coord_Rectangle mouse_up_position;
+ Evas_Coord_Rectangle pos_to;
+ Ecore_Animator *ani;
+ double ani_start;
+ struct tm tm_to;
+
+ char wday[8][7];//To reduce get text time
+ char month[12][32];//To reduce get text time
+
+ Ecore_Idler* idler; //To make prev & next year object
+
+ Evas_Object* edje_handle[12];
+};
+
+static char signal_source[32];
+
+static struct _year* __cal_year_create_year_object(Evas_Object* parent, struct _priv* p, enum year_index);
+static void __cal_year_delete_year_object(struct _year* y);
+static void __cal_year_mouse_up(void *data, Evas *e, Evas_Object *ly, void *ei);
+static void __cal_year_mouse_down(void *data, Evas *e, Evas_Object *ly, void *ei);
+static void __cal_year_mouse_move(void *data, Evas *e, Evas_Object *ly, void *ei);
+static void __cal_year_update_select(struct _year *y, int tm_mon);
+static void __cal_year_delete_edje_handle(struct _priv* p);
+
+static inline void __cal_year_stop_animation(struct _priv *p)
+{
+ c_retm_if(!p, "Input parameter is null.");
+
+ if (p->ani)
+ ecore_animator_del(p->ani);
+
+ p->ani = NULL;
+}
+
+static void __cal_year_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "Input parameter is null.");
+
+ struct _priv *p = data;
+
+ __cal_year_delete_edje_handle(p);
+
+ __cal_year_stop_animation(p);
+
+ if(p->prev_year)
+ __cal_year_delete_year_object(p->prev_year);
+ if(p->cur_year)
+ __cal_year_delete_year_object(p->cur_year);
+ if(p->next_year)
+ __cal_year_delete_year_object(p->next_year);
+
+ if(p->idler)
+ ecore_idler_del(p->idler);
+
+ free(p);
+}
+
+static void __cal_year_set_month_text(struct _year* y)
+{
+ c_retm_if(!y, "Input parameter is null.");
+
+ int i;
+ struct _priv* p = y->p;
+ c_retm_if(!p, "");
+
+
+ for (i = 0; i < 12; i++)
+ edje_object_part_text_set(y->edj, cal_util_get_part_text("mb/%d/text", i), p->month[i]);
+}
+
+static void __cal_year_make_month_text(struct _priv* p)
+{
+ c_retm_if(!p, "Input parameter is null.");
+
+ int i;
+ struct tm tm;
+
+ tm = p->ad->base_tm;
+ cal_util_update_tm_month(&tm, tm.tm_mon*(-1));
+
+ for(i = 0; i < 12 ; i++)
+ {
+ cal_util_get_time_text(p->month[i], 31, CAL_UTIL_DATE_FORMAT_4, NULL, &tm);
+ cal_util_update_tm_month(&tm, 1);
+ }
+}
+
+static void __cal_year_make_wday_text(struct _priv* p)
+{
+ c_retm_if(!p, "Input parameter is null.");
+
+ int i;
+ struct tm tm;
+
+ tm = p->ad->base_tm;
+ cal_util_update_tm_day(&tm, tm.tm_wday*(-1));
+
+ for(i = 0; i < 7 ; i++)
+ {
+ cal_util_get_time_text(p->wday[i], 7, CAL_UTIL_DATE_FORMAT_2, NULL, &tm);
+ cal_util_update_tm_day(&tm, 1);
+ }
+}
+
+static void __cal_year_set_wday_text(Evas_Object *month, int start)
+{
+ c_retm_if(!month, "Input parameter is null.");
+
+ int i;
+
+ struct _priv* p = CAL_UTIL_GET_PRIV_DATA(month);
+
+ for (i = 0; i < 7; i++)
+ {
+ edje_object_part_text_set(month, cal_util_get_part_text("sdh/%d/text", i), p->wday[(i+start)%7]);
+ if((i+start)%7 == 6)
+ {
+ cal_util_emit_signal(month, "satday,%d", i);
+ continue;
+ }
+
+ if((i+start)%7 == 0)
+ cal_util_emit_signal(month, "sunday,%d", i);
+ }
+}
+
+static void __cal_year_update_today(Evas_Object *ly, int tm_year, int tm_mon, int tm_mday, int pos)
+{
+ c_retm_if(!ly, "Input parameter is null.");
+
+ struct _priv *p = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!p, "CAL_UTIL_GET_PRIV_DATA returned null.");
+
+ struct appdata *ad = p->ad;
+ c_retm_if(!ad, "p->ad is null.");
+
+ if (tm_year == ad->today_tm.tm_year && tm_mon == ad->today_tm.tm_mon && tm_mday == ad->today_tm.tm_mday)
+ cal_util_emit_signal(ly, "today,%d", pos-1);
+}
+
+
+static void __cal_year_fill_month(Evas_Object *month, int tm_year, int tm_mon, int *first_wday, int start_wday)
+{
+ c_retm_if(!month, "Input parameter is null.");
+
+ int i, day, wday;
+ int max;
+
+ wday = *first_wday;
+ max = CAL_UTIL_GET_WDAY(wday - start_wday);
+
+ for (i = 0; i < max; i++)
+ {
+ cal_util_set_text(month, cal_util_get_part_text("sdb/%d/text", i), "");
+ }
+
+ day = 1;
+ max = i + cal_util_get_max_days(tm_year, tm_mon);
+ for (; i < max; i++)
+ {
+ cal_util_set_text(month, cal_util_get_part_text("sdb/%d/text", i), "%d", day);
+
+ if (wday == 6)
+ cal_util_emit_signal(month, "satday,%d", i);
+ else if (wday == 0)
+ cal_util_emit_signal(month, "sunday,%d", i);
+
+ wday = CAL_UTIL_GET_WDAY(wday + 1);
+
+ __cal_year_update_today(month, tm_year, tm_mon, day-1, i);
+
+ day++;
+ }
+
+ for (; i < 42; i++)
+ {
+ cal_util_set_text(month, cal_util_get_part_text("sdb/%d/text", i), "");
+ }
+
+ *first_wday = wday;
+}
+
+static Evas_Object* __cal_year_create_month(struct _year *y, int tm_mon, int *wday, int start)
+{
+ c_retvm_if(!y, NULL, "Input parameter is null.");
+
+ Evas_Object *month;
+
+ month = edje_object_add(y->evas);
+
+ if(cal_util_black_theme_check()){
+ edje_object_file_set(month, EDJ_FILE, "main/year/cal");
+ }
+ else{
+ edje_object_file_set(month, EDJ_FILE_WHITE, "main/year/cal");
+ }
+
+ evas_object_data_set(month,"priv",y->p);
+
+ __cal_year_set_wday_text(month, start);
+ __cal_year_fill_month(month, y->year, tm_mon, wday, start);
+
+ return month;
+}
+
+static int __cal_year_get_first_wday(int tm_year)
+{
+ struct tm tm;
+ time_t t;
+
+ t = time(NULL);
+ localtime_r(&t, &tm);
+
+ tm.tm_year = tm_year;
+ tm.tm_mon = 0;
+ tm.tm_mday = 1;
+
+ t = mktime(&tm);
+ c_retvm_if(t == -1, 0, "mktime() returned -1.");
+
+ return tm.tm_wday;
+}
+
+static void __cal_year_fill_months(struct _year* y)
+{
+ c_retm_if(!y, "Input parameter is null.");
+
+ int i;
+ Evas_Object *month;
+ int first_wday;
+ struct _priv* p = y->p;
+
+ first_wday = __cal_year_get_first_wday(y->year);
+
+ __cal_year_make_wday_text(p);
+
+ for (i = 0; i < 12; i++)
+ {
+ month = __cal_year_create_month(y, i, &first_wday, p->ad->wday_start);
+ c_retm_if(!month, "");
+
+ edje_object_part_swallow(y->edj, cal_util_get_part_text("mb/%d/sw", i), month);
+
+ evas_object_data_set(y->ly, cal_util_get_part_text("mb/%d/sw", i), month);
+ }
+}
+
+static inline void __cal_year_move_year_objects(struct _priv *p, Evas_Coord x)
+{
+ c_retm_if(!p, "Input parameter is null.");
+
+ if (x < 0)
+ {
+ evas_object_move(p->cur_year->image, x, p->rect.y);
+
+ if (!p->next_year)
+ {
+ p->next_year = __cal_year_create_year_object(p->ly, p, CAL_YEAR_NEXT_YEAR);
+ c_retm_if(!p->next_year, "__cal_year_create_year_object(p->ly, p, CAL_YEAR_NEXT_YEAR) returned null");
+ }
+ evas_object_move(p->next_year->image, x + p->rect.w, p->rect.y);
+ }
+ else
+ {
+ evas_object_move(p->cur_year->image, x, p->rect.y);
+
+ if (!p->prev_year)
+ {
+ p->prev_year = __cal_year_create_year_object(p->ly, p, CAL_YEAR_PREV_YEAR);
+ c_retm_if(!p->prev_year, "__cal_year_create_year_object(p->ly, p, CAL_YEAR_PREV_YEAR) returned null");
+ }
+ evas_object_move(p->prev_year->image, x -p->rect.w, p->rect.y);
+ }
+
+ evas_object_move(p->handle_base, x, p->rect.y);
+}
+
+static void __cal_year_image_object_mouse_down_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "Input parameter is null.");
+
+ struct _priv *p = data;
+ struct _year *y = p->cur_year;
+
+ int index = (int)evas_object_data_get(obj, "index");
+
+ snprintf(signal_source, 31, "mb/%d/base", index);
+ edje_object_signal_emit(y->edj, "mouse,down,1", signal_source);
+
+ p->pos_down = index;
+}
+
+static void __cal_year_image_object_mouse_up_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "Input parameter is null.");
+
+ struct _priv *p = data;
+ struct _year *y = p->cur_year;
+ struct appdata* ad = p->ad;
+
+ snprintf(signal_source, 31, "mb/%d/base", p->pos_down);
+ edje_object_signal_emit(y->edj, "mouse,up,1", signal_source);
+
+ if (p->ignore_mouse_down)
+ {
+ p->ignore_mouse_down = EINA_FALSE;
+ return;
+ }
+
+ cal_util_update_tm_month(&ad->base_tm, p->pos_down - ad->base_tm.tm_mon);
+
+ if (p->pos_down != p->pos_selected)
+ {
+ cal_util_emit_signal(y->edj, "unselect,%d", p->pos_selected);
+
+ cal_util_emit_signal(y->edj, "select,%d", p->pos_down);
+
+ p->pos_selected = p->pos_down;
+ }
+ else
+ {
+ cal_main_change_view(p->parent, CV_MONTH);
+ }
+}
+
+static void __cal_year_delete_edje_handle(struct _priv* p)
+{
+ c_retm_if(!p, "p is null.");
+
+ int i = 0;
+
+ for (i = 0 ; i < 12 ; i++)
+ {
+ c_retm_if(!p->edje_handle[i], "p->edje_handle[%d] is null.", i);
+
+ evas_object_event_callback_del(p->edje_handle[i], EVAS_CALLBACK_MOUSE_DOWN, __cal_year_image_object_mouse_down_callback);
+ evas_object_event_callback_del(p->edje_handle[i], EVAS_CALLBACK_MOUSE_UP, __cal_year_image_object_mouse_up_callback);
+
+ evas_object_del(p->edje_handle[i]);
+ }
+
+ c_retm_if(!p->handle_base, "p->handle_base is null.");
+ evas_object_del(p->handle_base);
+}
+
+static inline int __cal_year_update_view(struct _priv *p)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!p, -1, "Input parameter is null.");
+ c_retvm_if(!p->ad, -1, "p->ad is null.");
+
+ struct appdata* ad = p->ad;
+
+ int d = p->tm_to.tm_year - p->ad->base_tm.tm_year;
+
+ ad->base_tm = p->tm_to;
+
+ cal_util_emit_signal(p->cur_year->edj, "unselect,%d", p->pos_selected);
+
+ elm_object_part_content_unset(p->ly, "content");
+ elm_object_part_content_unset(p->ly, "content/left");
+ elm_object_part_content_unset(p->ly, "content/right");
+
+ if(d > 0)
+ {
+ if(p->prev_year)
+ __cal_year_delete_year_object(p->prev_year);
+
+ p->prev_year = p->cur_year;
+ p->cur_year = p->next_year;
+ p->next_year = __cal_year_create_year_object(p->ly, p, CAL_YEAR_NEXT_YEAR);
+ }
+ else if( d < 0)
+ {
+ if(p->next_year)
+ __cal_year_delete_year_object(p->next_year);
+
+ p->next_year = p->cur_year;
+ p->cur_year = p->prev_year;
+ p->prev_year = __cal_year_create_year_object(p->ly, p, CAL_YEAR_PREV_YEAR);
+ }
+
+ elm_object_part_content_set(p->ly, "content", p->cur_year->image);
+ elm_object_part_content_set(p->ly, "content/left", p->prev_year->image);
+ elm_object_part_content_set(p->ly, "content/right", p->next_year->image);
+
+ cal_main_update_title_text(ad->title, CV_YEAR, &ad->base_tm, ad->wday_start);
+
+ __cal_year_update_select(p->cur_year, ad->base_tm.tm_mon);
+
+ __cal_year_move_year_objects(p, 0);
+
+ if (p->ignore_mouse_down)
+ p->ignore_mouse_down = EINA_FALSE;
+
+ return 0;
+}
+
+static Eina_Bool __cal_year_animation(void *data, double pos)
+{
+ c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "Input parameter is null.");
+
+ struct _priv *p = data;
+ Evas_Coord dx;
+
+ dx = (p->mouse_up_position.x - p->pos_to.x) * cal_util_nsin(1.0 - pos);
+ __cal_year_move_year_objects(p, p->pos_to.x + dx);
+
+ if ((dx + p->pos_to.x)%p->ad->win_w == 0)
+ {
+ p->ani = NULL;
+ __cal_year_update_view(p);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+static inline void __cal_year_start_animation(struct _priv *p)
+{
+ c_retm_if(!p, "Input parameter is null.");
+
+ if (p->mouse_up_position.x == p->pos_to.x)
+ return;
+
+ if (!p->ani)
+ p->ani = ecore_animator_timeline_add(ANIMATION_TIME, __cal_year_animation, p);
+
+ p->ani_start = ecore_time_get();
+}
+
+static void inline __cal_year_set_go(struct _priv *p, int d)
+{
+ c_retm_if(!p, "Input parameter is null.");
+
+ int r = 0;
+
+ p->tm_to = p->ad->base_tm;
+ p->pos_to = p->rect;
+
+ if(d != 0)
+ r = cal_util_update_tm_year(&p->tm_to, d);
+ if (r == -1)
+ return;
+
+ p->pos_to.x = p->rect.w * (d * -1);
+}
+
+static void __cal_year_mouse_up(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ c_retm_if(!data, "Input parameter is null.");
+
+ Evas_Event_Mouse_Up *ev = ei;
+ struct _priv *p = data;
+
+ if (!p->downed)
+ return;
+
+ p->downed = 0;
+
+ cal_util_get_geometry(&p->mouse_up_position, p->cur_year->image);
+
+ if (p->mouse_up_position.x > (p->rect.w >> 2))
+ __cal_year_set_go(p, -1);
+ else if (p->mouse_up_position.x < (p->rect.w >> 2) * -1)
+ __cal_year_set_go(p, 1);
+ else
+ {
+ Evas_Coord x = ev->canvas.x - p->down1.x;
+
+ if (x < 3 && x > -3 && p->mouse_up_position.x ==0)
+ return;
+
+ __cal_year_set_go(p, 0);
+ }
+
+ __cal_year_start_animation(p);
+}
+
+static void __cal_year_mouse_move(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ c_retm_if(!data, "Input parameter is null.");
+
+ struct _priv *p = data;
+
+ Evas_Event_Mouse_Move *ev = ei;
+ Evas_Coord x;
+ static int cnt = 0;
+
+ if (!p->downed)
+ return;
+
+ cnt++;
+ if ((cnt & 0x7) != 0) // Workaround
+ return;
+
+ p->move2.x = ev->cur.canvas.x;
+ p->move2.y = ev->cur.canvas.y;
+
+ x = p->mouse_down_position.x + p->move2.x - p->down1.x;
+
+ __cal_year_move_year_objects(p, x);
+
+ p->ignore_mouse_down = EINA_TRUE;
+}
+
+static void __cal_year_mouse_down(void *data, Evas *e, Evas_Object *ly, void *ei)
+{
+ c_retm_if(!data, "Input parameter is null.");
+
+ struct _priv *p = data;
+ struct _year *y = p->cur_year;
+
+ Evas_Event_Mouse_Down *ev = ei;
+
+ p->down1.x = p->move1.x = ev->canvas.x;
+ p->down1.y = p->move1.y = ev->canvas.y;
+
+ cal_util_get_geometry(&p->mouse_down_position, y->image);
+
+ __cal_year_stop_animation(p);
+
+ p->downed = 1;
+}
+
+static void __cal_year_update_select(struct _year *y, int tm_mon)
+{
+ c_retm_if(!y, "Input parameter is null.");
+
+ struct _priv* p = y->p;
+
+ if (p->pos_selected != -1)
+ cal_util_emit_signal(y->edj, "unselect,%d", p->pos_selected);
+
+ cal_util_emit_signal(y->edj, "select,%d", tm_mon);
+
+ p->pos_selected = tm_mon;
+}
+
+static Evas_Object *__cal_year_create_image(Evas_Object *parent)
+{
+ c_retvm_if(!parent, NULL, "Input parameter is null.");
+
+ Evas_Object *img;
+ Evas *e;
+ Ecore_Evas *ee;
+ Evas_Coord w, h;
+
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+
+ e = evas_object_evas_get(parent);
+ ee = ecore_evas_ecore_evas_get(e);
+
+ img = ecore_evas_object_image_new(ee);
+ if (!img)
+ return NULL;
+
+ evas_object_image_alpha_set(img, EINA_TRUE);
+ evas_object_image_size_set(img, w, h);
+ evas_object_image_fill_set(img, 0, 0, w, h);
+
+ evas_object_show(img);
+
+ return img;
+}
+
+static Evas_Object *__cal_year_add_edje(Evas *e, const char *grp, Evas_Coord w, Evas_Coord h)
+{
+ c_retvm_if(!e, NULL, "Input parameter is null.");
+
+ Evas_Object *eo;
+ Eina_Bool r;
+
+ eo = edje_object_add(e);
+ if (!eo)
+ return NULL;
+
+ if(cal_util_black_theme_check()){
+ r = edje_object_file_set(eo, EDJ_FILE, grp);
+ }
+ else{
+ r = edje_object_file_set(eo, EDJ_FILE_WHITE, grp);
+ }
+
+ if (!r)
+ {
+ evas_object_del(eo);
+ return NULL;
+ }
+
+ evas_object_freeze_events_set(eo, EINA_TRUE);
+
+ evas_object_resize(eo, w, h);
+ evas_object_move(eo, 0, 0);
+ evas_object_show(eo);
+
+ return eo;
+}
+
+static void __cal_year_image_object_resize_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "Input parameter is null.");
+
+ struct _year *y = data;
+ c_retm_if(!y->edj, "y->edj is null.");
+ c_retm_if(!y->p, "y->p is null.");
+
+ struct _priv *p = y->p;
+
+ cal_util_get_geometry(&p->rect, obj);
+
+ evas_object_resize(y->edj, p->rect.w, p->rect.h);
+ evas_object_move(y->edj, 0, 0);
+}
+
+static void __cal_year_image_object_move_callback(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "Input parameter is null.");
+
+ struct _year *y = data;
+
+ evas_object_move(y->edj, 0, 0);
+}
+
+static void __cal_year_delete_year_object(struct _year* y)
+{
+ CAL_FN_START;
+
+ c_retm_if(!y, "Input parameter is null.");
+
+ evas_object_del(y->image);
+ evas_object_del(y->edj);
+
+ free(y);
+}
+
+static struct _year* __cal_year_create_year_object(Evas_Object* ly, struct _priv* p, enum year_index year)
+{
+ c_retvm_if(!ly, NULL, "Input parameter is null.");
+ c_retvm_if(!p, NULL, "Input parameter is null.");
+ c_retvm_if(!p->ad, NULL, "p->ad is null.");
+
+ struct appdata* ad = p->ad;
+ struct _year* y = NULL;
+
+ CAL_CALLOC(y, 1, struct _year);
+
+ y->image = __cal_year_create_image(ly);
+
+ y->evas = ecore_evas_object_evas_get(y->image);
+
+ y->edj = __cal_year_add_edje(y->evas, "main/year/months", p->rect.w, p->rect.h);
+
+ y->p = p;
+
+ if(year > 0)
+ elm_object_part_content_set(ly, "content/right", y->image);
+ else if( year < 0)
+ elm_object_part_content_set(ly, "content/left", y->image);
+ else
+ elm_object_part_content_set(ly, "content", y->image);
+
+ y->ly = ly;
+ y->year = ad->base_tm.tm_year + year;
+
+ evas_object_event_callback_add(y->image, EVAS_CALLBACK_RESIZE, __cal_year_image_object_resize_callback, y);
+ evas_object_event_callback_add(y->image, EVAS_CALLBACK_MOVE, __cal_year_image_object_move_callback, y);
+
+ __cal_year_set_month_text(y);
+ __cal_year_fill_months(y);
+
+ return y;
+}
+
+static void __cal_year_create_edje_handle(struct _priv* p)
+{
+ c_retm_if(!p, "p is null.");
+
+ Evas * e = evas_object_evas_get(p->ly);
+ int i = 0;
+ Evas_Object *ly = NULL;
+ Evas_Object *handle = NULL;
+ char part[16];
+
+ ly = cal_util_add_layout(p->ly, "year/edje/handle");
+ c_retm_if(!ly, "ly is null.");
+
+ for (i = 0 ; i < 12 ; i++)
+ {
+ handle = evas_object_rectangle_add(e);
+ c_retm_if(!handle, "evas_object_rectangle_add returned null.");
+
+ evas_object_color_set(handle, 0, 0, 0, 0);
+ evas_object_data_set(handle, "index", (void*)i);
+ snprintf(part, sizeof(part), "handle/%d/sw", i);
+ elm_object_part_content_set(ly, part, handle);
+
+ evas_object_event_callback_add(handle, EVAS_CALLBACK_MOUSE_DOWN, __cal_year_image_object_mouse_down_callback, p);
+ evas_object_event_callback_add(handle, EVAS_CALLBACK_MOUSE_UP, __cal_year_image_object_mouse_up_callback, p);
+
+ p->edje_handle[i] = handle;
+ }
+
+ elm_object_part_content_set(p->ly, "edje/handle", ly);
+
+ p->handle_base = ly;
+
+}
+Evas_Object* cal_year_create_view(struct appdata *ad, Evas_Object *main)
+{
+ c_retvm_if(!ad, NULL, "Input parameter is null.");
+ c_retvm_if(!main, NULL, "Input parameter is null.");
+
+ struct _priv *p;
+ Evas_Object* ly = NULL;
+
+ CAL_CALLOC(p, 1, struct _priv);
+
+ p->name = _name;
+ p->ad = ad;
+ p->parent = main;
+
+ edje_object_part_geometry_get(CAL_UTIL_GET_EDJ_DATA(ad->main), "cont", NULL, NULL, &p->rect.w, &p->rect.h);
+
+ memset(p->wday, 0, 8*7);
+ memset(p->month, 0, 32*12);
+
+ __cal_year_make_month_text(p);
+
+ ly = cal_util_add_layout(p->ad->nv, "year/layout");
+ if (!ly)
+ {
+ free(p);
+ return NULL;
+ }
+
+ evas_object_data_set(ly, "priv", p);
+ p->ly = ly;
+
+ p->pos_selected = -1;
+
+ __cal_year_create_edje_handle(p);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_year_delete_layout, p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_DOWN, __cal_year_mouse_down, p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_UP, __cal_year_mouse_up, p);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_MOUSE_MOVE, __cal_year_mouse_move, p);
+
+ return p->ly;
+}
+
+static Eina_Bool __cal_year_create_year_with_idler(void* data)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "Input param is null.");
+
+ struct _priv* p = data;
+
+ c_retvm_if(!p->ad, ECORE_CALLBACK_CANCEL, "p->ad is null.");
+
+ if(p->prev_year)
+ __cal_year_delete_year_object(p->prev_year);
+
+ p->prev_year = __cal_year_create_year_object(p->ly, p, CAL_YEAR_PREV_YEAR);
+ c_retvm_if(!p->prev_year, ECORE_CALLBACK_CANCEL, "__cal_year_create_year_object returned null.");
+
+ if(p->next_year)
+ __cal_year_delete_year_object(p->next_year);
+
+ p->next_year = __cal_year_create_year_object(p->ly, p, CAL_YEAR_NEXT_YEAR);
+ c_retvm_if(!p->next_year, ECORE_CALLBACK_CANCEL, "__cal_year_create_year_object returned null.");
+
+ p->idler = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __cal_year_update_current_year(struct _priv* p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "Input parameter is null.");
+
+ p->cur_year = __cal_year_create_year_object(p->ly, p, CAL_YEAR_CURR_YEAR);
+ c_retm_if(!p->cur_year, "__cal_year_create_year_object returned null.");
+
+ elm_object_part_content_set(p->ly, "content", p->cur_year->image);
+}
+
+void cal_year_update_view(Evas_Object *ly)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ly, "Input parameter is null.");
+
+ struct _priv *p;
+ struct appdata *ad;
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ if (!p || CAL_STRCMP(p->name, _name))
+ {
+ ERR("update year view: Invalid object");
+ return;
+ }
+
+ ad = p->ad;
+ c_retm_if(!ad, "p->ad is null.");
+
+ __cal_year_update_current_year(p);
+
+ if(p->idler)
+ {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
+ p->idler = ecore_idler_add(__cal_year_create_year_with_idler, (void*)p);
+
+ __cal_year_update_select(p->cur_year, ad->base_tm.tm_mon);
+}
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <vconf.h>
+
+#include "view.h"
+
+static const char *_name = "main";
+
+typedef struct {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *ly; // self
+ enum cld_view cur_view;
+
+ Evas_Object *content;
+ Evas_Object *tab; /* tab layout */
+ Evas_Object *title; /* title layout */
+
+ Ecore_Timer *down_timer;
+ double intval, intval_init;
+ int delta;
+}cal_main_data;
+
+struct _tabbar_item {
+ enum cld_view view;
+ const char *msgid;
+ const char *title;
+ Evas_Object* (*create)(struct appdata *ad, Evas_Object *ly);
+ void (*update)(Evas_Object *ly);
+ Elm_Object_Item *item;
+};
+
+
+static struct _tabbar_item tabbar_items[] = {
+ [CV_YEAR] = {
+ CV_YEAR,
+ NULL,
+ N_(CAL_UTIL_DATE_FORMAT_5),
+ cal_year_create_view,
+ cal_year_update_view,
+ NULL,
+ },
+ [CV_MONTH] = {
+ CV_MONTH,
+ NULL,
+ N_(CAL_UTIL_DATE_FORMAT_15),
+ cal_month_create_view,
+ cal_month_update_view,
+ NULL,
+ },
+ [CV_DAY] = {
+ CV_DAY,
+ NULL,
+ N_(CAL_UTIL_DATE_FORMAT_7),
+ cal_day_create_view,
+ cal_day_update_view,
+ NULL,
+ },
+ [CV_LIST] = {
+ CV_LIST,
+ NULL,
+ NULL,
+ cal_list_create_view,
+ cal_list_update_view,
+ NULL,
+ },
+};
+
+static void __cal_main_new_button_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *ly = data;
+ cal_main_data *main_data;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!main_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ main_data->ad->base_hour = -1;
+ main_data->ad->cid = 0;
+
+ cal_edit_create_view(main_data->ad, main_data->ly);
+}
+
+static void __cal_main_delete_button_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *ly = data;
+ Evas_Object *ly_delete = NULL;
+ cal_main_data *main_data;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!main_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ ly_delete = cal_list_delete_view_create(main_data->ly,main_data->ad);
+ c_retm_if(!ly_delete, "ly_delete is null");
+ cal_list_delete_update_view(ly_delete);
+
+}
+
+
+static void __cal_main_account_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *ly = data;
+ cal_main_data *main_data;
+
+ main_data= CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!main_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ cal_account_create_view(main_data->ad, ly);
+}
+
+void cal_main_update_title_text(Evas_Object *title, enum cld_view v, struct tm *t, int week_start)
+{
+ c_retm_if(!title, "title is null");
+ c_retm_if(!t, "t is null");
+
+ if (tabbar_items[v].title)
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(title), "title/text", _(tabbar_items[v].title), NULL, t);
+}
+
+static inline void __cal_main_update_title(Evas_Object *ly, enum cld_view v)
+{
+ c_retm_if(!ly, "ly is null");
+ struct appdata *ad;
+ cal_main_data *main_data;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!main_data|| strcmp(main_data->name, _name), "Invaild Object");
+
+ ad = main_data->ad;
+ c_retm_if(!ad, "p->ad is null");
+
+ if (tabbar_items[v].title) {
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(ly), "show,title", "prog");
+ } else {
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(ly), "hide,title", "prog");
+ }
+}
+
+static void __cal_main_tabbar_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ struct appdata *ad = data;
+ c_retm_if(!ad->main, "ad->main is null");
+
+ cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ad->main);
+ c_retm_if(!main_data, "main_data is null");
+
+ Elm_Object_Item *selected_item = NULL;
+ int i = 0;
+
+ selected_item = elm_segment_control_item_selected_get(obj);
+ c_retm_if(!selected_item, "elm_toolbar_selected_item_get returned null");
+
+ for (i = 0; i < sizeof(tabbar_items)/sizeof(tabbar_items[0]); i++) {
+ if (tabbar_items[i].item == selected_item) {
+
+ cal_main_change_view(ad->main, i);
+ return;
+ }
+ }
+}
+
+static void __cal_main_init_navi_title()
+{
+ tabbar_items[CV_YEAR].msgid = C_("IDS_CLD_BODY_YEAR");
+ tabbar_items[CV_MONTH].msgid = C_("IDS_CLD_BODY_VIEWBY_MONTH");
+ tabbar_items[CV_DAY].msgid = C_("IDS_CLD_BODY_DAY");
+ tabbar_items[CV_LIST].msgid = C_("IDS_CLD_BODY_LIST");
+}
+
+static void __cal_main_add_tabbar(struct appdata *ad)
+{
+ c_retm_if(!ad, "ad is null");
+ c_retm_if(!ad->main, "ad->main is null");
+
+ Evas_Object *tabbar = elm_segment_control_add(ad->main);
+ c_retm_if(!tabbar, "tabbar is null");
+
+ elm_object_style_set(tabbar, "body_style");
+
+ ad->tabbar = tabbar;
+
+ tabbar_items[CV_MONTH].item = elm_segment_control_item_add(tabbar, NULL, tabbar_items[CV_MONTH].msgid);
+ c_retm_if(!tabbar_items[CV_MONTH].item, "elm_segment_control_item_add returned null");
+
+ tabbar_items[CV_YEAR].item = elm_segment_control_item_insert_at(tabbar, NULL, tabbar_items[CV_YEAR].msgid, 0);
+ c_retm_if(!tabbar_items[CV_YEAR].item, "elm_segment_control_item_add returned null");
+
+ tabbar_items[CV_DAY].item = elm_segment_control_item_add(tabbar, NULL, tabbar_items[CV_DAY].msgid);
+ c_retm_if(!tabbar_items[CV_DAY].item, "elm_segment_control_item_add returned null");
+
+ tabbar_items[CV_LIST].item = elm_segment_control_item_add(tabbar, NULL, tabbar_items[CV_LIST].msgid);
+ c_retm_if(!tabbar_items[CV_LIST].item, "elm_segment_control_item_add returned null");
+
+ elm_segment_control_item_selected_set( tabbar_items[CV_MONTH].item, EINA_TRUE);
+
+ evas_object_smart_callback_add(tabbar, "changed", __cal_main_tabbar_changed_callback, ad);
+
+ elm_object_item_part_content_set(ad->main_navi_item, "segment3", tabbar);
+}
+
+static void __cal_main_create_content(Evas_Object *ly, cal_main_data *main_data, enum cld_view v)
+{
+ c_retm_if(!ly, "ly is null");
+ c_retm_if(!main_data, "main_data is null");
+
+
+ struct appdata *ad = main_data->ad;
+
+ cal_util_delete_evas_object(&main_data->content);
+
+ if (tabbar_items[v].create)
+ main_data->content = tabbar_items[v].create(ad, ly);
+
+ if (!main_data->content) {
+ ERR("load layout error");
+ return;
+ }
+
+ elm_object_part_content_set(ly, "cont", main_data->content);
+}
+
+static inline int __cal_main_update_tm(struct tm *t, enum cld_view v, int delta)
+{
+ c_retvm_if(!t, -1, "t is null");
+
+ int r;
+
+ switch (v) {
+ case CV_YEAR:
+ r = cal_util_update_tm_year(t, delta);
+ break;
+ case CV_MONTH:
+ r = cal_util_update_tm_month(t, delta);
+ break;
+ case CV_DAY:
+ r = cal_util_update_tm_day(t, delta);
+ break;
+ case CV_LIST:
+ r = 0;
+ break;
+ default:
+ r = -1; // stop timer
+ }
+
+ return r;
+}
+
+static int __cal_main_update_content(cal_main_data *main_data)
+{
+ c_retvm_if(!main_data, -1, "main_data is null");
+
+ struct appdata *ad;
+ enum cld_view v;
+ struct tm tmp;
+ int r;
+
+ ad = main_data->ad;
+ c_retvm_if(!ad, -1, "ad is null");
+
+ v = main_data->cur_view;
+
+ tmp = ad->base_tm;
+ r = __cal_main_update_tm(&tmp, v, main_data->delta);
+ if (r == -1) {
+ DBG("Time out of range");
+ return -1;
+ }
+ ad->base_tm = tmp;
+
+ cal_main_update_title_text(main_data->title, v, &ad->base_tm, ad->wday_start);
+
+ if (tabbar_items[v].update)
+ tabbar_items[v].update(main_data->content);
+
+ ad->is_update_view = EINA_FALSE;
+
+ return 0;
+}
+
+static Eina_Bool __cal_main_update_content_by_timer(void *data)
+{
+ c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "data is null");
+
+ cal_main_data *main_data;
+ int r;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(data);
+ c_retvm_if(!main_data, ECORE_CALLBACK_CANCEL, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ r = __cal_main_update_content(main_data);
+ if (r == -1) {
+ main_data->down_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ main_data->intval = main_data->intval / 1.05;
+ ecore_timer_interval_set(main_data->down_timer, main_data->intval);
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+void cal_main_change_view(Evas_Object *ly, enum cld_view v)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ly, "Input parameter is null");
+ c_retm_if(v < CV_YEAR || v > CV_LIST, "Invaild view index");
+
+ struct appdata *ad;
+ cal_main_data *main_data;
+ Elm_Object_Item * it;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!main_data|| strcmp(main_data->name, _name), "Invaild Object");
+
+ if (main_data->cur_view == v)
+ return;
+
+ ad = main_data->ad;
+ c_retm_if(!ad, "p->ad is null");
+ __cal_main_create_content(ly, main_data, v);
+ __cal_main_update_title(ly, v);
+
+ if (v == CV_LIST) {
+ if (ad->bt_delete == NULL) {
+ it = elm_toolbar_last_item_get(ad->cbar);
+ ad->bt_delete = elm_toolbar_item_insert_before(ad->cbar, it, NULL, S_("IDS_COM_BODY_DELETE"), __cal_main_delete_button_callback,ad->main);
+ }
+ } else {
+ if (ad->bt_delete != NULL) {
+ elm_object_item_del(ad->bt_delete);
+ ad->bt_delete = NULL;
+ }
+ }
+
+ main_data->cur_view = v;
+
+ __cal_main_update_content(main_data);
+
+ if (ad->tabbar)
+ elm_segment_control_item_selected_set( tabbar_items[v].item, EINA_TRUE);
+
+ CAL_FN_END;
+}
+
+static void __cal_main_set_base_tm(Evas_Object *ly)
+{
+ c_retm_if(!ly, "ly is null");
+
+ cal_main_data *main_data;
+ struct appdata *ad;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!main_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ ad = main_data->ad;
+ c_retm_if(!ad, "ad is null");
+
+ if(main_data->cur_view == CV_LIST)
+ {
+ cal_list_scroll_today(ad);
+ return;
+ }
+
+ if(ad->base_tm.tm_year == ad->today_tm.tm_year)
+ if(ad->base_tm.tm_mon == ad->today_tm.tm_mon)
+ if(ad->base_tm.tm_mday == ad->today_tm.tm_mday)
+ return;
+
+ ad->base_tm = ad->today_tm;
+
+ __cal_main_update_content(main_data);
+}
+
+static void __cal_main_inc_start(void *data, Evas_Object *obj, const char *e, const char *src)
+{
+ cal_main_data *main_data;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(data);
+ c_retm_if(!main_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ main_data->intval = main_data->intval_init;
+ main_data->delta = 1;
+
+ if (main_data->down_timer)
+ ecore_timer_del(main_data->down_timer);
+
+ main_data->down_timer = ecore_timer_add(main_data->intval, __cal_main_update_content_by_timer, data);
+ __cal_main_update_content(main_data);
+}
+
+static void __cal_main_dec_start(void *data, Evas_Object *obj, const char *e, const char *src)
+{
+ cal_main_data *main_data;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(data);
+ c_retm_if(!main_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ main_data->intval = main_data->intval_init;
+ main_data->delta = -1;
+
+ if (main_data->down_timer)
+ ecore_timer_del(main_data->down_timer);
+
+ main_data->down_timer = ecore_timer_add(main_data->intval, __cal_main_update_content_by_timer, data);
+ __cal_main_update_content(main_data);
+}
+
+static void __cal_main_stop(void *data, Evas_Object *obj, const char *e, const char *src)
+{
+ cal_main_data *main_data;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(data);
+ c_retm_if(!main_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ if (main_data->down_timer)
+ ecore_timer_del(main_data->down_timer);
+
+ main_data->down_timer = NULL;
+ main_data->delta = 0;
+}
+
+static int __cal_main_add_title(struct appdata *ad, Evas_Object *ly)
+{
+ c_retvm_if(!ad, -1, "ad is null");
+ c_retvm_if(!ly, -1, "ly is null");
+
+ cal_main_data *main_data;
+ Evas_Object *title;
+
+ title = cal_util_add_layout(ad->nv, "main/title");
+ c_retvm_if(!title, -1, "cal_util_add_layout returned null");
+
+ elm_object_part_content_set(ly, "title", title);
+
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(title), "start,inc", "title", __cal_main_inc_start, ly);
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(title), "start,dec", "title", __cal_main_dec_start, ly);
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(title), "stop,dec", "title", __cal_main_stop, ly);
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(title), "stop,inc", "title", __cal_main_stop, ly);
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retvm_if(!main_data, -1, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ main_data->title = title;
+ ad->title = title;
+
+ return 0;
+}
+
+static void __cal_main_update_all(void* data)
+{
+ c_retm_if(!data, "data is null");
+
+ struct appdata* ad = data;
+ cal_main_update_view(ad);
+}
+
+void cal_main_add_changed_callback(struct appdata * ad)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ad, "ad is null");
+
+ CALENDAR_SVC_ADD_EVENT_CHANGED_CALLBACK(cal_main_update_view, ad);
+
+ CALENDAR_SVC_ADD_CALENDAR_CHANGED_CALLBACK(CAL_STRUCT_CALENDAR, __cal_main_update_all, ad);
+
+ CAL_FN_END;
+}
+
+void cal_main_del_changed_callback()
+{
+ CAL_FN_START;
+
+ CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK(cal_main_update_view);
+
+ CALENDAR_SVC_DEL_CALENDAR_CHANGED_CALLBACK(CAL_STRUCT_CALENDAR, __cal_main_update_all);
+
+ CAL_FN_END;
+}
+
+static void __cal_main_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!obj, "obj is null");
+
+ cal_main_data *main_data;
+
+ main_data = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!main_data, "CAL_UTIL_GET_PRIV_DATA returned null");
+
+ cal_main_del_changed_callback();
+
+ if (main_data->down_timer)
+ ecore_timer_del(main_data->down_timer);
+
+ if (main_data->ad->tabbar)
+ evas_object_del(main_data->ad->tabbar);
+
+ main_data->ad->main = NULL;
+
+ free(main_data);
+
+ CAL_FN_END;
+}
+
+static Evas_Object *__cal_main_create_main_layout(struct appdata *ad)
+{
+ c_retvm_if(!ad, NULL, "ad is null");
+
+ int r;
+ Evas_Object *ly;
+ cal_main_data *main_data = calloc(1, sizeof(cal_main_data));
+ c_retvm_if(!main_data, NULL, "calloc(1, sizeof(cal_main_data)) returned null");
+
+ main_data->name = _name;
+
+ ly = cal_util_add_layout(ad->nv, main_data->name);
+ if (!ly)
+ {
+ free(main_data);
+ return NULL;
+ }
+
+ main_data->ad = ad;
+ main_data->ly = ly;
+ main_data->intval_init = 0.5;
+ main_data->ad->bt_delete = NULL;
+ evas_object_data_set(ly, "priv", main_data);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_main_delete_layout, NULL);
+
+ r = __cal_main_add_title(ad, ly);
+ c_retvm_if(r != 0, NULL, "__cal_main_add_title is failed");
+
+ return ly;
+}
+
+static void __cal_main_center_button_callback(void *data, Evas_Object* obj, void* event_info)
+{
+ c_retm_if(!data, "data is null");
+
+ __cal_main_set_base_tm(data);
+}
+
+static void __cal_main_back_button_clicked_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+
+ struct appdata* ad = (struct appdata*)data;
+
+ elm_win_lower(ad->win);
+}
+
+static void __cal_main_set_naviframe( struct appdata *ad)
+{
+ c_retm_if(!ad, "ad is null");
+
+ CAL_FN_START;
+
+ Evas_Object *cbar;
+ Evas_Object *back_button;
+
+ cbar = cal_util_add_controlbar(ad->nv);
+ c_retm_if(!cbar, "cal_util_add_controlbar returned null");
+ ad->cbar = cbar;
+
+ elm_toolbar_item_append(cbar, NULL, S_("IDS_COM_BODY_CALENDAR"), __cal_main_account_button_callback, ad->main);
+ elm_toolbar_item_append(cbar, NULL, S_("IDS_COM_BODY_TODAY"), __cal_main_center_button_callback, ad->main);
+ ad->bt_new = elm_toolbar_item_append(cbar, NULL, S_("IDS_COM_BODY_CREATE"), __cal_main_new_button_callback, ad->main);
+
+ back_button = elm_button_add(ad->nv);
+ c_retm_if(!back_button, "elm_button_add returned null");
+ evas_object_smart_callback_add(back_button, "clicked", __cal_main_back_button_clicked_callback, ad);
+
+ ad->main_navi_item = elm_naviframe_item_push(ad->nv, S_("IDS_COM_BODY_CALENDAR"), back_button, NULL, ad->main, "segment");
+
+ elm_object_item_part_content_set(ad->main_navi_item, "controlbar", cbar);
+
+ elm_object_style_set(back_button, "naviframe/back_btn/default");
+
+ __cal_main_init_navi_title();
+
+ __cal_main_add_tabbar(ad);
+
+ CAL_FN_END;
+}
+
+void cal_main_create_view(struct appdata *ad)
+{
+ CAL_FN_START;
+
+ c_retm_if(!ad, "data is null");
+
+ c_retm_if(ad->request_view < CV_YEAR && ad->request_view > CV_DETAIL, "request_view is invalid");
+
+ if (!ad->main) {
+ ad->main = __cal_main_create_main_layout(ad);
+ c_retm_if(!ad->main, "ad->main is null");
+
+ __cal_main_set_naviframe(ad);
+ }
+
+ cal_main_change_view(ad->main, ad->request_view);
+
+ CAL_FN_END;
+}
+
+static void __cal_main_set_first_day(struct appdata *ad)
+{
+ c_retm_if(!ad, "ad is null");
+
+ int r,val;
+ r = vconf_get_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT,&val);
+ if(0 > r)
+ ad->wday_start = 0;
+ else
+ ad->wday_start = val;
+}
+
+void cal_main_update_view(void *data)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ struct appdata* ad = data;
+ c_retm_if(!ad->main, "ad->main is null");
+
+ cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ad->main);
+ c_retm_if(!main_data, "main_data is null");
+
+ __cal_main_set_first_day(ad);
+
+ if (CAL_STRCMP(main_data->name, _name))
+ {
+ ERR("Invalid object");
+ return;
+ }
+
+ __cal_main_create_content(main_data->ly, main_data, main_data->cur_view);
+ __cal_main_update_content(main_data);
+
+ CAL_FN_END;
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <Ecore_X.h>
+#include <utilX.h>
+#include <mm_error.h>
+#include <pmapi.h>
+#include <wav_player.h>
+
+#include "view.h"
+#include "alm-mgr.h"
+#include "view-ring.h"
+
+#define DEFAULT_TONE RESDIR "/sounds/On_time.wav"
+
+static const char *_name = "ring";
+
+typedef struct {
+ const char *name;
+ struct appdata *ad;
+ Evas_Object *win;
+ Evas_Object *ly;
+
+ Eina_List *cslist;
+
+ Ecore_Timer *tmr;
+ int mm_id;
+
+ int cid;
+
+ int handle;
+ char *ring_path;
+
+ int is_stop;
+ int is_wav_stop;
+}cal_ring_data;
+
+static void __cal_ring_set_window_property(Evas_Object *win)
+{
+ Ecore_X_Window w;
+
+ w = elm_win_xwindow_get(win);
+
+ ecore_x_netwm_window_type_set(w, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+ utilx_set_system_notification_level(ecore_x_display_get(), w, UTILX_NOTIFICATION_LEVEL_NORMAL);
+}
+
+static void __cal_ring_stop_alarm(cal_ring_data *p)
+{
+ CAL_FN_START;
+
+ if (p->mm_id != -1) {
+ wav_player_stop(p->mm_id);
+ p->mm_id = -1;
+ p->is_wav_stop = 1;
+ }
+
+ if (p->ring_path) {
+ free(p->ring_path);
+ p->ring_path = NULL;
+ }
+}
+
+static void __cal_ring_window_delete_callback(void *data, Evas *e, Evas_Object *obj, void *event)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ cal_ring_data *p = data;
+
+ if (p->tmr)
+ ecore_timer_del(p->tmr);
+
+ if (p->cslist)
+ CALENDAR_SVC_FREE_CS_LIST(&p->cslist);
+
+ free(p);
+}
+
+static void __cal_ring__cal_ring_fill_cs(cal_struct *cs, Evas_Object *ly)
+{
+ const char *str;
+ time_t now;
+ struct tm tm;
+ int hour;
+ const char *ampm;
+
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
+ if (!str)
+ str = C_("IDS_CLD_BODY_NO_TITLE");
+
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(ly), "text/title", str);
+
+ now = time(NULL);
+ localtime_r(&now, &tm);
+
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(ly), "text/ampm", NULL, CAL_UTIL_TIME_FORMAT_4, &tm);
+ cal_util_set_time_text(CAL_UTIL_GET_EDJ_DATA(ly), "text/currenttime", NULL, CAL_UTIL_TIME_FORMAT_2, &tm);
+
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "min,%02d", tm.tm_min);
+
+ if (tm.tm_hour < 12)
+ {
+ ampm = "go,am";
+ hour = tm.tm_hour;
+ }
+ else
+ {
+ ampm = "go,pm";
+ hour = tm.tm_hour - 12;
+ }
+
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(ly), "hour,%02d", hour * 5 + (tm.tm_min / 12));
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(ly), ampm, "prog");
+}
+
+
+static void __cal_ring_play_alarm_completed_cb(int id, void *user_data)
+{
+ CAL_FN_START;
+
+ c_retm_if(NULL == user_data, "user_data is NULL");
+ cal_ring_data *p = user_data;
+ int mm_id;
+ if (0 == p->is_stop) {
+ wav_player_start(p->ring_path, SOUND_TYPE_RINGTONE, __cal_ring_play_alarm_completed_cb, p, &mm_id);
+ p->mm_id = mm_id;
+ } else {
+ evas_object_del(p->win);
+ }
+
+}
+
+static void __cal_ring_play_alarm(cal_ring_data *p, const char *path)
+{
+ c_retm_if(NULL == p, "p is NULL.");
+ c_retm_if(NULL == path, "path is NULL.");
+
+ int r;
+ int mm_id = 0;
+
+ __cal_ring_stop_alarm(p);
+
+ p->ring_path = strdup(path);
+
+ r = wav_player_start(path, SOUND_TYPE_RINGTONE, __cal_ring_play_alarm_completed_cb, p, &mm_id);
+ c_retm_if(r!= WAV_PLAYER_ERROR_NONE, "wav_player_start is failed.");
+
+ p->is_wav_stop = 0;
+
+ p->mm_id = mm_id;
+}
+
+static void __cal_ring_fill(cal_ring_data *p)
+{
+ cal_struct *cs;
+ const char *tone = NULL;
+ GList *al = NULL;
+ cal_value *val;
+ int cnt;
+
+ if (p->cid)
+ return; // aleady exist
+
+ if (!p->cslist)
+ return; // TODO: exit??
+
+ cs = eina_list_data_get(p->cslist);
+ if (!cs)
+ return; // TODO: exit??
+
+ __cal_ring__cal_ring_fill_cs(cs, p->ly);
+ p->cid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_INDEX);
+ DBG("Current event id: %d", p->cid);
+
+ CALENDAR_SVC_STRUCT_GET_LIST(cs, CAL_VALUE_LST_ALARM, &al);
+ if (al)
+ {
+ cnt = g_list_length(al);
+ c_retm_if(!cnt, "length of alarm list is 0");
+
+ val = al->data;
+ c_retm_if(!val, "data of alarm list is null");
+
+ tone = CALENDAR_SVC_VALUE_GET_STR(val, CAL_VALUE_TXT_ALARMS_TONE);
+ }
+
+ if (!tone || tone[0] == '\0')
+ tone = DEFAULT_TONE;
+
+ DBG("Ring tone: %s", tone);
+ __cal_ring_play_alarm(p, tone);
+
+ p->cslist = eina_list_remove(p->cslist, cs);
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+}
+
+static void __cal_ring_stop_button_callback(void *data, Evas_Object *eo, const char *e, const char *s)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ cal_ring_data *p = data;
+
+ p->cid = 0;
+
+ if (p->cslist) {
+ __cal_ring_fill(p);
+ return;
+ }
+
+ if (p->is_wav_stop)
+ evas_object_del(p->win);
+ else
+ p->is_stop = 1;
+}
+
+static Evas_Object* __cal_ring_create_view(struct appdata *ad)
+{
+ c_retvm_if(!ad, NULL, "ad is null");
+
+ cal_ring_data *p = calloc(1, sizeof(cal_ring_data));
+ c_retvm_if(!p, NULL, "p is null");
+
+ p->name = _name;
+ p->ad = ad;
+ p->mm_id = -1;
+ p->is_wav_stop = 1;
+
+ p->win = cal_util_add_window(CALENDAR_RING , NULL, NULL);
+ if (!p->win)
+ {
+ ERR("cal_util_add_window(CALENDAR_RING, NULL, NULL) is failed");
+ free(p);
+ return NULL;
+ }
+
+ __cal_ring_set_window_property(p->win);
+ evas_object_data_set(p->win, "priv", p);
+
+ p->ly = cal_util_add_layout(p->win, p->name);
+ if (!p->ly)
+ {
+ ERR("cal_util_add_layout() is failed");
+ evas_object_del(p->win);
+ free(p);
+ return NULL;
+ }
+
+ elm_win_resize_object_add(p->win, p->ly);
+
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(p->ly), "text/stop", _("Stop"));
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(p->ly), "stop", "edj", __cal_ring_stop_button_callback, p);
+
+ evas_object_event_callback_add(p->win, EVAS_CALLBACK_DEL, __cal_ring_window_delete_callback, p);
+
+ pm_change_state(LCD_NORMAL);
+
+ evas_object_show(p->win);
+
+ return p->win;
+}
+
+static Eina_Bool __cal_ring_timer_callback(void *data)
+{
+ CAL_FN_START;
+
+ cal_ring_data *p = data;
+
+ // TODO: add quickpanel noti??
+ DBG("Alarm ring timeout!");
+
+ __cal_ring_stop_alarm(p);
+
+ evas_object_del(p->win);
+
+ // TODO: exit??
+
+ p->tmr = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static int __cal_ring_append_alarm(Evas_Object *win, Eina_List *cslist)
+{
+ cal_ring_data *p = CAL_UTIL_GET_PRIV_DATA(win);
+
+ if (!p || CAL_STRCMP(p->name, _name))
+ {
+ ERR("Invalid object");
+ return -1;
+ }
+
+ p->cslist = eina_list_merge(p->cslist, cslist);
+
+ __cal_ring_fill(p);
+
+ if (!p->tmr)
+ {
+ p->tmr = ecore_timer_add(60.0, __cal_ring_timer_callback, p);
+ DBG("Add timer");
+ }
+
+ return 0;
+}
+
+static int __cal_ring_create_alarm(struct appdata *ad, Eina_List *cslist)
+{
+ c_retvm_if(!ad, -1, "ad is null");
+ c_retvm_if(!cslist, -1, "cslist is null");
+
+ Evas_Object *win = __cal_ring_create_view(ad);
+ c_retvm_if(!win, -1, "__cal_ring_create_view returned null");
+
+ return __cal_ring_append_alarm(win, cslist);
+}
+
+int cal_ring_add_alarm(struct appdata *ad, Eina_List *csl)
+{
+ c_retvm_if(!ad, -1, "ad is null");
+ c_retvm_if(!csl, -1, "csl is null");
+
+ return __cal_ring_create_alarm(ad, csl);
+}
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_RING_H__
+#define __CALENDAR_RING_H__
+
+#include "cld.h"
+
+int cal_ring_add_alarm(struct appdata *ad, Eina_List *csl);
+
+#endif /* __CALENDAR_RING_H__ */
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_VIEW_H__
+#define __CALENDAR_VIEW_H__
+
+#include "cld.h"
+
+/* view-edit */
+void cal_edit_create_view(struct appdata *ad, Evas_Object *parent);
+
+/* view-acct */
+void cal_account_create_view(struct appdata *ad, Evas_Object *parent);
+
+void cal_main_update_title_text(Evas_Object *title, enum cld_view v, struct tm *t, int week_start);
+void cal_main_change_view(Evas_Object *ly, enum cld_view v);
+void cal_main_update_view(void* data);
+void cal_main_create_view(struct appdata *ad);
+void cal_main_add_changed_callback(struct appdata * ad);
+
+Evas_Object* cal_year_create_view(struct appdata *ad, Evas_Object *ly);
+Evas_Object* cal_month_create_view(struct appdata *ad, Evas_Object *ly);
+Evas_Object* cal_week_create_view(struct appdata *ad, Evas_Object *ly);
+Evas_Object* cal_day_create_view(struct appdata *ad, Evas_Object *ly);
+Evas_Object* cal_list_create_view(struct appdata *ad, Evas_Object *ly);
+Evas_Object* cal_list_delete_view_create(Evas_Object *parent, struct appdata *ad);
+
+void cal_year_update_view(Evas_Object *ly);
+void cal_month_update_view(Evas_Object *ly);
+void cal_week_update_view(Evas_Object *ly);
+void cal_list_update_view(Evas_Object *ly);
+void cal_day_update_view(Evas_Object *ly);
+void cal_list_delete_update_view(Evas_Object *ly);
+
+
+/* month */
+Evas_Object* cal_month_calendar_create_content(struct tm *t, struct appdata *ad,
+ Evas_Object *ly, Eina_Bool tmp);
+void cal_month_calendar_update_content(Evas_Object *ly, struct tm *t);
+int cal_month_get_weekline(Evas_Object *ly);
+void cal_month_calendar_update_select(Evas_Object *month);
+
+
+/* time block in day view */
+Evas_Object* cal_day_create_time_block(struct tm *tm, struct appdata *ad, Evas_Object *parent);
+void cal_day_time_update_time_block(Evas_Object *ly, struct tm *tm);
+void cal_day_update_genlist(Evas_Object *ly);
+
+void cal_list_scroll_today(struct appdata* ad);
+
+#endif /* __CALENDAR_VIEW_H__ */
+
--- /dev/null
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+SET(UG_LIB /opt/ug/lib)
+SET(UG_LOCALE /opt/ug/res/locale)
+
+INCLUDE(FindPkgConfig)
+PKG_CHECK_MODULES(UG_PKGS REQUIRED elementary ui-gadget calendar-service icu-i18n accounts-svc)
+
+FOREACH(flag ${UG_PKGS_CFLAGS})
+ SET(UG_CFLAGS "${UG_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+ADD_SUBDIRECTORY(settings)
+ADD_SUBDIRECTORY(edit)
+ADD_SUBDIRECTORY(detail)
+ADD_SUBDIRECTORY(list)
--- /dev/null
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
+
+SET(UG_DETAIL_SRCS
+ ug-detail.c
+ ug-detail-view.c
+ ${CMAKE_SOURCE_DIR}/src/view-detail.c
+ ${CMAKE_SOURCE_DIR}/src/view-edit.c
+ ${CMAKE_SOURCE_DIR}/src/edit-alarm.c
+ ${CMAKE_SOURCE_DIR}/src/edit-repeat.c
+)
+
+ADD_DEFINITIONS("-DUGLOCALE=\"${UG_LOCALE}\"")
+
+ADD_LIBRARY(${UGDETAIL} SHARED ${UG_DETAIL_SRCS})
+SET_TARGET_PROPERTIES(${UGDETAIL} PROPERTIES COMPILE_FLAGS "${UG_CFLAGS}")
+TARGET_LINK_LIBRARIES(${UGDETAIL} ${COMMON_LIB} ${UG_PKGS_LDFLAGS})
+
+INSTALL(TARGETS ${UGDETAIL} DESTINATION ${UG_LIB})
--- /dev/null
+static void _ug_destroy(struct ui_gadget *ug, void *priv)\r
+{\r
+ struct _priv *p = priv;\r
+\r
+ if (ug)\r
+ ug_destroy(ug);\r
+\r
+ //_update_cont(p); \r
+}\r
+\r
+static void _ug_result(struct ui_gadget *ug, bundle *res, void *priv)\r
+{\r
+ CAL_DBG("%s", __func__);\r
+ \r
+}\r
+\r
+static void _ug_layout(struct ui_gadget *ug, enum ug_mode mode, void *priv)\r
+{\r
+ Evas_Object *base;\r
+\r
+ assert(ug);\r
+\r
+ base = ug_get_layout(ug);\r
+ if (!base) {\r
+ ug_destroy(ug);\r
+ return;\r
+ }\r
+\r
+ switch (mode) {\r
+ case UG_MODE_FULLVIEW:\r
+ elm_win_resize_object_add(ug_get_window(), base);\r
+ evas_object_show(base);\r
+ break;\r
+ default:\r
+ CAL_DBG("Unsupported ug layout");\r
+ break;\r
+ }\r
+}\r
+\r
+\r
+static void gl_sel(void *data, Evas_Object *obj, void *ei)\r
+{\r
+ printf("+gl_sel\n");\r
+ \r
+ cal_struct *cs = data;\r
+ int idx;\r
+ Elm_Genlist_Item *it;\r
+ struct _priv *p;\r
+\r
+ it = elm_genlist_selected_item_get(obj);\r
+ if (it)\r
+ elm_genlist_item_selected_set(it, EINA_FALSE);\r
+\r
+ idx = CAL_CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_INDEX);\r
+\r
+ p = CAL_UTIL_GET_PRIV_DATA(obj);\r
+ assert(p);\r
+\r
+ p->ad->cid = idx;\r
+\r
+ #if 0\r
+ push_detail_view(p->ad, p->parent);\r
+ #else\r
+ struct ui_gadget *ug = NULL;\r
+ bundle *req = NULL;\r
+ struct ug_cbs uc; \r
+ char index[100] = {0};\r
+\r
+ req = bundle_create();\r
+ if (NULL == req)\r
+ {\r
+ return; \r
+ }\r
+ \r
+ //prepare the index of calendar for bundle\r
+ g_snprintf(index, sizeof(index), "%d", p->ad->cid);\r
+ bundle_add(req, "index", index); \r
+ \r
+ memset(&uc, 0, sizeof(struct ug_cbs));\r
+ uc.destroy_cb = _ug_destroy;\r
+ uc.layout_cb = _ug_layout;\r
+ uc.result_cb = _ug_result;\r
+ uc.priv = p;\r
+\r
+ ug = ug_create(NULL, "calendar-detail-efl", UG_MODE_FULLVIEW, req, &uc);\r
+ if (NULL == ug)\r
+ {\r
+ ERR("ug create error\n");\r
+ }\r
+\r
+ bundle_free(req);\r
+ #endif\r
+ printf("-gl_sel\n");\r
+}\r
+\r
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_DETAIL_H__
+#define __CALENDAR_DETAIL_H__
+
+
+#endif /* __CALENDAR_DETAIL_H__ */
+
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <ui-gadget-module.h>
+#include <libintl.h>
+#include <appcore-common.h>
+
+#include "cld.h"
+#include "ug-detail.h"
+#include "detail.h"
+
+static int __cal_detail_ug_initialize(ug_data* ugd)
+{
+ int r;
+
+ r = CALENDAR_SVC_CONNECT();
+ if (r != CAL_SUCCESS)
+ {
+ ERR("calendar service connect failed");
+ return -1;
+ }
+
+ appcore_set_i18n(CALENDAR_PACKAGE, LOCALEDIR);
+
+ ugd->theme = elm_theme_new();
+ if(NULL == ugd->theme)
+ {
+ return -1;
+ }
+ elm_theme_ref_set(ugd->theme, NULL); //refer to default theme(NULL)
+
+ cal_util_connect_pattern_generator();
+
+ return 0;
+}
+
+static int __cal_detail_ug_finish()
+{
+ int r;
+
+ r = CALENDAR_SVC_DISCONNECT();
+ if (r != CAL_SUCCESS)
+ {
+ ERR("calendar service close failed");
+ return -1;
+ }
+
+ elm_theme_extension_del(NULL, EDJDIR "/calendar_theme.edj");
+
+ cal_util_disconnect_pattern_generator();
+
+ return 0;
+}
+
+static void __cal_detail_ug_back_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ ug_data *ugd = data;
+
+ if (ugd && ugd->ug)
+ ug_destroy_me(ugd->ug);
+}
+
+static void __cal_detail_ug_add_back_button(ug_data *ugd)
+{
+ Evas_Object *bt;
+
+ bt = elm_button_add(ugd->nv);
+ if (!bt)
+ return;
+
+ elm_object_style_set(bt, "naviframe/back_btn/default");
+ // TODO: i18n
+ elm_object_text_set(bt, "Back");
+ evas_object_show(bt);
+
+ Elm_Object_Item* top_navi_item = elm_naviframe_top_item_get(ugd->nv);
+ CAL_ASSERT(top_navi_item);
+
+ elm_object_item_part_content_set(top_navi_item, "prev_btn", bt);
+
+ evas_object_smart_callback_add(bt, "clicked", __cal_detail_ug_back_button_callback, ugd);
+}
+
+static Evas_Object *__cal_detail_ug_create_layout(Evas_Object *parent, ug_data *ugd)
+{
+ ugd->base = cal_util_add_layout(parent, NULL);
+ CAL_ASSERT(ugd->base);
+
+ ugd->nv = elm_naviframe_add(ugd->base);
+ CAL_ASSERT(ugd->nv);
+
+ ugd->bg = cal_util_add_bg(ugd->base, EINA_FALSE);
+ CAL_ASSERT(ugd->bg);
+
+ elm_object_theme_set(ugd->nv, ugd->theme);
+ evas_object_show(ugd->nv);
+
+ ugd->u_type = UG_DETAIL;
+ cal_detail_create_view((struct appdata*)ugd, parent);
+ elm_object_part_content_set(ugd->base, "elm.swallow.content", ugd->nv);
+ elm_object_part_content_set(ugd->base, "elm.swallow.bg", ugd->bg);
+
+ __cal_detail_ug_add_back_button(ugd);
+
+ return ugd->base;
+
+}
+
+static void *__cal_detail_ug_create_callback(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv)
+{
+ Evas_Object *parent;
+ ug_data *ugd;
+ Evas_Object *base;
+ const char *str = NULL;
+
+ if (!ug || !priv)
+ return NULL;
+ ugd = priv;
+ ugd->ug = ug;
+
+ str = bundle_get_val(data, "index");
+ if(NULL != str)
+ ugd->cid = atoi(str);
+ else
+ ugd->cid = 0;
+
+ if (mode != UG_MODE_FULLVIEW)
+ return NULL;
+ parent = ug_get_parent_layout(ug);
+ CAL_ASSERT(parent);
+
+ ugd->win = ug_get_window();
+ CAL_ASSERT(ugd->win);
+
+ base = __cal_detail_ug_create_layout(parent, ugd);
+ if (!base)
+ {
+ CALENDAR_SVC_DISCONNECT();
+ return NULL;
+ }
+ return base;
+}
+
+static void __cal_detail_ug_destroy_callback(struct ui_gadget *ug, bundle *data, void *priv)
+{
+ ug_data *ugd;
+
+ if (!ug || !priv)
+ return;
+
+ ugd = priv;
+
+ cal_util_delete_evas_object(&ugd->base);
+}
+
+static void __cal_detail_ug_key_callback(struct ui_gadget *ug, enum ug_key_event evt,
+ bundle *data, void *priv)
+{
+ if (!ug)
+ return;
+
+ DBG("UG: key event %d", evt);
+
+ switch (evt) {
+ case UG_KEY_EVENT_END:
+ ug_destroy_me(ug);
+ break;
+ default:
+ break;
+ }
+}
+
+static inline void __cal_detail_ug_bind_text_domain()
+{
+ const char *r;
+
+ r = bindtextdomain(UGSETTINGS, UGLOCALE);
+ if (!r)
+ ERR("UG: bindtextdomain error");
+}
+
+API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ ug_data *ugd;
+
+ if (!ops)
+ return -1;
+
+ CAL_CALLOC(ugd, 1, ug_data);
+
+ ops->create = __cal_detail_ug_create_callback;
+ ops->destroy = __cal_detail_ug_destroy_callback;
+ ops->key_event = __cal_detail_ug_key_callback;
+ ops->priv = ugd;
+ ops->opt = UG_OPT_INDICATOR_PORTRAIT_ONLY;
+
+ __cal_detail_ug_bind_text_domain();
+
+ __cal_detail_ug_initialize(ugd);
+
+ return 0;
+}
+
+API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ ug_data *ugd;
+
+ if (!ops)
+ return;
+
+ __cal_detail_ug_finish();
+
+ ugd = ops->priv;
+ free(ugd);
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_UG_DETAIL_H__
+#define __CALENDAR_UG_DETAIL_H__
+
+#endif /* __CALENDAR_UG_DETAIL_H__ */
--- /dev/null
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
+
+SET(UG_EDIT_SRCS
+ ug-edit.c
+ ${CMAKE_SOURCE_DIR}/src/view-edit.c
+ ${CMAKE_SOURCE_DIR}/src/edit-alarm.c
+ ${CMAKE_SOURCE_DIR}/src/edit-repeat.c
+)
+
+ADD_DEFINITIONS("-DUGLOCALE=\"${UG_LOCALE}\"")
+
+ADD_LIBRARY(${UGEDIT} SHARED ${UG_EDIT_SRCS})
+SET_TARGET_PROPERTIES(${UGEDIT} PROPERTIES COMPILE_FLAGS "${UG_CFLAGS}")
+TARGET_LINK_LIBRARIES(${UGEDIT} ${COMMON_LIB} ${UG_PKGS_LDFLAGS})
+
+INSTALL(TARGETS ${UGEDIT} DESTINATION ${UG_LIB})
--- /dev/null
+static void _ug_destroy(struct ui_gadget *ug, void *priv)\r
+{\r
+ struct _priv *p = priv;\r
+\r
+ if (ug)\r
+ ug_destroy(ug);\r
+\r
+ _update_cont(p); \r
+}\r
+\r
+static void _ug_result(struct ui_gadget *ug, bundle *res, void *priv)\r
+{\r
+ CAL_DBG("%s", __func__);\r
+ \r
+}\r
+\r
+static void _ug_layout(struct ui_gadget *ug, enum ug_mode mode, void *priv)\r
+{\r
+ Evas_Object *base;\r
+\r
+ assert(ug);\r
+\r
+ base = ug_get_layout(ug);\r
+ if (!base) {\r
+ ug_destroy(ug);\r
+ return;\r
+ }\r
+\r
+ switch (mode) {\r
+ case UG_MODE_FULLVIEW:\r
+ elm_win_resize_object_add(ug_get_window(), base);\r
+ evas_object_show(base);\r
+ break;\r
+ default:\r
+ CAL_DBG("Unsupported ug layout");\r
+ break;\r
+ }\r
+}\r
+\r
+static void bt_new_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+ Evas_Object *ly = NULL;\r
+ struct _priv *p = NULL;\r
+ struct ui_gadget *ug = NULL;\r
+ struct ug_cbs uc; \r
+ bundle *req = NULL;\r
+ char year[10] = {0};\r
+ char month[10] = {0};\r
+ char day[10] = {0};\r
+ char hour[10] = {0};\r
+ char index[100] = {0};\r
+ \r
+ char note[256] = {0};\r
+ ly = data;\r
+ p = CAL_UTIL_GET_PRIV_DATA(ly); \r
+\r
+ req = bundle_create();\r
+ if (NULL == req)\r
+ {\r
+ return; \r
+ }\r
+ \r
+ //prepare the time for bundle \r
+ g_snprintf(year, sizeof(year), "%d", p->ad->base_tm.tm_year);\r
+ bundle_add(req, "year", year);\r
+ \r
+ g_snprintf(month, sizeof(month), "%d", p->ad->base_tm.tm_mon);\r
+ bundle_add(req, "month", month);\r
+ \r
+ g_snprintf(day, sizeof(day), "%d", p->ad->base_tm.tm_mday);\r
+ bundle_add(req, "day", day);\r
+ \r
+ g_snprintf(hour, sizeof(hour), "%d", p->ad->base_hour);\r
+ bundle_add(req, "hour", hour);\r
+ \r
+ //prepare the index of calendar for bundle\r
+ p->ad->cid = 0;\r
+ g_snprintf(index, sizeof(index), "%d", p->ad->cid);\r
+ bundle_add(req, "index", index); \r
+ \r
+ //prepare for noti to support memo module\r
+ g_snprintf(note, sizeof(note), "hello");\r
+ bundle_add(req, "note", note); \r
+ \r
+ memset(&uc, 0, sizeof(struct ug_cbs));\r
+ uc.destroy_cb = _ug_destroy;\r
+ uc.layout_cb = _ug_layout;\r
+ uc.result_cb = _ug_result;\r
+ uc.priv = p;\r
+\r
+ ug = ug_create(NULL, "calendar-edit-efl", UG_MODE_FULLVIEW, req, &uc);\r
+ if (NULL == ug)\r
+ {\r
+ ERR("ug create error\n");\r
+ }\r
+\r
+ bundle_free(req); \r
+}\r
+\r
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <ui-gadget-module.h>
+#include <libintl.h>
+#include <appcore-common.h>
+
+#include "view.h"
+
+#define MAX_STR_LEN 1024
+
+// TODO: get full path from caller
+#define VFILE_PATH "/opt/data/ug-calendar"
+
+static void __cal_edit_ug_init_base_time(ug_data *ugd)
+{
+ if (NULL == ugd)
+ {
+ return;
+ }
+ struct tm tm;
+ time_t now;
+
+ now = time(NULL);
+ localtime_r(&now, &tm);
+ tm.tm_min = 0; // min, sec reset for mktime()
+ tm.tm_sec = 0;
+
+ ugd->today_tm = tm;
+ ugd->base_tm = ugd->today_tm;
+}
+
+static Evas_Object *__cal_edit_ug_create_layout(Evas_Object *parent, ug_data *ugd)
+{
+ ugd->base = cal_util_add_layout(parent, NULL);
+ CAL_ASSERT(ugd->base);
+
+ ugd->nv = elm_naviframe_add(parent);
+ CAL_ASSERT(ugd->nv);
+
+ ugd->bg = cal_util_add_bg(ugd->base, EINA_FALSE);
+ CAL_ASSERT(ugd->bg);
+
+ elm_object_part_content_set(ugd->base, "elm.swallow.content", ugd->nv);
+ elm_object_part_content_set(ugd->base, "elm.swallow.bg", ugd->bg);
+ elm_object_theme_set(ugd->nv, ugd->theme);
+
+ ugd->u_type = UG_EDIT;
+
+ __cal_edit_ug_init_base_time(ugd);
+
+ cal_edit_create_view(ugd, ugd->nv);
+
+ return ugd->base;
+}
+
+static void __cal_edit_ug_get_strnote(ug_data *ugd, bundle *data)
+{
+ if (NULL == ugd || NULL == data)
+ {
+ return;
+ }
+
+ const char *str = bundle_get_val(data, "note");
+ if (str)
+ ugd->strnote = strdup(str);
+ else
+ ugd->strnote = NULL;
+}
+static void __cal_edit_ug_get_bundle_parameter(ug_data *ugd, bundle *data)
+{
+ const char *str = NULL;
+ time_t t = time(NULL);
+ struct tm cur_tm;
+ struct tm* returned_tm = gmtime_r(&t, &cur_tm);
+ if (!returned_tm)
+ {
+ ERR("gmtime return null");
+ return;
+ }
+
+ if (NULL != data)
+ {
+ //year
+ str = bundle_get_val(data, "year");
+ if (NULL != str)
+ {
+ ugd->tm_year = atoi(str);
+ }
+ else
+ {
+ ugd->tm_year = cur_tm.tm_year;
+ }
+
+ //month
+ str = bundle_get_val(data, "month");
+ if (NULL != str)
+ {
+ ugd->tm_mon = atoi(str);
+ }
+ else
+ {
+ ugd->tm_mon = cur_tm.tm_mon;
+ }
+
+ //day
+ str = bundle_get_val(data, "day");
+ if (NULL != str)
+ {
+ ugd->tm_mday = atoi(str);
+ }
+ else
+ {
+ ugd->tm_mday = cur_tm.tm_mday;
+ }
+
+
+ //day
+ str = bundle_get_val(data, "hour");
+ if (NULL != str)
+ {
+ ugd->base_hour = atoi(str);
+ }
+ else
+ {
+ ugd->base_hour = -1;
+ }
+
+ //index
+ str = bundle_get_val(data, "index");
+ if (NULL != str)
+ {
+ ugd->cid = atoi(str);
+ }
+ else
+ {
+ ugd->cid = 0;
+ }
+
+ str = bundle_get_val(data, "account_id");
+ if (NULL != str)
+ {
+ ugd->account_id = atoi(str);
+ }
+ else
+ {
+ ugd->account_id = 0;
+ }
+
+ str = bundle_get_val(data, "mail_id");
+ if (NULL != str)
+ {
+ ugd->mail_id = atoi(str);
+ }
+ else
+ {
+ ugd->mail_id = 0;
+ }
+
+ str = bundle_get_val(data, "src_box");
+ if (NULL != str)
+ {
+ ugd->src_box = strdup(str);
+ }
+ else
+ {
+ ugd->src_box = NULL;
+ }
+
+ __cal_edit_ug_get_strnote(ugd, data);
+ }
+
+}
+
+static void *__cal_edit_ug_create_callback(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv)
+{
+ if (NULL == ug || NULL == priv)
+ {
+ return NULL;
+ }
+
+ Evas_Object *parent = NULL;
+ ug_data *ugd = NULL;
+ Evas_Object *base = NULL;
+
+ ugd = priv;
+ ugd->ug = ug;
+
+ __cal_edit_ug_get_bundle_parameter(ugd,data);
+
+ if (UG_MODE_FULLVIEW != mode)
+ return NULL;
+
+ parent = ug_get_parent_layout(ug);
+ CAL_ASSERT(parent);
+
+ ugd->win = ug_get_window();
+ CAL_ASSERT(ugd->win);
+
+ base = __cal_edit_ug_create_layout(parent, ugd);
+ if (NULL == base)
+ {
+ CALENDAR_SVC_DISCONNECT();
+ return NULL;
+ }
+
+ return base;
+}
+
+static void __cal_edit_ug_destroy_callback(struct ui_gadget *ug, bundle *data, void *priv)
+{
+ CAL_FN_START;
+
+ ug_data *ugd;
+
+ if (!ug || !priv)
+ return;
+
+ ugd = priv;
+
+ cal_util_delete_evas_object(&ugd->base);
+
+ free(ugd->strnote);
+}
+
+static void __cal_edit_ug_key_callback(struct ui_gadget *ug, enum ug_key_event evt, bundle *data, void *priv)
+{
+ if (!ug)
+ return;
+
+ DBG("UG: key event %d", evt);
+
+ switch (evt)
+ {
+ case UG_KEY_EVENT_END:
+ ug_destroy_me(ug);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static int __cal_edit_ug_initialize(ug_data *ugd)
+{
+ if (NULL == ugd)
+ {
+ return -1;
+ }
+
+ int r;
+
+ r = CALENDAR_SVC_CONNECT();
+ if (r != CAL_SUCCESS)
+ {
+ ERR("calendar service connect failed");
+ return -1;
+ }
+
+ r = account_connect();
+ c_retvm_if(r != ACCOUNT_ERROR_NONE, -1, "account_connect is failed(%x)", r);
+
+ appcore_set_i18n(CALENDAR_PACKAGE, LOCALEDIR);
+
+ ugd->theme = elm_theme_new();
+ if (NULL == ugd->theme)
+ {
+ return -1;
+ }
+
+ elm_theme_ref_set(ugd->theme, NULL); //refer to default theme(NULL)
+
+ cal_util_connect_pattern_generator();
+
+ return 0;
+}
+
+static int __cal_edit_ug_finish(ug_data *ugd)
+{
+ int r;
+
+ r = CALENDAR_SVC_DISCONNECT();
+ if (r != CAL_SUCCESS)
+ {
+ ERR("calendar service close failed");
+ return -1;
+ }
+
+ r = account_disconnect();
+ c_retvm_if(r != ACCOUNT_ERROR_NONE, -1, "account_disconnect is failed(%x)", r);
+
+ if(NULL != ugd->theme)
+ {
+ elm_theme_extension_del(ugd->theme, EDJDIR "/calendar_theme.edj"); //delete extension to the new theme (optional)
+ elm_theme_free(ugd->theme);
+ ugd->theme = NULL;
+ }
+
+ cal_util_disconnect_pattern_generator();
+
+ return 0;
+}
+
+
+static inline void __cal_edit_ug_bind_text_domain()
+{
+ const char *r;
+
+ r = bindtextdomain(UGSETTINGS, UGLOCALE);
+ if (!r)
+ ERR("UG: bindtextdomain error");
+}
+
+API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ ug_data *ugd;
+
+ if (!ops)
+ return -1;
+
+ CAL_CALLOC(ugd, 1, ug_data);
+
+ ops->create = __cal_edit_ug_create_callback;
+ ops->destroy = __cal_edit_ug_destroy_callback;
+ ops->key_event = __cal_edit_ug_key_callback;
+ ops->priv = ugd;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ __cal_edit_ug_bind_text_domain();
+
+ __cal_edit_ug_initialize(ugd);
+
+ return 0;
+}
+
+API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ ug_data *ugd;
+
+ if (!ops)
+ return;
+
+ ugd = ops->priv;
+ if (ugd)
+ {
+ __cal_edit_ug_finish(ugd);
+ free(ugd);
+ }
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_UG_H__
+#define __CALENDAR_UG_H__
+
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+
+
+// TODO: get full path from caller
+#define VFILE_PATH "/opt/data/ug-calendar"
+
+#endif /* __CALENDAR_UG_H__ */
--- /dev/null
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
+
+SET(UG_LIST_SRCS
+ ug.c
+ ug-list.c
+)
+
+ADD_DEFINITIONS("-DUGLOCALE=\"${UG_LOCALE}\"")
+
+ADD_LIBRARY(${UGNAME} SHARED ${UG_LIST_SRCS})
+SET_TARGET_PROPERTIES(${UGNAME} PROPERTIES COMPILE_FLAGS "${UG_CFLAGS}")
+TARGET_LINK_LIBRARIES(${UGNAME} ${COMMON_LIB} ${UG_PKGS_LDFLAGS})
+
+INSTALL(TARGETS ${UGNAME} DESTINATION ${UG_LIB})
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include "cld.h"
+#include "ug.h"
+#include <glib.h>
+
+static const char *_name = "list/base";
+
+///TODO: get full path from caller
+#define VFILE_PATH "/opt/data/ug-calendar"
+
+static Elm_Entry_Filter_Limit_Size _limit_20char = {
+ .max_char_count = 20,
+};
+
+#define MAX_FETCH_COUNT 10
+
+#define ACCOUNT_LABLE_STRING_LENGTH 128
+
+typedef struct {
+ const char *name;
+ struct ug_data *ugd;
+ Evas_Object *parent;
+ Evas_Object *ly;
+ Evas_Object *no_contents;
+ Evas_Object *bg;
+
+ Elm_Object_Item *bt;
+
+ Evas_Object *conformant;
+ Evas_Object *genlist;
+
+ Eina_List *event_list;
+
+ Evas_Object *select_all_layout;
+ Evas_Object *select_all_check;
+ Evas_Object *box;
+
+ int totalcnt;
+ int offset;
+ Ecore_Idler* idler;
+
+ int num_check;
+ int genlist_count;
+ Evas_Object* searchbar;
+ const char * searchtext;
+ Elm_Object_Item *navi_item;
+ Evas_Object * notify;
+ Evas_Object * notify_layout;
+}cal_list_ug_data;
+
+typedef struct {
+ Elm_Object_Item *it; // Genlist Item pointer
+ Eina_Bool checked; // Check status
+ char *label;
+ cal_struct *cs;
+ struct tm* tm;
+ Elm_Genlist_Item_Type it_flag;
+}cal_list_ug_item_data;
+
+static Eina_Bool is_ug_list_view_destory;
+
+static int is_hour24;
+
+static void __cal_list_ug_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_list_ug_update(cal_list_ug_data *p);
+static void __cal_list_ug_searchbar_entry_changed_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_list_ug_cancel_button_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_list_ug_searchbar_entry_unfocused_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_list_ug_searchbar_clicked_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_list_ug_create_searchbar(cal_list_ug_data *p);
+static char* __cal_list_ug_get_genlist_item_label(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__cal_list_ug_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part);
+static void __cal_list_ug_update_all_check(cal_list_ug_data* p);
+static void __cal_list_ug_create_searchbar(cal_list_ug_data *p);
+static void __cal_list_ug_append_with_idler(void* data);
+
+static Elm_Genlist_Item_Class itc = {
+ .item_style = "3text.5icon",
+ .func.text_get = __cal_list_ug_get_genlist_item_label,
+ .func.content_get = __cal_list_ug_get_genlist_item_icon,
+ .decorate_all_item_style = "edit_default",
+};
+
+static Calendar_color calendar_color;
+
+//TODO
+#define ELM_GENLIST_ITEM_GROUP (1<<1)
+
+static void __cal_list_ug_add_small_info(cal_list_ug_data *p, int count)
+{
+ c_retm_if(!p, "p is null");
+ struct ug_data *ad = p->ugd;
+ c_retm_if(!ad, "ug data is null");
+
+ Evas_Object *nv = ad->nv;
+ c_retm_if(!nv, "nv is null");
+
+ Evas_Object *notify = NULL;
+ Evas_Object *notify_layout = NULL;
+ char lable_str[ACCOUNT_LABLE_STRING_LENGTH] = { '\0'};
+
+ c_ret_if(count < 0);
+
+ if (!p->notify) {
+ notify = elm_notify_add(nv);
+
+ c_retm_if(!notify, "notify is null");
+
+ elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
+
+ p->notify = notify;
+
+ notify_layout = elm_layout_add(notify);
+ if (!notify_layout) {
+ evas_object_del(p->notify);
+ p->notify = NULL;
+ return;
+ }
+
+ p->notify_layout = notify_layout;
+ elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64");
+ elm_object_content_set(notify, notify_layout);
+ }
+
+ snprintf(lable_str, sizeof(lable_str), "%s (%d)", S_("IDS_COM_POP_SELECTED"), count);
+ edje_object_part_text_set(CAL_UTIL_GET_EDJ_DATA(p->notify_layout), "elm.text", lable_str);
+
+ if (0 < count) {
+ evas_object_show(p->notify);
+ } else {
+ evas_object_hide(p->notify);
+ }
+}
+
+static void __cal_list_ug_genlist_item_check_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+
+ cal_list_ug_item_data *item_data = data;
+ Elm_Object_Item *it;
+ Eina_List* realized_list, *l;
+
+ cal_list_ug_data* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "p is null");
+
+ if (p->genlist_count <= 0) {
+ return;
+ }
+
+ item_data->checked = elm_check_state_get(obj);
+ if (item_data->checked)
+ p->num_check++;
+ else
+ p->num_check--;
+
+ if (item_data->checked || 0 < p->num_check)
+ elm_object_item_disabled_set(p->bt, EINA_FALSE);
+ else
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+
+ realized_list = elm_genlist_realized_items_get(p->genlist);
+ EINA_LIST_FOREACH(realized_list, l, it) {
+ if (it)
+ elm_genlist_item_update(it);
+ }
+
+ if (p->num_check == p->genlist_count) {
+ elm_check_state_set(p->select_all_check,EINA_TRUE);
+ __cal_list_ug_update_all_check(p);
+ } else {
+ elm_check_state_set(p->select_all_check,EINA_FALSE);
+ __cal_list_ug_add_small_info(p, p->num_check);
+ }
+}
+
+static Evas_Object *__cal_list_ug_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!part, NULL, "part is null");
+ c_retvm_if(!obj, NULL, "obj is null");
+ c_retvm_if(!data, NULL, "data is null");
+
+ Evas_Object *icon = NULL;
+ cal_struct *calendar = NULL;
+ cal_list_ug_data* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retvm_if(!p, NULL, "p is null");
+
+ cal_list_ug_item_data *item_data = data;
+ int r;
+ cal_struct *cs = item_data->cs;
+ c_retvm_if(!cs, NULL, "cs is null");
+
+ if (!CAL_STRCMP(part, "elm.edit.icon.1") ) {
+ icon = elm_check_add(obj);
+ c_retvm_if(!icon, NULL, "elm_check_add returned null");
+
+ elm_check_state_pointer_set(icon, &item_data->checked);
+ evas_object_smart_callback_add(icon, "changed", __cal_list_ug_genlist_item_check_changed_callback, item_data);
+ evas_object_propagate_events_set(icon, EINA_FALSE);
+ evas_object_data_set(icon, "priv", p);
+
+ return icon;
+ }
+ else if (!CAL_STRCMP(part, "elm.swallow.colorbar"))
+ {
+ r = CALENDAR_SVC_GET(CAL_STRUCT_CALENDAR, CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_VALUE_INT_CALENDAR_ID), NULL, &calendar);
+ c_retvm_if(r != CAL_SUCCESS, NULL, "calendar_svc_get is failed(%d)", r);
+
+ icon = evas_object_rectangle_add(evas_object_evas_get(obj));
+ c_retvm_if(!icon, NULL, "evas_object_rectangle_add returned null");
+ evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ CALENDAR_SVC_GET_CALENDAR_COLOR(calendar, &calendar_color);
+
+ evas_object_color_set(icon, calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);
+
+ CALENDAR_SVC_STRUCT_FREE(&calendar);
+
+ return icon;
+ }
+
+ return NULL;
+}
+
+static void __cal_list_ug_clear_event_list(cal_list_ug_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "p is null");
+
+ cal_list_ug_item_data *item;
+ Eina_List *l = NULL;
+
+ EINA_LIST_FOREACH(p->event_list, l, item) {
+ if (item) {
+ calendar_svc_struct_free(&item->cs);
+ item->cs = NULL;
+ free(item);
+ item=NULL;
+ }
+ }
+
+ if (p->event_list) {
+ eina_list_free(p->event_list);
+ p->event_list = NULL;
+ }
+}
+
+static void __cal_list_ug_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+
+ cal_list_ug_data *p = data;
+
+ is_ug_list_view_destory = TRUE;
+ if (p->idler) {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
+ __cal_list_ug_clear_event_list(p);
+
+ if (p->no_contents) {
+ evas_object_del(p->no_contents);
+ }
+
+ if (p->searchbar) {
+ evas_object_smart_callback_del(elm_object_part_content_get(p->searchbar, "elm.swallow.content"), "changed", __cal_list_ug_searchbar_entry_changed_callback);
+ evas_object_smart_callback_del(p->searchbar, "cancel,clicked", __cal_list_ug_cancel_button_callback);
+ evas_object_del(p->searchbar);
+ p->searchbar = NULL;
+ }
+
+ CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK((void(*)(void*))__cal_list_ug_update);
+
+ if (p->notify) {
+ evas_object_del(p->notify);
+ }
+
+ if (p->box) {
+ elm_box_clear(p->box);
+ }
+
+ free(p);
+}
+
+static char* __cal_list_ug_get_cs(cal_struct *cs)
+{
+ char buf[512];
+ char stime[512];
+ time_t st;
+ struct tm tm;
+ int repeat;
+ const char* time;
+
+ if (is_hour24)
+ time = CAL_UTIL_TIME_FORMAT_6;
+ else
+ time = CAL_UTIL_TIME_FORMAT_1;
+
+ st = CALENDAR_SVC_STRUCT_GET_TIME(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_GMT);
+ localtime_r(&st, &tm);
+
+ repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+ if (repeat == CAL_REPEAT_NONE)
+ {
+ cal_util_get_time_text(stime, sizeof(stime), NULL, time, &tm);
+ snprintf(buf, sizeof(buf), "%s", stime);
+ } else {
+ cal_util_get_time_text(stime, sizeof(stime), NULL, time, &tm);
+ snprintf(buf, sizeof(buf), "%s", stime);
+ }
+
+ return strdup(buf);
+}
+
+static char* __cal_list_ug_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!part, NULL, "part is null");
+ c_retvm_if(!data, NULL, "data is null");
+
+ const char *str = NULL;
+ cal_list_ug_item_data *item = data;
+ cal_struct *cs = item->cs;
+ c_retvm_if(!cs, NULL, "cs is null");
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.2"))
+ {
+ str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_LOCATION);
+ if (str)
+ return strdup(str);
+
+ return strdup(C_("IDS_CLD_BODY_NO_LOCATION_SELECTED"));
+ }
+
+ if (!CAL_STRCMP(part, "elm.text.3"))
+ return __cal_list_ug_get_cs(cs);
+
+ return NULL;
+}
+
+static void __cal_list_ug_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Eina_List* realized_list, *l;
+ Elm_Object_Item* it;
+ cal_list_ug_item_data* item = data;
+ cal_list_ug_data *p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "p is null");
+
+ if (p->genlist_count <= 0) {
+ return;
+ }
+
+ item->checked = !(item->checked);
+ if (item->checked) {
+ p->num_check++;
+ } else {
+ p->num_check--;
+ }
+
+ if (item->checked || 0 < p->num_check) {
+ elm_object_item_disabled_set(p->bt, EINA_FALSE);
+ } else if (p->num_check <= 0) {
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+ }
+
+ it = elm_genlist_selected_item_get(obj);
+ if (it) {
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+ }
+
+ realized_list = elm_genlist_realized_items_get(obj);
+ EINA_LIST_FOREACH(realized_list, l, it) {
+ if (it) {
+ elm_genlist_item_update(it);
+ }
+ }
+
+ if (p->num_check == p->genlist_count) {
+ elm_check_state_set(p->select_all_check,EINA_TRUE);
+ __cal_list_ug_update_all_check(p);
+ } else {
+ elm_check_state_set(p->select_all_check,EINA_FALSE);
+ __cal_list_ug_add_small_info(p, p->num_check);
+ }
+
+}
+
+Eina_Bool __cal_list_ug_update_fetch_list_idler(void* data)
+{
+ CAL_FN_START;
+
+ cal_list_ug_data *p = data;
+
+ c_retvm_if(!p, ECORE_CALLBACK_CANCEL, "priv is null.");
+
+ int r;
+ cal_iter *it=NULL;
+ int cal_id;
+ cal_id = 0;
+ it = NULL;
+ cal_list_ug_item_data *item;
+ Eina_Bool is_finished = EINA_FALSE;
+
+ if(is_ug_list_view_destory == EINA_TRUE)
+ return ECORE_CALLBACK_CANCEL;
+
+ if(p->idler == NULL)
+ return ECORE_CALLBACK_CANCEL;
+
+ r = CALENDAR_SVC_GET_LIST(ALL_VISIBILITY_ACCOUNT, ALL_CALENDAR_ID, CAL_STRUCT_SCHEDULE, CAL_VALUE_LIST_FILED, p->offset, MAX_FETCH_COUNT, &it);
+ if (r != CAL_SUCCESS)
+ return ECORE_CALLBACK_CANCEL;
+
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+
+ item = calloc(1, sizeof(cal_list_ug_item_data));
+ c_retvm_if(!item, ECORE_CALLBACK_CANCEL, "item is null");
+
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &item->cs);
+ if (r != CAL_SUCCESS)
+ break;
+
+ p->event_list = eina_list_append(p->event_list, item);
+ }
+
+ CALENDAR_SVC_ITER_REMOVE(&it);
+
+ if(eina_list_count(p->event_list) < MAX_FETCH_COUNT)
+ is_finished = EINA_TRUE;
+
+ __cal_list_ug_append_with_idler(p);
+
+ if(is_finished || (p->offset == p->totalcnt))
+ {
+ if (p->idler)
+ {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
+ p->offset= 0;
+
+ return ECORE_CALLBACK_CANCEL;
+ }
+ else
+ {
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __cal_list_ug_get_event_list(cal_list_ug_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "p is null");
+
+ int r;
+ cal_iter *it = NULL;
+ cal_list_ug_item_data *item;
+
+ p->totalcnt = CALENDAR_SVC_GET_COUNT(ALL_ACCOUNT_ID,ALL_CALENDAR_ID,CAL_STRUCT_SCHEDULE);
+
+ p->offset = 0;
+
+ r = CALENDAR_SVC_GET_LIST(ALL_ACCOUNT_ID, ALL_CALENDAR_ID, CAL_STRUCT_SCHEDULE, CAL_VALUE_LIST_FILED, 0, MAX_FETCH_COUNT, &it);
+
+ if (r != CAL_SUCCESS)
+ return;
+
+ while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+
+ item = calloc(1, sizeof(cal_list_ug_item_data));
+ c_retm_if(!item, "item is null");
+
+ r = CALENDAR_SVC_ITER_GET_INFO(it, &item->cs);
+ if (r != CAL_SUCCESS)
+ break;
+
+ p->event_list = eina_list_append(p->event_list, item);
+ }
+
+ CALENDAR_SVC_ITER_REMOVE(&it);
+ if (eina_list_count(p->event_list) < p->totalcnt) {
+ if (!p->idler) {
+ p->idler = ecore_idler_add(__cal_list_ug_update_fetch_list_idler,p);
+ }
+ }
+}
+static bool __cal_list_ug_strstr(const char *pszParent, const char * pszChild)
+{
+ bool bRst = false;
+ if (!pszParent || !pszChild) {
+ return false;
+ }
+
+ GString * gSrc = g_string_new(pszParent);
+ if (!gSrc) {
+ return false;
+ }
+
+ GString * gDes = g_string_new(pszChild);
+ if (!gDes) {
+ g_string_free(gSrc,true);
+ return false;
+ }
+
+ gSrc = g_string_ascii_up(gSrc);
+ if (!gSrc) {
+ g_string_free(gDes,true);
+ return false;
+ }
+
+ gDes = g_string_ascii_up(gDes);
+ if (!gDes) {
+ g_string_free(gSrc,true);
+ return false;
+ }
+
+ if (g_strrstr(gSrc->str,gDes->str)) {
+ bRst = true;
+ } else {
+ bRst = false;
+ }
+
+ g_string_free(gSrc,true);
+ g_string_free(gDes,true);
+ return bRst;
+}
+static void __cal_list_ug_append_with_idler(void* data)
+{
+ c_retm_if(!data, "data is null");
+
+ cal_list_ug_data* p = data;
+ Eina_List *event_list, *l = NULL;
+ cal_list_ug_item_data *item = NULL;
+ Elm_Object_Item *it = NULL;
+ const char* summary = NULL;
+
+ event_list = eina_list_nth_list(p->event_list, p->offset-1);
+ if (event_list) {
+ event_list = eina_list_next(event_list);
+ c_retm_if(NULL == event_list, "eina_list_nth_list(append_list, 1) is null");
+ }
+ c_retm_if(!event_list, "eina_list_nth(list, %d) returned null", p->offset);
+
+ EINA_LIST_FOREACH(event_list, l, item) {
+ if (item && item->cs) {
+ if (p->searchtext && 0 < strlen(p->searchtext)) {
+ summary = CALENDAR_SVC_STRUCT_GET_STR(item->cs, CAL_VALUE_TXT_SUMMARY);
+
+ if (summary && __cal_list_ug_strstr(summary, p->searchtext)) {
+ it = elm_genlist_item_append(p->genlist, &itc, item, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_ug_genlist_item_select_callback, item);
+ c_retm_if(!it, "elm_genlist_item_append is failed");
+
+ if (item && item->checked)
+ p->num_check++;
+
+ p->genlist_count++;
+ }
+
+ } else {
+
+ if (item && item->checked)
+ p->num_check++;
+
+ it = elm_genlist_item_append(p->genlist, &itc, item, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_ug_genlist_item_select_callback, item);
+ c_retm_if(!it, "elm_genlist_item_append is failed");
+
+ p->genlist_count++;
+ }
+ }
+
+ p->offset++;
+ }
+}
+
+static void __cal_list_ug_append_genlist(cal_list_ug_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "p is null");
+ c_ret_if(p->event_list <= 0);
+
+ Eina_List *l = NULL;
+ cal_list_ug_item_data *item = NULL;
+ Elm_Object_Item *it = NULL;
+ const char* summary = NULL;
+ p->genlist_count = 0;
+
+ EINA_LIST_FOREACH(p->event_list, l, item) {
+ if (item && item->cs) {
+ if (p->searchtext && 0 < strlen(p->searchtext)) {
+ summary = CALENDAR_SVC_STRUCT_GET_STR(item->cs, CAL_VALUE_TXT_SUMMARY);
+
+ if (summary && __cal_list_ug_strstr(summary, p->searchtext)) {
+ it = elm_genlist_item_append(p->genlist, &itc, item, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_ug_genlist_item_select_callback, item);
+ c_retm_if(!it, "elm_genlist_item_append is failed");
+ if (item && item->checked)
+ p->num_check++;
+
+ p->genlist_count++;
+ }
+
+ } else {
+
+ if (item && item->checked)
+ p->num_check++;
+
+ it = elm_genlist_item_append(p->genlist, &itc, item, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_ug_genlist_item_select_callback, item);
+ c_retm_if(!it, "elm_genlist_item_append is failed");
+
+ p->genlist_count++;
+ }
+
+ }
+
+ p->offset++;
+
+ }
+
+ if (p->genlist_count == p->num_check)
+ elm_check_state_set(p->select_all_check, EINA_TRUE);
+ else
+ elm_check_state_set(p->select_all_check, EINA_FALSE);
+
+ if (p->num_check <= 0) {
+ evas_object_hide(p->notify);
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+ } else
+ elm_object_item_disabled_set(p->bt, EINA_FALSE);
+}
+
+static void __cal_list_ug_create_searchbar(cal_list_ug_data *p)
+{
+ c_retm_if(!p, "priv is null.");
+ c_retm_if(!p->ly, "p->ly is null.");
+
+ Evas_Object *searchbar = cal_util_add_searchbar(p->ly, NULL, NULL, EINA_TRUE);
+ c_retm_if(!searchbar, "cal_util_add_searchbar() returned null.");
+
+ Evas_Object *en = elm_object_part_content_get(searchbar, "elm.swallow.content");
+ c_retm_if(!en, "elm_object_part_content_get returned null.");
+
+ elm_entry_input_panel_layout_set(en, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+ elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &_limit_20char);
+
+ evas_object_size_hint_weight_set(searchbar, EVAS_HINT_EXPAND, 0.1);
+ evas_object_size_hint_align_set(searchbar, EVAS_HINT_FILL, 0.6);
+
+ evas_object_smart_callback_add(en, "changed", __cal_list_ug_searchbar_entry_changed_callback, p);
+ evas_object_smart_callback_add(en, "unfocused", __cal_list_ug_searchbar_entry_unfocused_callback, p);
+ evas_object_smart_callback_add(searchbar, "clicked", __cal_list_ug_searchbar_clicked_callback, p);
+ evas_object_smart_callback_add(searchbar, "cancel,clicked", __cal_list_ug_cancel_button_callback, p);
+
+ evas_object_show(searchbar);
+
+ elm_object_part_content_set(p->ly, "searchbar", searchbar);
+ p->searchbar = searchbar;
+}
+
+static void __cal_list_ug_select_all_mouse_up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+ cal_list_ug_data *p = data;
+
+ Evas_Event_Mouse_Up *ev = event_info;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
+
+ if (p->genlist_count <= 0) {
+ return;
+ }
+ elm_check_state_set(p->select_all_check, !elm_check_state_get(p->select_all_check));
+
+ __cal_list_ug_update_all_check(p);
+}
+
+static void __cal_list_ug_select_all_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!obj, "obj is null");
+
+ cal_list_ug_data* p = data;
+ c_retm_if(!p, "p is null");
+ if (p->genlist_count <= 0) {
+ return;
+ }
+
+ __cal_list_ug_update_all_check(p);
+}
+
+static void __cal_list_ug_create_select_all(cal_list_ug_data* p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "p is null");
+ c_retm_if(!p->ly, "p->lu is null");
+ c_retm_if(!p->box, "p->box is null");
+
+ Evas_Object* layout = p->select_all_layout = elm_layout_add(p->box);
+ c_retm_if(!layout, "elm_layout_add returned null");
+
+ elm_layout_theme_set(layout, "genlist", "item", "select_all/default");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_UP, __cal_list_ug_select_all_mouse_up_callback, p);
+
+ Evas_Object* check = p->select_all_check = elm_check_add(p->select_all_layout);
+
+ c_retm_if(!check, "elm_check_add returned null");
+ evas_object_smart_callback_add(check, "changed", __cal_list_ug_select_all_changed_callback, p);
+ evas_object_propagate_events_set(check, EINA_FALSE);
+
+ elm_object_part_content_set(layout, "elm.icon", check);
+ evas_object_data_set(p->select_all_check, "layout", p->select_all_layout);
+ elm_object_part_text_set(p->select_all_layout, "elm.text", S_("IDS_COM_BODY_SELECT_ALL"));
+ elm_box_pack_start(p->box, p->select_all_layout);
+ evas_object_show(p->select_all_layout);
+}
+
+static void __cal_list_ug_update_event_list(cal_list_ug_data *p)
+{
+ __cal_list_ug_clear_event_list(p);
+
+ p->num_check = 0;
+ p->offset = 0;
+
+ __cal_list_ug_get_event_list(p);
+}
+
+static void __cal_list_ug_update(cal_list_ug_data *p)
+{
+ CAL_FN_START;
+
+ c_retm_if(!p, "p is null");
+
+ if (p->idler) {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
+ __cal_list_ug_update_event_list(p);
+
+ if (p->event_list && 0 < eina_list_count(p->event_list)) {
+ p->no_contents = NULL;
+
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->ly), "searchbar,show", "prog");
+
+ if (!p->conformant) {
+ Evas_Object *conformant = elm_conformant_add(p->ly);
+ c_retm_if(!conformant, "conformant is null");
+
+ elm_object_style_set(conformant, "internal_layout");
+ evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_object_part_content_set(p->ly, "sw", conformant);
+
+ p->conformant = conformant;
+ }
+
+ __cal_list_ug_create_searchbar(p);
+
+ if (!p->box) {
+ Evas_Object *box = elm_box_add(p->conformant);
+ c_retm_if(!box, "box is null");
+
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ elm_object_content_set(p->conformant, box);
+
+ p->box = box;
+ }
+
+ __cal_list_ug_create_select_all(p);
+
+ if (!p->genlist)
+ {
+ Evas_Object *genlist = elm_genlist_add(p->ly);
+ c_retm_if(!genlist, "genlist is null");
+
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
+ evas_object_data_set(genlist, "priv", p);
+ elm_genlist_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF,ELM_SCROLLER_POLICY_OFF);
+ elm_genlist_block_count_set(genlist, 20);
+ elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(genlist);
+ elm_box_pack_end(p->box, genlist);
+
+ p->genlist = genlist;
+ }
+ else
+ elm_genlist_clear(p->genlist);
+
+ __cal_list_ug_append_genlist(p);
+ }
+ else {
+ p->conformant = NULL;
+ p->box = NULL;
+ p->select_all_layout = NULL;
+ p->genlist = NULL;
+
+ if (p->notify)
+ evas_object_hide(p->notify);
+
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->ly), "searchbar,hide", "prog");
+
+ if (!p->no_contents) {
+ Evas_Object *no_contents = cal_util_add_nocontents(p->ly, C_("IDS_CLD_BODY_NO_EVENTS"));
+ c_retm_if(!no_contents, "no_contents is null.");
+
+ elm_object_part_content_set(p->ly, "sw", no_contents);
+
+ p->no_contents = no_contents;
+ }
+
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+
+ }
+
+ CAL_FN_END;
+}
+
+static void __cal_list_ug_update_all_check(cal_list_ug_data* p)
+{
+ c_retm_if(!p, "p is null");
+ c_retm_if(!p->genlist, "p is null");
+
+ Elm_Object_Item *it;
+ Eina_List *realized_list, *l;
+ cal_list_ug_item_data* item_data;
+
+ if (elm_check_state_get(p->select_all_check)) {
+ p->num_check = p->genlist_count;
+ elm_object_item_disabled_set(p->bt, EINA_FALSE);
+ __cal_list_ug_add_small_info(p, p->genlist_count);
+ } else {
+ p->num_check = 0;
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+ evas_object_hide(p->notify);
+ }
+
+ it = elm_genlist_first_item_get(p->genlist);
+ while (it) {
+ item_data = elm_object_item_data_get(it);
+ if (item_data) {
+ item_data->checked = elm_check_state_get(p->select_all_check);
+ }
+ it = elm_genlist_item_next_get(it);
+ }
+
+ realized_list = elm_genlist_realized_items_get(p->genlist);
+ EINA_LIST_FOREACH(realized_list, l, it)
+ {
+ if (it) {
+ elm_genlist_item_update(it);
+ }
+ }
+}
+
+static Evas_Object* __cal_list_ug_create_layout(Evas_Object *parent, struct ug_data *ugd)
+{
+ CAL_FN_START;
+
+ c_retvm_if(!parent, NULL, "parent is null");
+ c_retvm_if(!ugd, NULL, "ugd is null");
+
+ cal_list_ug_data *p = calloc(1, sizeof(cal_list_ug_data));
+ c_retvm_if(!p, NULL, "p is null");
+
+ p->name = _name;
+ p->ugd = ugd;
+ p->parent = parent;
+ p->searchtext = NULL;
+ p->notify_layout = NULL;
+ p->notify = NULL;
+ p->navi_item = NULL;
+ p->genlist_count = 0;
+ p->bg = NULL;
+
+ is_ug_list_view_destory = EINA_FALSE;
+
+ Evas_Object *ly = cal_util_add_layout(parent, p->name);
+ if (!ly)
+ {
+ ERR("cal_util_add_layout returned null");
+ free(p);
+ return NULL;
+ }
+ p->ly = ly;
+ evas_object_data_set(ly, "priv", p);
+
+ p->bg = cal_util_add_bg(ly,EINA_FALSE);
+ if (!p->bg) {
+ ERR("cal_util_add_bg returned null");
+ evas_object_del(ly);
+ free(p);
+ ERR("bg is null");
+ return NULL;
+ }
+ elm_object_part_content_set(ly, "base", p->bg);
+
+ __cal_list_ug_update(p);
+
+ evas_object_show(ly);
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_list_ug_delete_layout, p);
+ CALENDAR_SVC_ADD_EVENT_CHANGED_CALLBACK((void(*)(void*))__cal_list_ug_update, p);
+
+ return ly;
+}
+
+
+static void __cal_list_ug_get_time_text(time_t t, int allday, char *buf, int sz)
+{
+ struct tm tm;
+ const char* time;
+
+ localtime_r(&t, &tm);
+
+ if (is_hour24)
+ time = CAL_UTIL_TIME_FORMAT_6;
+ else
+ time = CAL_UTIL_TIME_FORMAT_1;
+
+ if (allday)
+ cal_util_get_time_text(buf, sz, CAL_UTIL_DATE_FORMAT_1, NULL, &tm);
+ else
+ cal_util_get_time_text(buf, sz, CAL_UTIL_DATE_FORMAT_1, time, &tm);
+}
+
+static void __cal_list_ug_get_start_time_text(cal_struct *cs, char *buf, int sz)
+{
+ int allday;
+ time_t t;
+
+ allday = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+
+ t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+
+ __cal_list_ug_get_time_text(t, allday, buf, sz);
+}
+
+static void __cal_list_ug_get_end_time_text(cal_struct *cs, char *buf, int sz)
+{
+ int allday;
+ time_t t;
+
+ allday = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+
+ t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_END_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+
+ __cal_list_ug_get_time_text(t, allday, buf, sz);
+}
+
+
+static void __cal_list_ug_get_message_content(cal_struct *cs, char *body , int nsize)
+{
+ c_retm_if(!cs, "cs is null");
+
+ char *content = NULL;
+ char *title = NULL;
+ char *location = NULL;
+ char start[1024] = "Start\n";
+ char end[1024] = "End\n";
+ char buf[1024] = {0};
+
+ content = _("Check this schedule,please");
+
+ title = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
+ if (!title)
+ title = C_("IDS_CLD_BODY_NO_TITLE");
+
+ location = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_LOCATION);
+ if (!location)
+ location = _("No location");
+
+ __cal_list_ug_get_start_time_text(cs, buf, sizeof(buf));
+ CAL_STRNCAT(start,buf,sizeof start)
+
+ __cal_list_ug_get_end_time_text(cs, buf, sizeof(buf));
+ CAL_STRNCAT(end,buf,sizeof end)
+
+ snprintf(body, nsize, "%s\n%s\n%s\n%s\n%s",content, title, location, start, end);
+}
+
+
+static void __cal_list_ug_add_bundle_event(bundle *b, cal_struct *cs, int idx)
+{
+ char txt_content[1024*5] = {0};
+
+ __cal_list_ug_get_message_content(cs, txt_content,sizeof txt_content);
+
+ bundle_add(b, "BODY", txt_content);
+}
+
+static void __cal_list_ug_add_bundle_vcs(bundle *b, cal_struct *cs, int idx, const char *caller)
+{
+ int cid;
+ int r;
+ char buf[FILENAME_MAX];
+ char path[FILENAME_MAX];
+
+ cid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_INDEX);
+
+ snprintf(buf, sizeof(buf), "vfile%d", idx);
+ snprintf(path, sizeof(path), "%s/Calendar_%d.vcs", VFILE_PATH, cid);
+
+ r = CALENDAR_SVC_UTIL_SAVE_VCS_BY_INDEX(cid, path);
+ if (r == CAL_SUCCESS)
+ bundle_add(b, buf, path);
+}
+
+static void __cal_list_ug_add_bundle(bundle *b, cal_struct *cs, int idx, struct ug_data *ugd)
+{
+ switch (ugd->mode) {
+ case _MODE_GET_EVT:
+ __cal_list_ug_add_bundle_event(b, cs, idx);
+ break;
+ case _MODE_GET_VCS:
+ __cal_list_ug_add_bundle_vcs(b, cs, idx, ugd->caller);
+ break;
+ default:
+ // do nothing
+ break;
+ }
+}
+
+static bundle* __cal_list_ug_make_bundle(cal_list_ug_data *p, struct ug_data *ugd)
+{
+ c_retvm_if(!p, NULL, "p is null");
+ c_retvm_if(!ugd, NULL, "ugd is null");
+
+ bundle *b = NULL;
+ Eina_List *l;
+ cal_list_ug_item_data* item_data;
+ int count = 0;
+ char buf[32] = {'\0'};
+
+ b = bundle_create();
+ c_retvm_if(!b, NULL, "bundle_create returned null");
+
+ EINA_LIST_FOREACH(p->event_list, l, item_data)
+ {
+ if (item_data && item_data->checked)
+ {
+ count++;
+ __cal_list_ug_add_bundle(b, item_data->cs, count, ugd);
+ }
+ }
+
+ snprintf(buf, sizeof(buf), "%d", count);
+ bundle_add(b, "count", buf);
+
+ return b;
+}
+
+static void __cal_list_ug_attach(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+
+ Evas_Object *ly = data;
+ cal_list_ug_data *p;
+ struct ug_data *ugd;
+ bundle *b;
+
+ p = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!p, "p is null");
+
+ ugd = p->ugd;
+ c_retm_if(!ugd, "ugd is null");
+
+ switch (ugd->mode)
+ {
+ case _MODE_GET_EVT:
+ case _MODE_GET_VCS:
+ b = __cal_list_ug_make_bundle(p, ugd);
+ c_retm_if(!b, "b is null");
+ break;
+ default:
+ b = NULL;
+ break;
+ }
+
+ if (b)
+ {
+ ug_send_result(ugd->ug, b);
+ bundle_free(b);
+ }
+
+ ug_destroy_me(ugd->ug);
+}
+
+static void __cal_list_ug_add_controlbar( struct ug_data *ugd, Evas_Object *ly, const char* title)
+{
+ Evas_Object *cbar = NULL;
+ Elm_Object_Item* navi_item = NULL;
+ Elm_Object_Item * attach_button = NULL;
+ cal_list_ug_data* p = evas_object_data_get(ly,"priv");
+ c_retm_if(!p, "p is null");
+
+ cbar = cal_util_add_controlbar(ugd->nv);
+ c_retm_if(!cbar, "cal_util_add_controlbar returned null");
+
+ elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL);
+
+ attach_button = elm_toolbar_item_append(cbar, NULL, S_("IDS_COM_POP_ATTACH"), __cal_list_ug_attach, ly);
+ c_retm_if(!attach_button, "elm_toolbar_item_append returned null");
+ p->bt = attach_button;
+
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+
+ is_hour24 = ugd->is_hour24;
+
+ navi_item = elm_naviframe_item_push(ugd->nv, title, NULL, NULL, ly, NULL);
+ if (!navi_item)
+ {
+ ERR("elm_naviframe_item_push returned null");
+ evas_object_del(cbar);
+ return;
+ }
+
+ elm_object_item_part_content_set(navi_item, "controlbar", cbar);
+}
+
+void cal_list_ug_create(const char *title, struct ug_data *ugd)
+{
+ Evas_Object *ly = __cal_list_ug_create_layout(ugd->nv, ugd);
+ if (!ly)
+ return;
+
+ ugd->cont = ly;
+
+ __cal_list_ug_add_controlbar(ugd, ly, title);
+}
+
+static void __cal_list_ug_searchbar_entry_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ CAL_FN_START;
+
+ cal_list_ug_data *p = data;
+ c_retm_if(!p, "priv is null.");
+
+ p->searchtext = elm_object_text_get(elm_object_part_content_get(p->searchbar, "elm.swallow.content"));
+
+ elm_genlist_clear(p->genlist);
+
+ if (!p->genlist) {
+ p->genlist = elm_genlist_add(p->parent);
+ c_retm_if(!p->genlist, "p->genlist is null");
+ elm_genlist_decorate_mode_set(p->genlist, EINA_TRUE);
+ evas_object_data_set(p->genlist, "priv", p);
+ }
+
+ p->num_check = 0;
+ p->offset = 0;
+ __cal_list_ug_append_genlist(p);
+ if (p->genlist_count == p->num_check) {
+ if (p->num_check == 0) {
+ elm_check_state_set(p->select_all_check,EINA_FALSE);
+ elm_object_disabled_set(p->select_all_check,EINA_TRUE);
+ } else {
+ elm_check_state_set(p->select_all_check,EINA_TRUE);
+ }
+ } else {
+ elm_check_state_set(p->select_all_check,EINA_FALSE);
+ }
+
+ if (p->genlist_count > 0) {
+ elm_object_disabled_set(p->select_all_check,EINA_FALSE);
+ }
+
+ if (0 < p->num_check)
+ elm_object_item_disabled_set(p->bt, EINA_FALSE);
+ else
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+
+ __cal_list_ug_add_small_info(p,p->num_check);
+}
+
+static void __cal_list_ug_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ CAL_FN_START;
+
+ c_retm_if(!data, "data is null");
+ cal_list_ug_data *p = data;
+ Eina_List *l = NULL;
+ cal_list_ug_item_data *item =NULL;
+
+ Evas_Object *en = elm_object_part_content_get(p->searchbar, "elm.swallow.content");
+ c_retm_if(!en, "elm_object_part_content_get returned null");
+
+ Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
+ c_retm_if(!imf_context, "elm_entry_imf_context_get returned null");
+
+ if (imf_context)
+ ecore_imf_context_input_panel_hide(imf_context);
+
+ if (0 < p->num_check)
+ elm_object_item_disabled_set(p->bt, EINA_FALSE);
+ else
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+
+ p->num_check = 0;
+
+ EINA_LIST_FOREACH(p->event_list, l, item) {
+ if (item != NULL && item->checked) {
+ p->num_check++;
+ }
+ }
+
+ if (p->genlist_count == p->num_check && p->num_check != 0) {
+ elm_check_state_set(p->select_all_check, EINA_TRUE);
+ } else {
+ elm_check_state_set(p->select_all_check, EINA_FALSE);
+ }
+ elm_object_disabled_set(p->select_all_check,EINA_FALSE);
+
+ __cal_list_ug_add_small_info(p,p->num_check);
+}
+
+static void __cal_list_ug_searchbar_entry_unfocused_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null.");
+ cal_list_ug_data *p = data;
+
+ if (p->num_check <= 0) {
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+ } else {
+ elm_object_item_disabled_set(p->bt, EINA_FALSE);
+ }
+
+ __cal_list_ug_add_small_info(p,p->num_check);
+}
+
+static void __cal_list_ug_searchbar_clicked_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null.");
+ cal_list_ug_data *p = data;
+
+ elm_object_item_disabled_set(p->bt, EINA_TRUE);
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <calendar-svc-provider.h>
+#include <libintl.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include "cld.h"
+#include "ug.h"
+
+// TODO: get full path from caller
+#define VFILE_PATH "/opt/data/ug-calendar"
+
+extern int appcore_set_i18n(const char *, const char *);
+
+static char* __cal_ug_get_caller(bundle *b, const char *key)
+{
+ const char *v;
+
+ v = bundle_get_val(b, key);
+ if (!v || v[0] == '\0')
+ return strdup("Unknown");
+
+ return strdup(v);
+}
+
+static char* __cal_ug_get_file_name(bundle *b, const char *key)
+{
+ const char *v;
+ char path[FILENAME_MAX];
+ int r;
+
+ v = bundle_get_val(b, key);
+ if (!v || v[0] == '\0')
+ return NULL;
+
+ // TODO: check full path or not
+
+ snprintf(path, sizeof(path), "%s/%s", VFILE_PATH, v);
+
+ r = access(path, R_OK);
+ if (r == -1)
+ {
+ ERR("UG: Access failed: %s", path);
+ return NULL;
+ }
+
+ return strdup(path);
+}
+
+static enum cld_ug_mode __cal_ug_get_mode(bundle *b, const char *key)
+{
+ const char *v;
+
+ v = bundle_get_val(b, key);
+ if (!v || v[0] == '\0')
+ return _MODE_UNKNOWN;
+
+ if (!CAL_STRCMP(v, "file"))
+ return _MODE_GET_VCS;
+
+ if (!CAL_STRCMP(v, "text"))
+ return _MODE_GET_EVT;
+
+ if (!CAL_STRCMP(v, "view"))
+ return _MODE_VIEW_VCS;
+
+ return _MODE_UNKNOWN;
+}
+
+static inline int __cal_ug_set_ug_date(struct ug_data *ugd, bundle *b)
+{
+ int r,val;
+
+ if (!b)
+ {
+ ERR("UG: bundle is NULL");
+ return -1;
+ }
+
+ ugd->mode = __cal_ug_get_mode(b, "mode");
+ if (ugd->mode == _MODE_UNKNOWN)
+ {
+ ERR("UG: get mode failed");
+ return -1;
+ }
+
+ r = vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224, &val);
+ if(0 > r)
+ {
+ ugd->is_hour24 = 0;
+ }
+ else if( val == 1 || val == 2)
+ {
+ ugd->is_hour24 = val -1;
+ }
+ else
+ ERR("vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224, &val); error");
+
+ switch (ugd->mode)
+ {
+ case _MODE_GET_VCS:
+ ugd->caller = __cal_ug_get_caller(b, "caller");
+ break;
+ case _MODE_VIEW_VCS:
+ ugd->vcs_file = __cal_ug_get_file_name(b, "file");
+ if (!ugd->vcs_file)
+ {
+ ERR("UG: Invalid filename");
+ return -1;
+ }
+ break;
+ default:
+ // do nothing
+ break;
+ }
+
+ return 0;
+}
+
+static void __cal_ug_back_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ struct ug_data *ugd = data;
+
+ if (ugd && ugd->ug)
+ ug_destroy_me(ugd->ug);
+}
+
+static void __cal_ug_add_back_button(struct ug_data *ugd)
+{
+ Evas_Object *bt;
+
+ bt = elm_button_add(ugd->nv);
+ if (!bt)
+ return;
+
+ elm_object_style_set(bt, "naviframe/back_btn/default");
+ // TODO: i18n
+ elm_object_text_set(bt, "Back");
+ evas_object_show(bt);
+
+ Elm_Object_Item* navi_item = elm_naviframe_top_item_get(ugd->nv);
+
+ elm_object_item_part_content_set(navi_item, "prev_btn", bt);
+
+ evas_object_smart_callback_add(bt, "clicked", __cal_ug_back_button_callback, ugd);
+}
+
+extern void cal_vcs_viewer_ug_create(struct ug_data *ugd);
+
+static Evas_Object *__cal_ug_create(Evas_Object *parent, struct ug_data *ugd)
+{
+ ugd->base = cal_util_add_layout(parent, NULL);
+ CAL_ASSERT(ugd->base);
+
+ ugd->nv = elm_naviframe_add(parent);
+ CAL_ASSERT(ugd->nv);
+
+ ugd->bg = cal_util_add_bg(ugd->base, EINA_FALSE);
+ CAL_ASSERT(ugd->bg);
+
+ elm_object_theme_set(ugd->nv, ugd->theme);
+ elm_object_part_content_set(ugd->base, "elm.swallow.content", ugd->nv);
+ elm_object_part_content_set(ugd->base, "elm.swallow.bg", ugd->bg);
+
+ switch (ugd->mode) {
+ case _MODE_GET_EVT:
+ case _MODE_GET_VCS:
+ cal_list_ug_create(S_("IDS_COM_BODY_CALENDAR"), ugd);
+ break;
+ case _MODE_VIEW_VCS:
+ cal_vcs_viewer_ug_create(ugd);
+ break;
+ default:
+ // do nothing
+ break;
+ }
+
+ if (!ugd->cont) {
+ evas_object_del(ugd->base);
+ return NULL;
+ }
+
+ __cal_ug_add_back_button(ugd);
+
+ return ugd->base;
+}
+
+static void __cal_ug_free_data(struct ug_data *ugd)
+{
+ free(ugd->caller);
+
+ free(ugd->vcs_file);
+}
+
+static void *__cal_ug_create_callback(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv)
+{
+ Evas_Object *parent;
+ struct ug_data *ugd;
+ int r = 0;
+ Evas_Object *base;
+
+ if (!ug || !priv)
+ return NULL;
+
+ ugd = priv;
+ ugd->ug = ug;
+
+ cal_util_connect_pattern_generator();
+
+ ugd->theme = elm_theme_new();
+ if(NULL == ugd->theme)
+ {
+ ERR("elm_theme_new is failed");
+ return NULL;
+ }
+ elm_theme_ref_set(ugd->theme, NULL); //refer to default theme(NULL)
+
+ //cal_util_elm_theme_extension(ugd->theme);
+
+
+ if (mode != UG_MODE_FULLVIEW)
+ return NULL;
+
+ parent = ug_get_parent_layout(ug);
+ if (!parent)
+ return NULL;
+
+ r = __cal_ug_set_ug_date(ugd, data);
+ if (r)
+ return NULL;
+
+ r = CALENDAR_SVC_CONNECT();
+ if (r != CAL_SUCCESS) {
+ ERR("UG: calendar service connect failed");
+ __cal_ug_free_data(ugd);
+ return NULL;
+ }
+
+ base = __cal_ug_create(parent, ugd);
+ if (!base) {
+ CALENDAR_SVC_DISCONNECT();
+ __cal_ug_free_data(ugd);
+ return NULL;
+ }
+
+ return base;
+}
+
+static void __cal_ug_destroy_callback(struct ui_gadget *ug, bundle *data, void *priv)
+{
+ struct ug_data *ugd;
+
+ if (!ug || !priv)
+ return;
+
+ ugd = priv;
+
+ CALENDAR_SVC_DISCONNECT();
+
+ cal_util_disconnect_pattern_generator();
+
+ __cal_ug_free_data(ugd);
+
+ cal_util_delete_evas_object(&ugd->base);
+}
+
+static void __cal_ug_key_callback(struct ui_gadget *ug, enum ug_key_event evt, bundle *data, void *priv)
+{
+ if (!ug)
+ return;
+
+ DBG("UG: key event %d", evt);
+
+ switch (evt)
+ {
+ case UG_KEY_EVENT_END:
+ ug_destroy_me(ug);
+ break;
+ default:
+ break;
+ }
+}
+
+static inline void __cal_ug_bind_text_domain()
+{
+ const char *r;
+
+ r = bindtextdomain(UGNAME, UGLOCALE);
+ if (!r)
+ ERR("UG: bindtextdomain error");
+}
+
+API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ struct ug_data *ugd;
+
+ if (!ops)
+ return -1;
+
+ CAL_CALLOC(ugd, 1, struct ug_data);
+
+ ops->create = __cal_ug_create_callback;
+ ops->destroy = __cal_ug_destroy_callback;
+ ops->key_event = __cal_ug_key_callback;
+ ops->priv = ugd;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ __cal_ug_bind_text_domain();
+
+ appcore_set_i18n(CALENDAR_PACKAGE, LOCALEDIR);
+
+ return 0;
+}
+
+API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ struct ug_data *ugd;
+
+ if (!ops)
+ return;
+
+ ugd = ops->priv;
+ free(ugd);
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_UG_H__
+#define __CALENDAR_UG_H__
+
+#include <ui-gadget-module.h>
+#include "cld.h"
+
+enum cld_ug_mode {
+ _MODE_UNKNOWN = 0,
+ _MODE_GET_EVT,
+ _MODE_GET_VCS,
+ _MODE_VIEW_VCS,
+};
+
+struct ug_data {
+ Evas_Object *base;
+ struct ui_gadget *ug;
+
+ Evas_Object *nv;
+ Evas_Object *cont;
+ Evas_Object *bg;
+
+ enum cld_ug_mode mode;
+ char *caller;
+ char *vcs_file;
+
+ int is_hour24;
+
+ Elm_Theme *theme;
+};
+
+void cal_list_ug_create(const char *title, struct ug_data *ugd);
+
+#endif /* __CALENDAR_UG_H__ */
--- /dev/null
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
+
+SET(UG_SETTINS_SRCS
+ ug-settings.c
+ ug-settings-view.c
+ ${CMAKE_SOURCE_DIR}/src/edit-repeat.c
+)
+
+ADD_DEFINITIONS("-DUGLOCALE=\"${UG_LOCALE}\"")
+
+ADD_LIBRARY(${UGSETTINGS} SHARED ${UG_SETTINS_SRCS})
+SET_TARGET_PROPERTIES(${UGSETTINGS} PROPERTIES COMPILE_FLAGS "${UG_CFLAGS}")
+TARGET_LINK_LIBRARIES(${UGSETTINGS} ${COMMON_LIB} ${UG_PKGS_LDFLAGS})
+
+INSTALL(TARGETS ${UGSETTINGS} DESTINATION ${UG_LIB})
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <vconf.h>
+
+#include "cld.h"
+#include "ug-settings.h"
+
+typedef enum {
+ UI_SEPARATOR_TOP,
+ UI_SEPARATOR_MIDDLE,
+ UI_SEPARATOR_BOTTOM
+}ui_separator;
+
+typedef enum{
+ FIRST_DAY_SUNDAY = 0,
+ FIRST_DAY_MONDAY
+}first_day_type;
+
+typedef enum{
+ FOCUS_IN_DAILY = 1,
+ FOCUS_IN_WEEKLY
+}focus_in_month_view_type;
+
+typedef enum{
+ ITEM_LOCK_TIMEZONE_ON_OFF = 0,
+ ITEM_TIMEZONE,
+ ITEM_FIRST_DAY_OF_WEEK,
+ ITEM_SUNDAY,
+ ITEM_MONDAY,
+
+ ITEM_FOCUS_IN_MONTH_VIEW,
+ ITEM_DAILY_EVENTS,
+ ITEM_WEEKLY_EVENTS,
+
+ ITEM_NONE
+}item_type;
+
+typedef struct
+{
+ item_type index;
+ int check_status;
+ Elm_Object_Item *item;
+ Evas_Object *rgd;
+ int chk_status;
+ struct ug_data *ugd;
+ Evas_Object *check;
+ char *city;
+ char *timezone;
+}Item_data;
+
+static Elm_Genlist_Item_Class itc_seperator = {
+ .item_style = "dialogue/seperator",
+ .func.text_get = NULL,
+ .func.content_get = NULL,
+ .func.state_get = NULL,
+ .func.del = NULL,
+};
+
+static char *__cal_setting_ug_get_genlist_item_label(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__cal_setting_ug_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part);
+
+static Elm_Genlist_Item_Class itc_lock_tz = {
+ .item_style = "dialogue/1text.1icon",
+ .func.text_get = __cal_setting_ug_get_genlist_item_label,
+ .func.content_get = __cal_setting_ug_get_genlist_item_icon,
+ .func.state_get = NULL,
+ .func.del = NULL,
+};
+
+static Elm_Genlist_Item_Class itc_tz = {
+ .item_style = "dialogue/2text.3",
+ .func.text_get = __cal_setting_ug_get_genlist_item_label,
+ .func.content_get = NULL,
+ .func.state_get = NULL,
+ .func.del = NULL,
+};
+
+static Elm_Genlist_Item_Class itc = {
+ .item_style = "dialogue/2text.3/expandable",
+ .func.text_get = __cal_setting_ug_get_genlist_item_label,
+ .func.content_get = NULL,
+ .func.state_get = NULL,
+ .func.del = NULL,
+};
+
+static Elm_Genlist_Item_Class itc_radio = {
+ .item_style = "dialogue/1text.1icon.2/expandable2",
+ .func.text_get = __cal_setting_ug_get_genlist_item_label,
+ .func.content_get = __cal_setting_ug_get_genlist_item_icon,
+ .func.state_get = NULL,
+ .func.del = NULL,
+};
+
+static char *__cal_setting_ug_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ Item_data *item_data = (Item_data*)data;
+ item_type type = item_data->index;
+ struct tm tm;
+ time_t t;
+
+ t = time(NULL);
+ localtime_r(&t, &tm);
+
+ switch(type) {
+
+ case ITEM_TIMEZONE:
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ return strdup(C_("IDS_CLD_BODY_TIME_ZONE"));
+ else if (!CAL_STRCMP(part, "elm.text.2"))
+ return g_strdup_printf("%s, %s", C_(item_data->ugd->city), item_data->ugd->time_zone);
+ break;
+
+ case ITEM_LOCK_TIMEZONE_ON_OFF:
+ if (!CAL_STRCMP(part, "elm.text"))
+ return strdup(C_("IDS_CLD_MBODY_LOCK_TIME_ZONE"));
+ break;
+
+ case ITEM_FIRST_DAY_OF_WEEK:
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ return strdup(C_("IDS_CLD_BODY_FIRST_DAY_OF_WEEK"));
+ else if (!CAL_STRCMP(part, "elm.text.2")) {
+ if (item_data->ugd->is_monday)
+ return strdup(C_("IDS_ST_BODY_MONDAY"));
+ else
+ return strdup(C_("IDS_ST_BODY_SUNDAY"));
+ }
+ break;
+
+ case ITEM_FOCUS_IN_MONTH_VIEW:
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ return strdup(C_("IDS_CLD_BODY_LAYOUT_IN_MONTH_VIEW"));
+ else if (!CAL_STRCMP(part, "elm.text.2")) {
+ if(item_data->ugd->is_daily)
+ return strdup(C_("IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"));
+ else
+ return strdup(C_("IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"));
+ }
+ break;
+
+ case ITEM_SUNDAY:
+ return strdup(C_("IDS_ST_BODY_SUNDAY"));
+ break;
+
+ case ITEM_MONDAY:
+ return strdup(C_("IDS_ST_BODY_MONDAY"));
+ break;
+
+ case ITEM_DAILY_EVENTS:
+ if (!CAL_STRCMP(part, "elm.text"))
+ return strdup(C_("IDS_CLD_BODY_SHOW_EVENTS_BY_DAY"));
+ break;
+
+ case ITEM_WEEKLY_EVENTS:
+ if (!CAL_STRCMP(part, "elm.text"))
+ return strdup(C_("IDS_CLD_BODY_SHOW_EVENTS_BY_WEEK"));
+ break;
+
+ default:
+
+ break;
+ }
+
+ return NULL;
+}
+
+static void __cal_setting_ug_radio_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ Eina_List *l;
+ Eina_List *realized_list;
+ Elm_Object_Item *it;
+ Item_data *item_data = (Item_data*)data;
+ item_type type = item_data->index;
+ int ret;
+
+ switch(type)
+ {
+ case ITEM_SUNDAY:
+ item_data->ugd->is_monday = 0;
+ ret = vconf_set_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT,item_data->ugd->is_monday);
+ c_retm_if(ret != 0,"vconf_set_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT, 0) is failed(%d)", ret);
+ break;
+ case ITEM_MONDAY:
+ item_data->ugd->is_monday = 1;
+ ret = vconf_set_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT,item_data->ugd->is_monday);
+ c_retm_if(ret != 0,"vconf_set_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT, 0) is failed(%d)", ret);
+ break;
+ case ITEM_DAILY_EVENTS:
+ item_data->ugd->is_daily = 0;
+ ret = vconf_set_int(CAL_VCONFKEY_FOCUS_VIEW,item_data->ugd->is_daily);
+ c_retm_if(ret != 0,"vconf_set_int(CAL_VCONFKEY_FOCUS_VIEW, 0) is failed(%d)", ret);
+ break;
+ case ITEM_WEEKLY_EVENTS:
+ item_data->ugd->is_daily = 1;
+ ret = vconf_set_int(CAL_VCONFKEY_FOCUS_VIEW,item_data->ugd->is_daily);
+ c_retm_if(ret != 0,"vconf_set_int(CAL_VCONFKEY_FOCUS_VIEW, 0) is failed(%d)", ret);
+ break;
+ default:
+ break;
+ }
+
+
+ elm_genlist_item_selected_set(item_data->item,0);
+
+ realized_list = elm_genlist_realized_items_get(item_data->ugd->genlist);
+ EINA_LIST_FOREACH(realized_list, l, it)
+ {
+ item_data = elm_object_item_data_get(it);
+ if (!item_data)
+ continue;
+
+ if ( type == ITEM_FIRST_DAY_OF_WEEK ||
+ type == ITEM_SUNDAY ||
+ type == ITEM_MONDAY )
+ {
+ if ( item_data->index == ITEM_FIRST_DAY_OF_WEEK ||
+ item_data->index == ITEM_SUNDAY ||
+ item_data->index == ITEM_MONDAY )
+ elm_genlist_item_update(it);
+ }
+ else if ( type == ITEM_FOCUS_IN_MONTH_VIEW ||
+ type == ITEM_DAILY_EVENTS ||
+ type == ITEM_WEEKLY_EVENTS )
+ {
+ if ( item_data->index == ITEM_FOCUS_IN_MONTH_VIEW ||
+ item_data->index == ITEM_DAILY_EVENTS ||
+ item_data->index == ITEM_WEEKLY_EVENTS )
+ elm_genlist_item_update(it);
+ }
+ }
+
+}
+
+static void __cal_setting_ug_on_off_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ Item_data *item_data = (Item_data*)data;
+ int ret;
+ if(elm_check_state_get(item_data->check))
+ {
+ item_data->ugd->is_on = 1;
+ ret = vconf_set_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF,item_data->ugd->is_on);
+ c_retm_if(ret != 0,"vconf_set_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF, 0) is failed(%d)", ret);
+ elm_object_item_disabled_set(item_data->ugd->item_time_zone, EINA_FALSE);
+ }
+ else
+ {
+ item_data->ugd->is_on = 0;
+ ret = vconf_set_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF,item_data->ugd->is_on);
+ c_retm_if(ret != 0,"vconf_set_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF, 0) is failed(%d)", ret);
+ elm_object_item_disabled_set(item_data->ugd->item_time_zone, EINA_TRUE);
+ }
+}
+
+static void __cal_setting_ug_on_off_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ Item_data *item_data = (Item_data*)data;
+
+ elm_check_state_set(item_data->check, !elm_check_state_get(item_data->check));
+
+ __cal_setting_ug_on_off_changed_callback(data, elm_object_item_widget_get(item_data->item), event_info);
+
+ elm_genlist_item_selected_set(item_data->item,0);
+}
+
+static void __cal_setting_genlist_item_select_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ Item_data *item_data = (Item_data*)data;
+ elm_genlist_item_selected_set(item_data->item,0);
+ if(0 == elm_genlist_item_expanded_get(item_data->item))
+ {
+ elm_genlist_item_expanded_set(item_data->item, 1);
+ }
+ else
+ {
+ elm_genlist_item_expanded_set(item_data->item, 0);
+ }
+}
+
+static Evas_Object *__cal_setting_ug_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ Evas_Object *eo_begin = NULL;
+ Item_data *item_data = (Item_data *)data;
+ item_type type = item_data->index;
+
+ if (!CAL_STRCMP(part, "elm.icon"))
+ {
+ eo_begin = elm_radio_add(obj);
+ switch(type)
+ {
+ case ITEM_LOCK_TIMEZONE_ON_OFF:
+ eo_begin = elm_check_add(obj);
+ elm_check_state_set(eo_begin, item_data->ugd->is_on);
+ elm_object_style_set(eo_begin, "on&off");
+ evas_object_propagate_events_set(eo_begin, EINA_FALSE);
+ item_data->check = eo_begin;
+ evas_object_smart_callback_add(eo_begin, "changed", __cal_setting_ug_on_off_changed_callback, item_data);
+ break;
+ case ITEM_SUNDAY:
+ elm_radio_state_value_set(eo_begin, !(item_data->ugd->is_monday)-1);
+ break;
+ case ITEM_MONDAY:
+ elm_radio_state_value_set(eo_begin, item_data->ugd->is_monday-1);
+ break;
+ case ITEM_DAILY_EVENTS:
+ elm_radio_state_value_set(eo_begin, item_data->ugd->is_daily);
+ break;
+ case ITEM_WEEKLY_EVENTS:
+ elm_radio_state_value_set(eo_begin, !(item_data->ugd->is_daily));
+ break;
+ default:
+ break;
+ }
+ elm_radio_group_add(eo_begin, item_data->rgd);
+
+ item_data->check = eo_begin;
+ }
+ return eo_begin;
+}
+
+static void __cal_setting_ug_time_zone_ug_destroy_callback(struct ui_gadget *ug, void *priv)
+{
+ CAL_FN_START;
+
+ Item_data *item_data = priv;
+ elm_genlist_item_selected_set(item_data->item,0);
+ if (ug)
+ ug_destroy(ug);
+}
+
+static void __cal_setting_ug_time_zone_ug_result_callback(struct ui_gadget *ug, bundle *result, void *priv)
+{
+ CAL_FN_START;
+
+ c_retm_if(!priv, "priv is null");
+
+ Item_data *item_data = priv;
+
+ const char* city = bundle_get_val(result, "city");
+ c_retm_if(!city, "city is null");
+
+ const char* timezone = bundle_get_val(result, "timezone");
+ c_retm_if(!timezone, "timezone is null");
+
+ const char* tzpath = bundle_get_val(result, "tzpath");
+ c_retm_if(!tzpath, "tzpath is null");
+
+ if (item_data->ugd->city)
+ free(item_data->ugd->city);
+
+ item_data->ugd->city = strdup(city);
+ c_retm_if(!item_data->ugd->city, "item_data->ugd->city is null");
+
+ item_data->ugd->time_zone = g_strdup_printf("GMT%s", timezone);
+ c_retm_if(!item_data->ugd->time_zone, "item_data->ugd->time_zone is null");
+
+ elm_genlist_item_update(item_data->item);
+
+ int ret = vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_PATH, tzpath);
+ c_warn_if(ret, "vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_PATH, tzpath) is failed");
+
+ ret = vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_CITY, city);
+ c_warn_if(ret, "vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_CITY, tzpath) is failed");
+
+ ret = vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_OFFSET, timezone);
+ c_warn_if(ret, "vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_OFFSET, tzpath) is failed");
+}
+
+static void __cal_setting_ug_time_zone_ug_layout_callback(struct ui_gadget *ug, enum ug_mode mode, void *priv)
+{
+ CAL_FN_START;
+
+ Evas_Object *base;
+
+ CAL_ASSERT(ug);
+
+ base = ug_get_layout(ug);
+ if (!base) {
+ ug_destroy(ug);
+ return;
+ }
+
+ switch (mode)
+ {
+ case UG_MODE_FULLVIEW:
+ elm_win_resize_object_add(ug_get_window(), base);
+ evas_object_show(base);
+ break;
+ default:
+ DBG("Unsupported ug layout");
+ break;
+ }
+}
+
+static void __cal_setting_ug_create_time_zone_ug(void *data, Evas_Object *obj, void *event_info)
+{
+ Item_data *item_data = (Item_data*)data;
+
+ struct ug_cbs uc;
+
+ memset(&uc, 0, sizeof(struct ug_cbs));
+ uc.destroy_cb = __cal_setting_ug_time_zone_ug_destroy_callback;
+ uc.layout_cb = __cal_setting_ug_time_zone_ug_layout_callback;
+ uc.result_cb = __cal_setting_ug_time_zone_ug_result_callback;
+ uc.priv = item_data;
+
+ ug_create(NULL, "worldclock-efl", UG_MODE_FULLVIEW, NULL, &uc);
+
+}
+
+static Elm_Object_Item *__cal_setting_ug_add_genlist_item(struct ug_data *ugd, Evas_Object *genlist,Eina_Bool is_seperator,int index)
+{
+ Elm_Object_Item *item = NULL;
+ Item_data *item_data = NULL;
+
+ if(NULL == genlist)
+ {
+ return NULL;
+ }
+
+ if(is_seperator)
+ {
+ //append seperator item
+ item = elm_genlist_item_append(genlist, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
+ }
+ else
+ {
+ item_data = (Item_data *)malloc(sizeof(Item_data));
+ if(NULL == item_data)
+ {
+ return NULL;
+ }
+ memset(item_data,0x00,sizeof(Item_data));
+
+ item_data->ugd = ugd;
+
+ switch(index)
+ {
+ case ITEM_LOCK_TIMEZONE_ON_OFF:
+ item_data->index = index;
+ item_data->item = elm_genlist_item_append(genlist, &itc_lock_tz, item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_setting_ug_on_off_select_callback, item_data);
+ break;
+ case ITEM_TIMEZONE:
+ item_data->index = index;
+ item_data->item = elm_genlist_item_append(genlist, &itc_tz, item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_setting_ug_create_time_zone_ug, item_data);
+ ugd->item_time_zone = item_data->item;
+ if (!ugd->is_on)
+ {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ }
+ break;
+ case ITEM_FIRST_DAY_OF_WEEK:
+ item_data->index = index;
+ item_data->item = elm_genlist_item_append(genlist, &itc, item_data, NULL, ELM_GENLIST_ITEM_TREE, __cal_setting_genlist_item_select_callback, item_data);
+ ugd->rgd_first_day = elm_radio_add((Evas_Object *)(item_data->item));
+ elm_radio_state_value_set(ugd->rgd_first_day, -1);
+ break;
+ case ITEM_FOCUS_IN_MONTH_VIEW:
+ item_data->index = index;
+ item_data->item = elm_genlist_item_append(genlist, &itc, item_data, NULL, ELM_GENLIST_ITEM_TREE, __cal_setting_genlist_item_select_callback, item_data);
+ ugd->rgd_focus_in_month = elm_radio_add((Evas_Object *)(item_data->item));
+ elm_radio_state_value_set(ugd->rgd_focus_in_month, -1);
+ break;
+ case ITEM_SUNDAY:
+ case ITEM_MONDAY:
+ item_data->index = index;
+ item_data->item = elm_genlist_item_append(genlist, &itc_radio, item_data, ugd->item_first_day_of_week, ELM_GENLIST_ITEM_NONE, __cal_setting_ug_radio_changed_callback, item_data);
+ item_data->rgd = ugd->rgd_first_day;
+ break;
+ case ITEM_DAILY_EVENTS:
+ case ITEM_WEEKLY_EVENTS:
+ item_data->index = index;
+ item_data->item = elm_genlist_item_append(genlist, &itc_radio, item_data, ugd->item_focus_in_month, ELM_GENLIST_ITEM_NONE, __cal_setting_ug_radio_changed_callback, item_data);
+ item_data->rgd = ugd->rgd_focus_in_month;
+ break;
+
+ }
+
+
+ item = item_data->item;
+ }
+
+ return item;
+
+}
+
+static void __cal_setting_ug_genlist_item_expand_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ struct ug_data *ugd = (struct ug_data*)data;
+ Elm_Object_Item *it = event_info;
+ Evas_Object *gl = elm_object_item_widget_get(it);
+
+ if(it == ugd->item_first_day_of_week)
+ {
+ __cal_setting_ug_add_genlist_item(ugd,gl,FALSE,ITEM_SUNDAY);
+ __cal_setting_ug_add_genlist_item(ugd,gl,FALSE,ITEM_MONDAY);
+
+ }
+ else if(it == ugd->item_focus_in_month)
+ {
+ __cal_setting_ug_add_genlist_item(ugd,gl,FALSE,ITEM_DAILY_EVENTS);
+ __cal_setting_ug_add_genlist_item(ugd,gl,FALSE,ITEM_WEEKLY_EVENTS);
+
+ }
+}
+
+
+static void __cal_setting_ug_genlist_item_contract_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Object_Item *item = event_info;
+ elm_genlist_item_subitems_clear(item);
+}
+
+Evas_Object* cal_setting_ug_create_view(Evas_Object *navi, struct ug_data *ugd)
+{
+ Evas_Object *genlist = NULL;
+
+ if (!navi || !ugd )
+ {
+ return NULL;
+ }
+
+ //creat list
+ genlist = elm_genlist_add(navi);
+ elm_genlist_clear(genlist);
+
+ ugd->genlist = genlist;
+
+ __cal_setting_ug_add_genlist_item(ugd,genlist,EINA_TRUE, 0);
+ __cal_setting_ug_add_genlist_item(ugd,genlist,EINA_FALSE,ITEM_LOCK_TIMEZONE_ON_OFF);
+ __cal_setting_ug_add_genlist_item(ugd,genlist,EINA_FALSE,ITEM_TIMEZONE);
+
+ __cal_setting_ug_add_genlist_item(ugd,genlist,EINA_TRUE,0);
+ ugd->item_first_day_of_week = __cal_setting_ug_add_genlist_item(ugd,genlist,EINA_FALSE,ITEM_FIRST_DAY_OF_WEEK);
+
+ __cal_setting_ug_add_genlist_item(ugd,genlist,EINA_TRUE,0);
+ ugd->item_focus_in_month = __cal_setting_ug_add_genlist_item(ugd,genlist,EINA_FALSE,ITEM_FOCUS_IN_MONTH_VIEW);
+
+ evas_object_smart_callback_add(genlist, "expanded", __cal_setting_ug_genlist_item_expand_callback, ugd);
+ evas_object_smart_callback_add(genlist, "contracted", __cal_setting_ug_genlist_item_contract_callback, ugd);
+
+ return genlist;
+}
--- /dev/null
+/*\r
+\r
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+\r
+This file is part of org.tizen.efl-calendar\r
+Written by Taeho Kang <taeho84.kang@samsung.com>\r
+\r
+PROPRIETARY/CONFIDENTIAL\r
+\r
+This software is the confidential and proprietary information of\r
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not\r
+disclose such Confidential Information and shall use it only in\r
+accordance with the terms of the license agreement you entered\r
+into with SAMSUNG ELECTRONICS.\r
+\r
+SAMSUNG make no representations or warranties about the suitability\r
+of the software, either express or implied, including but not limited\r
+to the implied warranties of merchantability, fitness for a particular\r
+purpose, or non-infringement. SAMSUNG shall not be liable for any\r
+damages suffered by licensee as a result of using, modifying or\r
+distributing this software or its derivatives.\r
+\r
+*/\r
+\r
+\r
+#ifndef __CALENDAR_UG_SETTING_VIEW_H__\r
+#define __CALENDAR_UG_SETTING_VIEW_H__\r
+\r
+Evas_Object* cal_setting_ug_create_view(Evas_Object *navi, struct ug_data *ugd);\r
+\r
+#endif /* __CALENDAR_UG_SETTING_VIEW_H__ */\r
+\r
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <ui-gadget-module.h>
+#include <libintl.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include "cld.h"
+#include "ug-settings.h"
+#include "ug-settings-view.h"
+
+extern int appcore_set_i18n(const char *, const char *);
+
+static void __cal_setting_ug_back_button_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ struct ug_data *ugd = data;
+ evas_object_hide(ugd->bg);
+ ug_destroy_me(ugd->ug);
+}
+
+static void __cal_setting_ug_initialize(struct ug_data *ugd)
+{
+ char *tz_path = NULL;
+ char *tz_city = NULL;
+ char *tz_offset = NULL;
+ int ret;
+
+ ret = cal_util_get_timezone_info(&tz_path, &tz_city, &tz_offset);
+ c_warn_if(ret, "cal_util_get_timezone_info is failed");
+
+ if (tz_city)
+ ugd->city = strdup(tz_city);
+ else {
+ ERR("tz_city is null");
+ ugd->city = strdup("IDS_WCL_BODY_CITYNAME_SEOUL");
+ c_warn_if(!ugd->city, "ugd->city is null");
+ }
+
+ if (tz_offset)
+ ugd->time_zone = strdup(tz_offset);
+ else {
+ ERR("tz_offset is null");
+ ugd->time_zone = strdup("GMT+9");
+ c_warn_if(!ugd->time_zone, "ugd->city is null");
+ }
+
+ if (tz_path)
+ free(tz_path);
+ if (tz_city)
+ free(tz_city);
+ if (tz_offset)
+ free(tz_offset);
+
+ ret = vconf_get_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF, &ugd->is_on);
+ c_warn_if(ret, "vconf_get_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF, &ugd->is_on) is failed");
+
+ if (0 != vconf_get_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT,&ugd->is_monday))
+ {
+ ret = vconf_set_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT, 1);
+ c_warn_if(ret != 0,"vconf_set_int(VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT, 0) is failed(%d)", ret);
+ }
+
+ if (0 != vconf_get_int(CAL_VCONFKEY_FOCUS_VIEW,&ugd->is_daily))
+ {
+ ret = vconf_set_int(CAL_VCONFKEY_FOCUS_VIEW, 1);
+ c_warn_if(ret != 0,"vconf_set_int(CAL_VCONFKEY_FOCUS_VIEW, 0) is failed(%d)", ret);
+ }
+}
+
+static Evas_Object *__cal_setting_ug_create_layout(Evas_Object *parent, struct ug_data *ugd)
+{
+ Evas_Object *bt_back = NULL;
+ Evas_Object *layout = NULL;
+ Elm_Object_Item* navi_item = NULL;
+
+ ugd->base = cal_util_add_layout(parent, NULL);
+ CAL_ASSERT(ugd->base);
+
+ ugd->bg = cal_util_add_bg(ugd->base, EINA_FALSE);
+ CAL_ASSERT(ugd->bg);
+
+ ugd->nv = elm_naviframe_add(ugd->base);
+ CAL_ASSERT(ugd->nv);
+
+ layout = cal_setting_ug_create_view(ugd->nv, ugd);
+ CAL_ASSERT(layout);
+
+ navi_item = elm_naviframe_item_push(ugd->nv, "Calendar", NULL, NULL, layout, NULL);
+
+ bt_back = elm_object_item_part_content_get(navi_item, "prev_btn");
+ if (!bt_back)
+ {
+ bt_back = elm_button_add(ugd->nv);
+ elm_object_item_part_content_set(navi_item, "prev_btn", bt_back);
+ }
+ elm_object_style_set(bt_back, "naviframe/back_btn/default");
+ evas_object_smart_callback_add(bt_back, "clicked", __cal_setting_ug_back_button_callback, ugd);
+
+ elm_object_part_content_set(ugd->base, "elm.swallow.content", ugd->nv);
+ elm_object_part_content_set(ugd->base, "elm.swallow.bg", ugd->bg);
+
+ return ugd->base;
+}
+
+static void *__cal_setting_ug_create_callback(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv)
+{
+ Evas_Object *parent;
+ struct ug_data *ugd;
+ Evas_Object *base;
+
+ if (!ug || !priv)
+ return NULL;
+
+ cal_util_connect_pattern_generator();
+
+ ugd = priv;
+ ugd->ug = ug;
+ __cal_setting_ug_initialize(ugd);
+ if (mode != UG_MODE_FULLVIEW)
+ return NULL;
+ parent = ug_get_parent_layout(ug);
+ if (!parent)
+ return NULL;
+
+ base = __cal_setting_ug_create_layout(parent, ugd);
+ c_retvm_if(!base, NULL, "base is null");
+
+ return base;
+}
+
+static void __cal_setting_ug_destroy_callback(struct ui_gadget *ug, bundle *data, void *priv)
+{
+ struct ug_data *ugd;
+
+ if (!ug || !priv)
+ return;
+
+ ugd = priv;
+
+ cal_util_delete_evas_object(&ugd->base);
+}
+
+static void __cal_setting_ug_key_callback(struct ui_gadget *ug, enum ug_key_event evt,
+ bundle *data, void *priv)
+{
+ if (!ug)
+ return;
+
+ DBG("UG: key event %d", evt);
+
+ switch (evt) {
+ case UG_KEY_EVENT_END:
+ ug_destroy_me(ug);
+ break;
+ default:
+ break;
+ }
+}
+
+static inline void __cal_setting_ug_bind_text_domain()
+{
+ const char *r;
+
+ r = bindtextdomain(UGSETTINGS, UGLOCALE);
+ if (!r)
+ ERR("UG: bindtextdomain error");
+}
+
+API int setting_plugin_reset(bundle *data, void *priv)
+{
+ CAL_FN_START;
+
+ int ret;
+
+ ret = CALENDAR_SVC_CONNECT();
+ c_warn_if(ret != CAL_SUCCESS, "CALENDAR_SVC_CONNECT is failed(%d)", ret);
+
+ ret = vconf_set_int(CAL_VCONFKEY_FOCUS_VIEW, 0);
+ c_warn_if(ret != 0, "vconf_set_int(CAL_VCONFKEY_FOCUS_VIEW, 0) is failed(%d)", ret);
+
+ ret = vconf_set_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF, 0);
+ c_warn_if(ret != 0, "vconf_set_int(CAL_VCONFKEY_LOCK_TIMEZONE_ON_OFF, 0) is failed(%d)", ret);
+
+ ret = vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_PATH, "Asia/Seoul");
+ c_warn_if(ret != 0, "vconf_set_int(CAL_VCONFKEY_LOCK_TIMEZONE_PATH, 'Seoul') is failed(%d)", ret);
+
+ ret = vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_CITY, "IDS_WCL_BODY_CITYNAME_SEOUL");
+ c_warn_if(ret != 0, "vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_CITY, tzpath) is failed");
+
+ ret = vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_OFFSET, "+9");
+ c_warn_if(ret != 0, "vconf_set_str(CAL_VCONFKEY_LOCK_TIMEZONE_OFFSET, tzpath) is failed");
+
+ ret = CALENDAR_SVC_DELETE_ALL(ALL_ACCOUNT_ID, NULL);
+ c_warn_if(ret != CAL_SUCCESS, "CALENDAR_SVC_DELETE_ALL(ALL_ACCOUNT_ID, NULL) is failed(%d)", ret);
+
+ ret = CALENDAR_SVC_DISCONNECT();
+ c_warn_if(ret != CAL_SUCCESS, "CALENDAR_SVC_DISCONNECT is failed(%d)", ret);
+
+ return 0;
+}
+
+API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ struct ug_data *ugd;
+
+ if (!ops)
+ return -1;
+
+ CAL_CALLOC(ugd, 1, struct ug_data);
+
+ ops->create = __cal_setting_ug_create_callback;
+ ops->destroy = __cal_setting_ug_destroy_callback;
+ ops->key_event = __cal_setting_ug_key_callback;
+ ops->priv = ugd;
+ ops->opt = UG_OPT_INDICATOR_PORTRAIT_ONLY;
+
+ __cal_setting_ug_bind_text_domain();
+
+ appcore_set_i18n(CALENDAR_PACKAGE, LOCALEDIR);
+
+ return 0;
+}
+
+API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ struct ug_data *ugd;
+
+ cal_util_disconnect_pattern_generator();
+
+ if (!ops)
+ return;
+
+ ugd = ops->priv;
+ free(ugd);
+}
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#ifndef __CALENDAR_UG_H__
+#define __CALENDAR_UG_H__
+
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+#define CAL_TEXT_MAX_LEN 1024
+#define CAL_TEXT_SHORT_LEN 256
+
+enum cld_ug_mode {
+ _MODE_UNKNOWN = 0,
+ _MODE_GET_EVT,
+ _MODE_GET_VCS,
+ _MODE_VIEW_VCS,
+};
+
+struct ug_data {
+ Evas_Object *base;
+ struct ui_gadget *ug;
+
+ Evas_Object *nv;
+ Evas_Object *cont;
+ Evas_Object *bg;
+
+ enum cld_ug_mode mode;
+ char *caller;
+ char *vcs_file;
+
+ Elm_Object_Item *item_time_zone;
+ Elm_Object_Item *item_first_day_of_week;
+ Evas_Object *rgd_first_day;
+ Elm_Object_Item *item_focus_in_month;
+ Evas_Object *rgd_focus_in_month;
+
+ Evas_Object *genlist;
+
+ int is_on;
+ int is_monday;
+ int is_daily;
+
+ char *city;
+ char *time_zone;
+
+ char timezone_string[128];
+};
+
+void cal_list_ug_create(const char *title, struct ug_data *ugd);
+
+// TODO: get full path from caller
+#define VFILE_PATH "/opt/data/ug-calendar"
+
+#endif /* __CALENDAR_UG_H__ */
--- /dev/null
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
+
+SET(VIEWER calendar-viewer)
+
+SET(SRCS
+ viewer.c
+ ${CMAKE_SOURCE_DIR}/src/view-detail.c
+ ${CMAKE_SOURCE_DIR}/src/view-edit.c
+ ${CMAKE_SOURCE_DIR}/src/edit-alarm.c
+ ${CMAKE_SOURCE_DIR}/src/edit-repeat.c
+)
+
+SET(VC_PKGNAME "org.${VENDOR}.${VIEWER}")
+SET(VC_PREFIX "/opt/apps/${VC_PKGNAME}")
+SET(VC_BINDIR "${VC_PREFIX}/bin")
+SET(VC_RESDIR "${VC_PREFIX}/res")
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(viewer_pkgs REQUIRED elementary ui-gadget calendar icu-i18n)
+
+FOREACH(flag ${viewer_pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(viewer_pkgs_LDFLAGS "${pkgs_LDFLAGS} ${viewer_pkgs_LDFLAGS}")
+
+ADD_DEFINITIONS("-DVC_PACKAGE=\"${VIEWER}\"")
+ADD_DEFINITIONS("-DVC_PACKAGE_NAME=\"${VC_PKGNAME}\"")
+
+ADD_EXECUTABLE(${VIEWER} ${SRCS})
+SET_TARGET_PROPERTIES(${VIEWER} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS}")
+#TARGET_LINK_LIBRARIES(${VIEWER} ug-calendar-detail-efl ug-calendar-edit-efl ${viewer_pkgs_LDFLAGS} "-fpie")
+TARGET_LINK_LIBRARIES(${VIEWER} ${COMMON_LIB} ${viewer_pkgs_LDFLAGS} "-pie -lm")
+
+INSTALL(TARGETS ${VIEWER} DESTINATION ${VC_BINDIR})
+
+# install desktop file & icon
+CONFIGURE_FILE(${VIEWER}.desktop.in ${CMAKE_BINARY_DIR}/${VC_PKGNAME}.desktop)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${VC_PKGNAME}.desktop DESTINATION "/opt/share/applications")
--- /dev/null
+Name=Calendar-viewer
+Type=Application
+Exec=@VC_PREFIX@/bin/@VIEWER@
+Icon=${PKGNAME}.png
+MimeType=text/calendar
+NoDisplay=TRUE
+Version=0.1.2
+X-TIZEN-TaskManage=True
+X-TIZEN-Multiple=False
+X-TIZEN-Removable=False
+X-TIZEN-SVC=http://tizen.org/appsvc/operation/view|NULL|text/calendar
--- /dev/null
+/*
+
+Copyright (c) 2000-2012 Samsung Electronics Co., Ltd All Rights Reserved
+
+This file is part of org.tizen.efl-calendar
+Written by Taeho Kang <taeho84.kang@samsung.com>
+
+PROPRIETARY/CONFIDENTIAL
+
+This software is the confidential and proprietary information of
+SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
+disclose such Confidential Information and shall use it only in
+accordance with the terms of the license agreement you entered
+into with SAMSUNG ELECTRONICS.
+
+SAMSUNG make no representations or warranties about the suitability
+of the software, either express or implied, including but not limited
+to the implied warranties of merchantability, fitness for a particular
+purpose, or non-infringement. SAMSUNG shall not be liable for any
+damages suffered by licensee as a result of using, modifying or
+distributing this software or its derivatives.
+
+*/
+
+
+#include <stdio.h>
+#include <appcore-efl.h>
+#include <aul.h>
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <app.h>
+
+#include "detail.h"
+
+#define SERVICE_CALENDAR_VIEWER_CAL_ID_NAME "cal_id"
+#define SERVICE_CALENDAR_VIEWER_MIME_NAME AUL_K_MIME_CONTENT
+
+#if !defined(CV_PACKAGE)
+# define CV_PACKAGE "calendar-viewer"
+#endif
+
+static bool viewer_create(void *data)
+{
+ struct appdata *ad = data;
+ Evas_Object *win;
+ Evas_Object *bg;
+ Evas_Object *nv;
+ Evas_Object *ly;
+ int r;
+
+ CALENDAR_SVC_CONNECT();
+
+ /* create window */
+ win = cal_util_add_window(CV_PACKAGE, NULL, NULL);
+ c_retvm_if(!win, false, "cal_util_add_window() Failed");
+ ad->win = win;
+
+ bg = cal_util_add_bg(win, EINA_TRUE);
+ c_retvm_if(NULL == bg, false, "cal_util_add_bg() Failed");
+
+ ly = cal_util_add_layout(win, NULL);
+ if (ly) {
+ elm_win_resize_object_add(win, ly);
+ }
+ ad->base = ly;
+
+ nv = elm_naviframe_add(ad->win);
+ c_retvm_if(NULL == win, false, "elm_naviframe_add() Failed");
+ ad->nv = nv;
+ elm_object_part_content_set(ad->base, "elm.swallow.content", ad->nv);
+
+ /* init internationalization */
+ r = appcore_set_i18n(CALENDAR_PACKAGE, LOCALEDIR);
+ c_retvm_if(r, false, "appcore_set_i18n() Failed");
+
+ cal_util_connect_pattern_generator();
+
+ evas_object_show(win);
+
+ UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_PORTRAIT_ONLY);
+
+ return true;
+}
+
+static void viewer_terminate(void *data)
+{
+ int ret;
+ struct appdata *ad = data;
+
+ cal_util_disconnect_pattern_generator();
+
+ ug_destroy_all();
+
+ if (ad->win)
+ evas_object_del(ad->win);
+
+ ret = CALENDAR_SVC_DISCONNECT();
+ c_warn_if(ret != CAL_SUCCESS, "CALENDAR_SVC_DISCONNECT() Failed(%d)", ret);
+
+ return;
+}
+
+static void viewer_pause(void *data)
+{
+ ug_pause();
+
+ return;
+}
+
+static void viewer_resume(void *data)
+{
+ ug_resume();
+
+ return;
+}
+
+static void viewer_service(service_h service, void *data)
+{
+ c_retm_if(!service, "service is null.");
+ c_retm_if(!data, "data is null.");
+
+ int cal_id;
+ int r;
+ char *operation = NULL;
+ char *val_cal_id = NULL;
+ char *val_ical = NULL;
+ struct appdata *ad = data;
+
+ if (NULL == ad->win) {
+ ERR("win is NULL");
+ elm_exit();
+ return;
+ }
+
+ r = service_get_extra_data(service, SERVICE_CALENDAR_VIEWER_CAL_ID_NAME, &val_cal_id);
+ c_warn_if(SERVICE_ERROR_NONE != r, "service_get_extra_data is failed(%d).", r);
+
+ if (val_cal_id && *val_cal_id) {
+ cal_id = atoi(val_cal_id);
+ if (cal_id <= 0) {
+ ERR("bundle value(cal_id) is wrong(%d)", cal_id);
+ }
+ else {
+ ad->cid= cal_id;
+ cal_detail_create_view(ad, ad->nv);
+ }
+
+ free(val_cal_id);
+ val_cal_id = NULL;
+ } else {
+ r = service_get_operation(service, &operation);
+ c_retm_if(SERVICE_ERROR_NONE != r, "service_get_operation is failed.");
+
+ r = service_get_uri(service, &val_ical);
+ c_retm_if(SERVICE_ERROR_NONE != r, "service_get_uri is failed.");
+
+ /*MIME CONTENT FOR VCS*/
+ if (val_ical) {
+ char *raw_data = NULL;
+ int size = 0;
+ struct stat st;
+
+ FILE * file = fopen(val_ical, "r");
+ if(!file)
+ {
+ free(raw_data);
+ ERR("Failed to open file!");
+ return;
+ }
+
+ stat(val_ical, &st);
+ size = st.st_size;
+ CAL_CALLOC(raw_data, (size+1), char);
+ CAL_ASSERT(raw_data);
+ memset(raw_data,0,(size+1));
+
+ fread(raw_data, 1, size, file);
+
+ fclose( file );
+
+ ad->is_aul = EINA_TRUE;
+ ad->request_view = CV_DETAIL;
+
+ cal_viewer_create_view(ad, ad->nv, raw_data);
+
+ free(raw_data);
+ free(val_ical);
+ val_ical = NULL;
+ }
+ else {
+ ERR("bundle value is NULL");
+ elm_exit();
+ return;
+ }
+ }
+
+ elm_win_activate(ad->win);
+ return;
+}
+
+API int main(int argc, char *argv[])
+{
+ struct appdata ad;
+
+ app_event_callback_s event_callback;
+
+ event_callback.create = viewer_create;
+ event_callback.terminate = viewer_terminate;
+ event_callback.pause = viewer_pause;
+ event_callback.resume = viewer_resume;
+ event_callback.service = viewer_service;
+ event_callback.low_memory = NULL;
+ event_callback.low_battery = NULL;
+ event_callback.device_orientation = NULL;
+ event_callback.language_changed = NULL;
+ event_callback.region_format_changed = NULL;
+
+ memset(&ad, 0x0, sizeof(struct appdata));
+
+ return app_efl_main(&argc, &argv, &event_callback, &ad);
+}