_TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3"
#define SUPPORT_PLAYER_ASYNC 1
-/*Call ringtone:3 icon status */
-#define ICON_CALL_VIB \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_vibrate.png"
-#define ICON_CALL_NORMAL \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_incoming_call.png"
-#define ICON_CALL_MUTE \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_mute.png"
-
-/*Notification: 2 icon status */
-#define ICON_NOTI_VIB \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification_vibrate.png"
-#define ICON_NOTI_MUTE \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification_mute.png"
-#define ICON_NOTI_NORMAL \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification.png"
-
-/*Media: 2 icon status */
-#define ICON_MEDIA_MUTE SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_mute.png"
-#define ICON_MEDIA_NORMAL SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume.png"
-
-/*System:2 icon status */
-#define ICON_SYSTEM_MUTE \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_system_mute.png"
-#define ICON_SYSTEM_NORMAL \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_system.png"
+/* General sound icon */
+#define ICON_DEFAULT_MUTE \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_default_mute.png"
+#define ICON_DEFAULT_NORMAL \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_default.png"
+#define ICON_DEFAULT_VIBRATION \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_default_vibrate.png"
#define GLOBAL_RESOURCE_ALERTS_DIR _TZ_SYS_GLOBALUSER_DATA"/settings/Alerts/"
#define GLOBAL_RESOURCE_RINGTONES_DIR _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/"
void setting_sound_key_ungrab(SettingSoundData *ad);
char *setting_media_basename(const char *path);
void setting_sound_create_warning_popup_during_call(void *data);
-char *setting_sound_get_slider_icon(int type, int volume);
+const char *setting_sound_get_slider_icon(int type, int volume);
void setting_sound_update_slider_icon(Setting_GenGroupItem_Data *item_data,
int type);
Evas_Object *setting_sound_init(SettingSoundData *ad);
void setting_sound_deinit(void *data);
const char *setting_notifiaction_on_lock_screen(void *data);
void setting_sound_update_notifiaction_on_lock_screen_item(void *data);
+void setting_sound_set_item_enabled(Setting_GenGroupItem_Data *item_data, bool state);
+void setting_sound_update_item(Setting_GenGroupItem_Data *item_data);
#endif
#include <player.h>
#include "setting-profile-other-sounds-view.h"
#include "setting-profile-sound-mode-view.h"
+#include "setting-profile-sound-mode.h"
#define SETTING_DEFAULT_FOLDER_PATH _TZ_SYS_GLOBALUSER_DATA"/settings/"
#define SDCARD_PATH _TZ_SYS_MEDIA"/sdcard/"
#define EXP 0.001
-typedef struct _SliderIcons {
- int index;
- char mute[256];
- char volume[256];
-} SliderIcons;
-
-SliderIcons slider_icons[SND_SLIDER_MAX] = {
- {SND_SLIDER_CALL, ICON_CALL_MUTE, ICON_CALL_NORMAL},
- {SND_SLIDER_NOTI, ICON_NOTI_MUTE, ICON_NOTI_NORMAL},
- {SND_SLIDER_MEDIA, ICON_MEDIA_MUTE, ICON_MEDIA_NORMAL},
- {SND_SLIDER_SYSTEM, ICON_SYSTEM_MUTE, ICON_SYSTEM_NORMAL}
-};
-
static void __mm_player_prepared_cb(void *user_data);
static void __sound_stream_focus_state_changed_cb(
sound_stream_info_h stream_info,
elm_genlist_item_update(ad->data_notifiaction_on_lock_screen->item);
}
-char *setting_sound_get_slider_icon(int type, int volume)
+static const char *setting_sound_get_default_slider_icon(sound_mode_e mode, int volume)
+{
+ bool muted = volume <= 0;
+
+ switch (mode)
+ {
+ case SOUND_MODE_SOUND:
+ return muted ? ICON_DEFAULT_MUTE : ICON_DEFAULT_NORMAL;
+ case SOUND_MODE_VIBRATE:
+ return ICON_DEFAULT_VIBRATION;
+ case SOUND_MODE_MUTE:
+ return ICON_DEFAULT_MUTE;
+ default:
+ return NULL;
+ }
+}
+
+static char *setting_sound_get_media_slider_icon(sound_mode_e mode, int volume)
+{
+ bool muted = volume <= 0;
+
+ switch (mode)
+ {
+ case SOUND_MODE_SOUND:
+ return muted ? ICON_DEFAULT_MUTE : ICON_DEFAULT_NORMAL;
+ case SOUND_MODE_MUTE:
+ case SOUND_MODE_VIBRATE:
+ return ICON_DEFAULT_MUTE;
+ default:
+ return NULL;
+ }
+}
+
+const char *setting_sound_get_slider_icon(int type, int volume)
{
if (type < SND_SLIDER_CALL || type >= SND_SLIDER_MAX)
return NULL;
SETTING_TRACE("type : %d, volume : %d", type, volume);
- /* 1.Call ringtone and notification have 3 icon status */
- if (SND_SLIDER_CALL == type || SND_SLIDER_NOTI == type) {
- /*special process */
- int sound = 0;
- int vibration = 0;
- vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
- vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- &vibration);
-
- if (sound && !vibration) {
- return (SND_SLIDER_CALL == type ?
- ICON_CALL_NORMAL : ICON_NOTI_NORMAL);
- }
-
- if (vibration && !sound) {
- return (SND_SLIDER_CALL == type ? ICON_CALL_VIB : ICON_NOTI_VIB);
- }
-
- if (!vibration && !sound) {
- return (SND_SLIDER_CALL == type ? ICON_CALL_MUTE : ICON_NOTI_MUTE);
- }
-
- return (SND_SLIDER_CALL == type ?
- ICON_CALL_NORMAL : ICON_NOTI_NORMAL);
+ sound_mode_e current_mode = setting_profile_get_sound_mode();
+
+ switch (type)
+ {
+ case SND_SLIDER_CALL:
+ case SND_SLIDER_NOTI:
+ case SND_SLIDER_SYSTEM:
+ return setting_sound_get_default_slider_icon(current_mode, volume);
+ case SND_SLIDER_MEDIA:
+ return setting_sound_get_media_slider_icon(current_mode, volume);
+ default:
+ return NULL;
}
-
- /* 2.Other types, just have two icon status */
- if (volume > 0)
- return slider_icons[type].volume;
- else
- return slider_icons[type].mute;
}
void setting_sound_update_slider_icon(Setting_GenGroupItem_Data *item_data,
SETTING_TRACE_BEGIN;
ret_if(!item_data || !item_data->eo_check);
+ const char *new_file = setting_sound_get_slider_icon(type,
+ item_data->chk_status);
+
Evas_Object *icon = elm_object_content_get(item_data->eo_check);
if (icon) {
- char *new_file = setting_sound_get_slider_icon(type,
- item_data->chk_status);
elm_image_file_set(icon, new_file, NULL);
}
+
+ G_FREE(item_data->l_swallow_path);
+ item_data->l_swallow_path = new_file ? (char *)g_strdup(new_file) : NULL;
}
char *setting_media_basename(const char *path)
elm_object_part_text_set(layout, "elm.text", _(item_data->keyStr));
elm_object_part_content_set(layout, "elm.swallow.content", slider);
- return layout;
-}
-
-static void __enable_sound_menu(void *data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(!data);
- SettingSoundData *ad = data;
- ad->sound_on = TRUE;
- Setting_GenGroupItem_Data *item_to_update = NULL;
-
-
- /*1.Enable "Vibrate when ringing" */
- if (ad->data_sound_when_ring) {
- item_to_update = ad->data_sound_when_ring;
- elm_object_item_disabled_set(item_to_update->item, EINA_FALSE);
- }
-
- if (ad->data_call_volume) {
- elm_object_item_disabled_set(ad->data_call_volume->item,
- EINA_FALSE);
- elm_object_disabled_set(ad->data_call_volume->eo_check,
- EINA_FALSE);
- }
-
- /*2.Enable "Notification", via Sound Manager */
- item_to_update = ad->data_noti_volume;
-
- /* @todo make sure data_msg_alert_tone is correct for 'Silent' set.
- if (item_to_update && safeStrCmp(item_to_update->sub_desc, "Silent"))*/
- if ((ad->data_msg_alert_tone &&
- safeStrCmp(ad->data_msg_alert_tone->sub_desc, "Silent")) ||
- (!safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
- ) {
- /* Enable */
- if (item_to_update
- && item_to_update->item
- && item_to_update->eo_check) {
- int mm_value = 0;
- int ret = sound_manager_get_volume(
- SOUND_TYPE_NOTIFICATION, &mm_value);
- SETTING_TRACE("ret:%d", ret);
- item_to_update->chk_status = mm_value;
- elm_slider_value_set(
- item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(item_to_update->item,
- EINA_FALSE);
- elm_object_disabled_set(item_to_update->eo_check,
- EINA_FALSE);
-
- setting_sound_update_slider_icon(
- item_to_update, SND_SLIDER_NOTI);
- }
- }
-
- /*3.Enable "System", via Sound Manager */
- item_to_update = ad->data_touch_volume;
- if (item_to_update && item_to_update->item
- && item_to_update->eo_check) {
- int mm_value = 0;
- int ret = sound_manager_get_volume(
- SOUND_TYPE_SYSTEM, &mm_value);
- SETTING_TRACE("ret:%d", ret);
- item_to_update->chk_status = mm_value;
- elm_slider_value_set(
- item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(
- item_to_update->item, EINA_FALSE);
- elm_object_disabled_set(item_to_update->eo_check, EINA_FALSE);
-
- setting_sound_update_slider_icon(
- item_to_update, SND_SLIDER_SYSTEM);
- }
-
-
- /*4.Enable "Call ringtone", via "Backuped" value */
- item_to_update = ad->data_call_volume;
- if (item_to_update && item_to_update->eo_check) {
- SETTING_TRACE("....ad->is_ringtone_slidering:%d, "
- "ad->data_call_volume->chk_status:%d",
- ad->is_ringtone_slidering,
- item_to_update->chk_status);
- /* do need to restore from BACKUP VOLUME */
- if (ad->is_ringtone_slidering) return;
-
- int mm_value = 0;
- sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value);
- if (mm_value <= 0) mm_value = 1;
- sound_manager_set_volume(SOUND_TYPE_RINGTONE, mm_value);
- item_to_update->chk_status = mm_value;
- elm_slider_value_set(
- item_to_update->eo_check,
- item_to_update->chk_status);
- SETTING_TRACE("ad->data_call_volume->chk_status : %d",
- item_to_update->chk_status);
- }
-}
-
-static void __disable_sound_menu(void *data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(!data);
- SettingSoundData *ad = data;
- ad->sound_on = FALSE;
- Setting_GenGroupItem_Data *item_to_update = NULL;
-
- setting_sound_stop_sound(ad);
- /*1.Disable "Vibrate when ringing" */
- item_to_update = ad->data_sound_when_ring;
- if (item_to_update)
- elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
-
- /* Disable Call Volume slider if Silent ringtone is selected */
- if (ad->data_call_alert_tone && !safeStrCmp(
- ad->data_call_alert_tone->sub_desc, "Silent")) {
- elm_object_item_disabled_set(ad->data_call_volume->item,
- EINA_TRUE);
- elm_object_disabled_set(ad->data_call_volume->eo_check,
- EINA_TRUE);
- }
-
- /*2.Disable "Notification" */
- item_to_update = ad->data_noti_volume;
- if (item_to_update && item_to_update->item
- && item_to_update->eo_check) {
- item_to_update->chk_status = 0;
- elm_slider_value_set(item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
- elm_object_disabled_set(item_to_update->eo_check, EINA_TRUE);
-
- /* Change notification slider's icon as mute style */
- setting_sound_update_slider_icon(item_to_update,
- SND_SLIDER_NOTI);
- }
-
- /*3.Disable "System" */
- item_to_update = ad->data_touch_volume;
- if (item_to_update && item_to_update->item
- && item_to_update->eo_check) {
- item_to_update->chk_status = 0;
- elm_slider_value_set(item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
- elm_object_disabled_set(item_to_update->eo_check, EINA_TRUE);
-
- /* Change system slider's icon as mute style */
- setting_sound_update_slider_icon(item_to_update,
- SND_SLIDER_SYSTEM);
- }
-
- /*4.Disable "Call ringtone" */
- item_to_update = ad->data_call_volume;
- if (item_to_update && item_to_update->eo_check) {
- /*DO NOT CHANGE Backup Values(
- * VCONFKEY_SETAPPL_RINGTONE_BACKUP_VOLUME) */
- item_to_update->chk_status = 0;
- elm_slider_value_set(item_to_update->eo_check,
- item_to_update->chk_status);
- SETTING_TRACE("item_to_update->chk_status : %d",
- item_to_update->chk_status);
- }
+ if (elm_object_item_disabled_get(item_data->item))
+ elm_object_disabled_set(slider, EINA_TRUE);
+ return layout;
}
static void __sound_vconf_change_cb(keynode_t *key, void *data)
VCONFKEY_SETAPPL_SOUND_STATUS_BOOL)) {
status = vconf_keynode_get_bool(key);
SETTING_TRACE_DEBUG("sound status is changed. %d", status);
- if (status)
- __enable_sound_menu(ad);
- else
- __disable_sound_menu(ad);
-
- setting_sound_update_slider_icon(ad->data_call_volume,
- SND_SLIDER_CALL);
-
+ setting_view_update(&setting_view_sound_main, ad);
if (ad->data_sound_when_ring)
elm_object_item_disabled_set(ad->data_sound_when_ring->item,
!status);
} 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);
-
- setting_sound_update_slider_icon(ad->data_call_volume,
- SND_SLIDER_CALL);
+ setting_view_update(&setting_view_sound_main, ad);
} else if (!safeStrCmp(vconf_name,
VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL)) {
item_to_update = ad->data_sound_when_ring;
}
}
+void setting_sound_set_item_enabled(Setting_GenGroupItem_Data *item_data, bool enabled)
+{
+ Eina_Bool val = enabled ? EINA_FALSE : EINA_TRUE;
+ elm_object_item_disabled_set(item_data->item, val);
+ if (item_data->eo_check)
+ elm_object_disabled_set(item_data->eo_check, val);
+}
+
+void setting_sound_update_item(Setting_GenGroupItem_Data *item_data)
+{
+ elm_genlist_item_update(item_data->item);
+}
NULL,\
NULL, \
SWALLOW_Type_LAYOUT_SLIDER,\
- l_img, \
+ (char*)l_img, \
r_img,\
value,\
keystr,\
static int _view_create(void *cb);
static int _view_destroy(void *cb);
+static int _view_update(void *cb);
static Eina_Bool _view_pop_cb(void *data, Elm_Object_Item *it);
static void _create_myfile_ug(SettingSoundData *ad, char *titleID);
setting_view setting_view_sound_main = {
.create = _view_create,
.destroy = _view_destroy,
- .update = NULL,
+ .update = _view_update,
.cleanup = NULL
};
SETTING_TRACE_END;
}
+void _stop_system_change_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+
+ _stop_change_cb(data, obj, event_info);
+
+ double val = elm_slider_value_get(obj);
+ if (isZero(val))
+ {
+ setting_profile_set_sound_mode(SOUND_MODE_MUTE);
+ }
+
+ SETTING_TRACE_END;
+}
+
static void __genlist_item_sound_mode_clicked_cb(void *data, Evas_Object *obj, void *event_info)
{
SettingSoundData *gd = data;
SettingSoundData *ad = (SettingSoundData *)data;
char *app_id = NULL;
- char *left_icon = NULL;
+ const char *left_icon = NULL;
int mm_value = 0;
int sound_value = 0;
int ret = 0;
SETTING_TRACE_DEBUG("Fail to get volume");
mm_value = SETTING_DEFAULT_SYSTEM_VOL_INT;
}
- if (sound_value == FALSE)
- mm_value = 0;
/* separator */
setting_create_Gendial_field_titleItem(
mm_value, "", ad,
_sys_slider_change_cb,
max_system_vol,
- _start_change_cb, _stop_change_cb);
+ _start_change_cb, _stop_system_change_cb);
__BACK_POINTER_SET(ad->data_touch_volume);
free(app_id);
app_id = NULL;
- /* Disable Notification slider if Silent ringtone is selected */
- if (ad->data_noti_volume
- && ad->data_msg_alert_tone
- && !safeStrCmp(ad->data_msg_alert_tone->sub_desc, SILENT_MODE)) {
- elm_object_item_disabled_set(ad->data_noti_volume->item, EINA_TRUE);
- elm_object_disabled_set(ad->data_noti_volume->eo_check, EINA_TRUE);
- }
-
- if (!sound_value) {
- if (ad->data_noti_volume)
- elm_object_item_disabled_set(ad->data_noti_volume->item,
- EINA_TRUE);
- if (ad->data_touch_volume)
- elm_object_item_disabled_set(ad->data_touch_volume->item,
- EINA_TRUE);
- }
}
static void _click_softkey_back_cb(void *data,
setting_view_sound_main.is_create = TRUE;
+ setting_view_update(&setting_view_sound_main, ad);
+
SETTING_TRACE_END;
return SETTING_RETURN_SUCCESS;
}
app_control_destroy(svc);
free(pa_cur_ringtone);
}
+
+static int _view_update(void *data)
+{
+ SETTING_TRACE_BEGIN;
+
+ SettingSoundData *appdata = (SettingSoundData *) data;
+ sound_mode_e current_mode = setting_profile_get_sound_mode();
+
+ free(appdata->sound_mode->sub_desc);
+ appdata->sound_mode->sub_desc = strdup(setting_profile_sound_mode_to_string(current_mode));
+ setting_sound_update_item(appdata->sound_mode);
+
+ switch (current_mode)
+ {
+ case SOUND_MODE_SOUND:
+ setting_sound_set_item_enabled(appdata->data_media_volume, TRUE);
+ setting_sound_set_item_enabled(appdata->data_noti_volume, TRUE);
+ setting_sound_set_item_enabled(appdata->data_touch_volume, TRUE);
+ break;
+ case SOUND_MODE_VIBRATE:
+ setting_sound_set_item_enabled(appdata->data_media_volume, FALSE);
+ setting_sound_set_item_enabled(appdata->data_noti_volume, TRUE);
+ setting_sound_set_item_enabled(appdata->data_touch_volume, FALSE);
+ break;
+ case SOUND_MODE_MUTE:
+ setting_sound_set_item_enabled(appdata->data_media_volume, FALSE);
+ setting_sound_set_item_enabled(appdata->data_noti_volume, FALSE);
+ setting_sound_set_item_enabled(appdata->data_touch_volume, FALSE);
+ break;
+ }
+
+ setting_sound_update_slider_icon(appdata->data_media_volume, SND_SLIDER_MEDIA);
+ setting_sound_update_slider_icon(appdata->data_noti_volume, SND_SLIDER_NOTI);
+ setting_sound_update_slider_icon(appdata->data_touch_volume, SND_SLIDER_SYSTEM);
+
+ SETTING_TRACE_END;
+
+ return SETTING_RETURN_SUCCESS;
+}