summaryrefslogtreecommitdiff
path: root/src/lib/elementary/efl_ui_text_factory_emoticons.c
diff options
context:
space:
mode:
authorDaniel Hirt <hirt.danny@gmail.com>2017-11-09 17:53:20 +0200
committerCedric BAIL <cedric@osg.samsung.com>2018-01-18 10:20:28 -0800
commit4a905a22a485388a5e4ba9fb25ff5ca381420ba7 (patch)
tree213dc03c164320ebd8edd7e5959fc31a9706c629 /src/lib/elementary/efl_ui_text_factory_emoticons.c
parent2eac0dd89d01544902d029604fe7328aca765c25 (diff)
downloadefl-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.c52
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"