Skip to content

Commit 217f8d6

Browse files
author
Joel Dean
committed
Created a dialog fragment that can survive config changes.
1 parent 4a77c34 commit 217f8d6

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.woocommerce.android.ui.dialog
2+
3+
import android.app.Dialog
4+
import android.os.Bundle
5+
import androidx.fragment.app.DialogFragment
6+
import com.google.android.material.dialog.MaterialAlertDialogBuilder
7+
8+
class WooDialogFragment : DialogFragment() {
9+
10+
private var dialogInteractionListener: DialogInteractionListener? = null
11+
12+
fun setDialogInteractionListener(listener: DialogInteractionListener) {
13+
dialogInteractionListener = listener
14+
}
15+
16+
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
17+
@Suppress("DEPRECATION") val params = requireArguments().getParcelable<DialogParams>(ARG_DIALOG_PARAMS)!!
18+
19+
val builder = MaterialAlertDialogBuilder(requireContext())
20+
.setCancelable(params.cancelable)
21+
22+
params.titleId?.let { builder.setTitle(it) }
23+
params.messageId?.let { builder.setMessage(it) }
24+
params.positiveButtonId?.let { posId ->
25+
builder.setPositiveButton(posId) { _, _ ->
26+
dialogInteractionListener?.onPositiveButtonClicked()
27+
}
28+
}
29+
params.negativeButtonId?.let { negId ->
30+
builder.setNegativeButton(negId) { _, _ ->
31+
dialogInteractionListener?.onNegativeButtonClicked()
32+
}
33+
}
34+
params.neutralButtonId?.let { neutId ->
35+
builder.setNeutralButton(neutId) { _, _ ->
36+
dialogInteractionListener?.onNeutralButtonClicked()
37+
}
38+
}
39+
40+
return builder.create()
41+
}
42+
43+
interface DialogInteractionListener {
44+
fun onPositiveButtonClicked()
45+
fun onNegativeButtonClicked()
46+
fun onNeutralButtonClicked()
47+
}
48+
49+
companion object {
50+
const val ARG_DIALOG_PARAMS = "dialog_params"
51+
const val TAG = "WooDialogFragment"
52+
fun newInstance(params: DialogParams): WooDialogFragment {
53+
return WooDialogFragment().apply {
54+
arguments = Bundle().apply {
55+
putParcelable(ARG_DIALOG_PARAMS, params)
56+
}
57+
}
58+
}
59+
}
60+
}

0 commit comments

Comments
 (0)