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