gnome-bluetooth r382 - trunk/common



Author: hadess
Date: Fri Feb 27 00:04:31 2009
New Revision: 382
URL: http://svn.gnome.org/viewvc/gnome-bluetooth?rev=382&view=rev

Log:
Use the new powered property

is-available is FALSE when the default adapter isn't powered.
And make the property actually work, not just the function.

Modified:
   trunk/common/bluetooth-chooser-button.c

Modified: trunk/common/bluetooth-chooser-button.c
==============================================================================
--- trunk/common/bluetooth-chooser-button.c	(original)
+++ trunk/common/bluetooth-chooser-button.c	Fri Feb 27 00:04:31 2009
@@ -38,7 +38,8 @@
 	GtkWidget         *dialog;
 	GtkWidget         *chooser;
 	char              *bdaddr;
-	gboolean           is_available;
+	guint              is_available : 1;
+	guint              has_selection : 1;
 };
 
 enum {
@@ -142,11 +143,13 @@
 	g_free (found_icon);
 }
 
-static void select_device_changed(BluetoothChooser *self, gchar *address, gpointer user_data)
+static void select_device_changed(BluetoothChooser *self, gchar *address, gpointer data)
 {
-	GtkDialog *dialog = user_data;
+	BluetoothChooserButton *button = BLUETOOTH_CHOOSER_BUTTON (data);
 
-	gtk_dialog_set_response_sensitive(dialog, GTK_RESPONSE_ACCEPT, address != NULL);
+	button->has_selection = (address != NULL);
+	gtk_dialog_set_response_sensitive(GTK_DIALOG (button->dialog), GTK_RESPONSE_ACCEPT,
+					  button->has_selection && button->is_available);
 }
 
 static void
@@ -204,7 +207,7 @@
 	/* Create the button->chooser */
 	button->chooser = bluetooth_chooser_new (NULL);
 	g_signal_connect(button->chooser, "selected-device-changed",
-			 G_CALLBACK(select_device_changed), button->dialog);
+			 G_CALLBACK(select_device_changed), button);
 	g_signal_emit (G_OBJECT (button),
 		       signals[CHOOSER_CREATED],
 		       0, button->chooser);
@@ -220,13 +223,24 @@
 {
 	BluetoothChooserButton *button = BLUETOOTH_CHOOSER_BUTTON (data);
 	char *adapter;
+	gboolean powered;
 
-	g_object_get (G_OBJECT (button->client), "default-adapter", &adapter, NULL);
-	button->is_available = (adapter != NULL);
-	g_free (adapter);
+	g_object_get (G_OBJECT (button->client),
+		      "default-adapter", &adapter,
+		      "default-adapter-powered", &powered,
+		      NULL);
+	if (adapter != NULL)
+		button->is_available = powered;
+	else
+		button->is_available = FALSE;
 
-	if (button->is_available != FALSE)
+	if (adapter != NULL)
 		set_btdevname (button, button->bdaddr, NULL, NULL);
+	g_free (adapter);
+
+	if (button->dialog != NULL)
+		gtk_dialog_set_response_sensitive (GTK_DIALOG (button->dialog), GTK_RESPONSE_ACCEPT,
+						   button->has_selection && button->is_available);
 
 	g_object_notify (G_OBJECT (button), "is-available");
 }
@@ -279,6 +293,9 @@
 	case PROP_DEVICE:
 		g_value_set_string (value, button->bdaddr);
 		break;
+	case PROP_IS_AVAILABLE:
+		g_value_set_boolean (value, button->is_available);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 	}
@@ -352,6 +369,8 @@
 	button->client = bluetooth_client_new ();
 	g_signal_connect (G_OBJECT (button->client), "notify::default-adapter",
 			  G_CALLBACK (default_adapter_changed), button);
+	g_signal_connect (G_OBJECT (button->client), "notify::default-adapter-powered",
+			  G_CALLBACK (default_adapter_changed), button);
 
 	/* And set the default value already */
 	default_adapter_changed (NULL, NULL, button);



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