*/
-
-
-
-
+#include <fcntl.h>
+#include <vconf.h>
#include "cld.h"
#include "ug.h"
#include <glib.h>
Evas_Object *genlist;
Eina_List *event_list;
+ Eina_List *search_list;
- Evas_Object *select_all_layout;
- Evas_Object *select_all_check;
+ Evas_Object *select_all;
+ Evas_Object *select_all_checkbox;
Evas_Object *box;
- int totalcnt;
- int offset;
Ecore_Idler* idler;
- int num_check;
- int genlist_count;
+ int checked_event_count;
+ int added_event_count;
Evas_Object* searchbar;
const char * searchtext;
Elm_Object_Item *navi_item;
- Evas_Object * notify;
- Evas_Object * notify_layout;
+ Evas_Object * selection_info;
+ Evas_Object * selection_info_layout;
}cal_list_ug_data;
typedef struct {
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_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 void __cal_list_ug_update_all_checkbox(cal_list_ug_data* p);
static Elm_Genlist_Item_Class itc = {
.item_style = "3text.5icon",
//TODO
#define ELM_GENLIST_ITEM_GROUP (1<<1)
-static void __cal_list_ug_add_small_info(cal_list_ug_data *p, int count)
+static void __cal_list_ug_create_selection_info(cal_list_ug_data *p)
{
- c_retm_if(!p, "p is null");
- struct ug_data *ad = p->ugd;
- c_retm_if(!ad, "ug data is null");
+ c_ret_if(!p);
- Evas_Object *nv = ad->nv;
- c_retm_if(!nv, "nv is null");
+ if (p->selection_info)
+ return;
- Evas_Object *notify = NULL;
- Evas_Object *notify_layout = NULL;
- char lable_str[ACCOUNT_LABLE_STRING_LENGTH] = { '\0'};
+ struct ug_data *ad = p->ugd;
+ c_ret_if(!ad);
- c_ret_if(count < 0);
+ Evas_Object *nv = ad->nv;
+ c_ret_if(!nv);
- if (!p->notify) {
- notify = elm_notify_add(nv);
+ if (!p->selection_info) {
- c_retm_if(!notify, "notify is null");
+ Evas_Object *notify = elm_notify_add(nv);
+ c_ret_if(!notify);
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;
- }
+ Evas_Object *notify_layout = elm_layout_add(notify);
+ c_ret_if(!notify_layout);
- p->notify_layout = notify_layout;
elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64");
elm_object_content_set(notify, notify_layout);
+
+ p->selection_info = notify;
+ p->selection_info_layout = 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);
+static void __cal_list_ug_delete_selection_info(cal_list_ug_data *p)
+{
+ c_ret_if(!p);
- if (0 < count) {
- evas_object_show(p->notify);
- } else {
- evas_object_hide(p->notify);
- }
+ if (p->selection_info)
+ evas_object_del(p->selection_info);
+
+ p->selection_info = NULL;
+ p->selection_info_layout = NULL;
}
-static void __cal_list_ug_genlist_item_check_changed_callback(void *data, Evas_Object *obj, void *event_info)
+static void __cal_list_ug_update_selection_info(cal_list_ug_data *p, int count)
{
- c_retm_if(!data, "data is null");
+ c_ret_if(!p);
- cal_list_ug_item_data *item_data = data;
- Elm_Object_Item *it;
- Eina_List* realized_list, *l;
+ if (!p->selection_info)
+ __cal_list_ug_create_selection_info(p);
- cal_list_ug_data* p = CAL_UTIL_GET_PRIV_DATA(obj);
- c_retm_if(!p, "p is null");
+ char lable_str[ACCOUNT_LABLE_STRING_LENGTH] = {0};
- if (p->genlist_count <= 0) {
- return;
- }
+ 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->selection_info_layout), "elm.text", lable_str);
- item_data->checked = elm_check_state_get(obj);
- if (item_data->checked)
- p->num_check++;
+ if (0 < count)
+ evas_object_show(p->selection_info);
else
- p->num_check--;
+ evas_object_hide(p->selection_info);
+}
- if (item_data->checked || 0 < p->num_check)
+static inline void __cal_list_ug_update_button_state(cal_list_ug_data *p)
+{
+ if (0 < p->checked_event_count)
elm_object_item_disabled_set(p->bt, EINA_FALSE);
else
elm_object_item_disabled_set(p->bt, EINA_TRUE);
+}
+
+static inline void __cal_list_ug_update_realized_genlist_item(cal_list_ug_data *p)
+{
+ Eina_List *realized_list = elm_genlist_realized_items_get(p->genlist);
+ c_ret_if(!realized_list);
+
+ Eina_List *l = NULL;
+ Elm_Object_Item *it = NULL;
- realized_list = elm_genlist_realized_items_get(p->genlist);
EINA_LIST_FOREACH(realized_list, l, it) {
if (it)
elm_genlist_item_update(it);
}
+}
+
+static inline void __cal_list_ug_update_select_all(cal_list_ug_data *p)
+{
+ if (p->checked_event_count == p->added_event_count) {
+
+ elm_check_state_set(p->select_all_checkbox, EINA_TRUE);
+
+ __cal_list_ug_update_all_checkbox(p);
- 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);
+
+ elm_check_state_set(p->select_all_checkbox, EINA_FALSE);
+
+ __cal_list_ug_update_selection_info(p, p->checked_event_count);
}
}
-static Evas_Object *__cal_list_ug_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+static void __cal_list_ug_genlist_item_check_changed_callback(void *data, Evas_Object *obj, void *event_info)
{
- c_retvm_if(!part, NULL, "part is null");
- c_retvm_if(!obj, NULL, "obj is null");
- c_retvm_if(!data, NULL, "data is null");
+ c_ret_if(!data);
+ c_ret_if(!obj);
+
+ cal_list_ug_item_data *item_data = data;
- 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");
+ c_ret_if(!p);
+
+ item_data->checked = elm_check_state_get(obj);
+
+ if (item_data->checked)
+ p->checked_event_count++;
+ else
+ p->checked_event_count--;
+
+ __cal_list_ug_update_button_state(p);
+
+ __cal_list_ug_update_realized_genlist_item(p);
+
+ __cal_list_ug_update_select_all(p);
+}
+
+static Evas_Object *__cal_list_ug_get_genlist_item_icon(void *data, Evas_Object *obj, const char *part)
+{
+ c_retv_if(!part, NULL);
+ c_retv_if(!obj, NULL);
+ c_retv_if(!data, 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");
+ if (!CAL_STRCMP(part, "elm.edit.icon.1")) {
- 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);
+ cal_list_ug_data* p = CAL_UTIL_GET_PRIV_DATA(obj);
+ c_retv_if(!p, NULL);
- 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);
+ Evas_Object *checkbox = elm_check_add(obj);
+ c_retv_if(!checkbox, NULL);
+
+ elm_check_state_pointer_set(checkbox, &item_data->checked);
+ evas_object_smart_callback_add(checkbox, "changed", __cal_list_ug_genlist_item_check_changed_callback, item_data);
+ evas_object_propagate_events_set(checkbox, EINA_FALSE);
+ evas_object_data_set(checkbox, "priv", p);
+
+ return checkbox;
+
+ } else if (!CAL_STRCMP(part, "elm.swallow.colorbar")) {
+
+ cal_struct *cs = item_data->cs;
+ c_retv_if(!cs, NULL);
+
+ cal_struct *calendar = NULL;
+
+ int 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);
+ Evas_Object *rect = evas_object_rectangle_add(evas_object_evas_get(obj));
+ c_retv_if(!rect, NULL);
+
+ evas_object_size_hint_align_set(rect, 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);
+ evas_object_color_set(rect, calendar_color.red, calendar_color.green, calendar_color.blue, calendar_color.alpha);
CALENDAR_SVC_STRUCT_FREE(&calendar);
- return icon;
+ return rect;
}
return NULL;
}
-static void __cal_list_ug_clear_event_list(cal_list_ug_data *p)
+static void __cal_list_ug_delete_idler(cal_list_ug_data *p)
{
CAL_FN_START;
- c_retm_if(!p, "p is null");
+ c_ret_if(!p);
- cal_list_ug_item_data *item;
- Eina_List *l = NULL;
+ if (!p->idler)
+ return;
- EINA_LIST_FOREACH(p->event_list, l, item) {
- if (item) {
- calendar_svc_struct_free(&item->cs);
- item->cs = NULL;
- free(item);
- item=NULL;
- }
- }
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+}
- if (p->event_list) {
- eina_list_free(p->event_list);
- p->event_list = NULL;
- }
+static void __cal_list_ug_delete_no_contents(cal_list_ug_data *p)
+{
+ CAL_FN_START;
+
+ c_ret_if(!p);
+ c_ret_if(!p->ly);
+
+ if (!p->no_contents)
+ return;
+
+ elm_object_part_content_unset(p->ly, "sw");
+
+ evas_object_del(p->no_contents);
+
+ p->no_contents = NULL;
+}
+
+static void __cal_list_ug_delete_conformant(cal_list_ug_data *p)
+{
+ CAL_FN_START;
+
+ c_ret_if(!p);
+
+ if(!p->conformant)
+ return;
+
+ c_ret_if(!p->ly);
+
+ elm_object_part_content_unset(p->ly, "sw");
+
+ evas_object_del(p->conformant);
+
+ p->conformant = NULL;
}
static void __cal_list_ug_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
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_delete_idler(p);
- __cal_list_ug_clear_event_list(p);
+ CALENDAR_SVC_FREE_CS_LIST(&p->event_list);
- if (p->no_contents) {
- evas_object_del(p->no_contents);
- }
+ __cal_list_ug_delete_no_contents(p);
- 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;
- }
+ __cal_list_ug_delete_conformant(p);
- CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK((void(*)(void*))__cal_list_ug_update);
+ p->searchbar = NULL;
- if (p->notify) {
- evas_object_del(p->notify);
- }
+ p->box = NULL;
- if (p->box) {
- elm_box_clear(p->box);
- }
+ p->select_all = NULL;
+
+ p->select_all_checkbox = NULL;
+
+ p->genlist = NULL;
+
+ CALENDAR_SVC_DEL_EVENT_CHANGED_CALLBACK((void(*)(void*))__cal_list_ug_update);
+
+ __cal_list_ug_delete_selection_info(p);
free(p);
}
{
char buf[512];
char stime[512];
- time_t st;
struct tm tm;
- int repeat;
const char* time;
if (is_hour24)
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);
+ cal_util_convert_lli_to_tm(NULL, CALENDAR_SVC_STRUCT_GET_LLI(cs, CALS_VALUE_LLI_DTSTART_UTIME), &tm);
- repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_REPEAT_TERM);
- if (repeat == CAL_REPEAT_NONE)
- {
+ int repeat = CALENDAR_SVC_STRUCT_GET_INT(cs, CALS_VALUE_INT_RRULE_ID);
+ if (repeat == CALS_FREQ_ONCE) {
cal_util_get_time_text(stime, sizeof(stime), NULL, time, &tm);
snprintf(buf, sizeof(buf), "%s", stime);
} else {
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");
+ c_retv_if(!part, NULL);
+ c_retv_if(!data, 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");
+ c_retv_if(!cs, NULL);
+
+ if (!CAL_STRCMP(part, "elm.text.1")) {
- if (!CAL_STRCMP(part, "elm.text.1"))
- {
str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_SUMMARY);
- if (str)
+ if (CAL_STRLEN(str))
return strdup(str);
return strdup(C_("IDS_CLD_BODY_NO_TITLE"));
}
- if (!CAL_STRCMP(part, "elm.text.2"))
- {
+ if (!CAL_STRCMP(part, "elm.text.2")) {
+
str = CALENDAR_SVC_STRUCT_GET_STR(cs, CAL_VALUE_TXT_LOCATION);
- if (str)
+ if (CAL_STRLEN(str))
return strdup(str);
return strdup(C_("IDS_CLD_BODY_NO_LOCATION_SELECTED"));
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) {
+ if (p->added_event_count <= 0) {
return;
}
item->checked = !(item->checked);
if (item->checked) {
- p->num_check++;
+ p->checked_event_count++;
} else {
- p->num_check--;
+ p->checked_event_count--;
}
- if (item->checked || 0 < p->num_check) {
+ if (item->checked || 0 < p->checked_event_count) {
elm_object_item_disabled_set(p->bt, EINA_FALSE);
- } else if (p->num_check <= 0) {
+ } else if (p->checked_event_count <= 0) {
elm_object_item_disabled_set(p->bt, EINA_TRUE);
}
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);
- }
- }
+ __cal_list_ug_update_realized_genlist_item(p);
- if (p->num_check == p->genlist_count) {
- elm_check_state_set(p->select_all_check,EINA_TRUE);
- __cal_list_ug_update_all_check(p);
+ if (p->checked_event_count == p->added_event_count) {
+ elm_check_state_set(p->select_all_checkbox,EINA_TRUE);
+ __cal_list_ug_update_all_checkbox(p);
} else {
- elm_check_state_set(p->select_all_check,EINA_FALSE);
- __cal_list_ug_add_small_info(p, p->num_check);
+ elm_check_state_set(p->select_all_checkbox,EINA_FALSE);
+ __cal_list_ug_update_selection_info(p, p->checked_event_count);
}
}
-Eina_Bool __cal_list_ug_update_fetch_list_idler(void* data)
+static void __cal_list_ug_get_event_list(cal_list_ug_data *p)
{
CAL_FN_START;
- cal_list_ug_data *p = data;
+ c_ret_if(!p);
- c_retvm_if(!p, ECORE_CALLBACK_CANCEL, "priv is null.");
+ if (p->ugd->is_event)
+ p->event_list = CALENDAR_SVC_GET_ALL(ALL_ACCOUNT_ID, ALL_CALENDAR_ID, CAL_STRUCT_SCHEDULE);
+ else
+ p->event_list = CALENDAR_SVC_GET_ALL(ALL_ACCOUNT_ID, ALL_CALENDAR_ID, CAL_STRUCT_TODO);
+}
- 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;
+static void __cal_list_ug_add_event_to_genlist(cal_list_ug_data *p)
+{
+ CAL_FN_START;
- if(is_ug_list_view_destory == EINA_TRUE)
- return ECORE_CALLBACK_CANCEL;
+ c_ret_if(!p);
+ c_ret_if(!p->event_list);
- if(p->idler == NULL)
- return ECORE_CALLBACK_CANCEL;
+ Eina_List *l = NULL;
+ cal_struct *cs = NULL;
- 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;
+ int added_event_count = 0;
- while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+ Eina_List *event_list = eina_list_nth_list(p->event_list, p->added_event_count);
+ c_ret_if(!event_list);
- item = calloc(1, sizeof(cal_list_ug_item_data));
- c_retvm_if(!item, ECORE_CALLBACK_CANCEL, "item is null");
+ EINA_LIST_FOREACH(event_list, l, cs) {
+ if (cs) {
+ cal_list_ug_item_data *item_data = calloc(1, sizeof(cal_list_ug_item_data));
+ c_ret_if(!item_data);
- r = CALENDAR_SVC_ITER_GET_INFO(it, &item->cs);
- if (r != CAL_SUCCESS)
- break;
+ item_data->cs = cs;
- p->event_list = eina_list_append(p->event_list, item);
- }
+ item_data->it = elm_genlist_item_append(p->genlist, &itc, item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_list_ug_genlist_item_select_callback, item_data);
- CALENDAR_SVC_ITER_REMOVE(&it);
+ added_event_count++;
- if(eina_list_count(p->event_list) < MAX_FETCH_COUNT)
- is_finished = EINA_TRUE;
+ if (10 < added_event_count)
+ break;
+ }
+ }
- __cal_list_ug_append_with_idler(p);
+ p->added_event_count += added_event_count;
+}
- if(is_finished || (p->offset == p->totalcnt))
- {
- if (p->idler)
- {
- ecore_idler_del(p->idler);
- p->idler = NULL;
- }
+static Eina_Bool __cal_list_ug_check_idler_condition(cal_list_ug_data *p)
+{
+ c_retv_if(!p, ECORE_CALLBACK_CANCEL);
- p->offset= 0;
+ if (p->added_event_count < eina_list_count(p->event_list)) {
- return ECORE_CALLBACK_CANCEL;
- }
- else
- {
return ECORE_CALLBACK_RENEW;
}
+ if (p->idler) {
+ ecore_idler_del(p->idler);
+ p->idler = NULL;
+ }
+
return ECORE_CALLBACK_CANCEL;
}
-static void __cal_list_ug_get_event_list(cal_list_ug_data *p)
+Eina_Bool __cal_list_ug_idler_callback(void* data)
{
CAL_FN_START;
- c_retm_if(!p, "p is null");
+ c_retvm_if(!data, ECORE_CALLBACK_CANCEL, "data 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);
+ cal_list_ug_data *p = data;
- p->offset = 0;
+ c_retv_if(!p->idler, ECORE_CALLBACK_CANCEL);
- r = CALENDAR_SVC_GET_LIST(ALL_ACCOUNT_ID, ALL_CALENDAR_ID, CAL_STRUCT_SCHEDULE, CAL_VALUE_LIST_FILED, 0, MAX_FETCH_COUNT, &it);
+ __cal_list_ug_add_event_to_genlist(p);
- if (r != CAL_SUCCESS)
- return;
+ CAL_FN_END;
- while (CALENDAR_SVC_ITER_NEXT(it) == CAL_SUCCESS) {
+ return __cal_list_ug_check_idler_condition(p);
+}
- item = calloc(1, sizeof(cal_list_ug_item_data));
- c_retm_if(!item, "item is null");
+static void __cal_list_ug_add_idler(cal_list_ug_data *p)
+{
+ c_ret_if(!p);
- r = CALENDAR_SVC_ITER_GET_INFO(it, &item->cs);
- if (r != CAL_SUCCESS)
- break;
+ if (p->added_event_count < eina_list_count(p->event_list)) {
- p->event_list = eina_list_append(p->event_list, item);
- }
+ if (p->idler)
+ ecore_idler_del(p->idler);
- 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);
- }
+ p->idler = ecore_idler_add(__cal_list_ug_idler_callback, p);
+ c_ret_if(!p->idler);
}
}
-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;
- }
+static void __cal_list_ug_create_searchbar(cal_list_ug_data *p)
+{
+ c_ret_if(!p);
+ c_ret_if(!p->ly);
- GString * gDes = g_string_new(pszChild);
- if (!gDes) {
- g_string_free(gSrc,true);
- return false;
- }
+ if (p->searchbar)
+ return;
- gSrc = g_string_ascii_up(gSrc);
- if (!gSrc) {
- g_string_free(gDes,true);
- return false;
- }
+ Evas_Object *searchbar = cal_util_add_searchbar(p->ly, NULL, NULL, EINA_TRUE);
+ c_ret_if(!searchbar);
- gDes = g_string_ascii_up(gDes);
- if (!gDes) {
- g_string_free(gSrc,true);
- return false;
- }
+ Evas_Object *entry = elm_object_part_content_get(searchbar, "elm.swallow.content");
+ c_ret_if(!entry);
- if (g_strrstr(gSrc->str,gDes->str)) {
- bRst = true;
- } else {
- bRst = false;
- }
+ elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+ elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &_limit_20char);
- 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");
+ evas_object_size_hint_weight_set(searchbar, EVAS_HINT_EXPAND, 0.1);
+ evas_object_size_hint_align_set(searchbar, EVAS_HINT_FILL, 0.6);
- 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;
+ evas_object_smart_callback_add(entry, "changed", __cal_list_ug_searchbar_entry_changed_callback, p);
+ evas_object_smart_callback_add(entry, "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);
- 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);
+ evas_object_show(searchbar);
- 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);
+ edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->ly), "searchbar,show", "prog");
- 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");
+ elm_object_part_content_set(p->ly, "searchbar", searchbar);
- if (item && item->checked)
- p->num_check++;
+ p->searchbar = searchbar;
+}
- p->genlist_count++;
- }
+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;
- } else {
+ Evas_Event_Mouse_Up *ev = event_info;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+ return;
- if (item && item->checked)
- p->num_check++;
+ if (p->added_event_count <= 0) {
+ return;
+ }
+ elm_check_state_set(p->select_all_checkbox, !elm_check_state_get(p->select_all_checkbox));
- 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");
+ __cal_list_ug_update_all_checkbox(p);
+}
- p->genlist_count++;
- }
- }
+static void __cal_list_ug_select_all_changed_callback(void *data, Evas_Object *obj, void *event_info)
+{
+ c_retm_if(!obj, "obj is null");
- p->offset++;
+ cal_list_ug_data* p = data;
+ c_retm_if(!p, "p is null");
+ if (p->added_event_count <= 0) {
+ return;
}
+
+ __cal_list_ug_update_all_checkbox(p);
}
-static void __cal_list_ug_append_genlist(cal_list_ug_data *p)
+static void __cal_list_ug_create_box(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;
+ c_ret_if(!p);
+ c_ret_if(!p->conformant);
- 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 (p->box)
+ return;
- 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++;
+ Evas_Object *box = elm_box_add(p->conformant);
+ c_ret_if(!box);
- p->genlist_count++;
- }
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_content_set(p->conformant, box);
+ p->box = box;
+}
- } else {
+static void __cal_list_ug_create_select_all(cal_list_ug_data* p)
+{
+ CAL_FN_START;
- if (item && item->checked)
- p->num_check++;
+ c_ret_if(!p);
+ c_ret_if(!p->box);
- 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 (p->select_all)
+ return;
- p->genlist_count++;
- }
+ Evas_Object *select_all = elm_layout_add(p->box);
+ c_ret_if(!select_all);
- }
+ elm_layout_theme_set(select_all, "genlist", "item", "select_all/default");
+ evas_object_size_hint_weight_set(select_all, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_size_hint_align_set(select_all, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_event_callback_add(select_all, EVAS_CALLBACK_MOUSE_UP, __cal_list_ug_select_all_mouse_up_callback, p);
- p->offset++;
+ Evas_Object* checkbox = elm_check_add(select_all);
+ c_ret_if(!checkbox);
- }
+ evas_object_smart_callback_add(checkbox, "changed", __cal_list_ug_select_all_changed_callback, p);
+ evas_object_propagate_events_set(checkbox, EINA_FALSE);
- 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);
+ elm_object_part_content_set(select_all, "elm.icon", checkbox);
+ evas_object_data_set(checkbox, "layout", p->select_all);
+ elm_object_part_text_set(select_all, "elm.text", S_("IDS_COM_BODY_SELECT_ALL"));
+ elm_box_pack_start(p->box, select_all);
+ evas_object_show(select_all);
- 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);
+ p->select_all = select_all;
+ p->select_all_checkbox = checkbox;
}
-static void __cal_list_ug_create_searchbar(cal_list_ug_data *p)
+static void __cal_list_ug_update_event_list_with_keyword(cal_list_ug_data *p)
{
- c_retm_if(!p, "priv is null.");
- c_retm_if(!p->ly, "p->ly is null.");
+ c_ret_if(!p);
- Evas_Object *searchbar = cal_util_add_searchbar(p->ly, NULL, NULL, EINA_TRUE);
- c_retm_if(!searchbar, "cal_util_add_searchbar() returned null.");
+ int search_field = CALS_SEARCH_FIELD_NONE;
+ search_field |= CALS_SEARCH_FIELD_SUMMARY;
+ search_field |= CALS_SEARCH_FIELD_LOCATION;
+ search_field |= CALS_SEARCH_FIELD_ATTENDEE;
+ search_field |= CALS_SEARCH_FIELD_DESCRIPTION;
- Evas_Object *en = elm_object_part_content_get(searchbar, "elm.swallow.content");
- c_retm_if(!en, "elm_object_part_content_get returned null.");
+ if (p->ugd->is_event)
+ p->search_list = CALENDAR_SVC_EVENT_SEARCH(search_field, p->searchtext);
+ else
+ p->search_list = CALENDAR_SVC_TODO_SEARCH(search_field, p->searchtext);
+}
- 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);
+static void __cal_list_ug_update_event_list(cal_list_ug_data *p)
+{
+ c_ret_if(!p);
- evas_object_size_hint_weight_set(searchbar, EVAS_HINT_EXPAND, 0.1);
- evas_object_size_hint_align_set(searchbar, EVAS_HINT_FILL, 0.6);
+ p->checked_event_count = 0;
- 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);
+ p->added_event_count = 0;
- evas_object_show(searchbar);
+ CALENDAR_SVC_FREE_CS_LIST(&p->event_list);
- elm_object_part_content_set(p->ly, "searchbar", searchbar);
- p->searchbar = searchbar;
+ if (CAL_STRLEN(p->searchtext))
+ __cal_list_ug_update_event_list_with_keyword(p);
+ else
+ __cal_list_ug_get_event_list(p);
}
-static void __cal_list_ug_select_all_mouse_up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info)
+static void __cal_list_ug_create_conformant(cal_list_ug_data *p)
{
- c_retm_if(!data, "data is null");
- cal_list_ug_data *p = data;
+ CAL_FN_START;
- Evas_Event_Mouse_Up *ev = event_info;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
- return;
+ c_ret_if(!p);
+ c_ret_if(!p->ly);
- if (p->genlist_count <= 0) {
+ if (p->conformant)
return;
- }
- elm_check_state_set(p->select_all_check, !elm_check_state_get(p->select_all_check));
- __cal_list_ug_update_all_check(p);
-}
+ Evas_Object *conformant = elm_conformant_add(p->ly);
+ c_ret_if(!conformant);
-static void __cal_list_ug_select_all_changed_callback(void *data, Evas_Object *obj, void *event_info)
-{
- c_retm_if(!obj, "obj is null");
+ elm_object_style_set(conformant, "internal_layout");
+ evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- cal_list_ug_data* p = data;
- c_retm_if(!p, "p is null");
- if (p->genlist_count <= 0) {
- return;
- }
+ elm_object_part_content_set(p->ly, "sw", conformant);
- __cal_list_ug_update_all_check(p);
+ p->conformant = conformant;
}
-static void __cal_list_ug_create_select_all(cal_list_ug_data* p)
+static void __cal_list_ug_create_genlist(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");
+ c_ret_if(!p);
+ c_ret_if(!p->conformant);
+
+ if (p->genlist) {
- Evas_Object* layout = p->select_all_layout = elm_layout_add(p->box);
- c_retm_if(!layout, "elm_layout_add returned null");
+ elm_genlist_clear(p->genlist);
- 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);
+ return;
+ }
- Evas_Object* check = p->select_all_check = elm_check_add(p->select_all_layout);
+ Evas_Object *genlist = elm_genlist_add(p->box);
+ c_ret_if(!genlist);
- 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);
+ if (p->ugd->is_multiple)
+ elm_genlist_decorate_mode_set(genlist, EINA_TRUE);
- 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);
+ 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;
}
-static void __cal_list_ug_update_event_list(cal_list_ug_data *p)
+static void __cal_list_ug_create_no_contents(cal_list_ug_data *p)
{
- __cal_list_ug_clear_event_list(p);
+ CAL_FN_START;
+
+ c_ret_if(!p);
+ c_ret_if(!p->ly);
+
+ p->no_contents = cal_util_add_nocontents(p->ly, C_("IDS_CLD_BODY_NO_EVENTS"));
+ c_ret_if(!p->no_contents);
- p->num_check = 0;
- p->offset = 0;
+ elm_object_part_content_set(p->ly, "sw", p->no_contents);
- __cal_list_ug_get_event_list(p);
+ evas_object_show(p->no_contents);
}
static void __cal_list_ug_update(cal_list_ug_data *p)
{
CAL_FN_START;
- c_retm_if(!p, "p is null");
+ c_ret_if(!p);
- if (p->idler) {
- ecore_idler_del(p->idler);
- p->idler = NULL;
- }
+ __cal_list_ug_delete_idler(p);
__cal_list_ug_update_event_list(p);
- if (p->event_list && 0 < eina_list_count(p->event_list)) {
- p->no_contents = NULL;
+ if (p->event_list && eina_list_count(p->event_list)) {
- edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->ly), "searchbar,show", "prog");
+ __cal_list_ug_delete_no_contents(p);
- if (!p->conformant) {
- Evas_Object *conformant = elm_conformant_add(p->ly);
- c_retm_if(!conformant, "conformant is null");
+ __cal_list_ug_create_conformant(p);
- 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);
+ __cal_list_ug_create_searchbar(p);
- p->conformant = conformant;
- }
+ __cal_list_ug_create_box(p);
- __cal_list_ug_create_searchbar(p);
+ __cal_list_ug_create_select_all(p);
- if (!p->box) {
- Evas_Object *box = elm_box_add(p->conformant);
- c_retm_if(!box, "box is null");
+ __cal_list_ug_create_genlist(p);
- evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ __cal_list_ug_add_event_to_genlist(p);
- elm_object_content_set(p->conformant, box);
+ __cal_list_ug_add_idler(p);
- p->box = box;
- }
+ } else {
- __cal_list_ug_create_select_all(p);
+ __cal_list_ug_delete_conformant(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);
+ p->searchbar = NULL;
- __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);
+ p->select_all = NULL;
- edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(p->ly), "searchbar,hide", "prog");
+ p->select_all_checkbox = NULL;
- 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.");
+ p->genlist = NULL;
- elm_object_part_content_set(p->ly, "sw", no_contents);
+ __cal_list_ug_create_no_contents(p);
- p->no_contents = no_contents;
- }
+ if (p->selection_info)
+ evas_object_hide(p->selection_info);
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)
+static void __cal_list_ug_update_all_checkbox(cal_list_ug_data* p)
{
- c_retm_if(!p, "p is null");
- c_retm_if(!p->genlist, "p is null");
+ c_ret_if(!p);
+ c_ret_if(!p->select_all_checkbox);
+ c_ret_if(!p->genlist);
+
+ if (elm_check_state_get(p->select_all_checkbox)) {
- Elm_Object_Item *it;
- Eina_List *realized_list, *l;
- cal_list_ug_item_data* item_data;
+ p->checked_event_count = p->added_event_count;
- 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);
+
+ __cal_list_ug_update_selection_info(p, p->added_event_count);
+
} else {
- p->num_check = 0;
+
+ p->checked_event_count = 0;
+
elm_object_item_disabled_set(p->bt, EINA_TRUE);
- evas_object_hide(p->notify);
+
+ evas_object_hide(p->selection_info);
}
- it = elm_genlist_first_item_get(p->genlist);
+ Elm_Object_Item *it = elm_genlist_first_item_get(p->genlist);
+ c_ret_if(!it);
+
while (it) {
- item_data = elm_object_item_data_get(it);
- if (item_data) {
- item_data->checked = elm_check_state_get(p->select_all_check);
- }
+
+ cal_list_ug_item_data* item_data = elm_object_item_data_get(it);
+ c_ret_if(!item_data);
+
+ item_data->checked = elm_check_state_get(p->select_all_checkbox);
+
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);
- }
- }
+ __cal_list_ug_update_realized_genlist_item(p);
+
}
static Evas_Object* __cal_list_ug_create_layout(Evas_Object *parent, struct ug_data *ugd)
p->ugd = ugd;
p->parent = parent;
p->searchtext = NULL;
- p->notify_layout = NULL;
- p->notify = NULL;
+ p->selection_info_layout = NULL;
+ p->selection_info = NULL;
p->navi_item = NULL;
- p->genlist_count = 0;
+ p->added_event_count = 0;
p->bg = NULL;
- is_ug_list_view_destory = EINA_FALSE;
-
Evas_Object *ly = cal_util_add_layout(parent, p->name);
if (!ly)
{
int allday;
time_t t;
- allday = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CALS_VALUE_INT_DTSTART_TYPE) == CALS_TIME_LOCALTIME)
+ allday = 1;
- t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_START_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ cal_util_convert_lli_to_time_t(NULL, CALENDAR_SVC_STRUCT_GET_LLI(cs, CALS_VALUE_LLI_DTSTART_UTIME), &t);
__cal_list_ug_get_time_text(t, allday, buf, sz);
}
int allday;
time_t t;
- allday = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_ALL_DAY_EVENT);
+ if (CALENDAR_SVC_STRUCT_GET_INT(cs, CALS_VALUE_INT_DTSTART_TYPE) == CALS_TIME_LOCALTIME)
+ allday = 1;
- t = mktime(CALENDAR_SVC_STRUCT_GET_TM(cs, CAL_VALUE_GMT_END_DATE_TIME, CAL_TZ_FLAG_LOCAL));
+ cal_util_convert_lli_to_time_t(NULL, CALENDAR_SVC_STRUCT_GET_LLI(cs, CALS_VALUE_LLI_DTSTART_UTIME), &t);
__cal_list_ug_get_time_text(t, allday, buf, sz);
}
char *location = NULL;
char start[1024] = "Start\n";
char end[1024] = "End\n";
- char buf[1024] = {0};
+ char buf_start[1024] = {0};
+ char buf_end[1024] = {0};
content = _("Check this schedule,please");
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_start_time_text(cs, buf_start, sizeof(buf_start));
- __cal_list_ug_get_end_time_text(cs, buf, sizeof(buf));
- CAL_STRNCAT(end,buf,sizeof end)
+ __cal_list_ug_get_end_time_text(cs, buf_end, sizeof(buf_end));
- snprintf(body, nsize, "%s\n%s\n%s\n%s\n%s",content, title, location, start, end);
+ snprintf(body, nsize, "%s\n%s\n%s\n%s%s\n%s%s",content, title, location, start, buf_start, end, buf_end);
}
-static void __cal_list_ug_add_bundle_event(bundle *b, cal_struct *cs, int idx)
+static void __cal_list_ug_add_bundle_event(service_h 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);
+ int r = service_add_extra_data(b, "BODY", txt_content);
+ c_ret_if(r != SERVICE_ERROR_NONE);
}
-static void __cal_list_ug_add_bundle_vcs(bundle *b, cal_struct *cs, int idx, const char *caller)
+static void __cal_list_ug_add_bundle_vcs(service_h b, cal_struct *cs, int idx)
{
+ c_retm_if(!b, "b is null");
+ c_retm_if(!cs, "cs is null");
+
int cid;
int r;
- char buf[FILENAME_MAX];
- char path[FILENAME_MAX];
+ char buf[FILENAME_MAX] = {0};
+ char path[FILENAME_MAX] = {0};
+ char *vcs_data = NULL;
+ int fd;
+ GList *schedules = NULL;
cid = CALENDAR_SVC_STRUCT_GET_INT(cs, CAL_VALUE_INT_INDEX);
+ c_retm_if(cid < 0, "CALENDAR_SVC_STRUCT_GET_INT return error!");
+
+ schedules = g_list_append(schedules, cs);
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);
+ r = CALENDAR_SVC_WRITE_SCHEDULES(schedules, &vcs_data);
+ c_retm_if(r != CAL_SUCCESS, "CALENDAR_SVC_WRITE_SCHEDULES return error(%d)", r);
+
+ fd = open(path, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+ c_retm_if(fd < 0, "Failed to open file %s.", path);
+
+ if (vcs_data) {
+ r = write(fd, vcs_data, strlen(vcs_data));
+ c_warn_if(r == -1, "Fail to write data to file");
+ }
+
+ if (vcs_data) {
+ free(vcs_data);
+ vcs_data = NULL;
+ }
+
+ fsync(fd);
+ close(fd);
+
+ r = service_add_extra_data(b, buf, path);
+ c_ret_if(r != SERVICE_ERROR_NONE);
}
-static void __cal_list_ug_add_bundle(bundle *b, cal_struct *cs, int idx, struct ug_data *ugd)
+static void __cal_list_ug_add_bundle(service_h 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);
+ __cal_list_ug_add_bundle_vcs(b, cs, idx);
break;
default:
// do nothing
}
}
-static bundle* __cal_list_ug_make_bundle(cal_list_ug_data *p, struct ug_data *ugd)
+static service_h __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");
+ c_retv_if(!p, NULL);
+ c_retv_if(!ugd, 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");
+ service_h b;
+ int r = service_create(&b);
+ c_retv_if(r != SERVICE_ERROR_NONE, 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);
- }
+ Elm_Object_Item* item = elm_genlist_first_item_get(p->genlist);
+ c_retv_if(!item, NULL);
+
+ while (item) {
+
+ cal_list_ug_item_data* item_data = elm_object_item_data_get(item);
+ c_retv_if(!item_data, NULL);
+
+ if (item_data->checked)
+ __cal_list_ug_add_bundle(b, item_data->cs, ++count, ugd);
+
+ item = elm_genlist_item_next_get(item);
}
snprintf(buf, sizeof(buf), "%d", count);
- bundle_add(b, "count", buf);
+
+ r = service_add_extra_data(b, "count", buf);
+ c_retv_if(r != SERVICE_ERROR_NONE, b);
+
+ if (ugd->is_event)
+ r = service_add_extra_data(b, "itemType", "event");
+ else
+ r = service_add_extra_data(b, "itemType", "todo");
+
+ c_retv_if(r != SERVICE_ERROR_NONE, b);
return b;
}
Evas_Object *ly = data;
cal_list_ug_data *p;
struct ug_data *ugd;
- bundle *b;
+ service_h b;
p = CAL_UTIL_GET_PRIV_DATA(ly);
c_retm_if(!p, "p is null");
if (b)
{
ug_send_result(ugd->ug, b);
- bundle_free(b);
+ service_destroy(b);
}
ug_destroy_me(ugd->ug);
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);
+ Elm_Object_Item *item = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL);
+ elm_object_item_disabled_set(item, EINA_TRUE);
+
is_hour24 = ugd->is_hour24;
navi_item = elm_naviframe_item_push(ugd->nv, title, NULL, NULL, ly, NULL);
CAL_FN_START;
cal_list_ug_data *p = data;
- c_retm_if(!p, "priv is null.");
+ c_ret_if(!p);
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);
- }
+// TODO: Show search result
+ __cal_list_ug_update(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);
+ if (p->added_event_count == p->checked_event_count) {
+ if (p->checked_event_count == 0) {
+ elm_check_state_set(p->select_all_checkbox,EINA_FALSE);
+ elm_object_disabled_set(p->select_all_checkbox,EINA_TRUE);
} else {
- elm_check_state_set(p->select_all_check,EINA_TRUE);
+ elm_check_state_set(p->select_all_checkbox,EINA_TRUE);
}
} else {
- elm_check_state_set(p->select_all_check,EINA_FALSE);
+ elm_check_state_set(p->select_all_checkbox,EINA_FALSE);
}
- if (p->genlist_count > 0) {
- elm_object_disabled_set(p->select_all_check,EINA_FALSE);
+ if (p->added_event_count > 0) {
+ elm_object_disabled_set(p->select_all_checkbox,EINA_FALSE);
}
- if (0 < p->num_check)
+ if (0 < p->checked_event_count)
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);
+ __cal_list_ug_update_selection_info(p,p->checked_event_count);
}
static void __cal_list_ug_cancel_button_callback(void *data, Evas_Object *obj, void *event_info)
if (imf_context)
ecore_imf_context_input_panel_hide(imf_context);
- if (0 < p->num_check)
+ if (0 < p->checked_event_count)
elm_object_item_disabled_set(p->bt, EINA_FALSE);
else
elm_object_item_disabled_set(p->bt, EINA_TRUE);
- p->num_check = 0;
+ p->checked_event_count = 0;
EINA_LIST_FOREACH(p->event_list, l, item) {
if (item != NULL && item->checked) {
- p->num_check++;
+ p->checked_event_count++;
}
}
- if (p->genlist_count == p->num_check && p->num_check != 0) {
- elm_check_state_set(p->select_all_check, EINA_TRUE);
+ if (p->added_event_count == p->checked_event_count && p->checked_event_count != 0) {
+ elm_check_state_set(p->select_all_checkbox, EINA_TRUE);
} else {
- elm_check_state_set(p->select_all_check, EINA_FALSE);
+ elm_check_state_set(p->select_all_checkbox, EINA_FALSE);
}
- elm_object_disabled_set(p->select_all_check,EINA_FALSE);
+ elm_object_disabled_set(p->select_all_checkbox,EINA_FALSE);
- __cal_list_ug_add_small_info(p,p->num_check);
+ __cal_list_ug_update_selection_info(p,p->checked_event_count);
}
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) {
+ if (p->checked_event_count <= 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);
+ __cal_list_ug_update_selection_info(p,p->checked_event_count);
}
static void __cal_list_ug_searchbar_clicked_callback(void *data, Evas_Object *obj, void *event_info)