diff --git a/tgp-msg.c b/tgp-msg.c index 431f67b..c17f6c9 100644 --- a/tgp-msg.c +++ b/tgp-msg.c @@ -123,17 +123,34 @@ static char *format_service_msg (struct tgl_state *TLS, struct tgl_message *M) { return txt; } +static char *format_geo_link_osm (double lat, double lon) { + return g_strdup_printf ("https://www.openstreetmap.org/?mlat=%.6lf&mlon=%.6lf#map=17/%.6lf/%.6lf", + lat, lon, lat, lon); +} + static char *format_message (struct tgl_message *M) { switch (M->media.type) { case tgl_message_media_contact: return g_strdup_printf ("%s %s
%s", M->media.first_name, M->media.last_name, M->media.phone); break; + case tgl_message_media_venue: { + char *address = NULL; + if (M->media.venue.address) { + address = g_strdup_printf ("
%s", M->media.venue.address); + } + return g_strdup_printf ("%s%s", + format_geo_link_osm (M->media.venue.geo.latitude, M->media.geo.longitude), + M->media.venue.title ? M->media.venue.title : "", + address ? address : ""); + if (address) { + g_free (address); + } + break; + } case tgl_message_media_geo: - return g_strdup_printf ("" - "http://openstreetmap.org/?lat=%f&lon=%f&zoom=20", - M->media.geo.latitude, M->media.geo.longitude, - M->media.geo.latitude, M->media.geo.longitude); - return g_strdup_printf ("%s %s
%s", M->media.first_name, M->media.last_name, M->media.phone); + return g_strdup_printf ("%s", + format_geo_link_osm (M->media.venue.geo.latitude, M->media.geo.longitude), + format_geo_link_osm (M->media.venue.geo.latitude, M->media.geo.longitude)); break; default: if (*M->message != 0) {