From a3134be34a8a3d6c0cfe945d658592b36576a2b4 Mon Sep 17 00:00:00 2001 From: darken Date: Wed, 5 Jan 2022 10:18:43 +0100 Subject: [PATCH] Improve notification status text --- .../capod/monitor/ui/MonitorNotifications.kt | 20 +------------------ .../eu/darken/capod/pods/core/PodDevice.kt | 2 ++ .../pods/core/apple/BasicSingleApplePods.kt | 8 ++++++++ .../capod/pods/core/apple/DualApplePods.kt | 17 +++++++++++++--- .../capod/pods/core/apple/SingleApplePods.kt | 8 ++++++++ .../pods/core/apple/UnknownAppleDevice.kt | 4 ++++ app/src/main/res/values/strings.xml | 2 ++ 7 files changed, 39 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotifications.kt b/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotifications.kt index 9726594d..2855eaa1 100644 --- a/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotifications.kt +++ b/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotifications.kt @@ -20,10 +20,6 @@ import eu.darken.capod.common.hasApiLevel import eu.darken.capod.common.notifications.PendingIntentCompat import eu.darken.capod.main.ui.MainActivity import eu.darken.capod.pods.core.PodDevice -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.getBatteryLevelCase -import eu.darken.capod.pods.core.getBatteryLevelLeftPod -import eu.darken.capod.pods.core.getBatteryLevelRightPod import javax.inject.Inject @@ -66,21 +62,7 @@ class MonitorNotifications @Inject constructor( } builder.setSmallIcon(device.iconRes) - - val infoText = when (device) { - is DualApplePods -> { - val sb = StringBuilder() - sb.append("L: ${device.getBatteryLevelLeftPod(context)}") - sb.append(" | ") - sb.append("C: ${device.getBatteryLevelCase(context)}") - sb.append(" | ") - sb.append("R: ${device.getBatteryLevelRightPod(context)}") - } - else -> { - "Unknown device" - } - } - builder.setContentTitle(infoText) + builder.setContentTitle(device.getShortStatus(context)) log(TAG, VERBOSE) { "updatingNotification(): $device" } return builder } diff --git a/app/src/main/java/eu/darken/capod/pods/core/PodDevice.kt b/app/src/main/java/eu/darken/capod/pods/core/PodDevice.kt index d00118ee..8fc718b1 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/PodDevice.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/PodDevice.kt @@ -31,6 +31,8 @@ interface PodDevice { fun getLabel(context: Context): String + fun getShortStatus(context: Context): String + @get:DrawableRes val iconRes: Int get() = R.drawable.ic_device_generic_earbuds diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/BasicSingleApplePods.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/BasicSingleApplePods.kt index a4dd3a5e..0e47b827 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/BasicSingleApplePods.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/BasicSingleApplePods.kt @@ -1,11 +1,19 @@ package eu.darken.capod.pods.core.apple +import android.content.Context +import eu.darken.capod.R import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.lowerNibble import eu.darken.capod.pods.core.HasSinglePod +import eu.darken.capod.pods.core.getBatteryLevelHeadset interface BasicSingleApplePods : ApplePods, HasSinglePod { + override fun getShortStatus(context: Context): String = context.getString( + R.string.pods_single_basic_status_short, + getBatteryLevelHeadset(context), + ) + override val batteryHeadsetPercent: Float? get() = when (val value = rawPodsBattery.lowerNibble.toInt()) { 15 -> null diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/DualApplePods.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/DualApplePods.kt index 77b3d674..471b631c 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/DualApplePods.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/DualApplePods.kt @@ -7,13 +7,24 @@ import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.isBitSet import eu.darken.capod.common.lowerNibble import eu.darken.capod.common.upperNibble -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasDualPods +import eu.darken.capod.pods.core.* import eu.darken.capod.pods.core.HasDualPods.Pod -import eu.darken.capod.pods.core.HasEarDetection interface DualApplePods : ApplePods, HasDualPods, HasEarDetection, HasCase { + override fun getShortStatus(context: Context): String = context.getString( + R.string.pods_dual_case_status_short, + getBatteryLevelLeftPod(context).let { + if (isLeftPodCharging) "$it*" else it + }, + getBatteryLevelCase(context).let { + if (isCaseCharging) "$it*" else it + }, + getBatteryLevelRightPod(context).let { + if (isRightPodCharging) "$it*" else it + }, + ) + val microPhonePod: Pod get() = when (rawStatus.isBitSet(5)) { true -> Pod.LEFT diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt index 7ddb43bf..d1071c62 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt @@ -1,12 +1,20 @@ package eu.darken.capod.pods.core.apple +import android.content.Context +import eu.darken.capod.R import eu.darken.capod.common.isBitSet import eu.darken.capod.common.upperNibble import eu.darken.capod.pods.core.HasEarDetection import eu.darken.capod.pods.core.HasSinglePod +import eu.darken.capod.pods.core.getBatteryLevelHeadset interface SingleApplePods : BasicSingleApplePods, HasEarDetection, HasSinglePod { + override fun getShortStatus(context: Context): String = context.getString( + R.string.pods_single_basic_status_short, + getBatteryLevelHeadset(context), + ) + val isHeadphonesBeingWorn: Boolean get() = rawStatus.isBitSet(1) diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/UnknownAppleDevice.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/UnknownAppleDevice.kt index 28f4feea..24b735d8 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/UnknownAppleDevice.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/UnknownAppleDevice.kt @@ -17,4 +17,8 @@ data class UnknownAppleDevice constructor( override fun getLabel(context: Context): String { return context.getString(R.string.device_unknown_label) } + + override fun getShortStatus(context: Context): String { + return context.getString(R.string.device_unknown_label) + } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0840d4d0..8d089751 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -99,4 +99,6 @@ Show other people\'s devices that are near you. Auto play Start music playback music when wearing the device (if supported). + L %1$s | C %2$s | R %3$s + Headphones: %1$s \ No newline at end of file