[access] move mouse postion if an object has a highlight by highlight_cycle(); not...
[framework/uifw/elementary.git] / src / examples / map_example_01.c
1 /**
2  * Simple Elementary's <b>map widget</b> example, illustrating its
3  * creation.
4  *
5  * See stdout/stderr for output. Compile with:
6  *
7  * @verbatim
8  * gcc -g map_example_01.c -o map_example_01 `pkg-config --cflags --libs elementary`
9  * @endverbatim
10  */
11
12 #include <Elementary.h>
13
14 static void
15 _bt_zoom_in(void *data, Evas_Object *obj, void *ev)
16 {
17    int zoom;
18    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
19    zoom = elm_map_zoom_get(data);
20    elm_map_zoom_set(data, zoom + 1);
21 }
22
23 static void
24 _bt_zoom_out(void *data, Evas_Object *obj, void *ev)
25 {
26    int zoom;
27    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
28    zoom = elm_map_zoom_get(data);
29    elm_map_zoom_set(data, zoom - 1);
30 }
31
32 static void
33 _bt_zoom_fit(void *data, Evas_Object *obj, void *event_info)
34 {
35    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
36 }
37
38 static void
39 _bt_zoom_fill(void *data, Evas_Object *obj, void *event_info)
40 {
41    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
42 }
43
44 static void
45 _on_done(void *data, Evas_Object *obj, void *event_info)
46 {
47    elm_exit();
48 }
49
50 /* FIXME: it shouldn't be required. For unknown reason map won't call
51  * pan_calculate until shot delay time, but then it will take a screenshot
52  * when the map isn't loaded yet (actually it won't be downloaded, because
53  * after the SS it will kill the example). */
54 static Eina_Bool
55 _nasty_hack(void *data)
56 {
57    Evas_Object *o = data;
58    Evas *e = evas_object_evas_get(o);
59    evas_smart_objects_calculate(e);
60    return ECORE_CALLBACK_CANCEL;
61 }
62
63 EAPI_MAIN int
64 elm_main(int argc, char **argv)
65 {
66    Evas_Object *win, *bg, *map, *box, *bt;
67
68    win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
69    elm_win_title_set(win, "Map Creation Example");
70    evas_object_smart_callback_add(win, "delete,request", _on_done, NULL);
71
72    bg = elm_bg_add(win);
73    elm_win_resize_object_add(win, bg);
74    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
75    evas_object_show(bg);
76
77    map = elm_map_add(win);
78    elm_win_resize_object_add(win, map);
79    evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
80    evas_object_show(map);
81
82    box = elm_box_add(win);
83    evas_object_show(box);
84
85    bt = elm_button_add(win);
86    elm_object_text_set(bt, "+");
87    elm_box_pack_end(box, bt);
88    evas_object_show(bt);
89    evas_object_smart_callback_add(bt, "clicked", _bt_zoom_in, map);
90
91    bt = elm_button_add(win);
92    elm_object_text_set(bt, "-");
93    elm_box_pack_end(box, bt);
94    evas_object_show(bt);
95    evas_object_smart_callback_add(bt, "clicked", _bt_zoom_out, map);
96
97    bt = elm_button_add(win);
98    elm_object_text_set(bt, "X");
99    elm_box_pack_end(box, bt);
100    evas_object_show(bt);
101    evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fit, map);
102
103    bt = elm_button_add(win);
104    elm_object_text_set(bt, "#");
105    elm_box_pack_end(box, bt);
106    evas_object_show(bt);
107    evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map);
108
109    elm_map_zoom_set(map, 12);
110    elm_map_region_show(map, -43.2, -22.9);
111    evas_object_resize(win, 512, 512);
112    evas_object_show(win);
113
114    ecore_timer_add(0.5, _nasty_hack, win);
115
116    elm_run();
117    elm_shutdown();
118
119    return 0;
120 }
121 ELM_MAIN()