Efl.Ui.Progressbar: Implement Efl.Ui.Progress intf for progressbar part

and remove part_value_set/get as EO APIs

ref T5360

Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
This commit is contained in:
Amitesh Singh 2017-05-24 17:02:37 +09:00
parent 071bdb6b22
commit 99738e4d39
4 changed files with 125 additions and 77 deletions

View File

@ -422,12 +422,62 @@ _efl_ui_progressbar_efl_ui_progress_span_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Pr
return sd->size;
}
static void
_progressbar_part_value_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, const char *part_name, double val)
{
Efl_Ui_Progress_Status *ps;
Eina_Bool existing_ps = EINA_FALSE;
Eina_List *l;
if (val < MIN_RATIO_LVL) val = MIN_RATIO_LVL;
if (val > MAX_RATIO_LVL) val = MAX_RATIO_LVL;
if (!strcmp(part_name, "elm.cur.progressbar"))
sd->val = val;
EINA_LIST_FOREACH(sd->progress_status, l, ps)
{
if (!strcmp(ps->part_name, part_name))
{
existing_ps = EINA_TRUE;
break;
}
}
if (!existing_ps)
{
ps = _progress_status_new(part_name, val);
sd->progress_status = eina_list_append(sd->progress_status, ps);
}
else
ps->val = val;
_val_set(obj);
_units_set(obj);
efl_event_callback_legacy_call
(obj, EFL_UI_PROGRESSBAR_EVENT_CHANGED, NULL);
}
static double
_progressbar_part_value_get(Efl_Ui_Progressbar_Data *sd, const char* part)
{
Efl_Ui_Progress_Status *ps;
Eina_List *l;
EINA_LIST_FOREACH(sd->progress_status, l, ps)
{
if (!strcmp(ps->part_name, part)) return ps->val;
}
return 0.0;
}
EOLIAN static void
_efl_ui_progressbar_efl_ui_progress_progress_value_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, double val)
{
if (EINA_DBL_EQ(sd->val, val)) return;
elm_progressbar_part_value_set(obj, "elm.cur.progressbar", val);
_progressbar_part_value_set(obj, sd, "elm.cur.progressbar", val);
}
EOLIAN static double
@ -477,56 +527,6 @@ _efl_ui_progressbar_pulse_get(Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data *sd)
return (sd->pulse_state && sd->pulse);
}
EOLIAN static void
_efl_ui_progressbar_part_value_set(Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data *sd, const char *part_name, double val)
{
Efl_Ui_Progress_Status *ps;
Eina_Bool existing_ps = EINA_FALSE;
Eina_List *l;
if (val < MIN_RATIO_LVL) val = MIN_RATIO_LVL;
if (val > MAX_RATIO_LVL) val = MAX_RATIO_LVL;
if (!strcmp(part_name, "elm.cur.progressbar"))
sd->val = val;
EINA_LIST_FOREACH(sd->progress_status, l, ps)
{
if (!strcmp(ps->part_name, part_name))
{
existing_ps = EINA_TRUE;
break;
}
}
if (!existing_ps)
{
ps = _progress_status_new(part_name, val);
sd->progress_status = eina_list_append(sd->progress_status, ps);
}
else
ps->val = val;
_val_set(obj);
_units_set(obj);
efl_event_callback_legacy_call
(obj, EFL_UI_PROGRESSBAR_EVENT_CHANGED, NULL);
}
EOLIAN static double
_efl_ui_progressbar_part_value_get(const Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data *sd, const char* part)
{
Efl_Ui_Progress_Status *ps;
Eina_List *l;
EINA_LIST_FOREACH(sd->progress_status, l, ps)
{
if (!strcmp(ps->part_name, part)) return ps->val;
}
return 0.0;
}
EAPI void
elm_progressbar_value_set(Evas_Object *obj, double val)
{
@ -658,9 +658,34 @@ _efl_ui_progressbar_class_constructor(Efl_Class *klass)
}
/* Efl.Part begin */
ELM_PART_OVERRIDE(efl_ui_progressbar, EFL_UI_PROGRESSBAR, ELM_LAYOUT, Efl_Ui_Progressbar_Data, Elm_Part_Data)
ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_progressbar, EFL_UI_PROGRESSBAR, ELM_LAYOUT, Efl_Ui_Progressbar_Data, Elm_Part_Data)
static EOLIAN Eina_Bool
_efl_ui_progressbar_internal_part_efl_container_content_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, Efl_Gfx *content)
{
Elm_Part_Data *pd = efl_data_scope_get(obj, ELM_LAYOUT_INTERNAL_PART_CLASS);
Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS);
ELM_PART_RETURN_VAL(_efl_ui_progressbar_content_set(pd->obj, sd, pd->part, content));
}
EOLIAN static void
_efl_ui_progressbar_internal_part_efl_ui_progress_progress_value_set(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED, double val)
{
Elm_Part_Data *pd = efl_data_scope_get(obj, ELM_LAYOUT_INTERNAL_PART_CLASS);
Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS);
_progressbar_part_value_set(pd->obj, sd, pd->part, val);
}
EOLIAN static double
_efl_ui_progressbar_internal_part_efl_ui_progress_progress_value_get(Eo *obj, Elm_Part_Data *_pd EINA_UNUSED)
{
Elm_Part_Data *pd = efl_data_scope_get(obj, ELM_LAYOUT_INTERNAL_PART_CLASS);
Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS);
return _progressbar_part_value_get(sd, pd->part);
}
#include "efl_ui_progressbar_internal_part.eo.c"
/* Efl.Part end */
@ -694,4 +719,17 @@ EAPI Eina_Bool
elm_progressbar_is_pulsing_get(const Evas_Object *obj)
{
return efl_ui_progressbar_pulse_get(obj);
}
}
EAPI void
elm_progressbar_part_value_set(Evas_Object *obj, const char *part, double val)
{
if (EINA_DBL_EQ(efl_ui_progress_value_get(efl_part(obj, part)), val)) return;
efl_ui_progress_value_set(efl_part(obj, part), val);
}
EAPI double
elm_progressbar_part_value_get(const Evas_Object *obj, const char *part)
{
return efl_ui_progress_value_get(efl_part(obj, part));
}

