mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-15 02:36:12 -04:00
Improve last seen display
This commit is contained in:
+2
-10
@@ -1,6 +1,5 @@
|
||||
package eu.darken.capod.main.ui.overview.cards.pods
|
||||
|
||||
import android.icu.text.RelativeDateTimeFormatter
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.isGone
|
||||
import eu.darken.capod.R
|
||||
@@ -8,7 +7,7 @@ import eu.darken.capod.common.lists.binding
|
||||
import eu.darken.capod.databinding.OverviewPodsAppleSingleBasicItemBinding
|
||||
import eu.darken.capod.pods.core.apple.BasicSingleApplePods
|
||||
import eu.darken.capod.pods.core.getBatteryLevelHeadset
|
||||
import java.time.Duration
|
||||
import eu.darken.capod.pods.core.lastSeenFormatted
|
||||
import java.time.Instant
|
||||
|
||||
class BasicSingleApplePodsCardVH(parent: ViewGroup) :
|
||||
@@ -19,20 +18,13 @@ class BasicSingleApplePodsCardVH(parent: ViewGroup) :
|
||||
|
||||
override val viewBinding = lazy { OverviewPodsAppleSingleBasicItemBinding.bind(itemView) }
|
||||
|
||||
private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance()
|
||||
|
||||
override val onBindData = binding(payload = true) { item: Item ->
|
||||
val device = item.device
|
||||
|
||||
name.text = device.getLabel(context)
|
||||
deviceIcon.setImageResource(device.iconRes)
|
||||
|
||||
val duration = Duration.between(device.lastSeenAt, item.now)
|
||||
lastSeen.text = lastSeenFormatter.format(
|
||||
duration.seconds.toDouble(),
|
||||
RelativeDateTimeFormatter.Direction.LAST,
|
||||
RelativeDateTimeFormatter.RelativeUnit.SECONDS
|
||||
)
|
||||
lastSeen.text = device.lastSeenFormatted(item.now)
|
||||
|
||||
reception.text = device.getSignalQuality(context)
|
||||
|
||||
|
||||
+2
-10
@@ -1,6 +1,5 @@
|
||||
package eu.darken.capod.main.ui.overview.cards.pods
|
||||
|
||||
import android.icu.text.RelativeDateTimeFormatter
|
||||
import android.view.ViewGroup
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.lists.binding
|
||||
@@ -12,7 +11,7 @@ import eu.darken.capod.pods.core.apple.DualApplePods.LidState
|
||||
import eu.darken.capod.pods.core.getBatteryLevelCase
|
||||
import eu.darken.capod.pods.core.getBatteryLevelLeftPod
|
||||
import eu.darken.capod.pods.core.getBatteryLevelRightPod
|
||||
import java.time.Duration
|
||||
import eu.darken.capod.pods.core.lastSeenFormatted
|
||||
import java.time.Instant
|
||||
|
||||
class DualApplePodsCardVH(parent: ViewGroup) :
|
||||
@@ -23,8 +22,6 @@ class DualApplePodsCardVH(parent: ViewGroup) :
|
||||
|
||||
override val viewBinding = lazy { OverviewPodsAppleDualItemBinding.bind(itemView) }
|
||||
|
||||
private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance()
|
||||
|
||||
override val onBindData = binding(payload = true) { item: Item ->
|
||||
val device = item.device
|
||||
name.apply {
|
||||
@@ -36,12 +33,7 @@ class DualApplePodsCardVH(parent: ViewGroup) :
|
||||
}
|
||||
deviceIcon.setImageResource(device.iconRes)
|
||||
|
||||
val duration = Duration.between(device.lastSeenAt, item.now)
|
||||
lastSeen.text = lastSeenFormatter.format(
|
||||
duration.seconds.toDouble(),
|
||||
RelativeDateTimeFormatter.Direction.LAST,
|
||||
RelativeDateTimeFormatter.RelativeUnit.SECONDS
|
||||
)
|
||||
lastSeen.text = device.lastSeenFormatted(item.now)
|
||||
|
||||
reception.text = device.getSignalQuality(context)
|
||||
|
||||
|
||||
+2
-10
@@ -1,6 +1,5 @@
|
||||
package eu.darken.capod.main.ui.overview.cards.pods
|
||||
|
||||
import android.icu.text.RelativeDateTimeFormatter
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.isGone
|
||||
import eu.darken.capod.R
|
||||
@@ -8,7 +7,7 @@ import eu.darken.capod.common.lists.binding
|
||||
import eu.darken.capod.databinding.OverviewPodsAppleSingleItemBinding
|
||||
import eu.darken.capod.pods.core.apple.SingleApplePods
|
||||
import eu.darken.capod.pods.core.getBatteryLevelHeadset
|
||||
import java.time.Duration
|
||||
import eu.darken.capod.pods.core.lastSeenFormatted
|
||||
import java.time.Instant
|
||||
|
||||
class SingleApplePodsCardVH(parent: ViewGroup) :
|
||||
@@ -19,20 +18,13 @@ class SingleApplePodsCardVH(parent: ViewGroup) :
|
||||
|
||||
override val viewBinding = lazy { OverviewPodsAppleSingleItemBinding.bind(itemView) }
|
||||
|
||||
private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance()
|
||||
|
||||
override val onBindData = binding(payload = true) { item: Item ->
|
||||
val device = item.device
|
||||
|
||||
name.text = device.getLabel(context)
|
||||
deviceIcon.setImageResource(device.iconRes)
|
||||
|
||||
val duration = Duration.between(device.lastSeenAt, item.now)
|
||||
lastSeen.text = lastSeenFormatter.format(
|
||||
duration.seconds.toDouble(),
|
||||
RelativeDateTimeFormatter.Direction.LAST,
|
||||
RelativeDateTimeFormatter.RelativeUnit.SECONDS
|
||||
)
|
||||
lastSeen.text = device.lastSeenFormatted(item.now)
|
||||
|
||||
reception.text = device.getSignalQuality(context)
|
||||
|
||||
|
||||
+2
-10
@@ -1,12 +1,11 @@
|
||||
package eu.darken.capod.main.ui.overview.cards.pods
|
||||
|
||||
import android.icu.text.RelativeDateTimeFormatter
|
||||
import android.view.ViewGroup
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.lists.binding
|
||||
import eu.darken.capod.databinding.OverviewPodsUnknownItemBinding
|
||||
import eu.darken.capod.pods.core.PodDevice
|
||||
import java.time.Duration
|
||||
import eu.darken.capod.pods.core.lastSeenFormatted
|
||||
import java.time.Instant
|
||||
|
||||
class UnknownPodDeviceCardVH(parent: ViewGroup) :
|
||||
@@ -19,18 +18,11 @@ class UnknownPodDeviceCardVH(parent: ViewGroup) :
|
||||
OverviewPodsUnknownItemBinding.bind(itemView)
|
||||
}
|
||||
|
||||
private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance()
|
||||
|
||||
override val onBindData = binding(payload = true) { item ->
|
||||
val device = item.device
|
||||
name.text = device.getLabel(context)
|
||||
|
||||
val duration = Duration.between(device.lastSeenAt, item.now)
|
||||
lastSeen.text = lastSeenFormatter.format(
|
||||
duration.seconds.toDouble(),
|
||||
RelativeDateTimeFormatter.Direction.LAST,
|
||||
RelativeDateTimeFormatter.RelativeUnit.SECONDS
|
||||
)
|
||||
lastSeen.text = device.lastSeenFormatted(item.now)
|
||||
|
||||
reception.text = device.getSignalQuality(context)
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package eu.darken.capod.pods.core
|
||||
|
||||
import android.content.Context
|
||||
import android.icu.text.RelativeDateTimeFormatter
|
||||
import eu.darken.capod.R
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
fun HasDualPods.getBatteryLevelLeftPod(context: Context): String =
|
||||
@@ -19,3 +22,14 @@ fun HasCase.getBatteryLevelCase(context: Context): String =
|
||||
fun HasSinglePod.getBatteryLevelHeadset(context: Context): String =
|
||||
batteryHeadsetPercent?.let { "${(it * 100).roundToInt()}%" }
|
||||
?: context.getString(R.string.general_value_not_available_label)
|
||||
|
||||
private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance()
|
||||
|
||||
fun PodDevice.lastSeenFormatted(now: Instant): String {
|
||||
val duration = Duration.between(lastSeenAt, now)
|
||||
return lastSeenFormatter.format(
|
||||
duration.seconds.toDouble(),
|
||||
RelativeDateTimeFormatter.Direction.LAST,
|
||||
RelativeDateTimeFormatter.RelativeUnit.SECONDS
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user