diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/DualApplePodsCardVH.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/DualApplePodsCardVH.kt index ce0d790f..47682b37 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/DualApplePodsCardVH.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/DualApplePodsCardVH.kt @@ -2,6 +2,7 @@ package eu.darken.capod.main.ui.overview.cards.pods import android.graphics.Typeface import android.view.ViewGroup +import androidx.core.view.isInvisible import eu.darken.capod.R import eu.darken.capod.common.lists.binding import eu.darken.capod.databinding.OverviewPodsAppleDualItemBinding @@ -40,45 +41,49 @@ class DualApplePodsCardVH(parent: ViewGroup) : reception.append("\n(${getString(R.string.pods_yours)})") } - podLeft.apply { - val sb = StringBuilder(context.getString(R.string.pods_dual_left_label)) - sb.append("\n").append(device.getBatteryLevelLeftPod(context)) - when { - device.isLeftPodCharging -> sb.append("\n").append(getString(R.string.pods_charging_label)) - device.isLeftPodInEar -> sb.append("\n").append(getString(R.string.pods_inear_label)) - else -> {} - } - text = sb + // Left Pod + device.apply { + podLeftBatteryIcon.setImageResource(getBatteryDrawable(batteryLeftPodPercent)) + podLeftBatteryLabel.text = getBatteryLevelLeftPod(context) + + podLeftChargingIcon.isInvisible = !isLeftPodCharging + podLeftChargingLabel.isInvisible = !isLeftPodCharging + + podLeftMicrophoneIcon.isInvisible = microPhonePod != Pod.LEFT + podLeftMicrophoneLabel.isInvisible = microPhonePod != Pod.LEFT + + podLeftWearIcon.isInvisible = !isLeftPodInEar + podLeftWearLabel.isInvisible = !isLeftPodInEar } - podRight.apply { - val sb = StringBuilder(getString(R.string.pods_dual_right_label)) - sb.append("\n").append(device.getBatteryLevelRightPod(context)) - when { - device.isRightPodCharging -> sb.append("\n").append(getString(R.string.pods_charging_label)) - device.isRightPodInEar -> sb.append("\n").append(getString(R.string.pods_inear_label)) - else -> {} - } - text = sb + // Right Pod + device.apply { + podRightBatteryIcon.setImageResource(getBatteryDrawable(batteryRightPodPercent)) + podRightBatteryLabel.text = getBatteryLevelRightPod(context) + + podRightChargingIcon.isInvisible = !isRightPodCharging + podRightChargingLabel.isInvisible = !isRightPodCharging + + podRightMicrophoneIcon.isInvisible = microPhonePod != Pod.RIGHT + podRightMicrophoneLabel.isInvisible = microPhonePod != Pod.RIGHT + + podRightWearIcon.isInvisible = !isRightPodInEar + podRightWearLabel.isInvisible = !isRightPodInEar } - when (device.microPhonePod) { - Pod.LEFT -> podLeft.append("\n(${context.getString(R.string.pods_microphone_label)})") - Pod.RIGHT -> podRight.append("\n(${context.getString(R.string.pods_microphone_label)})") - } + // Case + device.apply { + podCaseBatteryIcon.setImageResource(getBatteryDrawable(batteryCasePercent)) + podCaseBatteryLabel.text = getBatteryLevelCase(context) - podCase.apply { - val sb = StringBuilder(getString(R.string.pods_case_label)) - sb.append("\n").append(device.getBatteryLevelCase(context)) - if (device.isCaseCharging) sb.append("\n").append(getString(R.string.pods_charging_label)) - when (device.caseLidState) { - LidState.OPEN -> sb.append("\n").append(context.getString(R.string.pods_case_status_open_label)) - LidState.CLOSED -> sb.append("\n").append(context.getString(R.string.pods_case_status_closed_label)) - LidState.NOT_IN_CASE, - LidState.UNKNOWN -> { - } + podCaseChargingIcon.isInvisible = !isCaseCharging + podCaseChargingLabel.isInvisible = !isCaseCharging + + podCaseLidLabel.text = when (device.caseLidState) { + LidState.OPEN -> context.getString(R.string.pods_case_status_open_label) + LidState.CLOSED -> context.getString(R.string.pods_case_status_closed_label) + else -> context.getString(R.string.general_value_unknown_label) } - text = sb } status.apply { diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/PodDeviceVH.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/PodDeviceVH.kt index 1a26d88c..a1da9e84 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/PodDeviceVH.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/PodDeviceVH.kt @@ -1,8 +1,10 @@ package eu.darken.capod.main.ui.overview.cards.pods import android.view.ViewGroup +import androidx.annotation.DrawableRes import androidx.annotation.LayoutRes import androidx.viewbinding.ViewBinding +import eu.darken.capod.R import eu.darken.capod.common.lists.BindableVH import eu.darken.capod.common.lists.differ.DifferItem import eu.darken.capod.common.lists.modular.ModularAdapter @@ -15,6 +17,19 @@ abstract class PodDeviceVH( parent: ViewGroup ) : ModularAdapter.VH(layoutId, parent), BindableVH { + @DrawableRes + fun getBatteryDrawable(percent: Float?): Int = when { + percent == null -> R.drawable.ic_baseline_battery_unknown_24 + percent > 0.95f -> R.drawable.ic_baseline_battery_full_24 + percent > 0.80f -> R.drawable.ic_baseline_battery_6_bar_24 + percent > 0.65f -> R.drawable.ic_baseline_battery_5_bar_24 + percent > 0.50f -> R.drawable.ic_baseline_battery_4_bar_24 + percent > 0.35f -> R.drawable.ic_baseline_battery_3_bar_24 + percent > 0.20f -> R.drawable.ic_baseline_battery_2_bar_24 + percent > 0.05f -> R.drawable.ic_baseline_battery_1_bar_24 + else -> R.drawable.ic_baseline_battery_0_bar_24 + } + interface Item : OverviewAdapter.Item { val now: Instant diff --git a/app/src/main/res/drawable/ic_baseline_battery_0_bar_24.xml b/app/src/main/res/drawable/ic_baseline_battery_0_bar_24.xml new file mode 100644 index 00000000..d9ab9ae9 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_0_bar_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_1_bar_24.xml b/app/src/main/res/drawable/ic_baseline_battery_1_bar_24.xml new file mode 100644 index 00000000..b9dc6ea7 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_1_bar_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_2_bar_24.xml b/app/src/main/res/drawable/ic_baseline_battery_2_bar_24.xml new file mode 100644 index 00000000..6bc8d452 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_2_bar_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_3_bar_24.xml b/app/src/main/res/drawable/ic_baseline_battery_3_bar_24.xml new file mode 100644 index 00000000..22e554dc --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_3_bar_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_4_bar_24.xml b/app/src/main/res/drawable/ic_baseline_battery_4_bar_24.xml new file mode 100644 index 00000000..786e2cc8 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_4_bar_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_5_bar_24.xml b/app/src/main/res/drawable/ic_baseline_battery_5_bar_24.xml new file mode 100644 index 00000000..c636f660 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_5_bar_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_6_bar_24.xml b/app/src/main/res/drawable/ic_baseline_battery_6_bar_24.xml new file mode 100644 index 00000000..2f7c961d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_6_bar_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_full_24.xml b/app/src/main/res/drawable/ic_baseline_battery_full_24.xml new file mode 100644 index 00000000..11c62719 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_full_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_battery_unknown_24.xml b/app/src/main/res/drawable/ic_baseline_battery_unknown_24.xml new file mode 100644 index 00000000..449ec4bf --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_battery_unknown_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_grid_view_24.xml b/app/src/main/res/drawable/ic_baseline_grid_view_24.xml new file mode 100644 index 00000000..54f06f3c --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_grid_view_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_hearing_24.xml b/app/src/main/res/drawable/ic_baseline_hearing_24.xml new file mode 100644 index 00000000..f7011b80 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_hearing_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_hearing_disabled_24.xml b/app/src/main/res/drawable/ic_baseline_hearing_disabled_24.xml new file mode 100644 index 00000000..27468080 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_hearing_disabled_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_keyboard_voice_24.xml b/app/src/main/res/drawable/ic_baseline_keyboard_voice_24.xml new file mode 100644 index 00000000..d29cccee --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_keyboard_voice_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_power_24.xml b/app/src/main/res/drawable/ic_baseline_power_24.xml new file mode 100644 index 00000000..ef753e64 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_power_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/overview_pods_apple_dual_item.xml b/app/src/main/res/layout/overview_pods_apple_dual_item.xml index 1c90101b..fc621ac8 100644 --- a/app/src/main/res/layout/overview_pods_apple_dual_item.xml +++ b/app/src/main/res/layout/overview_pods_apple_dual_item.xml @@ -87,61 +87,334 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="top" - app:constraint_referenced_ids="pod_left,pod_case,pod_right" /> + app:constraint_referenced_ids="pod_left_container,pod_case_container,pod_right_container" /> - + app:layout_constraintVertical_bias="0.0"> - + + + + + + + + + + + + + + + + + + + + + + + app:layout_constraintVertical_bias="0.0"> - + + + + + + + + + + + + + + + + + + + app:layout_constraintVertical_bias="0.0"> + + + + + + + + + + + + + + + + + + + + + + + + app:constraint_referenced_ids="pod_left_container,pod_case_container,pod_right_container" /> 8dp 8dp + + \ No newline at end of file