2 * This file is part of mapper
4 * Copyright (C) 2007 Kaj-Michael Lang
5 * Copyright (C) 2006-2007 John Costigan.
7 * POI and GPS-Info code originally written by Cezary Jackiewicz.
9 * Default map data provided by http://www.openstreetmap.org/
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License along
22 * with this program; if not, write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
38 #include <glib/gstdio.h>
40 #include <libgnomevfs/gnome-vfs.h>
41 #include <curl/multi.h>
42 #include <gconf/gconf-client.h>
44 #include "config-gconf.h"
46 #include "mapper-types.h"
51 #include "ui-common.h"
55 #include "map-tile-repo.h"
57 #define PROXY_PORT (8080)
59 gint mapper_gconf_get_int(const gchar *path, gint def);
60 gint mapper_gconf_get_bound_int(const gchar *path, gint def, gint min, gint max);
61 gfloat mapper_gconf_get_float(const gchar *path, gfloat def);
62 gboolean mapper_gconf_get_boolean(const gchar *path, gboolean def);
65 config_update_proxy(void)
68 g_free(_http_proxy_host);
70 _http_proxy_host=NULL;
73 /* Get proxy data and register for updates. */
74 if (gconf_client_get_bool(gconf_client, GCONF_KEY_HTTP_PROXY_ON, NULL)) {
75 _http_proxy_host=gconf_client_get_string(gconf_client, GCONF_KEY_HTTP_PROXY_HOST, NULL);
76 _http_proxy_port=mapper_gconf_get_int(GCONF_KEY_HTTP_PROXY_PORT, PROXY_PORT);
81 config_save_repo(void)
83 GList *curr = _repo_list;
84 GSList *temp_list = NULL;
85 gint curr_repo_index = 0;
87 g_assert(gconf_client);
88 /* Save the repositories. */
89 for (curr = _repo_list; curr != NULL; curr = curr->next) {
90 /* Build from each part of a repo, delimited by newline characters:
96 RepoData *rd = curr->data;
97 gchar buffer[BUFFER_SIZE];
98 g_snprintf(buffer, sizeof(buffer),
99 "%s\t%s\t%s\t%d\t%d\t%d\t%d",
105 rd->double_size, rd->nextable);
106 temp_list = g_slist_append(temp_list, g_strdup(buffer));
107 if (rd == _curr_repo)
108 gconf_client_set_int(gconf_client, GCONF_KEY_CURRREPO, curr_repo_index, NULL);
111 gconf_client_set_list(gconf_client, GCONF_KEY_REPOSITORIES, GCONF_VALUE_STRING, temp_list, NULL);
113 g_slist_free(temp_list);
119 config_default_repo(void)
123 g_assert(gconf_client);
125 /* We have no repositories - create a default one. */
126 repo=map_tile_repo_new();
128 /* Get Map Cache Dir. Default is REPO_DEFAULT_CACHE_DIR. */
129 repo->cache_dir = gconf_client_get_string(gconf_client, GCONF_KEY_MAP_DIR_NAME, NULL);
131 if (!repo->cache_dir)
132 repo->cache_dir = gnome_vfs_expand_initial_tilde(REPO_DEFAULT_CACHE_DIR);
134 /* Get Map Download URL Format. Default is "". */
135 repo->url = gconf_client_get_string(gconf_client, GCONF_KEY_MAP_URI_FORMAT, NULL);
137 repo->url = g_strdup(REPO_DEFAULT_MAP_URI);
139 /* Get Map Download Zoom Steps. Default is 1. */
140 repo->dl_zoom_steps = gconf_client_get_int(gconf_client, GCONF_KEY_MAP_ZOOM_STEPS, NULL);
141 if (!repo->dl_zoom_steps)
142 repo->dl_zoom_steps = REPO_DEFAULT_DL_ZOOM_STEPS;
144 repo->name = g_strdup(REPO_DEFAULT_NAME);
145 repo->view_zoom_steps = REPO_DEFAULT_VIEW_ZOOM_STEPS;
146 repo->double_size = FALSE;
147 repo->nextable = TRUE;
148 map_tile_repo_set_type(repo);
150 _repo_list=g_list_append(_repo_list, repo);
155 config_load_repo(void)
158 guint curr_repo_index;
160 g_assert(gconf_client);
161 curr_repo_index = gconf_client_get_int(gconf_client, GCONF_KEY_CURRREPO, NULL);
162 list = gconf_client_get_list(gconf_client, GCONF_KEY_REPOSITORIES, GCONF_VALUE_STRING, NULL);
164 for (curr = list; curr != NULL; curr = curr->next) {
165 RepoData *rd = map_tile_repo_new_from_string(curr->data);
166 _repo_list = g_list_append(_repo_list, rd);
167 if (!curr_repo_index--)
173 if (_repo_list==NULL)
174 config_default_repo();
180 config_load_position(Position *pos, const gchar *key)
182 g_assert(gconf_client);
184 pos->valid=gconf_client_get_pair(gconf_client, key, GCONF_VALUE_FLOAT, GCONF_VALUE_FLOAT, &pos->lat, &pos->lon, NULL);
188 } else if (pos->lat==NAN || pos->lon==NAN)
194 config_save_position(Position *pos, const gchar *key)
196 g_assert(gconf_client);
198 return gconf_client_set_pair(gconf_client, key, GCONF_VALUE_FLOAT, GCONF_VALUE_FLOAT, &pos->lat, &pos->lon, NULL);
202 config_save_filter(GpsTrackFilter *f)
204 g_assert(gconf_client);
207 gconf_client_set_bool(gconf_client, GCONF_KEY_GPS_FILTER, f->enabled, NULL);
208 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_HDOP, f->hdop, NULL);
209 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_VDOP, f->vdop, NULL);
210 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_ANGLE, f->angle, NULL);
211 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_OSM, f->osm, NULL);
212 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_MAXDROP, f->maxdrop, NULL);
214 gconf_client_suggest_sync(gconf_client, NULL);
219 * Save all configuration data to GCONF.
226 gfloat center_lat, center_lon;
229 g_assert(gconf_client);
231 /* Initialize config_dir. */
232 config_dir = gnome_vfs_expand_initial_tilde(CONFIG_DIR_NAME);
233 g_mkdir_with_parents(config_dir, 0700);
235 /* Save Receiver MAC from GConf. */
236 if (_gps->io.address)
237 gconf_client_set_string(gconf_client, GCONF_KEY_GPS_MAC, _gps->io.address, NULL);
239 gconf_client_unset(gconf_client, GCONF_KEY_GPS_MAC, NULL);
241 gconf_client_set_int(gconf_client, GCONF_KEY_GPS_TYPE, _gps->io.type, NULL);
242 gconf_client_set_int(gconf_client, GCONF_KEY_GPS_PORT, _gps->io.port, NULL);
244 /* Save Auto-Download. */
245 gconf_client_set_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, _auto_download, NULL);
247 /* Save Auto-Center Sensitivity. */
248 gconf_client_set_int(gconf_client, GCONF_KEY_CENTER_SENSITIVITY, _center_ratio, NULL);
250 /* Save Auto-Center Lead Amount. */
251 gconf_client_set_int(gconf_client, GCONF_KEY_LEAD_AMOUNT, _lead_ratio, NULL);
253 /* Save Draw Line Width. */
254 gconf_client_set_int(gconf_client, GCONF_KEY_DRAW_WIDTH, _draw_width, NULL);
256 /* Save Announce Advance Notice Ratio. */
257 gconf_client_set_int(gconf_client, GCONF_KEY_ANNOUNCE_NOTICE, _announce_notice_ratio, NULL);
259 /* Set announcement flags */
260 gconf_client_set_bool(gconf_client, GCONF_KEY_ANNOUNCE_WAYPOINTS, _announce_waypoints, NULL);
261 gconf_client_set_bool(gconf_client, GCONF_KEY_ANNOUNCE_OVERSPEED, _announce_overspeed, NULL);
262 gconf_client_set_bool(gconf_client, GCONF_KEY_ANNOUNCE_DESTINATION, _announce_destination, NULL);
264 /* Save Enable Voice flag. */
265 gconf_client_set_bool(gconf_client, GCONF_KEY_ENABLE_VOICE, _enable_voice, NULL);
267 /* Save Keep On When Fullscreen flag. */
268 gconf_client_set_bool(gconf_client, GCONF_KEY_ALWAYS_KEEP_ON, _always_keep_on, NULL);
271 gconf_client_set_string(gconf_client, GCONF_KEY_UNITS, UNITS_TEXT[_units], NULL);
273 /* Save Custom Key Actions. */
274 for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++)
275 gconf_client_set_string(gconf_client, CUSTOM_KEY_GCONF[i], CUSTOM_ACTION_TEXT[_action[i]], NULL);
277 /* Save Deg Format. */
278 gconf_client_set_string(gconf_client, GCONF_KEY_DEG_FORMAT, DEG_FORMAT_TEXT[_degformat], NULL);
280 /* Save Speed Limit On flag. */
281 gconf_client_set_bool(gconf_client, GCONF_KEY_SPEED_LIMIT_ON, _speed_on, NULL);
283 /* Save Speed Limit. */
284 gconf_client_set_int(gconf_client, GCONF_KEY_SPEED_LIMIT, _speed_limit, NULL);
286 /* Save Info Font Size. */
287 gconf_client_set_string(gconf_client, GCONF_KEY_INFO_FONT_SIZE, INFO_FONT_TEXT[_info_font_size], NULL);
289 /* Save last latitude/longiture. */
290 gconf_client_set_float(gconf_client, GCONF_KEY_LAT, _gps->data.lat, NULL);
291 gconf_client_set_float(gconf_client, GCONF_KEY_LON, _gps->data.lon, NULL);
293 /* Save last center latitude/longitude. */
294 gconf_client_set_float(gconf_client, GCONF_KEY_CENTER_LAT, center_lat, NULL);
295 gconf_client_set_float(gconf_client, GCONF_KEY_CENTER_LON, center_lon, NULL);
297 /* Save last Zoom Level. */
298 gconf_client_set_int(gconf_client, GCONF_KEY_ZOOM, _zoom, NULL);
300 /* Save Route Directory. */
302 gconf_client_set_string(gconf_client, GCONF_KEY_ROUTEDIR, _route_dir_uri, NULL);
304 /* Save Last Track File. */
306 gconf_client_set_string(gconf_client, GCONF_KEY_TRACKFILE, _track_file_uri, NULL);
308 /* Save Auto-Center Mode. */
309 gconf_client_set_int(gconf_client, GCONF_KEY_AUTOCENTER_MODE, _center_mode, NULL);
311 /* Save Show Scale flag. */
312 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWSCALE, _show_scale, NULL);
314 /* Save Show Tracks flag. */
315 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWTRACKS, _show_tracks & TRACKS_MASK, NULL);
317 /* Save Show Routes flag. */
318 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWROUTES, _show_tracks & ROUTES_MASK, NULL);
320 /* Save Show Velocity Vector flag. */
321 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWVELVEC, _show_velvec, NULL);
323 /* Save Show POIs flag. */
324 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWPOIS, _show_poi, NULL);
326 /* Save Enable GPS flag. */
327 gconf_client_set_bool(gconf_client, GCONF_KEY_ENABLE_GPS, _enable_gps, NULL);
329 /* Save Route Locations. */
330 gconf_client_set_list(gconf_client, GCONF_KEY_ROUTE_LOCATIONS, GCONF_VALUE_STRING, _loc_list, NULL);
332 /* Save GPS Info flag. */
333 gconf_client_set_bool(gconf_client, GCONF_KEY_GPS_INFO, _gps_info, NULL);
335 /* Save Route Download URL Format. */
336 gconf_client_set_string(gconf_client, GCONF_KEY_ROUTE_DL_URL, _route_dl_url, NULL);
338 /* Save Route Download Radius. */
339 gconf_client_set_int(gconf_client, GCONF_KEY_ROUTE_DL_RADIUS, _route_dl_radius, NULL);
340 gconf_client_set_int(gconf_client, GCONF_KEY_TRACK_DL_RADIUS, _track_dl_radius, NULL);
343 for (i = 0; i < COLORABLE_ENUM_COUNT; i++) {
344 g_snprintf(buffer, sizeof(buffer), "#%02x%02x%02x",
345 _color[i].red >> 8, _color[i].green >> 8, _color[i].blue >> 8);
346 gconf_client_set_string(gconf_client, COLORABLE_GCONF[i], buffer, NULL);
349 /* Save Mapper database. */
351 gconf_client_set_string(gconf_client, GCONF_KEY_MAPPER_DB, _mapper_db, NULL);
353 gconf_client_unset(gconf_client, GCONF_KEY_MAPPER_DB, NULL);
355 /* Save Show POI below zoom. */
356 gconf_client_set_int(gconf_client, GCONF_KEY_POI_ZOOM, _poi_zoom, NULL);
358 gconf_client_suggest_sync(gconf_client, NULL);
367 config_load_string_list(const gchar *gconf_key, GSList **list, GtkListStore **model)
371 *list=gconf_client_get_list(gconf_client, gconf_key, GCONF_VALUE_STRING, NULL);
372 *model=gtk_list_store_new(1, G_TYPE_STRING);
373 for (curr = *list; curr != NULL; curr = curr->next) {
375 gtk_list_store_insert_with_values(*model, &iter, INT_MAX, 0, curr->data, -1);
381 * Initialize all configuration from GCONF. This should not be called more
382 * than once during execution.
391 GtkMapCenterMode _center_mode = CENTER_LEAD;
392 UnitType _units = UNITS_KM;
393 guint _degformat = DDPDDDDD;
394 InfoFontSize _info_font_size = INFO_FONT_MEDIUM;
396 gconf_client=gconf_client_get_default();
398 popup_error(_window, _("Failed to initialize GConf. Quitting."));
402 /* Preload configuration */
403 gconf_client_add_dir (gconf_client, GCONF_KEY_PREFIX, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
405 /* Initialize config_dir. */
406 config_dir = gnome_vfs_expand_initial_tilde(CONFIG_DIR_NAME);
407 g_mkdir_with_parents(config_dir, 0700);
409 /* Get Receiver MAC from GConf. Default is scanned via hci_inquiry. */
410 _gps->io.address=gconf_client_get_string(gconf_client, GCONF_KEY_GPS_MAC, NULL);
411 _gps->io.port=mapper_gconf_get_int(GCONF_KEY_GPS_PORT, 2947);
412 _gps->io.type=(GpsIOSourceType)mapper_gconf_get_bound_int(GCONF_KEY_GPS_TYPE, GPS_IO_SIMULATION, GPS_IO_TYPE_MIN+1, GPS_IO_TYPE_MAX-1);
414 /* Get Auto-Download. Default is FALSE. */
415 _auto_download = gconf_client_get_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, NULL);
417 _center_ratio=mapper_gconf_get_int(GCONF_KEY_CENTER_SENSITIVITY, 7);
418 _lead_ratio=mapper_gconf_get_int(GCONF_KEY_LEAD_AMOUNT, 5);
419 _draw_width=mapper_gconf_get_int(GCONF_KEY_DRAW_WIDTH, 4);
421 /* Invalidate destination */
424 /* Get Announce Advance Notice - Default is 30. */
425 _announce_notice_ratio=mapper_gconf_get_int(GCONF_KEY_ANNOUNCE_NOTICE, 8);
427 _announce_waypoints=mapper_gconf_get_boolean(GCONF_KEY_ANNOUNCE_WAYPOINTS, TRUE);
428 _announce_overspeed=mapper_gconf_get_boolean(GCONF_KEY_ANNOUNCE_OVERSPEED, FALSE);
429 _announce_destination=mapper_gconf_get_boolean(GCONF_KEY_ANNOUNCE_DESTINATION, FALSE);
431 /* Get Enable Voice flag. Default is TRUE. */
432 _enable_voice=mapper_gconf_get_boolean(GCONF_KEY_ENABLE_VOICE, TRUE);
433 _voice_pitch=mapper_gconf_get_bound_int(GCONF_KEY_VOICE_PITCH, 50, 10, 99);
434 _voice_speed=mapper_gconf_get_bound_int(GCONF_KEY_VOICE_SPEED, 120, 80, 370);
436 /* Get Always Keep On flag. Default is FALSE. */
437 _always_keep_on=mapper_gconf_get_boolean(GCONF_KEY_ALWAYS_KEEP_ON, FALSE);
439 filter.enabled = gconf_client_get_bool(gconf_client, GCONF_KEY_GPS_FILTER, NULL);
440 filter.hdop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_HDOP, NULL);
441 filter.vdop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_VDOP, NULL);
442 filter.angle = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_ANGLE, NULL);
443 filter.osm = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_OSM, NULL);
444 filter.maxdrop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_MAXDROP, NULL);
446 BOUND(filter.maxdrop, 0, 60);
447 BOUND(filter.hdop, 0, 50);
448 BOUND(filter.vdop, 0, 50);
449 BOUND(filter.angle, 0, 45);
451 /* Get Units. Default is UNITS_KM. */
453 gchar *units_str = gconf_client_get_string(gconf_client, GCONF_KEY_UNITS, NULL);
456 for (i = UNITS_ENUM_COUNT - 1; i > 0; i--)
457 if (!strcmp(units_str, UNITS_TEXT[i]))
462 /* Get Custom Key Actions. */
465 for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++) {
466 gint j = CUSTOM_KEY_DEFAULT[i];
467 gchar *str = gconf_client_get_string(gconf_client, CUSTOM_KEY_GCONF[i], NULL);
469 for (j = CUSTOM_ACTION_ENUM_COUNT - 1; j > 0; j--)
470 if (!strcmp(str, CUSTOM_ACTION_TEXT[j]))
476 /* Get Deg format. Default is DDPDDDDD. */
478 gchar *degformat_key_str = gconf_client_get_string(gconf_client, GCONF_KEY_DEG_FORMAT, NULL);
480 if (degformat_key_str)
481 for (i = DEG_FORMAT_ENUM_COUNT - 1; i > 0; i--)
482 if (!strcmp(degformat_key_str, DEG_FORMAT_TEXT[i]))
487 /* Get Info Font Size. Default is INFO_FONT_MEDIUM. */
489 gchar *info_font_size_str = gconf_client_get_string(gconf_client, GCONF_KEY_INFO_FONT_SIZE, NULL);
491 if (info_font_size_str)
492 for (i = INFO_FONT_ENUM_COUNT - 1; i >= 0; i--)
493 if (!strcmp(info_font_size_str, INFO_FONT_TEXT[i]))
496 i = INFO_FONT_MEDIUM;
500 /* Get Speed Limit On flag. Default is FALSE. */
501 _speed_on = gconf_client_get_bool(gconf_client, GCONF_KEY_SPEED_LIMIT_ON, NULL);
503 /* Get Speed Limit */
504 _speed_limit = gconf_client_get_int(gconf_client, GCONF_KEY_SPEED_LIMIT, NULL);
505 BOUND(_speed_limit, 1, 200);
507 /* Get Auto-Download. Default is FALSE. */
508 _auto_download=mapper_gconf_get_boolean(GCONF_KEY_AUTO_DOWNLOAD, FALSE);
510 /* Get saved location */
511 _gps->data.lat=mapper_gconf_get_float(GCONF_KEY_LAT, 60.20);
512 _gps->data.lon=mapper_gconf_get_float(GCONF_KEY_LON, 22.20);
514 /* Special positions Home and Dest */
515 config_load_position(_home, GCONF_KEY_POSITION_HOME);
516 config_load_position(_dest, GCONF_KEY_POSITION_DEST);
518 /* Get last center point. */
520 gfloat center_lat, center_lon;
522 /* Get last saved latitude. Default is last saved latitude. */
523 value = gconf_client_get(gconf_client, GCONF_KEY_CENTER_LAT, NULL);
525 center_lat = gconf_value_get_float(value);
526 gconf_value_free(value);
528 center_lat = _gps->data.lat;
531 /* Get last saved longitude. Default is last saved longitude. */
532 value = gconf_client_get(gconf_client, GCONF_KEY_CENTER_LON, NULL);
534 center_lon = gconf_value_get_float(value);
535 gconf_value_free(value);
537 center_lon = _gps->data.lon;
543 /* Get last Zoom Level. Default is 12. */
544 value = gconf_client_get(gconf_client, GCONF_KEY_ZOOM, NULL);
546 _zoom=gconf_value_get_int(value) / _curr_repo->view_zoom_steps * _curr_repo->view_zoom_steps;
547 gconf_value_free(value);
549 _zoom=12 / _curr_repo->view_zoom_steps * _curr_repo->view_zoom_steps;
553 /* Get Route Directory. Default is NULL. */
554 _route_dir_uri = gconf_client_get_string(gconf_client, GCONF_KEY_ROUTEDIR, NULL);
556 /* Get Last Track File. Default is NULL. */
557 _track_file_uri = gconf_client_get_string(gconf_client, GCONF_KEY_TRACKFILE, NULL);
559 _center_mode=mapper_gconf_get_int(GCONF_KEY_AUTOCENTER_MODE, CENTER_LEAD);
561 /* Get Show Scale flag. Default is TRUE. */
562 _show_scale=mapper_gconf_get_boolean(GCONF_KEY_SHOWSCALE, TRUE);
564 /* Get Show Tracks flag. Default is TRUE. */
565 _show_tracks |= mapper_gconf_get_boolean(GCONF_KEY_SHOWTRACKS, TRUE) ? TRACKS_MASK : 0;
567 /* Get Show Routes flag. Default is TRUE. */
568 _show_tracks |= mapper_gconf_get_boolean(GCONF_KEY_SHOWROUTES, TRUE) ? ROUTES_MASK : 0;
570 /* Get Show Velocity Vector flag. Default is TRUE. */
571 _show_velvec=mapper_gconf_get_boolean(GCONF_KEY_SHOWVELVEC, TRUE);
573 _show_poi=mapper_gconf_get_boolean(GCONF_KEY_SHOWPOIS, TRUE);
575 /* Get Enable GPS flag. Default is FALSE. */
576 _enable_gps=mapper_gconf_get_boolean(GCONF_KEY_ENABLE_GPS, FALSE);
578 /* Initialize _conn_state based on _enable_gps-> */
579 _gps->io.conn = (_enable_gps ? RCVR_DOWN : RCVR_OFF);
581 config_load_string_list(GCONF_KEY_ROUTE_LOCATIONS, &_loc_list, &_loc_model);
583 /* Show POIs below zoom */
584 _poi_zoom = mapper_gconf_get_int(GCONF_KEY_POI_ZOOM, 6);
586 /* Get GPS Info flag. Default is FALSE. */
587 _gps_info=mapper_gconf_get_boolean(GCONF_KEY_GPS_INFO, FALSE);
589 /* Get Route Download URL. Default is:
590 * "http://www.gnuite.com/cgi-bin/gpx.cgi?saddr=%s&daddr=%s" */
591 _route_dl_url = gconf_client_get_string(gconf_client, GCONF_KEY_ROUTE_DL_URL, NULL);
592 if (_route_dl_url == NULL)
593 _route_dl_url = g_strdup("http://www.gnuite.com/cgi-bin/gpx.cgi?saddr=%s&daddr=%s");
595 /* Get Route Download Radius. Default is 4. */
596 _route_dl_radius = mapper_gconf_get_int(GCONF_KEY_ROUTE_DL_RADIUS, 4);
597 _track_dl_radius = mapper_gconf_get_int(GCONF_KEY_TRACK_DL_RADIUS, 4);
600 for (i = 0; i < COLORABLE_ENUM_COUNT; i++) {
601 str = gconf_client_get_string(gconf_client, COLORABLE_GCONF[i], NULL);
602 if (!str || !gdk_color_parse(str, &_color[i]))
603 _color[i] = COLORABLE_DEFAULT[i];
606 /* Get Mapper Database. Default is in REPO_DEFAULT_CACHE_BASE */
607 _mapper_db = gconf_client_get_string(gconf_client, GCONF_KEY_MAPPER_DB, NULL);
608 if (_mapper_db == NULL) {
609 gchar *db_base = gnome_vfs_expand_initial_tilde(REPO_DEFAULT_CACHE_BASE);
610 _mapper_db = gnome_vfs_uri_make_full_from_relative(db_base, "mapper.db");
614 /* Get current proxy settings. */
615 config_update_proxy();
617 gconf_client_clear_cache(gconf_client);
625 mapper_gconf_get_int(const gchar *path, gint def)
630 g_assert(gconf_client);
631 value=gconf_client_get(gconf_client, path, NULL);
633 v=gconf_value_get_int(value);
634 gconf_value_free(value);
645 mapper_gconf_get_boolean(const gchar *path, gboolean def)
650 g_assert(gconf_client);
651 value = gconf_client_get(gconf_client, path, NULL);
653 r=gconf_value_get_bool(value);
654 gconf_value_free(value);
665 mapper_gconf_get_bound_int(const gchar *path, gint def, gint min, gint max)
669 r=mapper_gconf_get_int(path, def);
675 mapper_gconf_get_float(const gchar *path, gfloat def)
680 g_assert(gconf_client);
681 value=gconf_client_get(gconf_client, path, NULL);
683 v=gconf_value_get_float(value);
684 gconf_value_free(value);