diff --git a/src/solid/devices/backends/fakehw/fakebattery.cpp b/src/solid/devices/backends/fakehw/fakebattery.cpp --- a/src/solid/devices/backends/fakehw/fakebattery.cpp +++ b/src/solid/devices/backends/fakehw/fakebattery.cpp @@ -58,6 +58,8 @@ return Solid::Battery::CameraBattery; } else if (name == "gaminginput") { return Solid::Battery::GamingInputBattery; + } else if (name == "bluetooth") { + return Solid::Battery::BluetoothBattery; } else { return Solid::Battery::UnknownBattery; } diff --git a/src/solid/devices/backends/upower/upowerbattery.cpp b/src/solid/devices/backends/upower/upowerbattery.cpp --- a/src/solid/devices/backends/upower/upowerbattery.cpp +++ b/src/solid/devices/backends/upower/upowerbattery.cpp @@ -74,6 +74,14 @@ case UP_DEVICE_KIND_GAMING_INPUT: result = Solid::Battery::GamingInputBattery; break; + case UP_DEVICE_KIND_UNKNOWN: { + // There is currently no "Bluetooth battery" type, so check if it comes from Bluez + if (m_device.data()->prop("NativePath").toString().startsWith(QLatin1String("/org/bluez/"))) { + result = Solid::Battery::BluetoothBattery; + } + break; + } + } return result; } diff --git a/src/solid/devices/backends/upower/upowerdevice.cpp b/src/solid/devices/backends/upower/upowerdevice.cpp --- a/src/solid/devices/backends/upower/upowerdevice.cpp +++ b/src/solid/devices/backends/upower/upowerdevice.cpp @@ -99,6 +99,11 @@ case UP_DEVICE_KIND_GAMING_INPUT: return true; case UP_DEVICE_KIND_UNKNOWN: + // There is currently no "Bluetooth battery" type, so check if it comes from Bluez + if (prop("NativePath").toString().startsWith(QLatin1String("/org/bluez/"))) { + return true; + } + return false; case UP_DEVICE_KIND_LINE_POWER: case UP_DEVICE_KIND_MONITOR: case UP_DEVICE_KIND_MEDIA_PLAYER: diff --git a/src/solid/devices/frontend/battery.h b/src/solid/devices/frontend/battery.h --- a/src/solid/devices/frontend/battery.h +++ b/src/solid/devices/frontend/battery.h @@ -75,12 +75,15 @@ * - PhoneBattery : A battery in a phone * - MonitorBattery : A battery in a monitor * - GamingInputBattery : A battery in a gaming input device (for example a wireless game pad) + * - BluetoothBattery: A generic Bluetooth device battery (if its type isn't known, a Bluetooth + * mouse would normally show up as a MouseBattery), @since 5.54 * - UnknownBattery : A battery in an unknown device */ enum BatteryType { UnknownBattery, PdaBattery, UpsBattery, PrimaryBattery, MouseBattery, KeyboardBattery, KeyboardMouseBattery, CameraBattery, - PhoneBattery, MonitorBattery, GamingInputBattery + PhoneBattery, MonitorBattery, GamingInputBattery, + BluetoothBattery }; Q_ENUM(BatteryType)