[frogr] Allow configuring the option to send location information.



commit 45737eb32870f2f3af8fb870b72e03fc226c078d
Author: Mario Sanchez Prada <msanchez igalia com>
Date:   Sun Aug 14 20:08:32 2011 +0200

    Allow configuring the option to send location information.
    
    Added needed bits in frogr's configuration system and a new option in
    the settings dialog. Still needing to add code to the details dialog.

 src/frogr-config.c          |   31 +++++++++++++++++++++++++++++++
 src/frogr-config.h          |    4 ++++
 src/frogr-settings-dialog.c |   24 +++++++++++++++++++++---
 3 files changed, 56 insertions(+), 3 deletions(-)
---
diff --git a/src/frogr-config.c b/src/frogr-config.c
index a2f7602..64e661f 100644
--- a/src/frogr-config.c
+++ b/src/frogr-config.c
@@ -52,6 +52,7 @@ struct _FrogrConfigPrivate
   gboolean public;
   gboolean family;
   gboolean friend;
+  gboolean send_geolocation_data;
   gboolean show_in_search;
 
   FspLicense license;
@@ -330,6 +331,12 @@ _load_visibility_xml (FrogrConfig *self,
           priv->friend = !xmlStrcmp (content, (const xmlChar*) "1");
         }
 
+      if (!xmlStrcmp (node->name, (const xmlChar*) "send-geolocation-data"))
+        {
+          content = xmlNodeGetContent (node);
+          priv->send_geolocation_data = !xmlStrcmp (content, (const xmlChar*) "1");
+        }
+
       if (!xmlStrcmp (node->name, (const xmlChar*) "show-in-search"))
         {
           content = xmlNodeGetContent (node);
@@ -633,6 +640,7 @@ _save_settings (FrogrConfig *self)
   _xml_add_bool_child (node, "public", priv->public);
   _xml_add_bool_child (node, "family", priv->family);
   _xml_add_bool_child (node, "friend", priv->friend);
+  _xml_add_bool_child (node, "send-geolocation-data", priv->send_geolocation_data);
   _xml_add_bool_child (node, "show-in-search", priv->show_in_search);
   xmlAddChild (root, node);
 
@@ -899,6 +907,7 @@ frogr_config_init (FrogrConfig *self)
   priv->public = FALSE;
   priv->family = FALSE;
   priv->friend = FALSE;
+  priv->send_geolocation_data = FALSE;
   priv->show_in_search = TRUE;
   priv->license = FSP_LICENSE_NONE;
   priv->safety_level = FSP_SAFETY_LEVEL_SAFE;
@@ -1211,6 +1220,28 @@ frogr_config_get_default_content_type (FrogrConfig *self)
 }
 
 void
