diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cf5d12..94da29d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ * renamed TauRing to OpenRing * added support for OpenRing temperature sensors (`temp0`, `temp1`, `temp2`) as one 3-channel `Temperature` sensor (`°C`) with software-only on/off control +* Added support for device images with stereo support to display an image for a group of devices ## 2.3.2 diff --git a/assets/wearable_icons/open_earable_v2/left.png b/assets/wearable_icons/open_earable_v2/left.png new file mode 100644 index 0000000..865d882 Binary files /dev/null and b/assets/wearable_icons/open_earable_v2/left.png differ diff --git a/assets/wearable_icons/open_earable_v2/pair.png b/assets/wearable_icons/open_earable_v2/pair.png new file mode 100644 index 0000000..cd34dc9 Binary files /dev/null and b/assets/wearable_icons/open_earable_v2/pair.png differ diff --git a/assets/wearable_icons/open_earable_v2/right.png b/assets/wearable_icons/open_earable_v2/right.png new file mode 100644 index 0000000..5f8382f Binary files /dev/null and b/assets/wearable_icons/open_earable_v2/right.png differ diff --git a/lib/src/models/devices/cosinuss_one.dart b/lib/src/models/devices/cosinuss_one.dart index 310d4d5..7c51158 100644 --- a/lib/src/models/devices/cosinuss_one.dart +++ b/lib/src/models/devices/cosinuss_one.dart @@ -90,7 +90,10 @@ class CosinussOne extends Wearable } @override - String? getWearableIconPath({bool darkmode = false}) { + String? getWearableIconPath({ + bool darkmode = false, + WearableIconVariant variant = WearableIconVariant.single, + }) { String basePath = 'packages/open_earable_flutter/assets/wearable_icons/cosinuss_one'; diff --git a/lib/src/models/devices/open_earable_v1.dart b/lib/src/models/devices/open_earable_v1.dart index 29c27b6..26cf406 100644 --- a/lib/src/models/devices/open_earable_v1.dart +++ b/lib/src/models/devices/open_earable_v1.dart @@ -170,7 +170,10 @@ class OpenEarableV1 extends Wearable } @override - String? getWearableIconPath({bool darkmode = false}) { + String? getWearableIconPath({ + bool darkmode = false, + WearableIconVariant variant = WearableIconVariant.single, + }) { String basePath = 'packages/open_earable_flutter/assets/wearable_icons/open_earable_v1'; diff --git a/lib/src/models/devices/open_earable_v2.dart b/lib/src/models/devices/open_earable_v2.dart index a7b58a7..e2b617d 100644 --- a/lib/src/models/devices/open_earable_v2.dart +++ b/lib/src/models/devices/open_earable_v2.dart @@ -285,10 +285,26 @@ class OpenEarableV2 extends BluetoothWearable String get deviceId => discoveredDevice.id; @override - String? getWearableIconPath({bool darkmode = false}) { + String? getWearableIconPath({ + bool darkmode = false, + WearableIconVariant variant = WearableIconVariant.single, + }) { String basePath = 'packages/open_earable_flutter/assets/wearable_icons/open_earable_v2'; + if (!darkmode) { + switch (variant) { + case WearableIconVariant.left: + return '$basePath/left.png'; + case WearableIconVariant.right: + return '$basePath/right.png'; + case WearableIconVariant.pair: + return '$basePath/pair.png'; + case WearableIconVariant.single: + break; + } + } + if (darkmode) { return '$basePath/icon_no_text_white.svg'; } diff --git a/lib/src/models/devices/open_ring.dart b/lib/src/models/devices/open_ring.dart index be97c3a..cf5d99e 100644 --- a/lib/src/models/devices/open_ring.dart +++ b/lib/src/models/devices/open_ring.dart @@ -54,6 +54,7 @@ class OpenRing extends Wearable @override String? getWearableIconPath({ bool darkmode = false, + WearableIconVariant variant = WearableIconVariant.single, }) { return 'packages/open_earable_flutter/assets/wearable_icons/open_ring/openring.png'; } diff --git a/lib/src/models/devices/polar.dart b/lib/src/models/devices/polar.dart index 16a2e3d..e9321bd 100644 --- a/lib/src/models/devices/polar.dart +++ b/lib/src/models/devices/polar.dart @@ -29,7 +29,10 @@ class Polar extends Wearable _discoveredDevice = discoveredDevice; @override - String? getWearableIconPath({bool darkmode = false}) { + String? getWearableIconPath({ + bool darkmode = false, + WearableIconVariant variant = WearableIconVariant.single, + }) { String basePath = 'packages/open_earable_flutter/assets/wearable_icons/polar'; diff --git a/lib/src/models/devices/wearable.dart b/lib/src/models/devices/wearable.dart index bb87f9f..fdc2ac9 100644 --- a/lib/src/models/devices/wearable.dart +++ b/lib/src/models/devices/wearable.dart @@ -3,6 +3,13 @@ import 'dart:ui'; import '../../managers/wearable_disconnect_notifier.dart'; +enum WearableIconVariant { + single, + left, + right, + pair, +} + abstract class Wearable { final String name; @@ -85,7 +92,11 @@ abstract class Wearable { /// The parameters are best-effort /// /// @param darkmode: Whether the icon should be for dark mode (if available). - String? getWearableIconPath({bool darkmode = false}) { + /// @param variant: Which icon variant should be used. + String? getWearableIconPath({ + bool darkmode = false, + WearableIconVariant variant = WearableIconVariant.single, + }) { return null; } diff --git a/pubspec.yaml b/pubspec.yaml index 52cf739..00f7d63 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: open_earable_flutter description: This package provides functionality for interacting with OpenEarable devices. Control LED colors, control audio, and access raw sensor data. -version: 2.3.2 +version: 2.3.3 repository: https://github.com/OpenEarable/open_earable_flutter/tree/main platforms: