You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.1 KiB
Kotlin
95 lines
3.1 KiB
Kotlin
package com.cyb3rko.techniklogger.modals
|
|
|
|
import android.content.DialogInterface
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import com.cyb3rko.techniklogger.data.objects.Member
|
|
import com.cyb3rko.techniklogger.databinding.MemberDialogBinding
|
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
|
internal class MemberBottomSheet(
|
|
private val member: Member? = null,
|
|
private val action: (member: Member?) -> Unit
|
|
): BottomSheetDialogFragment() {
|
|
private lateinit var binding: MemberDialogBinding
|
|
|
|
private var mode = -1
|
|
private lateinit var mMember: Member
|
|
|
|
override fun onCreateView(
|
|
inflater: LayoutInflater,
|
|
container: ViewGroup?,
|
|
savedInstanceState: Bundle?
|
|
): View {
|
|
binding = MemberDialogBinding.inflate(layoutInflater)
|
|
if (member == null) {
|
|
mode = MODE_ADD
|
|
} else {
|
|
mMember = member.copy()
|
|
binding.name.setText(mMember.name)
|
|
binding.admin.isChecked = mMember.admin
|
|
mode = MODE_EDIT
|
|
}
|
|
if (mode == MODE_ADD) {
|
|
binding.title.text = "Techniker hinzufügen"
|
|
binding.button.text = "Hinzufügen"
|
|
} else {
|
|
binding.title.text = "Techniker-Info"
|
|
binding.button.text = "Entlassen"
|
|
}
|
|
binding.button.setOnClickListener {
|
|
val newName = binding.name.text.toString()
|
|
val newAdmin = binding.admin.isChecked
|
|
|
|
if (mode == MODE_ADD) {
|
|
Member().apply {
|
|
setAdmin(newAdmin)
|
|
setName(newName)
|
|
action(this)
|
|
dismiss()
|
|
}
|
|
} else {
|
|
MaterialAlertDialogBuilder(requireContext())
|
|
.setTitle("Entlassung")
|
|
.setMessage("Soll '${mMember.name}' wirklich entlassen werden?")
|
|
.setPositiveButton("Ja") { _ , _ ->
|
|
mMember.apply {
|
|
retire()
|
|
action(this)
|
|
dismiss()
|
|
}
|
|
}
|
|
.setNegativeButton("Nein", null)
|
|
.show()
|
|
}
|
|
}
|
|
|
|
return binding.root
|
|
}
|
|
|
|
override fun onDismiss(dialog: DialogInterface) {
|
|
if (mode == MODE_EDIT && ::binding.isInitialized) {
|
|
val newName = binding.name.text.toString()
|
|
val newAdmin = binding.admin.isChecked
|
|
val adminChanged = newAdmin != mMember.admin
|
|
val nameChanged = newName != mMember.name
|
|
if (adminChanged || nameChanged) {
|
|
mMember.apply {
|
|
setAdmin(newAdmin)
|
|
setName(newName)
|
|
action(this)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
companion object {
|
|
const val TAG = "Member Bottom Sheet"
|
|
const val MODE_ADD = 0
|
|
const val MODE_EDIT = 1
|
|
}
|
|
}
|