Eolian: Integration of Progressbar

This commit is contained in:
Daniel Zaoui 2014-03-26 09:36:41 +02:00
parent 1f5c92fec0
commit 59378dd4dd
5 changed files with 395 additions and 350 deletions

View File

@ -632,7 +632,9 @@ BUILT_SOURCES = \
elc_popup.eo.c \
elc_popup.eo.h \
elm_prefs.eo.c \
elm_prefs.eo.h
elm_prefs.eo.h \
elm_progressbar.eo.c \
elm_progressbar.eo.h
EXTRA_DIST += \
elm_widget.eo \
@ -688,7 +690,8 @@ EXTRA_DIST += \
elc_player.eo \
elm_plug.eo \
elc_popup.eo \
elm_prefs.eo
elm_prefs.eo \
elm_progressbar.eo
nodist_includesunstable_HEADERS = \
elm_widget.eo.h \
@ -744,5 +747,6 @@ nodist_includesunstable_HEADERS = \
elc_player.eo.h \
elm_plug.eo.h \
elc_popup.eo.h \
elm_prefs.eo.h
elm_prefs.eo.h \
elm_progressbar.eo.h

View File

@ -8,8 +8,6 @@
#include "elm_widget_progressbar.h"
#include "elm_widget_layout.h"
EAPI Eo_Op ELM_OBJ_PROGRESSBAR_BASE_ID = EO_NOOP;
#define MY_CLASS ELM_OBJ_PROGRESSBAR_CLASS
#define MY_CLASS_NAME "Elm_Progressbar"
@ -108,8 +106,8 @@ _val_set(Evas_Object *obj)
}
}
static void
_elm_progressbar_smart_sizing_eval(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_progressbar_elm_layout_sizing_eval(Eo *obj, Elm_Progressbar_Data *_pd EINA_UNUSED)
{
Evas_Coord minw = -1, minh = -1;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
@ -137,57 +135,46 @@ _icon_signal_emit(Evas_Object *obj)
/* FIXME: replicated from elm_layout just because progressbar's icon
* spot is elm.swallow.content, not elm.swallow.icon. Fix that
* whenever we can changed the theme API */
static void
_elm_progressbar_smart_sub_object_del(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_progressbar_elm_widget_sub_object_del(Eo *obj, Elm_Progressbar_Data *_pd EINA_UNUSED, Evas_Object *sobj)
{
Evas_Object *sobj = va_arg(*list, Evas_Object *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_widget_sub_object_del(sobj, &int_ret));
if(!int_ret) return;
if(!int_ret) return EINA_FALSE;
_icon_signal_emit(obj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
/* FIXME: replicated from elm_layout just because progressbar's icon
* spot is elm.swallow.content, not elm.swallow.icon. Fix that
* whenever we can changed the theme API */
static void
_elm_progressbar_smart_content_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_progressbar_elm_container_content_set(Eo *obj, Elm_Progressbar_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content)
{
const char *part = va_arg(*list, const char *);
Evas_Object *content = va_arg(*list, Evas_Object *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_container_content_set(part, content, &int_ret));
if(!int_ret) return;
if(!int_ret) return EINA_FALSE;
_icon_signal_emit(obj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
_elm_progressbar_smart_theme(Eo *obj, void *_pd, va_list *list)
EOLIAN static Eina_Bool
_elm_progressbar_elm_widget_theme_apply(Eo *obj, Elm_Progressbar_Data *sd)
{
Elm_Progressbar_Smart_Data *sd = _pd;
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
ELM_LAYOUT_DATA_GET(obj, ld);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
if (sd->horizontal)
eina_stringshare_replace(&ld->group, "horizontal");
else eina_stringshare_replace(&ld->group, "vertical");
eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
if (!int_ret) return;
if (!int_ret) return EINA_FALSE;
if (sd->pulse)
elm_layout_signal_emit(obj, "elm,state,pulse", "elm");
@ -224,7 +211,7 @@ _elm_progressbar_smart_theme(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static char *
@ -262,10 +249,9 @@ _access_state_cb(void *data EINA_UNUSED, Evas_Object *obj)
return NULL;
}
static void
_elm_progressbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_progressbar_evas_smart_add(Eo *obj, Elm_Progressbar_Data *priv)
{
Elm_Progressbar_Smart_Data *priv = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
@ -302,10 +288,9 @@ _elm_progressbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
(_elm_access_info_get(obj), ELM_ACCESS_STATE, _access_state_cb, NULL);
}
static void
_elm_progressbar_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_progressbar_evas_smart_del(Eo *obj, Elm_Progressbar_Data *sd)
{
Elm_Progressbar_Smart_Data *sd = _pd;
Elm_Progress_Status *progress_obj;
eina_stringshare_del(sd->units);
@ -320,18 +305,16 @@ _elm_progressbar_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
}
static void
_elm_progressbar_smart_text_aliases_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static const Elm_Layout_Part_Alias_Description*
_elm_progressbar_elm_layout_text_aliases_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *_pd EINA_UNUSED)
{
const Elm_Layout_Part_Alias_Description **aliases = va_arg(*list, const Elm_Layout_Part_Alias_Description **);
*aliases = _text_aliases;
return _text_aliases;
}
static void
_elm_progressbar_smart_content_aliases_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static const Elm_Layout_Part_Alias_Description*
_elm_progressbar_elm_layout_content_aliases_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *_pd EINA_UNUSED)
{
const Elm_Layout_Part_Alias_Description **aliases = va_arg(*list, const Elm_Layout_Part_Alias_Description **);
*aliases = _content_aliases;
return _content_aliases;
}
EAPI Evas_Object *
@ -343,8 +326,8 @@ elm_progressbar_add(Evas_Object *parent)
return obj;
}
static void
_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_progressbar_eo_base_constructor(Eo *obj, Elm_Progressbar_Data *_pd EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
eo_do(obj,
@ -352,20 +335,9 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL));
}
EAPI void
elm_progressbar_pulse_set(Evas_Object *obj,
Eina_Bool pulse)
EOLIAN static void
_elm_progressbar_pulse_set(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd, Eina_Bool pulse)
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_pulse_set(pulse));
}
static void
_pulse_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Eina_Bool pulse = va_arg(*list, int);
Elm_Progressbar_Smart_Data *sd = _pd;
pulse = !!pulse;
if (sd->pulse == pulse) return;
@ -374,38 +346,15 @@ _pulse_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
eo_do(obj, elm_obj_widget_theme_apply(NULL));
}
EAPI Eina_Bool
elm_progressbar_pulse_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_progressbar_pulse_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd)
{
ELM_PROGRESSBAR_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_progressbar_pulse_get(&ret));
return ret;
return sd->pulse;
}
static void
_pulse_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_progressbar_pulse(Eo *obj, Elm_Progressbar_Data *sd, Eina_Bool state)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Progressbar_Smart_Data *sd = _pd;
*ret = sd->pulse;
}
EAPI void
elm_progressbar_pulse(Evas_Object *obj,
Eina_Bool state)
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_pulse(state));
}
static void
_pulse(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool state = va_arg(*list, int);
Elm_Progressbar_Smart_Data *sd = _pd;
state = !!state;
if ((!sd->pulse) || (sd->pulse_state == state)) return;
@ -417,19 +366,9 @@ _pulse(Eo *obj, void *_pd, va_list *list)
elm_layout_signal_emit(obj, "elm,state,pulse,stop", "elm");
}
EAPI void
elm_progressbar_part_value_set(Evas_Object *obj, const char *part, double val)
EOLIAN static void
_elm_progressbar_part_value_set(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd, const char *part_name, double val)
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_part_value_set(part, val));
}
static void
_part_value_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
const char *part_name = va_arg(*list, const char *);
double val = va_arg(*list, double);
Elm_Progressbar_Smart_Data *sd = _pd;
Elm_Progress_Status *ps;
Eina_Bool existing_ps = EINA_FALSE;
Eina_List *l;
@ -462,47 +401,23 @@ _part_value_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
evas_object_smart_callback_call(obj, SIG_CHANGED, NULL);
}
EAPI double
elm_progressbar_part_value_get(const Evas_Object *obj, const char * part)
EOLIAN static double
_elm_progressbar_part_value_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd, const char* part)
{
ELM_PROGRESSBAR_CHECK(obj) 0.0;
double ret;
eo_do((Eo *) obj, elm_obj_progressbar_part_value_get(part,&ret));
return ret;
}
static void
_part_value_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
const char* part = va_arg(*list, const char *);
double *ret = va_arg(*list, double *);
Elm_Progressbar_Smart_Data *sd = _pd;
Elm_Progress_Status *ps;
Eina_List *l;
EINA_LIST_FOREACH(sd->progress_status, l, ps)
{
if (!strcmp(ps->part_name, part))
{
*ret = ps->val;
return;
}
if (!strcmp(ps->part_name, part)) return ps->val;
}
return 0.0;
}
EAPI void
elm_progressbar_value_set(Evas_Object *obj,
double val)
EOLIAN static void
_elm_progressbar_value_set(Eo *obj, Elm_Progressbar_Data *sd, double val)
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_value_set(val));
}
static void
_value_set(Eo *obj, void *_pd, va_list *list)
{
double val = va_arg(*list, double);
Elm_Progressbar_Smart_Data *sd = _pd;
Elm_Progress_Status *ps;
if (sd->val == val) return;
@ -518,38 +433,15 @@ _value_set(Eo *obj, void *_pd, va_list *list)
evas_object_smart_callback_call(obj, SIG_CHANGED, NULL);
}
EAPI double
elm_progressbar_value_get(const Evas_Object *obj)
EOLIAN static double
_elm_progressbar_value_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd)
{
ELM_PROGRESSBAR_CHECK(obj) 0.0;
double ret;
eo_do((Eo *) obj, elm_obj_progressbar_value_get(&ret));
return ret;
return sd->val;
}
static void
_value_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_progressbar_span_size_set(Eo *obj, Elm_Progressbar_Data *sd, Evas_Coord size)
{
double *ret = va_arg(*list, double *);
Elm_Progressbar_Smart_Data *sd = _pd;
*ret = sd->val;
}
EAPI void
elm_progressbar_span_size_set(Evas_Object *obj,
Evas_Coord size)
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_span_size_set(size));
}
static void
_span_size_set(Eo *obj, void *_pd, va_list *list)
{
Evas_Coord size = va_arg(*list, Evas_Coord);
Elm_Progressbar_Smart_Data *sd = _pd;
if (sd->size == size) return;
sd->size = size;
@ -566,37 +458,15 @@ _span_size_set(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj);
}
EAPI Evas_Coord
elm_progressbar_span_size_get(const Evas_Object *obj)
EOLIAN static Evas_Coord
_elm_progressbar_span_size_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd)
{
ELM_PROGRESSBAR_CHECK(obj) 0;
Evas_Coord ret;
eo_do((Eo *) obj, elm_obj_progressbar_span_size_get(&ret));
return ret;
return sd->size;
}
static void
_span_size_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_progressbar_unit_format_set(Eo *obj, Elm_Progressbar_Data *sd, const char *units)
{
Evas_Coord *ret = va_arg(*list, Evas_Coord *);
Elm_Progressbar_Smart_Data *sd = _pd;
*ret = sd->size;
}
EAPI void
elm_progressbar_unit_format_set(Evas_Object *obj,
const char *units)
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_unit_format_set(units));
}
static void
_unit_format_set(Eo *obj, void *_pd, va_list *list)
{
const char *units = va_arg(*list, const char *);
Elm_Progressbar_Smart_Data *sd = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
eina_stringshare_replace(&sd->units, units);
@ -615,38 +485,15 @@ _unit_format_set(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj);
}
EAPI const char *
elm_progressbar_unit_format_get(const Evas_Object *obj)
EOLIAN static const char*
_elm_progressbar_unit_format_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd)
{
ELM_PROGRESSBAR_CHECK(obj) NULL;
const char *ret = NULL;
eo_do((Eo *) obj, elm_obj_progressbar_unit_format_get(&ret));
return ret;
return sd->units;
}
static void
_unit_format_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_progressbar_unit_format_function_set(Eo *obj, Elm_Progressbar_Data *sd, progressbar_func_type func, progressbar_freefunc_type free_func)
{
const char **ret = va_arg(*list, const char **);
Elm_Progressbar_Smart_Data *sd = _pd;
*ret = sd->units;
}
EAPI void
elm_progressbar_unit_format_function_set(Evas_Object *obj, char *(func)(double), void (*free_func) (char *))
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_unit_format_function_set(func, free_func));
}
EAPI void
_unit_format_function_set(Eo *obj, void *_pd, va_list *list)
{
progressbar_func_type func = va_arg(*list, progressbar_func_type);
progressbar_freefunc_type free_func = va_arg(*list, progressbar_freefunc_type);
Elm_Progressbar_Smart_Data *sd = _pd;
sd->unit_format_func = func;
sd->unit_format_free = free_func;
@ -654,20 +501,9 @@ _unit_format_function_set(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj);
}
EAPI void
elm_progressbar_horizontal_set(Evas_Object *obj,
Eina_Bool horizontal)
EOLIAN static void
_elm_progressbar_horizontal_set(Eo *obj, Elm_Progressbar_Data *sd, Eina_Bool horizontal)
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_horizontal_set(horizontal));
}
static void
_horizontal_set(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool horizontal = va_arg(*list, int);
Elm_Progressbar_Smart_Data*sd = _pd;
horizontal = !!horizontal;
if (sd->horizontal == horizontal) return;
@ -675,36 +511,15 @@ _horizontal_set(Eo *obj, void *_pd, va_list *list)
eo_do(obj, elm_obj_widget_theme_apply(NULL));
}
EAPI Eina_Bool
elm_progressbar_horizontal_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_progressbar_horizontal_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd)
{
ELM_PROGRESSBAR_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_progressbar_horizontal_get(&ret));
return ret;
return sd->horizontal;
}
static void
_horizontal_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_progressbar_inverted_set(Eo *obj, Elm_Progressbar_Data *sd, Eina_Bool inverted)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Progressbar_Smart_Data*sd = _pd;
*ret = sd->horizontal;
}
EAPI void
elm_progressbar_inverted_set(Evas_Object *obj,
Eina_Bool inverted)
{
ELM_PROGRESSBAR_CHECK(obj);
eo_do(obj, elm_obj_progressbar_inverted_set(inverted));
}
static void
_inverted_set(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool inverted = va_arg(*list, int);
Elm_Progressbar_Smart_Data*sd = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
inverted = !!inverted;
@ -722,106 +537,28 @@ _inverted_set(Eo *obj, void *_pd, va_list *list)
_units_set(obj);
}
EAPI Eina_Bool
elm_progressbar_inverted_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_progressbar_inverted_get(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd)
{
ELM_PROGRESSBAR_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_progressbar_inverted_get(&ret));
return ret;
return sd->inverted;
}
static void
_inverted_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static Eina_Bool
_elm_progressbar_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *_pd EINA_UNUSED)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Progressbar_Smart_Data*sd = _pd;
*ret = sd->inverted;
return EINA_FALSE;
}
static void
_elm_progressbar_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_progressbar_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *_pd EINA_UNUSED)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
*ret = EINA_FALSE;
return EINA_FALSE;
}
static void
_elm_progressbar_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static void
_elm_progressbar_class_constructor(Eo_Class *klass)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
*ret = EINA_FALSE;
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_progressbar_smart_add),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_progressbar_smart_del),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_progressbar_smart_theme),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_SUB_OBJECT_DEL), _elm_progressbar_smart_sub_object_del),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_progressbar_smart_focus_next_manager_is),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_progressbar_smart_focus_direction_manager_is),
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_SET), _elm_progressbar_smart_content_set),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_progressbar_smart_sizing_eval),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_TEXT_ALIASES_GET), _elm_progressbar_smart_text_aliases_get),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_CONTENT_ALIASES_GET), _elm_progressbar_smart_content_aliases_get),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET), _pulse_set),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET), _pulse_get),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE), _pulse),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET), _value_set),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET), _value_get),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET), _span_size_set),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET), _span_size_get),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET), _unit_format_set),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET), _unit_format_get),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET), _unit_format_function_set),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET), _horizontal_set),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET), _horizontal_get),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET), _inverted_set),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET), _inverted_get),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PART_VALUE_SET), _part_value_set),
EO_OP_FUNC(ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PART_VALUE_GET), _part_value_get),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET, "Set whether a given progress bar widget is at 'pulsing mode' or not."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_GET, "Get whether a given progress bar widget is at 'pulsing mode' or not."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE, "Start/stop a given progress bar 'pulsing' animation, if its under that mode."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_SET, "Set the progress value (in percentage) on a given progress bar widget."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_VALUE_GET, "Get the progress value (in percentage) on a given progress bar widget."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_SET, "Set the (exact) length of the bar region of a given progress bar widget."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_SPAN_SIZE_GET, "Get the length set for the bar region of a given progress bar widget."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_SET, "Set the format string for a given progress bar widget's units label."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_GET, "Retrieve the format string set for a given progress bar widget's units label."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_UNIT_FORMAT_FUNCTION_SET, "Set the format function pointer for the units label."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_SET, "Set the orientation of a given progress bar widget."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_HORIZONTAL_GET, "Retrieve the orientation of a given progress bar widget."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_SET, "Invert a given progress bar widget's displaying values order."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_INVERTED_GET, "Get whether a given progress bar widget's displaying values are inverted or not."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_PART_VALUE_SET, "Set the progress value (in percentage) on a given progress bar widget for a part."),
EO_OP_DESCRIPTION(ELM_OBJ_PROGRESSBAR_SUB_ID_PART_VALUE_GET, "Get the progress value (in percentage) on a given progress bar widget for a part."),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
MY_CLASS_NAME,
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_PROGRESSBAR_BASE_ID, op_desc, ELM_OBJ_PROGRESSBAR_SUB_ID_LAST),
NULL,
sizeof(Elm_Progressbar_Smart_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elm_obj_progressbar_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, NULL);
#include "elm_progressbar.eo.c"

