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.
18 #include <appcore-common.h>
24 #include "_util_log.h"
27 #define STRBUF_SIZE 64
28 #define PATHBUF_SIZE 256
30 void _play_vib(int handle)
32 svi_play_vib(handle, SVI_VIB_OPERATION_VIBRATION);
35 void _play_sound(int type, int handle)
37 if (type == VOLUME_TYPE_MEDIA) {
40 svi_play_sound(handle, SVI_SND_TOUCH_TOUCH1);
44 int _init_svi(void *data)
48 struct appdata *ad = (struct appdata *)data;
49 retvm_if(ad == NULL, -1, "Invaild argument: appdata is NULL\n");
51 ret = svi_init(&handle);
52 if (ret != SVI_SUCCESS) {
53 _E("Failed to init svi\n");
61 int _set_slider_value(void *data, int val)
63 struct appdata *ad = (struct appdata *)data;
64 retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
66 if (ad->flag_touching == EINA_TRUE) {
70 elm_slider_min_max_set(ad->sl, 0, ad->step);
71 elm_slider_value_set(ad->sl, val);
77 int _set_icon(void *data, int val)
80 char buf[PATHBUF_SIZE] = {0, };
82 struct appdata *ad = (struct appdata *)data;
83 retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
85 vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd);
86 vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib);
90 if (ad->type == VOLUME_TYPE_MEDIA) {
91 _D("media and mute\n");
92 img = "00_volume_icon_Mute.png";
94 _D("Not media and vib\n");
95 img = "00_volume_icon_Vibrat.png";
100 img = "00_volume_icon_Mute.png";
103 _D("default volume\n");
104 img = "00_volume_icon.png";
108 if(ad->type != VOLUME_TYPE_MEDIA){
109 _D("Not media and mute\n");
110 img = "00_volume_icon_Mute.png";
115 snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, img);
117 elm_icon_file_set(ad->ic, buf, NULL);
122 void _set_device_warning(void *data, int val, int device)
124 struct appdata *ad = (struct appdata *)data;
125 retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
128 case SYSTEM_AUDIO_ROUTE_PLAYBACK_DEVICE_EARPHONE:
130 if(ad->flag_warning) return;
131 ad->flag_warning = true;
132 elm_object_content_unset(ad->pu);
133 elm_object_part_content_set(ad->warn_ly, "elm.swallow.slider1", ad->sl);
134 elm_object_content_set(ad->pu, ad->warn_ly);
135 evas_object_show(ad->warn_ly);
136 DEL_TIMER(ad->warntimer);
137 ADD_TIMER(ad->warntimer, 3.0, _unset_layout, data);
140 ad->flag_warning = false;
145 ad->flag_warning = false;
151 int _get_title(volume_type_t type, char *label, int size)
155 text = S_("IDS_COM_BODY_UNKNOWN");
158 case VOLUME_TYPE_SYSTEM:
159 text = S_("IDS_COM_BODY_SYSTEM");
161 case VOLUME_TYPE_NOTIFICATION:
162 text = S_("IDS_COM_HEADER_NOTIFICATION");
164 case VOLUME_TYPE_ALARM:
165 text = S_("IDS_COM_BODY_ALARM");
167 case VOLUME_TYPE_RINGTONE:
168 text = S_("IDS_COM_BODY_RINGTONE");
170 case VOLUME_TYPE_MEDIA:
171 text = T_("IDS_COM_BODY_MEDIA");
173 case VOLUME_TYPE_CALL:
174 text = S_("IDS_COM_BODY_CALL");
176 case VOLUME_TYPE_EXT_ANDROID:
177 /* this enum is different from mm_sound.h and avsys-audio.h */
178 text = T_("IDS_COM_BODY_ANDROID");
180 case VOLUME_TYPE_EXT_JAVA:
181 text = T_("IDS_COM_BODY_JAVA");
184 text = S_("IDS_COM_BODY_SYSTEM");
187 snprintf(label, size, "%s", text);
188 _D("get title(%s)\n", label);
193 void _set_popup_title(void *data, int type, int device)
195 char buf[STRBUF_SIZE] = {0, };
196 char name[STRBUF_SIZE] = {0, };
197 struct appdata *ad = (struct appdata *)data;
198 retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
200 _get_title(type, buf, sizeof(buf));
203 case SYSTEM_AUDIO_ROUTE_PLAYBACK_DEVICE_EARPHONE:
204 snprintf(name, sizeof(name), "%s (%s)", buf, T_("IDS_COM_OPT_HEADPHONES_ABB"));
205 elm_object_part_text_set(ad->pu, "title,text", name);
208 elm_object_part_text_set(ad->pu, "title,text", buf);
213 int _get_step(int type)
216 ret = mm_sound_volume_get_step(type, &step);
217 retvm_if(ret < 0, -1, "Failed to get step\n");
222 void _mm_func(void *data)
224 _D("%s\n", __func__);
226 system_audio_route_device_t device = 0;
227 struct appdata *ad = (struct appdata *)data;
228 retm_if(ad == NULL, "Invalid argument: appdata is NULL\n");
230 retm_if(ad->win == NULL, "Failed to get window\n");
232 /* function could be activated when window exists */
233 ad->step = _get_step(ad->type);
234 mm_sound_volume_get_value(ad->type, (unsigned int*)(&val));
235 mm_sound_route_get_playing_device(&device);
237 _set_slider_value(ad, val);
238 _set_popup_title(ad, ad->type, device);
239 _set_device_warning(ad, val, device);
241 _D("type(%d) val(%d)\n", ad->type, val);
244 void _mm_system_cb(void *data)
249 void _mm_notification_cb(void *data)
254 void _mm_alarm_cb(void *data)
259 void _mm_ringtone_cb(void *data)
264 void _mm_media_cb(void *data)
269 void _mm_call_cb(void *data)
274 void _mm_ext_android_cb(void *data)
279 void _mm_ext_java_cb(void *data)
284 int _get_volume_type_max(void)
286 return VOLUME_TYPE_MAX;
289 int _init_mm_sound(void *data)
291 struct appdata *ad = (struct appdata *)data;
292 retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n");
294 mm_sound_volume_add_callback(VOLUME_TYPE_SYSTEM,
295 _mm_system_cb, (void *)ad);
296 mm_sound_volume_add_callback(VOLUME_TYPE_NOTIFICATION,
297 _mm_notification_cb, (void *)ad);
298 mm_sound_volume_add_callback(VOLUME_TYPE_ALARM,
299 _mm_alarm_cb, (void *)ad);
300 mm_sound_volume_add_callback(VOLUME_TYPE_RINGTONE,
301 _mm_ringtone_cb, (void *)ad);
302 mm_sound_volume_add_callback(VOLUME_TYPE_MEDIA,
303 _mm_media_cb, (void *)ad);
304 mm_sound_volume_add_callback(VOLUME_TYPE_CALL,
305 _mm_call_cb, (void *)ad);
306 mm_sound_volume_add_callback(VOLUME_TYPE_EXT_ANDROID,
307 _mm_ext_android_cb, (void *)ad);
308 mm_sound_volume_add_callback(VOLUME_TYPE_EXT_JAVA,
309 _mm_ext_java_cb, (void *)ad);
314 int _get_sound_level(volume_type_t type, int *val)
316 mm_sound_volume_get_value(type, (unsigned int*)val);
320 int _set_sound_level(volume_type_t type, int val)
322 mm_sound_volume_set_value(type, val);