View File

@ -2,7 +2,6 @@ class Efl.Ui.Progressbar (Elm.Layout, Efl.Ui.Progress,
Efl.Orientation)
{
[[Elementary progressbar class]]
//legacy_prefix: elm_progressbar;
methods {
@property pulse_mode {
[[Control whether a given progress bar widget is at "pulsing mode" or not.
@ -47,26 +46,6 @@ class Efl.Ui.Progressbar (Elm.Layout, Efl.Ui.Progress,
state: bool; [[$true, to start the pulsing animation, $false to stop it]]
}
}
part_value_set {
[[Set the progress value (in percentage) on a given progress bar widget for the given part name
Use this call to set progress bar status for more than one progress status .
@since 1.8]]
params {
@in part: string; [[The partname to which val have to set]]
@in val: double; [[The progress value (must be between $0.0 and 1.0)]]
}
}
part_value_get @const {
[[Get the progress value (in percentage) on a given progress bar widget for a particular part
@since 1.8]]
return: double; [[The value of the progressbar]]
params {
@in part: string; [[The part name of the progress bar]]
}
}
}
implements {
class.constructor;

View File

@ -1,8 +1,9 @@
class Efl.Ui.Progressbar.Internal.Part (Elm.Layout.Internal.Part)
class Efl.Ui.Progressbar.Internal.Part (Elm.Layout.Internal.Part, Efl.Ui.Progress)
{
[[Elementary progressbar internal part class]]
data: null;
data: Elm_Part_Data;
implements {
Efl.Container.content { set; }
Efl.Ui.Progress.progress_value { set; get; }
}
}

View File

@ -253,4 +253,34 @@ EAPI void elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state);
*/
EAPI Eina_Bool elm_progressbar_is_pulsing_get(const Evas_Object *obj);
/**
* @brief Set the progress value (in percentage) on a given progress bar widget
* for the given part name
*
* Use this call to set progress bar status for more than one progress status .
*
* @param[in] part The partname to which val have to set
* @param[in] val The progress value (must be between $0.0 and 1.0)
*
* @since 1.8
*
* @ingroup Elm_Progressbar
*/
EAPI void elm_progressbar_part_value_set(Evas_Object *obj, const char *part, double val);
/**
* @brief Get the progress value (in percentage) on a given progress bar widget
* for a particular part
*
* @param[in] part The part name of the progress bar
*
* @return The value of the progressbar
*
* @since 1.8
*
* @ingroup Elm_Progressbar
*/
EAPI double elm_progressbar_part_value_get(const Evas_Object *obj, const char *part);
#include "efl_ui_progressbar.eo.legacy.h"