X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fexamples%2Fmap_example_02.c;h=e0c9215398f9dfc3ad5c93df6310808c1db80c0e;hb=a5f0f44665e39bee416ec16e4cb809632e57e5c3;hp=7557f2028f02a1e2ec8439310f950481b1e19de1;hpb=ad7a0d6e86c8de38a044ffe73112e87dc6af1833;p=framework%2Fuifw%2Felementary.git diff --git a/src/examples/map_example_02.c b/src/examples/map_example_02.c index 7557f20..e0c9215 100644 --- a/src/examples/map_example_02.c +++ b/src/examples/map_example_02.c @@ -1,5 +1,5 @@ /** - * Simple Elementary's map widget example, illustrating markers + * Simple Elementary's map widget example, illustrating overlays * usage. * * See stdout/stderr for output. Compile with: @@ -16,88 +16,93 @@ # define __UNUSED__ #endif -typedef struct _Marker_Data +typedef struct _Overlay_Data { const char *name; const char *file; -} Marker_Data; +} Overlay_Data; -Marker_Data data_argentina = {"Argentina", +Overlay_Data data_argentina = {"Argentina", PACKAGE_DATA_DIR"/images/rock_01.jpg"}; -Marker_Data data_chile = {"Chile", +Overlay_Data data_chile = {"Chile", PACKAGE_DATA_DIR"/images/rock_02.jpg"}; -Marker_Data data_sampa = {"São Paulo", +Overlay_Data data_sampa = {"São Paulo", PACKAGE_DATA_DIR"/images/sky_01.jpg"}; -Marker_Data data_rio = {"Rio de Janeiro", +Overlay_Data data_rio = {"Rio de Janeiro", PACKAGE_DATA_DIR"/images/sky_02.jpg"}; -Marker_Data data_brasilia = {"Brasília", +Overlay_Data data_brasilia = {"Brasília", PACKAGE_DATA_DIR"/images/sky_03.jpg"}; +static Elm_Map_Overlay *bubble; + static Evas_Object * -_marker_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data) +_icon_get(Evas_Object *obj, const char *file) { - Evas_Object *bx, *im, *lbl; - Marker_Data *md = data; - - bx = elm_box_add(obj); - evas_object_show(bx); - - im = elm_image_add(obj); - elm_image_file_set(im, md->file, NULL); - evas_object_size_hint_min_set(im, 64, 64); - evas_object_show(im); - elm_box_pack_end(bx, im); - - lbl = elm_label_add(obj); - elm_object_text_set(lbl, md->name); - evas_object_show(lbl); - elm_box_pack_end(bx, lbl); - - return bx; + Evas_Object *icon = elm_icon_add(obj); + elm_icon_file_set(icon, file, NULL); + evas_object_show(icon); + return icon; } static Evas_Object * -_marker_city_content_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data __UNUSED__) +_city_icon_get(Evas_Object *obj) { - Evas_Object *icon = elm_icon_add(obj); - elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/icon_07.png", NULL); - evas_object_show(icon); + return _icon_get(obj, PACKAGE_DATA_DIR"/images/icon_07.png"); +} - return icon; +static Evas_Object * +_clas_city_icon_get(Evas_Object *obj) +{ + return _icon_get(obj, PACKAGE_DATA_DIR"/images/icon_05.png"); } static Evas_Object * -_group_city_content_get(Evas_Object *obj, void *data __UNUSED__) +_country_icon_get(Evas_Object *obj) { - Evas_Object *icon = elm_icon_add(obj); - elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/icon_05.png", NULL); - evas_object_show(icon); - return icon; + return _icon_get(obj, PACKAGE_DATA_DIR"/images/icon_06.png"); } static Evas_Object * -_marker_country_content_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data __UNUSED__) +_clas_country_icon_get(Evas_Object *obj) { - Evas_Object *icon = elm_icon_add(obj); - elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/icon_06.png", NULL); - evas_object_show(icon); - return icon; + return _icon_get(obj, PACKAGE_DATA_DIR"/images/icon_04.png"); } static Evas_Object * -_group_country_content_get(Evas_Object *obj, void *data __UNUSED__) +_box_get(Evas_Object *obj, Overlay_Data *data) { - Evas_Object *icon = elm_icon_add(obj); - elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/icon_04.png", NULL); - evas_object_show(icon); - return icon; + Evas_Object *bx, *img, *label; + bx = elm_box_add(obj); + evas_object_show(bx); + + img = evas_object_image_add(evas_object_evas_get(obj)); + evas_object_image_file_set(img, data->file, NULL); + evas_object_image_filled_set(img, EINA_TRUE); + evas_object_size_hint_min_set(img, 64, 64); + evas_object_show(img); + elm_box_pack_end(bx, img); + + label = elm_label_add(obj); + elm_object_text_set(label, data->name); + evas_object_show(label); + elm_box_pack_end(bx, label); + return bx; } static void -_map_downloaded(void *data __UNUSED__, Evas_Object *obj, void *ev __UNUSED__) +_overlay_cb(void *data __UNUSED__, Evas_Object *map, void *ev) { - elm_map_zoom_set(obj, 3); - evas_object_smart_callback_del(obj, "downloaded", _map_downloaded); + printf("Overlay clicked\n"); + Elm_Map_Overlay *overlay = ev; + Evas_Object *bx; + + // prevent duplication + if (!bubble) bubble = elm_map_overlay_bubble_add(map); + + elm_map_overlay_bubble_follow(bubble, overlay); + elm_map_overlay_bubble_content_clear(bubble); + bx = _box_get(map, elm_map_overlay_data_get(overlay)); + elm_map_overlay_bubble_content_append(bubble, bx); } static void @@ -159,13 +164,11 @@ EAPI_MAIN int elm_main(int argc __UNUSED__, char **argv __UNUSED__) { Evas_Object *win, *bg, *map, *box, *bt; - static Elm_Map_Marker_Class *mc_city, *mc_country; - static Elm_Map_Group_Class *gc_city, *gc_country; - Eina_List *markers = NULL; - Elm_Map_Marker *m; + Eina_List *ovls = NULL; + Elm_Map_Overlay *ovl, *city_clas, *country_clas; win = elm_win_add(NULL, "map", ELM_WIN_BASIC); - elm_win_title_set(win, "Map Markers Example"); + elm_win_title_set(win, "Map Overlay Example"); evas_object_smart_callback_add(win, "delete,request", _on_done, NULL); bg = elm_bg_add(win); @@ -205,43 +208,47 @@ elm_main(int argc __UNUSED__, char **argv __UNUSED__) evas_object_show(bt); evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map); - mc_city = elm_map_marker_class_new(map); - elm_map_marker_class_get_cb_set(mc_city, _marker_get); - elm_map_marker_class_icon_cb_set(mc_city, _marker_city_content_get); - elm_map_marker_class_style_set(mc_city, "radio"); - - gc_city = elm_map_group_class_new(map); - elm_map_group_class_style_set(gc_city, "radio2"); - elm_map_group_class_icon_cb_set(gc_city, _group_city_content_get); - elm_map_group_class_zoom_displayed_set(gc_city, 3); - - mc_country = elm_map_marker_class_new(map); - elm_map_marker_class_get_cb_set(mc_country, _marker_get); - elm_map_marker_class_icon_cb_set(mc_country, _marker_country_content_get); - elm_map_marker_class_style_set(mc_country, "empty"); - - gc_country = elm_map_group_class_new(map); - elm_map_group_class_style_set(gc_country, "empty"); - elm_map_group_class_icon_cb_set(gc_country, _group_country_content_get); - elm_map_group_class_zoom_displayed_set(gc_country, 1); - - m = elm_map_marker_add(map, -43.2, -22.9, mc_city, gc_city, &data_rio); - markers = eina_list_append(markers, m); - m = elm_map_marker_add(map, -46.63, -23.55, mc_city, gc_city, &data_sampa); - markers = eina_list_append(markers, m); - m = elm_map_marker_add(map, -47.88, -15.78, mc_city, gc_city, - &data_brasilia); - markers = eina_list_append(markers, m); - - m = elm_map_marker_add(map, -65.23, -35.1, mc_country, gc_country, - &data_argentina); - markers = eina_list_append(markers, m); - m = elm_map_marker_add(map, -71.3, -31.75, mc_country, gc_country, - &data_chile); - markers = eina_list_append(markers, m); - - elm_map_markers_list_show(markers); - evas_object_smart_callback_add(map, "downloaded", _map_downloaded, NULL); + evas_object_smart_callback_add(map, "overlay,clicked", _overlay_cb, NULL); + + city_clas = elm_map_overlay_class_add(map); + elm_map_overlay_displayed_zoom_min_set(city_clas, 3); + elm_map_overlay_icon_set(city_clas, _clas_city_icon_get(map)); + + country_clas = elm_map_overlay_class_add(map); + elm_map_overlay_displayed_zoom_min_set(country_clas, 1); + elm_map_overlay_icon_set(country_clas, _clas_country_icon_get(map)); + + ovl = elm_map_overlay_add(map, -43.2, -22.9); + elm_map_overlay_icon_set(ovl, _city_icon_get(map)); + elm_map_overlay_data_set(ovl, &data_rio); + elm_map_overlay_class_append(city_clas, ovl); + ovls = eina_list_append(ovls, ovl); + + ovl = elm_map_overlay_add(map, -46.63, -23.55); + elm_map_overlay_icon_set(ovl, _city_icon_get(map)); + elm_map_overlay_data_set(ovl, &data_sampa); + elm_map_overlay_class_append(city_clas, ovl); + ovls = eina_list_append(ovls, ovl); + + ovl = elm_map_overlay_add(map, -47.88, -15.78); + elm_map_overlay_icon_set(ovl, _city_icon_get(map)); + elm_map_overlay_data_set(ovl, &data_brasilia); + elm_map_overlay_class_append(city_clas, ovl); + ovls = eina_list_append(ovls, ovl); + + ovl = elm_map_overlay_add(map, -65.23, -35.1); + elm_map_overlay_icon_set(ovl, _country_icon_get(map)); + elm_map_overlay_data_set(ovl, &data_argentina); + elm_map_overlay_class_append(country_clas, ovl); + ovls = eina_list_append(ovls, ovl); + + ovl = elm_map_overlay_add(map, -71.3, -31.75); + elm_map_overlay_icon_set(ovl, _country_icon_get(map)); + elm_map_overlay_data_set(ovl, &data_chile); + elm_map_overlay_class_append(country_clas, ovl); + ovls = eina_list_append(ovls, ovl); + + elm_map_overlays_show(ovls); evas_object_resize(win, 512, 512); evas_object_show(win);