]> err.no Git - libchamplain/commitdiff
Introduce champlain_settings to hold global settings.
authorPierre-Luc Beaudoin <pierre-luc@pierlux.com>
Mon, 2 Mar 2009 22:02:04 +0000 (00:02 +0200)
committerPierre-Luc Beaudoin <pierre-luc@pierlux.com>
Wed, 4 Mar 2009 21:05:38 +0000 (23:05 +0200)
Should probably be transformed on a GObject.

champlain/Makefile.am
champlain/champlain-map-source.c
champlain/champlain-map.c
champlain/champlain-map.h
champlain/champlain-private.h
champlain/champlain-settings.c [new file with mode: 0644]
champlain/champlain-settings.h [new file with mode: 0644]
champlain/champlain-view.c
champlain/champlain.h

index 92e4dec7c3b6336ac2b135489eb3e32676f1cb36..281aae0fefdce25f5df3c4584d8ee7f5e37649f5 100644 (file)
@@ -23,7 +23,8 @@ libchamplain_headers = \
        champlain-zoom-level.h          \
        champlain-enum-types.h          \
        champlain-tile.h                \
-       champlain-map-source.h
+       champlain-map-source.h          \
+       champlain-settings.h
 
 
 libchamplain_0_3_la_SOURCES = \
@@ -36,7 +37,8 @@ libchamplain_0_3_la_SOURCES = \
        champlain-map.c                 \
        champlain-zoom-level.c          \
        champlain-tile.c                \
-       champlain-map-source.c
+       champlain-map-source.c          \
+       champlain-settings.c
 
 noinst_HEADERS = \
        champlain-debug.h               \
@@ -57,7 +59,8 @@ libchamplain_include_HEADERS = \
        champlain-map-source.h          \
        champlain-tile.h                \
        champlain-zoom-level.h          \
-       champlain-marker.h
+       champlain-marker.h              \
+       champlain-settings.h
 
 libchamplain_0_3_la_LIBADD = $(DEPS_LIBS) ../tidy/libtidy-1.0.la
 
index 41f2d0dd2d0590b98a67e365e60e9545cb51c994..56bdbcb9e798c24b2471eaa091c85b364e5ddd04 100644 (file)
@@ -27,6 +27,7 @@
 #include "champlain-map-source.h"
 #include "champlain-marshal.h"
 #include "champlain-private.h"
+#include "champlain-settings.h"
 #include "champlain-zoom-level.h"
 
 #include <errno.h>
@@ -642,7 +643,7 @@ champlain_map_source_get_tile (ChamplainMapSource *map_source,
       g_object_unref (tile);
       g_object_unref (zoom_level);
     }
-  else /* if (!offline) */
+  else if (champlain_settings_is_online ())
     {
       SoupMessage *msg;
       gchar *uri;
index cc9b3da912c344d3095f7b981d9201a2cf3cb9fb..1f8b0135a5fd6c9c06b483aa4c10100cd4500495 100644 (file)
@@ -54,7 +54,7 @@ map_load_level(Map *map, ChamplainMapSource *map_source, gint zoom_level)
 }
 
 void
