This makes loading faster, with less I/O, avoids unnecessary
code duplication (around 1k lines shaved), and ensures that
all the panels link and work appropriately.
By the same token, it will stop external panels from being
created, and loaded.
https://bugzilla.gnome.org/show_bug.cgi?id=690036
Rather than having an unusable switch (which wouldn't represent
the real state of the connection), show a spinner until the
connection is finished doing.
The only time we were looking at the powered state of the adapter
is when the killswitch state was changing. Except that we're fast enough
that bluetoothd didn't have time to power up the adapter, so its
state was unpowered, which we would set the switch to.
The switch was off, the adapter was on.
We fix that problem by tracking the powered state of the adapter
separately.
https://bugzilla.redhat.com/show_bug.cgi?id=841881
We used to destroy and recreate the custom widgets whenever any of
the properties changed. Now we make sure that the custom widgets are
only destroyed and recreated when the device selected is a different one.
This fixes NetworkManager's Bluetooth plugins getting destroyed
because the Connected property changed, as it was trying to connect to
the device.
https://bugzilla.gnome.org/show_bug.cgi?id=681456