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 5c043f01..5052e938 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/MessagesFragment.kt @@ -1,5 +1,9 @@ package com.geeksville.mesh.ui +import android.app.AlertDialog +import android.app.Dialog +import android.content.Context +import android.content.DialogInterface import android.graphics.Color import android.os.Bundle import android.text.InputType @@ -12,6 +16,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.cardview.widget.CardView import androidx.core.content.ContextCompat +import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager @@ -25,6 +30,7 @@ import com.geeksville.mesh.databinding.MessagesFragmentBinding import com.geeksville.mesh.model.UIViewModel import com.geeksville.mesh.service.MeshService import com.google.android.material.chip.Chip +import kotlinx.serialization.descriptors.buildSerialDescriptor import java.text.DateFormat import java.util.* @@ -40,6 +46,54 @@ fun EditText.on(actionId: Int, func: () -> Unit) { } } +//class DeleteMessageDialog : DialogFragment() { +// private lateinit var listener: NoticeDialogListener +// +// interface NoticeDialogListener { +// fun onDialogPositiveClick(dialog: DialogFragment) +// fun onDialogNegativeClick(dialog: DialogFragment) +// } +// +// // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener +// override fun onAttach(context: Context) { +// super.onAttach(context) +// // Verify that the host activity implements the callback interface +// try { +// // Instantiate the NoticeDialogListener so we can send events to the host +// listener = context as NoticeDialogListener +// } catch (e: ClassCastException) { +// // The activity doesn't implement the interface, throw exception +// throw ClassCastException( +// (context.toString() + +// " must implement NoticeDialogListener") +// ) +// } +// } +// +// +//} + +class DeleteMessageDialog : DialogFragment() { + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return activity?.let { + + var delete = false; + val builder = AlertDialog.Builder(it) + builder.setMessage(R.string.delete_selected_message) + .setPositiveButton(R.string.delete, + DialogInterface.OnClickListener { dialog, id -> + delete = true + }) + .setNegativeButton(R.string.cancel, + DialogInterface.OnClickListener { dialog, id -> + delete = false + }) + // Create the AlertDialog object and return it + builder.create() + } ?: throw IllegalStateException("Activity cannot be null") + } +} + class MessagesFragment : ScreenFragment("Messages"), Logging { private var _binding: MessagesFragmentBinding? = null @@ -165,7 +219,19 @@ class MessagesFragment : ScreenFragment("Messages"), Logging { val marginParams = holder.card.layoutParams as ViewGroup.MarginLayoutParams val messageOffset = resources.getDimensionPixelOffset(R.dimen.message_offset) holder.card.setOnLongClickListener { - model.messagesState.deleteMessage(messages[position], position) + val deleteMessageDialog = AlertDialog.Builder(context) + // deleteMessageDialog.setTitle(R.string.delete_selected_message) + deleteMessageDialog.setMessage(R.string.delete_selected_message) + deleteMessageDialog.setPositiveButton( + R.string.delete + ) { _, _ -> + model.messagesState.deleteMessage((messages[position]), position) + } + deleteMessageDialog.setNegativeButton(R.string.cancel, + DialogInterface.OnClickListener { _, _ -> + }) + deleteMessageDialog.create() + deleteMessageDialog.show() true } if (isMe) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0c7eefa9..a74d3ec7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -120,4 +120,6 @@ We must be granted access to the camera to read QR codes. No pictures or videos will be saved. Short Range / Slow Medium Range / Slow + Delete selected message? + Delete \ No newline at end of file