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_app.h"
18 #include "alarm_lib.h"
19 #include "alarm_fwk_util.h"
20 #include "alarm_fwk_vconf.h"
21 #include "alarm_view_main.h"
22 #include "alarm_view_edit.h"
23 #include "alarm_view_del.h"
24 #include "alarm_view_snooze.h"
25 #include "alarm_subview_type.h"
26 /**********************************************************************
27 ******************Global val , static global val*************************************
28 ***********************************************************************/
29 static struct appdata *g_ad;
31 /**********************************************************************
32 ******************Global function ref*************************************
33 ***********************************************************************/
37 * This function is used to add alarm view
38 * It is used by clock app
39 * @param parent[in] pointer to parent Evas object
40 * @param cb[in] cb to set controllbar visible or invisible
41 * @return when success, return Evas Object or NULL if error
44 EAPI Evas_Object *alarm_view_add(Evas_Object *parent, Evas_Object *win,
45 alarm_set_controlbar_visible cb)
48 Evas_Object *ret = NULL;
55 struct appdata *ad = CALLOC(1, struct appdata);
56 CLK_RETVM_IF(NULL_CHECK(ad), NULL, "malloc error");
58 // init internationalization
59 bindtextdomain(PACKAGE, LOCALEDIR);
61 mm_session_init(MM_SESSION_TYPE_ALARM);
63 nErr = alarmmgr_init(PKGNAME);
64 CLK_RETVM_IF(nErr != SUCCESS, NULL, "alarmmgr_init error");
67 ad->evas = evas_object_evas_get(ad->win_main);
71 ad->alarmapp_controlbar_cb = cb;
73 nErr = alarmdb_init(NULL);
74 CLK_RETVM_IF(nErr != SUCCESS, NULL, "alarmdb_init error");
75 //alarmapp_check_missed_alarm();
77 #ifdef ALARMAPP_FEATURE_MORNINGCALL
78 if (!is_alarmapp_morningcall()) {
79 alarmapp_create_morningcall();
84 ad->alarm = alarmdb_create_data();
85 alarm_genlist_name_array_init(MAX_ALARM_NUMBER);
87 alarm_view_genlist.create(ad);
90 //get current time format
91 vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224, &ad->time_format);
93 int ecore_ret = ecore_file_init();
94 nErr = IS_EQUAL(0, ecore_ret) ? FAILED : SUCCESS;
95 CLK_RETVM_IF(nErr != SUCCESS, NULL, "ecore_file_init error");
97 ad->is_alarm = EINA_TRUE;
98 //alarm_key_event_init(ad);
101 if (nErr != SUCCESS) {
102 alarm_view_free(NULL);
109 EAPI Evas_Object *alarm_view_add_with_bundle(Evas_Object *parent,
111 alarm_set_controlbar_visible cb,
115 Evas_Object *ret = NULL;
116 struct appdata *ad = NULL;
118 ret = alarm_view_add(parent, win, cb);
119 CLK_RETVM_IF(nErr != SUCCESS, NULL, "alarm_view_add error");
120 CLK_RETVM_IF(!bundle_value, ret, "bundle null, just create genlist");
123 if (IS_STR_EQUAL(STRING_ALARM_CREATE, bundle_value)) {
124 alarm_view_genlist_btn_cb_add(ad, NULL, NULL);
133 * This function is used to free alarm view
134 * It is used by clock app
135 * @param data[in] pointer to Evas object
136 * @return int when success, return SUCCESS or FAILED if error
139 EAPI int alarm_view_free(Evas_Object *obj)
141 struct appdata *ad = g_ad;
142 retvm_if(NULL_CHECK(ad), SUCCESS, "ad null");
143 //not in genlist, don't elem_exit
144 if (!IS_EQUAL(ad->page, PAGE_ALARM_GENLIST)) {
146 case PAGE_ALARM_SETTING:
147 alarm_view_setting_btn_cb_can(ad, NULL, NULL);
149 case PAGE_ALARM_DELETE:
150 alarm_view_delete_btn_cb_can(ad, NULL, NULL);
152 case PAGE_ALARM_SNOOZE:
153 alarm_view_snooze_btn_cb_can(ad, NULL, NULL);
160 //just in genlist view, end key will elm_exit
161 EVAS_OBJECT_DELIF(ad->layout);
162 //EVAS_OBJECT_DELIF(ad->layout_main);
163 FREEIF(ad->view_genlist);
164 FREEIF(ad->view_delete);
165 FREEIF(ad->view_setting);
166 FREEIF(ad->view_snooze);
167 alarmdb_free_data(ad->alarm);
171 alarm_genlist_name_array_fini();
174 //alarmapp_inotify_mgr_fini();
175 //ecore_file_monitor_shutdown();
176 ecore_file_shutdown();
182 * This function is used to reload alarm view
187 EAPI void alarm_view_reload()
189 retm_if(!g_ad, "a_ad is null");
190 struct appdata *ad = g_ad;
192 ad->is_alarm = EINA_TRUE;
195 case PAGE_ALARM_GENLIST:
196 alarm_view_genlist.update(ad);
198 case PAGE_ALARM_DELETE:
199 alarm_view_delete.update(ad);
201 case PAGE_ALARM_SETTING:
202 alarm_view_setting.update(ad);
211 * This function is used to unload alarm view
216 EAPI void alarm_view_unload()
218 retm_if(!g_ad, "a_ad is null");
219 struct appdata *ad = g_ad;
221 ad->is_alarm = EINA_FALSE;
222 if(NULL != ad->view_delete){
223 evas_object_hide(ad->view_delete->eo_notify);
228 EAPI void alarm_app_pause()
231 struct appdata *ad = g_ad;
233 if (IS_EQUAL(ad->page, PAGE_ALARM_SETTING)) {
234 alarm_setting_stop_sound(ad);
235 alarm_type_stop_sound(ad);