e_client_volume: check volume setted after a slider drag

This commit is contained in:
Michael Bouchaud 2017-02-23 00:36:17 +01:00
parent fba185798c
commit cb6ea9f747
2 changed files with 48 additions and 0 deletions

View File

@ -11,6 +11,7 @@ static void _e_client_volume_event_simple_free(void *d, E_Event_Client *ev);
static void _e_client_volume_event_simple(E_Client *ec, int type);
static void _e_client_volume_object_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _e_client_volume_object_volume_changed(void *data, Evas_Object *obj, void *event_info);
static void _e_client_volume_object_volume_drag_stop(void *data, Evas_Object *obj, void *event_info);
static Eina_Bool _e_client_volume_object_changed(void *data, int type, void *event);
static void _e_client_volume_object_del_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
@ -77,6 +78,16 @@ _e_client_volume_object_volume_changed(void *data, Evas_Object *obj, void *event
e_client_volume_set(ec, elm_slider_value_get(obj));
}
static void
_e_client_volume_object_volume_drag_stop(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
E_Client *ec;
ec = data;
e_client_volume_set(ec, elm_slider_value_get(obj));
}
static Eina_Bool
_e_client_volume_object_changed(void *data, int type EINA_UNUSED, void *event)
{
@ -353,6 +364,7 @@ e_client_volume_set(E_Client *ec, int volume)
e_client_volume_sink_set(sink, ec->volume, ec->mute);
}
_e_client_volume_update(ec);
_e_client_volume_event_simple(ec, E_EVENT_CLIENT_VOLUME);
}
@ -423,6 +435,9 @@ e_client_volume_object_add(E_Client *ec, Evas *evas)
evas_object_smart_callback_add(o, "changed",
_e_client_volume_object_volume_changed,
ec);
evas_object_smart_callback_add(o, "slider,drag,stop",
_e_client_volume_object_volume_drag_stop,
ec);
elm_slider_value_set(o, ec->volume);
edje_object_part_swallow(bx, "e.swallow.volume", o);
evas_object_show(o);

View File

@ -1049,6 +1049,17 @@ _bd_hook_volume_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUS
e_client_volume_set(ec, elm_slider_value_get(obj));
}
static void
_bd_hook_volume_drag_stop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
E_Client *ec;
ec = data;
elm_slider_value_set(obj, ec->volume);
}
static void
_bd_hook_mute_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -1074,6 +1085,24 @@ _bd_hook_sink_volume_changed(void *data, Evas_Object *obj, void *event_info EINA
elm_check_state_get(check));
}
static void
_bd_hook_sink_volume_drag_stop(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
E_Client_Volume_Sink *sink;
Evas_Object *check;
Eina_Bool mute;
int vol;
sink = data;
check = evas_object_data_get(obj, "e_sink_check");
e_client_volume_sink_get(sink, &vol, &mute);
elm_slider_value_set(obj, vol);
elm_check_state_set(check, mute);
}
static void
_bd_hook_sink_mute_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -1187,6 +1216,8 @@ _e_client_mixer_sink_append(E_Client_Volume_Sink *sink, Client_Mixer *cm)
elm_slider_value_set(slider, volume);
evas_object_smart_callback_add(slider, "changed",
_bd_hook_sink_volume_changed, sink);
evas_object_smart_callback_add(slider, "slider,drag,stop",
_bd_hook_sink_volume_drag_stop, sink);
elm_box_pack_end(cm->bx, slider);
evas_object_show(slider);
@ -1379,6 +1410,8 @@ _bd_hook_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *it EINA_UNUSED)
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_slider_value_set(o, ec->volume);
evas_object_smart_callback_add(o, "changed", _bd_hook_volume_changed, ec);
evas_object_smart_callback_add(o, "slider,drag,stop",
_bd_hook_volume_drag_stop, ec);
elm_box_pack_end(bx, o);
evas_object_show(o);
cm->volume = o;