oh.. I should have read the doxygen of eina_hash_set...
and also eina_stringshare_replace...

at this patch, I remove hash_find, and stringshare_add.

thanks for good information~

> eina_hash_set allways works for adding data to a hash, no need for
> hash_find -> add/set. Just use _set.
Index: elementary/src/lib/Elementary.h.in
===================================================================
--- elementary/src/lib/Elementary.h.in  (리비전 57107)
+++ elementary/src/lib/Elementary.h.in  (작업 사본)
@@ -2118,6 +2118,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
Index: elementary/src/lib/elm_map.c
===================================================================
--- elementary/src/lib/elm_map.c        (리비전 57107)
+++ elementary/src/lib/elm_map.c        (작업 사본)
@@ -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,7 +3550,46 @@ 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;
+   eina_stringshare_replace(&wd->user_agent, user_agent);
+   
+   if (!wd->ua) wd->ua = eina_hash_string_small_new(NULL);
+   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)
 {
------------------------------------------------------------------------------
Index, Search & Analyze Logs and other IT data in Real-Time with Splunk 
Collect, index and harness all the fast moving IT data generated by your 
applications, servers and devices whether physical, virtual or in the cloud.
Deliver compliance at lower cost and gain new business insights. 
Free Software Download: http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to