work on slider issues like not showing units brought up by player test

This commit is contained in:
Carsten Haitzler 2013-07-18 22:19:44 +09:00
parent 6aec9ab4c3
commit 2ae7a8cffb
3 changed files with 39 additions and 24 deletions

View File

@ -122,7 +122,6 @@ _elm_player_smart_event(Eo *obj, void *_pd, va_list *list)
if (ret) *ret = EINA_TRUE;
return;
}
fprintf(stderr, "keyname: '%s' not handle\n", ev->keyname);
}
@ -444,7 +443,6 @@ _double_to_time(double value)
else
snprintf(buf, sizeof(buf), "%02i.%02i",
ps, pf);
return (char *)eina_stringshare_add(buf);
}
@ -554,6 +552,7 @@ _elm_player_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
priv->stop = _player_button_add(obj, "media_player/stop", _stop);
priv->slider = elm_slider_add(obj);
elm_slider_indicator_show_set(priv->slider, EINA_TRUE);
elm_slider_indicator_format_function_set
(priv->slider, _double_to_time, _str_free);
elm_slider_units_format_function_set

View File

@ -42,6 +42,8 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{NULL, NULL}
};
static void _min_max_set(Evas_Object *obj);
static Eina_Bool
_delay_change(void *data)
{
@ -120,7 +122,23 @@ _units_set(Evas_Object *obj)
char *buf;
buf = sd->units_format_func(sd->val);
elm_layout_text_set(obj, "elm.units", buf);
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
{
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);
}
@ -130,8 +148,21 @@ _units_set(Evas_Object *obj)
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;
}
}
else elm_layout_text_set(obj, "elm.units", NULL);
}
static void
@ -463,9 +494,6 @@ _elm_slider_smart_theme(Eo *obj, void *_pd, va_list *list)
edje_object_scale_set(sd->popup, elm_widget_scale_get(obj) *
elm_config_scale_get());
if (sd->units)
elm_layout_signal_emit(obj, "elm,state,units,visible", "elm");
if (sd->horizontal)
evas_object_size_hint_min_set
(sd->spacer, (double)sd->size * elm_widget_scale_get(obj) *
@ -487,6 +515,9 @@ _elm_slider_smart_theme(Eo *obj, void *_pd, va_list *list)
if (sd->popup)
edje_object_signal_emit(sd->popup, "elm,state,val,show", "elm");
}
_min_max_set(obj);
_units_set(obj);
_indicator_set(obj);
_visuals_refresh(obj);
edje_object_message_signal_process(wd->resize_obj);
@ -716,8 +747,8 @@ _elm_slider_smart_calculate(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_config_scale_get());
_val_fetch(obj);
_units_set(obj);
_min_max_set(obj);
_units_set(obj);
_indicator_set(obj);
elm_layout_thaw(obj);
@ -944,24 +975,8 @@ _elm_slider_unit_format_set(Eo *obj, void *_pd, va_list *list)
{
const char *units = va_arg(*list, const char *);
Elm_Slider_Smart_Data *sd = _pd;
Elm_Widget_Smart_Data *wd = eo_data_scope_get(obj, ELM_OBJ_WIDGET_CLASS);
eina_stringshare_replace(&sd->units, units);
if (units)
{
elm_layout_signal_emit(obj, "elm,state,units,visible", "elm");
edje_object_message_signal_process(wd->resize_obj);
if (sd->popup)
edje_object_signal_emit(sd->popup, "elm,state,units,visible", "elm");
}
else
{
elm_layout_signal_emit(obj, "elm,state,units,hidden", "elm");
edje_object_message_signal_process(wd->resize_obj);
if (sd->popup)
edje_object_signal_emit(sd->popup, "elm,state,units,hidden", "elm");
}
evas_object_smart_changed(obj);
}

View File

@ -42,6 +42,7 @@ struct _Elm_Slider_Smart_Data
Eina_Bool spacer_down : 1;
Eina_Bool frozen : 1;
Eina_Bool popup_hiding : 1;
Eina_Bool units_show : 1;
};
/**