/*
* setting
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
*
- * Licensed under the Flora License, Version 1.0 (the License);
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://floralicense.org/license/
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
+ * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
*/
#include <setting-profile.h>
-#include <haptic.h>
+#include <dd-haptic.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <iniparser.h>
#include <utilX.h>
#include <Ecore_X.h>
+#include <Ecore.h>
+#include <app_manager.h>
+#include <metadata_extractor.h>
+#include <player.h>
+#include <setting-cfg.h>
#ifndef UG_MODULE_API
#define UG_MODULE_API __attribute__ ((visibility("default")))
#endif
+#define MIGRATION_HAPTIC 0
+
SettingProfileUG *g_ProfileUG = NULL; /* just a handler */
-extern char *repeat_type[];
+static int __close_player(void *data, setting_volume_types type);
-static void setting_profile_ug_cb_resize(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+extern char *repeat_type[];
+bool vib_caller_flag = false;
+
+SliderIcons slider_icons[SND_SLIDER_MAX] = {
+ {SND_SLIDER_CALL, SETTING_ICON_PATH_CFG"B04_slider_icon_vibrate.png", SETTING_ICON_PATH_CFG"B04_slider_icon_ring.png"},
+ {SND_SLIDER_NOTI, SETTING_ICON_PATH_CFG"B04_slider_icon_notification_mute.png", SETTING_ICON_PATH_CFG"B04_slider_icon_notification.png"},
+ {SND_SLIDER_MEDIA, SETTING_ICON_PATH_CFG"00_volume_icon.png", SETTING_ICON_PATH_CFG"00_volume_icon.png"},
+ {SND_SLIDER_SYSTEM, SETTING_ICON_PATH_CFG"B04_slider_icon_system_mute.png", SETTING_ICON_PATH_CFG"B04_slider_icon_system.png"},
+ {SND_SLIDER_CALL_VIB, SETTING_ICON_PATH_CFG"B04_volume_icon_mute.png", SETTING_ICON_PATH_CFG"B04_volume_icon_Vibrat.png"},
+ {SND_SLIDER_NOTI_VIB, SETTING_ICON_PATH_CFG"B04_slider_icon_notification_mute.png", SETTING_ICON_PATH_CFG"B04_slider_icon_notification_vibrate.png"},
+ {SND_SLIDER_SYSTEM_VIB, SETTING_ICON_PATH_CFG"B04_slider_icon_system_mute.png", SETTING_ICON_PATH_CFG"B04_slider_icon_system_vibrate.png"},
+ {SND_SLIDER_MAX, NULL, NULL},
+};
+
+char *setting_profile_get_slider_icon(int type, int volume)
{
- ret_if(data == NULL);
+ if (type >= SND_SLIDER_MAX)
+ return NULL;
- SettingProfileUG *ad = (SettingProfileUG *) data;
- setting_view_update(&setting_view_profile_sound_main, ad);
+ SETTING_TRACE("type : %d, volume : %d", type, volume);
+ if (volume > 0) {
+ return slider_icons[type].volume;
+ } else {
+ return slider_icons[type].mute;
+ }
}
-/**
- *@ To sync Setting App volume with Volume Hard key volume
- */
-
-void __sound_volume_changed_cb(sound_type_e type, unsigned int volume, void *user_data)
+void setting_profile_update_slider_icon(Setting_GenGroupItem_Data *item_data, int type)
{
SETTING_TRACE_BEGIN;
- ret_if(!user_data);
- SettingProfileUG *ad = user_data;
- Setting_GenGroupItem_Data *item_data = NULL;
-
- Evas_Object *slider = NULL;
- switch (type)
- {
- case SOUND_TYPE_SYSTEM:
- SETTING_TRACE_DEBUG("system");
- if (ad->data_touch_volume)
- item_data = ad->data_touch_volume;
- //slider = ad->data_touch_volume->eo_check;
- break;
- case SOUND_TYPE_NOTIFICATION:
- SETTING_TRACE_DEBUG("notification");
- if (ad->data_noti_volume)
- item_data = ad->data_noti_volume;
- //slider = ad->data_noti_volume->eo_check;
- break;
- case SOUND_TYPE_RINGTONE:
- SETTING_TRACE_DEBUG("ringtone");
- if (ad->data_call_volume)
- item_data = ad->data_call_volume;
- //slider = ad->data_call_volume->eo_check;
- break;
- case SOUND_TYPE_MEDIA:
- SETTING_TRACE_DEBUG("media");
- if (ad->data_media_volume)
- item_data = ad->data_media_volume;
- //slider = ad->data_media_volume->eo_check;
- break;
- //At present, there are only 4 types supported:RINGTONE,NOTIFICATION,SYSTEM,MEDIA
- default:
- SETTING_TRACE_ERROR("Invalid sound type:%d", type);
- return;
+ ret_if(!item_data || !item_data->eo_check);
+
+ Evas_Object *cur_icon = elm_object_content_get(item_data->eo_check);
+ ret_if(!cur_icon);
+
+ char *old_file = NULL;
+ char *new_file = NULL;
+
+ elm_image_file_get(cur_icon, &old_file, NULL);
+ new_file = setting_profile_get_slider_icon(type, item_data->chk_status);
+ if (safeStrCmp(old_file, new_file)) {
+ elm_object_content_unset(item_data->eo_check);
+ evas_object_del(cur_icon);
+ cur_icon = NULL;
+
+ Evas_Object *icon = elm_icon_add(item_data->eo_check);
+ elm_image_file_set(icon, new_file, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ elm_object_content_set(item_data->eo_check, icon);
+ evas_object_show(icon);
}
+}
- if (item_data && item_data->eo_check)
- {
- SETTING_TRACE_DEBUG("update slider value");
- int volume = 0;
- double old_volume = 0;
- sound_manager_get_volume(type, &volume); /* system */
- SETTING_TRACE_DEBUG("get_volume is %d", volume);
-
- old_volume = elm_slider_value_get(item_data->eo_check);
- SETTING_TRACE_DEBUG("slider volume is %d", old_volume);
- if ((int)volume != (int)(old_volume + 0.5)) { /* reset again */
- elm_slider_value_set(item_data->eo_check, (double)volume);
- SETTING_TRACE_DEBUG("update to new value %d", volume);
- item_data->chk_status = volume;
- elm_genlist_item_update(item_data->item);
+char *setting_media_basename(char *path)
+{
+ if (NULL == path || '\0' == path[0]) {
+ return NULL; /* invalid arguement */
+ }
+
+ if (safeStrCmp(path, "silent") == 0)
+ return (char *)g_strdup(_("IDS_ST_BODY_PHONEPROFILES_SILENT"));
+
+ metadata_extractor_h metadata = NULL;
+ char *title = NULL;
+ int ret = metadata_extractor_create(&metadata);
+ if (ret == METADATA_EXTRACTOR_ERROR_NONE && metadata) {
+ ret = metadata_extractor_set_path(metadata, path);
+ if (ret == METADATA_EXTRACTOR_ERROR_NONE) {
+ ret = metadata_extractor_get_metadata(metadata, METADATA_TITLE, &title);
+ metadata_extractor_destroy(metadata);
+ if (title)
+ return (char *)g_strdup(title);
+ else
+ return setting_file_basename(path);
+ } else {
+ metadata_extractor_destroy(metadata);
+ return setting_file_basename(path);
}
+ } else {
+ return setting_file_basename(path);
}
}
-#if DISABLED_CODE
-static char* __gl_sound_slider_text_get(void *data, Evas_Object *obj, const char *part)
+static void setting_profile_ug_cb_resize(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
+{
+ ret_if(data == NULL);
+
+ SettingProfileUG *ad = (SettingProfileUG *) data;
+ setting_view_update(&setting_view_profile_sound_main, ad);
+
+}
+
+static char *__gl_sound_slider_text_get(void *data, Evas_Object *obj, const char *part)
{
retv_if(data == NULL, NULL);
- Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data*)data;
+ Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *)data;
- if(item_data->keyStr)
- return (char*)g_strdup(_(item_data->keyStr));
+ if (item_data->keyStr)
+ return (char *)g_strdup(_(item_data->keyStr));
else
return NULL;
}
-#endif
-static Evas_Object* __gl_sound_slider_content_get(void *data, Evas_Object *obj, const char *part)
+
+static Evas_Object *__gl_sound_slider_content_get(void *data, Evas_Object *obj, const char *part)
{
- //appcore_measure_start();
+ SETTING_TRACE_BEGIN;
+ /*appcore_measure_start(); */
retv_if(data == NULL, NULL);
- Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data*)data;
+
+ if (safeStrCmp(part, "elm.icon")) {
+ SETTING_TRACE("EDC part [%s]", part);
+ return NULL;
+ }
+
+ Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *)data;
Evas_Object *slider = setting_create_slider(obj, item_data->evas,
- item_data->l_swallow_path,
- item_data->r_swallow_path,
- item_data->chk_status,
- item_data->isIndicatorVisible,
- item_data->slider_min,
- item_data->slider_max,
- item_data->chk_change_cb,
- item_data->start_change_cb,
- item_data->stop_change_cb,
- item_data);
-
- if(slider == NULL)
+ item_data->l_swallow_path,
+ item_data->r_swallow_path,
+ item_data->chk_status,
+ item_data->isIndicatorVisible,
+ item_data->slider_min,
+ item_data->slider_max,
+ item_data->chk_change_cb,
+ item_data->start_change_cb,
+ item_data->stop_change_cb,
+ item_data);
+
+ if (slider == NULL)
return NULL;
item_data->eo_check = slider;
evas_object_pass_events_set(slider, EINA_TRUE);
evas_object_propagate_events_set(slider, EINA_FALSE);
- if(item_data->userdata == NULL)
+ if (item_data->userdata == NULL)
return NULL;
- SettingProfileUG *ad = (SettingProfileUG*)item_data->userdata;
+ SettingProfileUG *ad = (SettingProfileUG *)item_data->userdata;
+
+ int sound_value = 0;
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_value);
- if((item_data->belongs_to == SETTING_VOL_SOUND_GROUP)
- && (ad->data_sound)
- && (ad->data_sound->chk_status == FALSE))
- setting_disable_genlist_item(item_data->item);
- else if((item_data->belongs_to == SETTING_VOL_VIBRATION_GROUP)
- && (ad->data_vibration)
- && (ad->data_vibration->chk_status == FALSE))
- setting_disable_genlist_item(item_data->item);
+ if (item_data->belongs_to == SETTING_VOL_SOUND_GROUP && !sound_value) {
+ elm_object_item_disabled_set(item_data->item, EINA_TRUE);
+ elm_object_disabled_set(item_data->eo_check, EINA_TRUE);
+ }
return slider;
}
G_FREE(item_data->item_style);
- if (item_data->digits_filter_data)
- {
+ if (item_data->digits_filter_data) {
G_FREE(item_data->digits_filter_data->accepted);
G_FREE(item_data->digits_filter_data->rejected);
FREE(item_data->digits_filter_data);
return;
}
+/* ***************************************************
+ *
+ *general func
+ *
+ ***************************************************/
+#define SETTING_DEFAULT_FOLDER_PATH "/opt/usr/share/settings/" /*resolve P130805-7070 */
+
+int setting_profile_check_file_exist(void *data, const char *file_path)
+{
+ retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ retv_if(file_path == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+ /*resolve P130805-7070 */
+ if (0 == safeStrNCmp(file_path, SETTING_DEFAULT_FOLDER_PATH, safeStrLen(SETTING_DEFAULT_FOLDER_PATH))) {
+ SETTING_TRACE("Default file[%s]!", file_path);
+ return SETTING_RETURN_SUCCESS;
+ }
+
+ if (!ecore_file_exists(file_path)) {
+ if (safeStrCmp(file_path, "silent") == 0) {
+ SETTING_TRACE("%s", file_path);
+ return SETTING_RETURN_SUCCESS;
+ }
+ SETTING_TRACE_ERROR("Cannot find the ringtone file[%s]!", file_path);
+ return SETTING_RETURN_FAIL;
+ }
+
+ int mmc_status = VCONFKEY_SYSMAN_MMC_REMOVED;
+ vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_status);
+ if (VCONFKEY_SYSMAN_MMC_MOUNTED != mmc_status) {
+ if (!safeStrNCmp(SETTING_PROFILE_MMC_PATH, file_path, safeStrLen(SETTING_PROFILE_MMC_PATH))) {
+ return SETTING_RETURN_FAIL;
+ }
+ }
+ return SETTING_RETURN_SUCCESS;
+}
+
+static void __enable_sound_menu(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!data);
+ SettingProfileUG *ad = data;
+
+ appcore_measure_start();
+
+ ad->sound_on = TRUE;
+
+ if (!ad->volume_popup) {
+ SETTING_TRACE("Volume popup is not displayed now");
+ return;
+ }
+
+ if (ad->data_sound_when_ring && ad->data_sound_when_ring->item) {
+ elm_object_item_disabled_set(ad->data_sound_when_ring->item, EINA_FALSE);
+ }
+ if (ad->data_noti_volume && ad->data_noti_volume->item && ad->data_noti_volume->eo_check) {
+ int mm_value = 0;
+ int ret = sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value);
+ SETTING_TRACE("ret:%d", ret);
+ ad->data_noti_volume->chk_status = mm_value;
+ elm_slider_value_set(ad->data_noti_volume->eo_check, ad->data_noti_volume->chk_status);
+ elm_object_item_disabled_set(ad->data_noti_volume->item, EINA_FALSE);
+ elm_object_disabled_set(ad->data_noti_volume->eo_check, EINA_FALSE);
+
+#if 1
+ /* Change notification slider's icon as normal style */
+ setting_profile_update_slider_icon(ad->data_noti_volume, SND_SLIDER_NOTI);
+#endif
+ }
+ if (ad->data_touch_volume && ad->data_touch_volume->item && ad->data_touch_volume->eo_check) {
+ int mm_value = 0;
+ int ret = sound_manager_get_volume(SOUND_TYPE_SYSTEM, &mm_value);
+ SETTING_TRACE("ret:%d", ret);
+ ad->data_touch_volume->chk_status = mm_value;
+ elm_slider_value_set(ad->data_touch_volume->eo_check, ad->data_touch_volume->chk_status);
+ elm_object_item_disabled_set(ad->data_touch_volume->item, EINA_FALSE);
+ elm_object_disabled_set(ad->data_touch_volume->eo_check, EINA_FALSE);
+
+ setting_profile_update_slider_icon(ad->data_touch_volume, SND_SLIDER_SYSTEM);
+ }
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ int mm_value = 0;
+ int ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value);
+ SETTING_TRACE("ret:%d", ret);
+ if (mm_value > 0) {
+ ad->data_call_volume->chk_status = mm_value;
+ elm_slider_value_set(ad->data_call_volume->eo_check, ad->data_call_volume->chk_status);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d", ad->data_call_volume->chk_status);
+ } else {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, 1);
+ }
+ }
+ SETTING_TRACE_DEBUG("[TIME] enable_sound_menu : %d msec ", appcore_measure_time());
+}
+
+static void __disable_sound_menu(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!data);
+ SettingProfileUG *ad = data;
+
+ appcore_measure_start();
+
+ ad->sound_on = FALSE;
+
+ if (!ad->volume_popup) {
+ SETTING_TRACE("Volume popup is not displayed now");
+ return;
+ }
+
+ __close_player(ad, SETTING_VOL_TYPE_NOTIFICATION);
+ __close_player(ad, SETTING_VOL_TYPE_MEDIA);
+
+ if (ad->mp_ringtone) {
+ SETTING_TRACE_DEBUG("player_set_mute");
+ player_set_mute(*(ad->mp_ringtone), 1);
+ }
+
+ /*ecore_idler_add(setting_profile_close_all_mm_players, ad); */
+
+ SETTING_TRACE_DEBUG("[TIME] close players : %d msec ", appcore_measure_time());
+ appcore_measure_start();
+
+ if (ad->data_sound_when_ring && ad->data_sound_when_ring->item) {
+ elm_object_item_disabled_set(ad->data_sound_when_ring->item, EINA_TRUE);
+ }
+ if (ad->data_noti_volume && ad->data_noti_volume->item && ad->data_noti_volume->eo_check) {
+ ad->data_noti_volume->chk_status = 0;
+ elm_slider_value_set(ad->data_noti_volume->eo_check, ad->data_noti_volume->chk_status);
+ elm_object_item_disabled_set(ad->data_noti_volume->item, EINA_TRUE);
+ elm_object_disabled_set(ad->data_noti_volume->eo_check, EINA_TRUE);
+
+ /* Change notification slider's icon as mute style */
+ setting_profile_update_slider_icon(ad->data_noti_volume, SND_SLIDER_NOTI);
+ }
+ if (ad->data_touch_volume && ad->data_touch_volume->item && ad->data_touch_volume->eo_check) {
+ ad->data_touch_volume->chk_status = 0;
+ elm_slider_value_set(ad->data_touch_volume->eo_check, ad->data_touch_volume->chk_status);
+ elm_object_item_disabled_set(ad->data_touch_volume->item, EINA_TRUE);
+ elm_object_disabled_set(ad->data_touch_volume->eo_check, EINA_TRUE);
+
+ /* Change system slider's icon as mute style */
+ setting_profile_update_slider_icon(ad->data_touch_volume, SND_SLIDER_SYSTEM);
+ }
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status = 0;
+ elm_slider_value_set(ad->data_call_volume->eo_check, ad->data_call_volume->chk_status);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d", ad->data_call_volume->chk_status);
+ }
+
+ SETTING_TRACE_DEBUG("[TIME] disable_sound_menu : %d msec ", appcore_measure_time());
+}
+
static void setting_profile_vconf_change_cb(keynode_t *key, void *data)
{
ret_if(data == NULL);
SETTING_TRACE("song_playing:%s", ad->song_playing);
if (!safeStrNCmp(SETTING_PROFILE_MMC_PATH, ad->song_playing,
- safeStrLen(SETTING_PROFILE_MMC_PATH))) {
+ safeStrLen(SETTING_PROFILE_MMC_PATH))) {
/* close mm plaer */
setting_profile_close_all_mm_players(ad);
/* close vibration */
- #if MIGRATION_HAPTIC
+#if MIGRATION_HAPTIC
if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
SETTING_TRACE("ERROR haptic_stop_all_effects");
}
- #endif
+#endif
}
+
/* when remove mmc card, change default tone */
char *call_tone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
- if(call_tone && !safeStrNCmp(SETTING_PROFILE_MMC_PATH, call_tone, safeStrLen(SETTING_PROFILE_MMC_PATH)))
- {
- ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, SETTING_DEFAULT_CALL_TONE);
- if(ret < 0)
+ if (call_tone && !safeStrNCmp(SETTING_PROFILE_MMC_PATH, call_tone, safeStrLen(SETTING_PROFILE_MMC_PATH))) {
+ if (isEmulBin()) {
+ ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, SETTING_DEFAULT_CALL_TONE_SDK);
+ } else {
+ ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, SETTING_DEFAULT_CALL_TONE);
+ }
+ if (ret < 0)
SETTING_TRACE_DEBUG("failed to set vconf");
}
+ FREE(call_tone);
}
- }
- else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_SOUND_STATUS_BOOL)) {
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_SOUND_STATUS_BOOL)) {
status = vconf_keynode_get_bool(key);
SETTING_TRACE_DEBUG("sound status is changed. %d", status);
- elm_check_state_set(ad->data_sound->eo_check, status);
- if(status)
- {
- setting_enable_genlist_item(ad->data_call_volume->item);
- setting_enable_genlist_item(ad->data_noti_volume->item);
- setting_enable_genlist_item(ad->data_media_volume->item);
- setting_enable_genlist_item(ad->data_touch_volume->item);
- }
- else
- {
- setting_disable_genlist_item(ad->data_call_volume->item);
- setting_disable_genlist_item(ad->data_noti_volume->item);
- setting_disable_genlist_item(ad->data_media_volume->item);
- setting_disable_genlist_item(ad->data_touch_volume->item);
+ if (status) {
+ __enable_sound_menu(ad);
+ } else {
+ __disable_sound_menu(ad);
}
- }
- else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL)) {
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL)) {
status = vconf_keynode_get_bool(key);
SETTING_TRACE_DEBUG("vibration status is changed. %d", status);
- elm_check_state_set(ad->data_vibration->eo_check, status);
- if(status)
- {
- setting_enable_genlist_item(ad->data_vib_volume->item);
- setting_enable_genlist_item(ad->data_touch_vib->item);
+ if (status) {
+ ad->vibration_on = TRUE;
+ PLAY_FEEDBACK(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_VIBRATION_ON)
+ } else {
+ ad->vibration_on = FALSE;
}
- else
- {
- setting_disable_genlist_item(ad->data_vib_volume->item);
- setting_disable_genlist_item(ad->data_touch_vib->item);
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL)) {
+ status = vconf_keynode_get_bool(key);
+ if (ad->data_sound_when_ring && ad->data_sound_when_ring->eo_check) {
+ if (status != ad->data_sound_when_ring->chk_status) {
+ ad->data_sound_when_ring->chk_status = status;
+ elm_check_state_set(ad->data_sound_when_ring->eo_check, ad->data_sound_when_ring->chk_status);
+ }
}
- }
- else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR)) {
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL)) {
+ status = vconf_keynode_get_bool(key);
+ if (ad->data_button_sounds && ad->data_button_sounds->eo_check) {
+ if (status != ad->data_button_sounds->chk_status) {
+ ad->data_button_sounds->chk_status = status;
+ elm_check_state_set(ad->data_button_sounds->eo_check, ad->data_button_sounds->chk_status);
+ }
+ }
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL)) {
+ status = vconf_keynode_get_bool(key);
+ if (ad->data_touch_sounds && ad->data_touch_sounds->eo_check) {
+ if (status != ad->data_touch_sounds->chk_status) {
+ ad->data_touch_sounds->chk_status = status;
+ elm_check_state_set(ad->data_touch_sounds->eo_check, ad->data_touch_sounds->chk_status);
+ }
+ }
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_SOUND_LOCK_BOOL)) {
+ status = vconf_keynode_get_bool(key);
+ if (ad->data_lock_sound && ad->data_lock_sound->eo_check) {
+ if (status != ad->data_lock_sound->chk_status) {
+ ad->data_lock_sound->chk_status = status;
+ elm_check_state_set(ad->data_lock_sound->eo_check, ad->data_lock_sound->chk_status);
+ }
+ }
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR)) {
pa_ringtone = (char *)g_strdup(vconf_keynode_get_str(key));
- if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
- {
- G_FREE(pa_ringtone);
- pa_ringtone = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+ if (setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL) {
+ if (isEmulBin()) {
+ G_FREE(pa_ringtone);
+ pa_ringtone = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ } else {
+ G_FREE(pa_ringtone);
+ pa_ringtone = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE);
+ }
ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_ringtone);
- if(ret < 0)
+ if (ret < 0)
SETTING_TRACE_DEBUG("failed to set vconf");
}
- sub_desc = setting_file_basename(pa_ringtone);
- if(ad->data_call_alert_tone)
- {
- ad->data_call_alert_tone->sub_desc = (char*)g_strdup(sub_desc);
+ sub_desc = setting_media_basename(pa_ringtone);
+ if (ad->data_call_alert_tone) {
+ ad->data_call_alert_tone->sub_desc = (char *)g_strdup(sub_desc);
elm_genlist_item_update(ad->data_call_alert_tone->item);
}
G_FREE(pa_ringtone);
G_FREE(sub_desc);
- }
- else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR)) {
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR)) {
pa_ringtone = (char *)g_strdup(vconf_keynode_get_str(key));
- if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
- {
+ if (setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL) {
G_FREE(pa_ringtone);
pa_ringtone = (char *)g_strdup(SETTING_DEFAULT_MSG_TONE);
ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, pa_ringtone);
- if(ret < 0)
+ if (ret < 0)
SETTING_TRACE_DEBUG("failed to set vconf");
}
- sub_desc = setting_file_basename(pa_ringtone);
- if(ad->data_msg_alert_tone)
- {
- ad->data_msg_alert_tone->sub_desc = (char*)g_strdup(sub_desc);
+ sub_desc = setting_media_basename(pa_ringtone);
+ if (ad->data_msg_alert_tone) {
+ ad->data_msg_alert_tone->sub_desc = (char *)g_strdup(sub_desc);
elm_genlist_item_update(ad->data_msg_alert_tone->item);
}
G_FREE(pa_ringtone);
G_FREE(sub_desc);
- }
- else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT)) {
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT)) {
status = vconf_keynode_get_int(key);
- if(status >= 0 && ad->data_msg_alert_repeat)
- {
- ad->data_msg_alert_repeat->sub_desc = (char*)g_strdup(_(repeat_type[status]));
+ if (status >= 0 && ad->data_msg_alert_repeat) {
+ ad->data_msg_alert_repeat->sub_desc = (char *)g_strdup(_(repeat_type[status]));
elm_genlist_item_update(ad->data_msg_alert_repeat->item);
}
}
- else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR)) {
- pa_ringtone = (char *)g_strdup(vconf_keynode_get_str(key));
- if(setting_profile_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL)
- {
- G_FREE(pa_ringtone);
- pa_ringtone = (char *)g_strdup(SETTING_DEFAULT_EMAIL_TONE);
- ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, pa_ringtone);
- if(ret < 0)
- SETTING_TRACE_DEBUG("failed to set vconf");
- }
- sub_desc = setting_file_basename(pa_ringtone);
- if(ad->data_email_alert_tone)
- {
- ad->data_email_alert_tone->sub_desc = (char*)g_strdup(sub_desc);
- elm_genlist_item_update(ad->data_email_alert_tone->item);
- }
- G_FREE(pa_ringtone);
- G_FREE(sub_desc);
- }
- else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT)) {
- status = vconf_keynode_get_int(key);
-
- if(status >= 0 && ad->data_email_alert_repeat)
- {
- ad->data_email_alert_repeat->sub_desc = (char*)g_strdup(_(repeat_type[status]));
- elm_genlist_item_update(ad->data_email_alert_repeat->item);
- }
- }
}
int setting_profile_listen_vconf_change(void *data)
int ret = 0;
ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
- setting_profile_vconf_change_cb, data);
+ setting_profile_vconf_change_cb, data);
setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SYSMAN_MMC_STATUS, ret);
+ (char *)VCONFKEY_SYSMAN_MMC_STATUS, ret);
ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- setting_profile_vconf_change_cb, data);
+ setting_profile_vconf_change_cb, data);
setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, ret);
+ (char *)VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, ret);
ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- setting_profile_vconf_change_cb, data);
+ setting_profile_vconf_change_cb, data);
+ setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
+ (char *)VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, ret);
+
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
+ setting_profile_vconf_change_cb, data);
+ setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
+ (char *)VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL, ret);
+
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
+ setting_profile_vconf_change_cb, data);
+ setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
+ (char *)VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL, ret);
+
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
+ setting_profile_vconf_change_cb, data);
setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, ret);
+ (char *)VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL, ret);
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
+ setting_profile_vconf_change_cb, data);
+ setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
+ (char *)VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, ret);
/* add ringtone tab's vconfkeys */
- // incoming call ringtone.
+ /* incoming call ringtone. */
ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
- setting_profile_vconf_change_cb, data);
+ setting_profile_vconf_change_cb, data);
setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, ret);
- // message alert tone
+ (char *)VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, ret);
+ /* message alert tone */
ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
- setting_profile_vconf_change_cb, data);
+ setting_profile_vconf_change_cb, data);
setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ret);
- // message alert repitition.
+ (char *)VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ret);
+ /* message alert repitition. */
ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT,
- setting_profile_vconf_change_cb, data);
- setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, ret);
- // email alert tone.
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR,
- setting_profile_vconf_change_cb, data);
+ setting_profile_vconf_change_cb, data);
setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, ret);
- // email_alert_repitition
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT,
- setting_profile_vconf_change_cb, data);
- setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)",
- (char *)VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT, ret);
+ (char *)VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, ret);
return 0;
}
{
/* unused listen */
(void)vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
- setting_profile_vconf_change_cb);
+ setting_profile_vconf_change_cb);
(void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- setting_profile_vconf_change_cb);
+ setting_profile_vconf_change_cb);
(void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- setting_profile_vconf_change_cb);
+ setting_profile_vconf_change_cb);
+
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
+ setting_profile_vconf_change_cb);
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
+ setting_profile_vconf_change_cb);
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
+ setting_profile_vconf_change_cb);
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
+ setting_profile_vconf_change_cb);
(void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
- setting_profile_vconf_change_cb);
+ setting_profile_vconf_change_cb);
(void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
- setting_profile_vconf_change_cb);
+ setting_profile_vconf_change_cb);
(void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT,
- setting_profile_vconf_change_cb);
- (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR,
- setting_profile_vconf_change_cb);
- (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT,
- setting_profile_vconf_change_cb);
+ setting_profile_vconf_change_cb);
return 0;
}
+static Eina_Bool __volume_up_timer_cb(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(!data, EINA_FALSE);
+ SettingProfileUG *ad = (SettingProfileUG *)data;
+
+ if (ad->is_pressing == FALSE) {
+ ad->updown_timer = NULL;
+ return EINA_FALSE;
+ }
+
+ sound_type_e sound_type = 0;
+ int volume = 0;
+ sound_manager_get_current_sound_type(&sound_type);
+ if (sound_type == SOUND_TYPE_MEDIA) {
+ int ret = sound_manager_get_volume(sound_type, &volume);
+ SETTING_TRACE("ret:%d", ret);
+ if (volume < 15) {
+ sound_manager_set_volume(sound_type, ++volume);
+ if (ad->data_media_volume && ad->data_media_volume->eo_check) {
+ ad->data_media_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_media_volume->eo_check, volume);
+ }
+ }
+ } else {
+ int ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
+ SETTING_TRACE("ret:%d", ret);
+ if (volume < 15) {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, ++volume);
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_call_volume->eo_check, volume);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d", ad->data_call_volume->chk_status);
+ }
+ }
+ }
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool __volume_down_timer_cb(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(!data, EINA_FALSE);
+ SettingProfileUG *ad = (SettingProfileUG *)data;
+
+ if (ad->is_pressing == FALSE) {
+ ad->updown_timer = NULL;
+ return EINA_FALSE;
+ }
+
+ sound_type_e sound_type = 0;
+ int volume = 0;
+ sound_manager_get_current_sound_type(&sound_type);
+ if (sound_type == SOUND_TYPE_MEDIA) {
+ int ret = sound_manager_get_volume(sound_type, &volume);
+ SETTING_TRACE("ret:%d", ret);
+ if (volume > 0) {
+ sound_manager_set_volume(sound_type, --volume);
+ if (ad->data_media_volume && ad->data_media_volume->eo_check) {
+ ad->data_media_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_media_volume->eo_check, volume);
+ }
+ }
+ } else {
+ int ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
+ SETTING_TRACE("ret:%d", ret);
+ if (volume > 0) {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, --volume);
+ if (volume == 0) {
+ /* change to Vibration mode */
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
+ vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
+ PLAY_FEEDBACK(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_VIBRATION_ON)
+
+ ad->data_call_volume->chk_status = volume;
+ setting_profile_update_slider_icon(ad->data_call_volume, SND_SLIDER_CALL);
+ }
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_call_volume->eo_check, volume);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d", ad->data_call_volume->chk_status);
+ }
+ }
+ }
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool __volume_key_up_cb(void *data, int type, void *event)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(!data || !event, EINA_TRUE);
+ SettingProfileUG *ad = (SettingProfileUG *)data;
+
+ Ecore_Event_Key *ev = event;
+ char *key = (char *)ev->key;
+ if (!key)
+ return EINA_TRUE;
+
+ if (!safeStrCmp(key, KEY_VOLUMEUP) || !safeStrCmp(key, KEY_VOLUMEDOWN)) {
+ ad->is_pressing = FALSE;
+ if (ad->updown_timer) {
+ ecore_timer_del(ad->updown_timer);
+ ad->updown_timer = NULL;
+ }
+ }
+ return EINA_TRUE;
+}
+
+static Eina_Bool __volume_key_down_cb(void *data, int type, void *event)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(!data || !event, EINA_TRUE);
+ SettingProfileUG *ad = (SettingProfileUG *)data;
+
+ Ecore_Event_Key *ev = event;
+ char *key = (char *)ev->key;
+ if (!key)
+ return EINA_TRUE;
+
+ /* get current sound type */
+ sound_type_e sound_type;
+ int volume = 0;
+
+ if (!safeStrCmp(key, KEY_VOLUMEUP)) {
+ if (ad->view_type != SETTING_PROF_VIEW_VOL) return EINA_TRUE;
+
+ ad->is_pressing = TRUE;
+
+ sound_manager_get_current_sound_type(&sound_type);
+ if (sound_type == SOUND_TYPE_MEDIA) {
+ int ret = sound_manager_get_volume(sound_type, &volume);
+ SETTING_TRACE("ret:%d", ret);
+ if (volume < 15) {
+ sound_manager_set_volume(sound_type, ++volume);
+ if (ad->data_media_volume && ad->data_media_volume->eo_check) {
+ ad->data_media_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_media_volume->eo_check, volume);
+ }
+ }
+ } else {
+ int ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
+ SETTING_TRACE("ret:%d", ret);
+ if (volume < 15) {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, ++volume);
+ if (volume == 1) {
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
+ vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE);
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ Evas_Object *cur_icon = elm_object_content_unset(ad->data_call_volume->eo_check);
+ if (cur_icon) {
+ evas_object_del(cur_icon);
+ cur_icon = NULL;
+ }
+ Evas_Object *icon = elm_icon_add(ad->data_call_volume->eo_check);
+ elm_image_file_set(icon, setting_profile_get_slider_icon(SND_SLIDER_CALL, volume), NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ elm_object_content_set(ad->data_call_volume->eo_check, icon);
+ evas_object_show(icon);
+ }
+ }
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_call_volume->eo_check, volume);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d", ad->data_call_volume->chk_status);
+ }
+ }
+
+ if (ad->mp_ringtone == NULL) {
+ setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
+ if (volume > 0) {
+ char *pa_tone_path = NULL;
+ pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+ if (pa_tone_path == NULL) {
+ if (isEmulBin())
+ pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+
+ if (vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
+ FREE(pa_tone_path);
+ return EINA_TRUE;
+ }
+ }
+ setting_profile_play_sound_origin(&(ad->mp_ringtone), ad, NULL,
+ pa_tone_path,
+ volume,
+ SOUND_TYPE_RINGTONE);
+ }
+ } else {
+ player_state_e state;
+ player_get_state(*(ad->mp_ringtone), &state);
+ SETTING_TRACE("ringtone player status : %d", state);
+ if (state == PLAYER_STATE_PAUSED) {
+ player_start(*(ad->mp_ringtone));
+ }
+ }
+ }
+ ad->updown_timer = ecore_timer_add(0.5, __volume_up_timer_cb, ad);
+ } else if (!safeStrCmp(key, KEY_VOLUMEDOWN)) {
+ if (ad->view_type != SETTING_PROF_VIEW_VOL) return EINA_TRUE;
+ ad->is_pressing = TRUE;
+ sound_manager_get_current_sound_type(&sound_type);
+ if (sound_type == SOUND_TYPE_MEDIA) {
+ int ret = sound_manager_get_volume(sound_type, &volume);
+ SETTING_TRACE("ret:%d", ret);
+ if (volume > 0) {
+ sound_manager_set_volume(sound_type, --volume);
+ if (ad->data_media_volume && ad->data_media_volume->eo_check) {
+ ad->data_media_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_media_volume->eo_check, volume);
+ }
+ }
+ } else {
+ int ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
+ SETTING_TRACE("ret:%d", ret);
+ if (volume > 0) {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, --volume);
+ if (volume == 0) {
+ /* change to Vibration mode */
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, FALSE);
+ vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, TRUE);
+
+ PLAY_FEEDBACK(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_VIBRATION_ON)
+
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ Evas_Object *cur_icon = elm_object_content_unset(ad->data_call_volume->eo_check);
+ if (cur_icon) {
+ evas_object_del(cur_icon);
+ cur_icon = NULL;
+ }
+ Evas_Object *icon = elm_icon_add(ad->data_call_volume->eo_check);
+ elm_image_file_set(icon, setting_profile_get_slider_icon(SND_SLIDER_CALL, volume), NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ elm_object_content_set(ad->data_call_volume->eo_check, icon);
+ evas_object_show(icon);
+ }
+ }
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_call_volume->eo_check, volume);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d", ad->data_call_volume->chk_status);
+ }
+ }
+ if (ad->mp_ringtone == NULL) {
+ setting_profile_close_other_mm_players_but_type(ad, SOUND_TYPE_RINGTONE);
+ if (volume > 0) {
+ char *pa_tone_path = NULL;
+ pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+ if (pa_tone_path == NULL) {
+ if (isEmulBin())
+ pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+
+ if (vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
+ FREE(pa_tone_path);
+ return EINA_TRUE;
+ }
+ }
+ setting_profile_play_sound_origin(&(ad->mp_ringtone), ad, NULL,
+ pa_tone_path,
+ volume,
+ SOUND_TYPE_RINGTONE);
+ }
+ } else {
+ player_state_e state;
+ player_get_state(*(ad->mp_ringtone), &state);
+ SETTING_TRACE("ringtone player status : %d", state);
+ if (state == PLAYER_STATE_PAUSED) {
+ player_start(*(ad->mp_ringtone));
+ }
+ }
+ }
+ ad->updown_timer = ecore_timer_add(0.5, __volume_down_timer_cb, ad);
+ } else if (!safeStrCmp(key, KEY_MENU)) {
+ SETTING_TRACE("KEY_MENU CLICK.");
+ if (NULL != ad->vib_player_btn) {
+ SETTING_TRACE_DEBUG("ad->vib_player_btn is not NULL.");
+ _vib_more_key_change_play_btn_icon(ad);
+ } else if (ad->personal_vib_playing_flag == TRUE) {
+ SETTING_TRACE("personal improvised vib is playing...");
+ setting_profile_sound_personal_vib_stop_by_homekey_press(ad);
+ }
+ }
+
+ return EINA_TRUE;
+}
+
+#if 0
void __setting_profile_ug_key_grab(SettingProfileUG *ad)
{
SETTING_TRACE_BEGIN;
int ret = 0;
- if(ad == NULL)
+ if (ad == NULL)
return;
+ /* To prevent conflict with volume app */
+ vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 2);
+
disp = ecore_x_display_get();
- xwin = elm_win_xwindow_get((Evas_Object*)ug_get_window());
+ xwin = elm_win_xwindow_get(ad->win_get);
ret = utilx_grab_key(disp, xwin, KEY_VOLUMEUP, TOP_POSITION_GRAB);
- if(ret)
- return;
+ if (ret) {
+ SETTING_TRACE_DEBUG("KEY_VOLUMEUP grab failed");
+ }
ret = utilx_grab_key(disp, xwin, KEY_VOLUMEDOWN, TOP_POSITION_GRAB);
- if(ret)
- return;
+ if (ret) {
+ SETTING_TRACE_DEBUG("KEY_VOLUMEDOWN grab failed");
+ }
+ if (ad->keydown_handler) {
+ ecore_event_handler_del(ad->keydown_handler);
+ ad->keydown_handler = NULL;
+ }
+ if (ad->keyup_handler) {
+ ecore_event_handler_del(ad->keyup_handler);
+ ad->keyup_handler = NULL;
+ }
+ ad->keydown_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __volume_key_down_cb, ad);
+ if (!ad->keydown_handler)
+ SETTING_TRACE_DEBUG("ecore_event_handler_add() failed");
+
+ ad->keyup_handler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, __volume_key_up_cb, ad);
+ if (!ad->keyup_handler)
+ SETTING_TRACE_DEBUG("ecore_event_handler_add() failed");
- ad->event_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, NULL, NULL);
SETTING_TRACE_END;
}
+#endif
+
+#if 0
void __setting_profile_ug_key_ungrab(SettingProfileUG *ad)
{
SETTING_TRACE_BEGIN;
int ret = 0;
- if(ad == NULL)
+ if (ad == NULL)
return;
+ /* To prevent conflict with volume app */
+ vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 0);
+
disp = ecore_x_display_get();
- xwin = elm_win_xwindow_get((Evas_Object*)ug_get_window());
+ xwin = elm_win_xwindow_get(ad->win_get);
ret = utilx_ungrab_key(disp, xwin, KEY_VOLUMEUP);
- if(ret)
- return;
+ if (ret) {
+ SETTING_TRACE_DEBUG("KEY_VOLUMEUP ungrab failed");
+ }
ret = utilx_ungrab_key(disp, xwin, KEY_VOLUMEDOWN);
- if(ret)
- return;
+ if (ret) {
+ SETTING_TRACE_DEBUG("KEY_VOLUMEDOWN ungrab failed");
+ }
- ecore_event_handler_del(ad->event_handler);
+ if (ad->updown_timer) {
+ ecore_timer_del(ad->updown_timer);
+ ad->updown_timer = NULL;
+ }
+ if (ad->keydown_handler) {
+ ecore_event_handler_del(ad->keydown_handler);
+ ad->keydown_handler = NULL;
+ }
+ if (ad->keyup_handler) {
+ ecore_event_handler_del(ad->keyup_handler);
+ ad->keyup_handler = NULL;
+ }
}
+#endif
+
+#if 0
+static void __sound_manager_active_device_changed_cb(sound_device_in_e in, sound_device_out_e out, void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!user_data);
+ SettingProfileUG *ad = (SettingProfileUG *)user_data;
+
+ if (!ad->volume_popup)
+ return;
+ /*Update media volume for Earjack */
+ if (ad->data_media_volume && ad->data_media_volume->eo_check) {
+ int media_volume = 0;
+ sound_manager_get_volume(SOUND_TYPE_MEDIA, &media_volume);
+ SETTING_TRACE("media volume : %d", media_volume);
+ if (media_volume != ad->data_media_volume->chk_status) {
+ ad->data_media_volume->chk_status = media_volume;
+ elm_slider_value_set(ad->data_media_volume->eo_check, ad->data_media_volume->chk_status);
+ }
+ }
+}
+#endif
static void *setting_profile_ug_on_create(ui_gadget_h ug,
- enum ug_mode mode, service_h service,
- void *priv)
+ enum ug_mode mode, app_control_h service,
+ void *priv)
{
SETTING_TRACE_BEGIN;
- //appcore_measure_start();
+ /*appcore_measure_start(); */
retv_if(priv == NULL, NULL);
SettingProfileUG *profileUG = priv;
setting_retvm_if(profileUG->win_main_layout == NULL, NULL, "cannot get main window ");
- //At present, there are only 4 types supported:RINGTONE,NOTIFICATION,SYSTEM,MEDIA
+ /*elm_win_wm_rotation_preferred_rotation_set(profileUG->win_get, 0); */
+#if 0
+ /*At present, there are only 4 types supported:RINGTONE,NOTIFICATION,SYSTEM,MEDIA */
+ /* To apply correct volume value to slider if volume can be changed to other modules. */
sound_manager_set_volume_changed_cb(__sound_volume_changed_cb, profileUG);
+#endif
+#if 0
+ sound_manager_set_active_device_changed_cb(__sound_manager_active_device_changed_cb, profileUG);
+#endif
+ bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
- setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
+ setting_create_Gendial_itc("1line", &(profileUG->itc_1text_1icon));
+ setting_create_Gendial_itc("groupindex", &(profileUG->itc_group_item));
+ setting_create_Gendial_itc("2line.top", &(profileUG->itc_2text_2));
+
+ profileUG->itc_layout.item_style = "slider.main";
+ profileUG->itc_layout.func.text_get = __gl_sound_slider_text_get;
+ profileUG->itc_layout.func.content_get = __gl_sound_slider_content_get;
+ profileUG->itc_layout.func.state_get = NULL;
+ profileUG->itc_layout.func.del = __gl_sound_slider_del;
+
+ setting_create_Gendial_itc("2line.top", &(profileUG->itc_2text_3_parent));
+ setting_create_Gendial_itc("1line", &(profileUG->itc_1icon_1text_sub));
+ setting_create_Gendial_itc("multiline_sub", &(profileUG->itc_bg_1icon));
/* register view node table */
setting_view_node_table_intialize();
setting_view_node_table_register(&setting_view_profile_sound_main, NULL);
- setting_create_Gendial_itc("dialogue/1text.1icon", &(profileUG->itc_1text_1icon));
- setting_create_Gendial_itc("dialogue/title", &(profileUG->itc_group_item));
- setting_create_Gendial_itc("dialogue/2text.3", &(profileUG->itc_2text_2));
- profileUG->itc_layout.item_style = "dialogue/1icon";
- profileUG->itc_layout.func.text_get = NULL; //__gl_sound_slider_text_get;
- profileUG->itc_layout.func.content_get = __gl_sound_slider_content_get;
- profileUG->itc_layout.func.state_get = NULL;
- profileUG->itc_layout.func.del = __gl_sound_slider_del;
+ int value = -1;
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &value);
+ if (value == 1) {
+ profileUG->sound_on = TRUE;
+ } else if (value == 0) {
+ profileUG->sound_on = FALSE;
+ }
+
+ vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &value);
+ if (value == 1) {
+ profileUG->vibration_on = TRUE;
+ } else if (value == 0) {
+ profileUG->vibration_on = FALSE;
+ }
+
+ app_control_get_caller(service, &(profileUG->viewtype));
+
+ /* creating a view. */
+ setting_view_node_set_cur_view(&setting_view_profile_sound_main);
+ setting_view_create(&setting_view_profile_sound_main, (void *)profileUG);
+
+ evas_object_event_callback_add(profileUG->win_main_layout,
+ EVAS_CALLBACK_RESIZE,
+ setting_profile_ug_cb_resize, profileUG);
+
+ setting_profile_listen_vconf_change(profileUG);
+
+ return profileUG->ly_main;
+}
+
+static void setting_profile_ug_on_start(ui_gadget_h ug, app_control_h service, void *priv)
+{
+ SETTING_TRACE_BEGIN;
+ SettingProfileUG *ad = (SettingProfileUG *)priv;
+
+ /* To support 2nd depth search */
+#if 1
+ char *viewtype = NULL;
+ app_control_get_extra_data(service, "viewtype", &viewtype);
+
+ char *tab = NULL;
+ app_control_get_extra_data(service, "tab", &tab);
+
+ char *keyword = NULL;
+ app_control_get_extra_data(service, "keyword", &keyword);
+
+
+ SETTING_TRACE_DEBUG("----------------------------------------------");
+ SETTING_TRACE_DEBUG("SEARCH FUNCTION : viewtype (%s)", viewtype);
+ SETTING_TRACE_DEBUG("SEARCH FUNCTION : tab(%s)", tab);
+ SETTING_TRACE_DEBUG("SEARCH FUNCTION : keyword(%s)", keyword);
+ SETTING_TRACE_DEBUG("----------------------------------------------");
+#endif
+
+ if (keyword && safeStrCmp(_(keyword), _("IDS_CST_MBODY_ADAPT_SOUND")) == 0) {
+ SETTING_TRACE("FOUND - Adapt Sound");
+ /*elm_toolbar_item_selected_set(ad->ctrl_item[SETTING_MAIN_VIEW_DEVICE], EINA_TRUE); */
+ if (ad->data_adapt_sound && ad->data_adapt_sound->item)
+ elm_genlist_item_bring_in(ad->data_adapt_sound->item, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ } else {
+ SETTING_TRACE("NOT FOUND - Adapt Sound");
+ }
+
+ if (tab && !safeStrCmp(tab, "second")) {
+ elm_toolbar_item_selected_set(ad->ctrl_item[1], EINA_TRUE);
+ }
+
+ FREE(viewtype);
+ FREE(tab);
+ FREE(keyword);
+
+ SETTING_TRACE_END;
+}
+
+static void setting_profile_ug_on_pause(ui_gadget_h ug, app_control_h service, void *priv)
+{
+ ret_if(priv == NULL);
+ SettingProfileUG *profileUG = (SettingProfileUG *)priv;
+
+ if (profileUG->no_play_popup) {
+ evas_object_del(profileUG->no_play_popup);
+ profileUG->no_play_popup = NULL;
+ }
+
+ /* if click home key, players have to be closed */
+ setting_profile_close_all_mm_players(profileUG);
- setting_create_Gendial_itc("dialogue/2text.3/expandable", &(profileUG->itc_2text_3_parent));
- setting_create_Gendial_itc("dialogue/1text.1icon/expandable2", &(profileUG->itc_1icon_1text_sub));
- setting_create_Gendial_itc("multiline/1text", &(profileUG->itc_bg_1icon));
+ /* If sound ug is paused, others can use volume HW key popup (set 0) */
+ vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 0);
+}
- profileUG->itc_seperator.item_style = "dialogue/separator";
- profileUG->itc_seperator.func.text_get = NULL;
- profileUG->itc_seperator.func.content_get = NULL;
- profileUG->itc_seperator.func.state_get = NULL;
- profileUG->itc_seperator.func.del = NULL;
+void setting_profile_ug_update_volume_sliders(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!data);
+ SettingProfileUG *profileUG = (SettingProfileUG *)data;
- /* creating a view. */
- setting_view_node_set_cur_view(&setting_view_profile_sound_main);
- setting_view_create(&setting_view_profile_sound_main, (void *)profileUG);
+ if (!profileUG->volume_popup)
+ return;
+ if (!profileUG->data_call_volume)
+ return;
- evas_object_event_callback_add(profileUG->win_main_layout,
- EVAS_CALLBACK_RESIZE,
- setting_profile_ug_cb_resize, profileUG);
+ if (profileUG->data_call_volume && profileUG->data_call_volume->eo_check) {
+ int volume = 0;
+ sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
+ if (profileUG->data_call_volume->chk_status != volume) {
+ profileUG->data_call_volume->chk_status = volume;
+ elm_slider_value_set(profileUG->data_call_volume->eo_check, profileUG->data_call_volume->chk_status);
+ SETTING_TRACE("profileUG->data_call_volume->chk_status : %d", profileUG->data_call_volume->chk_status);
- setting_profile_listen_vconf_change(profileUG);
+ setting_profile_update_slider_icon(profileUG->data_call_volume, SND_SLIDER_CALL);
+ }
+ }
- return profileUG->ly_main;
-}
+ if (profileUG->data_noti_volume && profileUG->data_noti_volume->eo_check && (profileUG->data_call_volume->chk_status > 0)) {
+ int volume = 0;
+ sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &volume);
+ if (profileUG->data_noti_volume->chk_status != volume) {
+ profileUG->data_noti_volume->chk_status = volume;
+ elm_slider_value_set(profileUG->data_noti_volume->eo_check, profileUG->data_noti_volume->chk_status);
-static void setting_profile_ug_on_start(ui_gadget_h ug, service_h service, void *priv)
-{
-}
+ setting_profile_update_slider_icon(profileUG->data_noti_volume, SND_SLIDER_NOTI);
+ }
+ }
-static void setting_profile_ug_on_pause(ui_gadget_h ug, service_h service, void *priv)
-{
- ret_if(priv == NULL);
- SettingProfileUG *profileUG = (SettingProfileUG*)priv;
+ if (profileUG->data_media_volume && profileUG->data_media_volume->eo_check) {
+ int volume = 0;
+ sound_manager_get_volume(SOUND_TYPE_MEDIA, &volume);
+ if (profileUG->data_media_volume->chk_status != volume) {
+ profileUG->data_media_volume->chk_status = volume;
+ elm_slider_value_set(profileUG->data_media_volume->eo_check, profileUG->data_media_volume->chk_status);
+ }
+ }
- /* if click home key, players have to be closed */
- setting_profile_close_all_mm_players(profileUG);
+ if (profileUG->data_touch_volume && profileUG->data_touch_volume->eo_check && (profileUG->data_call_volume->chk_status > 0)) {
+ int volume = 0;
+ sound_manager_get_volume(SOUND_TYPE_SYSTEM, &volume);
+ if (profileUG->data_touch_volume->chk_status != volume) {
+ profileUG->data_touch_volume->chk_status = volume;
+ elm_slider_value_set(profileUG->data_touch_volume->eo_check, profileUG->data_touch_volume->chk_status);
+
+ setting_profile_update_slider_icon(profileUG->data_touch_volume, SND_SLIDER_SYSTEM);
+ }
+ }
}
-static void setting_profile_ug_on_resume(ui_gadget_h ug, service_h service, void *priv)
+static void setting_profile_ug_on_resume(ui_gadget_h ug, app_control_h service, void *priv)
{
ret_if(priv == NULL);
SettingProfileUG *profileUG = (SettingProfileUG *)priv;
+ /* If current view is sound main, block volume app */
+ /* To prevent conflict with volume app */
+ if (profileUG->volume_popup) {
+ vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 2);
+ } else {
+ vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 0);
+ }
+
+ setting_profile_ug_update_volume_sliders(profileUG);
+
/* update path of tones */
char *pa_tone_path = NULL;
- if(profileUG->data_call_volume)
- {
- int volume;
- SETTING_TRACE_DEBUG("ringtone volume %x", profileUG->data_call_volume);
- sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume); /* system */
- SETTING_TRACE_DEBUG("get_volume is %d", volume);
- elm_slider_value_set(profileUG->data_call_volume->eo_check, (double)volume);
- SETTING_TRACE_DEBUG("update to new value %d", volume);
- }
- if(profileUG->data_noti_volume)
- {
- int volume;
- SETTING_TRACE_DEBUG("noti volume %x", profileUG->data_noti_volume);
- sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &volume); /* system */
- SETTING_TRACE_DEBUG("get_volume is %d", volume);
- elm_slider_value_set(profileUG->data_noti_volume->eo_check, (double)volume);
- SETTING_TRACE_DEBUG("update to new value %d", volume);
- }
- if(profileUG->data_media_volume)
- {
- int volume;
- SETTING_TRACE_DEBUG("media volume %x", profileUG->data_media_volume);
- sound_manager_get_volume(SOUND_TYPE_MEDIA, &volume); /* system */
- SETTING_TRACE_DEBUG("get_volume is %d", volume);
- elm_slider_value_set(profileUG->data_media_volume->eo_check, (double)volume);
- SETTING_TRACE_DEBUG("update to new value %d", volume);
- }
- if(profileUG->data_touch_volume)
- {
- int volume;
- SETTING_TRACE_DEBUG("system volume %x", profileUG->data_touch_volume);
- sound_manager_get_volume(SOUND_TYPE_SYSTEM, &volume); /* system */
- SETTING_TRACE_DEBUG("get_volume is %d", volume);
- elm_slider_value_set(profileUG->data_touch_volume->eo_check, (double)volume);
- SETTING_TRACE_DEBUG("update to new value %d", volume);
- }
-
/* 1. incoming call ringtone */
- if(profileUG->data_call_alert_tone)
- {
+ if (profileUG->data_call_alert_tone) {
SETTING_TRACE_DEBUG("change call_alert_tone %x", profileUG->data_call_alert_tone);
pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
- if((pa_tone_path == NULL) || (setting_profile_check_file_exist(profileUG, pa_tone_path) == SETTING_RETURN_FAIL))
- {
- pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
- if(vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0)
+ if ((pa_tone_path == NULL) || (setting_profile_check_file_exist(profileUG, pa_tone_path) == SETTING_RETURN_FAIL)) {
+ if (isEmulBin())
+ pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ pa_tone_path = (char *)strdup(SETTING_DEFAULT_CALL_TONE);
+ if (vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_tone_path) < 0) {
+ FREE(pa_tone_path);
return;
- profileUG->data_call_alert_tone->sub_desc = setting_file_basename(pa_tone_path);
+ }
+ profileUG->data_call_alert_tone->sub_desc = setting_media_basename(pa_tone_path);
elm_genlist_item_update(profileUG->data_call_alert_tone->item);
}
-
FREE(pa_tone_path);
}
/* 2. message ringtone */
- if(profileUG->data_msg_alert_tone)
- {
+ if (profileUG->data_msg_alert_tone) {
SETTING_TRACE_DEBUG("change msg_alert_tone %x", profileUG->data_msg_alert_tone);
pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
- if((pa_tone_path == NULL) || (setting_profile_check_file_exist(profileUG, pa_tone_path) == SETTING_RETURN_FAIL))
- {
+ if ((pa_tone_path == NULL) || (setting_profile_check_file_exist(profileUG, pa_tone_path) == SETTING_RETURN_FAIL)) {
pa_tone_path = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
- if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE) < 0) {
+ if (vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE) < 0) {
FREE(pa_tone_path);
return;
}
- profileUG->data_msg_alert_tone->sub_desc = setting_file_basename(pa_tone_path);
+ profileUG->data_msg_alert_tone->sub_desc = setting_media_basename(pa_tone_path);
elm_genlist_item_update(profileUG->data_msg_alert_tone->item);
}
-
FREE(pa_tone_path);
-
}
+ if (profileUG->is_dock_on) {
+ /*__setting_profile_sound_persional_vib_record_pause_play(profileUG, false); */
- /* 3. email ringtone */
- if(profileUG->data_email_alert_tone)
- {
- SETTING_TRACE_DEBUG("change email_alert_tone %x", profileUG->data_email_alert_tone);
- pa_tone_path = vconf_get_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR);
- if((pa_tone_path == NULL) || (setting_profile_check_file_exist(profileUG, pa_tone_path) == SETTING_RETURN_FAIL))
- {
- pa_tone_path = (char *)strdup(SETTING_DEFAULT_MSG_TONE);
- if(vconf_set_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE) < 0) {
- FREE(pa_tone_path);
- return;
+ if (profileUG->curitem) {
+ Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(profileUG->curitem);
+ if (data_subItem) {
+ data_subItem->isPlaying = EINA_FALSE;
}
- profileUG->data_email_alert_tone->sub_desc = setting_file_basename(pa_tone_path);
- elm_genlist_item_update(profileUG->data_email_alert_tone->item);
+ Evas_Object *btn = elm_object_item_part_content_get(profileUG->curitem, "elm.icon.2");
+ if (btn) {
+ elm_object_item_part_content_unset(profileUG->curitem, "elm.icon.2");
+ evas_object_hide(btn);
+ evas_object_del(btn);
+ }
+ elm_genlist_item_update(profileUG->curitem);
}
-
- FREE(pa_tone_path);
-
}
}
-static void setting_profile_ug_on_destroy(ui_gadget_h ug, service_h service, void *priv)
+static void setting_profile_ug_on_destroy(ui_gadget_h ug, app_control_h service, void *priv)
{
+ SETTING_TRACE_BEGIN;
ret_if(priv == NULL);
SettingProfileUG *profileUG = priv;
+ /*elm_win_wm_rotation_preferred_rotation_set(profileUG->win_get, -1); */
+
setting_profile_unlisten_vconf_change(profileUG);
evas_object_event_callback_del(profileUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_profile_ug_cb_resize); /* fix flash issue for gallery */
profileUG->ug = ug;
-
- //At present, there are only 4 types supported:RINGTONE,NOTIFICATION,SYSTEM,MEDIA
+#if 0
+ /* cb should be unset. */
sound_manager_unset_volume_changed_cb();
+#endif
+ setting_profile_close_all_mm_players(profileUG);
- int ret = haptic_close(profileUG->hnd_hpt);
- if (ret != 0) {
- SETTING_TRACE_DEBUG("%s*** [ERR] Failed haptic_deinitialize ***%s",
- SETTING_FONT_RED, SETTING_FONT_BLACK);
+ if (profileUG->no_play_popup) {
+ evas_object_del(profileUG->no_play_popup);
+ profileUG->no_play_popup = NULL;
}
- setting_profile_close_all_mm_players(profileUG);
+
+ char *data = NULL;
+
+ if (profileUG->updown_timer) {
+ ecore_timer_del(profileUG->updown_timer);
+ profileUG->updown_timer = NULL;
+ }
+ if (profileUG->keydown_handler) {
+ ecore_event_handler_del(profileUG->keydown_handler);
+ profileUG->keydown_handler = NULL;
+ }
+ if (profileUG->keyup_handler) {
+ ecore_event_handler_del(profileUG->keyup_handler);
+ profileUG->keyup_handler = NULL;
+ }
+
+ /*app_control_destroy(profileUG->source_svc); */
+
+ FREE(profileUG->viewtype);
/* it is the view manage strategy to invoke view's destory operation. */
setting_view_destroy(&setting_view_profile_sound_main, profileUG);
+
if (NULL != ug_get_layout(profileUG->ug)) {
evas_object_hide((Evas_Object *) ug_get_layout(profileUG->ug));
evas_object_del((Evas_Object *) ug_get_layout(profileUG->ug));
}
+ SETTING_TRACE_END;
}
-static void setting_profile_ug_on_message(ui_gadget_h ug, service_h msg,
- service_h service, void *priv)
+static void setting_profile_ug_on_message(ui_gadget_h ug, app_control_h msg,
+ app_control_h service, void *priv)
{
}
+static void setting_profile_ug_update_title(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ SettingProfileUG *ad = (SettingProfileUG *)data;
+
+ if (setting_view_profile_sound_main.is_create == TRUE) {
+ int repeat_value = 0;
+ if (vconf_get_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &repeat_value) == 0) {
+ if (ad->data_msg_alert_repeat && ad->data_msg_alert_repeat->item) {
+ ad->data_msg_alert_repeat->sub_desc = (char *)g_strdup(_(repeat_type[repeat_value]));
+ elm_genlist_item_update(ad->data_msg_alert_repeat->item);
+ }
+ }
+ }
+}
+
static void setting_profile_ug_on_event(ui_gadget_h ug,
- enum ug_event event, service_h service, void *priv)
+ enum ug_event event, app_control_h service, void *priv)
{
SETTING_TRACE_BEGIN;
SettingProfileUG *ad = (SettingProfileUG *)priv;
break;
case UG_EVENT_LOW_BATTERY:
break;
- case UG_EVENT_LANG_CHANGE:
+ case UG_EVENT_LANG_CHANGE: {
+ SETTING_TRACE("laugnage changes");
+ }
break;
case UG_EVENT_ROTATE_PORTRAIT:
- break;
case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
break;
case UG_EVENT_ROTATE_LANDSCAPE:
- break;
case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
break;
case UG_EVENT_REGION_CHANGE:
}
static void setting_profile_ug_on_key_event(ui_gadget_h ug,
- enum ug_key_event event, service_h service, void *priv)
+ enum ug_key_event event, app_control_h service, void *priv)
{
ret_if(priv == NULL);
/* close mm plaer */
setting_profile_close_all_mm_players(ad);
/* close vibration */
- #if MIGRATION_HAPTIC
+#if MIGRATION_HAPTIC
if (haptic_stop_all_effects(ad->hnd_hpt) != 0) {
SETTING_TRACE("ERROR haptic_stop_all_effects");
}
- #endif
+#endif
}
setting_view_cb_at_endKey(ad);
}
UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
{
SETTING_TRACE_BEGIN;
- //appcore_measure_start();
+ /*appcore_measure_start(); */
SettingProfileUG *profileUG = calloc(1, sizeof(SettingProfileUG));
setting_retvm_if(!profileUG, -1, "Create SettingProfileUG obj failed");
ops->key_event = setting_profile_ug_on_key_event;
ops->priv = profileUG;
ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ memset(profileUG, 0x00, sizeof(SettingProfileUG));
+
/* Haptic init */
+#if 0
SETTING_TRACE("before haptic initilization");
int haptic_return = 0;
haptic_return = haptic_open(HAPTIC_DEVICE_0, &(profileUG->hnd_hpt));
SETTING_TRACE("profileUG->hnd_hpt : %d", profileUG->hnd_hpt);
if (haptic_return < 0) {
SETTING_TRACE_DEBUG("%s*** [ERR] Failed haptic_open ***%s",
- SETTING_FONT_RED, SETTING_FONT_BLACK);
+ SETTING_FONT_RED, SETTING_FONT_BLACK);
}
+#endif
return 0;
}
*
***************************************************/
-int setting_profile_check_file_exist(void *data, const char *file_path)
+static void pipe_handler(void *data, void *buf, unsigned int len)
{
- retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- retv_if(file_path == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ SETTING_TRACE_BEGIN;
+}
- if (!ecore_file_exists(file_path)) {
- SETTING_TRACE_ERROR("Cannot find the ringtone file[%s]!", file_path);
- return SETTING_RETURN_FAIL;
+static Eina_Bool __stop_timer_cb(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(!data, EINA_FALSE);
+ SettingProfileUG *ad = (SettingProfileUG *)data;
+
+ setting_profile_close_all_mm_players(ad);
+
+ return EINA_FALSE;
+}
+
+/* complete cb : It is called that playing is done at the end of file */
+static void __mm_player_msg_cb(void *user_param)
+{
+ ret_if(user_param == NULL);
+ SettingProfileUG *ad = (SettingProfileUG *)user_param;
+
+ SETTING_TRACE("completed_cb is called.");
+ /*setting_profile_close_all_mm_players(ad); */
+
+ ecore_timer_add(0.0, (Ecore_Task_Cb)__stop_timer_cb, ad);
+ /* Do not call player_destroy() API in the same thread. So, added timer */
+
+ Ecore_Pipe *pipe;
+ pipe = ecore_pipe_add(pipe_handler, NULL);
+ ecore_pipe_write_close(pipe);
+ ecore_pipe_del(pipe);
+}
+
+static void __mm_player_interrupted_cb(player_interrupted_code_e code, void *user_data)
+{
+ ret_if(user_data == NULL);
+ SettingProfileUG *ad = (SettingProfileUG *)user_data;
+
+ SETTING_TRACE("interrupted code : %d", code);
+
+ if (ad->mp_ringtone) {
+ player_state_e state;
+ player_get_state(*(ad->mp_ringtone), &state);
+ SETTING_TRACE("ringtone player state : %d", state);
+ } else if (ad->mp_noti) {
+ player_state_e state;
+ player_get_state(*(ad->mp_noti), &state);
+ SETTING_TRACE("noti player state : %d", state);
+ } else if (ad->mp_media) {
+ player_state_e state;
+ player_get_state(*(ad->mp_media), &state);
+ SETTING_TRACE("media player state : %d", state);
}
+}
- int mmc_status = VCONFKEY_SYSMAN_MMC_REMOVED;
- vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_status);
- if (VCONFKEY_SYSMAN_MMC_MOUNTED != mmc_status)
- {
- if (!safeStrNCmp(SETTING_PROFILE_MMC_PATH, file_path, safeStrLen(SETTING_PROFILE_MMC_PATH)))
- {
- return SETTING_RETURN_FAIL;
+static Eina_Bool __play_timer_cb(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(!data, EINA_FALSE);
+ SettingProfileUG *ad = (SettingProfileUG *)data;
+
+ if (ad->mp_prepare_async) {
+ SETTING_TRACE("player (%x)", ad->mp_prepare_async);
+ int err;
+ player_state_e state = -1;
+ err = player_get_state(*(ad->mp_prepare_async), &state);
+ SETTING_TRACE("state:%d", state);
+
+ if (state != PLAYER_STATE_READY) {
+ SETTING_TRACE_ERROR("state of player is invalid %d", err);
+ player_unprepare(*(ad->mp_prepare_async));
+ player_destroy(*(ad->mp_prepare_async));
+ if (ad->mp_prepare_async == ad->mp_ringtone) {
+ free(ad->mp_ringtone);
+ ad->mp_ringtone = NULL;
+ } else if (ad->mp_prepare_async == ad->mp_noti) {
+ free(ad->mp_noti);
+ ad->mp_noti = NULL;
+ } else if (ad->mp_prepare_async == ad->mp_media) {
+ free(ad->mp_media);
+ ad->mp_media = NULL;
+ }
+ ad->mp_prepare_async = NULL;
+ return EINA_FALSE;
+ }
+
+ player_set_completed_cb(*(ad->mp_prepare_async), __mm_player_msg_cb, ad);
+ player_set_interrupted_cb(*(ad->mp_prepare_async), __mm_player_interrupted_cb, ad);
+
+ err = player_start(*(ad->mp_prepare_async));
+ if (err != PLAYER_ERROR_NONE) { /* if directly return error.. */
+ SETTING_TRACE_ERROR("player_start [%d]", err);
+ player_unset_completed_cb(*(ad->mp_prepare_async));
+ player_unset_interrupted_cb(*(ad->mp_prepare_async));
+ player_unprepare(*(ad->mp_prepare_async));
+ player_destroy(*(ad->mp_prepare_async));
+ if (ad->mp_prepare_async == ad->mp_ringtone) {
+ free(ad->mp_ringtone);
+ ad->mp_ringtone = NULL;
+ } else if (ad->mp_prepare_async == ad->mp_noti) {
+ free(ad->mp_noti);
+ ad->mp_noti = NULL;
+ } else if (ad->mp_prepare_async == ad->mp_media) {
+ free(ad->mp_media);
+ ad->mp_media = NULL;
+ }
+ ad->mp_prepare_async = NULL;
+ }
+ }
+ return EINA_FALSE;
+}
+
+/* Async cb : to improve slider's performance when creating player */
+static void __mm_player_prepared_cb(void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!user_data);
+ SettingProfileUG *ad = (SettingProfileUG *)user_data;
+
+ ecore_timer_add(0.0, (Ecore_Task_Cb)__play_timer_cb, ad);
+
+ Ecore_Pipe *pipe;
+ pipe = ecore_pipe_add(pipe_handler, NULL);
+ ecore_pipe_write_close(pipe);
+ ecore_pipe_del(pipe);
+}
+
+static void __no_play_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ ret_if(data == NULL);
+ SettingProfileUG *ad = (SettingProfileUG *) data;
+
+ if (ad->no_play_popup) {
+ evas_object_del(ad->no_play_popup);
+ ad->no_play_popup = NULL;
+ }
+}
+
+/* Show guide popup, when drag or tap slider if during call.
+ Do not provide pre-listening. */
+void setting_profile_create_warning_popup_during_call(void *data)
+{
+ ret_if(data == NULL);
+ SettingProfileUG *ad = (SettingProfileUG *) data;
+
+ int call_state = 0;
+ vconf_get_int(VCONFKEY_CALL_STATE, &call_state);
+ if (call_state != VCONFKEY_CALL_OFF) {
+ SETTING_TRACE("Call status is not OFF (%d)", call_state);
+ if (!ad->no_play_popup) {
+ ad->no_play_popup = setting_create_popup_with_btn(ad, ad->win_get,
+ NULL,
+ "IDS_ST_POP_UNABLE_TO_PLAY_DURING_CALL",
+ __no_play_popup_cb, 0,
+ 1, "IDS_COM_SK_OK");
}
}
- return SETTING_RETURN_SUCCESS;
}
player_h *setting_profile_play_sound(void *data, void *cb,
- char *ringtone_file,
- int vol,
- sound_type_e sound_type)
+ char *ringtone_file,
+ int vol,
+ sound_type_e sound_type)
{
/* error check */
retv_if(data == NULL, NULL);
-
SettingProfileUG *ad = (SettingProfileUG *) data;
int is_existing = setting_profile_check_file_exist(ad, ringtone_file);
- if(is_existing == SETTING_RETURN_FAIL || NULL == ringtone_file)
- {
- char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
- switch(sound_type)
- {
+ if (is_existing == SETTING_RETURN_FAIL || NULL == ringtone_file) {
+ switch (sound_type) {
case SOUND_TYPE_RINGTONE:
- ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE);
+ if (isEmulBin())
+ ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE);
break;
case SOUND_TYPE_MEDIA:
- ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_MEDIA_TONE);
+ if (isEmulBin())
+ ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_MEDIA_TONE);
break;
case SOUND_TYPE_NOTIFICATION:
ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_MSG_TONE);
break;
- case SOUND_TYPE_SYSTEM:
- svi_get_path(SVI_TYPE_SND, SVI_SND_TOUCH_TOUCH1, pattern_file, sizeof(pattern_file));
- retv_if(pattern_file == NULL, NULL);
- ad->song_playing = (char *)g_strdup(pattern_file);
- break;
default:
- ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE);
+ if (isEmulBin())
+ ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ ad->song_playing = (char *)g_strdup(SETTING_DEFAULT_CALL_TONE);
break;
}
- }
- else {
+ } else {
+ if (safeStrCmp(ringtone_file, "Silent") == 0)
+ return NULL;
+
ad->song_playing = (char *)g_strdup(ringtone_file);
}
int err = 0;
+ sound_manager_set_session_type(SOUND_SESSION_TYPE_MEDIA);
+ sound_manager_set_media_session_option(SOUND_SESSION_OPTION_PAUSE_OTHERS_WHEN_START, SOUND_SESSION_OPTION_INTERRUPTIBLE_DURING_PLAY);
+
err = player_create(player);
if (err != PLAYER_ERROR_NONE) {
SETTING_TRACE_ERROR("creating the player handle failed[%d]", err);
free(player);
return NULL;
}
+
SETTING_TRACE_DEBUG("player_set_sound_type [%d]", sound_type);
err = player_set_uri(*player, ad->song_playing);
return NULL;
}
- err = player_prepare(*player);
+#if SUPPORT_PLAYER_ASYNC
+ err = player_prepare_async(*player, __mm_player_prepared_cb, ad);
if (err != PLAYER_ERROR_NONE) {
SETTING_TRACE_ERROR("realizing the player handle failed[%d]", err);
+ ad->mp_prepare_async = NULL;
+ player_destroy(*player);
+ free(player);
+ return NULL;
+ }
+ ad->mp_prepare_async = player;
+ SETTING_TRACE("waiting..player (%x)", ad->mp_prepare_async);
+#else
+ err = player_prepare(*player);
+ if (err != PLAYER_ERROR_NONE) {
+ SETTING_TRACE_ERROR("player_prepare() error %d", err);
player_destroy(*player);
free(player);
return NULL;
}
player_state_e state = -1;
- player_get_state(*player, &state);
+ err = player_get_state(*player, &state);
SETTING_TRACE("state:%d", state);
-
if (state != PLAYER_STATE_READY) {
SETTING_TRACE_ERROR("state of player is invalid %d", err);
player_unprepare(*player);
player_destroy(*player);
free(player);
return NULL;
+
}
- player_set_completed_cb(*player, cb, ad);
+ player_set_completed_cb(*player, __mm_player_msg_cb, ad);
+ player_set_interrupted_cb(*player, __mm_player_interrupted_cb, ad);
+
err = player_start(*player);
- if (err != PLAYER_ERROR_NONE) { /* if directly return error.. */
+ if (err != PLAYER_ERROR_NONE) {
+ /* if directly return error.. */
SETTING_TRACE_ERROR("player_start [%d]", err);
player_unset_completed_cb(*player);
+ player_unset_interrupted_cb(*player);
player_unprepare(*player);
player_destroy(*player);
free(player);
return NULL;
}
+#endif
- SETTING_TRACE("waiting..");
ad->playing_volume = vol;
return player;
}
-#define EXP 0.001
void setting_profile_play_sound_origin(player_h **mp_handle, void *data,
- void *cb, char *ringtone_file,
- /* int vol, */
- float vol,
- sound_type_e sound_type)
+ void *cb, char *ringtone_file,
+ /* int vol, */
+ float vol,
+ sound_type_e sound_type)
{
/* error check */
ret_if(data == NULL);
return;
}
+ int vconf_value = 0;
+ vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS, &vconf_value);
+ if (vconf_value == TRUE)
+ return;
+
SettingProfileUG *ad = (SettingProfileUG *) data;
if (*mp_handle == NULL) {
*mp_handle = setting_profile_play_sound(ad, cb, ringtone_file, vol, sound_type);
+ SETTING_TRACE("mp_handle (%x)", *mp_handle);
}
}
int setting_profile_stop_sound(void *data, player_h *player)
{
SETTING_TRACE_BEGIN;
- retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ retv_if(data == NULL || player == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+ SETTING_TRACE("player (%x)", player);
SettingProfileUG *ad = (SettingProfileUG *) data;
if (ad->song_playing) {
}
}
+ player_unset_completed_cb(*player);
+ player_unset_interrupted_cb(*player);
+
if ((prev_behavior == 0) && (player_unprepare(*player) != PLAYER_ERROR_NONE)) {
SETTING_TRACE("mm player unrealize failed");
ret = SETTING_MMPLAYER_UNREALIZE_ERR;
return ret;
}
-int __close_player(void *data, setting_volume_types type)
+static int __close_player(void *data, setting_volume_types type)
{
+ SETTING_TRACE_BEGIN;
/* error check */
retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
SettingProfileUG *ad = (SettingProfileUG *) data;
- player_h **player= NULL;
- double value = 0.0;
-
- switch(type)
- {
+ switch (type) {
case SETTING_VOL_TYPE_RINGTONE:
retv_if(ad->mp_ringtone == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- player = &(ad->mp_ringtone);
- value = elm_slider_value_get(ad->data_call_volume->eo_check);
- sound_manager_set_volume(SOUND_TYPE_RINGTONE, (unsigned int)(value+0.5));
+ SETTING_TRACE("ringtone player (%x)", ad->mp_ringtone);
+ if (ad->mp_prepare_async == ad->mp_ringtone)
+ ad->mp_prepare_async = NULL;
+ if (setting_profile_stop_sound(ad, ad->mp_ringtone) == SETTING_RETURN_SUCCESS)
+ ad->mp_ringtone = NULL;
break;
case SETTING_VOL_TYPE_NOTIFICATION:
retv_if(ad->mp_noti == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- player = &(ad->mp_noti);
- value = elm_slider_value_get(ad->data_noti_volume->eo_check);
- sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, (unsigned int)(value+0.5));
+ SETTING_TRACE("noti player (%x)", ad->mp_noti);
+ if (ad->mp_prepare_async == ad->mp_noti)
+ ad->mp_prepare_async = NULL;
+ if (setting_profile_stop_sound(ad, ad->mp_noti) == SETTING_RETURN_SUCCESS)
+ ad->mp_noti = NULL;
break;
case SETTING_VOL_TYPE_MEDIA:
retv_if(ad->mp_media == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- player = &(ad->mp_media);
- value = elm_slider_value_get(ad->data_media_volume->eo_check);
- sound_manager_set_volume(SOUND_TYPE_MEDIA, (unsigned int)(value+0.5));
+ SETTING_TRACE("media player (%x)", ad->mp_media);
+ if (ad->mp_prepare_async == ad->mp_media)
+ ad->mp_prepare_async = NULL;
+ if (setting_profile_stop_sound(ad, ad->mp_media) == SETTING_RETURN_SUCCESS)
+ ad->mp_media = NULL;
break;
case SETTING_VOL_TYPE_SYSTEM:
- retv_if(ad->mp_sys == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- player = &(ad->mp_sys);
- value = elm_slider_value_get(ad->data_touch_volume->eo_check);
- sound_manager_set_volume(SOUND_TYPE_SYSTEM, (unsigned int)(value+0.5));
- break;
case SETTING_VOL_TYPE_NOTI_VIB:
case SETTING_VOL_TYPE_HAPTIC_VIB:
default:
return SETTING_RETURN_FAIL;
}
- if (*player) {
- if (setting_profile_stop_sound(ad, *player)) {
- *player = NULL;
- } else {
- return SETTING_RETURN_FAIL;
- }
- }
-
return SETTING_RETURN_SUCCESS;
}
int ret = 0;
- switch (type)
- {
+ switch (type) {
case SOUND_TYPE_RINGTONE: /* close noti, media and system players */
if (__close_player(ad, SETTING_VOL_TYPE_NOTIFICATION) != SETTING_RETURN_SUCCESS)
ret++;
if (__close_player(ad, SETTING_VOL_TYPE_MEDIA) != SETTING_RETURN_SUCCESS)
ret++;
- if (__close_player(ad, SETTING_VOL_TYPE_SYSTEM) != SETTING_RETURN_SUCCESS)
- ret++;
break;
case SOUND_TYPE_NOTIFICATION: /* close ringtone, media and system players */
if (__close_player(ad, SETTING_VOL_TYPE_RINGTONE) != SETTING_RETURN_SUCCESS)
ret++;
if (__close_player(ad, SETTING_VOL_TYPE_MEDIA) != SETTING_RETURN_SUCCESS)
ret++;
- if (__close_player(ad, SETTING_VOL_TYPE_SYSTEM) != SETTING_RETURN_SUCCESS)
- ret++;
break;
case SOUND_TYPE_MEDIA: /* close ringtone, noti and system players */
if (__close_player(ad, SETTING_VOL_TYPE_RINGTONE) != SETTING_RETURN_SUCCESS)
ret++;
if (__close_player(ad, SETTING_VOL_TYPE_NOTIFICATION) != SETTING_RETURN_SUCCESS)
ret++;
- if (__close_player(ad, SETTING_VOL_TYPE_SYSTEM) != SETTING_RETURN_SUCCESS)
- ret++;
- break;
- case SOUND_TYPE_SYSTEM: /* close ringtone, noti and media players */
- if (__close_player(ad, SETTING_VOL_TYPE_RINGTONE) != SETTING_RETURN_SUCCESS)
- ret++;
- if (__close_player(ad, SETTING_VOL_TYPE_NOTIFICATION) != SETTING_RETURN_SUCCESS)
- ret++;
- if (__close_player(ad, SETTING_VOL_TYPE_MEDIA) != SETTING_RETURN_SUCCESS)
- ret++;
break;
default: /* if unknown type, dont close any player */
break;
}
+ SETTING_TRACE_DEBUG("ret: %d", ret);
+
if (ret == 0)
return SETTING_RETURN_SUCCESS;
else
ret++;
if (__close_player(ad, SETTING_VOL_TYPE_MEDIA) != SETTING_RETURN_SUCCESS)
ret++;
- if (__close_player(ad, SETTING_VOL_TYPE_SYSTEM) != SETTING_RETURN_SUCCESS)
- ret++;
- if(ad->volume_timer)
- {
+ if (ad->volume_timer) {
ecore_timer_del(ad->volume_timer);
ad->volume_timer = NULL;
ad->cur_vol_type = SETTING_VOL_TYPE_MAX;
return SETTING_RETURN_FAIL;
}
-void setting_profile_play_vibration(void *data, int value)
-{
- /* error check */
- ret_if(data == NULL);
+static Setting_Cfg_Node_T s_cfg_node_array[] = {
+ {"IDS_ST_BODY_VIBRATE_WHEN_RINGING", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_BODY_VIBRATE_WHEN_RINGING", 0, 0, 0, Cfg_Item_View_Node_Toggle, NULL, NULL, NULL, NULL},
+ {"IDS_ST_MBODY_DIALLING_KEYPAD_TONE", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_MBODY_DIALLING_KEYPAD_TONE", 0, 0, 0, Cfg_Item_View_Node_Toggle, NULL, NULL, NULL, NULL},
+ {"IDS_ST_BODY_TOUCH_SOUNDS", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_BODY_TOUCH_SOUNDS", 0, 0, 0, Cfg_Item_View_Node_Toggle, NULL, NULL, NULL, NULL},
+ {"IDS_ST_BODY_SCREEN_LOCK_SOUND", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_BODY_SCREEN_LOCK_SOUND", 0, 0, 0, Cfg_Item_View_Node_Toggle, NULL, NULL, NULL, NULL},
+ {"IDS_CST_MBODY_ADAPT_SOUND", NULL, "viewtype:frontpage;tab:first;keyword:IDS_CST_MBODY_ADAPT_SOUND", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
+ {"IDS_ST_HEADER_RINGTONES", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_HEADER_RINGTONES", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
+ {"IDS_ST_BODY_NOTIFICATION_ALERT", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_BODY_NOTIFICATION_ALERT", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
+ {"IDS_ST_BODY_NOTIFICATION_ALERT_REPETITION", NULL, "viewtype:frontpage;tab:first;keyword:IDS_ST_BODY_NOTIFICATION_ALERT_REPETITION", 0, 0, 0, Cfg_Item_View_Node, NULL, NULL, NULL, NULL},
+};
- SettingProfileUG *ad = (SettingProfileUG *) data;
- char pattern_file[MAX_COMMON_BUFFER_LEN] = {0,};
- svi_get_path(SVI_TYPE_VIB, value, pattern_file, sizeof(pattern_file));
+UG_MODULE_API int setting_plugin_search_init(app_control_h service, void *priv, char **applocale)
+{
+ SETTING_TRACE_BEGIN;
+ SETTING_TRACE(">> setting-profile-efl DB search code");
-#if MIGRATION_HAPTIC
- if(ad->hnd_hpt < 0)
- {
- SETTING_TRACE_DEBUG("[ERROR] Can't use haptic handle.");
- return;
+ *applocale = strdup("setting:/usr/apps/org.tizen.setting/res/locale");
+
+ Eina_List **pplist = (Eina_List **)priv;
+ int i;
+ int size = sizeof(s_cfg_node_array) / sizeof(s_cfg_node_array[0]);
+ for (i = 0; i < size; i++) {
+ Setting_Cfg_Node_T *node = setting_plugin_search_item_subindex_add(s_cfg_node_array[i].key_name, s_cfg_node_array[i].ug_args, IMG_Sounds, s_cfg_node_array[i].item_type, s_cfg_node_array[i].data, "Sound");
+ *pplist = eina_list_append(*pplist, node);
}
- if(haptic_vibrate_file_with_detail(ad->hnd_hpt, pattern_file, 1, HAPTIC_FEEDBACK_AUTO, HAPTIC_PRIORITY_MIN, NULL) != 0){
- SETTING_TRACE("ERROR device_haptic_play_pattern");
+ return 0;
+}
+
+static int set_profile_searchbar_bool_value(Cfg_Item_State stat, const char *in_key)
+{
+ int value = -1;
+
+ if (stat == Cfg_Item_On) {
+ value = 1;
+ } else if (stat == Cfg_Item_Off) {
+ value = 0;
+ } else {
+ value = 0;
}
-#endif
+ int ret = vconf_set_bool(in_key, value);
+ return ret;
}
-int setting_profile_get_call_playing_vib_by_vconf_value(int call_vib_value)
+static int get_profile_searchbar_bool_value(Cfg_Item_State *stat, const char *in_key)
{
- /* select vibration pattern */
- switch (call_vib_value) {
- case SETTING_CALL_ALERT_VIB_TYPE1:
- {
- return SVI_VIB_NOTIFICATION_INCOMING_CALL01;
- }
- case SETTING_CALL_ALERT_VIB_TYPE2:
- {
- return SVI_VIB_NOTIFICATION_INCOMING_CALL02;
- }
- case SETTING_CALL_ALERT_VIB_TYPE3:
- {
- return SVI_VIB_NOTIFICATION_INCOMING_CALL03;
- }
- default:
- return SVI_VIB_NOTIFICATION_INCOMING_CALL01;
+ int value = -1;
+ int ret = vconf_get_bool(in_key, &value);
+
+ if (value == 1) {
+ *stat = Cfg_Item_On;
+ } else {
+ *stat = Cfg_Item_Off;
}
+ return ret;
}
-UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
+
+/**
+* @brief get toggle state for "Vibrate when ringing"
+*
+* @param stat store the toggle state
+* @param data application context
+*
+* @return 0 for success
+*/
+EXPORT_PUBLIC
+int get_profile_ug_vibrate_when_ringing_state(Cfg_Item_State *stat, void *data)
{
SETTING_TRACE_BEGIN;
- int ret = 0;
+ int ret = get_profile_searchbar_bool_value(stat, VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL);
+ return ret;
+}
-#if SUPPORT_RUN_SYSTEM_COMMAND
- ret += excuteCmd(SETTING_POSTINST_FILE, 1, "sounds");
-#else
+/**
+* @brief set toggle state for "Vibrate when ringing"
+*
+* @param stat the toggle state will be set
+* @param data application context
+*
+* @return 0 for success
+*/
+EXPORT_PUBLIC
+int set_profile_ug_vibrate_when_ringing_state(Cfg_Item_State stat, void *item, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int ret = set_profile_searchbar_bool_value(stat, VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL);
+ return ret;
+}
+
+/**
+* @brief get toggle state for "Dialling keypad tone"
+*
+* @param stat store the toggle state
+* @param data application context
+*
+* @return 0 for success
+*/
+EXPORT_PUBLIC
+int get_profile_ug_dialling_keypad_tone_state(Cfg_Item_State *stat, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int ret = get_profile_searchbar_bool_value(stat, VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL);
+ return ret;
+}
- ret += vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, TRUE);
- ret += vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, FALSE); /* after support incoming call vibration, it should be change to TRUE */
- ret += vconf_set_int(VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT, SETTING_DEFAULT_NOTI_VIB_INT);
- ret += vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT, SETTING_DEFAULT_HAPTIC_VIB_INT);
- ret += vconf_set_int(VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_BAK_INT, SETTING_DEFAULT_HAPTIC_VIB_INT);
+/**
+* @brief set toggle state for "Dialling keypad tone"
+*
+* @param stat the toggle state will be set
+* @param data application context
+*
+* @return 0 for success
+*/
+EXPORT_PUBLIC
+int set_profile_ug_dialling_keypad_tone_state(Cfg_Item_State stat, void *item, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int ret = set_profile_searchbar_bool_value(stat, VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL);
+ return ret;
+}
- ret += vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, SETTING_DEFAULT_CALL_TONE);
- ret += vconf_set_int(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_INT, SETTING_CALL_ALERT_VIB_TYPE3);
+/**
+* @brief get toggle state for "Touch Sounds"
+*
+* @param stat store the toggle state
+* @param data application context
+*
+* @return 0 for success
+*/
+EXPORT_PUBLIC
+int get_profile_ug_touch_sounds_state(Cfg_Item_State *stat, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int ret = get_profile_searchbar_bool_value(stat, VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL);
+ return ret;
+}
- ret += vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE);
- ret += vconf_set_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT);
+/**
+* @brief set toggle state for "Touch Sounds"
+*
+* @param stat the toggle state will be set
+* @param data application context
+*
+* @return 0 for success
+*/
+EXPORT_PUBLIC
+int set_profile_ug_touch_sounds_state(Cfg_Item_State stat, void *item, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int ret = set_profile_searchbar_bool_value(stat, VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL);
+ return ret;
+}
- ret += vconf_set_str(VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR, SETTING_DEFAULT_EMAIL_TONE);
- ret += vconf_set_int(VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT, SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT);
- ret += vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL, TRUE);
+/**
+* @brief get toggle state for "Screen lock sound"
+*
+* @param stat store the toggle state
+* @param data application context
+*
+* @return 0 for success
+*/
+EXPORT_PUBLIC
+int get_profile_ug_screen_lock_sound_state(Cfg_Item_State *stat, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int ret = get_profile_searchbar_bool_value(stat, VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
+ return ret;
+}
- /* if ret is 0, finish completely */
- /* if ret is minus, it means times of failure */
-#endif
- sound_manager_set_volume(SOUND_TYPE_RINGTONE, SETTING_DEFAULT_RINGTONE_VOL_INT);
- sound_manager_set_volume(SOUND_TYPE_NOTIFICATION, SETTING_DEFAULT_NOTI_VOL_INT);
- sound_manager_set_volume(SOUND_TYPE_MEDIA, SETTING_DEFAULT_MEDIA_VOL_INT);
- sound_manager_set_volume(SOUND_TYPE_SYSTEM, SETTING_DEFAULT_SYSTEM_VOL_INT);
+/**
+* @brief set toggle state for "Screen lock sound"
+*
+* @param stat the toggle state will be set
+* @param data application context
+*
+* @return 0 for success
+*/
+EXPORT_PUBLIC
+int set_profile_ug_screen_lock_sound_state(Cfg_Item_State stat, void *item, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int ret = set_profile_searchbar_bool_value(stat, VCONFKEY_SETAPPL_SOUND_LOCK_BOOL);
return ret;
}
+
+/**
+* @brief function table for searchable menu item "Vibrate when ringing"
+*
+* @see the struct cfg_func_table defination
+*/
+EXPORT_PUBLIC
+cfg_func_table opt_tab_vibrate_when_ringing = {
+ .get_item_state = get_profile_ug_vibrate_when_ringing_state,
+ .set_item_state = set_profile_ug_vibrate_when_ringing_state,
+ .set_item_update_ui = NULL,
+};
+
+/**
+* @brief function table for searchable menu item "Dialling keypad tone"
+*
+* @see the struct cfg_func_table defination
+*/
+EXPORT_PUBLIC
+cfg_func_table opt_tab_dialling_keypad_tone = {
+ .get_item_state = get_profile_ug_dialling_keypad_tone_state,
+ .set_item_state = set_profile_ug_dialling_keypad_tone_state,
+ .set_item_update_ui = NULL,
+};
+
+/**
+* @brief function table for searchable menu item "Touch Sounds"
+*
+* @see the struct cfg_func_table defination
+*/
+EXPORT_PUBLIC
+cfg_func_table opt_tab_touch_sounds = {
+ .get_item_state = get_profile_ug_touch_sounds_state,
+ .set_item_state = set_profile_ug_touch_sounds_state,
+ .set_item_update_ui = NULL,
+};
+
+/**
+* @brief function table for searchable menu item "Screen lock sound"
+*
+* @see the struct cfg_func_table defination
+*/
+EXPORT_PUBLIC
+cfg_func_table opt_tab_screen_lock_sound = {
+ .get_item_state = get_profile_ug_screen_lock_sound_state,
+ .set_item_state = set_profile_ug_screen_lock_sound_state,
+ .set_item_update_ui = NULL,
+};
+
+
+/**
+* @brief get the operation function table for searchable menu items
+*
+* @param str_id key string for searchable menu items
+* @param tfunc_obj application context
+*
+* @return 0 for success
+*/
+UG_MODULE_API int setting_plugin_search_query_ops(char *str_id, void **tfunc_obj)
+{
+ SETTING_TRACE_BEGIN;
+ SETTING_TRACE(">> get tfunc operation via plugin-model 1");
+ if (str_id && !safeStrCmp(str_id, _("IDS_ST_BODY_VIBRATE_WHEN_RINGING"))) {
+ *tfunc_obj = (void *)&opt_tab_vibrate_when_ringing;
+ } else if (str_id && !safeStrCmp(str_id, _("IDS_ST_MBODY_DIALLING_KEYPAD_TONE"))) {
+ *tfunc_obj = (void *)&opt_tab_dialling_keypad_tone;
+ } else if (str_id && !safeStrCmp(str_id, _("IDS_ST_BODY_TOUCH_SOUNDS"))) {
+ *tfunc_obj = (void *)&opt_tab_touch_sounds;
+ } else if (str_id && !safeStrCmp(str_id, _("IDS_ST_BODY_SCREEN_LOCK_SOUND"))) {
+ *tfunc_obj = (void *)&opt_tab_screen_lock_sound;
+ }
+ SETTING_TRACE(">> get tfunc operation via plugin-model 2");
+ return 0;
+}
+