Sync media volume with volume of quick pannel. 88/256088/1 submit/tizen/20210329.075518
authorJinWang An <jinwang.an@samsung.com>
Mon, 29 Mar 2021 07:42:57 +0000 (16:42 +0900)
committerJinWang An <jinwang.an@samsung.com>
Mon, 29 Mar 2021 07:42:57 +0000 (16:42 +0900)
Change-Id: Ic62b3be9c24bff9f5a6efb041365deb4952f8104
Signed-off-by: JinWang An <jinwang.an@samsung.com>
setting-profile/include/setting-profile.h
setting-profile/src/setting-profile-common.c

index 27641a084960d9485b1c65e12a0351d72e5b84c2..f7343a4300f04590322d951a9d8b960c0d9ec726 100644 (file)
@@ -112,6 +112,7 @@ struct _SettingSoundData {
        bool sound_on;
        char *song_playing;
        char *ringtone_type;
+       int media_volume_changed_cb_id;
 
        /* for performance of incoming call ringtone slider */
        Ecore_Idler *play_ringtone_idler;
index bc7794677035bdb9a26017d43fcd17bd598dfe9b..bbe82432491274622e2ef86d44cb6607d10dc322 100755 (executable)
@@ -499,6 +499,34 @@ void setting_sound_key_ungrab(SettingSoundData *ad)
        ad->keyup_handler = NULL;
 }
 
+static void media_volume_changed_cb(sound_type_e type, unsigned int volume, void *user_data)
+{
+       SETTING_TRACE_BEGIN;
+       int volume_max = 0;
+       ret_if(user_data == NULL);
+       SettingSoundData *appdata = (SettingSoundData *)user_data;
+
+       if (SOUND_TYPE_MEDIA != type)
+               return;
+
+       int ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &volume_max);
+       SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
+                       volume_max);
+
+       if (volume >= volume_max)
+               return;
+
+       if (appdata->data_media_volume && appdata->data_media_volume->eo_check) {
+               appdata->data_media_volume->chk_status = volume;
+               elm_slider_value_set(appdata->data_media_volume->eo_check,
+                                                               volume);
+               SETTING_TRACE("appdata->data_media_volume->chk_status : %d",
+                                               appdata->data_media_volume->chk_status);
+       }
+
+       SETTING_TRACE_END;
+}
+
 Evas_Object *setting_sound_init(SettingSoundData *ad)
 {
        SETTING_TRACE_BEGIN;
@@ -564,6 +592,12 @@ Evas_Object *setting_sound_init(SettingSoundData *ad)
 
        __listen_vconf_change(ad);
 
+       int ret = sound_manager_add_volume_changed_cb(media_volume_changed_cb,
+                                               (void*)ad, &ad->media_volume_changed_cb_id);
+       if (0 != ret)
+               SETTING_TRACE_ERROR("Cannot register volume chnaged callback, %d, %s",
+                                               ret, get_error_message(ret));
+
        return ad->md.naviframe;
 }
 
@@ -595,6 +629,8 @@ void setting_sound_deinit(void *data)
        player_destroy(ad->mp_player);
        ad->mp_player = NULL;
 
+       sound_manager_remove_volume_changed_cb(ad->media_volume_changed_cb_id);
+
        /* it is the view manage strategy to invoke view's destory operation */
        setting_view_destroy(&setting_view_sound_main, ad);