[libchamplain] Make overlay sources accessible outside of ChamplainView and update license actor
- From: Jiří Techet <jiritechet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libchamplain] Make overlay sources accessible outside of ChamplainView and update license actor
- Date: Wed, 21 Aug 2013 14:25:23 +0000 (UTC)
commit 9ef17c3564e95bf8366c0af76b599428b8dbc922
Author: Jiří Techet <techet gmail com>
Date: Wed Aug 21 16:16:09 2013 +0200
Make overlay sources accessible outside of ChamplainView and update license actor
Add a function to access the list of overlay sources, emit the "map-source"
signal when overlay sources changed and update the license actor with
all the overlay source licenses.
champlain/champlain-license.c | 19 +++++++++++++++++++
champlain/champlain-view.c | 27 +++++++++++++++++++++++++++
champlain/champlain-view.h | 1 +
docs/reference/libchamplain-sections.txt | 1 +
4 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/champlain/champlain-license.c b/champlain/champlain-license.c
index f29bd04..eb81f03 100644
--- a/champlain/champlain-license.c
+++ b/champlain/champlain-license.c
@@ -128,6 +128,7 @@ redraw_license (ChamplainLicense *license)
gchar *text;
gfloat width, height;
ChamplainMapSource *map_source;
+ GList *overlay_sources, *iter;
if (!priv->view)
return;
@@ -144,6 +145,24 @@ redraw_license (ChamplainLicense *license)
NULL);
else
text = g_strdup (champlain_map_source_get_license (map_source));
+
+ overlay_sources = champlain_view_get_overlay_sources (priv->view);
+ for (iter = overlay_sources; iter; iter = iter->next)
+ {
+ ChamplainMapSource *map_source = iter->data;
+ const gchar *overlay_license = champlain_map_source_get_license (map_source);
+
+ if (g_strrstr (text, overlay_license) == NULL)
+ {
+ gchar *old_text = text;
+ text = g_strjoin ("\n",
+ text,
+ champlain_map_source_get_license (map_source),
+ NULL);
+ g_free (old_text);
+ }
+ }
+ g_list_free (overlay_sources);
clutter_text_set_text (CLUTTER_TEXT (priv->license_actor), text);
clutter_actor_get_size (priv->license_actor, &width, &height);
diff --git a/champlain/champlain-view.c b/champlain/champlain-view.c
index d69fff0..16c64ee 100644
--- a/champlain/champlain-view.c
+++ b/champlain/champlain-view.c
@@ -3078,6 +3078,7 @@ champlain_view_add_overlay_source (ChamplainView *view,
g_object_ref (source);
priv->overlay_sources = g_list_append (priv->overlay_sources, source);
g_object_set_data (G_OBJECT (source), "opacity", GINT_TO_POINTER (opacity));
+ g_object_notify (G_OBJECT (view), "map-source");
champlain_view_reload_tiles (view);
}
@@ -3106,6 +3107,32 @@ champlain_view_remove_overlay_source (ChamplainView *view,
priv = view->priv;
priv->overlay_sources = g_list_remove (priv->overlay_sources, source);
g_object_unref (source);
+ g_object_notify (G_OBJECT (view), "map-source");
champlain_view_reload_tiles (view);
}
+
+
+/**
+ * champlain_view_get_overlay_sources:
+ * @view: a #ChamplainView
+ *
+ * Gets a list of overlay sources.
+ *
+ * Returns: (transfer container) (element-type ChamplainMapSource): the list
+ *
+ * Since: 0.12.5
+ */
+GList *
+champlain_view_get_overlay_sources (ChamplainView *view)
+{
+ DEBUG_LOG ()
+
+ ChamplainViewPrivate *priv;
+
+ g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), NULL);
+
+ priv = view->priv;
+
+ return g_list_copy (priv->overlay_sources);
+}
diff --git a/champlain/champlain-view.h b/champlain/champlain-view.h
index f3b95b9..36ffb35 100644
--- a/champlain/champlain-view.h
+++ b/champlain/champlain-view.h
@@ -112,6 +112,7 @@ void champlain_view_add_overlay_source (ChamplainView *view,
guint8 opacity);
void champlain_view_remove_overlay_source (ChamplainView *view,
ChamplainMapSource *map_source);
+GList *champlain_view_get_overlay_sources (ChamplainView *view);
void champlain_view_set_deceleration (ChamplainView *view,
gdouble rate);
diff --git a/docs/reference/libchamplain-sections.txt b/docs/reference/libchamplain-sections.txt
index 6a91ab2..88a946b 100644
--- a/docs/reference/libchamplain-sections.txt
+++ b/docs/reference/libchamplain-sections.txt
@@ -134,6 +134,7 @@ champlain_view_ensure_layers_visible
champlain_view_set_map_source
champlain_view_add_overlay_source
champlain_view_remove_overlay_source
+champlain_view_get_overlay_sources
champlain_view_set_deceleration
champlain_view_set_kinetic_mode
champlain_view_set_keep_center_on_resize
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]