1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
8 fill(Evas_Object *win, Eina_Bool do_bg)
10 Evas_Object *bg, *sc, *bx, *ic, *bb, *av, *en;
16 elm_win_resize_object_add(win, bg);
17 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
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);
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);
29 en = elm_scrolled_entry_add(win);
30 evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
31 evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
32 elm_scrolled_entry_entry_set(en, "This is a single line");
33 elm_scrolled_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
34 elm_scrolled_entry_single_line_set(en, 1);
36 elm_box_pack_end(bx, en);
38 en = elm_scrolled_entry_add(win);
39 evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
40 evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
41 elm_scrolled_entry_entry_set(en, "Entry 2");
42 elm_scrolled_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
43 elm_scrolled_entry_single_line_set(en, 1);
45 elm_box_pack_end(bx, en);
47 ic = elm_icon_add(win);
48 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
49 elm_icon_file_set(ic, buf, NULL);
50 elm_icon_scale_set(ic, 0, 0);
51 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
53 bb = elm_bubble_add(win);
54 elm_bubble_label_set(bb, "Message 3");
55 elm_bubble_info_set(bb, "10:32 4/11/2008");
56 elm_bubble_icon_set(bb, ic);
58 evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
59 evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
60 av = elm_anchorblock_add(win);
61 elm_anchorblock_hover_style_set(av, "popout");
62 elm_anchorblock_hover_parent_set(av, win);
63 elm_anchorblock_text_set(av,
64 "Hi there. This is the most recent message in the "
65 "list of messages. It has one <a href=tel:+614321234>+61 432 1234</a> "
66 "(phone number) to click on.");
67 elm_bubble_content_set(bb, av);
69 elm_box_pack_end(bx, bb);
72 ic = elm_icon_add(win);
73 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
74 elm_icon_file_set(ic, buf, NULL);
75 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
77 bb = elm_bubble_add(win);
78 elm_bubble_label_set(bb, "Message 2");
79 elm_bubble_info_set(bb, "7:16 27/10/2008");
80 elm_bubble_icon_set(bb, ic);
82 evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
83 evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
84 av = elm_anchorblock_add(win);
85 elm_anchorblock_hover_style_set(av, "popout");
86 elm_anchorblock_hover_parent_set(av, win);
87 elm_anchorblock_text_set(av,
88 "Hey what are you doing? This is the second last message "
89 "Hi there. This is the most recent message in the "
90 "list. It's a longer one so it can wrap more and "
91 "contains a <a href=contact:john>John</a> contact "
92 "link in it to test popups on links. The idea is that "
93 "all SMS's are scanned for things that look like phone "
94 "numbers or names that are in your contacts list, and "
95 "if they are, they become clickable links that pop up "
96 "a menus of obvious actions to perform on this piece "
97 "of information. This of course can be later explicitly "
98 "done by links maybe running local apps or even being "
99 "web URL's too that launch the web browser and point it "
100 "to that URL. <item relsize=16x16 vsize=full href=emoticon/omg></item>");
101 elm_bubble_content_set(bb, av);
102 evas_object_show(av);
103 elm_box_pack_end(bx, bb);
104 evas_object_show(bb);
106 ic = elm_icon_add(win);
107 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
108 elm_icon_file_set(ic, buf, NULL);
109 elm_icon_scale_set(ic, 0, 0);
110 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
112 bb = elm_bubble_add(win);
113 elm_bubble_label_set(bb, "Message 1");
114 elm_bubble_info_set(bb, "20:47 18/6/2008");
115 elm_bubble_icon_set(bb, ic);
116 evas_object_show(ic);
117 evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
118 evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
120 av = elm_anchorblock_add(win);
121 elm_anchorblock_hover_style_set(av, "popout");
122 elm_anchorblock_hover_parent_set(av, win);
123 elm_anchorblock_text_set(av, "This is a short message. <item relsize=16x16 vsize=full href=emoticon/haha></item>");
124 elm_bubble_content_set(bb, av);
125 evas_object_show(av);
126 elm_box_pack_end(bx, bb);
127 evas_object_show(bb);
129 elm_scroller_content_set(sc, bx);
130 evas_object_show(bx);
132 evas_object_show(sc);
136 cb_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
138 Evas_Event_Mouse_Move *ev = event_info;
139 Evas_Object *orig = data;
144 if (!ev->buttons) return;
145 evas_object_geometry_get(obj, &x, &y, NULL, NULL);
146 evas_object_move(obj,
147 x + (ev->cur.output.x - ev->prev.output.x),
148 y + (ev->cur.output.y - ev->prev.output.y));
149 evas_object_image_size_get(orig, &w, &h);
151 evas_object_map_enable_set(orig, EINA_TRUE);
152 evas_object_raise(orig);
153 for (i = 0; i < 4; i++)
158 snprintf(key, sizeof(key), "h-%i\n", i);
159 hand = evas_object_data_get(orig, key);
160 evas_object_raise(hand);
161 evas_object_geometry_get(hand, &x, &y, NULL, NULL);
164 evas_map_point_coord_set(p, i, x, y, 0);
165 if (i == 0) evas_map_point_image_uv_set(p, i, 0, 0);
166 else if (i == 1) evas_map_point_image_uv_set(p, i, w, 0);
167 else if (i == 2) evas_map_point_image_uv_set(p, i, w, h);
168 else if (i == 3) evas_map_point_image_uv_set(p, i, 0, h);
170 evas_object_map_set(orig, p);
175 create_handles(Evas_Object *obj)
178 Evas_Coord x, y, w, h;
180 evas_object_geometry_get(obj, &x, &y, &w, &h);
181 for (i = 0; i < 4; i++)
187 hand = evas_object_image_filled_add(evas_object_evas_get(obj));
188 evas_object_resize(hand, 31, 31);
189 snprintf(buf, sizeof(buf), "%s/images/pt.png", PACKAGE_DATA_DIR);
190 evas_object_image_file_set(hand, buf, NULL);
191 if (i == 0) evas_object_move(hand, x - 15, y - 15);
192 else if (i == 1) evas_object_move(hand, x + w - 15, y - 15);
193 else if (i == 2) evas_object_move(hand, x + w - 15, y + h - 15);
194 else if (i == 3) evas_object_move(hand, x - 15, y + h - 15);
195 evas_object_event_callback_add(hand, EVAS_CALLBACK_MOUSE_MOVE, cb_mouse_move, obj);
196 evas_object_show(hand);
197 snprintf(key, sizeof(key), "h-%i\n", i);
198 evas_object_data_set(obj, key, hand);
203 test_win_inline(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
205 Evas_Object *win, *bg, *win2, *win3;
208 win = elm_win_add(NULL, "window-inline", ELM_WIN_BASIC);
209 elm_win_title_set(win, "Window Inline");
210 elm_win_autodel_set(win, 1);
212 bg = elm_bg_add(win);
213 snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", PACKAGE_DATA_DIR);
214 elm_bg_file_set(bg, buf, NULL);
215 elm_win_resize_object_add(win, bg);
216 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
217 evas_object_show(bg);
219 win2 = elm_win_add(win, "inlined", ELM_WIN_INLINED_IMAGE);
220 fill(win2, EINA_TRUE);
222 evas_object_move(win2, 20, 60);
223 evas_object_resize(win2, 300, 200);
224 // image object for win2 is unlinked to its pos/size - so manual control
225 // this allows also for using map and other things with it.
226 evas_object_move(elm_win_inlined_image_object_get(win2), 20, 40);
227 evas_object_resize(elm_win_inlined_image_object_get(win2), 200, 320);
228 evas_object_show(win2);
230 win3 = elm_win_add(win, "inlined", ELM_WIN_INLINED_IMAGE);
231 elm_win_alpha_set(win3, EINA_TRUE);
232 fill(win3, EINA_FALSE);
234 evas_object_resize(win3, 300, 200);
235 evas_object_move(elm_win_inlined_image_object_get(win3), 80, 180);
236 evas_object_resize(elm_win_inlined_image_object_get(win3), 300, 200);
237 evas_object_show(win3);
239 create_handles(elm_win_inlined_image_object_get(win3));
241 evas_object_resize(win, 400, 600);
242 evas_object_show(win);