-map_load_visible_tiles (Map *map, ChamplainView *view, ChamplainMapSource *source, ChamplainRectangle viewport, gboolean offline)
+map_load_visible_tiles (Map *map, ChamplainView *view, ChamplainMapSource *source, ChamplainRectangle viewport)
 {
   gint size;
 
index 011e0b820e1acee9233c59b958b59e4ce6aba806..6a0902e71bd267c42ab1f45813d523a545f1eeec 100644 (file)
@@ -37,7 +37,7 @@ struct _Map
 
 Map *map_new ();
 
-void map_load_visible_tiles (Map *map, ChamplainView * view, ChamplainMapSource *source, ChamplainRectangle viewport, gboolean offline);
+void map_load_visible_tiles (Map *map, ChamplainView * view, ChamplainMapSource *source, ChamplainRectangle viewport);
 
 void map_free (Map *map);
 
index e47677863a9996129716d5c3ee567413e9822e69..5c053eb406b0a32f6a665ab4e4e4dabc7c1091eb 100644 (file)
@@ -25,7 +25,7 @@
 
 typedef struct _Map Map;
 
-typedef struct 
+typedef struct
 {
   gint x;
   gint y;
@@ -38,7 +38,7 @@ struct _ChamplainMarkerPrivate
   gdouble lat;
 };
 
-typedef struct 
+typedef struct
 {
   gint x;
   gint y;
@@ -46,5 +46,4 @@ typedef struct
   gint height;
 } ChamplainRectangle;
 
-
 #endif
diff --git a/champlain/champlain-settings.c b/champlain/champlain-settings.c
new file mode 100644 (file)
index 0000000..73a3c84
--- /dev/null
@@ -0,0 +1,34 @@
+
+/*
+ * Copyright (C) 2009 Pierre-Luc Beaudoin <pierre-luc@pierlux.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include "champlain-settings.h"
+
+static gboolean global_offline = TRUE;
+
+gboolean
+champlain_settings_is_online ()
+{
+  return global_offline;
+}
+
+gboolean
+champlain_settings_set_online (gboolean value)
+{
+  global_offline = value;
+}
diff --git a/champlain/champlain-settings.h b/champlain/champlain-settings.h
new file mode 100644 (file)
index 0000000..2544c76
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 Pierre-Luc Beaudoin <pierre-luc@pierlux.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#if !defined (__CHAMPLAIN_CHAMPLAIN_H_INSIDE__) && !defined (CHAMPLAIN_COMPILATION)
+#error "Only <champlain/champlain.h> can be included directly."
+#endif
+
+#ifndef CHAMPLAIN_SETTINGS_H
+#define CHAMPLAIN_SETTINGS_H
+
+#include <glib.h>
+
+gboolean champlain_settings_is_online ();
+gboolean champlain_settings_set_online (gboolean value);
+
+#endif
index b97d5b50d43131ea095c552a5131203f30526ab7..41a7013411704f88d7a7c7e99c538cd966a87ccb 100644 (file)
@@ -119,7 +119,6 @@ struct _ChamplainViewPrivate
 
   Map *map;
 
-  gboolean offline;
   gboolean keep_center_on_resize;
   gboolean show_license;
 };
@@ -452,7 +451,7 @@ champlain_view_get_property (GObject *object,
         g_value_set_enum (value, priv->scroll_mode);
         break;
       case PROP_OFFLINE:
-        g_value_set_boolean (value, priv->offline);
+        g_value_set_boolean (value, !champlain_settings_is_online ());
         break;
       case PROP_DECEL_RATE:
         {
@@ -566,7 +565,7 @@ champlain_view_set_property (GObject *object,
           priv->scroll_mode, NULL);
       break;
     case PROP_OFFLINE:
-      priv->offline = g_value_get_boolean (value);
+      champlain_settings_set_online (!g_value_get_boolean (value));
       break;
     case PROP_DECEL_RATE:
       {
@@ -749,7 +748,6 @@ champlain_view_init (ChamplainView *view)
 
   priv->map_source = champlain_map_source_new_osm_mapnik ();
   priv->zoom_level = 0;
-  priv->offline = FALSE;
   priv->keep_center_on_resize = TRUE;
   priv->show_license = TRUE;
   priv->license_actor = NULL;
@@ -1195,7 +1193,7 @@ view_load_visible_tiles (ChamplainView *view)
   viewport.x += priv->anchor.x;
   viewport.y += priv->anchor.y;
 
-  map_load_visible_tiles (priv->map, view, priv->map_source, viewport, priv->offline);
+  map_load_visible_tiles (priv->map, view, priv->map_source, viewport);
 }
 
 static void
index 19144cc67d4cca3eb4f29b78480749bec398dbbe..0128fb54f0cb76186910df65f327a4d91b0990d8 100644 (file)
@@ -34,6 +34,7 @@
 #include "champlain/champlain-view.h"
 #include "champlain/champlain-enum-types.h"
 #include "champlain/champlain-map-source.h"
+#include "champlain/champlain-settings.h"
 
 #undef __CHAMPLAIN_CHAMPLAIN_H_INSIDE__