2018-01-04 19:52:25 +01:00
|
|
|
package jp.juggler.subwaytooter.dialog
|
|
|
|
|
|
|
|
import android.content.Context
|
2019-02-15 02:51:22 +01:00
|
|
|
import androidx.appcompat.app.AlertDialog
|
2018-01-04 19:52:25 +01:00
|
|
|
import jp.juggler.subwaytooter.R
|
2020-09-29 19:44:56 +02:00
|
|
|
import java.util.*
|
2018-01-04 19:52:25 +01:00
|
|
|
|
|
|
|
class ActionsDialog {
|
|
|
|
|
|
|
|
private val action_list = ArrayList<Action>()
|
|
|
|
|
2020-09-29 19:44:56 +02:00
|
|
|
private class Action(val caption : CharSequence, val action : () -> Unit)
|
2018-01-04 19:52:25 +01:00
|
|
|
|
2020-09-29 19:44:56 +02:00
|
|
|
fun addAction(caption : CharSequence, action : () -> Unit) : ActionsDialog {
|
2018-01-04 19:52:25 +01:00
|
|
|
|
2020-09-29 19:44:56 +02:00
|
|
|
action_list.add(Action(caption, action))
|
2018-01-04 19:52:25 +01:00
|
|
|
|
|
|
|
return this
|
|
|
|
}
|
|
|
|
|
2020-09-29 19:44:56 +02:00
|
|
|
fun show(context : Context, title : CharSequence? = null) : ActionsDialog {
|
2018-01-04 19:52:25 +01:00
|
|
|
val caption_list = arrayOfNulls<CharSequence>(action_list.size)
|
|
|
|
var i = 0
|
|
|
|
val ie = caption_list.size
|
|
|
|
while(i < ie) {
|
|
|
|
caption_list[i] = action_list[i].caption
|
|
|
|
++ i
|
|
|
|
}
|
|
|
|
val b = AlertDialog.Builder(context)
|
|
|
|
.setNegativeButton(R.string.cancel, null)
|
|
|
|
.setItems(caption_list) { _, which ->
|
|
|
|
if(which >= 0 && which < action_list.size) {
|
2020-09-29 19:44:56 +02:00
|
|
|
action_list[which].action()
|
2018-01-04 19:52:25 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-09-29 19:44:56 +02:00
|
|
|
if(title != null && title.isNotEmpty()) b.setTitle(title)
|
2018-01-04 19:52:25 +01:00
|
|
|
|
|
|
|
b.show()
|
|
|
|
|
|
|
|
return this
|
|
|
|
}
|
|
|
|
}
|