forked from enlightenment/efl
From: sangho park <gouache95@gmail.com>
Subject: Re: [E-devel] [Patch] elm_map_user_agent_set and get This is a patch for elm_map for setting user-agent. - Add elm_map_user_agent_set - Add elm_map_user_agent_get - modify doxygen elm_map uses OSM(OpenStreetMap), but we can add custom map provider. If custom map provider server filters robot out (currently default user-agent is 'curl'), we need some APIs to set/get user-agent. SVN revision: 57353
This commit is contained in:
parent
2f845a756d
commit
075cbde990
|
@ -2128,6 +2128,8 @@ extern "C" {
|
|||
EAPI int elm_map_source_zoom_min_get(Elm_Map_Sources source);
|
||||
EAPI int elm_map_source_zoom_max_get(Elm_Map_Sources source);
|
||||
EAPI const char *elm_map_source_name_get(Elm_Map_Sources source);
|
||||
EAPI void elm_map_user_agent_set(Evas_Object *obj, const char *user_agent) EINA_ARG_NONNULL(1, 2);
|
||||
EAPI const char *elm_map_user_agent_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
|
||||
/* smart callbacks called:
|
||||
* "clicked" - when image clicked
|
||||
* "press" - when mouse/finger held down initially on image
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
* @defgroup Map Map
|
||||
* @ingroup Elementary
|
||||
*
|
||||
* This is a widget specifically for displaying the free map OpenStreetMap.
|
||||
* This is a widget specifically for displaying the map. It uses basically
|
||||
* OpenStreetMap provider. but it can be added custom providers.
|
||||
*
|
||||
* Signals that you can add callbacks for are:
|
||||
*
|
||||
|
@ -263,6 +264,9 @@ struct _Widget_Data
|
|||
Eina_List *s_event_list;
|
||||
int try_num;
|
||||
int finish_num;
|
||||
|
||||
Eina_Hash *ua;
|
||||
const char *user_agent;
|
||||
};
|
||||
|
||||
struct _Mod_Api
|
||||
|
@ -1001,7 +1005,7 @@ grid_load(Evas_Object *obj, Grid *g)
|
|||
else
|
||||
{
|
||||
DBG("DOWNLOAD %s \t in %s", source, buf2);
|
||||
ecore_file_download(source, buf2, _tile_downloaded, NULL, gi, &(gi->job));
|
||||
ecore_file_download_full(source, buf2, _tile_downloaded, NULL, gi, &(gi->job), wd->ua);
|
||||
if (!gi->job)
|
||||
DBG("Can't start to download %s", buf);
|
||||
else
|
||||
|
@ -1432,6 +1436,8 @@ _del_hook(Evas_Object *obj)
|
|||
if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
|
||||
if (wd->long_timer) ecore_timer_del(wd->long_timer);
|
||||
if ((wd->api) && (wd->api->obj_unhook)) wd->api->obj_unhook(obj);
|
||||
if (wd->user_agent) eina_stringshare_del(wd->user_agent);
|
||||
if (wd->ua) eina_hash_free(wd->ua);
|
||||
|
||||
free(wd);
|
||||
}
|
||||
|
@ -3544,6 +3550,47 @@ elm_map_source_name_get(Elm_Map_Sources source)
|
|||
return map_sources_tab[source].name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the user agent of the widget map.
|
||||
*
|
||||
* @param obj The map object
|
||||
* @param user_agent the user agent of the widget map
|
||||
*
|
||||
* @ingroup Map
|
||||
*/
|
||||
EAPI void
|
||||
elm_map_user_agent_set(Evas_Object *obj, const char *user_agent)
|
||||
{
|
||||
ELM_CHECK_WIDTYPE(obj, widtype);
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
|
||||
if (!wd) return;
|
||||
if (!wd->user_agent) wd->user_agent = eina_stringshare_add(user_agent);
|
||||
else eina_stringshare_replace(&wd->user_agent, user_agent);
|
||||
|
||||
if (!wd->ua) wd->ua = eina_hash_string_small_new(NULL);
|
||||
if (!eina_hash_find(wd->ua, "User-Agent")) eina_hash_add(wd->ua, "User-Agent", user_agent);
|
||||
else eina_hash_set(wd->ua, "User-Agent", user_agent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user agent of the widget map.
|
||||
*
|
||||
* @param obj The map object
|
||||
* @return The user agent of the widget map
|
||||
*
|
||||
* @ingroup Map
|
||||
*/
|
||||
EAPI const char *
|
||||
elm_map_user_agent_get(Evas_Object *obj)
|
||||
{
|
||||
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
|
||||
if (!wd) return NULL;
|
||||
return wd->user_agent;
|
||||
}
|
||||
|
||||
|
||||
static char *
|
||||
_mapnik_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
|
||||
|
|
Loading…
Reference in New Issue