diff options
author | Daniel Hirt <hirt.danny@gmail.com> | 2017-11-09 17:53:20 +0200 |
---|---|---|
committer | Cedric BAIL <cedric@osg.samsung.com> | 2018-01-18 10:20:28 -0800 |
commit | 4a905a22a485388a5e4ba9fb25ff5ca381420ba7 (patch) | |
tree | 213dc03c164320ebd8edd7e5959fc31a9706c629 /src/lib/elementary/efl_ui_text_factory_emoticons.c | |
parent | 2eac0dd89d01544902d029604fe7328aca765c25 (diff) | |
download | efl-4a905a22a485388a5e4ba9fb25ff5ca381420ba7.tar.gz |
Canvas image: add Efl.Canvas.Text.Factory + use in Ui.Text
This interface has a simple 'create' method to create Efl.Canvas.Object
given a key.
This is used higher-up in Ui.Text in the next commit.
Ui text: add ability to set item factories
Added API to set an item factory object.
This is similar to the previous item providers (that worked with
callbacks).
You instantiate a factory object and set it on the Ui.Text object.
Each factory implements the "create" method from
Efl.Canvas.Text.Item_Factory.
This also includes 3 public factories (Image, Emoticon and Fallback):
- Image factory: creates images from added entries (key strings)
- Emoticon factory: creates emoticons by querying the theme
- Fallback: creates image, then falls back to emoticon
If no factory is set, then the fallback (internal) factory is used.
See the added "Ui.text Item Factory" test in elementary_test for an
example of usage.
@feature
Diffstat (limited to 'src/lib/elementary/efl_ui_text_factory_emoticons.c')
-rw-r--r-- | src/lib/elementary/efl_ui_text_factory_emoticons.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/lib/elementary/efl_ui_text_factory_emoticons.c b/src/lib/elementary/efl_ui_text_factory_emoticons.c new file mode 100644 index 0000000000..55818af33d --- /dev/null +++ b/src/lib/elementary/efl_ui_text_factory_emoticons.c @@ -0,0 +1,52 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#include <Elementary.h> +#include <Elementary_Cursor.h> +#include "elm_priv.h" + +#define MY_CLASS EFL_UI_TEXT_FACTORY_EMOTICONS_CLASS + +typedef struct _Efl_Ui_Text_Factory_Emoticons_Data Efl_Ui_Text_Factory_Emoticons_Data; + +struct _Efl_Ui_Text_Factory_Emoticons_Data +{ + const char *name; +}; + +EOLIAN static Eo * +_efl_ui_text_factory_emoticons_efl_object_constructor(Eo *obj, + Efl_Ui_Text_Factory_Emoticons_Data *pd EINA_UNUSED) +{ + obj = efl_constructor(efl_super(obj, MY_CLASS)); + return obj; +} + +EOLIAN static void +_efl_ui_text_factory_emoticons_efl_object_destructor(Eo *obj, + Efl_Ui_Text_Factory_Emoticons_Data *pd EINA_UNUSED) +{ + efl_destructor(efl_super(obj, MY_CLASS)); +} + + +EOLIAN static Efl_Canvas_Object +*_efl_ui_text_factory_emoticons_efl_canvas_text_factory_create( + Eo *obj EINA_UNUSED, + Efl_Ui_Text_Factory_Emoticons_Data *pd EINA_UNUSED, + Efl_Canvas_Object *object, + const char *key) +{ + Eo *o; + const char *style = elm_widget_style_get(object); + + o = edje_object_add(evas_object_evas_get(object)); + if (!_elm_theme_object_set + (object, o, "text", key, style)) + _elm_theme_object_set + (object, o, "text/emoticon", "wtf", style); + return o; +} + +#include "efl_ui_text_factory_emoticons.eo.c" |