gnome-user-share r262 - in trunk: . src
- From: hadess svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-user-share r262 - in trunk: . src
- Date: Mon, 22 Sep 2008 17:45:32 +0000 (UTC)
Author: hadess
Date: Mon Sep 22 17:45:32 2008
New Revision: 262
URL: http://svn.gnome.org/viewvc/gnome-user-share?rev=262&view=rev
Log:
2008-09-22 Bastien Nocera <hadess hadess net>
* src/obexpush.c (device_is_authorised), (cancelled_cb):
Port to the BlueZ 4.x API (Closes: #522404)
Modified:
trunk/ChangeLog
trunk/src/obexpush.c
Modified: trunk/src/obexpush.c
==============================================================================
--- trunk/src/obexpush.c (original)
+++ trunk/src/obexpush.c Mon Sep 22 17:45:32 2008
@@ -184,7 +184,7 @@
DBusGConnection *connection;
DBusGProxy *manager;
GError *error = NULL;
- char **adapters;
+ GPtrArray *adapters;
gboolean retval = FALSE;
guint i;
@@ -193,52 +193,74 @@
return FALSE;
manager = dbus_g_proxy_new_for_name (connection, "org.bluez",
- "/org/bluez", "org.bluez.Manager");
+ "/", "org.bluez.Manager");
if (manager == NULL) {
dbus_g_connection_unref (connection);
return FALSE;
}
- if (dbus_g_proxy_call (manager, "ListAdapters", &error, G_TYPE_INVALID, G_TYPE_STRV, &adapters, G_TYPE_INVALID) == FALSE) {
+ if (dbus_g_proxy_call (manager, "ListAdapters", &error, G_TYPE_INVALID, dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_OBJECT_PATH), &adapters, G_TYPE_INVALID) == FALSE) {
g_object_unref (manager);
dbus_g_connection_unref (connection);
return FALSE;
}
- for (i = 0; adapters[i] != NULL; i++) {
- DBusGProxy *adapter;
- gboolean bonded, trusted;
+ for (i = 0; i < adapters->len; i++) {
+ DBusGProxy *adapter, *device;
+ char *device_path;
+ GHashTable *props;
- g_message ("checking adapter %s", adapters[i]);
+ g_message ("checking adapter %s", g_ptr_array_index (adapters, i));
adapter = dbus_g_proxy_new_for_name (connection, "org.bluez",
- adapters[i], "org.bluez.Adapter");
- if (dbus_g_proxy_call (adapter, "HasBonding", NULL,
- G_TYPE_STRING, bdaddr, G_TYPE_INVALID,
- G_TYPE_BOOLEAN, &bonded, G_TYPE_INVALID) != FALSE) {
+ g_ptr_array_index (adapters, i), "org.bluez.Adapter");
+
+ if (dbus_g_proxy_call (adapter, "FindDevice", NULL,
+ G_TYPE_STRING, bdaddr, G_TYPE_INVALID,
+ DBUS_TYPE_G_OBJECT_PATH, &device_path, G_TYPE_INVALID) == FALSE)
+ {
+ g_object_unref (adapter);
+ continue;
+ }
+
+ device = dbus_g_proxy_new_for_name (connection, "org.bluez", device_path, "org.bluez.Device");
+
+ if (dbus_g_proxy_call (device, "GetProperties", NULL,
+ G_TYPE_INVALID, dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE),
+ &props, G_TYPE_INVALID) != FALSE)
+ {
+ GValue *value;
+ gboolean bonded, trusted;
+
+ value = g_hash_table_lookup (props, "Paired");
+ bonded = g_value_get_boolean (value);
g_message ("%s is %s", bdaddr, bonded ? "bonded" : "not bonded");
- if (bonded != FALSE) {
- retval = TRUE;
+
+ if (bonded) {
+ g_hash_table_destroy (props);
+ g_object_unref (device);
g_object_unref (adapter);
+ retval = TRUE;
break;
}
- }
- if (accept_setting == ACCEPT_BONDED_AND_TRUSTED &&
- dbus_g_proxy_call (adapter, "IsTrusted", NULL,
- G_TYPE_STRING, bdaddr, G_TYPE_INVALID,
- G_TYPE_BOOLEAN, &trusted, G_TYPE_INVALID) != FALSE) {
+ value = g_hash_table_lookup (props, "Trusted");
+ trusted = g_value_get_boolean (value);
g_message ("%s is %s", bdaddr, trusted ? "trusted" : "not trusted");
- if (trusted != FALSE) {
- retval = TRUE;
+
+ if (accept_setting == ACCEPT_BONDED_AND_TRUSTED
+ && trusted) {
+ g_hash_table_destroy (props);
+ g_object_unref (device);
g_object_unref (adapter);
+ retval = TRUE;
break;
}
}
-
g_object_unref(adapter);
}
- g_strfreev(adapters);
+ g_ptr_array_free (adapters, TRUE);
+
g_object_unref(manager);
dbus_g_connection_unref(connection);
@@ -351,7 +373,7 @@
cancelled_cb (DBusGProxy *session,
gpointer user_data)
{
- //FIXME implement properly
+ //FIXME implement properly, we never actually finished the transfer
g_message ("transfered was cancelled by the sender");
transfer_completed_cb (session, user_data);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]