1
from __future__ import print_function
2
from __future__ import division
3
from __future__ import absolute_import
4
from __future__ import unicode_literals
1
6
from blueman.plugins.ManagerPlugin import ManagerPlugin
2
7
from blueman.main.PulseAudioUtils import PulseAudioUtils, EventType
3
8
from blueman.main.SignalTracker import SignalTracker
4
9
from blueman.gui.manager.ManagerDeviceMenu import ManagerDeviceMenu
5
10
from blueman.gui.MessageArea import MessageArea
6
from blueman.Functions import get_icon, create_menuitem
11
from blueman.Functions import get_icon, create_menuitem, dprint
8
13
from gi.repository import Gtk
10
16
class PulseAudioProfile(ManagerPlugin):
11
17
def on_load(self, user_data):
38
44
def get_card_cb(card):
39
if card["driver"] == "module-bluetooth-device.c":
45
drivers = ("module-bluetooth-device.c",
46
"module-bluez4-device.c",
47
"module-bluez5-device.c")
49
if card["driver"] in drivers:
40
50
self.devices[card["proplist"]["device.string"]] = card
41
51
self.regenerate_with_device(card["proplist"]["device.string"])
43
53
if event & EventType.CARD:
45
55
if event & EventType.CHANGE:
47
57
utils.GetCard(idx, get_card_cb)
48
58
elif event & EventType.REMOVE:
52
62
utils.GetCard(idx, get_card_cb)
54
64
def is_connected(self, device):
55
props = device.get_properties()
56
if 'Connected' in props:
57
return props['Connected']
62
s = device.Services["audiosink"]
63
props = s.get_properties()
64
if props["Connected"]:
70
s = device.Services["audiosource"]
71
props = s.get_properties()
72
if props["State"] != "disconnected":
78
s = device.Services["headset"]
79
props = s.get_properties()
80
if props["State"] != "disconnected":
65
for audio_service in [service for service in device.get_services() if service.group == 'audio']:
66
if audio_service.connected:
87
70
def query_pa(self, device):
88
71
def list_cb(cards):
89
for c in cards.itervalues():
72
for c in cards.values():
90
73
if c["proplist"]["device.string"] == device.Address:
91
74
self.devices[device.Address] = c
92
75
self.generate_menu(device)