Verbessere Techniker-Verwaltung
parent
6fb7c4058e
commit
aa7dd38d06
@ -0,0 +1,94 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue