*/
-
-
-
#include <aul.h>
#include <appsvc.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";
+#include "external-ug.h"
-#define CAL_REPEAT_EVERY_2_WEEK (CAL_REPEAT_EVERY_YEAR+1)
+static const char *_name = "view/detail";
+#define CAL_REPEAT_EVERY_2_WEEK (CALS_FREQ_SECONDLY+1)
#define CAL_REPEAT_EVERY_3_DAY (CAL_REPEAT_EVERY_2_WEEK+1)
#define ARRAY_SIZE(array) \
((int)(sizeof(array) / sizeof(array[0])))
+#define APP_CALL "org.tizen.call"
+#define APP_VTCALL "org.tizen.vtmain"
+#define APP_CONTACT_S "org.tizen.contacts-shortcut"
+
+static char messagebody[2048] = {0};
+
static int is_hour24;
+static void __cal_detail_autolink_send_email_selected_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_detail_autolink_add_to_contact_selected_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_detail_voice_call_selected_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_detail_autolink_send_message_selected_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_detail_autolink_video_call_selected_callback(void *data, Evas_Object *obj, void *event_info);
+static void __cal_detail_autolink_phone_add_to_contact_selected_callback(void *data, Evas_Object *obj, void *event_info);
static void __cal_detail_update_view(void *data);
static void __cal_detail_edit_button_callback(void *data, Evas_Object *obj, void *ei);
+static void __cal_detail_update_view_todo(void *data);
+
+struct anchor_popup_item_t {
+ char *label;
+ void (*response) (void *data, Evas_Object *obj, void *event_info);
+};
+
+static struct anchor_popup_item_t g_email_list[] = {
+ {"Send email", __cal_detail_autolink_send_email_selected_callback},
+ {"Add to contact", __cal_detail_autolink_add_to_contact_selected_callback},
+};
+
+static struct anchor_popup_item_t g_phone_list[] = {
+ {"Voice call", __cal_detail_voice_call_selected_callback},
+ {"Send message", __cal_detail_autolink_send_message_selected_callback},
+ {"Video call", __cal_detail_autolink_video_call_selected_callback},
+ {"Add to contact", __cal_detail_autolink_phone_add_to_contact_selected_callback},
+};
enum genlist_item_type{
_GTYPE_TITLE_LOC = 1,
- _GTYPE_START,
- _GTYPE_END,
- _GTYPE_ALARM,
- _GTYPE_REPEAT,
+ _GTYPE_START_AND_END_TIME,
+ _GTYPE_DUE,
+ _GTYPE_REMINDER_AND_REPEAT,
_GTYPE_NOTE,
+
_GTYPE_LINKED_CAL,
+ _GTYPE_PRIORITY,
_GTYPE_MAX
};
+enum anchor_t {
+ NOT_ANCHOR = 0,
+ ANCHOR_PHONE,
+ ANCHOR_EMAIL,
+ ANCHOR_URL,
+ ANCHOR_EMAIL_LINK
+};
+
+struct autolink_data_t {
+ Evas_Object *popup;
+ Elm_Genlist_Item_Class itc;
+
+ enum anchor_t type;
+ char *info;
+};
+
typedef struct {
const char *name;
struct appdata *ad;
Evas_Object *bt_one;
Evas_Object *bt_all;
Evas_Object *popup;
+ Evas_Object *ctx;
+ Ecore_Event_Handler *evt; // button down event
+ Evas_Coord x;
+ Evas_Coord y;
cal_struct *cs;
int cid;
Eina_Bool is_deleted; //When event is deleted, updating view is not needed.
GList *alarm_list;
+
+ Eina_Bool is_todo_mode;
+ int priority;
}cal_detail_data;
typedef struct {
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 Elm_Genlist_Item_Class itc_seperator, itc_2text, itc_4text, itc_mutilline, itc_parts, itc_linked_cal;
+
+static void __cal_detail_autolink_send_email_selected_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ struct autolink_data_t *ald = (struct autolink_data_t *)data;
+
+ cal_launch_ug_with_var(EMAIL_COMPOSER_UG, NULL, "RUN_TYPE", "5", "TO", ald->info, NULL);
+
+ evas_object_del(ald->popup);
+ ald->popup = NULL;
+}
+
+static void __cal_detail_autolink_add_to_contact_selected_callback(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ struct autolink_data_t *ald = (struct autolink_data_t *)data;
+
+ char buf[10];
+ snprintf(buf, sizeof(buf), "%d", 22);
+
+ cal_launch_ug_with_var(CONTACT_UG, NULL, "type", buf, "ct_email", ald->info, NULL);
+
+ evas_object_del(ald->popup);
+ ald->popup = NULL;
+}
+
+static void __cal_detail_autolink_send_message_selected_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ struct autolink_data_t *ald = (struct autolink_data_t *)data;
+
+ cal_launch_ug_with_var(MESSAGE_COMPOSER_UG, NULL, "TO", ald->info, NULL);
+
+ evas_object_del(ald->popup);
+ ald->popup = NULL;
+}
+
+static void __cal_detail_voice_call_selected_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ struct autolink_data_t *ald = (struct autolink_data_t *)data;
+
+ bundle *b = NULL;
+ char telnum[255]={0,};
+ b = bundle_create();
+ appsvc_set_operation(b, APPSVC_OPERATION_CALL);
+ snprintf(telnum, sizeof(telnum), "tel:%s", ald->info);
+ appsvc_set_uri(b, telnum);
+ appsvc_add_data(b, "ctindex", "-1");
+ appsvc_run_service(b, 0, NULL, NULL);
+
+ bundle_free(b);
+
+ evas_object_del(ald->popup);
+ ald->popup = NULL;
+}
+
+static void __cal_detail_autolink_video_call_selected_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ struct autolink_data_t *ald = (struct autolink_data_t *)data;
+
+ bundle *bd = bundle_create();
+ bundle_add(bd, "KEY_CALL_TYPE", "mo");
+ bundle_add(bd, "KEY_CALL_HANDLE", "1");
+ bundle_add(bd, "KEY_CALLING_PARTY_NUMBER", ald->info);
+ bundle_add(bd, "KEY_CLI_CAUSE", "-1");
+ bundle_add(bd, "KEY_FORWARDED", "-1");
+
+ aul_launch_app("org.tizen.vtmain", bd);
+
+ bundle_free(bd);
+
+ evas_object_del(ald->popup);
+ ald->popup = NULL;
+}
+
+static void __cal_detail_autolink_phone_add_to_contact_selected_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!data, "data is null");
+
+ struct autolink_data_t *ald = data;
+
+ char buf[10] = {0};
+ snprintf(buf, sizeof(buf), "%d", 21);
+
+ cal_launch_ug_with_var(CONTACT_UG, NULL, "type", buf, "ct_num", ald->info, NULL);
+
+ evas_object_del(ald->popup);
+ ald->popup = NULL;
+}
static void __cal_detail_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
{
cal_detail_data *p = data;
- if (p->cs)
- CALENDAR_SVC_STRUCT_FREE(&(p->cs));
+ if (p->evt)
+ ecore_event_handler_del(p->evt);
- free(p);
+ if (p->cs && NULL == p->ad->ical)
+ CALENDAR_SVC_STRUCT_FREE(&(p->cs));
- CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK(__cal_detail_update_view);
+ if (!p->is_todo_mode)
+ CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK(__cal_detail_update_view);
+ else
+ CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK(__cal_detail_update_view_todo);
+ free(p);
}
-static cal_struct* __cal_detail_get_event(int idx)
+static cal_struct* __cal_detail_get_event(cal_detail_data *p, int idx)
{
+ c_retvm_if(!p, NULL, "p parameter is null");
+ c_retvm_if(idx < 0, NULL, "idx is invalied(%d)", 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;
- }
+
+ if (!p->is_todo_mode)
+ r = CALENDAR_SVC_GET(CAL_STRUCT_SCHEDULE, idx, NULL, &cs);
+ else
+ r = CALENDAR_SVC_GET(CAL_STRUCT_TODO, idx, NULL, &cs);
+
+ c_retvm_if(r != CAL_SUCCESS, NULL, "CALENDAR_SVC_GET(%d) is failed(%d)", idx, r);
return cs;
}
-static void __cal_detail_get_time_text(time_t t, int allday, char *buf, int sz)
+static void __cal_detail_get_time_text(struct tm *tm, Eina_Bool is_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);
+ if (is_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);
+ 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);
+ c_ret_if(!cs);
+ c_ret_if(!p);
- 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);
+ __cal_detail_get_time_text(&p->ad->tm_start, CALENDAR_SVC_IS_ALLDAY_EVENT(cs), 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);
+ c_ret_if(!cs);
+ c_ret_if(!p);
- 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);
+ __cal_detail_get_time_text(&p->ad->tm_end, CALENDAR_SVC_IS_ALLDAY_EVENT(cs), buf, sz);
}
static void __cal_detail_get_alarm(cal_detail_data * p,cal_struct *cs)
p->alarm_list = g_list_first(p->alarm_list);
}
-static void __cal_detail_get_repeat(cal_struct *cs, char *buf, int sz)
+static void __cal_detail_get_repeat(cal_struct *cs, char *buf, int size)
{
- c_retm_if(!cs, "cs is null");
+ c_ret_if(!cs);
- int term;
- int flag;
+ cal_struct *original_cs = NULL;
- flag = 0;
- term = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
+ int original_event_id = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ORIGINAL_EVENT_ID);
+ if (0 < original_event_id) {
+ int r = CALENDAR_SVC_GET(CAL_STRUCT_SCHEDULE, original_event_id, NULL, &original_cs);
+ c_retm_if(r != CAL_SUCCESS, "CALENDAR_SVC_GET(%d) is failed(%d)", original_event_id, r);
+ }
+
+ if (!original_cs)
+ original_cs = cs;
+
+ int freq = CALENDAR_SVC_STRUCT_GET_INT(original_cs, CALS_VALUE_INT_RRULE_FREQ);
+
+ if (freq == CALS_FREQ_WEEKLY) {
- if (term == CAL_REPEAT_EVERY_WEEK) {
- int interval = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_INTERVAL);
+ int interval = CALENDAR_SVC_STRUCT_GET_INT(original_cs, CALS_VALUE_INT_RRULE_INTERVAL);
if (2 == interval)
- term = CAL_REPEAT_EVERY_2_WEEK;
- }
+ freq = CAL_REPEAT_EVERY_2_WEEK;
+
+ } else if (freq == CALS_FREQ_DAILY) {
- if (term == CAL_REPEAT_EVERY_DAY) {
- int interval = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_INTERVAL);
+ int interval = CALENDAR_SVC_STRUCT_GET_INT(original_cs, CALS_VALUE_INT_RRULE_INTERVAL);
if (3 == interval)
- term = CAL_REPEAT_EVERY_3_DAY;
+ freq = CAL_REPEAT_EVERY_3_DAY;
}
- cal_edit_repeat_get_repeat_str(term, flag, buf, sz);
+ _cal_edit_repeat_get_freq_str(freq, buf, size);
+
+ if (original_cs != cs)
+ CALENDAR_SVC_STRUCT_FREE(&original_cs);
}
static void __cal_detail_get_save_to_str(int calid, char *buf, int sz)
__cal_detail_get_save_to_str(idx, buf, sz);
}
+static void __cal_detail_popup_hide_callback(void *data, Evas_Object *obj, void *ei)
+{
+ c_retm_if(!data, "data is null");
+
+ cal_detail_data* p = data;
+
+ p->ctx = NULL;
+
+ evas_object_del(obj);
+
+}
+
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_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_detail_data *p = data;
+ c_retm_if(!p->cs, "p->cs is null");
+
+ int r = cal_util_create_vcs_file_from_cs(p->cs, MESSAGE_VCS);
+ if (CAL_SUCCESS != r) {
+ ERR("send via message failed: save vcs %d", r);
+ return;
+ }
+
+ cal_launch_ug_with_var(MESSAGE_COMPOSER_UG, NULL, "ATTACHFILE", MESSAGE_VCS, NULL);
+
+ evas_object_del(obj);
+ p->ctx = NULL;
+}
+
+static void __cal_detail_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_detail_data *p = data;
+ c_retm_if(!p->cs, "p->cs is null");
+
+ int r = cal_util_create_vcs_file_from_cs(p->cs, EMAIL_VCS);
+ if (CAL_SUCCESS != r) {
+ ERR("send via email failed: save vcs %d", r);
+ return;
+ }
+
+ cal_launch_ug_with_var(EMAIL_COMPOSER_UG, NULL, "RUN_TYPE", "5", "ATTACHMENT", EMAIL_VCS, NULL);
+
+ evas_object_del(obj);
+ p->ctx = NULL;
+}
+
+static void __cal_detail_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_detail_data *p = data;
+ c_retm_if(!p->cs, "p->cs is null");
+
+ int r = cal_util_create_vcs_file_from_cs(p->cs, BLUETOOTH_VCS);
+ if (CAL_SUCCESS != r) {
+ ERR("send via bluetooth failed: save cvs %d", r);
+ return;
+ }
+
+ cal_launch_ug_with_var(BLUETOOTH_UG, NULL, "launch-type", "send", "filecount", "1", "files", BLUETOOTH_VCS, NULL);
+
+ evas_object_del(obj);
+ p->ctx = NULL;
+}
+
+static void __cal_detail_send_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_detail_data *p = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_retm_if(!p, "CAL_UTIL_GET_PRIV_DATA(ly) is failed");
+
+ 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_smart_callback_add(ctx, "dismissed", __cal_detail_popup_hide_callback, p);
+ elm_ctxpopup_item_append(ctx, S_("IDS_COM_BODY_MESSAGE"), NULL, __cal_detail_via_message_callback, p);
+ elm_ctxpopup_item_append(ctx, S_("IDS_COM_BODY_EMAIL"), NULL, __cal_detail_via_email_callback, p);
+ elm_ctxpopup_item_append(ctx, S_("IDS_COM_BODY_BLUETOOTH"), NULL, __cal_detail_via_bluetooth_callback, p);
+
+ int x, y, w, h;
+ evas_object_geometry_get(p->ad->cbar, &x, &y, &w, &h);
+ evas_object_move(ctx, w / 2, y + h / 5);
+ evas_object_show(ctx);
+}
+
static void __cal_detail_back_button_callback(void *data, Evas_Object *obj, void *ei)
{
CAL_FN_START;
ad->current_view = CV_UNKNOWN;
}
-static void __cal_viewer_back_button_callback(void *data, Evas_Object *obj, void *ei)
+static void __cal_detail_viewer_back_button_callback(void *data, Evas_Object *obj, void *ei)
{
CAL_FN_START;
- elm_exit();
+ struct appdata *ad = data;
+ c_retm_if(!ad, "ad is NULL");
+ c_retm_if(!ad->nv, "ad->nv is NULL");
+
+ elm_naviframe_item_pop(ad->nv);
}
static void __cal_detail_error_popup_response_event_callback(void *data, Evas_Object *obj, void *ei)
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);
+ long long int lli_time;
+ cal_util_convert_tm_to_lli(NULL, &p->ad->tm_start, &lli_time);
- CALENDAR_SVC_STRUCT_SET_LIST(cs,CAL_VALUE_LST_EXCEPTION_DATE,list);
- r = CALENDAR_SVC_UPDATE(cs);
+ r = calendar_svc_event_delete_normal_instance(p->cid, lli_time);
if (r != CAL_SUCCESS)
- ERR("CALENDAR_SVC_UPDATE is failed %d", r);
+ ERR("calendar_svc_event_delete_normal_instance() 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);
+ } else {
+
+ if (!p->is_todo_mode)
+ r = CALENDAR_SVC_DELETE(CAL_STRUCT_SCHEDULE, p->cid);
+ else
+ r = CALENDAR_SVC_DELETE(CAL_STRUCT_TODO, 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;
}
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
p->popup = NULL;
}
-static void __cal_detail_edit_popup_response_event_callback(void *data, Evas_Object *obj, void *event_info)
+static void __cal_detail_event_edit_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");
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")))
+ 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")))
ad->edit_special_one = EINA_FALSE;
else {
evas_object_del(popup);
p->popup = NULL;
}
-static void __cal_detail_show_popup(cal_detail_data *p, const char *tit, Eina_Bool is_edit)
+static inline void __cal_detail_show_event_edit_popup(cal_detail_data *p, cal_struct *cs)
{
- void (*callback_func)(void *data, Evas_Object *obj, void *ei) = NULL;
+ CAL_FN_START;
- if (is_edit)
- callback_func = __cal_detail_edit_popup_response_event_callback;
- else
- callback_func = __cal_detail_delete_popup_response_event_callback;
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CALS_VALUE_INT_RRULE_ID)) {
+ p->popup = cal_util_add_popup(p->ad->win, "verticalbuttonstyle", NULL, C_("IDS_CLD_HEADER_EDIT_EVENT"), __cal_detail_event_edit_popup_response_callback, p,
+ C_("IDS_CLD_BODY_ONLY_THIS_EVENT"), C_("IDS_CLD_POP_ALL_REPETITIVE_EVENTS"),
+ S_("IDS_COM_SK_CANCEL"), NULL);
+ }
+ else {
+ p->popup = cal_util_add_popup(p->ad->win, NULL, NULL, C_("IDS_CLD_HEADER_EDIT_EVENT"), __cal_detail_event_edit_popup_response_callback, p,
+ S_("IDS_COM_SK_OK"),S_("IDS_COM_SK_CANCEL"), NULL);
+ }
+}
- cal_struct *cs = __cal_detail_get_event(p->cid);
- c_retm_if(!cs, "__cal_detail_get_event(%d) is failed", p->cid);
+static inline void __cal_detail_show_event_delete_popup(cal_detail_data *p, cal_struct *cs)
+{
+ CAL_FN_START;
- if (CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM)) {
- p->popup = cal_util_add_popup(p->ad->win, "verticalbuttonstyle", NULL, tit, callback_func, p,
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CALS_VALUE_INT_RRULE_ID)) {
+ p->popup = cal_util_add_popup(p->ad->win, "verticalbuttonstyle", NULL, C_("IDS_CLD_OPT_DELETE_EVENT"), __cal_detail_delete_popup_response_event_callback, p,
C_("IDS_CLD_BODY_ONLY_THIS_EVENT"), C_("IDS_CLD_POP_ALL_REPETITIVE_EVENTS"),
S_("IDS_COM_SK_CANCEL"), NULL);
}
else {
- p->popup = cal_util_add_popup(p->ad->win, NULL, NULL, tit, callback_func, p,
+ p->popup = cal_util_add_popup(p->ad->win, NULL, NULL, C_("IDS_CLD_OPT_DELETE_EVENT"), __cal_detail_delete_popup_response_event_callback, p,
S_("IDS_COM_SK_OK"),S_("IDS_COM_SK_CANCEL"), NULL);
}
+}
+
+static void __cal_detail_task_edit_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;
+
+ 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), S_("IDS_COM_SK_OK")))
+ cal_edit_create_view_todo(ad, p->ly);
+
+ evas_object_del(popup);
+ p->popup = NULL;
+}
+
+static inline void __cal_detail_show_task_edit_popup(cal_detail_data *p, cal_struct *cs)
+{
+ CAL_FN_START;
- c_retm_if(!p->popup, "elm_popup_add(p->ad->win) returned null");
+ p->popup = cal_util_add_popup(p->ad->win, NULL, NULL, C_("IDS_TASK_HEADER_EDIT_TASK"), __cal_detail_task_edit_popup_response_callback, p,
+ S_("IDS_COM_SK_OK"),S_("IDS_COM_SK_CANCEL"), NULL);
+}
+
+static inline void __cal_detail_show_task_delete_popup(cal_detail_data *p, cal_struct *cs)
+{
+ CAL_FN_START;
+
+ p->popup = cal_util_add_popup(p->ad->win, NULL, NULL, C_("IDS_CLD_OPT_DELETE_TASK"), __cal_detail_delete_popup_response_event_callback, p,
+ S_("IDS_COM_SK_OK"),S_("IDS_COM_SK_CANCEL"), NULL);
}
static void __cal_detail_delete_button_callback(void *data, Evas_Object *obj, void *ei)
{
CAL_FN_START;
+ c_ret_if(!data);
+
Evas_Object *ly = data;
+
cal_detail_data *p = CAL_UTIL_GET_PRIV_DATA(ly);
- cal_struct *cs = NULL;
+ c_ret_if(!p);
- // TODO: add
+ cal_struct *cs = __cal_detail_get_event(p, p->cid);
+ c_ret_if(!cs);
+ /*CAL_STRUCT_TYPE_TODO == 2*/
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_TYPE) == 2)
+ __cal_detail_show_task_delete_popup(p, cs);
+ else
+ __cal_detail_show_event_delete_popup(p, cs);
- if (p->cid) {
- cs = __cal_detail_get_event(p->cid);
+ CALENDAR_SVC_STRUCT_FREE(&cs);
+}
- __cal_detail_show_popup(p, C_("IDS_CLD_OPT_DELETE_EVENT"), EINA_FALSE);
- }
+static Eina_Bool __cal_detail_mouse_button_down_callback(void *data, int type, void *event)
+{
+ Ecore_Event_Mouse_Button *ev = event;
+ cal_detail_data *p = data;
+
+ p->x = ev->x;
+ p->y = ev->y;
- if(cs)
- CALENDAR_SVC_STRUCT_FREE(&cs);
+ return ECORE_CALLBACK_RENEW;
}
static void __cal_detail_edit_button_callback(void *data, Evas_Object *obj, void *ei)
{
CAL_FN_START;
+ c_ret_if(!data);
+
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);
+ cal_detail_data *p = CAL_UTIL_GET_PRIV_DATA(ly);
+ c_ret_if(!p);
- cs = __cal_detail_get_event(p->cid);
+ cal_struct *cs = __cal_detail_get_event(p, p->cid);
+ c_ret_if(!cs);
- if (0 != CALENDAR_SVC_STRUCT_GET_INT(cs,CAL_VALUE_INT_REPEAT_TERM))
- __cal_detail_show_popup(p, C_("IDS_CLD_HEADER_EDIT_EVENT"), EINA_TRUE);
+ /*CAL_STRUCT_TYPE_TODO == 2*/
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_TYPE) == 2)
+ __cal_detail_show_task_edit_popup(p, cs);
else
- cal_edit_create_view(p->ad, ly);
-
- if (cs)
- CALENDAR_SVC_STRUCT_FREE(&cs);
+ __cal_detail_show_event_edit_popup(p, 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)
if (!CAL_STRCMP(part, "elm.text.1"))
{
title = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
- if (title)
+ if (title && title[0] != '\0')
return strdup(title);
+ else
+ return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
}
if (!CAL_STRCMP(part, "elm.text.2"))
{
loc = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_LOCATION);
- if (loc)
+ if (loc && loc[0] != '\0')
return strdup(loc);
+ else
+ return strdup(C_("IDS_CLD_BODY_NO_LOCATION_SELECTED"));
}
return NULL;
return NULL;
}
-static char* __cal_detail_get_start_time_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+static char* __cal_detail_get_start_time_and_end_time_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
{
- cal_struct *cs;
- char buf[1024];
+ c_retv_if(!item_data, NULL);
+
cal_detail_data *p = item_data->p;
- cs = p->cs;
- if(NULL == cs)
- {
- return NULL;
+ c_retv_if(!p, NULL);
+
+ cal_struct *cs = p->cs;
+ c_retv_if(!cs, NULL);
+
+ if (CAL_STRCMP(part, "elm.text.1") == 0) {
+
+ if (p->is_todo_mode)
+ return strdup(C_("IDS_CLD_BODY_DUE_DATE"));
+ else
+ return strdup(S_("IDS_COM_BODY_START"));
}
- if (!CAL_STRCMP(part, "elm.text.1"))
- {
- return strdup(S_("IDS_COM_BODY_START"));
+ if (CAL_STRCMP(part, "elm.text.3") == 0) {
+
+ if (p->is_todo_mode)
+ return strdup(C_("IDS_CLD_BODY_DUE_DATE"));
+ else
+ return strdup(S_("IDS_COM_BODY_END"));
}
- if(!CAL_STRCMP(part, "elm.text.2"))
- {
+ char buf[1024];
+
+ if (CAL_STRCMP(part, "elm.text.2") == 0) {
+
__cal_detail_get_start_time(cs, buf, sizeof(buf), p);
+
+ return strdup(buf);
+ }
+
+ if (CAL_STRCMP(part, "elm.text.4") == 0) {
+
+ __cal_detail_get_end_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)
+static char* __cal_detail_get_due_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
{
- cal_struct *cs;
- char buf[1024];
+ c_retv_if(!item_data, NULL);
+
cal_detail_data *p = item_data->p;
- cs = p->cs;
- if(NULL == cs)
- {
- return NULL;
- }
+ c_retv_if(!p, NULL);
- if (!CAL_STRCMP(part, "elm.text.1"))
- {
- return strdup(S_("IDS_COM_BODY_END"));
+ cal_struct *cs = p->cs;
+ c_retv_if(!cs, NULL);
+
+ if (!CAL_STRCMP(part, "elm.text.1")) {
+
+ if (p->is_todo_mode)
+ return strdup(C_("IDS_CLD_BODY_DUE_DATE"));
+ else
+ return strdup(S_("IDS_COM_BODY_END"));
}
- if(!CAL_STRCMP(part, "elm.text.2"))
- {
+ char buf[1024];
+
+ if (!CAL_STRCMP(part, "elm.text.2")) {
+
__cal_detail_get_end_time(cs, buf, sizeof(buf), p);
+
return strdup(buf);
}
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)
+static char* __cal_detail_add_reminder_and_repeat_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
{
cal_struct *cs;
char buf[1024] = {0};
if (!CAL_STRCMP(part, "elm.text.1"))
{
- return strdup(S_("IDS_COM_BODY_ALARM"));
+ return strdup(C_("IDS_CLD_BODY_REMINDER"));
}
if(!CAL_STRCMP(part, "elm.text.2"))
return strdup(buf);
}
- return NULL;
-}
+ if (!CAL_STRCMP(part, "elm.text.3"))
+ {
+ return strdup(C_("IDS_CLD_BODY_REPEAT"));
+ }
+
+ if(!CAL_STRCMP(part, "elm.text.4"))
+ {
+ __cal_detail_get_repeat(cs, buf, sizeof(buf));
+
+ return strdup(buf);
+ }
+
+ return NULL;
+}
+
+static Eina_Bool __cal_detail_check_autolink_delimiter(char ch)
+{
+ if (isdigit(ch) || isalpha(ch))
+ {
+ return false;
+ }
+
+ char undeli[] = "@-_.+"; /* The char in the string is not a delimiter */
+
+ int i = 0;
+ for (i = 0; i < sizeof(undeli) / sizeof(undeli[0]); ++i)
+ {
+ if (ch == undeli[i])
+ {
+ return false;
+ }
+ }
+ return true;
+}
+
+static int __cal_detail_check_autolink_phone_number(const char *word)
+{
+ const int min_phone_num_len = 3;
+ const int max_phone_num_len = 15;
+ int i = 0;
+ int num_counter = 0;
+
+ if (word[0] == '+')
+ {
+ i++;
+ }
+
+ while (isdigit(word[i]) || word[i] == '-')
+ {
+ if (isdigit(word[i]))
+ {
+ num_counter++;
+ if (num_counter > max_phone_num_len)
+ {
+ break;
+ }
+ }
+ else if (i == 0 || word[i - 1] == '-')
+ {
+ /* The first char is '-' or two consecutive '-' */
+ break;
+ }
+ i++;
+ }
+
+ /* Make sure that the last char is digit */
+ while (!isdigit(word[i]))
+ {
+ i--;
+ }
+
+ if (num_counter < min_phone_num_len)
+ {
+ return 0;
+ }
+ else
+ {
+ return i + 1;
+ }
+}
+
+static enum anchor_t __cal_detail_get_autolink_anchor_type(const char *word)
+{
+ CAL_ASSERT(word);
+ int i = 0;
+
+ if (NULL != strstr(word, EMAIL_LINK_FLAG))
+ {
+ return ANCHOR_EMAIL_LINK;
+ }
+
+ /* Email */
+ if (strchr(word, '@') != NULL)
+ {
+ return ANCHOR_EMAIL;
+ }
+
+ /* Url */
+ char *url_prefix[] = { "http://", "HTTP://", "www.", "WWW." };
+ for (i = 0; i < sizeof(url_prefix) / sizeof(url_prefix[0]); ++i)
+ {
+ if (g_str_has_prefix(word, url_prefix[i]))
+ {
+ return ANCHOR_URL;
+ }
+ }
+
+ /* Phone number */
+ if (__cal_detail_check_autolink_phone_number(word))
+ {
+ return ANCHOR_PHONE;
+ }
+
+ return NOT_ANCHOR;
+}
+
+static void __cal_detail_process_autolink_anchor_word(GString *anchor)
+{
+ CAL_ASSERT(anchor);
+
+ int len = 0;
+ GString *word = g_string_new(anchor->str);
+ g_string_assign(anchor, ""); /* clear */
+ char *snote_display = NULL;
+ char *email_link = NULL;
+
+ switch (__cal_detail_get_autolink_anchor_type(word->str))
+ {
+ case ANCHOR_EMAIL:
+ g_string_append(anchor, "<color=#72b1f2FF>");
+ g_string_append_printf(anchor,
+ "<a href=email|%s underline=on underline_color=#72b1f2FF>",
+ word->str);
+ g_string_append(anchor, word->str);
+ g_string_append(anchor, "</a></color>");
+ break;
+
+ case ANCHOR_URL:
+ g_string_append(anchor, "<color=#72b1f2FF>");
+ g_string_append_printf(anchor,
+ "<a href=url|%s underline=on underline_color=#72b1f2FF>",
+ word->str);
+ g_string_append(anchor, word->str);
+ g_string_append(anchor, "</a></color>");
+ break;
+
+ case ANCHOR_PHONE:
+ len = __cal_detail_check_autolink_phone_number(word->str);
+ char num[32] = { 0 };
+ snprintf(num, len + 1, "%s", word->str);
+
+ g_string_append(anchor, "<color=#72b1f2FF>");
+ g_string_append_printf(anchor,
+ "<a href=phone_num|%s underline=on underline_color=#72b1f2FF>",
+ num);
+ g_string_append(anchor, num);
+ g_string_append(anchor, "</a></color>");
+ g_string_append(anchor, word->str + len);
+ break;
+ case ANCHOR_EMAIL_LINK:
+
+ email_link = strstr(word->str, EMAIL_LINK_FLAG);
+ int nsize = email_link - word->str + 1;
+ CAL_CALLOC(snote_display, nsize, char);
+ if(NULL != snote_display)
+ {
+ strncpy(snote_display, word->str, nsize-1);
+ }
+ g_string_append(anchor, "<color=#72b1f2FF>");
+ g_string_append_printf(anchor,
+ "<a href=email_link|%s underline=on underline_color=#72b1f2FF>",
+ email_link+strlen(EMAIL_LINK_FLAG));
+
+ g_string_append(anchor, snote_display);
+ g_string_append(anchor, "</a></color>");
+ free(snote_display);
+ break;
+ default:
+ g_string_append(anchor, word->str);
+ break;
+ }
+}
+
+static GString *__cal_detail_add_autolink_anchor(const char *content)
+{
+ c_retvm_if(!content, NULL, "Input parameter is null");
+
+ const char *p = content;
+ char *gt = NULL;
+ GString *text = g_string_new("");
+ GString *buf = g_string_new("");
+
+ while (*p != '\0') {
+ g_string_assign(buf, ""); /* reset buffer */
+
+ if(NULL != strstr(p, EMAIL_LINK_FLAG))
+ {
+
+ g_string_append_len(buf, p, CAL_STRLEN(content));
+ __cal_detail_process_autolink_anchor_word(buf);
+ g_string_append(text, buf->str);
+ break;;
+ }
+ else if (__cal_detail_check_autolink_delimiter(p[0]))
+ {
+ g_string_append_c(text, p[0]);
+ p++;
+ }
+ else if (p[0] == '<')
+ { /* tag begin */
+ gt = strchr(p, '>'); /* search tag end */
+ CAL_ASSERT(gt); /* assert '<' and '>' are matched */
+ g_string_append_len(text, p, gt - p + 1);
+ p = gt + 1;
+ }
+ else
+ {
+ int i = 0;
+ while (p[i] != '\0')
+ {
+ if (__cal_detail_check_autolink_delimiter(p[i]) || p[i] == '<')
+ {
+ break;
+ }
+ i++;
+ }
+
+ g_string_append_len(buf, p, i);
+ p = p + i;
+
+ __cal_detail_process_autolink_anchor_word(buf);
+ g_string_append(text, buf->str);
+ }
+ }
+
+ g_string_free(buf, TRUE);
+
+ return text;
+}
+
+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 void __cal_detail_autolink_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");
+
+ struct autolink_data_t *ald = data;
+
+ free(ald->info);
+ free(ald);
+
+ evas_object_del(obj);
+}
+
+void __cal_detail_show_autolink_popup(struct autolink_data_t *ald, cal_detail_data* p)
+{
+ c_retm_if(!ald, "ald is null");
+ c_retm_if(!p, "p is null");
+
+ struct anchor_popup_item_t *list = NULL;
+ int count = 0;
+ int i = 0;
+ Evas_Object *ctx;
+ Elm_Object_Item *item = NULL;
+
+ switch (ald->type)
+ {
+ case ANCHOR_EMAIL:
+ list = g_email_list;
+ count = ARRAY_SIZE(g_email_list);
+ break;
+ case ANCHOR_PHONE:
+ list = g_phone_list;
+ count = ARRAY_SIZE(g_phone_list);
+ break;
+ default:
+ break;
+ }
+
+ ctx = elm_ctxpopup_add(p->ly);
+ c_retm_if(!ctx, "elm_ctxpopup_add is failed");
+
+ evas_object_smart_callback_add(ctx, "dismissed", __cal_detail_autolink_popup_response_callback, ald);
+
+ for (i = 0; i < count; ++i)
+ {
+ item = elm_ctxpopup_item_append(ctx, list[i].label, NULL, list[i].response, ald);
+ if (!item)
+ {
+ ERR("elm_ctxpopup_item_append returned null");
+ evas_object_del(ctx);
+ }
+ }
+
+ evas_object_move(ctx, p->x, p->y);
+ evas_object_show(ctx);
+}
+
+static char *__cal_detail_get_autolink_anchor_type_str(enum anchor_t type)
+{
+ switch (type) {
+ case ANCHOR_EMAIL:
+ return "email";
+ case ANCHOR_PHONE:
+ return "phone_num";
+ case ANCHOR_URL:
+ return "url";
+ case ANCHOR_EMAIL_LINK:
+ return "email_link";
+ default:
+ return "";
+ }
+}
+
+static enum anchor_t __cal_detail_parse_autolink_anchor_type(char *s)
+{
+ int i = 0;
+ for (i = NOT_ANCHOR + 1; i < NOT_ANCHOR + 5; ++i)
+ {
+ if (CAL_STRCMP(s, __cal_detail_get_autolink_anchor_type_str(i)) == 0)
+ {
+ return (enum anchor_t)i;
+ }
+ }
+ return NOT_ANCHOR;
+}
+
+
+static void __cal_detail_autolink_email_link_clicked(char *info)
+{
+ c_retm_if(!info, "Input parameter is null");
+ bundle *req = NULL;
+ char *account_id= NULL;
+ char *email_id= NULL;
+ char *src_box= NULL;
+ char *temp= NULL;
+ int ret = 0;
+
+ req = bundle_create();
+ c_retm_if(!req, "bundle_create is failed");
+
+ char livemagazine[30] = { 0, };
+ snprintf(livemagazine, sizeof(livemagazine), "%d", 0);
+ char internal[30] = { 0, };
+ snprintf(internal, sizeof(internal), "%d", 1);
+ account_id = info;
+ temp = strchr(info, '_');
+ if (NULL != temp)
+ {
+ *temp = '\0';
+ bundle_add(req, "ACCOUNT_ID", account_id);
+ }
+
+ if (NULL != temp)
+ {
+ email_id = temp+1;
+ temp = NULL;
+ temp = strchr(email_id, '_');
+ if(NULL != temp)
+ {
+ *temp = '\0';
+ bundle_add(req, "MAIL_ID", email_id);
+ }
+ }
+
+ if (NULL != temp)
+ {
+ src_box= temp+1;
+ bundle_add(req, "MAILBOX", src_box);
+ }
+
+
+ bundle_add(req, "RUN_TYPE", "7");
+ ret = aul_launch_app("org.tizen.email", req);
+ c_warn_if(!ret, "aul_launch_app(org.tizen.email) is failed(%d)", ret);
+ bundle_free(req);
+}
-static char* __cal_detail_get_repeat_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+static void __cal_detail_autolink_anchor_clicked_callback(void *data, Evas_Object *obj, void *event_info)
{
- cal_struct *cs;
- char buf[1024] = {0};
- cal_detail_data *p = item_data->p;
- cs = p->cs;
- if(NULL == cs)
+ c_retm_if(!data, "data is null");
+
+ struct autolink_data_t *s_ald = NULL;
+ cal_detail_data* p = data;
+ char buf[128] = { 0 };
+
+ Elm_Entry_Anchor_Info *ei = (Elm_Entry_Anchor_Info *)event_info;
+
+ char *temp = strchr(ei->name, ' ');
+ if (!temp)
{
- return NULL;
+ ERR("strchr(ei->name, ' ') is failed");
+ return;
}
- if (!CAL_STRCMP(part, "elm.text.1"))
+ CAL_STRNCPY(buf, ei->name, temp - ei->name);
+
+ temp = strchr(buf, '|');
+ if (!temp)
{
- return strdup(C_("IDS_CLD_BODY_REPEAT"));
+ ERR("strchr(buf '|') is failed");
+ return;
}
- if(!CAL_STRCMP(part, "elm.text.2"))
- {
- __cal_detail_get_repeat(cs, buf, sizeof(buf));
+ s_ald = calloc(1, sizeof(struct autolink_data_t));
+ c_retm_if(!s_ald, "calloc(1, struct autolink_data_t) is failed");
- return strdup(buf);
+ s_ald->info = calloc(128, sizeof(char));
+ if (!s_ald->info)
+ {
+ ERR("calloc(128, char) is failed");
+ free(s_ald);
+ return;
}
- return NULL;
-}
+ *temp = '\0';
+ CAL_STRNCPY(s_ald->info, temp + 1, 128);
-static char* __cal_detail_get_note_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
-{
- cal_struct *cs;
+ s_ald->type = __cal_detail_parse_autolink_anchor_type(buf);
- cal_detail_data *p = item_data->p;
- cs = p->cs;
- if (NULL == cs)
+ switch (s_ald->type)
{
- return NULL;
+ case ANCHOR_EMAIL:
+ case ANCHOR_PHONE:
+ __cal_detail_show_autolink_popup(s_ald, p);
+ return;
+ case ANCHOR_URL:
+ aul_open_content(s_ald->info); /* launch browser */
+ break;
+ case ANCHOR_EMAIL_LINK:
+ __cal_detail_autolink_email_link_clicked(s_ald->info);
+ break;
+ default:
+ break;
}
- return NULL;
+ free(s_ald->info);
+ free(s_ald);
}
static Evas_Object* __cal_detail_add_note_object(cal_detail_data *p, Evas_Object *parent, const char *text)
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);
+ Evas_Object *layout = cal_util_add_edit_field(parent, S_("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");
p->entry = entry;
p->text = text;
- elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+ evas_object_smart_callback_add(entry, "anchor,clicked", __cal_detail_autolink_anchor_clicked_callback, p);
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);
cal_detail_data *p = item_data->p;
Evas_Object *edit_field = NULL;
const char *note = NULL;
-
+ GString *text = NULL;
cal_struct *cs = p->cs;
c_retvm_if(!cs, NULL, "cs is null");
if (!CAL_STRLEN(note))
return NULL;
- edit_field = __cal_detail_add_note_object(p, obj, elm_entry_utf8_to_markup(note));
+ text = __cal_detail_add_autolink_anchor(elm_entry_utf8_to_markup(note));
+ g_string_prepend(text, "<font_size=35>");
+ edit_field = __cal_detail_add_note_object(p, obj, text->str);
}
return edit_field;
switch ( type )
{
+
case _GTYPE_NOTE:
e_obj = __cal_detail_add_note_icon(obj, part, item_data);
break;
return e_obj;
}
+static char* __cal_detail_get_priority_text(Evas_Object *obj, const char *part, cal_detail_genlist_item_data *item_data)
+{
+ cal_detail_data *p = item_data->p;
+ cal_struct *cs;
+ cs = p->cs;
+ c_retvm_if(!cs, NULL, "cs is null");
+
+ if (!CAL_STRCMP(part, "elm.text.1"))
+ return strdup(C_("IDS_CLD_BODY_PRIORITY"));
+
+ if (!CAL_STRCMP(part, "elm.text.2")) {
+ switch (p->priority) {
+ case EVENT_PRIORITY_LOW:
+ return strdup(S_("IDS_COM_BODY_LOW"));
+ case EVENT_PRIORITY_NORMAL:
+ return strdup(C_("IDS_IDLE_BODY_NORMAL"));
+ case EVENT_PRIORITY_HIGH:
+ return strdup(S_("IDS_COM_OPT_HIGH_M_QUALITY"));
+ default:
+ return NULL;
+ }
+ }
+
+ return NULL;
+}
static char *__cal_detail_get_genlist_item_label(void *data, Evas_Object *obj, const char *part)
{
{
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_START_AND_END_TIME:
+ return __cal_detail_get_start_time_and_end_time_text(obj, part, item_data);
+ case _GTYPE_DUE:
+ return __cal_detail_get_due_text(obj, part, item_data);
+ case _GTYPE_REMINDER_AND_REPEAT:
+ return __cal_detail_add_reminder_and_repeat_text(obj, part, item_data);
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;
+ case _GTYPE_PRIORITY:
+ return __cal_detail_get_priority_text(obj, part, item_data);
default:
- break;
+ return NULL;
}
-
- return NULL;
}
static void __cal_detail_genlist_item_delete_callback(void *data, Evas_Object *obj)
c_retvm_if(!p, NULL, "p is null");
c_retvm_if(!genlist, NULL, "genlist is null");
+ if (p->is_todo_mode)
+ return 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);
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
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);
+ return __cal_detail_add_genlist_item(genlist, &itc_2text, _GTYPE_TITLE_LOC, p);
}
-static Elm_Object_Item* __cal_detail_add_start_time(Evas_Object *genlist, cal_detail_data *p)
+static Elm_Object_Item* __cal_detail_add_start_and_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_START, p);
+// __cal_detail_add_separator(genlist, p);
+ return __cal_detail_add_genlist_item(genlist, &itc_4text, _GTYPE_START_AND_END_TIME, p);
}
-static void __cal_detail_add_alarm_item(Evas_Object *genlist, Elm_Genlist_Item_Class *itc, int type, cal_detail_data *p, int alarm)
+static Elm_Object_Item* __cal_detail_add_due(Evas_Object *genlist, cal_detail_data *p)
+{
+// __cal_detail_add_separator(genlist, p);
+ return __cal_detail_add_genlist_item(genlist, &itc_2text, _GTYPE_DUE, p);
+}
+
+static void __cal_detail_add_reminder_and_repeat_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");
}
}
-static void __cal_detail_add_alarm(Evas_Object *genlist, cal_detail_data *p)
+static void __cal_detail_add_reminder_and_repeat(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_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);
+ __cal_detail_add_reminder_and_repeat_item(genlist, &itc_4text, _GTYPE_REMINDER_AND_REPEAT, 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);
+ __cal_detail_add_reminder_and_repeat_item(genlist, &itc_4text, _GTYPE_REMINDER_AND_REPEAT, 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");
if (!CAL_STRLEN(note))
return NULL;
- __cal_detail_add_separator(genlist, p);
+// __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);
+// __cal_detail_add_separator(genlist, p);
return __cal_detail_add_genlist_item(genlist, &itc_linked_cal, _GTYPE_LINKED_CAL, p);
}
Evas_Object *genlist;
- if(p->ad->is_aul && p->ad->ical)
+ if (p->ad->ical)
p->cs = p->ad->ical;
- else
- p->cs = __cal_detail_get_event(p->ad->cid);
+ else {
+ if (p->cs)
+ CALENDAR_SVC_STRUCT_FREE(&p->cs);
+
+ p->cs = __cal_detail_get_event(p, p->ad->cid);
+ }
+
+ cal_main_set_cs(p->ad, p->cs);
if (!p->cs) {
__cal_detail_show_error_popup(p);
itc_seperator.func.state_get = __cal_detail_get_genlist_item_state;
itc_seperator.func.del = __cal_detail_genlist_item_delete_callback;
+ itc_2text.item_style = "dialogue/2text";
+ itc_2text.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_2text.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_4text.item_style = "dialogue/4text";
+ itc_4text.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_4text.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.item_style = "dialogue/1icon.fill";
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.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_start_and_end_time(genlist, p);
+ __cal_detail_add_reminder_and_repeat(genlist, p);
__cal_detail_add_note(genlist, p);
+
__cal_detail_add_save_to(genlist, p);
return genlist;
p->ly = ly;
p->cid = ad->cid;
p->alarm_list = NULL;
+ p->is_todo_mode = EINA_FALSE;
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)
{
elm_object_part_content_set(p->ly, "sw", genlist);
p->genlist = genlist;
+ p->evt = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, __cal_detail_mouse_button_down_callback, p);
+
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);
{
CAL_FN_START;
- c_retm_if(!data, "data is null");
-
- Evas_Object *ly = data;
- cal_detail_data *p;
+ struct appdata *ad = data;
+ c_retm_if(!ad || !ad->nv, "ad or ad->nv is null");
- p = CAL_UTIL_GET_PRIV_DATA(ly);
- c_retm_if(!p, "CAL_UTIL_GET_PRIV_DATA(ly) returned null");
+ int r = CALENDAR_SVC_INSERT(ad->ical);
+ if (CAL_SUCCESS != r)
+ ERR("Calendar service delete failed: %d", r);
- cal_edit_create_view(p->ad, p->parent);
}
void cal_detail_create_view(struct appdata *ad, Evas_Object *parent)
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);
+ navi_item = elm_naviframe_item_push(ad->nv, C_("IDS_CLD_BODY_EVENT_DETAILS"), NULL, NULL, ly, NULL);
if (!navi_item)
{
ERR("elm_naviframe_item_push is failed");
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_toolbar_item_append(controlbar, CAL_CBAR_ICON_EDIT, NULL, __cal_detail_edit_button_callback, ly);
+
+ if (ad->item_type == ITEM_TYPE_UNKNOWN) {
+ elm_toolbar_item_append(controlbar, CAL_CBAR_ICON_SHARE, NULL, __cal_detail_send_button_callback, ly);
+ elm_toolbar_item_append(controlbar, CAL_CBAR_ICON_DELETE, NULL, __cal_detail_delete_button_callback, ly);
+ }
elm_object_item_part_content_set( navi_item, "controlbar", controlbar);
CAL_FN_END;
}
-void cal_viewer_create_view(struct appdata *ad, Evas_Object *parent, char* raw_data)
+void cal_detail_create_viewer(struct appdata *ad, Evas_Object *parent, cal_struct *cs)
{
CAL_FN_START;
- c_retm_if(!ad || !parent || !raw_data, "Input parameter is null");
+ c_retm_if(!ad || !parent || !cs, "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);
-
+ ad->ical = cs;
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;
+ }
+
+ Evas_Object *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_OPT_SAVE"), __cal_detail_save_to_calendar_button_callback, ad);
+ elm_object_item_part_content_set(navi_item, "controlbar", controlbar);
+
+ back_button = elm_button_add(ad->nv);
+ c_retm_if(!back_button, "elm_button_add is failed.");
+
+ elm_object_style_set(back_button, "naviframe/back_btn/default");
+ elm_object_item_part_content_set(navi_item, "prev_btn", back_button);
+
+ evas_object_smart_callback_add(back_button, "clicked", __cal_detail_viewer_back_button_callback, ad);
+}
+
+static int __cal_detail_get_priority(cal_struct *cs)
+{
+ c_retvm_if(!cs, 0, "cs is null");
+
+ return CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_PRIORITY);
+}
+
+static void __cal_detail_add_priority(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");
+
+ p->priority = __cal_detail_get_priority(p->cs);
+
+ __cal_detail_add_genlist_item(genlist, &itc_4text, _GTYPE_PRIORITY, p);
+
+ return;
+}
+
+static Evas_Object *__cal_detail_create_genlist_todo(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, p->ad->cid);
+
+ if(!p->cs)
+ __cal_detail_show_error_popup(p);
+
+ genlist = elm_genlist_add(p->ly);
+ c_retvm_if(!genlist, NULL, "elm_genlist_add(p->ly) returned null");
+
+ if (NULL != p->ad->theme)
+ {
+ elm_object_theme_set(genlist, p->ad->theme);
+ }
+
+ 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_2text.item_style = "dialogue/2text";
+ itc_2text.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_2text.func.del = __cal_detail_genlist_item_delete_callback;
+
+ itc_4text.item_style = "dialogue/2text";
+ itc_4text.func.text_get = __cal_detail_get_genlist_item_label;
+ itc_4text.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;
+
+ 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_DISPLAY_ONLY);
+
+ __cal_detail_add_title_location(genlist, p);
+ __cal_detail_add_due(genlist, p);
+ __cal_detail_add_priority(genlist, p);
+ __cal_detail_add_reminder_and_repeat(genlist, p);
+ __cal_detail_add_note(genlist, p);
+
+ return genlist;
+}
+
+static Evas_Object *__cal_detail_create_layout_todo(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;
+ p->is_todo_mode = EINA_TRUE;
+
+ is_hour24 = ad->is_hour24;
+
+ genlist = __cal_detail_create_genlist_todo(p);
+ if (!genlist)
+ {
+ evas_object_del(ly);
+ free(p);
+ return NULL;
+ }
+
+ elm_object_part_content_set(p->ly, "sw", genlist);
+ p->genlist = genlist;
+
+ p->evt = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, __cal_detail_mouse_button_down_callback, p);
+
+ evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_detail_delete_layout, p);
+
+ CALENDAR_SVC_ADD_EVENT_CHANGED_CALLBACK(__cal_detail_update_view_todo, p);
+
+ return ly;
+}
+
+void cal_detail_create_view_todo(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_todo(ad, parent);
+ c_retm_if(!ly, "__cal_detail_create_layout(ad, parent) is failed");
+
+ navi_item = elm_naviframe_item_push(ad->nv, C_("IDS_CLD_BODY_TASK_DETAILS"), NULL, NULL, ly, NULL);
if (!navi_item)
{
ERR("elm_naviframe_item_push is failed");
return;
}
- elm_toolbar_item_append(controlbar, NULL, _("Save to Calendar"), __cal_detail_save_to_calendar_button_callback, ly);
+ elm_toolbar_item_append(controlbar, CAL_CBAR_ICON_EDIT, NULL, __cal_detail_edit_button_callback, ly);
+ elm_toolbar_item_append(controlbar, CAL_CBAR_ICON_SHARE, NULL, __cal_detail_send_button_callback, ly);
+ elm_toolbar_item_append(controlbar, CAL_CBAR_ICON_DELETE, NULL, __cal_detail_delete_button_callback, ly);
- elm_object_item_part_content_set(navi_item, "controlbar", controlbar);
+ 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)
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));
+ evas_object_smart_callback_add(back_button, "clicked", __cal_detail_back_button_callback, CAL_UTIL_GET_PRIV_DATA(ly));
+}
+
+static void __cal_detail_update_view_todo(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_todo(p);
+ if (genlist)
+ {
+ elm_object_part_content_set(p->ly, "sw", genlist);
+ p->genlist = genlist;
+ }
}
+
+