From 8f253bdca181993bdf2336a8f62c61da76509a6d Mon Sep 17 00:00:00 2001 From: Ludovic Goix Date: Mon, 13 Jul 2020 23:49:07 -0400 Subject: [PATCH 1/2] Display last time we receive a transmission from a node #65 --- .../main/java/com/geeksville/mesh/NodeInfo.kt | 2 +- .../com/geeksville/mesh/ui/UsersFragment.kt | 31 +++++++++++++++++++ .../main/res/layout/adapter_node_layout.xml | 4 +-- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt index 905b76211..f0a81085a 100644 --- a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt +++ b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt @@ -57,7 +57,7 @@ data class Position( fun bearing(o: Position) = bearing(latitude, longitude, o.latitude, o.longitude) override fun toString(): String { - return "Position(lat=${latitude.anonymize}, lon=${longitude.anonymize}, alt=${altitude.anonymize}, time=${time})" + return "Position(lat=${latitude.anonymize}, lon=${longitude.anonymize}, alt=${altitude.anonymize}, time=${time}, batteryPctLevel=${batteryPctLevel})" } } 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 15cce77cc..313805cb3 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt @@ -2,6 +2,7 @@ package com.geeksville.mesh.ui import android.os.Bundle +import android.text.format.DateFormat import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -15,6 +16,8 @@ import com.geeksville.mesh.R import com.geeksville.mesh.model.UIViewModel import kotlinx.android.synthetic.main.adapter_node_layout.view.* import kotlinx.android.synthetic.main.nodelist_fragment.* +import java.text.ParseException +import java.util.* class UsersFragment : ScreenFragment("Users"), Logging { @@ -27,6 +30,7 @@ class UsersFragment : ScreenFragment("Users"), Logging { val nodeNameView = itemView.nodeNameView val distance_view = itemView.distance_view val batteryPctView = itemView.batteryPercentageView + val lastTime = itemView.lastConnectionView } private val nodesAdapter = object : RecyclerView.Adapter() { @@ -117,6 +121,8 @@ class UsersFragment : ScreenFragment("Users"), Logging { { holder.batteryPctView.text = "?" } + + holder.lastTime.text = getLastTimeValue(n) } private var nodes = arrayOf() @@ -128,6 +134,31 @@ class UsersFragment : ScreenFragment("Users"), Logging { } } + private fun getLastTimeValue(n: NodeInfo): String { + var lastTimeText: String = "?" + + val currentTime = (System.currentTimeMillis()/1000).toInt() + val threeDaysLong = 3 * 60*60*24 + + //if the lastSeen is too old + if((n.lastSeen @@ -88,7 +88,7 @@ android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:text="06/14 15h01 (13 min ago)" - android:visibility="invisible" + android:visibility="visible" app:layout_constraintBottom_toBottomOf="@+id/lastCommIcon" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/lastCommIcon" /> From 20b06997f0063c3bf67e72f3c98a75aaafdd7a6e Mon Sep 17 00:00:00 2001 From: Ludovic Goix Date: Tue, 14 Jul 2020 00:06:32 -0400 Subject: [PATCH 2/2] Use current phone local to format time #74 --- .../main/java/com/geeksville/mesh/ui/MessagesFragment.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt index 6d96dfcb6..9670f77a5 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt @@ -1,6 +1,7 @@ package com.geeksville.mesh.ui import android.os.Bundle +import android.text.format.DateFormat import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -21,7 +22,6 @@ import com.geeksville.mesh.service.MeshService import com.google.android.material.chip.Chip import kotlinx.android.synthetic.main.adapter_message_layout.view.* import kotlinx.android.synthetic.main.messages_fragment.* -import java.text.SimpleDateFormat import java.util.* // Allows usage like email.on(EditorInfo.IME_ACTION_NEXT, { confirm() }) @@ -40,6 +40,8 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { private val model: UIViewModel by activityViewModels() + private lateinit var dateTimeFormat : java.text.DateFormat + // Provide a direct reference to each of the views within a data item // Used to cache the views within the item layout for fast access class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { @@ -131,7 +133,7 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { holder.messageText.text = msg.text } - holder.messageTime.text = dateFormat.format(Date(msg.time)) + holder.messageTime.text = dateTimeFormat.format(Date(msg.time)) val icon = when (msg.status) { MessageStatus.QUEUED -> R.drawable.ic_twotone_cloud_upload_24 @@ -171,6 +173,7 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + dateTimeFormat = DateFormat.getTimeFormat(context) messageInputText.on(EditorInfo.IME_ACTION_DONE) { debug("did IME action") @@ -206,6 +209,5 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { }) } - private val dateFormat = SimpleDateFormat("h:mm a") }