static void _val_set(Evas_Object *obj) { Eina_Bool rtl; double pos; ELM_SLIDER_DATA_GET(obj, sd); if (sd->val_max > sd->val_min) pos = (sd->val - sd->val_min) / (sd->val_max - sd->val_min); else pos = 0.0; if (pos < 0.0) pos = 0.0; else if (pos > 1.0) pos = 1.0; rtl = elm_widget_mirrored_get(obj); if ((!rtl && sd->inverted) || (rtl && ((!sd->horizontal && sd->inverted) || (sd->horizontal && !sd->inverted)))) pos = 1.0 - pos; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); edje_object_part_drag_value_set (wd->resize_obj, "elm.dragable.slider", pos, pos); }
static void _val_fetch(Evas_Object *obj, Eina_Bool user_event) { Eina_Bool rtl; double posx = 0.0, posy = 0.0, pos = 0.0, val; ELM_SLIDER_DATA_GET(obj, sd); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); edje_object_part_drag_value_get (wd->resize_obj, "elm.dragable.slider", &posx, &posy); if (sd->horizontal) pos = posx; else pos = posy; rtl = elm_widget_mirrored_get(obj); if ((!rtl && sd->inverted) || (rtl && ((!sd->horizontal && sd->inverted) || (sd->horizontal && !sd->inverted)))) pos = 1.0 - pos; val = (pos * (sd->val_max - sd->val_min)) + sd->val_min; if (val != sd->val) { sd->val = val; if (user_event) { evas_object_smart_callback_call(obj, SIG_CHANGED, NULL); if (sd->delay) ecore_timer_del(sd->delay); sd->delay = ecore_timer_add(SLIDER_DELAY_CHANGED_INTERVAL, _delay_change, obj); } } }
static void _indicator_set(Evas_Object *obj) { ELM_SLIDER_DATA_GET(obj, sd); if (sd->indicator_format_func) { char *buf; buf = sd->indicator_format_func(sd->val); elm_layout_text_set(obj, "elm.indicator", buf); elm_layout_text_set(obj, "elm.dragable.slider:elm.indicator", buf); if (sd->popup) edje_object_part_text_set(sd->popup, "elm.indicator", buf); if (sd->indicator_format_free) sd->indicator_format_free(buf); } else if (sd->indicator) { char buf[1024]; snprintf(buf, sizeof(buf), sd->indicator, sd->val); elm_layout_text_set(obj, "elm.indicator", buf); elm_layout_text_set(obj, "elm.dragable.slider:elm.indicator", buf); if (sd->popup) edje_object_part_text_set(sd->popup, "elm.indicator", buf); } else { elm_layout_text_set(obj, "elm.indicator", NULL); elm_layout_text_set(obj, "elm.dragable.slider:elm.indicator", NULL); if (sd->popup) edje_object_part_text_set(sd->popup, "elm.indicator", NULL); } }
static Eina_Bool _delay_change(void *data) { ELM_SLIDER_DATA_GET(data, sd); sd->delay = NULL; evas_object_smart_callback_call(data, SIG_DELAY_CHANGED, NULL); return ECORE_CALLBACK_CANCEL; }
static void _units_set(Evas_Object *obj) { ELM_SLIDER_DATA_GET(obj, sd); if (sd->units_format_func) { char *buf; buf = sd->units_format_func(sd->val); if (buf) { elm_layout_text_set(obj, "elm.units", buf); if (!sd->units_show) { elm_layout_signal_emit(obj, "elm,state,units,visible", "elm"); sd->units_show = EINA_TRUE; } } else { elm_layout_text_set(obj, "elm.units", NULL); if (sd->units_show) { elm_layout_signal_emit(obj, "elm,state,units,hidden", "elm"); sd->units_show = EINA_FALSE; } } if (sd->units_format_free) sd->units_format_free(buf); } else if (sd->units) { char buf[1024]; snprintf(buf, sizeof(buf), sd->units, sd->val); elm_layout_text_set(obj, "elm.units", buf); if (!sd->units_show) { elm_layout_signal_emit(obj, "elm,state,units,visible", "elm"); sd->units_show = EINA_TRUE; } } else { elm_layout_text_set(obj, "elm.units", NULL); if (sd->units_show) { elm_layout_signal_emit(obj, "elm,state,units,hidden", "elm"); sd->units_show = EINA_FALSE; } } }
static void _units_set(Evas_Object *obj) { ELM_SLIDER_DATA_GET(obj, sd); if (sd->units_format_func) { char *buf; buf = sd->units_format_func(sd->val); elm_layout_text_set(obj, "elm.units", buf); if (sd->units_format_free) sd->units_format_free(buf); } else if (sd->units) { char buf[1024]; snprintf(buf, sizeof(buf), sd->units, sd->val); elm_layout_text_set(obj, "elm.units", buf); } else elm_layout_text_set(obj, "elm.units", NULL); }