connect method

Future<void> connect()

Connects to the UPower daemon.

Implementation

Future<void> connect() async {
  // Already connected
  if (_propertiesChangedSubscription != null) {
    return;
  }

  _propertiesChangedSubscription = _root.propertiesChanged.listen((signal) {
    if (signal.propertiesInterface == 'org.freedesktop.UPower') {
      _updateProperties(signal.changedProperties);
    }
  });
  _updateProperties(await _root.getAllProperties('org.freedesktop.UPower'));

  var deviceAdded = DBusRemoteObjectSignalStream(
      object: _root,
      interface: 'org.freedesktop.UPower',
      name: 'DeviceAdded');
  _deviceAddedSubscription = deviceAdded
      .listen((signal) => _deviceAdded((signal.values[0] as DBusObjectPath)));
  var deviceRemoved = DBusRemoteObjectSignalStream(
      object: _root,
      interface: 'org.freedesktop.UPower',
      name: 'DeviceRemoved');
  _deviceRemovedSubscription = deviceRemoved.listen(
      (signal) => _deviceRemoved((signal.values[0] as DBusObjectPath)));

  var devicePaths = await _enumerateDevices();
  for (var path in devicePaths) {
    await _deviceAdded(path);
  }

  await _displayDevice._connect();
}