From 3ad3455551be0d7859ecb02290376206d5e66498 Mon Sep 17 00:00:00 2001
From: David Walter Seikel
Date: Sun, 22 Apr 2012 09:20:32 +1000
Subject: And actually include new files, plus elementary libraries.
---
libraries/elementary/src/examples/map_example_03.c | 208 +++++++++++++++++++++
1 file changed, 208 insertions(+)
create mode 100644 libraries/elementary/src/examples/map_example_03.c
(limited to 'libraries/elementary/src/examples/map_example_03.c')
diff --git a/libraries/elementary/src/examples/map_example_03.c b/libraries/elementary/src/examples/map_example_03.c
new file mode 100644
index 0000000..2263707
--- /dev/null
+++ b/libraries/elementary/src/examples/map_example_03.c
@@ -0,0 +1,208 @@
+/**
+ * Simple Elementary's map widget example, illustrating route and
+ * name usage.
+ *
+ * See stdout/stderr for output. Compile with:
+ *
+ * @verbatim
+ * gcc -g map_example_03.c -o map_example_03 `pkg-config --cflags --libs elementary`
+ * @endverbatim
+ */
+
+#include
+
+typedef struct _Example_Data
+{
+ Evas_Object *map, *entry;
+ Elm_Map_Route *route;
+ double start_lon, start_lat, dest_lon, dest_lat;
+ Elm_Map_Name *name;
+ Elm_Map_Overlay *route_ovl;
+} Example_Data;
+
+static Example_Data example_data;
+
+static void
+_route_loaded(void *data, Evas_Object *obj, void *ev)
+{
+ Example_Data *exam_data = data;
+
+ exam_data->route_ovl = elm_map_overlay_route_add(obj, exam_data->route);
+ elm_map_overlay_color_set(exam_data->route_ovl, 0, 255, 0, 255);
+}
+
+static void
+_name_loaded(void *data, Evas_Object *obj, void *ev)
+{
+ Example_Data *exam_data = data;
+ Evas_Object *map = obj;
+
+ if (exam_data->route)
+ elm_map_route_del(exam_data->route);
+
+ elm_map_name_region_get(exam_data->name, &(exam_data->dest_lon),
+ &(exam_data->dest_lat));
+
+ exam_data->route = elm_map_route_add(map, ELM_MAP_ROUTE_TYPE_FOOT,
+ ELM_MAP_ROUTE_METHOD_SHORTEST,
+ exam_data->start_lon, exam_data->start_lat,
+ exam_data->dest_lon, exam_data->dest_lat,
+ NULL, NULL);
+}
+
+static void
+_bt_route(void *data, Evas_Object *obj, void *ev)
+{
+ Example_Data *exam_data = data;
+ Evas_Object *map;
+ char *address;
+
+ map = exam_data->map;
+ address = (char *)elm_object_text_get(exam_data->entry);
+
+ exam_data->name = elm_map_name_add(map, address, 0, 0, NULL, NULL);
+
+ evas_object_smart_callback_add(map, "name,loaded", _name_loaded, data);
+ evas_object_smart_callback_add(map, "route,loaded", _route_loaded, data);
+}
+
+static void
+_bt_zoom_in(void *data, Evas_Object *obj, void *ev)
+{
+ int zoom;
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(data);
+ elm_map_zoom_set(data, zoom + 1);
+}
+
+static void
+_bt_zoom_out(void *data, Evas_Object *obj, void *ev)
+{
+ int zoom;
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(data);
+ elm_map_zoom_set(data, zoom - 1);
+}
+
+static void
+_bt_zoom_fit(void *data, Evas_Object *obj, void *event_info)
+{
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
+}
+
+static void
+_bt_zoom_fill(void *data, Evas_Object *obj, void *event_info)
+{
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
+}
+
+static void
+_on_done(void *data, Evas_Object *obj, void *event_info)
+{
+ elm_exit();
+}
+
+/* FIXME: it shouldn't be required. For unknown reason map won't call
+ * pan_calculate until shot delay time, but then it will take a screenshot
+ * when the map isn't loaded yet (actually it won't be downloaded, because
+ * after the SS it will kill the example). */
+static Eina_Bool
+_nasty_hack(void *data)
+{
+ Evas_Object *o = data;
+ Evas *e = evas_object_evas_get(o);
+ evas_smart_objects_calculate(e);
+ return ECORE_CALLBACK_CANCEL;
+}
+
+EAPI_MAIN int
+elm_main(int argc, char **argv)
+{
+ Evas_Object *win, *bg, *map, *box, *bt, *entry;
+
+ win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Map Route Example");
+ evas_object_smart_callback_add(win, "delete,request", _on_done, NULL);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ map = elm_map_add(win);
+ elm_win_resize_object_add(win, map);
+ evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(map);
+
+ box = elm_box_add(win);
+ evas_object_show(box);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "+");
+ elm_box_pack_end(box, bt);
+ evas_object_show(bt);
+ evas_object_smart_callback_add(bt, "clicked", _bt_zoom_in, map);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "-");
+ elm_box_pack_end(box, bt);
+ evas_object_show(bt);
+ evas_object_smart_callback_add(bt, "clicked", _bt_zoom_out, map);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "X");
+ elm_box_pack_end(box, bt);
+ evas_object_show(bt);
+ evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fit, map);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "#");
+ elm_box_pack_end(box, bt);
+ evas_object_show(bt);
+ evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
+
+ elm_box_horizontal_set(box, EINA_TRUE);
+ elm_win_resize_object_add(win, box);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0);
+
+ entry = elm_entry_add(win);
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ elm_object_text_set(entry, "Jockey Club Brasileiro");
+ evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, 0);
+ elm_box_pack_end(box, entry);
+ evas_object_show(entry);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Route");
+ elm_box_pack_end(box, bt);
+ evas_object_show(bt);
+ evas_object_smart_callback_add(bt, "clicked", _bt_route, &example_data);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
+
+ example_data.map = map;
+ example_data.entry = entry;
+ example_data.route = NULL;
+ example_data.start_lon = -43.175;
+ example_data.start_lat = -22.97;
+
+ elm_map_zoom_set(map, 12);
+ elm_map_region_show(map, example_data.start_lon, example_data.start_lat);
+
+ evas_object_resize(win, 512, 512);
+ evas_object_show(win);
+
+ ecore_timer_add(0.5, _nasty_hack, win);
+
+ elm_run();
+ elm_shutdown();
+
+ return 0;
+}
+ELM_MAIN()
--
cgit v1.1