3 * Copyright 2012 Samsung Electronics Co., Ltd
5 * Licensed under the Flora License, Version 1.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
22 #include "cld-images.h"
23 #include "edit-view.h"
25 #define MAX_TIME_LENGTH 128
29 Evas_Object *ly; // self
33 Evas_Object *tabbar_button;
35 Evas_Object *title; /* title layout */
36 Evas_Object *title_landscape; /* title layout */
38 Ecore_Timer *down_timer;
39 double intval, intval_init;
43 cal_quick_add *quick_add;
45 Evas_Object *ctx_tabbar;
47 Evas_Object *select_date;
56 Evas_Object* (*create)(struct appdata *ad, Evas_Object *ly);
57 void (*update)(Evas_Object *ly);
58 Elm_Object_Item *item;
62 Elm_Object_Item *it; // Genlist Item pointer
63 cal_main_data *main_data;
64 _calendar_task_sort_type sort_type;
65 }cal_main_view_by_item_data;
68 static struct _tabbar_item tabbar_items[] = {
72 CAL_UTIL_DATE_FORMAT_5,
80 CAL_UTIL_DATE_FORMAT_6,
81 cal_month_create_view,
82 cal_month_update_view,
87 N_("IDS_CLD_BODY_WEEK"),
88 CAL_UTIL_DATE_FORMAT_6,
96 CAL_UTIL_DATE_FORMAT_7,
105 cal_list_create_view,
106 cal_list_update_view,
113 cal_todo_create_view,
114 cal_todo_update_view,
118 static char *__cal_main_get_view_by_label(void *data, Evas_Object *obj, const char *part);
119 static void __cal_main_get_view_by_item_delete(void *data, Evas_Object *obj);
120 static void __cal_main_set_title_text_naviframe( struct appdata *ad, enum cld_view v);
122 static Elm_Genlist_Item_Class itc_1text_item = {
123 .item_style = "1text",
124 .func.text_get = __cal_main_get_view_by_label,
125 .func.del = __cal_main_get_view_by_item_delete,
127 static void __cal_main_today_button_callback(void *data, Evas_Object* obj, void* event_info);
129 static Eina_Bool __cal_main_ug_callback(void *data)
131 c_retv_if(!data, EINA_FALSE);
133 cal_main_data *p = data;
135 elm_object_disabled_set(p->ad->new_event_button, EINA_FALSE);
139 if (p->ad->current_tab == CV_DAY)
140 cal_day_change_content_display_status(p->content);
145 static void __cal_main_create_button_callback(void *data, Evas_Object *obj, void *event_info)
150 Evas_Object *ly = data;
152 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ly);
153 c_ret_if(!main_data);
155 struct appdata *ad = main_data->ad;
161 calendar_record_h record = NULL;
162 calendar_error_e error = CALENDAR_ERROR_NONE;
164 if(ad->tapbar_focus_view == CV_TODO)
166 error = calendar_record_create(_calendar_todo._uri, &record);
170 int create_event_mode = 0;
171 int ret = vconf_get_int(CAL_VCONFKEY_CREATE_EVENT_MODE, &create_event_mode);
172 c_warn_if(ret, "vconf_get_int(CAL_VCONFKEY_CREATE_EVENT_MODE, &value) is failed");
174 if (create_event_mode)
176 error = calendar_record_create(_calendar_event._uri, &record);
181 error = calendar_record_create(_calendar_todo._uri, &record);
187 c_retm_if(error != CALENDAR_ERROR_NONE, "calendar_record_create() is failed(%x)", error);
189 cal_edit_create_view(main_data->ad, record, __cal_main_ug_callback, main_data);
191 if (main_data->ad->current_tab == CV_DAY)
192 cal_day_change_content_display_status(main_data->content);
194 elm_object_disabled_set(obj, EINA_TRUE);
197 static Eina_Bool __cal_main_popup_idler_callback(void *data)
199 c_retv_if(!data, ECORE_CALLBACK_CANCEL);
201 cal_main_data *p = data;
204 evas_object_del(p->popup);
210 return ECORE_CALLBACK_CANCEL;
213 static void __cal_main_view_by_popup_list_sel(void *data, Evas_Object *obj, void *event_info)
215 c_retm_if(!data, "data is null");
216 c_retm_if(!obj, "obj is null");
218 cal_main_view_by_item_data *item_data = data;
219 cal_main_data *main_data = item_data->main_data;
220 c_retm_if(!main_data, "main_data is null");
222 Elm_Object_Item *item = elm_genlist_selected_item_get(obj);
223 c_retm_if(!item, "elm_genlist_selected_item_get() returned null");
225 elm_genlist_item_selected_set(item, EINA_FALSE);
226 //main_data->ad->todo_sort_type = item_data->order_type;
228 if (main_data->idler) {
229 ecore_idler_del(main_data->idler);
230 main_data->idler = NULL;
233 main_data->idler = ecore_idler_add(__cal_main_popup_idler_callback, main_data);
235 cal_todo_update_view(main_data->content);
238 static void __cal_main_get_view_by_item_delete(void *data, Evas_Object *obj)
240 c_retm_if(!data, "data is null");
241 cal_main_view_by_item_data *item_data = data;
246 static char *__cal_main_get_view_by_label(void *data, Evas_Object *obj, const char *part)
248 c_retvm_if(!data, NULL, "data is null");
250 cal_main_view_by_item_data *item_data = data;
251 if (!CAL_STRCMP(part, "elm.text"))
253 if (item_data->sort_type == _CALENDAR_TASK_SORT_TYPE_DUEDATE_ASC) {
254 return strdup(C_("IDS_CLD_BODY_DUE_DATE"));
255 } else if (item_data->sort_type == _CALENDAR_TASK_SORT_TYPE_PRIORITY_ASC) {
256 return strdup(C_("IDS_CLD_BODY_PRIORITY"));
257 } else if (item_data->sort_type == _CALENDAR_TASK_SORT_TYPE_STATUS_ASC) {
258 return strdup(C_("IDS_CST_POP_STATUS"));
266 static void __cal_main_view_popup_append_genlist_item(Evas_Object *genlist, cal_main_data *main_data, _calendar_task_sort_type sort_type)
268 c_retm_if(!main_data, "main_data is null");
269 c_retm_if(!genlist, "genlist is null");
271 cal_main_view_by_item_data *item_data = calloc(1, sizeof(cal_main_view_by_item_data));
272 c_retm_if(!item_data, "item_data is null.");
273 item_data->main_data = main_data;
274 item_data->sort_type = sort_type;
275 item_data->it = elm_genlist_item_append(genlist, &itc_1text_item, item_data, NULL, ELM_GENLIST_ITEM_NONE, __cal_main_view_by_popup_list_sel, item_data);
276 c_retm_if(!item_data->it, "item_data->it is null");
279 static Evas_Object *__cal_main_view_by_popup(void *data)
281 c_retvm_if(!data, NULL, "data is null");
282 cal_main_data *main_data = (cal_main_data *)data;
284 Evas_Object *popup = NULL;
285 Evas_Object *genlist = NULL;
287 popup = cal_util_add_popup(main_data->ad->win, "liststyle", C_("IDS_CLD_BODY_VIEW"), NULL,
288 NULL, NULL, S_("IDS_COM_BODY_CLOSE"), NULL);
289 c_retvm_if(!popup, NULL, "popup is null");
291 genlist = elm_genlist_add(popup);
293 ERR("elm_genlist_add(popup) returned null");
294 evas_object_del(popup);
298 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
299 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
301 __cal_main_view_popup_append_genlist_item(genlist, main_data, _CALENDAR_TASK_SORT_TYPE_DUEDATE_ASC);
303 __cal_main_view_popup_append_genlist_item(genlist, main_data, _CALENDAR_TASK_SORT_TYPE_PRIORITY_ASC);
305 __cal_main_view_popup_append_genlist_item(genlist, main_data, _CALENDAR_TASK_SORT_TYPE_STATUS_ASC);
307 elm_object_content_set(popup, genlist);
308 evas_object_show(genlist);
313 static void __cal_main_view_by_button_callback(void *data, Evas_Object *obj, void *event_info)
315 c_retm_if(!data, "data is null");
316 c_retm_if(!obj, "obj is null");
318 evas_object_del(obj);
320 cal_main_data *main_data = data;
322 Evas_Object *popup = __cal_main_view_by_popup(main_data);
323 c_retm_if(!popup, "__cal_main_view_by_popup returns null");
325 main_data->popup = popup;
327 evas_object_show(popup);
330 static void __cal_main_delete_button_callback(void *data, Evas_Object *obj, void *event_info)
332 c_retm_if(!data, "data is null");
333 c_retm_if(!obj, "obj is null");
335 evas_object_del(obj);
337 cal_main_data *main_data = data;
339 Evas_Object *ly_delete = cal_list_delete_view_create(main_data->ly,main_data->ad);
340 c_retm_if(!ly_delete, "ly_delete is null");
342 cal_list_delete_update_view(ly_delete);
345 static void __cal_main_search_button_callback(void *data, Evas_Object *obj, void *event_info)
347 c_retm_if(!data, "data is null");
348 c_retm_if(!obj, "obj is null");
350 evas_object_del(obj);
352 cal_main_data *main_data = data;
354 Evas_Object *ly_search = cal_search_list_create_list(main_data->ad, main_data->ly);
355 c_retm_if(!ly_search, "ly_search is null");
357 cal_search_list_update_list(ly_search);
360 static void __cal_main_account_button_callback(void *data, Evas_Object *obj, void *ei)
362 c_retm_if(!data, "data is null");
363 c_retm_if(!obj, "obj is null");
365 evas_object_del(obj);
367 cal_main_data *main_data = data;
369 cal_account_create_view(main_data->ad, main_data->ly);
372 void cal_main_update_title_text(struct appdata *ad)
375 c_ret_if(!ad->main_navi_item);
377 if (ad->current_view == CV_UNKNOWN)
378 ad->current_view = ad->current_tab;
380 Elm_Object_Item* title = ad->main_navi_item;
381 enum cld_view v = ad->current_view;
384 elm_object_item_part_text_set(title, "default", S_("IDS_COM_BODY_ALL"));
385 } else if (v == CV_TODO) {
386 elm_object_item_part_text_set(title, "default", C_("IDS_CLD_BODY_TASK"));
387 } else if (v == CV_WEEK) {
388 cal_util_set_item_time_week_text(title, "default", _(tabbar_items[v].title), NULL, &ad->base_tm, ad->wday_start);
389 } else if (v == CV_YEAR || v == CV_MONTH || v == CV_DAY){
390 cal_util_set_item_time_text(title, "default", _(tabbar_items[v].title), NULL, &ad->base_tm);
394 static inline void __cal_main_update_title(Evas_Object *ly, enum cld_view v)
398 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ly);
399 c_ret_if(!main_data);
401 struct appdata *ad = main_data->ad;
404 if (!ad->is_landscape_mode && tabbar_items[v].title) {
405 edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(ly), "show,title", "prog");
407 edje_object_signal_emit(CAL_UTIL_GET_EDJ_DATA(ly), "hide,title", "prog");
412 static void __cal_main_create_content(Evas_Object *ly, cal_main_data *main_data, enum cld_view v)
414 c_retm_if(!ly, "ly is null");
415 c_retm_if(!main_data, "main_data is null");
418 struct appdata *ad = main_data->ad;
420 if (main_data->content) {
421 elm_object_part_content_unset(ly, "cont");
422 cal_util_delete_evas_object(&main_data->content);
425 if (tabbar_items[v].create) {
426 main_data->content = tabbar_items[v].create(ad, ly);
427 c_ret_if(!main_data->content);
430 elm_object_part_content_set(ly, "cont", main_data->content);
433 static inline int __cal_main_update_tm(struct tm *t, enum cld_view v, int delta)
435 c_retvm_if(!t, -1, "t is null");
441 r = cal_util_update_tm_year(t, delta);
444 r = cal_util_update_tm_month(t, delta);
447 r = cal_util_update_tm_day(t, delta * 7);
450 r = cal_util_update_tm_day(t, delta);
457 r = -1; // stop timer
463 static int __cal_main_update_content(cal_main_data *main_data)
465 c_retvm_if(!main_data, -1, "main_data is null");
467 struct appdata *ad = main_data->ad;
470 enum cld_view v = main_data->ad->current_tab;
472 struct tm tmp = ad->base_tm;
473 int r = __cal_main_update_tm(&tmp, v, main_data->delta);
474 c_retv_if(r == -1, -1);
478 __cal_main_set_title_text_naviframe(ad, v);
480 if (tabbar_items[v].update)
481 tabbar_items[v].update(main_data->content);
483 ad->is_update_view = EINA_FALSE;
488 static void __cal_main_toolbar_create_new_event_button(struct appdata *ad)
490 if (!ad->new_event_button) {
492 ad->new_event_button = cal_util_add_toolbar_button(ad->naviframe, "toolbar_button1", S_("IDS_COM_BODY_CREATE"), __cal_main_create_button_callback, ad->main);
496 void cal_main_change_view(Evas_Object *ly, enum cld_view v)
501 c_ret_if(v < CV_YEAR || v > CV_TODO);
503 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ly);
504 c_ret_if(!main_data);
506 struct appdata *ad = main_data->ad;
509 ad->current_view = v;
511 main_data->ad->previous_tab = main_data->ad->current_tab;
512 main_data->ad->current_tab = v;
514 __cal_main_create_content(ly, main_data, v);
516 __cal_main_update_title(ly, v);
518 __cal_main_update_content(main_data);
523 static bool __cal_main_is_same_day(const struct tm* date1, const struct tm* date2)
526 date1->tm_year == date2->tm_year &&
527 date1->tm_mon == date2->tm_mon &&
528 date1->tm_mday == date2->tm_mday;
531 static void __cal_main_set_base_tm(cal_main_data *main_data)
533 c_ret_if(!main_data);
535 struct appdata *ad = main_data->ad;
536 c_retm_if(!ad, "ad is null");
538 if (ad->current_view == CV_LIST) {
540 ad->base_tm = ad->today_tm;
541 if (ad->today_item != NULL)
542 cal_list_scroll_today(ad);
544 __cal_main_update_content(main_data);
548 if (!__cal_main_is_same_day(&ad->base_tm, &ad->today_tm)) {
549 ad->base_tm = ad->today_tm;
550 __cal_main_update_content(main_data);
556 static void __cal_main_calendar_db_changed_callback(const char* view_uri, void* user_data)
558 cal_main_update_view(user_data);
561 void cal_main_add_db_changed_callback(struct appdata * ad)
567 calendar_error_e error = CALENDAR_ERROR_NONE;
569 error = calendar_db_add_changed_cb(_calendar_event._uri, __cal_main_calendar_db_changed_callback, ad);
570 c_warn_if(error != CALENDAR_ERROR_NONE, "calendar_db_add_changed_cb() is failed(%x)", error);
572 error = calendar_db_add_changed_cb(_calendar_todo._uri, __cal_main_calendar_db_changed_callback, ad);
573 c_warn_if(error != CALENDAR_ERROR_NONE, "calendar_db_add_changed_cb() is failed(%x)", error);
575 error = calendar_db_add_changed_cb(_calendar_book._uri, __cal_main_calendar_db_changed_callback, ad);
576 c_warn_if(error != CALENDAR_ERROR_NONE, "calendar_db_add_changed_cb() is failed(%x)", error);
581 void cal_main_remove_db_changed_callback(struct appdata * ad)
587 calendar_error_e error = CALENDAR_ERROR_NONE;
589 error = calendar_db_remove_changed_cb(_calendar_event._uri, __cal_main_calendar_db_changed_callback, ad);
590 c_warn_if(error != CALENDAR_ERROR_NONE, "calendar_db_remove_changed_cb() is failed(%x)", error);
592 error = calendar_db_remove_changed_cb(_calendar_todo._uri, __cal_main_calendar_db_changed_callback, ad);
593 c_warn_if(error != CALENDAR_ERROR_NONE, "calendar_db_remove_changed_cb() is failed(%x)", error);
595 error = calendar_db_remove_changed_cb(_calendar_book._uri, __cal_main_calendar_db_changed_callback, ad);
596 c_warn_if(error != CALENDAR_ERROR_NONE, "calendar_db_remove_changed_cb() is failed(%x)", error);
601 static void __cal_main_delete_quick_add(cal_quick_add *quick_add)
603 c_retm_if(!quick_add, "quick_add is null");
605 if (quick_add->popup)
606 evas_object_del(quick_add->popup);
608 if (quick_add->hold_timer)
609 ecore_timer_del(quick_add->hold_timer);
614 static void __cal_main_delete_layout(void *data, Evas *e, Evas_Object *obj, void *ei)
620 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(obj);
621 c_ret_if(!main_data);
623 cal_main_remove_db_changed_callback(main_data->ad);
625 if (main_data->down_timer)
626 ecore_timer_del(main_data->down_timer);
628 __cal_main_delete_quick_add(main_data->quick_add);
630 if (main_data->popup) {
631 evas_object_del(main_data->popup);
632 main_data->popup = NULL;
635 if (main_data->select_date) {
636 evas_object_del(main_data->select_date);
637 main_data->select_date = NULL;
640 struct appdata *ad = main_data->ad;
650 static Evas_Object *__cal_main_create_main_layout(struct appdata *ad)
654 c_retv_if(!ad, NULL);
657 cal_main_data *main_data = calloc(1, sizeof(cal_main_data));
658 c_retv_if(!main_data, NULL);
660 Evas_Object *ly = cal_util_add_layout(ad->naviframe, "main");
668 main_data->intval_init = 0.5;
669 main_data->ad->bt_delete = NULL;
670 evas_object_data_set(ly, "priv", main_data);
672 evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, __cal_main_delete_layout, NULL);
674 c_retv_if(r != 0, NULL);
681 static void __cal_main_today_button_callback(void *data, Evas_Object* obj, void* event_info)
683 c_retm_if(!data, "data is null");
685 __cal_main_set_base_tm(data);
688 static void __cal_main_back_button_clicked_callback(void *data, Evas_Object *obj, void *event_info)
692 c_retm_if(!data, "data is null");
694 struct appdata* ad = (struct appdata*)data;
696 elm_win_lower(ad->win);
699 static void __cal_main_ctx_popup_hide_callback(void *data, Evas_Object *obj, void *ei)
703 cal_main_data* main_data = data;
705 main_data->ctx_tabbar= NULL;
707 evas_object_del(obj);
710 static void __cal_main_ctx_item_selected_callback(void *data, Evas_Object *obj, void *ei)
715 cal_main_data* main_data = CAL_UTIL_GET_PRIV_DATA(obj);
716 c_ret_if(!main_data);
718 struct appdata *ad = main_data->ad;
721 enum cld_view view = (enum cld_view)data;
723 cal_main_change_view(main_data->ly, view);
725 evas_object_del(obj);
726 main_data->ctx_tabbar = NULL;
729 static void __cal_main_add_tabbar_ctx(cal_main_data *main_data)
731 c_ret_if(!main_data);
732 c_ret_if(!main_data->tabbar_button);
736 Evas_Object *ctx = main_data->ctx_tabbar;
739 evas_object_del(ctx);
741 main_data->ctx_tabbar = elm_ctxpopup_add(main_data->ad->naviframe);
742 c_ret_if(!main_data->ctx_tabbar);
744 ctx = main_data->ctx_tabbar;
746 evas_object_data_set(ctx, "priv", main_data);
748 evas_object_smart_callback_add(ctx, "dismissed", __cal_main_ctx_popup_hide_callback, main_data);
749 elm_ctxpopup_item_append(ctx, C_("IDS_CLD_BODY_YEAR"), NULL, __cal_main_ctx_item_selected_callback, (void *)CV_YEAR);
750 elm_ctxpopup_item_append(ctx, C_("IDS_CLD_BODY_VIEWBY_MONTH"), NULL, __cal_main_ctx_item_selected_callback, (void *)CV_MONTH);
751 elm_ctxpopup_item_append(ctx, C_("IDS_CLD_BODY_WEEK"), NULL, __cal_main_ctx_item_selected_callback, (void *)CV_WEEK);
752 elm_ctxpopup_item_append(ctx, C_("IDS_CLD_BODY_DAY"), NULL, __cal_main_ctx_item_selected_callback, (void *)CV_DAY);
753 elm_ctxpopup_item_append(ctx, C_("IDS_CLD_BODY_LIST"), NULL, __cal_main_ctx_item_selected_callback, (void *)CV_LIST);
754 elm_ctxpopup_item_append(ctx, C_("IDS_CLD_BODY_TASK"), NULL, __cal_main_ctx_item_selected_callback, (void *)CV_TODO);
756 evas_object_geometry_get(main_data->tabbar_button, &x, &y, &w, &h);
758 evas_object_move(ctx, x + w/2 , y+(4*h/5));
760 elm_ctxpopup_direction_priority_set(ctx, ELM_CTXPOPUP_DIRECTION_DOWN,
761 ELM_CTXPOPUP_DIRECTION_RIGHT,
762 ELM_CTXPOPUP_DIRECTION_LEFT,
763 ELM_CTXPOPUP_DIRECTION_UP);
764 evas_object_show(ctx);
767 static void __cal_main_tabbar_button_callback(void *data, Evas_Object *obj, void *event_info)
772 cal_main_data *main_data = data;
774 __cal_main_add_tabbar_ctx(main_data);
777 static void __cal_main_add_tabbar_button( struct appdata *ad)
782 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ad->main);
783 c_ret_if(!main_data);
785 Evas_Object *tabbar_button = cal_util_add_toolbar_button2(ad->naviframe, "title_right_btn", CAL_IMAGES_CHANGE_VIEW, __cal_main_tabbar_button_callback, main_data);
786 c_ret_if(!tabbar_button);
788 main_data->tabbar_button = tabbar_button;
791 static void __cal_main_set_title_text_naviframe( struct appdata *ad, enum cld_view v)
797 cal_main_update_title_text(ad);
802 static void __cal_main_add_today_button( struct appdata *ad)
807 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ad->main);
808 c_ret_if(!main_data);
810 Evas_Object *today_button = cal_util_add_toolbar_button2(ad->naviframe, "title_left_btn", CAL_IMAGES_TODAY, __cal_main_today_button_callback, main_data);
812 evas_object_data_set(today_button, "priv", main_data);
815 static void __cal_main_more_button_callback(void *data, Evas_Object *obj, void *event_info)
817 c_retm_if(!data, "data is null");
818 c_retm_if(!obj, "obj is null");
820 Evas_Object *main_layout = data;
822 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(main_layout);
824 struct appdata *ad = main_data->ad;
827 Evas_Object *ctx_popup = elm_ctxpopup_add(ad->naviframe);
828 c_ret_if(!ctx_popup);
830 elm_ctxpopup_direction_priority_set(ctx_popup, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UP);
832 ad->bt_delete = elm_ctxpopup_item_append(ctx_popup, S_("IDS_COM_BODY_DELETE"), NULL, __cal_main_delete_button_callback, main_data);
833 c_ret_if(!ad->bt_delete);
835 if (main_data->ad->current_tab == CV_TODO) {
836 ad->bt_view = elm_ctxpopup_item_append(ctx_popup, C_("IDS_CLD_BODY_VIEW"), NULL, __cal_main_view_by_button_callback, main_data);
837 c_ret_if(!ad->bt_view);
839 ad->bt_search = NULL;
841 ad->bt_search = elm_ctxpopup_item_append(ctx_popup, S_("IDS_COM_BODY_SEARCH"), NULL, __cal_main_search_button_callback, main_data);
842 c_ret_if(!ad->bt_search);
847 Elm_Object_Item *item = elm_ctxpopup_item_append(ctx_popup, C_("IDS_CLD_BODY_CALENDARS"), NULL, __cal_main_account_button_callback, main_data);
850 Evas_Coord_Rectangle r = {0};
852 cal_util_get_geometry(&r, obj);
854 evas_object_move(ctx_popup, r.x + r.w/2, r.y + r.h/2);
856 evas_object_show(ctx_popup);
859 static void __cal_main_set_naviframe( struct appdata *ad)
865 Evas_Object *back_button = elm_button_add(ad->naviframe);
866 c_ret_if(!back_button);
868 evas_object_smart_callback_add(back_button, "clicked", __cal_main_back_button_clicked_callback, ad);
870 elm_object_style_set(back_button, "naviframe/end_btn/default");
872 ad->main_navi_item = elm_naviframe_item_push(ad->naviframe, NULL, back_button, NULL, ad->main, NULL);
874 __cal_main_add_tabbar_button(ad);
876 __cal_main_add_today_button(ad);
878 Evas_Object *more_button = cal_util_add_toolbar_button(ad->naviframe, "toolbar_more_btn", NULL, __cal_main_more_button_callback, ad->main);
879 elm_object_style_set(more_button, "naviframe/more/default");
881 __cal_main_toolbar_create_new_event_button(ad);
886 void cal_main_create_view(struct appdata *ad)
890 c_retm_if(!ad, "data is null");
892 c_retm_if(ad->request_view < CV_YEAR && ad->request_view > CV_DETAIL, "request_view is invalid");
894 ad->main = __cal_main_create_main_layout(ad);
895 c_retm_if(!ad->main, "ad->main is null");
897 cal_main_add_db_changed_callback(ad);
899 cal_main_change_view(ad->main, ad->request_view);
901 __cal_main_set_naviframe(ad);
903 __cal_main_set_title_text_naviframe(ad, ad->request_view);
908 static void __cal_main_set_first_day(struct appdata *ad)
910 c_retm_if(!ad, "ad is null");
913 r = vconf_get_int(CAL_VCONFKEY_FIRST_DAY_OF_WEEK, &val);
917 ad->wday_start = val;
920 void cal_main_update_view(void *data)
926 struct appdata* ad = data;
930 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ad->main);
931 c_ret_if(!main_data);
933 if (ad->current_view == CV_UNKNOWN)
934 ad->current_view = main_data->ad->current_tab;
936 __cal_main_set_first_day(ad);
938 __cal_main_create_content(main_data->ly, main_data, main_data->ad->current_tab);
940 __cal_main_update_content(main_data);
942 __cal_main_update_title(ad->main, main_data->ad->current_tab);
947 static void __cal_main_update_toolbar(cal_main_data *main_data)
949 c_ret_if(!main_data);
950 c_ret_if(!main_data->ad);
952 struct appdata* ad = main_data->ad;
955 if (ad->is_landscape_mode) {
956 elm_object_style_set(ad->cbar, "item_horizontal");
958 elm_object_style_set(ad->cbar, "default");
962 void cal_main_rotation(void *data)
968 struct appdata* ad = data;
972 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ad->main);
973 c_ret_if(!main_data);
975 if (main_data->ad->current_tab != CV_LIST && main_data->ad->current_tab != CV_TODO) {
976 __cal_main_create_content(main_data->ly, main_data, main_data->ad->current_tab);
978 __cal_main_update_content(main_data);
981 __cal_main_update_title(ad->main, main_data->ad->current_tab);
983 __cal_main_update_toolbar(main_data);
986 void cal_main_set_main_content(void *data, Evas_Object *content)
991 struct appdata* ad = data;
995 cal_main_data *main_data = CAL_UTIL_GET_PRIV_DATA(ad->main);
996 c_ret_if(!main_data);
998 main_data->content = content;