diff options
author | Charles Kerr <charles.kerr@canonical.com> | 2013-08-10 04:26:27 +0000 |
---|---|---|
committer | Tarmac <> | 2013-08-10 04:26:27 +0000 |
commit | f28653eb1a4a310987fffc44334b93da3f547d41 (patch) | |
tree | 82a72bfbb7eeca76766d73ae20f1152c5b8392c3 /src/bluetooth.vala | |
parent | 0391025f72e9e5fed972b40e63087635d50c9234 (diff) | |
parent | a0616908a817d6fad47c29ae703fc8a2ea379af6 (diff) | |
download | ayatana-indicator-bluetooth-f28653eb1a4a310987fffc44334b93da3f547d41.tar.gz ayatana-indicator-bluetooth-f28653eb1a4a310987fffc44334b93da3f547d41.tar.bz2 ayatana-indicator-bluetooth-f28653eb1a4a310987fffc44334b93da3f547d41.zip |
Add phone profile. Export menus & actions using gio. Drops the gtk, dbusmenu, and libindicator build dependencies. Drops runtime dependency on gnome-blueooth in the phone profile.
Approved by Ted Gould, PS Jenkins bot, Mathieu Trudel-Lapierre.
Diffstat (limited to 'src/bluetooth.vala')
-rw-r--r-- | src/bluetooth.vala | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/bluetooth.vala b/src/bluetooth.vala new file mode 100644 index 0000000..98464a4 --- /dev/null +++ b/src/bluetooth.vala @@ -0,0 +1,80 @@ +/* + * Copyright 2013 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Authors: + * Charles Kerr <charles.kerr@canonical.com> + */ + + +/** + * Abstract interface for the Bluetooth backend. + */ +public interface Bluetooth: Object +{ + /* True if there are any bluetooth adapters powered up on the system. + In short, whether or not this system's bluetooth is "on". */ + public abstract bool powered { get; protected set; } + + /* True if our system can be seen by other bluetooth devices */ + public abstract bool discoverable { get; protected set; } + public abstract void try_set_discoverable (bool discoverable); + + /* True if bluetooth's blocked. This can be soft-blocked by software and + * hard-blocked physically, eg by a laptop's network killswitch */ + public abstract bool blocked { get; protected set; } + + /* Try to block/unblock bluetooth. This can fail if it's overridden + by the system, eg by a laptop's network killswitch */ + public abstract void try_set_blocked (bool b); + + /* Get a list of the Device structs that we know about */ + public abstract List<unowned Device> get_devices (); + + /* Emitted when one or more of the devices is added, removed, or changed */ + public signal void devices_changed (); + + /* Try to connect/disconnect a particular device. + The device_key argument comes from the Device struct */ + public abstract void set_device_connected (uint device_key, bool connected); +} + + + +/** + * Base class for Bluetooth objects that use a killswitch to implement + * the 'discoverable' property. + */ +public abstract class KillswitchBluetooth: Object, Bluetooth +{ + private KillSwitch killswitch; + + public KillswitchBluetooth (KillSwitch killswitch) + { + // always sync our 'blocked' property with the one in killswitch + this.killswitch = killswitch; + blocked = killswitch.blocked; + killswitch.notify["blocked"].connect (() => blocked = killswitch.blocked ); + } + + public bool powered { get; protected set; default = false; } + public bool discoverable { get; protected set; default = false; } + public bool blocked { get; protected set; default = true; } + public void try_set_blocked (bool b) { killswitch.try_set_blocked (b); } + + // empty implementations + public abstract void try_set_discoverable (bool b); + public abstract List<unowned Device> get_devices (); + public abstract void set_device_connected (uint device_key, bool connected); +} |