View File

@ -0,0 +1,300 @@
class Elm_Progressbar (Elm_Layout)
{
eo_prefix: elm_obj_progressbar;
properties {
span_size {
set {
/*@
Set the (exact) length of the bar region of a given progress bar
widget
This sets the minimum width (when in horizontal mode) or height
(when in vertical mode) of the actual bar area of the progress
bar @p obj. This in turn affects the object's minimum size. Use
this when you're not setting other size hints expanding on the
given direction (like weight and alignment hints) and you would
like it to have a specific size.
@note Icon, label and unit text around @p obj will require their
own space, which will make @p obj to require more the @p size,
actually.
@see elm_progressbar_span_size_get()
@ingroup Progressbar */
}
get {
/*@
Get the length set for the bar region of a given progress bar
widget
@return The length of the progress bar's bar region
If that size was not set previously, with
elm_progressbar_span_size_set(), this call will return @c 0.
@ingroup Progressbar */
}
values {
Evas_Coord size; /*@ The length of the progress bar's bar region */
}
}
pulse {
set {
/*@
Set whether a given progress bar widget is at "pulsing mode" or
not.
By default, progress bars will display values from the low to
high value boundaries. There are, though, contexts in which the
progress of a given task is @b unknown. For such cases,
one can set a progress bar widget to a "pulsing state", to give
the user an idea that some computation is being held, but
without exact progress values. In the default theme, it will
animate its bar with the contents filling in constantly and back
to non-filled, in a loop. To start and stop this pulsing
animation, one has to explicitly call elm_progressbar_pulse().
@see elm_progressbar_pulse_get()
@see elm_progressbar_pulse()
@ingroup Progressbar */
}
get {
/*@
Get whether a given progress bar widget is at "pulsing mode" or
not.
@return @c EINA_TRUE, if @p obj is in pulsing mode, @c EINA_FALSE
if it's in the default one (and on errors)
@ingroup Progressbar */
}
values {
Eina_Bool pulse; /*@ @c EINA_TRUE to put @p obj in pulsing mode,
@c EINA_FALSE to put it back to its default one */
}
}
value {
set {
/*@
Set the progress value (in percentage) on a given progress bar
widget
Use this call to set progress bar levels.
@note If you passes a value out of the specified range for @p
val, it will be interpreted as the @b closest of the @b boundary
values in the range.
@ingroup Progressbar */
}
get {
/*@
Get the progress value (in percentage) on a given progress bar
widget
@return The value of the progressbar
@see elm_progressbar_value_set() for more details
@ingroup Progressbar */
}
values {
double val; /*@ The progress value (@b must be between @c 0.0 and @c
1.0) */
}
}
inverted {
set {
/*@
Invert a given progress bar widget's displaying values order
A progress bar may be @b inverted, in which state it gets its
values inverted, with high values being on the left or top and
low values on the right or bottom, as opposed to normally have
the low values on the former and high values on the latter,
respectively, for horizontal and vertical modes.
@see elm_progressbar_inverted_get()
@ingroup Progressbar */
}
get {
/*@
Get whether a given progress bar widget's displaying values are
inverted or not
@return @c EINA_TRUE, if @p obj has inverted values,
@c EINA_FALSE otherwise (and on errors)
@see elm_progressbar_inverted_set() for more details
@ingroup Progressbar */
}
values {
Eina_Bool inverted; /*@ Use @c EINA_TRUE to make @p obj inverted,
@c EINA_FALSE to bring it back to default, non-inverted values. */
}
}
horizontal {
set {
/*@
Set the orientation of a given progress bar widget
Use this function to change how your progress bar is to be
disposed: vertically or horizontally.
@see elm_progressbar_horizontal_get()
@ingroup Progressbar */
}
get {
/*@
Retrieve the orientation of a given progress bar widget
@return @c EINA_TRUE, if @p obj is set to be @b horizontal,
@c EINA_FALSE if it's @b vertical (and on errors)
@see elm_progressbar_horizontal_set() for more details
@ingroup Progressbar */
}
values {
Eina_Bool horizontal; /*@ Use @c EINA_TRUE to make @p obj to be
@b horizontal, @c EINA_FALSE to make it @b vertical */
}
}
unit_format {
set {
/*@
Set the format string for a given progress bar widget's units
label
If @c NULL is passed on @p format, it will make @p obj's units
area to be hidden completely. If not, it'll set the <b>format
string</b> for the units label's @b text. The units label is
provided a floating point value, so the units text is up display
at most one floating point value. Note that the units label is
optional. Use a format string such as "%1.2f meters" for
example.
@note The default format string for a progress bar is an integer
percentage, as in @c "%.0f %%".
@see elm_progressbar_unit_format_get()
@ingroup Progressbar */
}
get {
/*@
Retrieve the format string set for a given progress bar widget's
units label
@return The format set string for @p obj's units label or
@c NULL, if none was set (and on errors)
@see elm_progressbar_unit_format_set() for more details
@ingroup Progressbar */
}
values {
const char *units; /*@ The format string for @p obj's units label */
}
}
unit_format_function {
set {
/*@
Set the format function pointer for the units label
Set the callback function to format the unit string.
@see elm_progressbar_unit_format_set() for more info on how this works.
@since 1.7
@ingroup Progressbar */
}
values {
progressbar_func_type func; /*@ The unit format function */
progressbar_freefunc_type free_func; /*@ The freeing function for the format string. */
}
}
}
methods {
part_value_set {
/*@
Set the progress value (in percentage) on a given progress bar
widget for the given part name
@since 1.8
Use this call to set progress bar status for more than one progress status .
@ingroup Progressbar */
params {
@in const char *part; /*@ The partname to which val have to set */
@in double val; /*@ The progress value (@b must be between @c 0.0 and @c
1.0) */
}
}
part_value_get {
/*@
Get the progress value (in percentage) on a given progress bar
widget for a particular part
@since 1.8
@return The value of the progressbar
@see elm_progressbar_value_set() for more details
@ingroup Progressbar */
const;
return double;
params {
@in const char *part; /*@ The part name of the progress bar */
}
}
pulse {
/*@
Start/stop a given progress bar "pulsing" animation, if its
under that mode
@note This call won't do anything if @p obj is not under "pulsing mode".
@see elm_progressbar_pulse_set() for more details.
@ingroup Progressbar */
params {
@in Eina_Bool state; /*@ @c EINA_TRUE, to @b start the pulsing animation,
@c EINA_FALSE to @b stop it */
}
}
}
implements {
class::constructor;
Eo_Base::constructor;
Evas_Smart::add;
Evas_Smart::del;
Elm_Widget::theme_apply;
Elm_Widget::focus_next_manager_is;
Elm_Widget::focus_direction_manager_is;
Elm_Widget::sub_object_del;
Elm_Container::content_set;
Elm_Layout::text_aliases::get;
Elm_Layout::content_aliases::get;
Elm_Layout::sizing_eval;
}
events {
changed;
language,changed;
access,changed;
focused;
unfocused;
}
}

