upload codes for TIZEN 2.0
[apps/home/clock.git] / alarm / src / alarm_view_del.c
1 /*
2 *
3 * Copyright 2012  Samsung Electronics Co., Ltd
4 *
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
8 *
9 *    http://www.tizenopensource.org/license
10 *
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.
16 *
17 */
18
19 #include "alarm_view_del.h"
20 #include "alarm_fwk_util.h"
21 /**********************************************************************
22 ******************define, struct ,typedef, union, enum, global val *************************************
23 ***********************************************************************/
24 typedef enum {
25         NOTIFY_TYPE_SELECTED = 0,
26         NOTIFY_TYPE_DELETED,
27 } NOTIFY_TYPE;
28
29 /**********************************************************************
30 ******************Local function declear, extern function declear*************************************
31 ***********************************************************************/
32
33 static int _alarm_delete_btn_set(struct appdata *ad);
34 //
35 static int _alarm_delete_create_notify(struct appdata *ad, NOTIFY_TYPE type,
36                                        int count);
37 static Evas_Object *_alarm_delete_create_selectall(struct appdata *ad);
38 static void _alarm_delete_selectall_clicked_cb(void *data, Evas_Object * obj,
39                                                const char *emission,
40                                                const char *source);
41 //
42 static int _alarm_view_delete_create_layout(struct appdata *ad);
43 static int _alarm_view_delete_update_layout(struct appdata *ad);
44 static int _alarm_view_delete_delete_alarm(struct appdata *ad);
45 //callback
46 static int _alarm_view_delete_cb_can(void *data);
47 static int _alarm_view_delete_cb_del(void *data);
48 //base fun
49 static int _alarm_view_delete_create(void *data);
50 static int _alarm_view_delete_destroy(void *data);
51 static int _alarm_view_delete_update(void *data);
52 static int _alarm_view_delete_cleanup(void *data);
53 /**********************************************************************
54 ******************Global val , static global val*************************************
55 ***********************************************************************/
56
57 //
58 clk_view alarm_view_delete = {
59         .create = _alarm_view_delete_create,
60         .destroy = _alarm_view_delete_destroy,
61         .update = _alarm_view_delete_update,
62         .cleanup = _alarm_view_delete_cleanup,
63         .is_create = EINA_FALSE,
64         .layer = MAX_CLK_FWK_VIEW_LAYER,
65 };
66
67 static char *_gl_label_get_del(void *data, Evas_Object * obj, const char *part);
68 static Evas_Object *_gl_icon_get_del(void *data, Evas_Object * obj,
69                                      const char *part);
70 static Eina_Bool _gl_repeatday_state_get_del(const void *data,
71                                              Evas_Object * obj,
72                                              const char *part);
73 static void _gl_sel_del(void *data, Evas_Object * obj, void *event_info);
74 static Elm_Genlist_Item_Class itc_del = {
75         .item_style = STRING_ALARM_DEL_NBEAT,
76         .func.text_get = _gl_label_get_del,
77         .func.content_get = _gl_icon_get_del,
78         .func.state_get = _gl_repeatday_state_get_del,
79         .func.del = default_alarm_data_list_pack_del,
80 };
81
82 /**********************************************************************
83 ******************Local function ref*************************************
84 ***********************************************************************/
85
86 //
87 static int _alarm_view_delete_cb_can(void *data)
88 {
89         return clk_view_change(&alarm_view_delete, &alarm_view_genlist, data);
90 }
91
92 //
93 static int _alarm_view_delete_cb_del(void *data)
94 {
95         retvm_if(!data, FAILED, "data null");
96         struct appdata *ad = (struct appdata *)data;
97         int ret = SUCCESS;
98         delete_view *view = ad->view_delete;
99
100         ret = _alarm_view_delete_delete_alarm(ad);
101         if (IS_EQUAL(0, view->total_number)) {
102                 ret |=
103                     clk_view_change(&alarm_view_delete, &alarm_view_genlist,
104                                     data);
105         }
106         return ret;
107 }
108
109 //
110 static int _alarm_view_delete_create(void *data)
111 {
112         retvm_if(!data, FAILED, "data null");
113         struct appdata *ad = (struct appdata *)data;
114         int ret = SUCCESS;
115         CLK_FUN_BEG();
116
117         ad->page = PAGE_ALARM_DELETE;
118         //create delete data
119         ad->view_delete = CALLOC(1, delete_view);
120         retvm_if(NULL_CHECK(ad->view_delete), FAILED, "malloc error");
121
122         ret = _alarm_view_delete_create_layout(ad);
123         ret |= _alarm_view_delete_update_layout(ad);
124         alm_show_view(ad, EINA_TRUE);
125         alarm_view_delete.is_create = EINA_TRUE;
126         alarm_view_delete.layer = 1;
127         CLK_FUN_END();
128         return ret;
129 }
130
131 //
132 static int _alarm_view_delete_destroy(void *data)
133 {
134         retvm_if(!data, FAILED, "data null");
135         CLK_FUN_BEG();
136         struct appdata *ad = (struct appdata *)data;
137         delete_view *view = ad->view_delete;
138
139         EVAS_OBJECT_DELIF(view->eo_notify);
140         EVAS_OBJECT_DELIF(view->eo_notify_ly);
141         elm_naviframe_item_pop(ad->navi_bar);
142         alarm_view_delete.is_create = EINA_FALSE;
143         FREEIF(ad->view_delete);
144         CLK_FUN_END();
145         return SUCCESS;
146 }
147
148 //
149 static int _alarm_view_delete_update(void *data)
150 {
151         retvm_if(!data, FAILED, "data null");
152         CLK_FUN_BEG();
153         struct appdata *ad = (struct appdata *)data;
154         int ret = SUCCESS;
155
156         ad->page = PAGE_ALARM_DELETE;
157         if (NULL != ad->view_delete->eo_notify
158             && ad->view_delete->chk_number != 0) {
159                 evas_object_show(ad->view_delete->eo_notify);
160         }
161         //ret = _alarm_view_delete_update_layout(ad);
162         alm_show_view(ad, EINA_TRUE);
163         CLK_FUN_END();
164         return ret;
165 }
166
167 //
168 static int _alarm_view_delete_cleanup(void *data)
169 {
170         retvm_if(!data, FAILED, "data null");
171         CLK_FUN_BEG();
172         struct appdata *ad = (struct appdata *)data;
173         delete_view *view = ad->view_delete;
174
175         EVAS_OBJECT_DELIF(view->eo_notify);
176         EVAS_OBJECT_DELIF(view->eo_notify_ly);
177         CLK_FUN_END();
178         return SUCCESS;
179 }
180
181 //
182 static int _alarm_delete_btn_set(struct appdata *ad)
183 {
184         retvm_if(!ad, FAILED, "ad null");
185         CLK_FUN_BEG();
186         delete_view *view = ad->view_delete;
187         Eina_Bool bVisible;
188         //set delete able
189         bVisible = IS_EQUAL(0, view->chk_number) ? EINA_FALSE : EINA_TRUE;
190         elm_object_item_disabled_set(view->eci_btn_lft, !bVisible);
191         CLK_FUN_END();
192         return SUCCESS;
193 }
194
195 /**
196 * send
197 * This function is  used to create notify
198 * @param           ad[in]   pointer to struct appdata
199 * @return          when success, return SUCCESS or FAILED if error
200 * @exception
201 */
202 static int _alarm_delete_create_notify(struct appdata *ad, NOTIFY_TYPE type,
203                                        int count)
204 {
205         retvm_if(!ad, FAILED, "ad null");
206         delete_view *view = ad->view_delete;
207         if (!view->eo_notify) {
208                 view->eo_notify = elm_notify_add(view->eo_layout);
209                 elm_notify_orient_set(view->eo_notify,
210                                       ELM_NOTIFY_ORIENT_BOTTOM);
211                 view->eo_notify_ly = elm_layout_add(view->eo_layout);
212                 elm_layout_theme_set(view->eo_notify_ly, STRING_ALARM_STD,
213                                      STRING_ALARM_EDC_SELECTION_INFO,
214                                      STRING_ALARM_EDC_VERTI_BOTTOM_12);
215                 elm_object_content_set(view->eo_notify, view->eo_notify_ly);
216         }
217         if (IS_EQUAL(0, count)) {
218                 evas_object_hide(view->eo_notify);
219                 return SUCCESS;
220         }
221         //
222         char text[128] = { 0 };
223         if (IS_EQUAL(type, NOTIFY_TYPE_SELECTED)) {
224                 if (IS_EQUAL(1, count)) {
225                         snprintf(text, sizeof(text), "%s",
226                                  STRING_ALARM_IDS_ALM_BODY_1_ALM_SELECTED_);
227                 } else {
228                         snprintf(text, sizeof(text),
229                                  STRING_ALARM_IDS_ALM_BODY_PD_ALMS_SELECTED_,
230                                  count);
231                 }
232         } else {
233                 if (IS_EQUAL(1, count)) {
234                         snprintf(text, sizeof(text), "%s",
235                                  STRING_ALARM_IDS_ALM_POP_ALM_DELETED_);
236                 } else {
237                         snprintf(text, sizeof(text),
238                                  STRING_ALARM_IDS_ALM_POP_PD_ALMS_DELETED_,
239                                  count);
240                 }
241         }
242
243         // text set and timeout set
244         edje_object_part_text_set(_EDJ(view->eo_notify_ly),
245                                   STRING_ALARM_VIEW_ELM_TEXT, text);
246         if (IS_EQUAL(type, NOTIFY_TYPE_DELETED)) {
247                 elm_notify_timeout_set(view->eo_notify, 5);
248         }
249         evas_object_show(view->eo_notify);
250         return SUCCESS;
251 }
252
253 /**
254 * send
255 * This function is  used to create select all edj
256 * @param           ad[in]   pointer to struct appdata
257 * @return          when success, return EVAS_OBJECT or NULL if error
258 * @exception
259 */
260 static Evas_Object *_alarm_delete_create_selectall(struct appdata *ad)
261 {
262         retvm_if(!ad, NULL, "ad null");
263         Evas_Object *eo = NULL;
264         Evas_Object *ck = NULL;
265         delete_view *view = ad->view_delete;
266         CLK_FUN_BEG();
267
268         eo = load_edj(view->eo_layout, EDJ_NAME, STRING_ALARM_EDC_SELECT_ALL);
269         edje_object_part_text_set(_EDJ(eo), STRING_ALARM_EDC_TEXT,
270                                   STRING_ALARM_IDS_COM_BODY_SELECT_ALL_S_);
271         edje_object_signal_callback_add(_EDJ(eo),
272                                         STRING_ALARM_EDC_MOUSE_CLICKED_ALL,
273                                         STRING_ALARM_EDC_BG_RECT,
274                                         _alarm_delete_selectall_clicked_cb, ad);
275
276         ck = elm_check_add(eo);
277         elm_object_style_set(ck, STRING_ALARM_EDC_CLK_DEFAULT);
278         edje_object_part_swallow(_EDJ(eo), STRING_ALARM_EDC_CHECKBOX, ck);
279
280         view->eo_selectall_ly = eo;
281         view->eo_selectall_chk = ck;
282         view->bSelectAll = EINA_FALSE;
283         CLK_FUN_END();
284         return eo;
285 }
286
287 static void _alarm_delete_selectall_clicked_cb(void *data, Evas_Object * obj,
288                                                const char *emission,
289                                                const char *source)
290 {
291         retm_if(NULL_CHECK(data), "data null");
292         struct appdata *ad = (struct appdata *)data;
293         delete_view *view = ad->view_delete;
294
295         view->bSelectAll = !view->bSelectAll;
296         elm_check_state_set(view->eo_selectall_chk, view->bSelectAll);
297
298         view->chk_number =
299             (EINA_TRUE == view->bSelectAll) ? view->total_number : 0;
300         //set delete able
301         _alarm_delete_btn_set(ad);
302         //set checkbox
303         Elm_Object_Item *gli = NULL;
304         gli = elm_genlist_first_item_get(view->eo_genlist);
305         retm_if(NULL_CHECK(gli), "Cannot get first item");
306         while (gli) {
307                 alarm_data_list_pack *adlp =
308                     (alarm_data_list_pack *) elm_object_item_data_get(gli);
309                 retm_if(!adlp, "elm_object_item_data_get NULL");
310                 elm_check_state_set(adlp->eo_ck, view->bSelectAll);
311                 adlp->ck = view->bSelectAll;
312                 gli = elm_genlist_item_next_get(gli);
313         }
314         //create si
315         _alarm_delete_create_notify(ad, NOTIFY_TYPE_SELECTED, view->chk_number);
316 }
317
318 static void _alarm_delete_ck_cb(void *data, Evas_Object * obj, void *event_info)
319 {
320         retm_if(NULL_CHECK(data), "data null");
321         alarm_data_list_pack *adlp = (alarm_data_list_pack *) data;
322         struct appdata *ad = (struct appdata *)adlp->ad;
323         retm_if(NULL_CHECK(ad), "ad null");
324         delete_view *view = ad->view_delete;
325         retm_if(NULL_CHECK(view), "view null");
326
327         adlp->ck = !adlp->ck;
328         elm_check_state_set(adlp->eo_ck, adlp->ck);
329
330         view->chk_number =
331             adlp->ck ? view->chk_number + 1 : view->chk_number - 1;
332         view->bSelectAll =
333             IS_EQUAL(view->chk_number,
334                      view->total_number) ? EINA_TRUE : EINA_FALSE;
335         elm_check_state_set(view->eo_selectall_chk, view->bSelectAll);
336         //set delete able
337         _alarm_delete_btn_set(ad);
338         //create si
339         _alarm_delete_create_notify(ad, NOTIFY_TYPE_SELECTED, view->chk_number);
340 }
341
342 /**
343 * send
344 * This function is  used to get label,
345 * as struct  Elm_Genlist_Item_Class, struct  GenlistItemLabelGetFunc: label_get
346 * @param           data[in]         pointer to data
347 * @param           obj[in]          pointer to current evas object
348 * @param           part[in]         string to current part name
349 * @return          when success, return label string or NULL if error
350 * @exception
351 */
352 static char *_gl_label_get_del(void *data, Evas_Object * obj, const char *part)
353 {
354         retvm_if(NULL_CHECK(data), NULL, "data null");
355         char buf[ALARM_BUF_LEN] = { 0, };
356         alarm_data_list_pack *adlp = (alarm_data_list_pack *) data;
357         AData *pAlarmData = &adlp->alarm_data;
358
359         if (IS_STR_EQUAL(part, STRING_ALARM_ELM_TEXT_TOP)) {
360                 char tmp[ALARM_BUF_LEN];
361                 snprintf(tmp, sizeof(tmp), "%s",
362                          alarm_icu_get_time_str(pAlarmData->stime,
363                                                 pAlarmData->timezone, NULL));
364                 if (IS_STR_EQUAL
365                     (STRING_ALARM_IDS_ALM_BODY_MORNING_CALL,
366                      pAlarmData->name)) {
367                         snprintf(buf, sizeof(buf), "%s  %s",
368                                  STRING_ALARM_IDS_ALM_BODY_MORNING_CALL_, tmp);
369                 } else {
370                         snprintf(buf, sizeof(buf), "%s  %s", pAlarmData->name,
371                                  tmp);
372                 }
373         } else if (IS_STR_EQUAL(part, "elm.text.sun")) {
374                 snprintf(buf, sizeof(buf), "%s", _("IDS_ALM_BODY_SUN"));
375         } else if (IS_STR_EQUAL(part, "elm.text.mon")) {
376                 snprintf(buf, sizeof(buf), "%s", _("IDS_ALM_BODY_MON"));
377         } else if (IS_STR_EQUAL(part, "elm.text.tue")) {
378                 snprintf(buf, sizeof(buf), "%s", _("IDS_ALM_BODY_TUE"));
379         } else if (IS_STR_EQUAL(part, "elm.text.wed")) {
380                 snprintf(buf, sizeof(buf), "%s", _("IDS_ALM_BODY_WED"));
381         } else if (IS_STR_EQUAL(part, "elm.text.thu")) {
382                 snprintf(buf, sizeof(buf), "%s", _("IDS_ALM_BODY_THU"));
383         } else if (IS_STR_EQUAL(part, "elm.text.fri")) {
384                 snprintf(buf, sizeof(buf), "%s", _("IDS_ALM_BODY_FRI"));
385         } else if (IS_STR_EQUAL(part, "elm.text.sat")) {
386                 snprintf(buf, sizeof(buf), "%s", _("IDS_ALM_BODY_SAT"));
387         }
388         return strdup(buf);
389 }
390
391 /**
392 * send
393 * This function is  used to get icon,
394 * as struct  Elm_Genlist_Item_Class, struct  GenlistItemIconGetFunc: icon_get
395 * @param           data[in]         pointer to data
396 * @param           obj[in]          pointer to current evas object
397 * @param           part[in]         string to current part name
398 * @return          when success, return evas_object*  or NULL if error
399 * @exception
400 */
401 static Evas_Object *_gl_icon_get_del(void *data, Evas_Object * obj,
402                                      const char *part)
403 {
404         retvm_if(NULL_CHECK(data), NULL, "data null");
405         Evas_Object *ic = NULL;
406         alarm_data_list_pack *adlp = (alarm_data_list_pack *) data;
407
408         if (IS_STR_EQUAL(part, STRING_ALARM_ELM_SWALLOW_CHECK)) {
409                 ic = elm_check_add(obj);
410                 elm_object_style_set(ic, STRING_ALARM_EDC_CLK_DEFAULT);
411                 elm_object_disabled_set(ic, EINA_TRUE);
412                 elm_check_state_set(ic, adlp->ck);
413 //      evas_object_smart_callback_add(ic, "changed",_alarm_delete_ck_cb, adlp);
414                 adlp->eo_ck = ic;
415         }
416 //  evas_object_propagate_events_set(ic, EINA_FALSE);
417         return ic;
418 }
419
420 static Eina_Bool _gl_repeatday_state_get_del(const void *data,
421                                              Evas_Object * obj,
422                                              const char *part)
423 {
424         alarm_data_list_pack *adlp = NULL;
425         struct appdata *ad = NULL;
426         Eina_Bool ret = EINA_FALSE;
427         char weekly = 0;
428         //retvm_if(data == NULL, NULL, "Invalid argument: adlp is NULL\n");
429         adlp = (alarm_data_list_pack *) data;
430         ad = (struct appdata *)adlp->ad;
431         weekly = adlp->alarm_data.repeat_weekly;
432         if (IS_STR_EQUAL(part, "sun")) {
433                 if (weekly & ALARM_DB_REPEAT_SUN) {
434                         ret = EINA_TRUE;
435                 }
436         } else if (IS_STR_EQUAL(part, "mon")) {
437                 if (weekly & ALARM_DB_REPEAT_MON) {
438                         ret = EINA_TRUE;
439                 }
440         } else if (IS_STR_EQUAL(part, "tue")) {
441                 if (weekly & ALARM_DB_REPEAT_TUE) {
442                         ret = EINA_TRUE;
443                 }
444         } else if (IS_STR_EQUAL(part, "wed")) {
445                 if (weekly & ALARM_DB_REPEAT_WED) {
446                         ret = EINA_TRUE;
447                 }
448         } else if (IS_STR_EQUAL(part, "thu")) {
449                 if (weekly & ALARM_DB_REPEAT_THU) {
450                         ret = EINA_TRUE;
451                 }
452         } else if (IS_STR_EQUAL(part, "fri")) {
453                 if (weekly & ALARM_DB_REPEAT_FRI) {
454                         ret = EINA_TRUE;
455                 }
456         } else if (IS_STR_EQUAL(part, "sat")) {
457                 if (weekly & ALARM_DB_REPEAT_SAT) {
458                         ret = EINA_TRUE;
459                 }
460         }
461         return ret;
462 }
463
464 /**
465 * send
466 * This function is  used to set cb when item append.
467 * It will be called when user select the item
468 * @param           data[in]         pointer to data
469 * @param           obj[in]          pointer to current evas object
470 * @param           event_info[in]   pointer to event
471 * @return          void
472 * @exception
473 */
474 static void _gl_sel_del(void *data, Evas_Object * obj, void *event_info)
475 {
476         retm_if(NULL_CHECK(data), "data error");
477         Elm_Object_Item *gli = (Elm_Object_Item *) (event_info);
478         elm_genlist_item_selected_set(gli, 0);
479         Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
480         retm_if(ev
481                 && (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD),
482                 STRING_ALARM_VIEW_LONG_FOCUS);
483
484         alarm_data_list_pack *adlp = (alarm_data_list_pack *) data;
485         _alarm_delete_ck_cb(data, adlp->eo_ck, event_info);
486 }
487
488 /**
489 * send
490 * This function is  used to load the view: delete view
491 * @param           data[in]         pointer to struct appdata
492 * @return          when success, return SUCCESS or FAILED if error
493 * @exception
494 */
495 static int _alarm_view_delete_create_layout(struct appdata *ad)
496 {
497         retvm_if(!ad, FAILED, "ad null");
498         CLK_FUN_BEG();
499         delete_view *view = ad->view_delete;
500         retvm_if(!view, FAILED, "view null");
501         view->eo_parent = ad->parent;
502         view->eo_navibar = ad->navi_bar;
503         view->eo_layout = widget_create_layout(view->eo_navibar);
504         view->eo_content =
505             load_edj(view->eo_layout, EDJ_NAME, STRING_ALARM_EDC_PAGE_DELETE);
506         elm_object_part_content_set(view->eo_layout,
507                                     STRING_ALARM_ELM_SWALLOW_CONTENT,
508                                     view->eo_content);
509
510         view->eo_controlbar = widget_create_controlbar(view->eo_layout, NULL);
511         view->eci_btn_lft = elm_toolbar_item_append(view->eo_controlbar, ALARM_IMAGE_DEL, NULL, /*S_("IDS_COM_SK_BACK"), */
512                                                     alarm_view_delete_btn_cb_del,
513                                                     ad);
514
515         Elm_Object_Item *eci;
516         eci = elm_toolbar_item_append(view->eo_controlbar, NULL,
517                                       NULL, NULL, NULL);
518
519         elm_object_item_disabled_set(eci, EINA_TRUE);
520         eci = elm_toolbar_item_append(view->eo_controlbar, NULL,
521                                       NULL, NULL, NULL);
522         elm_object_item_disabled_set(eci, EINA_TRUE);
523
524         view->eci_btn_rht = elm_toolbar_item_append(view->eo_controlbar, ALARM_IMAGE_CLOSE, NULL,       /*S_("IDS_COM_SK_DELETE"), */
525                                                     alarm_view_delete_btn_cb_can,
526                                                     ad);
527
528         view->ei_naviframe =
529             widget_naviframe_push(view->eo_navibar,
530                                   STRING_ALARM_IDS_ALM_HEADER_SELECT_ALMS_,
531                                   NULL, NULL, view->eo_layout, "tabbar",
532                                   view->eo_controlbar);
533
534         view->eo_btn_back =
535             elm_object_item_part_content_get(view->ei_naviframe,
536                                              ELM_NAVIFRAME_ITEM_PREV_BTN);
537         EVAS_OBJECT_DELIF(view->eo_btn_back);
538
539         view->eo_genlist = elm_genlist_add(view->eo_layout);
540         elm_object_part_content_set(view->eo_content,
541                                     STRING_ALARM_EDC_SWL_GENLIST,
542                                     view->eo_genlist);
543
544         view->eo_selectall_ly = _alarm_delete_create_selectall(ad);
545         elm_object_part_content_set(view->eo_content,
546                                     STRING_ALARM_EDC_SWL_SELECT_ALL,
547                                     view->eo_selectall_ly);
548         CLK_FUN_END();
549         return SUCCESS;
550 }
551
552 /**
553 * send
554 * This function is  used to show and update the delete view
555 * @param           data[in]         pointer to struct appdata
556 * @return          when success, return SUCCESS or FAILED if error
557 * @exception
558 */
559 static int _alarm_view_delete_update_layout(struct appdata *ad)
560 {
561         retvm_if(!ad, FAILED, "ad is null");
562         CLK_FUN_BEG();
563         delete_view *view = ad->view_delete;
564         //clear genlist
565         elm_genlist_clear(view->eo_genlist);
566         view->total_number = 0;
567
568         ADList *list =
569             alarmapp_db_genlist_get_without_morningcall(SORT_BY_TIME);
570         retvm_if(!list, SUCCESS, "no alarm");
571         //item append
572         ADList *cur = list;
573         int index = 0;
574         for (cur = list, index = 0; cur; cur = cur->next, ++index) {
575                 alarm_data_list_pack *adlp =
576                     alarm_create_genlist_item_data(ad, NULL, EINA_FALSE, index,
577                                                    &cur->ad);
578                 retvm_if(NULL_CHECK(adlp), FAILED, "malloc is null");
579                 elm_genlist_item_append(view->eo_genlist, &itc_del,
580                                         adlp, NULL, ELM_GENLIST_ITEM_NONE,
581                                         _gl_sel_del, adlp);
582                 ++view->total_number;
583         }
584         //set count
585         view->chk_number = 0;
586         _alarm_delete_btn_set(ad);
587         alarmdb_free_data_list(list);
588         CLK_FUN_END();
589         return SUCCESS;
590 }
591
592 /**
593 * send
594 * This function is  used to delete a alarm when user press the delete
595 * @param           data[in]         pointer to struct appdata
596 * @return          when success, return SUCCESS or FAILED if error
597 * @exception
598 */
599 static int _alarm_view_delete_delete_alarm(struct appdata *ad)
600 {
601         retvm_if(!ad, FAILED, "ad null");
602         alarm_data_list_pack *adlp = NULL;
603         Elm_Object_Item *gli, *tmp;
604         AData *pAlarmData = NULL;
605         delete_view *view = ad->view_delete;
606         int index = 0;
607
608         gli = elm_genlist_first_item_get(view->eo_genlist);
609         retvm_if(!gli, FAILED, "Cannot get first item");
610         while (gli) {
611                 tmp = gli;
612                 adlp = (alarm_data_list_pack *) elm_object_item_data_get(gli);
613                 retvm_if(!adlp, FAILED, "adlp NULL");
614                 pAlarmData = &adlp->alarm_data;
615                 gli = elm_genlist_item_next_get(gli);
616                 if (IS_EQUAL(adlp->ck, EINA_TRUE)) {
617                         //del
618                         if (pAlarmData->enable) {
619                                 alarmapp_mgr_delete(pAlarmData);
620                         }
621                         //for name
622                         alarm_genlist_name_array_del(pAlarmData->id);
623                         alarmdb_del_data(pAlarmData->id);
624                         elm_object_item_del(tmp);
625                         ++index;
626                 }
627         }
628         //
629         view->chk_number = 0;
630         view->total_number -= index;
631         //set delete able
632         _alarm_delete_btn_set(ad);
633         //create notify
634         _alarm_delete_create_notify(ad, NOTIFY_TYPE_DELETED, index);
635         //set VCONFKEY_ALARM_STATE
636         vconf_set_int(VCONFKEY_ALARM_STATE, alarmdb_get_num_of_enable());
637         return SUCCESS;
638 }
639
640 /**********************************************************************
641 ******************Global function ref*************************************
642 ***********************************************************************/
643
644 //
645 void alarm_view_delete_btn_cb_can(void *data, Evas_Object * obj,
646                                   void *event_info)
647 {
648         _alarm_view_delete_cb_can(data);
649 }
650
651 //
652 void alarm_view_delete_btn_cb_del(void *data, Evas_Object * obj,
653                                   void *event_info)
654 {
655         _alarm_view_delete_cb_del(data);
656 }