2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "alarm_view_main.h"
18 #include "alarm_fwk_genlist.h"
19 #include "alarm_fwk_util.h"
21 /**********************************************************************
22 ******************Local function declear, extern function declear*************************************
23 ***********************************************************************/
25 static int _alarm_main_genlist_btn_set(struct appdata *ad);
27 static Evas_Object *elm_nocontents_add_ex(Evas_Object * parent);
28 static int _alarm_main_create_notify(struct appdata *ad, AData * alarm);
29 static void _alarm_main_enable_alarm_cb(void *data, Evas_Object * obj,
32 static int _alarm_view_genlist_create_layout(struct appdata *ad);
33 static int _alarm_view_genlist_update_layout(struct appdata *ad);
35 static int _alarm_view_genlist_cb_add(void *data);
36 static int _alarm_view_genlist_cb_del(void *data);
37 static int _alarm_view_genlist_cb_mod(void *data, AData * pAlarmData);
39 static int _alarm_view_genlist_create(void *data);
40 static int _alarm_view_genlist_destroy(void *data);
41 static int _alarm_view_genlist_update(void *data);
42 static int _alarm_view_genlist_cleanup(void *data);
43 /**********************************************************************
44 ******************Global val , static global val*************************************
45 ***********************************************************************/
48 clk_view alarm_view_genlist = {
49 .create = _alarm_view_genlist_create,
50 .destroy = _alarm_view_genlist_destroy,
51 .update = _alarm_view_genlist_update,
52 .cleanup = _alarm_view_genlist_cleanup,
53 .is_create = EINA_FALSE,
54 .layer = MAX_CLK_FWK_VIEW_LAYER,
57 static Eina_Bool g_bIsClickedIcon = EINA_FALSE;
59 static char *_gl_label_get_main(void *data, Evas_Object * obj,
61 static Evas_Object *_gl_icon_get_main(void *data, Evas_Object * obj,
63 static void _gl_sel_main(void *data, Evas_Object * obj, void *event_info);
64 static Elm_Genlist_Item_Class itc_main = {
65 .item_style = STRING_ALARM_ALM_NBEAT,
66 .func.text_get = _gl_label_get_main,
67 .func.content_get = _gl_icon_get_main,
68 .func.state_get = NULL,
69 .func.del = default_alarm_data_list_pack_del,
72 /**********************************************************************
73 ******************Local function ref*************************************
74 ***********************************************************************/
77 static int _alarm_view_genlist_cb_add(void *data)
79 retvm_if(!data, FAILED, "data NULL");
80 struct appdata *ad = (struct appdata *)data;
81 genlist_view *view = ad->view_genlist;
83 #ifdef ALARMAPP_FEATURE_MORNINGCALL
84 int num = view->total_number - 1;
86 int num = view->total_number;
88 retvm_if(num >= MAX_ALARM_NUMBER, FAILED, "num >= MAX_ALARM_NUMBER");
90 ad->is_new = EINA_TRUE;
91 #ifdef ALARMAPP_FEATURE_MORNINGCALL
92 ad->type_enter_pg_setting = TYPE_ENTER_PG_SETTING_NORMAL;
94 set_alarm_default(ad);
95 clk_view_change(&alarm_view_genlist, &alarm_view_setting, data);
100 static int _alarm_view_genlist_cb_del(void *data)
102 return clk_view_change(&alarm_view_genlist, &alarm_view_delete, data);
106 static int _alarm_view_genlist_cb_mod(void *data, AData * pAlarmData)
108 retvm_if(NULL_CHECK(data), FAILED, "data error");
109 retvm_if(NULL_CHECK(pAlarmData), FAILED, "pAlarmData error");
110 struct appdata *ad = (struct appdata *)data;
113 memcpy(ad->alarm, pAlarmData, sizeof(AData));
114 ad->is_new = EINA_FALSE;
115 #ifdef ALARMAPP_FEATURE_MORNINGCALL
116 ad->type_enter_pg_setting =
117 IS_STR_EQUAL(STRING_ALARM_IDS_ALM_BODY_MORNING_CALL,
118 ad->alarm->name) ? TYPE_ENTER_PG_SETTING_MORNINGCALL :
119 TYPE_ENTER_PG_SETTING_NORMAL;
121 clk_view_change(&alarm_view_genlist, &alarm_view_setting, data);
126 static int _alarm_view_genlist_create(void *data)
128 retvm_if(!data, FAILED, "data null");
129 struct appdata *ad = (struct appdata *)data;
132 ad->page = PAGE_ALARM_GENLIST;
133 //create genlist data
134 ad->view_genlist = CALLOC(1, genlist_view);
135 retvm_if(NULL_CHECK(ad->view_genlist), FAILED, "malloc error");
137 ret = _alarm_view_genlist_create_layout(ad);
138 ret |= _alarm_view_genlist_update_layout(ad);
139 alm_show_view(ad, EINA_TRUE);
140 alarm_view_genlist.is_create = EINA_TRUE;
141 alarm_view_genlist.layer = 0;
146 static int _alarm_view_genlist_destroy(void *data)
148 retvm_if(!data, FAILED, "data null");
149 struct appdata *ad = (struct appdata *)data;
150 genlist_view *view = ad->view_genlist;
152 EVAS_OBJECT_DELIF(view->eo_layout);
153 alarm_view_genlist.is_create = EINA_FALSE;
154 FREEIF(ad->view_genlist);
159 static int _alarm_view_genlist_update(void *data)
161 retvm_if(!data, FAILED, "data null");
162 struct appdata *ad = (struct appdata *)data;
165 ad->page = PAGE_ALARM_GENLIST;
166 ret = _alarm_view_genlist_update_layout(ad);
167 alm_show_view(ad, EINA_TRUE);
172 static int _alarm_view_genlist_cleanup(void *data)
178 static int _alarm_main_genlist_btn_set(struct appdata *ad)
180 retvm_if(!ad, FAILED, "ad null");
183 genlist_view *view = ad->view_genlist;
185 #ifdef ALARMAPP_FEATURE_MORNINGCALL
186 int num = view->total_number - 1;
188 int num = view->total_number;
190 bVisible = num < MAX_ALARM_NUMBER ? EINA_TRUE : EINA_FALSE;
191 elm_object_item_disabled_set(view->eci_btn_rht, !bVisible);
192 bVisible = IS_EQUAL(0, num) ? EINA_FALSE : EINA_TRUE;
193 elm_object_item_disabled_set(view->eci_btn_lft, !bVisible);
199 * This function is used to create no contents for alarm
200 * @param parent[in] pointer to Evas_Object
201 * @return when success, return pointer to Evas_Object or NULL if error
205 static Evas_Object *elm_nocontents_add_ex(Evas_Object * parent)
207 retv_if(!parent, NULL);
210 noc = elm_layout_add(parent);
211 elm_object_part_content_set(parent, "elm.swallow.content", noc);
212 elm_layout_theme_set(noc, "layout", "nocontents", "text");
213 elm_object_part_text_set(noc, "elm.text",
214 STRING_ALARM_IDS_ALARM_BODY_NO_ALARMS);
215 elm_object_style_set(noc, "text");
222 * This function is used to create notify
223 * @param ad[in] pointer to struct appdata
224 * @return when success, return SUCCESS or FAILED if error
227 static int _alarm_main_create_notify(struct appdata *ad, AData * alarm)
229 retvm_if(!ad, FAILED, "ad null");
230 genlist_view *view = ad->view_genlist;
232 char text[BUF_SIZE_256] = { 0 };
233 alarm_date_t alarm_date;
234 alarm_util_get_alert_time_offset(alarm, &alarm_date);
235 if (alarm_date.sec > 0) {
238 if (alarm_date.day < 0) {
240 alarm_date.hour += 24;
241 alarm_date.min += 60;
243 if (alarm_date.hour < 0 && alarm_date.day >= 0) {
245 alarm_date.hour += 24;
246 alarm_date.min += 60;
248 if (alarm_date.min < 0 && alarm_date.hour >= 0 && alarm_date.day >= 0) {
250 alarm_date.hour += 23;
251 alarm_date.min += 60;
253 if (alarm_date.day == 0 && alarm_date.hour == 0 && alarm_date.min == 0) {
254 snprintf(text, sizeof(text),
255 _("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_FROM_NOW"),
258 if (alarm_date.day == 0 && alarm_date.hour == 0 && alarm_date.min == 1) {
259 snprintf(text, sizeof(text), _("IDS_ALM_POP_1_MINUTE"));
261 if (alarm_date.day == 0 && alarm_date.hour == 0 && alarm_date.min > 1) {
262 snprintf(text, sizeof(text),
263 _("IDS_ALM_POP_ALARM_SET_FOR_PD_MINUTES_FROM_NOW"),
266 if (alarm_date.day == 0 && alarm_date.hour == 1 && alarm_date.min == 0) {
267 snprintf(text, sizeof(text), _("IDS_ALM_POP_1_HOUR"));
269 if (alarm_date.day == 0 && alarm_date.hour > 1 && alarm_date.min == 0) {
270 snprintf(text, sizeof(text),
271 _("IDS_ALM_POP_ALARM_SET_FOR_PD_HOURS_FROM_NOW"),
274 if (alarm_date.day == 1 && alarm_date.hour == 0 && alarm_date.min == 0) {
275 snprintf(text, sizeof(text), _("IDS_ALM_POP_1_DAY"));
278 if (alarm_date.day > 1 && alarm_date.hour == 0 && alarm_date.min == 0) {
279 snprintf(text, sizeof(text),
280 _("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_FROM_NOW"),
283 if (alarm_date.day == 0 && alarm_date.hour == 1 && alarm_date.min == 1) {
284 snprintf(text, sizeof(text),
286 ("IDS_ALM_POP_ALARM_SET_FOR_1_HOUR_AND_1_MINUTE_FROM_NOW"));
288 if (alarm_date.day == 0 && alarm_date.hour == 1 && alarm_date.min > 1) {
289 snprintf(text, sizeof(text),
291 ("IDS_ALM_POP_ALARM_SET_FOR_1_HOUR_AND_PD_MINUTES_FROM_NOW"),
294 if (alarm_date.day == 0 && alarm_date.hour > 1 && alarm_date.min == 1) {
295 snprintf(text, sizeof(text),
297 ("IDS_ALM_POP_ALARM_SET_FOR_PD_HOURS_AND_1_MINUTE_FROM_NOW"),
300 if (alarm_date.day == 0 && alarm_date.hour > 1 && alarm_date.min > 1) {
301 snprintf(text, sizeof(text),
303 ("IDS_ALM_POP_ALARM_SET_FOR_PD_HOURS_AND_PD_MINUTES_FROM_NOW"),
304 alarm_date.hour, alarm_date.min);
306 if (alarm_date.day == 1 && alarm_date.hour == 0 && alarm_date.min == 1) {
307 snprintf(text, sizeof(text),
309 ("IDS_ALM_POP_ALARM_SET_FOR_1_DAY_AND_1_MINUTE_FROM_NOW"));
311 if (alarm_date.day == 1 && alarm_date.hour == 0 && alarm_date.min > 1) {
312 snprintf(text, sizeof(text),
314 ("IDS_ALM_POP_ALARM_SET_FOR_1_DAY_AND_PD_MINUTES_FROM_NOW"),
317 if (alarm_date.day > 1 && alarm_date.hour == 0 && alarm_date.min == 1) {
318 snprintf(text, sizeof(text),
320 ("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_AND_1_MINUTE_FROM_NOW"),
323 if (alarm_date.day > 1 && alarm_date.hour == 0 && alarm_date.min > 1) {
324 snprintf(text, sizeof(text),
326 ("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_AND_PD_MINUTES_FROM_NOW"),
327 alarm_date.day, alarm_date.min);
329 if (alarm_date.day == 1 && alarm_date.hour == 1 && alarm_date.min == 0) {
330 snprintf(text, sizeof(text),
332 ("IDS_ALM_POP_ALARM_SET_FOR_1_DAY_AND_1_HOUR_FROM_NOW"));
334 if (alarm_date.day == 1 && alarm_date.hour > 1 && alarm_date.min == 0) {
335 snprintf(text, sizeof(text),
337 ("IDS_ALM_POP_ALARM_SET_FOR_1_DAY_AND_PD_HOURS_FROM_NOW"),
340 if (alarm_date.day > 1 && alarm_date.hour == 1 && alarm_date.min == 0) {
341 snprintf(text, sizeof(text),
343 ("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_AND_1_HOUR_FROM_NOW"),
346 if (alarm_date.day > 1 && alarm_date.hour > 1 && alarm_date.min == 0) {
347 snprintf(text, sizeof(text),
349 ("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_AND_PD_HOURS_FROM_NOW"),
350 alarm_date.day, alarm_date.hour);
352 if (alarm_date.day == 1 && alarm_date.hour == 1 && alarm_date.min == 1) {
353 snprintf(text, sizeof(text),
355 ("IDS_ALM_POP_ALARM_SET_FOR_1_DAY_1_HOUR_AND_1_MINUTE_FROM_NOW"));
357 if (alarm_date.day == 1 && alarm_date.hour == 1 && alarm_date.min > 1) {
358 snprintf(text, sizeof(text),
360 ("IDS_ALM_POP_ALARM_SET_FOR_PD_HOURS_AND_PD_MINUTES_FROM_NOW"),
363 if (alarm_date.day == 1 && alarm_date.hour > 1 && alarm_date.min == 1) {
364 snprintf(text, sizeof(text),
366 ("IDS_ALM_POP_ALARM_SET_FOR_1_DAY_PD_HOURS_AND_1_MINUTE_FROM_NOW"),
369 if (alarm_date.day > 1 && alarm_date.hour == 1 && alarm_date.min == 1) {
370 snprintf(text, sizeof(text),
372 ("IDS_ALM_POP_ALARM_SET_FOR_PD_DAY_1_HOUR_AND_1_MINUTE_FROM_NOW"),
376 if (alarm_date.day == 1 && alarm_date.hour > 1 && alarm_date.min > 1) {
377 snprintf(text, sizeof(text), /*_("IDS_ALM_POP_ALARM_SET_FOR_1_DAY_PD_HOURS_AND_PD_MINUTES_FROM_NOW"),*/
378 "Alarm set for 1 day %d hours and %d minutes from now",
379 alarm_date.hour, alarm_date.min);
380 //The string of this case is needed
382 if (alarm_date.day > 1 && alarm_date.hour == 1 && alarm_date.min > 1) {
383 snprintf(text, sizeof(text),
385 ("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_1_HOUR_AND_PD_MINUTES_FROM_NOW"),
386 alarm_date.day, alarm_date.min);
388 if (alarm_date.day > 1 && alarm_date.hour > 1 && alarm_date.min == 1) {
389 snprintf(text, sizeof(text),
391 ("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_PD_HOURS_AND_1_MINUTE_FROM_NOW"),
392 alarm_date.day, alarm_date.hour);
394 if (alarm_date.day > 1 && alarm_date.hour > 1 && alarm_date.min > 1) {
395 snprintf(text, sizeof(text),
397 ("IDS_ALM_POP_ALARM_SET_FOR_PD_DAYS_PD_HOURS_AND_PD_MINUTES_FROM_NOW"),
398 alarm_date.day, alarm_date.hour, alarm_date.min);
401 widget_create_popup(view->eo_layout, text, NULL, 1.0, NULL, NULL);
407 * This function is used to register cb when user click the icon in list item
408 * @param data[in] pointer to data
409 * @param obj[in] pointer to current evas object
410 * @param event_info[in] pointer to event
414 static void _alarm_main_enable_alarm_cb(void *data, Evas_Object * obj,
417 retm_if(!data, "data null");
420 alarm_data_list_pack *adlp = (alarm_data_list_pack *) data;
421 char buf[ALARM_BUF_LEN] = { 0, };
422 AData *cur_alarm = &adlp->alarm_data;
424 g_bIsClickedIcon = EINA_TRUE;
426 cur_alarm->enable = !cur_alarm->enable;
427 //alarm server regist or delete
428 if (cur_alarm->enable) {
429 nErr = alarmapp_mgr_create(cur_alarm);
431 nErr = alarmapp_mgr_delete(cur_alarm);
433 if (nErr != SUCCESS) {
434 cur_alarm->enable = EINA_FALSE;
435 ret = ALM_POPUP_ID_ALARMMGR;
437 nErr = alarmdb_mod_data(cur_alarm);
438 if (IS_EQUAL(-1, nErr)) {
439 ret = ALM_POPUP_ID_ALARMDB;
442 if (!cur_alarm->enable) {
443 snprintf(buf, sizeof(buf), ALARM_ICON_PATH "/%s",
444 STRING_ALARM_GEN_ITEM_58_ALM_ICON_OFF_PNG);
446 snprintf(buf, sizeof(buf), ALARM_ICON_PATH "/%s",
448 count ? STRING_ALARM_GEN_ITEM_58_ALM_ICON_SNOOZE_PNG :
449 STRING_ALARM_GEN_ITEM_58_ALM_ICON_ON_PNG);
451 _alarm_main_create_notify(adlp->ad, cur_alarm);
453 elm_icon_file_set(obj, buf, NULL);
455 vconf_set_int(VCONFKEY_ALARM_STATE, alarmdb_get_num_of_enable());
457 if (ret != SUCCESS) {
458 struct appdata *ad = (struct appdata *)adlp->ad;
459 alm_widget_create_popup(ad->win_main, ret);
465 * This function is used to get label,
466 * as struct Elm_Genlist_Item_Class, struct GenlistItemLabelGetFunc: label_get
467 * @param data[in] pointer to data
468 * @param obj[in] pointer to current evas object
469 * @param part[in] string to current part name
470 * @return when success, return label string or NULL if error
473 static char *_gl_label_get_main(void *data, Evas_Object * obj, const char *part)
475 retvm_if(NULL_CHECK(data), NULL, "data null");
476 char buf[ALARM_BUF_LEN] = { 0, };
477 alarm_data_list_pack *adlp = (alarm_data_list_pack *) data;
478 AData *pAlarmData = &adlp->alarm_data;
480 if (IS_STR_EQUAL(part, STRING_ALARM_ELM_TEXT_TOP)) {
481 char tmp[ALARM_BUF_LEN];
482 snprintf(tmp, sizeof(tmp), "%s",
483 alarm_icu_get_time_str(pAlarmData->stime,
484 pAlarmData->timezone, NULL));
486 (STRING_ALARM_IDS_ALM_BODY_MORNING_CALL,
488 snprintf(buf, sizeof(buf), "%s %s",
489 STRING_ALARM_IDS_ALM_BODY_MORNING_CALL_, tmp);
491 snprintf(buf, sizeof(buf), "%s %s", pAlarmData->name,
494 } else if (IS_STR_EQUAL(part, STRING_ALARM_ELM_TEXT_REPEAT)) {
495 alm_util_get_str_repeat(pAlarmData->repeat_weekly, ',',
503 * This function is used to get icon,
504 * as struct Elm_Genlist_Item_Class, struct GenlistItemIconGetFunc: icon_get
505 * @param data[in] pointer to data
506 * @param obj[in] pointer to current evas object
507 * @param part[in] string to current part name
508 * @return when success, return evas_object* or NULL if error
511 static Evas_Object *_gl_icon_get_main(void *data,
512 Evas_Object * obj, const char *part)
514 retvm_if(NULL_CHECK(data), NULL, "data null");
515 Evas_Object *ic = NULL;
516 char buf[ALARM_BUF_LEN] = { 0, };
517 alarm_data_list_pack *adlp = (alarm_data_list_pack *) data;
518 AData *pAlarmData = &adlp->alarm_data;
520 ic = elm_icon_add(obj);
521 if (IS_STR_EQUAL(part, STRING_ALARM_ELM_SWALLOW_ICON)) {
522 if (!pAlarmData->enable) {
523 snprintf(buf, sizeof(buf), ALARM_ICON_PATH "/%s",
524 STRING_ALARM_GEN_ITEM_58_ALM_ICON_OFF_PNG);
526 snprintf(buf, sizeof(buf), ALARM_ICON_PATH "/%s",
529 STRING_ALARM_GEN_ITEM_58_ALM_ICON_SNOOZE_PNG :
530 STRING_ALARM_GEN_ITEM_58_ALM_ICON_ON_PNG);
533 evas_object_smart_callback_add(ic, "clicked",
534 _alarm_main_enable_alarm_cb, adlp);
535 elm_icon_file_set(ic, buf, NULL);
536 Evas_Object *eo_tmp = elm_icon_object_get(ic);
537 evas_object_repeat_events_set(eo_tmp, EINA_FALSE);
538 evas_object_propagate_events_set(ic, EINA_FALSE);
539 evas_object_show(ic);
545 * This function is used to set cb when item append.
546 * It will be called when user select the item
547 * @param data[in] pointer to data
548 * @param obj[in] pointer to current evas object
549 * @param event_info[in] pointer to event
553 static void _gl_sel_main(void *data, Evas_Object * obj, void *event_info)
555 retm_if(NULL_CHECK(data), "data error");
556 Elm_Object_Item *gli = (Elm_Object_Item *) (event_info);
557 elm_genlist_item_selected_set(gli, 0);
558 Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
560 && (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD), "long focus");
561 if (g_bIsClickedIcon) {
562 g_bIsClickedIcon = EINA_FALSE;
565 alarm_data_list_pack *adlp = (alarm_data_list_pack *) data;
566 struct appdata *ad = (struct appdata *)adlp->ad;
567 _alarm_view_genlist_cb_mod(ad, &adlp->alarm_data);
572 * This function is used to load view: genlist view
573 * @param data[in] pointer to struct appdata
574 * @return when success, return SUCCESS or FAILED if error
577 static int _alarm_view_genlist_create_layout(struct appdata *ad)
579 retvm_if(!ad, FAILED, "ad null");
580 genlist_view *view = ad->view_genlist;
581 retvm_if(!view, FAILED, "view null");
582 view->eo_parent = ad->parent;
583 view->eo_layout = widget_create_layout(view->eo_parent);
584 view->eo_navibar = elm_naviframe_add(view->eo_layout);
586 view->eo_controlbar = widget_create_controlbar(view->eo_navibar, NULL);
587 Elm_Object_Item *eci;
589 view->eci_btn_lft = elm_toolbar_item_append(view->eo_controlbar, ALARM_IMAGE_DEL, NULL, /*S_("IDS_COM_SK_DELETE"), */
590 alarm_view_genlist_btn_cb_del,
592 eci = elm_toolbar_item_append(view->eo_controlbar, NULL,
594 elm_object_item_disabled_set(eci, EINA_TRUE);
596 view->eci_btn_rht = elm_toolbar_item_append(view->eo_controlbar, ALARM_IMAGE_ADD, NULL, /*S_("IDS_COM_SK_ADD"), */
597 alarm_view_genlist_btn_cb_add,
600 elm_toolbar_item_append(view->eo_controlbar, NULL, NULL,
602 elm_object_item_disabled_set(eci, EINA_TRUE);
605 widget_create_button(view->eo_navibar,
606 STRING_ALARM_EDC_NAVIFRM_END_BTN_DEFAULT, NULL,
607 NULL, alarm_view_genlist_btn_cb_back,
609 view->eo_genlist = elm_genlist_add(view->eo_navibar);
610 view->eo_noalarm = elm_nocontents_add_ex(view->eo_navibar);
611 if (alarmdb_get_number_of_data_by_author(ALARM_DB_AUTHOR_ALARM)) {
612 view->eo_content = view->eo_genlist;
614 view->eo_content = view->eo_noalarm;
617 widget_naviframe_push(view->eo_navibar,
618 STRING_ALARM_IDS_COM_BODY_ALARM_S_,
619 view->eo_btn_back, NULL, view->eo_content,
620 "tabbar", view->eo_controlbar);
622 elm_object_part_content_set(view->eo_layout,
623 STRING_ALARM_ELM_SWALLOW_CONTENT,
625 elm_object_focus_allow_set(view->eo_btn_back, EINA_FALSE);
626 ad->navi_bar = view->eo_navibar;
627 ad->layout = view->eo_layout;
633 * This function is used to show and update the genlist view
634 * @param data[in] pointer to struct appdata
635 * @return when success, return SUCCESS or FAILED if error
638 static int _alarm_view_genlist_update_layout(struct appdata *ad)
640 retvm_if(!ad, FAILED, "ad null");
641 genlist_view *view = ad->view_genlist;
642 retvm_if(!view, FAILED, "view is null");
644 elm_genlist_clear(view->eo_genlist);
645 view->total_number = 0;
647 ADList *list = alarmapp_db_genlist_get_with_morningcall(SORT_BY_TIME);
648 Evas_Object *eo_new_content =
649 list ? view->eo_genlist : view->eo_noalarm;
650 if (!IS_EQUAL(eo_new_content, view->eo_content)) {
651 view->eo_content = eo_new_content;
652 elm_object_item_part_content_unset(view->ei_naviframe,
654 elm_object_item_part_content_set(view->ei_naviframe,
655 "default", view->eo_content);
658 _alarm_main_genlist_btn_set(ad);
664 for (cur = list, index = 0; cur; cur = cur->next, ++index) {
665 alarm_data_list_pack *adlp =
666 alarm_create_genlist_item_data(ad, NULL, EINA_FALSE, index,
668 retvm_if(NULL_CHECK(adlp), FAILED, "malloc is null");
670 elm_genlist_item_append(view->eo_genlist, &itc_main, adlp,
671 NULL, ELM_GENLIST_ITEM_NONE,
673 ++view->total_number;
675 _alarm_main_genlist_btn_set(ad);
676 alarmdb_free_data_list(list);
680 /**********************************************************************
681 ******************Global function ref*************************************
682 ***********************************************************************/
686 * This function is used to del button cb: click
687 * @param data[in] pointer to data
688 * @param obj[in] pointer to current evas object
689 * @param event_info[in] pointer to event
693 void alarm_view_genlist_btn_cb_del(void *data, Evas_Object * obj,
696 _alarm_view_genlist_cb_del(data);
701 * This function is used to add button cb:click
702 * @param data[in] pointer to data
703 * @param obj[in] pointer to current evas object
704 * @param event_info[in] pointer to event
708 void alarm_view_genlist_btn_cb_add(void *data, Evas_Object * obj,
711 _alarm_view_genlist_cb_add(data);
715 void alarm_view_genlist_btn_cb_back(void *data, Evas_Object * obj,
719 Evas_Object *win = (Evas_Object *) data;