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 gpx_write(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);
394 gconf_client_set_int(gconf_client, GCONF_KEY_TRACK_DL_RADIUS, _track_dl_radius, NULL);
397 for (i = 0; i < COLORABLE_ENUM_COUNT; i++) {
398 g_snprintf(buffer, sizeof(buffer), "#%02x%02x%02x",
399 _color[i].red >> 8, _color[i].green >> 8, _color[i].blue >> 8);
400 gconf_client_set_string(gconf_client, COLORABLE_GCONF[i], buffer, NULL);
403 /* Save Mapper database. */
405 gconf_client_set_string(gconf_client, GCONF_KEY_MAPPER_DB, _mapper_db, NULL);
407 gconf_client_unset(gconf_client, GCONF_KEY_MAPPER_DB, NULL);
409 /* Save Show POI below zoom. */
410 gconf_client_set_int(gconf_client, GCONF_KEY_POI_ZOOM, _poi_zoom, NULL);
412 gconf_client_suggest_sync(gconf_client, NULL);
414 gconf_client_clear_cache(gconf_client);
421 path_load(Path *path, const gchar *config_dir, const gchar *file)
427 pfile = gnome_vfs_uri_make_full_from_relative(config_dir, file);
428 if (GNOME_VFS_OK == gnome_vfs_read_entire_file(pfile, &size, &bytes))
429 gpx_parse(path, bytes, size, GPX_PATH_NEW);
434 * Initialize all configuration from GCONF. This should not be called more
435 * than once during execution.
437 void config_init(void)
444 gconf_client=gconf_client_get_default();
446 popup_error(_window, _("Failed to initialize GConf. Quitting."));
450 /* Preload configuration */
451 gconf_client_add_dir (gconf_client, GCONF_KEY_PREFIX, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
453 CenterMode _center_mode = CENTER_LEAD;
454 UnitType _units = UNITS_KM;
455 guint _degformat = DDPDDDDD;
456 InfoFontSize _info_font_size = INFO_FONT_MEDIUM;
458 /* Initialize config_dir. */
459 config_dir = gnome_vfs_expand_initial_tilde(CONFIG_DIR_NAME);
460 g_mkdir_with_parents(config_dir, 0700);
462 /* Get Receiver MAC from GConf. Default is scanned via hci_inquiry. */
463 _gps->io.address=gconf_client_get_string(gconf_client, GCONF_KEY_GPS_MAC, NULL);
464 _gps->io.port=mapper_gconf_get_int(GCONF_KEY_GPS_PORT, 2947);
465 _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);
467 /* Get Auto-Download. Default is FALSE. */
468 _auto_download = gconf_client_get_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, NULL);
470 _center_ratio=mapper_gconf_get_int(GCONF_KEY_CENTER_SENSITIVITY, 7);
471 _lead_ratio=mapper_gconf_get_int(GCONF_KEY_LEAD_AMOUNT, 5);
472 _draw_width=mapper_gconf_get_int(GCONF_KEY_DRAW_WIDTH, 4);
474 /* Invalidate destination */
477 /* Get Announce Advance Notice - Default is 30. */
478 _announce_notice_ratio=mapper_gconf_get_int(GCONF_KEY_ANNOUNCE_NOTICE, 8);
480 /* Get Enable Voice flag. Default is TRUE. */
481 value = gconf_client_get(gconf_client, GCONF_KEY_ENABLE_VOICE, NULL);
483 _enable_voice = gconf_value_get_bool(value);
484 gconf_value_free(value);
486 _enable_voice = TRUE;
489 _voice_pitch=mapper_gconf_get_bound_int(GCONF_KEY_VOICE_PITCH, 50, 10, 99);
490 _voice_speed=mapper_gconf_get_bound_int(GCONF_KEY_VOICE_SPEED, 120, 80, 370);
492 /* Get Always Keep On flag. Default is FALSE. */
493 _always_keep_on = gconf_client_get_bool(gconf_client,GCONF_KEY_ALWAYS_KEEP_ON, NULL);
495 filter.enabled = gconf_client_get_bool(gconf_client, GCONF_KEY_GPS_FILTER, NULL);
496 filter.hdop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_HDOP, NULL);
497 filter.vdop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_VDOP, NULL);
498 filter.angle = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_ANGLE, NULL);
499 filter.osm = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_OSM, NULL);
500 filter.maxdrop = gconf_client_get_float(gconf_client, GCONF_KEY_GPS_FILTER_MAXDROP, NULL);
502 BOUND(filter.maxdrop, 0, 60);
503 BOUND(filter.hdop, 0, 50);
504 BOUND(filter.vdop, 0, 50);
505 BOUND(filter.angle, 0, 45);
507 /* Get Units. Default is UNITS_KM. */
509 gchar *units_str = gconf_client_get_string(gconf_client, GCONF_KEY_UNITS, NULL);
512 for (i = UNITS_ENUM_COUNT - 1; i > 0; i--)
513 if (!strcmp(units_str, UNITS_TEXT[i]))
518 /* Get Custom Key Actions. */
521 for (i = 0; i < CUSTOM_KEY_ENUM_COUNT; i++) {
522 gint j = CUSTOM_KEY_DEFAULT[i];
523 gchar *str = gconf_client_get_string(gconf_client, CUSTOM_KEY_GCONF[i], NULL);
525 for (j = CUSTOM_ACTION_ENUM_COUNT - 1; j > 0; j--)
526 if (!strcmp(str, CUSTOM_ACTION_TEXT[j]))
532 /* Get Deg format. Default is DDPDDDDD. */
534 gchar *degformat_key_str = gconf_client_get_string(gconf_client,
535 GCONF_KEY_DEG_FORMAT,
538 if (degformat_key_str)
539 for (i = DEG_FORMAT_ENUM_COUNT - 1; i > 0; i--)
540 if (!strcmp(degformat_key_str, DEG_FORMAT_TEXT[i]))
545 /* Get Speed Limit On flag. Default is FALSE. */
546 _speed_on = gconf_client_get_bool(gconf_client, GCONF_KEY_SPEED_LIMIT_ON, NULL);
548 /* Get Speed Limit */
549 _speed_limit = gconf_client_get_int(gconf_client, GCONF_KEY_SPEED_LIMIT, NULL);
550 BOUND(_speed_limit, 1, 200);
552 /* Get Info Font Size. Default is INFO_FONT_MEDIUM. */
554 gchar *info_font_size_str = gconf_client_get_string(gconf_client, GCONF_KEY_INFO_FONT_SIZE, NULL);
556 if (info_font_size_str)
557 for (i = INFO_FONT_ENUM_COUNT - 1; i >= 0; i--)
558 if (!strcmp(info_font_size_str, INFO_FONT_TEXT[i]))
561 i = INFO_FONT_MEDIUM;
565 /* Get Auto-Download. Default is FALSE. */
566 _auto_download = gconf_client_get_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, NULL);
568 /* Get saved location */
569 _gps->data.lat = gconf_client_get_float(gconf_client, GCONF_KEY_LAT, NULL);
570 _gps->data.lon = gconf_client_get_float(gconf_client, GCONF_KEY_LON, NULL);
571 if (_gps->data.lat==0.0) _gps->data.lat=60.20;
572 if (_gps->data.lon==0.0) _gps->data.lon=22.20;
576 value = gconf_client_get(gconf_client, GCONF_KEY_HOME_LAT, NULL);
578 _home.lat = gconf_value_get_float(value);
579 gconf_value_free(value);
584 value = gconf_client_get(gconf_client, GCONF_KEY_HOME_LON, NULL);
586 _home.lon = gconf_value_get_float(value);
587 gconf_value_free(value);
592 /* Turku is default */
593 if (_home.valid==FALSE) {
599 /* Get last center point. */
601 gfloat center_lat, center_lon;
603 /* Get last saved latitude. Default is last saved latitude. */
604 value = gconf_client_get(gconf_client, GCONF_KEY_CENTER_LAT, NULL);
606 center_lat = gconf_value_get_float(value);
607 gconf_value_free(value);
609 center_lat = _gps->data.lat;
612 /* Get last saved longitude. Default is last saved longitude. */
613 value = gconf_client_get(gconf_client, GCONF_KEY_CENTER_LON, NULL);
615 center_lon = gconf_value_get_float(value);
616 gconf_value_free(value);
618 center_lon = _gps->data.lon;
621 latlon2unit(center_lat, center_lon, _center.unitx, _center.unity);
626 /* Get last Zoom Level. Default is 12. */
627 value = gconf_client_get(gconf_client, GCONF_KEY_ZOOM, NULL);
629 _zoom = gconf_value_get_int(value) / _curr_repo->view_zoom_steps * _curr_repo->view_zoom_steps;
630 gconf_value_free(value);
632 _zoom = 12 / _curr_repo->view_zoom_steps * _curr_repo->view_zoom_steps;
634 BOUND(_zoom, 0, MAX_ZOOM - 1);
635 _world_size_tiles = unit2tile(WORLD_SIZE_UNITS);
637 /* Get Route Directory. Default is NULL. */
638 _route_dir_uri = gconf_client_get_string(gconf_client, GCONF_KEY_ROUTEDIR, NULL);
640 /* Get Last Track File. Default is NULL. */
641 _track_file_uri = gconf_client_get_string(gconf_client, GCONF_KEY_TRACKFILE, NULL);
643 _center_mode=mapper_gconf_get_int(GCONF_KEY_AUTOCENTER_MODE, CENTER_LEAD);
645 /* Get Show Scale flag. Default is TRUE. */
646 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWSCALE, NULL);
648 _show_scale = gconf_value_get_bool(value);
649 gconf_value_free(value);
654 /* Get Show Tracks flag. Default is TRUE. */
655 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWTRACKS, NULL);
657 _show_tracks |= (gconf_value_get_bool(value) ? TRACKS_MASK : 0);
658 gconf_value_free(value);
660 _show_tracks |= TRACKS_MASK;
663 /* Get Show Routes flag. Default is TRUE. */
664 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWROUTES, NULL);
666 _show_tracks |= (gconf_value_get_bool(value) ? ROUTES_MASK : 0);
667 gconf_value_free(value);
669 _show_tracks |= ROUTES_MASK;
672 /* Get Show Velocity Vector flag. Default is TRUE. */
673 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWVELVEC, NULL);
675 _show_velvec = gconf_value_get_bool(value);
676 gconf_value_free(value);
681 /* Get Show Velocity Vector flag. Default is TRUE. */
682 value = gconf_client_get(gconf_client, GCONF_KEY_SHOWPOIS, NULL);
684 _show_poi = gconf_value_get_bool(value);
685 gconf_value_free(value);
690 /* Get Enable GPS flag. Default is FALSE. */
691 value = gconf_client_get(gconf_client, GCONF_KEY_ENABLE_GPS, NULL);
693 _enable_gps = gconf_value_get_bool(value);
694 gconf_value_free(value);
699 /* Initialize _conn_state based on _enable_gps-> */
700 _gps->io.conn = (_enable_gps ? RCVR_DOWN : RCVR_OFF);
702 /* Load the route locations. */
705 _loc_list = gconf_client_get_list(gconf_client, GCONF_KEY_ROUTE_LOCATIONS, GCONF_VALUE_STRING, NULL);
706 _loc_model = gtk_list_store_new(1, G_TYPE_STRING);
707 for (curr = _loc_list; curr != NULL; curr = curr->next) {
709 gtk_list_store_insert_with_values(_loc_model, &iter, INT_MAX, 0, curr->data, -1);
713 /* Get Mapper Database. Default is in REPO_DEFAULT_CACHE_BASE */
714 _mapper_db = gconf_client_get_string(gconf_client, GCONF_KEY_MAPPER_DB, NULL);
715 if (_mapper_db == NULL) {
716 gchar *db_base = gnome_vfs_expand_initial_tilde(REPO_DEFAULT_CACHE_BASE);
717 _mapper_db = gnome_vfs_uri_make_full_from_relative(db_base, "mapper.db");
721 _poi_zoom = mapper_gconf_get_int(GCONF_KEY_POI_ZOOM, 6);
723 /* Get GPS Info flag. Default is FALSE. */
724 value = gconf_client_get(gconf_client, GCONF_KEY_GPS_INFO, NULL);
726 _gps_info = gconf_value_get_bool(value);
727 gconf_value_free(value);
732 /* Get Route Download URL. Default is:
733 * "http://www.gnuite.com/cgi-bin/gpx.cgi?saddr=%s&daddr=%s" */
734 _route_dl_url = gconf_client_get_string(gconf_client, GCONF_KEY_ROUTE_DL_URL, NULL);
735 if (_route_dl_url == NULL)
736 _route_dl_url = g_strdup("http://www.gnuite.com/cgi-bin/gpx.cgi?saddr=%s&daddr=%s");
738 /* Get Route Download Radius. Default is 4. */
739 _route_dl_radius = mapper_gconf_get_int(GCONF_KEY_ROUTE_DL_RADIUS, 4);
740 _track_dl_radius = mapper_gconf_get_int(GCONF_KEY_TRACK_DL_RADIUS, 4);
743 for (i = 0; i < COLORABLE_ENUM_COUNT; i++) {
744 str = gconf_client_get_string(gconf_client, COLORABLE_GCONF[i], NULL);
745 if (!str || !gdk_color_parse(str, &_color[i]))
746 _color[i] = COLORABLE_DEFAULT[i];
749 /* Get current proxy settings. */
750 config_update_proxy();
752 gconf_client_clear_cache(gconf_client);
760 mapper_gconf_get_int(const gchar *path, gint def)
765 g_assert(gconf_client);
766 value=gconf_client_get(gconf_client, path, NULL);
768 v=gconf_value_get_int(value);
769 gconf_value_free(value);
780 mapper_gconf_get_bound_int(const gchar *path, gint def, gint min, gint max)
784 r=mapper_gconf_get_int(path, def);
790 mapper_gconf_get_float(const gchar *path, gfloat def)
795 g_assert(gconf_client);
796 value=gconf_client_get(gconf_client, path, NULL);
798 v=gconf_value_get_float(value);
799 gconf_value_free(value);