SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/dialog/ActionsDialog.kt

44 lines
1.1 KiB
Kotlin
Raw Normal View History

package jp.juggler.subwaytooter.dialog
import android.content.Context
2019-02-15 02:51:22 +01:00
import androidx.appcompat.app.AlertDialog
import jp.juggler.subwaytooter.R
2020-09-29 19:44:56 +02:00
import java.util.*
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)
2020-09-29 19:44:56 +02:00
fun addAction(caption : CharSequence, action : () -> Unit) : ActionsDialog {
2020-09-29 19:44:56 +02:00
action_list.add(Action(caption, action))
return this
}
2020-09-29 19:44:56 +02:00
fun show(context : Context, title : CharSequence? = null) : ActionsDialog {
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()
}
}
2020-09-29 19:44:56 +02:00
if(title != null && title.isNotEmpty()) b.setTitle(title)
b.show()
return this
}
}