2018-05-14 22:16:00 -07:00
|
|
|
#ifndef ELM_WIDGET_SLIDER_H
|
|
|
|
#define ELM_WIDGET_SLIDER_H
|
|
|
|
|
|
|
|
#include "Elementary.h"
|
|
|
|
|
|
|
|
/* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
|
|
|
|
* CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
|
|
|
|
* FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK
|
|
|
|
* IT AT RUNTIME.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @addtogroup Widget
|
|
|
|
* @{
|
|
|
|
*
|
|
|
|
* @section elm-slider-class The Elementary Slider Class
|
|
|
|
*
|
|
|
|
* Elementary, besides having the @ref Slider widget, exposes its
|
|
|
|
* foundation -- the Elementary Slider Class -- in order to create other
|
|
|
|
* widgets which are a slider with some more logic on top.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Base layout smart data extended with slider instance data.
|
|
|
|
*/
|
|
|
|
typedef struct _Elm_Slider_Data Elm_Slider_Data;
|
|
|
|
struct _Elm_Slider_Data
|
|
|
|
{
|
2019-08-20 06:09:14 -07:00
|
|
|
Evas_Object *popup, *popup2, *track, *track2, *spacer;
|
2018-05-14 22:16:00 -07:00
|
|
|
|
2019-08-20 06:09:14 -07:00
|
|
|
double val, val_min, val_max, step;
|
|
|
|
double intvl_from, intvl_to;
|
2018-05-14 22:16:00 -07:00
|
|
|
double wheel_indicator_duration;
|
2019-08-20 06:09:14 -07:00
|
|
|
int intvl_flag;
|
|
|
|
|
|
|
|
Evas_Coord downx, downy;
|
|
|
|
Efl_Ui_Layout_Orientation dir;
|
|
|
|
|
|
|
|
Ecore_Timer *wheel_indicator_timer, *delay;
|
|
|
|
|
2018-05-14 22:16:00 -07:00
|
|
|
Elm_Slider_Indicator_Visible_Mode indicator_visible_mode; /**< indicator_visible_mode of the slider.
|
|
|
|
This indicates when to show an indicator */
|
|
|
|
|
|
|
|
Evas_Coord size;
|
|
|
|
|
Efl.Ui.Format revamp
This class helps widgets which contain a numerical value and must display it,
like Progressbar (units label), Spin, Spin_Button, Slider (both units and popup
labels, in legacy), Tags (when in shrunk mode) or Calendar (year_month label).
Previously this was a mix of interface and mixin: widgets had to support setting a
formatting func, and the mixin offered support for formatting strings, by setting
an internal formatting func. On top of that, the spinner widget supported "special
values", a list of values that should be shown as certain strings instead.
This has now been simplified and unified:
Widgets including this mixin can use the formatted_value_get() method which accepts
an Eina_Value and returns a string. Thats's it.
The mixin adds three properties to the widget (format_values, format_func and
format_string) which users can use to tailor formatting. The widget does not need
to know which method has been used, it just retrieves the resulting string.
This removes a lot of duplicated widget code, and adds functionality which was
missing before. For example, all widgets support passing a list of values now.
Widgets must implement the apply_formatted_value() method so they are notified
of changes in the format and they can redraw anything they need.
Tests have been added to the Elementary Spec suite for all cases.
Legacy widgets behavior has not been modified, although a few needed some code
changes.
2019-07-02 05:40:06 -07:00
|
|
|
Efl_Ui_Format_Func format_cb;
|
2018-05-14 22:16:00 -07:00
|
|
|
Eina_Free_Cb format_free_cb;
|
|
|
|
void *format_cb_data;
|
|
|
|
Eina_Strbuf *format_strbuf;
|
|
|
|
|
Efl.Ui.Format revamp
This class helps widgets which contain a numerical value and must display it,
like Progressbar (units label), Spin, Spin_Button, Slider (both units and popup
labels, in legacy), Tags (when in shrunk mode) or Calendar (year_month label).
Previously this was a mix of interface and mixin: widgets had to support setting a
formatting func, and the mixin offered support for formatting strings, by setting
an internal formatting func. On top of that, the spinner widget supported "special
values", a list of values that should be shown as certain strings instead.
This has now been simplified and unified:
Widgets including this mixin can use the formatted_value_get() method which accepts
an Eina_Value and returns a string. Thats's it.
The mixin adds three properties to the widget (format_values, format_func and
format_string) which users can use to tailor formatting. The widget does not need
to know which method has been used, it just retrieves the resulting string.
This removes a lot of duplicated widget code, and adds functionality which was
missing before. For example, all widgets support passing a list of values now.
Widgets must implement the apply_formatted_value() method so they are notified
of changes in the format and they can redraw anything they need.
Tests have been added to the Elementary Spec suite for all cases.
Legacy widgets behavior has not been modified, although a few needed some code
changes.
2019-07-02 05:40:06 -07:00
|
|
|
Efl_Ui_Format_Func indi_format_cb;
|
2018-05-14 22:16:00 -07:00
|
|
|
Eina_Free_Cb indi_format_free_cb;
|
|
|
|
void *indi_format_cb_data;
|
|
|
|
Eina_Strbuf *indi_format_strbuf;
|
|
|
|
const char *indi_template;
|
|
|
|
|
|
|
|
|
|
|
|
Eina_Bool indicator_show : 1;
|
|
|
|
Eina_Bool units_show : 1;
|
|
|
|
Eina_Bool popup_visible : 1;
|
|
|
|
Eina_Bool intvl_enable : 1;
|
|
|
|
Eina_Bool spacer_down : 1;
|
2019-08-20 06:09:14 -07:00
|
|
|
Eina_Bool frozen : 1;
|
2018-05-14 22:16:00 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define ELM_SLIDER_DATA_GET(o, sd) \
|
|
|
|
Elm_Slider_Data * sd = efl_data_scope_get(o, ELM_SLIDER_CLASS)
|
|
|
|
|
|
|
|
#define ELM_SLIDER_DATA_GET_OR_RETURN(o, sd, ...) \
|
|
|
|
Elm_Slider_Data * sd = efl_data_scope_safe_get(o, ELM_SLIDER_CLASS); \
|
|
|
|
if (EINA_UNLIKELY(!sd)) \
|
|
|
|
{ \
|
|
|
|
ERR("No widget data for object %p (%s)", \
|
|
|
|
o, evas_object_type_get(o)); \
|
|
|
|
return __VA_ARGS__; \
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|