Add blur and start-gps options in control panel
authorAlban Crequy <alban.crequy@collabora.co.uk>
Mon, 3 May 2010 16:33:32 +0000 (17:33 +0100)
committerAlban Crequy <alban.crequy@collabora.co.uk>
Mon, 3 May 2010 17:11:07 +0000 (18:11 +0100)
src/azimuth-gconf.h
src/controlpanel-applet.c

index e1803ac..da3533c 100644 (file)
@@ -25,7 +25,9 @@ G_BEGIN_DECLS
 
 #define AZIMUTH_GCONF_SECTION "/apps/azimuth"
 
-#define AZIMUTH_GCONF_KEY_ENABLED AZIMUTH_GCONF_SECTION "/enabled"
+#define AZIMUTH_GCONF_KEY_ENABLED   AZIMUTH_GCONF_SECTION "/enabled"
+#define AZIMUTH_GCONF_KEY_BLUR      AZIMUTH_GCONF_SECTION "/blur"
+#define AZIMUTH_GCONF_KEY_START_GPS AZIMUTH_GCONF_SECTION "/start-gps"
 
 G_END_DECLS
 
index b1dd30d..c878250 100644 (file)
@@ -27,6 +27,8 @@
 #include "azimuth-gconf.h"
 
 static GtkWidget* button_enabled = NULL;
+static GtkWidget* button_blur = NULL;
+static GtkWidget* button_start_gps = NULL;
 static GConfClient *gconf_client;
 
 static void
@@ -36,11 +38,35 @@ enabled_toggled (HildonCheckButton *button, gpointer user_data)
 
   active = hildon_check_button_get_active (button);
   if (active)
-    /* TODO: unblur other widgets */
-    g_debug ("Publishing position is enabled");
+    {
+      gtk_widget_set_sensitive (button_blur, TRUE);
+      gtk_widget_set_sensitive (button_start_gps, TRUE);
+    }
   else
-    /* TODO: blur other widgets */
-    g_debug ("Publishing position is disabled");
+    {
+      gtk_widget_set_sensitive (button_blur, FALSE);
+      gtk_widget_set_sensitive (button_start_gps, FALSE);
+    }
+}
+
+static GtkWidget*
+azimuth_create_check_button (const gchar *text,
+                             GCallback cb,
+                             const gchar *gconf_key)
+{
+  GtkWidget *b;
+  gboolean checked;
+
+  b = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT |
+      HILDON_SIZE_AUTO_WIDTH);
+  gtk_button_set_label (GTK_BUTTON (b), text);
+  if (cb != NULL)
+    g_signal_connect (b, "toggled", cb, NULL);
+  checked = gconf_client_get_bool (gconf_client, gconf_key,
+      NULL);
+  hildon_check_button_set_active (HILDON_CHECK_BUTTON (b), checked);
+
+  return b;
 }
 
 static GtkWidget*
@@ -48,7 +74,6 @@ create_main_dialog (gpointer window, osso_context_t *osso)
 {
   GtkWidget *dialog;
   GtkWidget *bSave;
-  gboolean enabled;
 
   dialog = g_object_new (GTK_TYPE_DIALOG,
       "transient-for", GTK_WINDOW (window),
@@ -64,19 +89,22 @@ create_main_dialog (gpointer window, osso_context_t *osso)
       dgettext ("hildon-libs", "wdgt_bd_save"),
       GTK_RESPONSE_OK);
 
-  button_enabled = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT |
-      HILDON_SIZE_AUTO_WIDTH);
-  gtk_button_set_label (GTK_BUTTON (button_enabled),
-      "Publish position when GPS is running");
-  g_signal_connect (button_enabled, "toggled", G_CALLBACK (enabled_toggled),
-      NULL);
-  enabled = gconf_client_get_bool (gconf_client, AZIMUTH_GCONF_KEY_ENABLED,
-      NULL);
-  hildon_check_button_set_active (HILDON_CHECK_BUTTON (button_enabled),
-      enabled);
+  button_blur = azimuth_create_check_button (
+      "Truncate your position", NULL, AZIMUTH_GCONF_KEY_BLUR);
+  button_start_gps = azimuth_create_check_button (
+      "Start GPS (drain battery)", NULL, AZIMUTH_GCONF_KEY_START_GPS);
 
-  gtk_box_pack_end (GTK_BOX (GTK_DIALOG(dialog)->vbox), button_enabled, FALSE,
-      FALSE, 0);
+  button_enabled = azimuth_create_check_button (
+      "Publish position when GPS is running", G_CALLBACK (enabled_toggled),
+      AZIMUTH_GCONF_KEY_ENABLED);
+  enabled_toggled (HILDON_CHECK_BUTTON (button_enabled), NULL);
+
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox), button_enabled,
+      FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox), button_blur,
+      FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox), button_start_gps,
+      FALSE, FALSE, 0);
 
   gtk_widget_show_all (dialog);
 
@@ -87,11 +115,22 @@ static void
 save (void)
 {
   gboolean enabled;
+  gboolean blur;
+  gboolean start_gps;
 
   enabled = hildon_check_button_get_active (HILDON_CHECK_BUTTON (
         button_enabled));
+  blur = hildon_check_button_get_active (HILDON_CHECK_BUTTON (
+        button_blur));
+  start_gps = hildon_check_button_get_active (HILDON_CHECK_BUTTON (
+        button_start_gps));
+
   gconf_client_set_bool (gconf_client, AZIMUTH_GCONF_KEY_ENABLED, enabled,
       NULL);
+  gconf_client_set_bool (gconf_client, AZIMUTH_GCONF_KEY_BLUR, blur,
+      NULL);
+  gconf_client_set_bool (gconf_client, AZIMUTH_GCONF_KEY_START_GPS, start_gps,
+      NULL);
 }
 
 osso_return_t