View File

@ -1,12 +1,15 @@
typedef char *(*progressbar_func_type)(double);
typedef void (*progressbar_freefunc_type)(char *);
#include "elm_progressbar.eo.h"
#if 0
#define ELM_OBJ_PROGRESSBAR_CLASS elm_obj_progressbar_class_get()
const Eo_Class *elm_obj_progressbar_class_get(void) EINA_CONST;
extern EAPI Eo_Op ELM_OBJ_PROGRESSBAR_BASE_ID;
typedef char *(*progressbar_func_type)(double);
typedef void (*progressbar_freefunc_type)(char *);
enum
{
ELM_OBJ_PROGRESSBAR_SUB_ID_PULSE_SET,
@ -263,3 +266,4 @@ enum
* @ingroup Progressbar
*/
#define elm_obj_progressbar_part_value_get(part, ret) ELM_OBJ_PROGRESSBAR_ID(ELM_OBJ_PROGRESSBAR_SUB_ID_PART_VALUE_GET), EO_TYPECHECK(const char*, part), EO_TYPECHECK(double *, ret)
#endif

View File

@ -17,10 +17,10 @@
/**
* Base layout smart data extended with progressbar instance data.
*/
typedef struct _Elm_Progressbar_Smart_Data Elm_Progressbar_Smart_Data;
typedef struct _Elm_Progressbar_Data Elm_Progressbar_Data;
typedef struct _Elm_Progress_Status Elm_Progress_Status;
struct _Elm_Progressbar_Smart_Data
struct _Elm_Progressbar_Data
{
Evas_Object *spacer;
const char *units;
@ -49,7 +49,7 @@ struct _Elm_Progress_Status
*/
#define ELM_PROGRESSBAR_DATA_GET(o, sd) \
Elm_Progressbar_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_PROGRESSBAR_CLASS)
Elm_Progressbar_Data * sd = eo_data_scope_get(o, ELM_OBJ_PROGRESSBAR_CLASS)
#define ELM_PROGRESSBAR_DATA_GET_OR_RETURN(o, ptr) \
ELM_PROGRESSBAR_DATA_GET(o, ptr); \