*/
-
-
-
-
#include <vconf.h>
#include "view.h"
focus_in_month_view_type calendar_focus_view;
Evas_Object *genlist;
- struct calsvc *csv;
+ Eina_List *event_list;
int single_moved;
int multi_touched;
int d;
+ Evas_Object *popup;
+ Evas_Coord x;
+ Evas_Coord y;
+ Elm_Object_Item *sweep_it;
}cal_month_data;
-extern void cal_month_update_month_calendar(Evas_Object *ly, struct tm *t);
+
+extern void cal_month_calendar_update_view(Evas_Object *ly);
+
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 char* __cal_month_share_genlist_item_label(void *data, Evas_Object *obj, const char *part);
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,
+ .decorate_item_style = "mode/slide3",
+};
+
+static Elm_Genlist_Item_Class itc_1text = {
+ .item_style = "1text",
+ .func.content_get = NULL,
+ .func.text_get = __cal_month_share_genlist_item_label,
};
static int is_hour24;
static Calendar_color calendar_color;
+static inline void __cal_month_delete_popup(cal_month_data *p)
+{
+ c_retm_if(!p || !p->popup, "param is null");
+
+ evas_object_del(p->popup);
+ p->popup = NULL;
+}
+
+static char* __cal_month_share_genlist_item_label(void *data, Evas_Object *obj, const char *part)
+{
+ c_retvm_if(!data || !obj || !part, NULL, "data is null");
+
+ char *name = (char *)data;
+
+ if (!CAL_STRCMP(part, "elm.text")) {
+ return strdup(name);
+ }
+
+ return NULL;
+}
+
static inline void __cal_month_stop_animation(cal_month_data *p)
{
if (p->ani)
cal_month_data *p = data;
- CALENDAR_SVC_FREE_CS(&p->csv);
+ CALENDAR_SVC_FREE_CS_LIST(&p->event_list);
__cal_month_stop_animation(p);
if (p->idler)
ecore_idler_del(p->idler);
+ if (p->popup)
+ evas_object_del(p->popup);
+
free(p);
}
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)
+static void __cal_month_make_time_text(struct tm *tm, struct tm *base_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)
+ if (tm->tm_year != base_tm->tm_year)
date = CAL_UTIL_DATE_FORMAT_11;
- else if (ttm.tm_mon != tm->tm_mon)
+ else if (tm->tm_mon != base_tm->tm_mon)
date = CAL_UTIL_DATE_FORMAT_10;
- else if (ttm.tm_mday != tm->tm_mday)
+ else if (tm->tm_mday != base_tm->tm_mday)
date = CAL_UTIL_DATE_FORMAT_9;
else
date = NULL;
- cal_util_get_time_text(buf, sz, NULL, time, &ttm);
+ cal_util_get_time_text(buf, sz, NULL, time, tm);
}
-static char* __cal_month_get_time_text(struct tmnode *tm, cal_month_data *p)
+static char* __cal_month_get_time_text(cal_struct *cs, cal_month_data *p)
{
char buf[512];
char stime[512];
- __cal_month_make_time_text(tm->st, &p->ad->base_tm, stime, sizeof(stime));
+ long long int lli_start = CALENDAR_SVC_STRUCT_GET_LLI(cs, CALS_VALUE_LLI_DTSTART_UTIME);
+ struct tm tm_start;
+ cal_util_convert_lli_to_tm(NULL, lli_start, &tm_start);
+
+ __cal_month_make_time_text(&tm_start, &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)
+static void __cal_month_set_genlist_item_sweep_off(Elm_Object_Item *it)
{
- Evas_Object *icon = NULL;
- struct tmnode *tm = (struct tmnode *)data;
- int r;
+ c_retm_if(!it, "it is null");
+ elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+ elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_ALWAYS);
+}
+
+static void __cal_month_init_sweep_data(cal_struct *cs, cal_month_data *p)
+{
+ c_ret_if(!p);
+ c_ret_if(!cs);
+
+ cal_main_set_cs(p->ad, cs);
+}
+
+static void __cal_month_edit_popup_response_event_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");
+
+ Evas_Object *popup = data;
+ Evas_Object *button = obj;
+
+ cal_month_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;
+
+ cal_edit_create_view(ad, p->ly);
+ __cal_month_set_genlist_item_sweep_off(p->sweep_it);
+ }else if (!strcmp(elm_object_text_get(button), C_("IDS_CLD_POP_ALL_REPETITIVE_EVENTS"))) {
+ ad->edit_special_one = EINA_FALSE;
+
+ cal_edit_create_view(ad, p->ly);
+ __cal_month_set_genlist_item_sweep_off(p->sweep_it);
+ }
+
+ evas_object_del(popup);
+ p->popup = NULL;
+}
+
+static void __cal_month_delete_event(cal_month_data* p, Eina_Bool is_delete_all)
+{
+ c_ret_if(!p);
+
+ struct appdata* ad = p->ad;
+ c_ret_if(!ad);
+
+ if (!is_delete_all) {
+ long long int lli_time;
+ cal_util_convert_tm_to_lli(NULL, &ad->tm_start, &lli_time);
+
+ int r = calendar_svc_event_delete_normal_instance(ad->cid, lli_time);
+ if (r != CAL_SUCCESS)
+ ERR("calendar_svc_event_delete_normal_instance() is failed(%d)", r);
+ }
+ else {
+ int r = CALENDAR_SVC_DELETE(CAL_STRUCT_SCHEDULE, ad->cid);
+ if (r != CAL_SUCCESS)
+ ERR("CALENDAR_SVC_DELETE is failed %d", r);
+ }
+}
+
+static void __cal_month_delete_popup_response_event_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");
+
+ Evas_Object *popup = data;
+ Evas_Object *button = obj;
+
+ cal_month_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_month_delete_event(p, EINA_FALSE);
+ else if (!strcmp(elm_object_text_get(button), C_("IDS_CLD_POP_ALL_REPETITIVE_EVENTS")))
+ __cal_month_delete_event(p, EINA_TRUE);
+
+ evas_object_del(popup);
+ p->popup = NULL;
+}
+
+static void __cal_month_show_popup(cal_month_data *p, const char *tit, Eina_Bool is_edit)
+{
+ c_retm_if(!p, "p is NULL.");
+
+ void (*callback_func)(void *data, Evas_Object *obj, void *ei) = NULL;
+
+ if (is_edit)
+ callback_func = __cal_month_edit_popup_response_event_callback;
+ else
+ callback_func = __cal_month_delete_popup_response_event_callback;
+
+ p->popup = cal_util_add_popup(p->ad->win, "verticalbuttonstyle", 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);
+ c_retm_if(!p->popup, "cal_util_add_popup(p->ad->win) returned null");
+
+ evas_object_data_set(p->popup, "priv", p);
+}
+
+static void __cal_month_edit_norepeat_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_month_data* p = evas_object_data_get(popup, "data");
+ c_retm_if(!p, "p is null");
+
+ if (!strcmp(elm_object_text_get(button), S_("IDS_COM_SK_OK"))) {
+ cal_edit_create_view(p->ad, p->ly);
+ __cal_month_set_genlist_item_sweep_off(p->sweep_it);
+ }
+
+ evas_object_del(popup);
+ p->popup = NULL;
+}
+
+static void __cal_month_edit_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ cal_struct *cs = data;
+ c_retm_if(!cs, "cs is NULL.");
+
+ cal_month_data* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "p is NULL.");
+
+ __cal_month_init_sweep_data(cs, p);
+
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CALS_VALUE_INT_RRULE_ID))
+ __cal_month_show_popup(p, C_("IDS_CLD_HEADER_EDIT_EVENT"), EINA_TRUE);
+ else {
+ p->popup = cal_util_add_popup(p->ad->win, NULL, NULL, C_("IDS_CLD_HEADER_EDIT_EVENT"), __cal_month_edit_norepeat_popup_response_event_callback, p,
+ S_("IDS_COM_SK_OK"),S_("IDS_COM_SK_CANCEL"), NULL);
+ }
+}
+
+static void __cal_month_delete_norepeat_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_month_data* p = evas_object_data_get(popup, "data");
+ c_retm_if(!p, "p is null");
+ c_retm_if(!p->ly, "p->ly is null");
+
+ if (!CAL_STRCMP(elm_object_text_get(button), S_("IDS_COM_SK_OK"))) {
+
+ int r = CALENDAR_SVC_DELETE(CAL_STRUCT_SCHEDULE, p->ad->cid);
+ c_retm_if(r != CAL_SUCCESS, "CALENDAR_SVC_DELETE(CAL_STRUCT_SCHEDULE, %d) is failed(%d)", p->ad->cid, r);
+
+ cal_struct *cs = evas_object_data_get(p->ly, "cs");
+
+ if (cs)
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ else
+ ERR("cs is null");
+ }
+
+ evas_object_del(p->popup);
+ p->popup = NULL;
+}
+
+static void __cal_month_delete_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ cal_struct *cs = data;
+ c_retm_if(!cs, "cs is NULL.");
+
+ cal_month_data* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "p is NULL.");
+
+ __cal_month_init_sweep_data(cs, p);
+
+ if (p->ad->cid) {
+
+ evas_object_data_set(p->ly, "cs", cs);
+
+ int r = CALENDAR_SVC_STRUCT_GET_INT(cs,CALS_VALUE_INT_RRULE_ID);
+
+ if (0 != r) {
+ __cal_month_show_popup(p, C_("IDS_CLD_OPT_DELETE_EVENT"), EINA_FALSE);
+ } else {
+ p->popup = cal_util_add_popup(p->ad->win, NULL, NULL, C_("IDS_CLD_OPT_DELETE_EVENT"), __cal_month_delete_norepeat_popup_response_event_callback, p,
+ S_("IDS_COM_SK_OK"),S_("IDS_COM_SK_CANCEL"), NULL);
+ }
+ }
+}
+
+static void __cal_month_via_message_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ cal_month_data *p = data;
+ c_retm_if(!p->ad, "p->ad is null");
+
cal_struct *cs = NULL;
- cal_struct *calendar = NULL;
- cal_month_data* p = NULL;
+ int r = CALENDAR_SVC_GET(CAL_STRUCT_SCHEDULE, p->ad->cid, NULL, &cs);
+ if (CAL_SUCCESS != r || NULL == cs) {
+ ERR("CALENDAR_SVC_GET failed: %d", r);
+ return;
+ }
- if(!tm)
- {
- ERR("tm is null");
- return NULL;
+ r = cal_util_create_vcs_file_from_cs(cs, MESSAGE_VCS);
+ if (CAL_SUCCESS != r) {
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ ERR("cal_util_create_vcs_file_from_cs: %d", r);
+ return;
}
- cs = tm->cs;
- if(!cs)
- {
- ERR("cs is null");
- return NULL;
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ cal_launch_ug_with_var(MESSAGE_COMPOSER_UG, NULL, "ATTACHFILE", MESSAGE_VCS, NULL);
+ __cal_month_set_genlist_item_sweep_off(p->sweep_it);
+
+ __cal_month_delete_popup(p);
+}
+
+static void __cal_month_via_email_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ cal_month_data *p = data;
+ c_retm_if(!p->ad, "p->ad is null");
+
+ cal_struct *cs = NULL;
+ int r = CALENDAR_SVC_GET(CAL_STRUCT_SCHEDULE, p->ad->cid, NULL, &cs);
+ if (CAL_SUCCESS != r || NULL == cs) {
+ ERR("CALENDAR_SVC_GET failed: %d", r);
+ return;
+ }
+
+ r = cal_util_create_vcs_file_from_cs(cs, EMAIL_VCS);
+ if (CAL_SUCCESS != r) {
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ ERR("cal_util_create_vcs_file_from_cs: %d", r);
+ return;
+ }
+
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ cal_launch_ug_with_var(EMAIL_COMPOSER_UG, NULL, "RUN_TYPE", "5", "ATTACHMENT", EMAIL_VCS, NULL);
+ __cal_month_set_genlist_item_sweep_off(p->sweep_it);
+
+ __cal_month_delete_popup(p);
+}
+
+static void __cal_month_via_bluetooth_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ cal_month_data *p = data;
+ c_retm_if(!p->ad, "p->ad is null");
+
+ cal_struct *cs = NULL;
+ int r = CALENDAR_SVC_GET(CAL_STRUCT_SCHEDULE, p->ad->cid, NULL, &cs);
+ if (CAL_SUCCESS != r || NULL == cs) {
+ ERR("CALENDAR_SVC_GET failed: %d", r);
+ return;
}
- p = CAL_UTIL_GET_PRIV_DATA(obj);
+ r = cal_util_create_vcs_file_from_cs(cs, BLUETOOTH_VCS);
+ if (CAL_SUCCESS != r) {
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+ ERR("cal_util_create_vcs_file_from_cs: %d", r);
+ return;
+ }
+
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+
+ cal_launch_ug_with_var(BLUETOOTH_UG, NULL, "launch-type", "send", "filecount", "1", "files", BLUETOOTH_VCS, NULL);
+ __cal_month_set_genlist_item_sweep_off(p->sweep_it);
+
+ __cal_month_delete_popup(p);
+}
+
+static void __cal_month_share_popup_response_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!obj, "obj is null");
+
+ Evas_Object *popup = data;
+
+ cal_month_data* p = evas_object_data_get(popup, "data");
+ c_retm_if(!p, "p is null");
+
+ evas_object_del(popup);
+ p->popup = NULL;
+
+}
+
+static void __cal_month_send_button_callback(void *data, Evas_Object *obj, void *ei)
+{
+ cal_struct *cs = data;
+ c_retm_if(!cs, "cs is NULL.");
+
+ cal_month_data* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "p is NULL.");
+
+ __cal_month_init_sweep_data(cs, p);
+
+ p->popup = cal_util_add_popup(p->ad->win, "menustyle", S_("IDS_COM_BUTTON_SHARE"), NULL,
+ __cal_month_share_popup_response_callback, p,
+ S_("IDS_COM_BODY_CLOSE"), NULL);
+
+ c_retm_if(!p->popup, "cal_util_add_popup returned null");
+ evas_object_data_set(p->popup, "data", p);
+
+ Evas_Object *genlist = elm_genlist_add(p->popup);
+ c_retm_if(!genlist, "elm_genlist_add returned null");
+
+ elm_genlist_item_append(genlist, &itc_1text, S_("IDS_COM_BODY_EMAIL"), NULL, ELM_GENLIST_ITEM_NONE, __cal_month_via_email_callback, p);
+ elm_genlist_item_append(genlist, &itc_1text, S_("IDS_COM_BODY_MESSAGE"), NULL, ELM_GENLIST_ITEM_NONE, __cal_month_via_message_callback, p);
+ elm_genlist_item_append(genlist, &itc_1text, S_("IDS_COM_BODY_BLUETOOTH"), NULL, ELM_GENLIST_ITEM_NONE, __cal_month_via_bluetooth_callback, p);
+
+ elm_object_content_set(p->popup, genlist);
+ evas_object_show(p->popup);
+}
+
+static Evas_Object *__cal_month_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ c_retv_if(!data, NULL);
+
+ Evas_Object *icon = NULL;
+ Evas_Object *button = NULL;
+ int r;
+ cal_struct *cs = data;
+ cal_struct *calendar = NULL;
+ cal_month_data* 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;
- }
+ c_retvm_if(r != CAL_SUCCESS, NULL, "CALENDAR_SVC_GET is failed(%d)", r);
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_STRUCT_FREE(&calendar);
return icon;
+ } else if (!CAL_STRCMP(part, "elm.slide.swallow.1")) {
+ button = elm_button_add(obj);
+ c_retvm_if(!button, NULL, "button is NULL");
+ elm_object_style_set(button, "text_only/sweep");
+ elm_object_text_set(button, S_("IDS_COM_SK_EDIT"));
+ evas_object_data_set(button, "priv", p);
+ evas_object_smart_callback_add(button, "clicked", __cal_month_edit_button_callback, cs);
+ return button;
+ } else if (!CAL_STRCMP(part, "elm.slide.swallow.2")) {
+ button = elm_button_add(obj);
+ c_retvm_if(!button, NULL, "button is NULL");
+ elm_object_style_set(button, "text_only/sweep");
+ elm_object_text_set(button, S_("IDS_COM_BODY_DELETE"));
+ evas_object_data_set(button, "priv", p);
+ evas_object_smart_callback_add(button, "clicked", __cal_month_delete_button_callback, cs);
+ return button;
+ } else if (!CAL_STRCMP(part, "elm.slide.swallow.3")) {
+ button = elm_button_add(obj);
+ c_retvm_if(!button, NULL, "button is NULL");
+ elm_object_style_set(button, "text_only/sweep");
+ elm_object_text_set(button, S_("IDS_COM_BUTTON_SHARE"));
+ evas_object_data_set(button, "priv", p);
+ evas_object_smart_callback_add(button, "clicked", __cal_month_send_button_callback, cs);
+ return button;
}
-
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;
+ c_retv_if(!data, NULL);
+
+ cal_month_data *p = CAL_UTIL_GET_PRIV_DATA(obj);
+ cal_struct *cs = data;
const char *str;
- if (!tm || !tm->cs)
- return NULL;
+ if (!CAL_STRCMP(part, "elm.text.1")) {
- if (!CAL_STRCMP(part, "elm.text.1"))
- {
- str = CALENDAR_SVC_STRUCT_GET_STR(tm->cs, CAL_VALUE_TXT_SUMMARY);
+ 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(tm->cs, CAL_VALUE_TXT_LOCATION);
+
+ } else 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"));
- }
- 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)
+
+ } else if (!CAL_STRCMP(part, "elm.text.3")) {
+
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CALS_VALUE_INT_DTSTART_TYPE) == CALS_TIME_LOCALTIME)
return strdup(C_("IDS_COM_BODY_ALL_DAY"));
p = CAL_UTIL_GET_PRIV_DATA(obj);
- return __cal_month_get_time_text(tm, p);
+ return __cal_month_get_time_text(cs, p);
+
+ } 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_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;
+ c_ret_if(!data);
- it = elm_genlist_selected_item_get(obj);
+ cal_struct *cs = data;
+
+ Elm_Object_Item *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);
+ cal_month_data *p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_ret_if(!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_main_set_cs(p->ad, cs);
cal_detail_create_view(p->ad, p->parent);
}
static void __cal_month_get_events(cal_month_data *p)
{
- time_t st, et;
+ struct tm tm_start = p->ad->base_tm;
+ tm_start.tm_hour = 0;
+ tm_start.tm_min = 0;
+ tm_start.tm_sec = 0;
- cal_util_get_day_time_t(&p->ad->base_tm, &st, &et);
+ struct tm tm_end = tm_start;
+ tm_end.tm_hour = 23;
+ tm_end.tm_min = 59;
+ tm_end.tm_sec = 59;
- p->csv = CALENDAR_SVC_GET_EVENT(p->ad->acct_id, st, et);
+ p->event_list = CALENDAR_SVC_GET_EVENT_LIST(&tm_start, &tm_end);
}
-
-
-static Eina_Bool __cal_month_update_genlist_with_idler(void* data)
+static void __cal_month_gl_mode_right(void *data, Evas_Object *obj, void *event_info)
{
- CAL_FN_START;
-
- c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "data is null");
-
- cal_month_data* p = data;
+ c_retm_if(!event_info, "event_info is null");
+ c_retm_if(!obj, "obj is null");
- if (!p->genlist) {
- ERR("p->genlist is null");
- p->idler = NULL;
- return ECORE_CALLBACK_CANCEL;
- }
+ Elm_Object_Item *it = event_info;
- if (!p->csv) {
- ERR("p->csv is null");
- p->idler = NULL;
- return ECORE_CALLBACK_CANCEL;
- }
+ elm_genlist_item_decorate_mode_set(it, "slide", EINA_TRUE);
- Eina_List *event_list = eina_list_nth_list(p->csv->tmlist, p->event_offset);
+ cal_month_data* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retm_if(!p, "p is null");
- Eina_List *l = NULL;
- struct tmnode *tm = NULL;
- int count = 0;
+ if (p->sweep_it && it != p->sweep_it)
+ elm_genlist_item_decorate_mode_set(p->sweep_it, "slide", EINA_FALSE);
- EINA_LIST_FOREACH(event_list, l, tm) {
- if (tm) {
- elm_genlist_item_append(p->genlist, &itc, tm, NULL, ELM_GENLIST_ITEM_NONE, __cal_month_genlist_item_select_callback, tm);
+ p->sweep_it = it;
+}
- count ++;
- p->event_offset++;
+static void __cal_month_gl_mode_left(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!event_info, "event_info is null");
+ Elm_Object_Item *it = event_info;
- if (count == IDLER_FETCH_SIZE && p->event_offset < eina_list_count(p->csv->tmlist))
- return ECORE_CALLBACK_RENEW;
- }
- }
+ elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+}
- p->idler = NULL;
+static void __cal_month_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!obj, "obj is null");
- CAL_FN_END;
+ Elm_Object_Item *it = (Elm_Object_Item *)elm_genlist_decorated_item_get(obj);
+ c_ret_if(!it);
- return ECORE_CALLBACK_CANCEL;
+ elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
}
static void __cal_month_update_genlist(cal_month_data *p)
Evas_Object* genlist = p->genlist;
- CALENDAR_SVC_FREE_CS(&p->csv);
+ CALENDAR_SVC_FREE_CS_LIST(&p->event_list);
__cal_month_get_events(p);
- if (!p->csv || !p->csv->tmlist || !eina_list_count(p->csv->tmlist)) {
+ if (!p->event_list) {
if (genlist)
elm_genlist_clear(genlist);
elm_object_part_content_set(p->ly, "list/sw", genlist);
evas_object_data_set(genlist, "priv", p);
+
+ evas_object_smart_callback_add(genlist, "drag,start,right", __cal_month_gl_mode_right, NULL);
+ evas_object_smart_callback_add(genlist, "drag,start,left", __cal_month_gl_mode_left, NULL);
+ evas_object_smart_callback_add(genlist, "drag,start,up", __cal_month_gl_mode_cancel, NULL);
+ evas_object_smart_callback_add(genlist, "drag,start,down", __cal_month_gl_mode_cancel, NULL);
}
else
elm_genlist_clear(genlist);
p->event_offset = 0;
Eina_List *l = NULL;
- struct tmnode *tm = NULL;
- int count = 0;
-
- EINA_LIST_FOREACH(p->csv->tmlist, l, tm) {
- if (tm) {
- elm_genlist_item_append(genlist, &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) {
- if (INITIAL_FETCH_SIZE < eina_list_count(p->csv->tmlist)) {
- p->idler = ecore_idler_add(__cal_month_update_genlist_with_idler, p);
- c_retm_if(!p->idler, "p->idler is null");
- }
-
- CAL_FN_END;
+ cal_struct *cs = NULL;
- return;
- }
- }
+ EINA_LIST_FOREACH(p->event_list, l, cs) {
+ if (cs)
+ elm_genlist_item_append(genlist, &itc, cs, NULL, ELM_GENLIST_ITEM_NONE, __cal_month_genlist_item_select_callback, cs);
}
CAL_FN_END;
static Evas_Object* __cal_month_create_month_d(cal_month_data *p, int d)
{
- struct tm t;
+ c_retv_if(!p, NULL);
+
struct appdata *ad = p->ad;
- int r;
+ c_retv_if(!ad, NULL);
+
+ int r = cal_util_update_tm_month(&ad->base_tm, d);
+ c_retv_if(r < 0, NULL);
- t = ad->base_tm;
+ Evas_Object *calendar = cal_month_calendar_create_view(ad, p->parent, EINA_TRUE);
- r = cal_util_update_tm_month(&t, d);
- c_retvm_if(r < 0, NULL, "month cross the border ");
+ r = cal_util_update_tm_month(&ad->base_tm, -d);
+ c_retv_if(r < 0, NULL);
- return cal_month_calendar_create_content(&t, ad, p->parent, EINA_TRUE);
+ return calendar;
}
static void __cal_month_move_month_calendar_to_left(cal_month_data *p, Evas_Coord x)
}
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));
+
+ if (!p->ad->is_weekly)
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(p->ly), "go,line%d", cal_month_calendar_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);
p->down1.y = p->move1.y = ev->canvas.y;
p->down_is_called = 1;
+ p->multi_touched = 0;
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)
{
+ c_retm_if(!data, "data is null");
+ c_retm_if(!ei, "ei is null");
+
cal_month_data *p = data;
Evas_Event_Mouse_Move *ev = ei;
+ if (5 < abs(ev->cur.canvas.x - p->move1.x)) {
+
+ struct appdata* ad = p->ad;
+ c_ret_if(!ad);
+
+ }
+
if (0 == p->down_is_called)
return;
__cal_month_update_genlist(data);
}
+static void __cal_month_list_icon_clicked_callback(void *data, Evas_Object *obj, const char *e, const char *src)
+{
+ c_retm_if(!e, "e is null");
+ c_retm_if(!data, "data is null");
+
+ cal_month_data *p = data;
+
+ if (!CAL_STRCMP(e, "open")) {
+ p->ad->is_weekly = EINA_TRUE;
+ }
+
+ if (!CAL_STRCMP(e, "close")) {
+ p->ad->is_weekly = EINA_FALSE;
+ }
+ cal_main_update_view(p->ad);
+}
+
Evas_Object* cal_month_create_view(struct appdata *ad, Evas_Object *main)
{
CAL_FN_START;
Evas_Object *ly;
Evas_Object *month;
Evas_Object *list_bg;
+ int r;
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);
+ r = vconf_get_int(CAL_VCONFKEY_WEEK_NMUBER_ON_OFF, (int *)&ad->is_display_weeknumber);
+ c_retvm_if(r != 0, NULL, "vconf_get_int(CAL_VCONFKEY_WEEK_NMUBER_ON_OFF, (int *)&ad->is_display_weeknumber) is failed");
- 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";
+
+ if (ad ->is_landscape_mode) {
+ p->name = _name = "main/month/weekly/l";
+ } else {
+ if (ad->is_weekly) {
+ p->name = _name = "main/month/weekly";
+ } else {
+ p->name = _name = "main/month";
+ }
}
- else
- return NULL;
p->ad = ad;
p->oringinal_size.y = -1;
p->oringinal_size.w = -1;
p->oringinal_size.h = -1;
+ p->popup = NULL;
+ p->sweep_it = NULL;
ly = cal_util_add_layout(ad->nv, p->name);
if (!ly) {
free(p);
}
evas_object_data_set(ly, "priv", p);
p->ly = ly;
+ edje_object_signal_callback_add(CAL_UTIL_GET_EDJ_DATA(ly), "*", "cal", __cal_month_list_icon_clicked_callback, p);
- month = cal_month_calendar_create_content(&ad->base_tm, ad, main, EINA_FALSE);
+ month = cal_month_calendar_create_view(ad, main, EINA_FALSE);
if (!month)
{
- ERR("cal_month_calendar_create_content(&ad->base_tm, ad, ly, EINA_FALSE) is failed");
+ ERR("cal_month_calendar_create_view(&ad->base_tm, ad, ly, EINA_FALSE) is failed");
evas_object_del(ly);
free(p);
return NULL;
cal_month_data *p;
struct appdata *ad;
- Evas *e;
p = CAL_UTIL_GET_PRIV_DATA(ly);
if (!p || CAL_STRCMP(p->name, _name)) {
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_calendar_update_view(p->month);
+
+ if (!p->ad->is_weekly)
+ cal_util_emit_signal(CAL_UTIL_GET_EDJ_DATA(p->ly), "go,line%d", cal_month_calendar_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");
-
CAL_FN_END;
}