From 93e81e4639b5830271ade0d922b2c6d18c3bdc00 Mon Sep 17 00:00:00 2001 From: Jackson Rosenthal Date: Mon, 31 Jan 2022 19:11:32 -0500 Subject: [PATCH] Added delete all messages into the AlertDialog. --- .../com/geeksville/mesh/IMeshService.aidl | 2 ++ .../geeksville/mesh/model/MessagesState.kt | 19 +++++++++++++++++++ .../geeksville/mesh/service/MeshService.kt | 4 ++++ .../geeksville/mesh/ui/MessagesFragment.kt | 8 +++++++- app/src/main/res/values/strings.xml | 1 + 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl b/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl index 56b6090fc..8b5010c86 100644 --- a/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl +++ b/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl @@ -69,6 +69,8 @@ interface IMeshService { void delete(int position); + void deleteAllMessages(); + /** Get the IDs of everyone on the mesh. You should also subscribe for NODE_CHANGE broadcasts. */ diff --git a/app/src/main/java/com/geeksville/mesh/model/MessagesState.kt b/app/src/main/java/com/geeksville/mesh/model/MessagesState.kt index 60c7a5784..6e98fb5d4 100644 --- a/app/src/main/java/com/geeksville/mesh/model/MessagesState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/MessagesState.kt @@ -53,6 +53,13 @@ class MessagesState(private val ui: UIViewModel) : Logging { messages.value = messagesList } + private fun removeAllMessages() { + debug("Removing all messages") + + messagesList.clear() + messages.value = messagesList + } + fun updateStatus(id: Int, status: MessageStatus) { // Super inefficent but this is rare debug("Handling message status change $id: $status") @@ -102,4 +109,16 @@ class MessagesState(private val ui: UIViewModel) : Logging { } removeMessage(packet) } + + fun deleteAllMessages() { + val service = ui.meshService + if (service != null) { + try { + service.deleteAllMessages() + } catch (ex: RemoteException) { + + } + removeAllMessages() + } + } } diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index 8790e0d4b..1392734cb 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -1789,6 +1789,10 @@ class MeshService : Service(), Logging { } } + override fun deleteAllMessages() { + recentDataPackets.clear() + } + override fun send(p: DataPacket) { toRemoteExceptions { // Init from and id 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 52a694c2c..bd0beefb4 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt @@ -173,9 +173,15 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { ) { _, _ -> model.messagesState.deleteMessage((messages[position]), position) } - deleteMessageDialog.setNegativeButton(R.string.cancel + deleteMessageDialog.setNeutralButton( + R.string.cancel ) { _, _ -> } + deleteMessageDialog.setNegativeButton( + R.string.delete_all_messages + ) { _, _ -> + model.messagesState.deleteAllMessages() + } deleteMessageDialog.create() deleteMessageDialog.show() true diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a74d3ec71..41e99f78e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -122,4 +122,5 @@ Medium Range / Slow Delete selected message? Delete + Delete All Messages \ No newline at end of file