diff options
author | Bastien Nocera <hadess@hadess.net> | 2009-11-23 16:25:13 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2009-11-23 16:34:27 +0000 |
commit | 19e2831804b96d6c31a33c9e2d3ac010f035d4d4 (patch) | |
tree | e14f2909ec699e7b8dad36ae88716a652b0dc3be /lib | |
parent | a7c65c64d0f33b6182c3dc4a3bc5ade9e503a1ec (diff) | |
download | gnome-bluetooth-19e2831804b96d6c31a33c9e2d3ac010f035d4d4.tar.gz |
Make the selected device a settable property in the chooser
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bluetooth-chooser.c | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/lib/bluetooth-chooser.c b/lib/bluetooth-chooser.c index 644f10cb..4903db0c 100644 --- a/lib/bluetooth-chooser.c +++ b/lib/bluetooth-chooser.c @@ -942,9 +942,45 @@ static void bluetooth_chooser_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { - BluetoothChooserPrivate *priv = BLUETOOTH_CHOOSER_GET_PRIVATE(object); + BluetoothChooser *self = BLUETOOTH_CHOOSER (object); + BluetoothChooserPrivate *priv = BLUETOOTH_CHOOSER_GET_PRIVATE (object); switch (prop_id) { + case PROP_DEVICE_SELECTED: { + const char *address; + char *selected; + GtkTreeIter iter; + gboolean cont; + + address = g_value_get_string (value); + if (address == NULL) { + gtk_tree_selection_unselect_all (priv->selection); + return; + } + + selected = bluetooth_chooser_get_selected_device (self); + if (g_strcmp0 (selected, address) == 0) { + g_free (selected); + return; + } + g_free (selected); + + cont = gtk_tree_model_get_iter_first (priv->filter, &iter); + while (cont == TRUE) { + char *iaddress; + gtk_tree_model_get (priv->filter, &iter, + BLUETOOTH_COLUMN_ADDRESS, &iaddress, -1); + if (g_strcmp0 (iaddress, address) == 0) { + gtk_tree_selection_select_iter (priv->selection, &iter); + g_free (iaddress); + return; + } + g_free (iaddress); + + cont = gtk_tree_model_iter_next (priv->filter, &iter); + } + break; + } case PROP_TITLE: bluetooth_chooser_set_title (BLUETOOTH_CHOOSER (object), g_value_get_string (value)); break; @@ -1088,7 +1124,7 @@ bluetooth_chooser_class_init (BluetoothChooserClass *klass) "title", "The widget header title", NULL, G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS(klass), PROP_DEVICE_SELECTED, g_param_spec_string ("device-selected", - "device-selected", "the Bluetooth address for the currently selected device, or %NULL", NULL, G_PARAM_READABLE)); + "device-selected", "the Bluetooth address for the currently selected device, or %NULL", NULL, G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS(klass), PROP_SHOW_PAIRING, g_param_spec_boolean ("show-pairing", "show-pairing", "Whether to show the pairing column in the tree.", FALSE, G_PARAM_READWRITE)); |