Diff of /trunk/src/gconf.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 198 by harbaum, Thu Nov 19 12:38:03 2009 UTC revision 246 by harbaum, Tue Jan 19 20:26:37 2010 UTC
# Line 67  static store_t store[] = { Line 67  static store_t store[] = {
67    { "compass_locked",   STORE_BOOL,   OFFSET(compass_locked) },    { "compass_locked",   STORE_BOOL,   OFFSET(compass_locked) },
68    { "latitude",         STORE_FLOAT,  OFFSET(home.lat) },    { "latitude",         STORE_FLOAT,  OFFSET(home.lat) },
69    { "longitude",        STORE_FLOAT,  OFFSET(home.lon) },    { "longitude",        STORE_FLOAT,  OFFSET(home.lon) },
   { "manual_goto_lat",  STORE_FLOAT,  OFFSET(manual_goto.lat) },  
   { "manual_goto_lon",  STORE_FLOAT,  OFFSET(manual_goto.lon) },  
70    { "gps_lat",          STORE_FLOAT,  OFFSET(gps.lat) },    { "gps_lat",          STORE_FLOAT,  OFFSET(gps.lat) },
71    { "gps_lon",          STORE_FLOAT,  OFFSET(gps.lon) },    { "gps_lon",          STORE_FLOAT,  OFFSET(gps.lon) },
72    { "search_in",        STORE_INT,    OFFSET(search) },    { "search_in",        STORE_INT,    OFFSET(search) },
# Line 80  static store_t store[] = { Line 78  static store_t store[] = {
78    { "cachelist_hide_found", STORE_BOOL, OFFSET(cachelist_hide_found) },    { "cachelist_hide_found", STORE_BOOL, OFFSET(cachelist_hide_found) },
79    { "cachelist_update", STORE_BOOL,   OFFSET(cachelist_update) },    { "cachelist_update", STORE_BOOL,   OFFSET(cachelist_update) },
80    { "disable_gcvote",   STORE_BOOL,   OFFSET(disable_gcvote) },    { "disable_gcvote",   STORE_BOOL,   OFFSET(disable_gcvote) },
81      { "username",         STORE_STRING, OFFSET(username) },
82  #ifdef USE_MAEMO  #ifdef USE_MAEMO
83    { "mmpoi_dontlaunch", STORE_BOOL,   OFFSET(mmpoi_dontlaunch) },    { "mmpoi_dontlaunch", STORE_BOOL,   OFFSET(mmpoi_dontlaunch) },
84    { "cachelist_dss",    STORE_BOOL,   OFFSET(cachelist_disable_screensaver) },    { "cachelist_dss",    STORE_BOOL,   OFFSET(cachelist_disable_screensaver) },
# Line 91  static store_t store[] = { Line 90  static store_t store[] = {
90    { "map_zoom",         STORE_INT,    OFFSET(map.zoom) },    { "map_zoom",         STORE_INT,    OFFSET(map.zoom) },
91    { "map_source",       STORE_INT,    OFFSET(map.source) },    { "map_source",       STORE_INT,    OFFSET(map.source) },
92  #endif  #endif
93    #ifdef ESPEAK
94      { "espeak/enabled",   STORE_BOOL,   OFFSET(espeak.enabled) },
95    #endif
96    
   { "geotoad/username", STORE_STRING, OFFSET(gt.username) },  
