efl.ui.progressbar: add checks for min & max value

this improves the validity check for min & max values
provided from user side.
This commit is contained in:
Amitesh Singh 2018-02-06 22:33:58 +09:00
parent 27c0d53f9b
commit 0aca43be23
1 changed files with 23 additions and 6 deletions

View File

@ -130,16 +130,21 @@ _val_set(Evas_Object *obj)
{
Eina_Bool rtl;
double pos;
Efl_Ui_Progress_Status *ps;
Eina_List *l;
EFL_UI_PROGRESSBAR_DATA_GET(obj, sd);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
rtl = efl_ui_mirrored_get(obj);
Efl_Ui_Progress_Status *ps;
Eina_List *l;
EINA_LIST_FOREACH(sd->progress_status, l, ps)
{
if (EINA_DBL_EQ(ps->val_max, ps->val_min))
{
WRN("progressbar min and max are equal.");
continue;
}
pos = (ps->val - ps->val_min)/(ps->val_max - ps->val_min);
if ((!rtl && _is_inverted(sd->dir)) ||
@ -478,12 +483,23 @@ _progressbar_span_size_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, Evas_Coord size
}
static void
_progress_part_min_max_set(Efl_Ui_Progressbar_Data *sd, const char *part_name, double min, double max)
_progress_part_min_max_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, const char *part_name, double min, double max)
{
Efl_Ui_Progress_Status *ps;
Eina_Bool existing_ps = EINA_FALSE;
Eina_List *l;
if (EINA_DBL_EQ(min, max))
{
ERR("min & max provided are equal.");
return;
}
if (min > max)
{
WRN("min is greater than max.");
}
if (!strcmp(part_name, "elm.cur.progressbar"))
{
sd->val_min = min;
@ -507,6 +523,7 @@ _progress_part_min_max_set(Efl_Ui_Progressbar_Data *sd, const char *part_name, d
ps->val_max = max;
sd->progress_status = eina_list_append(sd->progress_status, ps);
}
_val_set(obj);
}
static void
@ -622,9 +639,9 @@ _efl_ui_progressbar_pulse_get(Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data *sd)
}
EOLIAN static void
_efl_ui_progressbar_efl_ui_range_range_min_max_set(Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data *sd, double min, double max)
_efl_ui_progressbar_efl_ui_range_range_min_max_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, double min, double max)
{
_progress_part_min_max_set(sd, "elm.cur.progressbar", min, max);
_progress_part_min_max_set(obj, sd, "elm.cur.progressbar", min, max);
}
EOLIAN static void
@ -679,7 +696,7 @@ _efl_ui_progressbar_part_efl_ui_range_range_min_max_set(Eo *obj, void *_pd EINA_
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS);
_progress_part_min_max_set(sd, pd->part, min, max);
_progress_part_min_max_set(pd->obj, sd, pd->part, min, max);
}
EOLIAN static void