bb495bec7cf2fb6bc4d02934bbe74cf632eaa8e0
[framework/uifw/elementary.git] / src / lib / elm_webview.c
1 #include <Elementary.h>
2 #include "elm_priv.h"
3
4 /**
5  * @defgroup WebView WebView
6  * @ingroup Elementary
7  *
8  * TODO
9  */
10 typedef struct _Widget_Data Widget_Data;
11
12 struct _Widget_Data
13 {
14    Evas_Object *webkit;
15 };
16
17 static const char *widtype = NULL;
18 static void _del_hook(Evas_Object *obj);
19 static void _sizing_eval(Evas_Object *obj);
20 static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
21 static void _sub_del(void *data, Evas_Object *obj, void *event_info);
22
23 static void
24 _del_pre_hook(Evas_Object *obj)
25 {
26    Widget_Data *wd = elm_widget_data_get(obj);
27    if (!wd) return;
28    /*evas_object_event_callback_del_full
29         (wd->box, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj);
30    evas_object_box_remove_all(wd->box, 0);
31    */
32 }
33
34 static void
35 _del_hook(Evas_Object *obj)
36 {
37    Widget_Data *wd = elm_widget_data_get(obj);
38    if (!wd) return;
39    //_els_webview_del(wd->webkit);
40    free(wd);
41 }
42
43 static void
44 _sizing_eval(Evas_Object *obj)
45 {
46    Evas_Coord w, h;
47    evas_object_geometry_get(obj, NULL, NULL, &w, &h);
48    printf("sizing eval : %d, %d\n", w, h);
49    //evas_object_resize(obj, w, h);
50 }
51
52 static void
53 _changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
54 {
55    _sizing_eval(data);
56 }
57
58 static void
59 _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
60 {
61    _sizing_eval(obj);
62 }
63
64 static void
65 _layout(Evas_Object *o, Evas_Object_Box_Data *priv, void *data)
66 {
67    Widget_Data *wd = data;
68    if (!wd) return;
69    //_els_box_layout(o, priv, wd->horizontal, wd->homogeneous);
70 }
71 /**
72  * Add a new box to the parent
73  *
74  * @param parent The parent object
75  * @return The new object or NULL if it cannot be created
76  *
77  * @ingroup Box
78  */
79 EAPI Evas_Object *
80 elm_webview_add(Evas_Object *parent)
81 {
82 #ifdef ELM_EWEBKIT
83    Evas_Object *obj;
84    Evas *e;
85    Widget_Data *wd;
86
87    wd = ELM_NEW(Widget_Data);
88    e = evas_object_evas_get(parent);
89    obj = elm_widget_add(e);
90    ELM_SET_WIDTYPE(widtype, "webview");
91    elm_widget_type_set(obj, "webview");
92    elm_widget_sub_object_add(parent, obj);
93    elm_widget_data_set(obj, wd);
94    elm_widget_del_hook_set(obj, _del_hook);
95
96    wd->webkit = _els_webview_add(obj, EINA_TRUE);
97    //TODO:evas_object_box_layout_set(wd->box, _layout, wd, NULL);
98    evas_object_event_callback_add(wd->webkit, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
99                                   _changed_size_hints, obj);
100    elm_widget_resize_object_set(obj, wd->webkit);
101    evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
102    printf("elm_webview_add is called\n");
103    return obj;
104 #else
105    return NULL;
106 #endif
107 }
108
109 EAPI Evas_Object *
110 elm_webview_widget_get(Evas_Object *obj)
111 {
112    Widget_Data *wd = elm_widget_data_get(obj);
113    if (!wd) return;
114    return wd->webkit;
115 }
116
117 EAPI void
118 elm_webview_events_feed_set(Evas_Object *obj, Eina_Bool feed)
119 {
120 }
121
122 EAPI void
123 elm_webview_events_feed_get(Evas_Object *obj)
124 {
125 }
126
127 EAPI void
128 elm_webview_auto_fitting_set(Eina_Bool enable)
129 {
130 }
131
132 EAPI Eina_Bool
133 elm_webview_auto_fitting_get()
134 {
135    return EINA_FALSE;
136 }
137
138 EAPI Evas_Object *
139 elm_webview_minimap_get(Evas_Object *obj)
140 {
141    return NULL;
142 }
143
144 EAPI void
145 elm_webview_uri_set(Evas_Object *obj, const char *uri)
146 {
147 }