tizen 2.3 release
[apps/home/settings.git] / setting-common / src / setting-common-sound.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-common-sound.h>
22 #include <setting-common-data-slp-setting.h>
23 #include <feedback.h>
24
25 #define EXPORT_PUBLIC __attribute__ ((visibility ("default")))
26
27 /**
28  * @brief Initialize function for tap sound playing
29  *
30  * @return #0 on success, else on failed
31  */
32 EXPORT_PUBLIC
33 int effect_playsound_init()
34 {
35         if (feedback_initialize() != 0)
36                 return -1;
37
38         return 0;
39 }
40
41 /**
42  * @brief Check whether system is in mute mode
43  *
44  * @return #1 on non-mute, 0 on mute
45  */
46 EXPORT_PUBLIC
47 int effect_playsound_is_activated()
48 {
49         int state = 0;
50         vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &state);
51         return state;
52 }
53
54 /**
55  * @brief Deinitialize function for tap sound playing
56  *
57  */
58 EXPORT_PUBLIC
59 void effect_playsound_close()
60 {
61         feedback_deinitialize();
62 }
63
64 /**
65  * @brief Play tap sound
66  *
67  * This function is used to play system tap sound.
68  * You may customized some edc for special layouts,
69  * sometimes, you can insert tap sound effect code in the edc,
70  * but it was complex and you should supply tap sound resource which is
71  * wholely same as the system tap sound,this has potential issues,
72  * that is when system sound is changed, you should change your edc
73  * resource too,it's not smart.
74  *
75  * The another known problem is if you add sound effect code in your edc,
76  * the the life of playing is limited by the life of layout.
77  * eg, you have a popup which has 2 customized icons in its content, the icon
78  * should be clickable. The following requirements was demaned too:
79  *   1.view will be changed to another if you click any icon of the popup
80  *   2.the popup will be disappeared after you click any icon of the popup
81  * if you add the sound code in edc, the normally case is the tap sound is not
82  * played in time before the popup was destroyed, and once popup was destroyed,
83  * the edc sound code won't work because the layout was destoryed in that time
84  *
85  * Use effect_playsound_play() will block the cpu until tap Sound was played,
86  * Only after that the cpu can do popup destoryed
87  *
88  */
89 EXPORT_PUBLIC
90 void effect_playsound_play()
91 {
92         // sound type -> feedback_pattern
93         feedback_play(FEEDBACK_PATTERN_TAP);
94 }
95