[gnome-bluetooth/meego-dev: 10/15] Add a default-adaptor-discoverable property



commit a43bccd1037bda1f9495bcee30227c121f7e171d
Author: Ross Burton <ross linux intel com>
Date:   Thu Feb 25 13:30:07 2010 +0000

    Add a default-adaptor-discoverable property

 lib/bluetooth-client.c |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)
---
diff --git a/lib/bluetooth-client.c b/lib/bluetooth-client.c
index 725b4d5..6eb8de4 100644
--- a/lib/bluetooth-client.c
+++ b/lib/bluetooth-client.c
@@ -102,12 +102,14 @@ struct _BluetoothClientPrivate {
 	GtkTreeStore *store;
 	char *default_adapter;
 	gboolean default_adapter_powered;
+	gboolean default_adapter_discoverable;
 };
 
 enum {
 	PROP_0,
 	PROP_DEFAULT_ADAPTER,
 	PROP_DEFAULT_ADAPTER_POWERED,
+        PROP_DEFAULT_ADAPTER_DISCOVERABLE
 };
 
 G_DEFINE_TYPE(BluetoothClient, bluetooth_client, G_TYPE_OBJECT)
@@ -911,10 +913,18 @@ static void adapter_changed(DBusGProxy *adapter, const char *property,
 		}
 	} else if (g_str_equal(property, "Discoverable") == TRUE) {
 		gboolean discoverable = g_value_get_boolean(value);
+                gboolean is_default;
 
 		gtk_tree_store_set(priv->store, &iter,
 				BLUETOOTH_COLUMN_DISCOVERABLE, discoverable, -1);
 		notify = TRUE;
+
+		gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter,
+				   BLUETOOTH_COLUMN_DEFAULT, &is_default, -1);
+		if (is_default != FALSE && discoverable != priv->default_adapter_discoverable) {
+			priv->default_adapter_discoverable = discoverable;
+			g_object_notify (G_OBJECT (client), "default-adapter-discoverable");
+		}
 	}
 
 	if (notify != FALSE) {
@@ -1066,8 +1076,10 @@ static void adapter_removed(DBusGProxy *manager,
 		g_free(priv->default_adapter);
 		priv->default_adapter = NULL;
 		priv->default_adapter_powered = FALSE;
+		priv->default_adapter_discoverable = FALSE;
 		g_object_notify (G_OBJECT (client), "default-adapter");
 		g_object_notify (G_OBJECT (client), "default-adapter-powered");
+		g_object_notify (G_OBJECT (client), "default-adapter-discoverable");
 	}
 }
 
@@ -1087,11 +1099,13 @@ static void default_adapter_changed(DBusGProxy *manager,
 	while (cont == TRUE) {
 		DBusGProxy *adapter;
 		const char *adapter_path;
-		gboolean found, powered;
+		gboolean found, powered, discoverable;
 
 		gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter,
 				   BLUETOOTH_COLUMN_PROXY, &adapter,
-				   BLUETOOTH_COLUMN_POWERED, &powered, -1);
+				   BLUETOOTH_COLUMN_POWERED, &powered,
+				   BLUETOOTH_COLUMN_DISCOVERABLE, &discoverable,
+				   -1);
 
 		adapter_path = dbus_g_proxy_get_path(adapter);
 
@@ -1099,8 +1113,10 @@ static void default_adapter_changed(DBusGProxy *manager,
 
 		g_object_unref(adapter);
 
-		if (found != FALSE)
+		if (found != FALSE) {
 			priv->default_adapter_powered = powered;
+			priv->default_adapter_discoverable = discoverable;
+		}
 
 		gtk_tree_store_set(priv->store, &iter,
 					BLUETOOTH_COLUMN_DEFAULT, found, -1);
@@ -1114,6 +1130,7 @@ static void default_adapter_changed(DBusGProxy *manager,
 	priv->default_adapter = g_strdup(path);
 	g_object_notify (G_OBJECT (client), "default-adapter");
 	g_object_notify (G_OBJECT (client), "default-adapter-powered");
+	g_object_notify (G_OBJECT (client), "default-adapter-discoverable");
 }
 
 static void name_owner_changed(DBusGProxy *dbus, const char *name,
@@ -1211,6 +1228,9 @@ bluetooth_client_get_property (GObject        *object,
 	case PROP_DEFAULT_ADAPTER_POWERED:
 		g_value_set_boolean (value, priv->default_adapter_powered);
 		break;
+        case PROP_DEFAULT_ADAPTER_DISCOVERABLE:
+		g_value_set_boolean (value, priv->default_adapter_discoverable);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
 		break;
@@ -1292,6 +1312,9 @@ static void bluetooth_client_class_init(BluetoothClientClass *klass)
 	g_object_class_install_property (object_class, PROP_DEFAULT_ADAPTER_POWERED,
 					 g_param_spec_boolean ("default-adapter-powered", NULL, NULL,
 					 		       FALSE, G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_DEFAULT_ADAPTER_DISCOVERABLE,
+					 g_param_spec_boolean ("default-adapter-discoverable", NULL, NULL,
+							      FALSE, G_PARAM_READABLE));
 
 	dbus_g_object_register_marshaller(marshal_VOID__STRING_BOXED,
 						G_TYPE_NONE, G_TYPE_STRING,



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