On Thu, Oct 26, 2017 at 10:12 AM, Amitesh Singh <[email protected]> wrote:
thanks for the improvement, but one hint I said before went unnoticed
and would save great deal of this implementation:
> +typedef struct
> +{
> + const char *template;
> +} Efl_Ui_Format_Data;
this is already stored in the object, due format_string_set... that's
why I'm saying that you should pass it to the callback, so there is no
need to store it again, providing a free_cb to release that.
> +_default_format_cb(void *data, Eina_Strbuf *str, const Eina_Value value)
here you should pass: str, value AND template :-)
> +_default_format_free_cb(void *data)
then this is not needed.
> +EOLIAN static void
> +_efl_ui_format_format_string_set(Eo *obj, Efl_Ui_Format_Data *sd, const char
> *template)
> +{
> + if (!template) return;
> + eina_stringshare_replace(&sd->template, template);
> + efl_ui_format_cb_set(obj, sd, _default_format_cb,
> _default_format_free_cb);
because here you'd not call "efl_ui_format_cb_set()"... you'd do that
once at the constructor/init, then the callback gets the template
stored by efl_ui_format_string_set().
> - elm_layout_text_set(obj, "elm.units", buf);
> + sd->format_cb(sd->format_cb_data, sd->format_strbuf, val);
this is not that good. You should wrap this into a protected method
that implementers call, like:
efl_ui_format(obj, strbuf, val);
Think of bindings (ie: python/javascript/c#), they may want to call
the implementation of efl.ui.slider.... how to? you need to provide a
method to allow that.
--
Gustavo Sverzut Barbieri
--------------------------------------
Mobile: +55 (16) 99354-9890
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel