From 29f0435f18a43c5e79a41512930a5b244199938c Mon Sep 17 00:00:00 2001 From: geeksville Date: Wed, 8 Apr 2020 17:12:39 -0700 Subject: [PATCH] message fragment kinda works --- .../geeksville/mesh/ui/MessagesFragment.kt | 21 ++++++++++- .../res/layout/adapter_message_layout.xml | 37 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/layout/adapter_message_layout.xml 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 68df6af2..e24a11d8 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt @@ -12,6 +12,7 @@ import com.geeksville.android.Logging import com.geeksville.mesh.R import com.geeksville.mesh.model.TextMessage import com.geeksville.mesh.model.UIViewModel +import kotlinx.android.synthetic.main.adapter_message_layout.view.* import kotlinx.android.synthetic.main.messages_fragment.* @@ -22,6 +23,8 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { // 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) { + val username = itemView.username + val messageText = itemView.messageText } private val messagesAdapter = object : RecyclerView.Adapter() { @@ -55,7 +58,7 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { // Inflate the custom layout // Inflate the custom layout - val contactView: View = inflater.inflate(R.layout.adapter_node_layout, parent, false) + val contactView: View = inflater.inflate(R.layout.adapter_message_layout, parent, false) // Return a new holder instance return ViewHolder(contactView) @@ -90,7 +93,21 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { * @param position The position of the item within the adapter's data set. */ override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val n = messages[position] + val msg = messages[position] + + val nodes = model.nodeDB.nodes.value!! + + // If we can't find the sender, just use the ID + val node = nodes.get(msg.from) + val user = node?.user + holder.username.text = user?.shortName ?: msg.from + + if (msg.errorMessage != null) { + // FIXME, set the style to show a red error message + holder.messageText.text = msg.errorMessage + } else { + holder.messageText.text = msg.text + } } private var messages = arrayOf() diff --git a/app/src/main/res/layout/adapter_message_layout.xml b/app/src/main/res/layout/adapter_message_layout.xml new file mode 100644 index 00000000..4b5d90e9 --- /dev/null +++ b/app/src/main/res/layout/adapter_message_layout.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + \ 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 45e84bb8..1320300f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,4 +11,6 @@ Unknown Username User avatar 2.13 km + hey I found the cache, it is over here next to the big tiger. I\'m kinda scared. + Some Username