Merge remote-tracking branch 'remotes/origin/upstream'
[framework/uifw/elementary.git] / src / bin / test_win_inline.c
1 #include <Elementary.h>
2 #ifdef HAVE_CONFIG_H
3 # include "elementary_config.h"
4 #endif
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 static void
8 fill(Evas_Object *win, Eina_Bool do_bg)
9 {
10    Evas_Object *bg, *sc, *bx, *ic, *bb, *av, *en;
11    char buf[PATH_MAX];
12
13    if (do_bg)
14      {
15         bg = elm_bg_add(win);
16         elm_win_resize_object_add(win, bg);
17         evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
18         evas_object_show(bg);
19      }
20
21    sc = elm_scroller_add(win);
22    evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
23    elm_win_resize_object_add(win, sc);
24
25    bx = elm_box_add(win);
26    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
27    evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
28
29    en = elm_entry_add(win);
30    elm_entry_scrollable_set(en, EINA_TRUE);
31    evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
32    evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
33    elm_object_text_set(en, "This is a single line");
34    elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
35 <<<<<<< HEAD
36    elm_entry_single_line_set(en, 1);
37 =======
38    elm_entry_single_line_set(en, EINA_TRUE);
39 >>>>>>> remotes/origin/upstream
40    evas_object_show(en);
41    elm_box_pack_end(bx, en);
42
43    en = elm_entry_add(win);
44    elm_entry_scrollable_set(en, EINA_TRUE);
45    evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
46    evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
47    elm_object_text_set(en, "Entry 2");
48    elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
49 <<<<<<< HEAD
50    elm_entry_single_line_set(en, 1);
51 =======
52    elm_entry_single_line_set(en, EINA_TRUE);
53 >>>>>>> remotes/origin/upstream
54    evas_object_show(en);
55    elm_box_pack_end(bx, en);
56
57    ic = elm_icon_add(win);
58    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
59    elm_icon_file_set(ic, buf, NULL);
60 <<<<<<< HEAD
61    elm_icon_scale_set(ic, 0, 0);
62 =======
63    elm_icon_resizable_set(ic, 0, 0);
64 >>>>>>> remotes/origin/upstream
65    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
66
67    bb = elm_bubble_add(win);
68    elm_object_text_set(bb, "Message 3");
69    elm_object_part_text_set(bb, "info", "10:32 4/11/2008");
70    elm_object_part_content_set(bb, "icon", ic);
71    evas_object_show(ic);
72    evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
73    evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
74 <<<<<<< HEAD
75    av = elm_anchorblock_add(win);
76    elm_anchorblock_hover_style_set(av, "popout");
77    elm_anchorblock_hover_parent_set(av, win);
78    elm_object_text_set(av,
79                            "Hi there. This is the most recent message in the "
80                            "list of messages. It has one <a href=tel:+614321234>+61 432 1234</a> "
81                            "(phone number) to click on.");
82 =======
83    av = elm_entry_add(win);
84    elm_entry_anchor_hover_style_set(av, "popout");
85    elm_entry_anchor_hover_parent_set(av, win);
86    elm_object_text_set(av,
87                        "Hi there. This is the most recent message in the "
88                        "list of messages. It has one <a href=tel:+614321234>+61 432 1234</a> "
89                        "(phone number) to click on.");
90 >>>>>>> remotes/origin/upstream
91    elm_object_content_set(bb, av);
92    evas_object_show(av);
93    elm_box_pack_end(bx, bb);
94    evas_object_show(bb);
95
96    ic = elm_icon_add(win);
97    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
98    elm_icon_file_set(ic, buf, NULL);
99    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
100
101    bb = elm_bubble_add(win);
102    elm_object_text_set(bb, "Message 2");
103    elm_object_part_text_set(bb, "info", "7:16 27/10/2008");
104    elm_object_part_content_set(bb, "icon", ic);
105    evas_object_show(ic);
106    evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
107    evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
108 <<<<<<< HEAD
109    av = elm_anchorblock_add(win);
110    elm_anchorblock_hover_style_set(av, "popout");
111    elm_anchorblock_hover_parent_set(av, win);
112    elm_object_text_set(av,
113                            "Hey what are you doing? This is the second last message "
114                            "Hi there. This is the most recent message in the "
115                            "list. It's a longer one so it can wrap more and "
116                            "contains a <a href=contact:john>John</a> contact "
117                            "link in it to test popups on links. The idea is that "
118                            "all SMS's are scanned for things that look like phone "
119                            "numbers or names that are in your contacts list, and "
120                            "if they are, they become clickable links that pop up "
121                            "a menus of obvious actions to perform on this piece "
122                            "of information. This of course can be later explicitly "
123                            "done by links maybe running local apps or even being "
124                            "web URL's too that launch the web browser and point it "
125                            "to that URL. <item relsize=16x16 vsize=full href=emoticon/omg></item>");
126 =======
127    av = elm_entry_add(win);
128    elm_entry_anchor_hover_style_set(av, "popout");
129    elm_entry_anchor_hover_parent_set(av, win);
130    elm_object_text_set(av,
131                        "Hey what are you doing? This is the second last message "
132                        "Hi there. This is the most recent message in the "
133                        "list. It's a longer one so it can wrap more and "
134                        "contains a <a href=contact:john>John</a> contact "
135                        "link in it to test popups on links. The idea is that "
136                        "all SMS's are scanned for things that look like phone "
137                        "numbers or names that are in your contacts list, and "
138                        "if they are, they become clickable links that pop up "
139                        "a menus of obvious actions to perform on this piece "
140                        "of information. This of course can be later explicitly "
141                        "done by links maybe running local apps or even being "
142                        "web URL's too that launch the web browser and point it "
143                        "to that URL. <item relsize=16x16 vsize=full href=emoticon/omg></item>");
144 >>>>>>> remotes/origin/upstream
145    elm_object_content_set(bb, av);
146    evas_object_show(av);
147    elm_box_pack_end(bx, bb);
148    evas_object_show(bb);
149
150    ic = elm_icon_add(win);
151    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
152    elm_icon_file_set(ic, buf, NULL);
153 <<<<<<< HEAD
154    elm_icon_scale_set(ic, 0, 0);
155 =======
156    elm_icon_resizable_set(ic, 0, 0);
157 >>>>>>> remotes/origin/upstream
158    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
159
160    bb = elm_bubble_add(win);
161    elm_object_text_set(bb, "Message 1");
162    elm_object_part_text_set(bb, "info", "20:47 18/6/2008");
163    elm_object_part_content_set(bb, "icon", ic);
164    evas_object_show(ic);
165    evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
166    evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
167
168 <<<<<<< HEAD
169    av = elm_anchorblock_add(win);
170    elm_anchorblock_hover_style_set(av, "popout");
171    elm_anchorblock_hover_parent_set(av, win);
172 =======
173    av = elm_entry_add(win);
174    elm_entry_anchor_hover_style_set(av, "popout");
175    elm_entry_anchor_hover_parent_set(av, win);
176 >>>>>>> remotes/origin/upstream
177    elm_object_text_set(av, "This is a short message. <item relsize=16x16 vsize=full href=emoticon/haha></item>");
178    elm_object_content_set(bb, av);
179    evas_object_show(av);
180    elm_box_pack_end(bx, bb);
181    evas_object_show(bb);
182
183    elm_object_content_set(sc, bx);
184    evas_object_show(bx);
185
186    evas_object_show(sc);
187 }
188
189 static void
190 cb_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
191 {
192    Evas_Event_Mouse_Move *ev = event_info;
193    Evas_Object *orig = data;
194    Evas_Coord x, y;
195    Evas_Map *p;
196    int i, w, h;
197
198    if (!ev->buttons) return;
199    evas_object_geometry_get(obj, &x, &y, NULL, NULL);
200    evas_object_move(obj,
201                     x + (ev->cur.canvas.x - ev->prev.output.x),
202                     y + (ev->cur.canvas.y - ev->prev.output.y));
203    evas_object_image_size_get(orig, &w, &h);
204    p = evas_map_new(4);
205    evas_object_map_enable_set(orig, EINA_TRUE);
206    evas_object_raise(orig);
207    for (i = 0; i < 4; i++)
208      {
209         Evas_Object *hand;
210         char key[32];
211
212         snprintf(key, sizeof(key), "h-%i\n", i);
213         hand = evas_object_data_get(orig, key);
214         evas_object_raise(hand);
215         evas_object_geometry_get(hand, &x, &y, NULL, NULL);
216         x += 15;
217         y += 15;
218         evas_map_point_coord_set(p, i, x, y, 0);
219         if (i == 0) evas_map_point_image_uv_set(p, i, 0, 0);
220         else if (i == 1) evas_map_point_image_uv_set(p, i, w, 0);
221         else if (i == 2) evas_map_point_image_uv_set(p, i, w, h);
222         else if (i == 3) evas_map_point_image_uv_set(p, i, 0, h);
223      }
224    evas_object_map_set(orig, p);
225    evas_map_free(p);
226 }
227
228 static void
229 create_handles(Evas_Object *obj)
230 {
231    int i;
232    Evas_Coord x, y, w, h;
233
234    evas_object_geometry_get(obj, &x, &y, &w, &h);
235    for (i = 0; i < 4; i++)
236      {
237         Evas_Object *hand;
238         char buf[PATH_MAX];
239         char key[32];
240
241         hand = evas_object_image_filled_add(evas_object_evas_get(obj));
242         evas_object_resize(hand, 31, 31);
243         snprintf(buf, sizeof(buf), "%s/images/pt.png", elm_app_data_dir_get());
244         evas_object_image_file_set(hand, buf, NULL);
245         if (i == 0)      evas_object_move(hand, x     - 15, y     - 15);
246         else if (i == 1) evas_object_move(hand, x + w - 15, y     - 15);
247         else if (i == 2) evas_object_move(hand, x + w - 15, y + h - 15);
248         else if (i == 3) evas_object_move(hand, x     - 15, y + h - 15);
249         evas_object_event_callback_add(hand, EVAS_CALLBACK_MOUSE_MOVE, cb_mouse_move, obj);
250         evas_object_show(hand);
251         snprintf(key, sizeof(key), "h-%i\n", i);
252         evas_object_data_set(obj, key, hand);
253      }
254 }
255
256 void
257 test_win_inline(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
258 {
259    Evas_Object *win, *bg, *win2, *win3;
260    char buf[PATH_MAX];
261
262    win = elm_win_add(NULL, "window-inline", ELM_WIN_BASIC);
263    elm_win_title_set(win, "Window Inline");
264    elm_win_autodel_set(win, EINA_TRUE);
265
266    bg = elm_bg_add(win);
267    snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
268    elm_bg_file_set(bg, buf, NULL);
269    elm_win_resize_object_add(win, bg);
270    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
271    evas_object_show(bg);
272
273    win2 = elm_win_add(win, "inlined", ELM_WIN_INLINED_IMAGE);
274    fill(win2, EINA_TRUE);
275
276    evas_object_move(win2, 20, 60);
277    evas_object_resize(win2, 300, 200);
278    // image object for win2 is unlinked to its pos/size - so manual control
279    // this allows also for using map and other things with it.
280    evas_object_move(elm_win_inlined_image_object_get(win2), 20, 40);
281    evas_object_resize(elm_win_inlined_image_object_get(win2), 200, 320);
282    evas_object_show(win2);
283
284    win3 = elm_win_add(win, "inlined", ELM_WIN_INLINED_IMAGE);
285    elm_win_alpha_set(win3, EINA_TRUE);
286    fill(win3, EINA_FALSE);
287
288    evas_object_resize(win3, 300, 200);
289    evas_object_move(elm_win_inlined_image_object_get(win3), 80, 180);
290    evas_object_resize(elm_win_inlined_image_object_get(win3), 300, 200);
291    evas_object_show(win3);
292
293    create_handles(elm_win_inlined_image_object_get(win3));
294
295    evas_object_resize(win, 400, 600);
296    evas_object_show(win);
297 }
298 #endif