+frogr_config_set_default_send_geolocation_data (FrogrConfig *self, gboolean value)
+{
+  FrogrConfigPrivate * priv = NULL;
+
+  g_return_if_fail (FROGR_IS_CONFIG (self));
+
+  priv = FROGR_CONFIG_GET_PRIVATE (self);
+  priv->send_geolocation_data = value;
+}
+
+gboolean
+frogr_config_get_default_send_geolocation_data (FrogrConfig *self)
+{
+  FrogrConfigPrivate *priv = NULL;
+
+  g_return_val_if_fail (FROGR_IS_CONFIG (self), FALSE);
+
+  priv = FROGR_CONFIG_GET_PRIVATE (self);
+  return priv->send_geolocation_data;
+}
+
+void
 frogr_config_set_default_show_in_search (FrogrConfig *self, gboolean value)
 {
   FrogrConfigPrivate * priv = NULL;
diff --git a/src/frogr-config.h b/src/frogr-config.h
index 2b59506..6f806e7 100644
--- a/src/frogr-config.h
+++ b/src/frogr-config.h
@@ -112,6 +112,10 @@ void frogr_config_set_default_show_in_search (FrogrConfig *self, gboolean value)
 
 gboolean frogr_config_get_default_show_in_search (FrogrConfig *self);
 
+void frogr_config_set_default_send_geolocation_data (FrogrConfig *self, gboolean value);
+
+gboolean frogr_config_get_default_send_geolocation_data (FrogrConfig *self);
+
 void frogr_config_set_tags_autocompletion (FrogrConfig *self, gboolean value);
 
 gboolean frogr_config_get_tags_autocompletion (FrogrConfig *self);
diff --git a/src/frogr-settings-dialog.c b/src/frogr-settings-dialog.c
index 176cb5c..e6925d6 100644
--- a/src/frogr-settings-dialog.c
+++ b/src/frogr-settings-dialog.c
@@ -45,6 +45,7 @@ typedef struct _FrogrSettingsDialogPrivate {
   GtkWidget *friend_cb;
   GtkWidget *family_cb;
   GtkWidget *show_in_search_cb;
+  GtkWidget *send_geolocation_data_cb;
   GtkWidget *license_cb;
   GtkWidget *photo_content_rb;
   GtkWidget *sshot_content_rb;
@@ -52,8 +53,6 @@ typedef struct _FrogrSettingsDialogPrivate {
   GtkWidget *safe_rb;
   GtkWidget *moderate_rb;
   GtkWidget *restricted_rb;
-  GtkWidget *disable_tags_autocompletion_cb;
-  GtkWidget *keep_file_extensions_cb;
 
   GtkWidget *use_proxy_cb;
   GtkWidget *proxy_host_label;
@@ -66,10 +65,14 @@ typedef struct _FrogrSettingsDialogPrivate {
   GtkWidget *proxy_password_entry;
   GtkWidget *use_gnome_proxy_cb;
 
+  GtkWidget *disable_tags_autocompletion_cb;
+  GtkWidget *keep_file_extensions_cb;
+
   gboolean public_visibility;
   gboolean family_visibility;
   gboolean friend_visibility;
   gboolean show_in_search;
+  gboolean send_geolocation_data;
   gboolean disable_tags_autocompletion;
   gboolean keep_file_extensions;
   FspLicense license;
@@ -224,6 +227,9 @@ _add_general_page (FrogrSettingsDialog *self, GtkNotebook *notebook)
   gtk_box_pack_start (GTK_BOX (box1), padding_hbox, FALSE, FALSE, 0);
 
   _add_togleabble_item (self, GTK_BOX (box1), NULL, FALSE,
+                        _("Send _location aware information if present"),
+                        &priv->send_geolocation_data_cb);
+  _add_togleabble_item (self, GTK_BOX (box1), NULL, FALSE,
                         _("_Show up in Global Search Results"),
                         &priv->show_in_search_cb);
 
@@ -485,7 +491,7 @@ _add_misc_page (FrogrSettingsDialog *self, GtkNotebook *notebook)
   vbox = gtk_vbox_new (FALSE, 6);
 #endif
 
-  /* Misc */
+  /* Other Stuff */
 
   label = gtk_label_new (NULL);
   gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
@@ -527,6 +533,7 @@ _fill_dialog_with_data (FrogrSettingsDialog *self)
   priv->public_visibility = frogr_config_get_default_public (priv->config);
   priv->family_visibility = frogr_config_get_default_family (priv->config);
   priv->friend_visibility = frogr_config_get_default_friend (priv->config);
+  priv->send_geolocation_data = frogr_config_get_default_send_geolocation_data (priv->config);
   priv->show_in_search = frogr_config_get_default_show_in_search (priv->config);
   priv->license = frogr_config_get_default_license (priv->config);
   priv->content_type = frogr_config_get_default_content_type (priv->config);
@@ -568,6 +575,8 @@ _fill_dialog_with_data (FrogrSettingsDialog *self)
                                 priv->family_visibility);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->friend_cb),
                                 priv->friend_visibility);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->send_geolocation_data_cb),
+                                priv->send_geolocation_data);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->show_in_search_cb),
                                 priv->show_in_search);
 
@@ -629,6 +638,7 @@ _save_data (FrogrSettingsDialog *self)
   frogr_config_set_default_public (priv->config, priv->public_visibility);
   frogr_config_set_default_family (priv->config, priv->family_visibility);
   frogr_config_set_default_friend (priv->config, priv->friend_visibility);
+  frogr_config_set_default_send_geolocation_data (priv->config, priv->send_geolocation_data);
   frogr_config_set_default_show_in_search (priv->config, priv->show_in_search);
 
   frogr_config_set_default_license (priv->config, priv->license);
@@ -733,6 +743,12 @@ _on_button_toggled (GtkToggleButton *button, gpointer data)
       DEBUG ("friend visibility set to %s", active ? "TRUE" : "FALSE");
     }
 
+  if (GTK_WIDGET (button) == priv->send_geolocation_data_cb)
+    {
+      priv->send_geolocation_data = active;
+      DEBUG ("Send geolocation data set to %s", active ? "TRUE" : "FALSE");
+    }
+
   if (GTK_WIDGET (button) == priv->show_in_search_cb)
     {
       priv->show_in_search = active;
@@ -929,6 +945,7 @@ frogr_settings_dialog_init (FrogrSettingsDialog *self)
   priv->private_rb = NULL;
   priv->friend_cb = NULL;
   priv->family_cb = NULL;
+  priv->send_geolocation_data_cb = NULL;
   priv->show_in_search_cb = NULL;
   priv->license_cb = NULL;
   priv->photo_content_rb = NULL;
@@ -952,6 +969,7 @@ frogr_settings_dialog_init (FrogrSettingsDialog *self)
   priv->public_visibility = FALSE;
   priv->family_visibility = FALSE;
   priv->friend_visibility = FALSE;
+  priv->send_geolocation_data = FALSE;
   priv->show_in_search = FALSE;
   priv->license = FSP_LICENSE_NONE;
   priv->safety_level = FSP_SAFETY_LEVEL_NONE;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]