97    { "geotoad/password", STORE_STRING, OFFSET(gt.password) },    { "geotoad/password", STORE_STRING, OFFSET(gt.password) },
98    { "geotoad/filename", STORE_STRING, OFFSET(gt.filename) },    { "geotoad/filename", STORE_STRING, OFFSET(gt.filename) },
99    { "geotoad/distance", STORE_FLOAT,  OFFSET(gt.distance) },    { "geotoad/distance", STORE_FLOAT,  OFFSET(gt.distance) },
# Line 121  static char *get_basename(char *name) { Line 122  static char *get_basename(char *name) {
122  }  }
123    
124  void gconf_remove_closed_name(appdata_t *appdata, char *filename) {  void gconf_remove_closed_name(appdata_t *appdata, char *filename) {
125      if(!filename || !strlen(filename)) return;
126    
127    char *key = g_strdup_printf(GCONF_KEY_CLOSED, get_basename(filename));    char *key = g_strdup_printf(GCONF_KEY_CLOSED, get_basename(filename));
128    gconf_client_unset(appdata->gconf_client, key, NULL);    gconf_client_unset(appdata->gconf_client, key, NULL);
129    g_free(key);    g_free(key);
130  }  }
131    
132  void gconf_save_closed_name(appdata_t *appdata, char *filename, char *name) {  void gconf_save_closed_name(appdata_t *appdata, char *filename, char *name) {
133      if(!filename || !strlen(filename)) return;
134    
135    char *key = g_strdup_printf(GCONF_KEY_CLOSED, get_basename(filename));    char *key = g_strdup_printf(GCONF_KEY_CLOSED, get_basename(filename));
136    gconf_client_set_string(appdata->gconf_client, key, name, NULL);    gconf_client_set_string(appdata->gconf_client, key, name, NULL);
137    g_free(key);    g_free(key);
138  }  }
139    
140  char *gconf_restore_closed_name(appdata_t *appdata, char *filename) {  char *gconf_restore_closed_name(appdata_t *appdata, char *filename) {
141      if(!filename || !strlen(filename)) return NULL;
142    
143    char *key = g_strdup_printf(GCONF_KEY_CLOSED, get_basename(filename));    char *key = g_strdup_printf(GCONF_KEY_CLOSED, get_basename(filename));
144    char *ret = gconf_client_get_string(appdata->gconf_client, key, NULL);    char *ret = gconf_client_get_string(appdata->gconf_client, key, NULL);
145    g_free(key);    g_free(key);
# Line 142  char *gconf_restore_closed_name(appdata_ Line 149  char *gconf_restore_closed_name(appdata_
149  void gconf_save_state(appdata_t *appdata) {  void gconf_save_state(appdata_t *appdata) {
150    int entries = 0;    int entries = 0;
151    
152      printf("saving gconf state\n");
153    
154    /* free proxy settings */    /* free proxy settings */
155    if(appdata->proxy) {    if(appdata->proxy) {
156      proxy_t *proxy = appdata->proxy;      proxy_t *proxy = appdata->proxy;
# Line 229  void gconf_load_state(appdata_t *appdata Line 238  void gconf_load_state(appdata_t *appdata
238    
239    /* default positions are invalid */    /* default positions are invalid */
240    appdata->home.lat = appdata->home.lon = NAN;    appdata->home.lat = appdata->home.lon = NAN;
   appdata->manual_goto.lat = appdata->manual_goto.lon = NAN;  
241    appdata->gps.lat = appdata->gps.lon = NAN;    appdata->gps.lat = appdata->gps.lon = NAN;
242      appdata->geomath.lat = appdata->geomath.lon = NAN;
243    
244    appdata->gt.lat = appdata->gt.lon = NAN;    appdata->gt.lat = appdata->gt.lon = NAN;
245    appdata->gt.distance = 1.0;  // in km/mil    appdata->gt.distance = 1.0;  // in km/mil
# Line 264  void gconf_load_state(appdata_t *appdata Line 273  void gconf_load_state(appdata_t *appdata
273      }      }
274    }    }
275    
276      /* restore everything listed in the store table */
277      store_t *st = store;
278      while(st->key) {
279        void **ptr = ((void*)appdata) + st->offset;
280        char *key = g_strdup_printf(GCONF_PATH "%s", st->key);
281    
282        /* check if key is present */
283        GConfValue *value = gconf_client_get(appdata->gconf_client, key, NULL);
284        if(value) {
285          gconf_value_free(value);
286    
287          switch(st->type) {
288          case STORE_STRING: {
289            char **str = (char**)ptr;
290            *str = gconf_client_get_string(appdata->gconf_client, key, NULL);
291          } break;
292    
293          case STORE_BOOL:
294            *((int*)ptr) = gconf_client_get_bool(appdata->gconf_client, key, NULL);
295            break;
296    
297          case STORE_INT:
298            *((int*)ptr) = gconf_client_get_int(appdata->gconf_client, key, NULL);
299            break;
300    
301          case STORE_FLOAT:
302            *((float*)ptr) = gconf_client_get_float(appdata->gconf_client, key, NULL);
303            break;
304    
305          default:
306            printf("Unsupported type %d\n", st->type);
307            break;
308          }
309        }
310        g_free(key);
311        st++;
312      }
313    
314    int i, entries = gconf_client_get_int(appdata->gconf_client,    int i, entries = gconf_client_get_int(appdata->gconf_client,
315                                   GCONF_KEY_CNT, NULL);                                   GCONF_KEY_CNT, NULL);
316    
# Line 285  void gconf_load_state(appdata_t *appdata Line 332  void gconf_load_state(appdata_t *appdata
332          (*gpx)->closed = TRUE;          (*gpx)->closed = TRUE;
333        } else {        } else {
334          if(g_file_test(fname, G_FILE_TEST_IS_DIR))          if(g_file_test(fname, G_FILE_TEST_IS_DIR))
335            *gpx = gpx_parse_dir(dialog, fname);            *gpx = gpx_parse_dir(dialog, fname, appdata->username);
336          else          else
337            *gpx = gpx_parse(dialog, fname);            *gpx = gpx_parse(dialog, fname, appdata->username);
338    
339          if(!*gpx) {          if(!*gpx) {
340            /* restoring the gpx file failed, mark it as unusable, but save */            /* restoring the gpx file failed, mark it as unusable, but save */
# Line 332  void gconf_load_state(appdata_t *appdata Line 379  void gconf_load_state(appdata_t *appdata
379      }      }
380    }    }
381    
   /* restore everything listed in the store table */  
   store_t *st = store;  
   while(st->key) {  
     void **ptr = ((void*)appdata) + st->offset;  
     char *key = g_strdup_printf(GCONF_PATH "%s", st->key);  
   
     /* check if key is present */  
     GConfValue *value = gconf_client_get(appdata->gconf_client, key, NULL);  
     if(value) {  
       gconf_value_free(value);  
   
       switch(st->type) {  
       case STORE_STRING: {  
         char **str = (char**)ptr;  
         *str = gconf_client_get_string(appdata->gconf_client, key, NULL);  
       } break;  
   
       case STORE_BOOL:  
         *((int*)ptr) = gconf_client_get_bool(appdata->gconf_client, key, NULL);  
         break;  
   
       case STORE_INT:  
         *((int*)ptr) = gconf_client_get_int(appdata->gconf_client, key, NULL);  
         break;  
   
       case STORE_FLOAT:  
         *((float*)ptr) = gconf_client_get_float(appdata->gconf_client, key, NULL);  
         break;  
   
       default:  
         printf("Unsupported type %d\n", st->type);  
         break;  
       }  
     }  
     g_free(key);  
     st++;  
   }  
   
382    /* ----- set all kinds of defaults ------- */    /* ----- set all kinds of defaults ------- */
383    
384    if(!appdata->compass_damping) appdata->compass_damping = 1;    if(!appdata->compass_damping) appdata->compass_damping = 1;
# Line 486  void gconf_load_state(appdata_t *appdata Line 495  void gconf_load_state(appdata_t *appdata
495      char *name = g_strdup(ICONPATH "welcome.gpx");      char *name = g_strdup(ICONPATH "welcome.gpx");
496      dialog = gpx_busy_dialog_new(GTK_WIDGET(appdata->window));      dialog = gpx_busy_dialog_new(GTK_WIDGET(appdata->window));
497      printf("No GPX file loaded, trying to load demo\n");      printf("No GPX file loaded, trying to load demo\n");
498      appdata->gpx = gpx_parse(dialog, name);      appdata->gpx = gpx_parse(dialog, name, appdata->username);
499      gpx_busy_dialog_destroy(dialog);      gpx_busy_dialog_destroy(dialog);
500      g_free(name);      g_free(name);
501    }    }

Legend:
Removed from v.198  
changed lines
  Added in v.246