From 4a6d88039b477d6ce54385340bbb929e69502401 Mon Sep 17 00:00:00 2001 From: Ludovic Goix Date: Thu, 16 Jul 2020 08:50:47 -0400 Subject: [PATCH] Display power plug icon when no battery #99 --- .../com/geeksville/mesh/ui/UsersFragment.kt | 37 +++++++++++++------ .../main/res/drawable/ic_power_plug_24.xml | 11 ++++++ 2 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/drawable/ic_power_plug_24.xml diff --git a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt index 313805cb3..c3bad63f0 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt @@ -6,6 +6,7 @@ import android.text.format.DateFormat import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.content.ContextCompat import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager @@ -31,6 +32,7 @@ class UsersFragment : ScreenFragment("Users"), Logging { val distance_view = itemView.distance_view val batteryPctView = itemView.batteryPercentageView val lastTime = itemView.lastConnectionView + val powerIcon = itemView.batteryIcon } private val nodesAdapter = object : RecyclerView.Adapter() { @@ -112,15 +114,7 @@ class UsersFragment : ScreenFragment("Users"), Logging { holder.distance_view.visibility = View.INVISIBLE } - val battery = n.batteryPctLevel - if (battery != null) - { - holder.batteryPctView.text = "$battery%" - } - else - { - holder.batteryPctView.text = "?" - } + renderBattery(n.batteryPctLevel, holder) holder.lastTime.text = getLastTimeValue(n) } @@ -134,14 +128,33 @@ class UsersFragment : ScreenFragment("Users"), Logging { } } - private fun getLastTimeValue(n: NodeInfo): String { - var lastTimeText: String = "?" + private fun renderBattery( + battery: Int?, + holder: ViewHolder + ) { + val (image, text) = when (battery) { + null -> Pair(R.drawable.ic_battery_full_24, "?") + 0 -> Pair(R.drawable.ic_power_plug_24, "") + else -> Pair(R.drawable.ic_battery_full_24, "$battery%") + } + + holder.batteryPctView.text = text + holder.powerIcon.setImageDrawable(context?.let { + ContextCompat.getDrawable( + it, + image + ) + }) + } + + private fun getLastTimeValue(n: NodeInfo): String { + var lastTimeText = "?" val currentTime = (System.currentTimeMillis()/1000).toInt() val threeDaysLong = 3 * 60*60*24 //if the lastSeen is too old - if((n.lastSeen + + \ No newline at end of file