[gnome-bluetooth/wip/hadess/lib-changes: 8/18] lib: Simplify "setup mode"




commit 99c5fd8d83c1b0a8c3c969c7212e12843321e09b
Author: Bastien Nocera <hadess hadess net>
Date:   Thu Nov 25 18:01:17 2021 +0100

    lib: Simplify "setup mode"
    
    Simplify the discovering/discoverable properties, and especially the
    transition between default adapters by always having the adapters be
    discoverable when discovering, and offer up a single new property as a
    ways of controlling both: "default-adapter-setup-mode"

 lib/bluetooth-client.c          | 70 +++++++++++------------------------------
 lib/bluetooth-enums.h           |  2 --
 lib/bluetooth-settings-widget.c | 21 ++++++-------
 lib/test-client.c               | 10 ++----
 4 files changed, 30 insertions(+), 73 deletions(-)
---
diff --git a/lib/bluetooth-client.c b/lib/bluetooth-client.c
index 751e2e1e..16e190c0 100644
--- a/lib/bluetooth-client.c
+++ b/lib/bluetooth-client.c
@@ -71,9 +71,8 @@ enum {
        PROP_NUM_ADAPTERS,
        PROP_DEFAULT_ADAPTER,
        PROP_DEFAULT_ADAPTER_POWERED,
-       PROP_DEFAULT_ADAPTER_DISCOVERABLE,
-       PROP_DEFAULT_ADAPTER_NAME,
-       PROP_DEFAULT_ADAPTER_DISCOVERING
+       PROP_DEFAULT_ADAPTER_SETUP_MODE,
+       PROP_DEFAULT_ADAPTER_NAME
 };
 
 enum {
@@ -650,8 +649,7 @@ default_adapter_changed (GDBusObjectManager   *manager,
                g_debug ("New default adapter is powered, so invalidating all the default-adapter* 
properties");
                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");
-               g_object_notify (G_OBJECT (client), "default-adapter-discovering");
+               g_object_notify (G_OBJECT (client), "default-adapter-setup-mode");
                g_object_notify (G_OBJECT (client), "default-adapter-name");
                return;
        }
@@ -701,7 +699,7 @@ adapter_notify_cb (Adapter1       *adapter,
                                    BLUETOOTH_COLUMN_DISCOVERING, discovering, -1);
 
                if (is_default)
-                       g_object_notify (G_OBJECT (client), "default-adapter-discovering");
+                       g_object_notify (G_OBJECT (client), "default-adapter-setup-mode");
        } else if (g_strcmp0 (property, "powered") == 0) {
                gboolean powered = adapter1_get_powered (adapter);
 
@@ -711,19 +709,10 @@ adapter_notify_cb (Adapter1       *adapter,
                if (is_default && powered) {
                        g_debug ("Default adapter is powered, so invalidating all the default-adapter* 
properties");
                        g_object_notify (G_OBJECT (client), "default-adapter");
-                       g_object_notify (G_OBJECT (client), "default-adapter-discoverable");
-                       g_object_notify (G_OBJECT (client), "default-adapter-discovering");
+                       g_object_notify (G_OBJECT (client), "default-adapter-setup-mode");
                        g_object_notify (G_OBJECT (client), "default-adapter-name");
                }
                g_object_notify (G_OBJECT (client), "default-adapter-powered");
-       } else if (g_strcmp0 (property, "discoverable") == 0) {
-               gboolean discoverable = adapter1_get_discoverable (adapter);
-
-               gtk_tree_store_set (client->store, &iter,
-                                   BLUETOOTH_COLUMN_DISCOVERABLE, discoverable, -1);
-
-               if (is_default)
-                       g_object_notify (G_OBJECT (client), "default-adapter-discoverable");
        } else {
                notify = FALSE;
        }
@@ -745,7 +734,7 @@ adapter_added (GDBusObjectManager   *manager,
 {
        GtkTreeIter iter;
        const gchar *address, *name, *alias;
-       gboolean discovering, discoverable, powered;
+       gboolean discovering, powered;
 
        g_signal_connect_object (G_OBJECT (adapter), "notify",
                                 G_CALLBACK (adapter_notify_cb), client, 0);
@@ -755,7 +744,6 @@ adapter_added (GDBusObjectManager   *manager,
        alias = adapter1_get_alias (adapter);
        discovering = adapter1_get_discovering (adapter);
        powered = adapter1_get_powered (adapter);
-       discoverable = adapter1_get_discoverable (adapter);
 
        g_debug ("Inserting adapter '%s'", address);
 
@@ -765,7 +753,6 @@ adapter_added (GDBusObjectManager   *manager,
                                          BLUETOOTH_COLUMN_NAME, name,
                                          BLUETOOTH_COLUMN_ALIAS, alias,
                                          BLUETOOTH_COLUMN_DISCOVERING, discovering,
-                                         BLUETOOTH_COLUMN_DISCOVERABLE, discoverable,
                                          BLUETOOTH_COLUMN_POWERED, powered,
                                          -1);
 
@@ -833,8 +820,7 @@ adapter_removed (GDBusObjectManager   *manager,
        } else {
                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");
-               g_object_notify (G_OBJECT (client), "default-adapter-discovering");
+               g_object_notify (G_OBJECT (client), "default-adapter-setup-mode");
        }
 
 out:
@@ -1011,7 +997,6 @@ static void bluetooth_client_init(BluetoothClient *client)
                                         G_TYPE_BOOLEAN,    /* BLUETOOTH_COLUMN_PAIRED */
                                         G_TYPE_BOOLEAN,    /* BLUETOOTH_COLUMN_TRUSTED */
                                         G_TYPE_BOOLEAN,    /* BLUETOOTH_COLUMN_CONNECTED */
-                                        G_TYPE_BOOLEAN,    /* BLUETOOTH_COLUMN_DISCOVERABLE */
                                         G_TYPE_BOOLEAN,    /* BLUETOOTH_COLUMN_DISCOVERING */
                                         G_TYPE_INT,        /* BLUETOOTH_COLUMN_LEGACYPAIRING */
                                         G_TYPE_BOOLEAN,    /* BLUETOOTH_COLUMN_POWERED */
@@ -1101,8 +1086,7 @@ _bluetooth_client_get_default_adapter_name (BluetoothClient *client)
 
 static void
 _bluetooth_client_set_default_adapter_discovering (BluetoothClient *client,
-                                                  gboolean         discovering,
-                                                  gboolean         discoverable)
+                                                  gboolean         discovering)
 {
        g_autoptr(GDBusProxy) adapter = NULL;
        GVariantBuilder builder;
@@ -1114,7 +1098,7 @@ _bluetooth_client_set_default_adapter_discovering (BluetoothClient *client,
        if (discovering) {
                g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
                g_variant_builder_add (&builder, "{sv}",
-                                      "Discoverable", g_variant_new_boolean (discoverable));
+                                      "Discoverable", g_variant_new_boolean (TRUE));
                adapter1_call_set_discovery_filter_sync (ADAPTER1 (adapter),
                                                         g_variant_builder_end (&builder), NULL, NULL);
        }
@@ -1165,10 +1149,7 @@ bluetooth_client_get_property (GObject        *object,
        case PROP_DEFAULT_ADAPTER_NAME:
                g_value_take_string (value, _bluetooth_client_get_default_adapter_name (client));
                break;
-       case PROP_DEFAULT_ADAPTER_DISCOVERABLE:
-               g_value_set_boolean (value, client->disco_during_disco);
-               break;
-       case PROP_DEFAULT_ADAPTER_DISCOVERING:
+       case PROP_DEFAULT_ADAPTER_SETUP_MODE:
                g_value_set_boolean (value, _bluetooth_client_get_default_adapter_discovering (client));
                break;
        default:
@@ -1186,12 +1167,8 @@ bluetooth_client_set_property (GObject        *object,
        BluetoothClient *client = BLUETOOTH_CLIENT (object);
 
        switch (property_id) {
-       case PROP_DEFAULT_ADAPTER_DISCOVERABLE:
-               client->disco_during_disco = g_value_get_boolean (value);
-               _bluetooth_client_set_default_adapter_discovering (client, client->discovery_started, 
client->disco_during_disco);
-               break;
-       case PROP_DEFAULT_ADAPTER_DISCOVERING:
-               _bluetooth_client_set_default_adapter_discovering (client, g_value_get_boolean (value), 
client->disco_during_disco);
+       case PROP_DEFAULT_ADAPTER_SETUP_MODE:
+               _bluetooth_client_set_default_adapter_discovering (client, g_value_get_boolean (value));
                break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
@@ -1287,13 +1264,13 @@ static void bluetooth_client_class_init(BluetoothClientClass *klass)
                                                              "Whether the default adapter is powered",
                                                               FALSE, G_PARAM_READABLE));
        /**
-        * BluetoothClient:default-adapter-discoverable:
+        * BluetoothClient:default-adapter-setup-mode:
         *
-        * %TRUE if the default Bluetooth adapter is discoverable during discovery.
+        * %TRUE if the default Bluetooth adapter is in setup mode (discoverable, and discovering).
         */
-       g_object_class_install_property (object_class, PROP_DEFAULT_ADAPTER_DISCOVERABLE,
-                                        g_param_spec_boolean ("default-adapter-discoverable", NULL,
-                                                             "Whether the default adapter is visible by 
other devices during discovery",
+       g_object_class_install_property (object_class, PROP_DEFAULT_ADAPTER_SETUP_MODE,
+                                        g_param_spec_boolean ("default-adapter-setup-mode", NULL,
+                                                             "Whether the default adapter is visible to 
others and scanning",
                                                               FALSE, G_PARAM_READWRITE));
        /**
         * BluetoothClient:default-adapter-name:
@@ -1304,15 +1281,6 @@ static void bluetooth_client_class_init(BluetoothClientClass *klass)
                                         g_param_spec_string ("default-adapter-name", NULL,
                                                              "The human readable name of the default 
adapter",
                                                              NULL, G_PARAM_READABLE));
-       /**
-        * BluetoothClient:default-adapter-discovering:
-        *
-        * %TRUE if the default Bluetooth adapter is discovering.
-        */
-       g_object_class_install_property (object_class, PROP_DEFAULT_ADAPTER_DISCOVERING,
-                                        g_param_spec_boolean ("default-adapter-discovering", NULL,
-                                                             "Whether the default adapter is searching for 
devices",
-                                                              FALSE, G_PARAM_READWRITE));
 }
 
 /**
@@ -1758,7 +1726,7 @@ bluetooth_client_dump_device (GtkTreeModel *model,
 {
        GDBusProxy *proxy;
        char *address, *alias, *icon, **uuids;
-       gboolean is_default, paired, trusted, connected, discoverable, discovering, powered, is_adapter;
+       gboolean is_default, paired, trusted, connected, discovering, powered, is_adapter;
        GtkTreeIter parent;
        BluetoothType type;
 
@@ -1771,7 +1739,6 @@ bluetooth_client_dump_device (GtkTreeModel *model,
                            BLUETOOTH_COLUMN_PAIRED, &paired,
                            BLUETOOTH_COLUMN_TRUSTED, &trusted,
                            BLUETOOTH_COLUMN_CONNECTED, &connected,
-                           BLUETOOTH_COLUMN_DISCOVERABLE, &discoverable,
                            BLUETOOTH_COLUMN_DISCOVERING, &discovering,
                            BLUETOOTH_COLUMN_POWERED, &powered,
                            BLUETOOTH_COLUMN_UUIDS, &uuids,
@@ -1792,7 +1759,6 @@ bluetooth_client_dump_device (GtkTreeModel *model,
                if (is_default)
                        g_print ("\tDefault adapter\n");
                g_print ("\tD-Bus Path: %s\n", proxy ? g_dbus_proxy_get_object_path (proxy) : "(none)");
-               g_print ("\tDiscoverable: %s\n", BOOL_STR (discoverable));
                if (discovering)
                        g_print ("\tDiscovery in progress\n");
                g_print ("\t%s\n", powered ? "Is powered" : "Is not powered");
diff --git a/lib/bluetooth-enums.h b/lib/bluetooth-enums.h
index 6723c410..e1618ea0 100644
--- a/lib/bluetooth-enums.h
+++ b/lib/bluetooth-enums.h
@@ -112,7 +112,6 @@ typedef enum {
  * @BLUETOOTH_COLUMN_PAIRED: whether the device is paired to its parent adapter. Only available for devices.
  * @BLUETOOTH_COLUMN_TRUSTED: whether the device is trusted. Only available for devices.
  * @BLUETOOTH_COLUMN_CONNECTED: whether the device is connected. Only available for devices.
- * @BLUETOOTH_COLUMN_DISCOVERABLE: whether the adapter is discoverable/visible. Only available for adapters.
  * @BLUETOOTH_COLUMN_DISCOVERING: whether the adapter is discovering. Only available for adapters.
  * @BLUETOOTH_COLUMN_LEGACYPAIRING: whether the device does not support Bluetooth 2.1 Simple Secure Pairing. 
Only available for devices.
  * @BLUETOOTH_COLUMN_POWERED: whether the adapter is powered. Only available for adapters.
@@ -132,7 +131,6 @@ typedef enum {
        BLUETOOTH_COLUMN_PAIRED,
        BLUETOOTH_COLUMN_TRUSTED,
        BLUETOOTH_COLUMN_CONNECTED,
-       BLUETOOTH_COLUMN_DISCOVERABLE,
        BLUETOOTH_COLUMN_DISCOVERING,
        BLUETOOTH_COLUMN_LEGACYPAIRING,
        BLUETOOTH_COLUMN_POWERED,
diff --git a/lib/bluetooth-settings-widget.c b/lib/bluetooth-settings-widget.c
index 238c6090..e964a2f3 100644
--- a/lib/bluetooth-settings-widget.c
+++ b/lib/bluetooth-settings-widget.c
@@ -202,7 +202,7 @@ connect_done (GObject      *source_object,
 
        //FIXME show an error if it failed?
        g_object_set (G_OBJECT (self->client),
-                     "default-adapter-discovering", has_default_adapter (self),
+                     "default-adapter-setup-mode", has_default_adapter (self),
                      NULL);
 
 out:
@@ -889,7 +889,7 @@ connect_callback (GObject      *source_object,
        turn_off_pairing (data->self, data->device);
 
        g_object_set (G_OBJECT (data->self->client),
-                     "default-adapter-discovering", has_default_adapter (data->self),
+                     "default-adapter-setup-mode", has_default_adapter (data->self),
                      NULL);
 
 bail:
@@ -947,7 +947,7 @@ create_callback (GObject      *source_object,
                }
 
                g_object_set (G_OBJECT (self->client),
-                             "default-adapter-discovering", has_default_adapter (self),
+                             "default-adapter-setup-mode", has_default_adapter (self),
                              NULL);
                return;
        }
@@ -1038,7 +1038,7 @@ start_pairing (BluetoothSettingsWidget *self,
                             g_strdup (g_dbus_proxy_get_object_path (proxy)),
                             GINT_TO_POINTER (1));
 
-       g_object_set (G_OBJECT (self->client), "default-adapter-discovering", FALSE, NULL);
+       g_object_set (G_OBJECT (self->client), "default-adapter-setup-mode", FALSE, NULL);
        bluetooth_client_setup_device (self->client,
                                       g_dbus_proxy_get_object_path (proxy),
                                       pair,
@@ -1066,7 +1066,7 @@ switch_connected_state_set (GtkSwitch               *button,
 
        if (gtk_switch_get_active (button))
                g_object_set (G_OBJECT (self->client),
-                             "default-adapter-discovering", FALSE,
+                             "default-adapter-setup-mode", FALSE,
                              NULL);
        bluetooth_client_connect_service (self->client,
                                          self->selected_object_path,
@@ -1391,8 +1391,7 @@ default_adapter_changed (BluetoothClient         *client,
 
        g_debug ("Default adapter changed to: %s", default_adapter ? default_adapter : "(none)");
 
-       g_object_set (G_OBJECT (client), "default-adapter-discovering", default_adapter != NULL, NULL);
-       g_object_set (G_OBJECT (client), "default-adapter-discoverable", default_adapter != NULL, NULL);
+       g_object_set (G_OBJECT (client), "default-adapter-setup-mode", default_adapter != NULL, NULL);
 
        g_signal_emit (G_OBJECT (self), signals[ADAPTER_STATUS_CHANGED], 0);
 }
@@ -1543,7 +1542,7 @@ add_device_section (BluetoothSettingsWidget *self)
 
        /* Discoverable spinner */
        self->device_spinner = spinner = gtk_spinner_new ();
-       g_object_bind_property (G_OBJECT (self->client), "default-adapter-discovering",
+       g_object_bind_property (G_OBJECT (self->client), "default-adapter-setup-mode",
                                G_OBJECT (self->device_spinner), "spinning",
                                G_BINDING_SYNC_CREATE);
        gtk_widget_set_margin_bottom (spinner, 12);
@@ -1979,10 +1978,8 @@ bluetooth_settings_widget_finalize (GObject *object)
 
        /* See default_adapter_changed () */
        /* FIXME: This is blocking */
-       if (self->client) {
-               g_object_set (G_OBJECT (self->client), "default-adapter-discovering", FALSE, NULL);
-               g_object_set (G_OBJECT (self->client), "default-adapter-discoverable", FALSE, NULL);
-       }
+       if (self->client)
+               g_object_set (G_OBJECT (self->client), "default-adapter-setup-mode", FALSE, NULL);
 
        g_cancellable_cancel (self->cancellable);
        g_clear_object (&self->cancellable);
diff --git a/lib/test-client.c b/lib/test-client.c
index 033a54fa..5b15c261 100644
--- a/lib/test-client.c
+++ b/lib/test-client.c
@@ -34,7 +34,7 @@ static GtkTreeSelection *selection;
 
 static void scan_callback(GtkWidget *button, gpointer user_data)
 {
-       g_object_set (G_OBJECT (client), "default-adapter-discovering", TRUE, NULL);
+       g_object_set (G_OBJECT (client), "default-adapter-setup-mode", TRUE, NULL);
 }
 
 static void select_callback(GtkTreeSelection *selection, gpointer user_data)
@@ -209,10 +209,6 @@ static void create_window(void)
                                        "Legacy Pairing", gtk_cell_renderer_text_new(),
                                                legacypairing_to_text, NULL, NULL);
 
-       gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(tree), -1,
-                                       "Discoverable", gtk_cell_renderer_text_new(),
-                                       "text", BLUETOOTH_COLUMN_DISCOVERABLE, NULL);
-
        gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(tree), -1,
                                        "Discovering", gtk_cell_renderer_text_new(),
                                        "text", BLUETOOTH_COLUMN_DISCOVERING, NULL);
@@ -276,7 +272,7 @@ default_adapter_discovering_changed (GObject    *gobject,
 {
        gboolean discovering;
 
-       g_object_get (G_OBJECT (gobject), "default-adapter-discovering", &discovering, NULL);
+       g_object_get (G_OBJECT (gobject), "default-adapter-setup-mode", &discovering, NULL);
        g_message ("Default adapter is %s", discovering ? "discovering" : "not discovering");
 }
 
@@ -296,7 +292,7 @@ int main(int argc, char *argv[])
                          G_CALLBACK (default_adapter_changed), NULL);
        g_signal_connect (G_OBJECT (client), "notify::default-adapter-powered",
                          G_CALLBACK (default_adapter_powered_changed), NULL);
-       g_signal_connect (G_OBJECT (client), "notify::default-adapter-discovering",
+       g_signal_connect (G_OBJECT (client), "notify::default-adapter-setup-mode",
                          G_CALLBACK (default_adapter_discovering_changed), NULL);
 
        default_adapter_changed (G_OBJECT (client), NULL, NULL);


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