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"
53 #include "ui-common.h"
59 #define PROXY_PORT (8080)
61 gint mapper_gconf_get_bound_int(const gchar *path, gint def, gint min, gint max);
62 gint mapper_gconf_get_int(const gchar *path, gint def);
63 gfloat mapper_gconf_get_float(const gchar *path, gfloat def);
66 config_update_proxy(void)
69 g_free(_http_proxy_host);
71 _http_proxy_host=NULL;
74 /* Get proxy data and register for updates. */
75 if (gconf_client_get_bool(gconf_client, GCONF_KEY_HTTP_PROXY_ON, NULL)) {
76 _http_proxy_host=gconf_client_get_string(gconf_client, GCONF_KEY_HTTP_PROXY_HOST, NULL);
77 _http_proxy_port=mapper_gconf_get_int(GCONF_KEY_HTTP_PROXY_PORT, PROXY_PORT);
82 path_save(Path *path, const gchar *config_dir, const gchar *file)
84 GnomeVFSHandle *handle;
86 tfile=gnome_vfs_uri_make_full_from_relative(config_dir, file);
87 if (GNOME_VFS_OK == gnome_vfs_create(&handle, tfile, GNOME_VFS_OPEN_WRITE, FALSE, 0600)) {
88 write_gpx(path, handle);
89 gnome_vfs_close(handle);
95 config_save_repo(void)
97 GList *curr = _repo_list;
98 GSList *temp_list = NULL;
99 gint curr_repo_index = 0;
101 g_assert(gconf_client);
102 /* Save the repositories. */
103 for (curr = _repo_list; curr != NULL; curr = curr->next) {
104 /* Build from each part of a repo, delimited by newline characters:
110 RepoData *rd = curr->data;
111 gchar buffer[BUFFER_SIZE];
112 g_snprintf(buffer, sizeof(buffer),
113 "%s\t%s\t%s\t%d\t%d\t%d\t%d",
119 rd->double_size, rd->nextable);
120 temp_list = g_slist_append(temp_list, g_strdup(buffer));
121 if (rd == _curr_repo)
122 gconf_client_set_int(gconf_client, GCONF_KEY_CURRREPO, curr_repo_index, NULL);
125 gconf_client_set_list(gconf_client, GCONF_KEY_REPOSITORIES, GCONF_VALUE_STRING, temp_list, NULL);
127 g_slist_free(temp_list);
133 config_parse_repo(gchar * str)
135 /* Parse each part of a repo, delimited by newline characters:
142 gchar *token, *error_check;
144 RepoData *rd = g_new0(RepoData, 1);
147 token = strsep(&str, "\n\t");
149 rd->name = g_strdup(token);
151 /* Parse URL format. */
152 token = strsep(&str, "\n\t");
154 rd->url = g_strdup(token);
156 /* Parse cache dir. */
157 token = strsep(&str, "\n\t");
159 rd->cache_dir = gnome_vfs_expand_initial_tilde(token);
161 /* Parse download zoom steps. */
162 token = strsep(&str, "\n\t");
163 if (!token || !*token || !(rd->dl_zoom_steps = atoi(token)))
164 rd->dl_zoom_steps = 2;
166 /* Parse view zoom steps. */
167 token = strsep(&str, "\n\t");
168 if (!token || !*token || !(rd->view_zoom_steps = atoi(token)))
169 rd->view_zoom_steps = 1;
171 /* Parse double-size. */
172 token = strsep(&str, "\n\t");
174 rd->double_size = atoi(token); /* Default is zero (FALSE) */
176 /* Parse next-able. */
177 token = strsep(&str, "\n\t");
178 if (!token || !*token
179 || (rd->nextable = strtol(token, &error_check, 10), token == str))
187 config_default_repo(void)
189 g_assert(gconf_client);
191 /* We have no repositories - create a default one. */
192 RepoData *repo = g_new(RepoData, 1);
194 /* Get Map Cache Dir. Default is REPO_DEFAULT_CACHE_DIR. */
195 repo->cache_dir = gconf_client_get_string(gconf_client, GCONF_KEY_MAP_DIR_NAME, NULL);
197 if (!repo->cache_dir)
198 repo->cache_dir = gnome_vfs_expand_initial_tilde(REPO_DEFAULT_CACHE_DIR);
200 /* Get Map Download URL Format. Default is "". */
201 repo->url = gconf_client_get_string(gconf_client, GCONF_KEY_MAP_URI_FORMAT, NULL);
203 repo->url = g_strdup(REPO_DEFAULT_MAP_URI);
205 /* Get Map Download Zoom Steps. Default is 1. */
206 repo->dl_zoom_steps = gconf_client_get_int(gconf_client, GCONF_KEY_MAP_ZOOM_STEPS, NULL);
207 if (!repo->dl_zoom_steps)
208 repo->dl_zoom_steps = REPO_DEFAULT_DL_ZOOM_STEPS;
210 repo->name = g_strdup(REPO_DEFAULT_NAME);
211 repo->view_zoom_steps = REPO_DEFAULT_VIEW_ZOOM_STEPS;
212 repo->double_size = FALSE;
213 repo->nextable = TRUE;
216 _repo_list = g_list_append(_repo_list, repo);
221 config_load_repo(void)
225 guint curr_repo_index;
227 g_assert(gconf_client);
228 curr_repo_index = gconf_client_get_int(gconf_client, GCONF_KEY_CURRREPO, NULL);
229 list = gconf_client_get_list(gconf_client, GCONF_KEY_REPOSITORIES, GCONF_VALUE_STRING, NULL);
231 for (curr = list; curr != NULL; curr = curr->next) {
232 RepoData *rd = config_parse_repo(curr->data);
233 _repo_list = g_list_append(_repo_list, rd);
234 if (!curr_repo_index--)
240 if (_repo_list == NULL)
241 config_default_repo();
247 config_save_home(void)
249 g_assert(gconf_client);
251 /* Save home lat/lon. */
252 gconf_client_set_float(gconf_client, GCONF_KEY_HOME_LAT, _home.lat, NULL);
253 gconf_client_set_float(gconf_client, GCONF_KEY_HOME_LON, _home.lon, NULL);
255 gconf_client_suggest_sync(gconf_client, NULL);
260 config_save_filter(GpsTrackFilter *f)
262 g_assert(gconf_client);
265 gconf_client_set_bool(gconf_client, GCONF_KEY_GPS_FILTER, f->enabled, NULL);
266 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_HDOP, f->hdop, NULL);
267 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_VDOP, f->vdop, NULL);
268 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_ANGLE, f->angle, NULL);
269 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_OSM, f->osm, NULL);
270 gconf_client_set_float(gconf_client, GCONF_KEY_GPS_FILTER_MAXDROP, f->maxdrop, NULL);
272 gconf_client_suggest_sync(gconf_client, NULL);
277 * Save all configuration data to GCONF.
284 gfloat center_lat, center_lon;
287 g_assert(gconf_client);
289 /* Initialize config_dir. */
290 config_dir = gnome_vfs_expand_initial_tilde(CONFIG_DIR_NAME);
291 g_mkdir_with_parents(config_dir, 0700);
293 /* Save Receiver MAC from GConf. */
294 if (_gps->io.address)
295 gconf_client_set_string(gconf_client, GCONF_KEY_GPS_MAC, _gps->io.address, NULL);
297 gconf_client_unset(gconf_client, GCONF_KEY_GPS_MAC, NULL);
299 gconf_client_set_int(gconf_client, GCONF_KEY_GPS_TYPE, _gps->io.type, NULL);
300 gconf_client_set_int(gconf_client, GCONF_KEY_GPS_PORT, _gps->io.port, NULL);
302 /* Save Auto-Download. */
303 gconf_client_set_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, _auto_download, NULL);
305 /* Save Auto-Center Sensitivity. */
306 gconf_client_set_int(gconf_client, GCONF_KEY_CENTER_SENSITIVITY, _center_ratio, NULL);
308 /* Save Auto-Center Lead Amount. */
309 gconf_client_set_int(gconf_client, GCONF_KEY_LEAD_AMOUNT, _lead_ratio, NULL);
311 /* Save Draw Line Width. */
312 gconf_client_set_int(gconf_client, GCONF_KEY_DRAW_WIDTH, _draw_width, NULL);
314 /* Save Announce Advance Notice Ratio. */
315 gconf_client_set_int(gconf_client, GCONF_KEY_ANNOUNCE_NOTICE, _announce_notice_ratio, NULL);
317 /* Save Enable Voice flag. */
318 gconf_client_set_bool(gconf_client, GCONF_KEY_ENABLE_VOICE, _enable_voice, NULL);
320 /* Save Keep On When Fullscreen flag. */
321 gconf_client_set_bool(gconf_client, GCONF_KEY_ALWAYS_KEEP_ON, _always_keep_on, NULL);
324 gconf_client_set_string(gconf_client, GCONF_KEY_UNITS, UNITS_TEXT[_units], NULL);
326 /* Save Custom Key Actions. */
327 for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++)
328 gconf_client_set_string(gconf_client, CUSTOM_KEY_GCONF[i], CUSTOM_ACTION_TEXT[_action[i]], NULL);
330 /* Save Deg Format. */
331 gconf_client_set_string(gconf_client, GCONF_KEY_DEG_FORMAT, DEG_FORMAT_TEXT[_degformat], NULL);
333 /* Save Speed Limit On flag. */
334 gconf_client_set_bool(gconf_client, GCONF_KEY_SPEED_LIMIT_ON, _speed_on, NULL);
336 /* Save Speed Limit. */
337 gconf_client_set_int(gconf_client, GCONF_KEY_SPEED_LIMIT, _speed_limit, NULL);
339 /* Save Info Font Size. */
340 gconf_client_set_string(gconf_client, GCONF_KEY_INFO_FONT_SIZE, INFO_FONT_TEXT[_info_font_size], NULL);
342 /* Save last latitude/longiture. */
343 gconf_client_set_float(gconf_client, GCONF_KEY_LAT, _gps->data.lat, NULL);
344 gconf_client_set_float(gconf_client, GCONF_KEY_LON, _gps->data.lon, NULL);
346 /* Save last center latitude/longitude. */
347 unit2latlon(_center.unitx, _center.unity, center_lat, center_lon);
348 gconf_client_set_float(gconf_client, GCONF_KEY_CENTER_LAT, center_lat, NULL);
349 gconf_client_set_float(gconf_client, GCONF_KEY_CENTER_LON, center_lon, NULL);
351 /* Save last Zoom Level. */
352 gconf_client_set_int(gconf_client, GCONF_KEY_ZOOM, _zoom, NULL);
354 /* Save Route Directory. */
356 gconf_client_set_string(gconf_client, GCONF_KEY_ROUTEDIR, _route_dir_uri, NULL);
358 /* Save Last Track File. */
360 gconf_client_set_string(gconf_client, GCONF_KEY_TRACKFILE, _track_file_uri, NULL);
362 /* Save Auto-Center Mode. */
363 gconf_client_set_int(gconf_client, GCONF_KEY_AUTOCENTER_MODE, _center_mode, NULL);
365 /* Save Show Scale flag. */
366 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWSCALE, _show_scale, NULL);
368 /* Save Show Tracks flag. */
369 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWTRACKS, _show_tracks & TRACKS_MASK, NULL);
371 /* Save Show Routes flag. */
372 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWROUTES, _show_tracks & ROUTES_MASK, NULL);
374 /* Save Show Velocity Vector flag. */
375 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWVELVEC, _show_velvec, NULL);
377 /* Save Show POIs flag. */
378 gconf_client_set_bool(gconf_client, GCONF_KEY_SHOWPOIS, _show_poi, NULL);
380 /* Save Enable GPS flag. */
381 gconf_client_set_bool(gconf_client, GCONF_KEY_ENABLE_GPS, _enable_gps, NULL);
383 /* Save Route Locations. */
384 gconf_client_set_list(gconf_client, GCONF_KEY_ROUTE_LOCATIONS, GCONF_VALUE_STRING, _loc_list, NULL);
386 /* Save GPS Info flag. */
387 gconf_client_set_bool(gconf_client, GCONF_KEY_GPS_INFO, _gps_info, NULL);
389 /* Save Route Download URL Format. */
390 gconf_client_set_string(gconf_client, GCONF_KEY_ROUTE_DL_URL, _route_dl_url, NULL);
392 /* Save Route Download Radius. */
393 gconf_client_set_int(gconf_client, GCONF_KEY_ROUTE_DL_RADIUS, _route_dl_radius, NULL);
396 for (i = 0; i < COLORABLE_ENUM_COUNT; i++) {
397 g_snprintf(buffer, sizeof(buffer), "#%02x%02x%02x",
398 _color[i].red >> 8, _color[i].green >> 8, _color[i].blue >> 8);
399 gconf_client_set_string(gconf_client, COLORABLE_GCONF[i], buffer, NULL);
402 /* Save Mapper database. */
404 gconf_client_set_string(gconf_client, GCONF_KEY_MAPPER_DB, _mapper_db, NULL);
406 gconf_client_unset(gconf_client, GCONF_KEY_MAPPER_DB, NULL);
408 /* Save Show POI below zoom. */
409 gconf_client_set_int(gconf_client, GCONF_KEY_POI_ZOOM, _poi_zoom, NULL);
411 gconf_client_suggest_sync(gconf_client, NULL);
413 gconf_client_clear_cache(gconf_client);
420 path_load(Path *path, const gchar *config_dir, const gchar *file)
426 pfile = gnome_vfs_uri_make_full_from_relative(config_dir, file);
427 if (GNOME_VFS_OK == gnome_vfs_read_entire_file(pfile, &size, &bytes))
428 parse_gpx(path, bytes, size, 0); /* 0 to replace track. */
433 * Initialize all configuration from GCONF. This should not be called more
434 * than once during execution.
436 void config_init(void)
443 gconf_client=gconf_client_get_default();
445 popup_error(_window, _("Failed to initialize GConf. Quitting."));
449 /* Preload configuration */
450 gconf_client_add_dir (gconf_client, GCONF_KEY_PREFIX, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
452 CenterMode _center_mode = CENTER_LEAD;
453 UnitType _units = UNITS_KM;
454 guint _degformat = DDPDDDDD;
455 InfoFontSize _info_font_size = INFO_FONT_MEDIUM;
457 /* Initialize config_dir. */
458 config_dir = gnome_vfs_expand_initial_tilde(CONFIG_DIR_NAME);
459 g_mkdir_with_parents(config_dir, 0700);
461 /* Get Receiver MAC from GConf. Default is scanned via hci_inquiry. */
462 _gps->io.address=gconf_client_get_string(gconf_client, GCONF_KEY_GPS_MAC, NULL);
463 _gps->io.port=mapper_gconf_get_int(GCONF_KEY_GPS_PORT, 2497);
464 _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);
466 /* Get Auto-Download. Default is FALSE. */
467 _auto_download = gconf_client_get_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, NULL);
469 _center_ratio=mapper_gconf_get_int(GCONF_KEY_CENTER_SENSITIVITY, 7);
470 _lead_ratio=mapper_gconf_get_int(GCONF_KEY_LEAD_AMOUNT, 5);
471 _draw_width=mapper_gconf_get_int(GCONF_KEY_DRAW_WIDTH, 4);
473 /* Invalidate destination */
476 /* Get Announce Advance Notice - Default is 30. */
477 _announce_notice_ratio=mapper_gconf_get_int(GCONF_KEY_ANNOUNCE_NOTICE, 8);
479 /* Get Enable Voice flag. Default is TRUE. */
480 value = gconf_client_get(gconf_client, GCONF_KEY_ENABLE_VOICE, NULL);
482 _enable_voice = gconf_value_get_bool(value);
483 gconf_value_free(value);
485 _enable_voice = TRUE;
488 _voice_pitch=mapper_gconf_get_bound_int(GCONF_KEY_VOICE_PITCH, 50, 10, 99);
489 _voice_speed=mapper_gconf_get_bound_int(GCONF_KEY_VOICE_SPEED, 120, 80, 370);
491 /* Get Always Keep On flag. Default is FALSE. */
492 _always_keep_on = gconf_client_get_bool(gconf_client,GCONF_KEY_ALWAYS_KEEP_ON, NULL);
494 filter.enabled = gconf_client_get_bool(gconf_client, GCONF_KEY_GPS_FILTER, NULL);
495 filter.hdop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_HDOP, NULL);
496 filter.vdop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_VDOP, NULL);
497 filter.angle = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_ANGLE, NULL);
498 filter.osm = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_OSM, NULL);
499 filter.maxdrop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_MAXDROP, NULL);
501 BOUND(filter.maxdrop, 0, 60);
502 BOUND(filter.hdop, 0, 50);
503 BOUND(filter.vdop, 0, 50);
504 BOUND(filter.angle, 0, 45);
506 /* Get Units. Default is UNITS_KM. */
508 gchar *units_str = gconf_client_get_string(gconf_client, GCONF_KEY_UNITS, NULL);
511 for (i = UNITS_ENUM_COUNT - 1; i > 0; i--)
512 if (!strcmp(units_str, UNITS_TEXT[i]))
517 /* Get Custom Key Actions. */
520 for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++) {
521 gint j = CUSTOM_KEY_DEFAULT[i];
522 gchar *str = gconf_client_get_string(gconf_client, CUSTOM_KEY_GCONF[i], NULL);
524 for (j = CUSTOM_ACTION_ENUM_COUNT - 1; j > 0; j--)
525 if (!strcmp(str, CUSTOM_ACTION_TEXT[j]))
531 /* Get Deg format. Default is DDPDDDDD. */
533 gchar *degformat_key_str = gconf_client_get_string(gconf_client,
534 GCONF_KEY_DEG_FORMAT,
537 if (degformat_key_str)
538 for (i = DEG_FORMAT_ENUM_COUNT - 1; i > 0; i--)
539 if (!strcmp(degformat_key_str, DEG_FORMAT_TEXT[i]))
544 /* Get Speed Limit On flag. Default is FALSE. */
545 _speed_on = gconf_client_get_bool(gconf_client, GCONF_KEY_SPEED_LIMIT_ON, NULL);
547 /* Get Speed Limit */
548 _speed_limit = gconf_client_get_int(gconf_client, GCONF_KEY_SPEED_LIMIT, NULL);
549 BOUND(_speed_limit, 1, 200);
551 /* Get Info Font Size. Default is INFO_FONT_MEDIUM. */
553 gchar *info_font_size_str = gconf_client_get_string(gconf_client, GCONF_KEY_INFO_FONT_SIZE, NULL);
555 if (info_font_size_str)
556 for (i = INFO_FONT_ENUM_COUNT - 1; i >= 0; i--)
557 if (!strcmp(info_font_size_str, INFO_FONT_TEXT[i]))
560 i = INFO_FONT_MEDIUM;
564 /* Get Auto-Download. Default is FALSE. */
565 _auto_download = gconf_client_get_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, NULL);
567 /* Get saved location */
568 _gps->data.lat = gconf_client_get_float(gconf_client, GCONF_KEY_LAT, NULL);
569 _gps->data.lon = gconf_client_get_float(gconf_client, GCONF_KEY_LON, NULL);
570 if (_gps->data.lat==0.0) _gps->data.lat=60.20;
571 if (_gps->data.lon==0.0) _gps->data.lon=22.20;
575 value = gconf_client_get(gconf_client, GCONF_KEY_HOME_LAT, NULL);
577 _home.lat = gconf_value_get_float(value);
578 gconf_value_free(value);
583 value = gconf_client_get(gconf_client, GCONF_KEY_HOME_LON, NULL);
585 _home.lon = gconf_value_get_float(value);
586 gconf_value_free(value);
591 /* Turku is default */
592 if (_home.valid==FALSE) {
598 /* Get last center point. */
600 gfloat center_lat, center_lon;
602 /* Get last saved latitude. Default is last saved latitude. */
603 value = gconf_client_get(gconf_client, GCONF_KEY_CENTER_LAT, NULL);
605 center_lat = gconf_value_get_float(value);
606 gconf_value_free(value);
608 center_lat = _gps->data.lat;
611 /* Get last saved longitude. Default is last saved longitude. */
612 value = gconf_client_get(gconf_client, GCONF_KEY_CENTER_LON, NULL);
614 center_lon = gconf_value_get_float(value);
615 gconf_value_free(value);
617 center_lon = _gps->data.lon;
620 latlon2unit(center_lat, center_lon, _center.unitx, _center.unity);
625 /* Get last Zoom Level. Default is 12. */
626 value = gconf_client_get(gconf_client, GCONF_KEY_ZOOM, NULL);
628 _zoom = gconf_value_get_int(value) / _curr_repo->view_zoom_steps * _curr_repo->view_zoom_steps;
629 gconf_value_free(value);
631 _zoom = 12 / _curr_repo->view_zoom_steps * _curr_repo->view_zoom_steps;
633 BOUND(_zoom, 0, MAX_ZOOM - 1);
634 _world_size_tiles = unit2tile(WORLD_SIZE_UNITS);
636 /* Get Route Directory. Default is NULL. */
637 _route_dir_uri = gconf_client_get_string(gconf_client, GCONF_KEY_ROUTEDIR, NULL);
639 /* Get Last Track File. Default is NULL. */
640 _track_file_uri = gconf_client_get_string(gconf_client, GCONF_KEY_TRACKFILE, NULL);
642 _center_mode=mapper_gconf_get_int(GCONF_KEY_AUTOCENTER_MODE, CENTER_LEAD);
644 /* Get Show Scale flag. Default is TRUE. */
645 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWSCALE, NULL);
647 _show_scale = gconf_value_get_bool(value);
648 gconf_value_free(value);
653 /* Get Show Tracks flag. Default is TRUE. */
654 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWTRACKS, NULL);
656 _show_tracks |= (gconf_value_get_bool(value) ? TRACKS_MASK : 0);
657 gconf_value_free(value);
659 _show_tracks |= TRACKS_MASK;
662 /* Get Show Routes flag. Default is TRUE. */
663 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWROUTES, NULL);
665 _show_tracks |= (gconf_value_get_bool(value) ? ROUTES_MASK : 0);
666 gconf_value_free(value);
668 _show_tracks |= ROUTES_MASK;
671 /* Get Show Velocity Vector flag. Default is TRUE. */
672 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWVELVEC, NULL);
674 _show_velvec = gconf_value_get_bool(value);
675 gconf_value_free(value);
680 /* Get Show Velocity Vector flag. Default is TRUE. */
681 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWPOIS, NULL);
683 _show_poi = gconf_value_get_bool(value);
684 gconf_value_free(value);
689 /* Get Enable GPS flag. Default is FALSE. */
690 value = gconf_client_get(gconf_client, GCONF_KEY_ENABLE_GPS, NULL);
692 _enable_gps = gconf_value_get_bool(value);
693 gconf_value_free(value);
698 /* Initialize _conn_state based on _enable_gps-> */
699 _gps->io.conn = (_enable_gps ? RCVR_DOWN : RCVR_OFF);
701 /* Load the route locations. */
704 _loc_list = gconf_client_get_list(gconf_client, GCONF_KEY_ROUTE_LOCATIONS, GCONF_VALUE_STRING, NULL);
705 _loc_model = gtk_list_store_new(1, G_TYPE_STRING);
706 for (curr = _loc_list; curr != NULL; curr = curr->next) {
708 gtk_list_store_insert_with_values(_loc_model, &iter, INT_MAX, 0, curr->data, -1);
712 /* Get Mapper Database. Default is in REPO_DEFAULT_CACHE_BASE */
713 _mapper_db = gconf_client_get_string(gconf_client, GCONF_KEY_MAPPER_DB, NULL);
714 if (_mapper_db == NULL) {
715 gchar *db_base = gnome_vfs_expand_initial_tilde(REPO_DEFAULT_CACHE_BASE);
716 _mapper_db = gnome_vfs_uri_make_full_from_relative(db_base, "mapper.db");
720 _poi_zoom = mapper_gconf_get_int(GCONF_KEY_POI_ZOOM, 6);
722 /* Get GPS Info flag. Default is FALSE. */
723 value = gconf_client_get(gconf_client, GCONF_KEY_GPS_INFO, NULL);
725 _gps_info = gconf_value_get_bool(value);
726 gconf_value_free(value);
731 /* Get Route Download URL. Default is:
732 * "http://www.gnuite.com/cgi-bin/gpx.cgi?saddr=%s&daddr=%s" */
733 _route_dl_url = gconf_client_get_string(gconf_client, GCONF_KEY_ROUTE_DL_URL, NULL);
734 if (_route_dl_url == NULL)
735 _route_dl_url = g_strdup("http://www.gnuite.com/cgi-bin/gpx.cgi?saddr=%s&daddr=%s");
737 /* Get Route Download Radius. Default is 4. */
738 _route_dl_radius = mapper_gconf_get_int(GCONF_KEY_ROUTE_DL_RADIUS, 4);
741 for (i = 0; i < COLORABLE_ENUM_COUNT; i++) {
742 str = gconf_client_get_string(gconf_client, COLORABLE_GCONF[i], NULL);
743 if (!str || !gdk_color_parse(str, &_color[i]))
744 _color[i] = COLORABLE_DEFAULT[i];
747 /* Get current proxy settings. */
748 config_update_proxy();
750 gconf_client_clear_cache(gconf_client);
758 mapper_gconf_get_int(const gchar *path, gint def)
763 g_assert(gconf_client);
764 value=gconf_client_get(gconf_client, path, NULL);
766 v=gconf_value_get_int(value);
767 gconf_value_free(value);
778 mapper_gconf_get_bound_int(const gchar *path, gint def, gint min, gint max)
782 r=mapper_gconf_get_int(path, def);
788 mapper_gconf_get_float(const gchar *path, gfloat def)
793 g_assert(gconf_client);
794 value=gconf_client_get(gconf_client, path, NULL);
796 v=gconf_value_get_float(value);
797 gconf_value_free(value);