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.
130 lines
4.7 KiB
Kotlin
130 lines
4.7 KiB
Kotlin
package com.cyb3rko.techniklogger.fragments
|
|
|
|
import android.content.Context
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.widget.ArrayAdapter
|
|
import androidx.fragment.app.Fragment
|
|
import com.cyb3rko.techniklogger.R
|
|
import com.cyb3rko.techniklogger.data.ParseController
|
|
import com.cyb3rko.techniklogger.databinding.FragmentManageMembersBinding
|
|
import com.cyb3rko.techniklogger.logE
|
|
import com.cyb3rko.techniklogger.modals.MemberBottomSheet
|
|
import com.cyb3rko.techniklogger.showErrorToast
|
|
import com.cyb3rko.techniklogger.showSuccessToast
|
|
|
|
class ManageMembersFragment : Fragment() {
|
|
private var _binding: FragmentManageMembersBinding? = null
|
|
private lateinit var myContext: Context
|
|
|
|
private val memberNames = mutableListOf<String>()
|
|
|
|
private val binding get() = _binding!!
|
|
|
|
override fun onCreateView(
|
|
inflater: LayoutInflater,
|
|
container: ViewGroup?,
|
|
savedInstanceState: Bundle?
|
|
): View {
|
|
_binding = FragmentManageMembersBinding.inflate(inflater, container, false)
|
|
val root = binding.root
|
|
myContext = requireContext()
|
|
|
|
loadMembers()
|
|
|
|
binding.fab.setOnClickListener {
|
|
MemberBottomSheet { member ->
|
|
member?.saveInBackground { exception ->
|
|
if (exception == null) {
|
|
showSuccessToast("Hinzugefügt")
|
|
showAnimation(true)
|
|
loadMembers()
|
|
} else {
|
|
showErrorToast("Fehler beim Hinzufügen")
|
|
logE("Fehler beim Hinzufügen des Technikers")
|
|
exception.printStackTrace()
|
|
}
|
|
}
|
|
}.show(parentFragmentManager, MemberBottomSheet.TAG)
|
|
}
|
|
|
|
binding.swipeRefreshLayout.apply {
|
|
setProgressBackgroundColorSchemeResource(R.color.refreshLayoutBackground)
|
|
setColorSchemeResources(R.color.refreshLayoutArrow)
|
|
setOnRefreshListener {
|
|
isRefreshing = false
|
|
showAnimation(true)
|
|
loadMembers()
|
|
}
|
|
}
|
|
|
|
return root
|
|
}
|
|
|
|
private fun loadMembers() {
|
|
memberNames.clear()
|
|
binding.list.adapter = ArrayAdapter(
|
|
myContext,
|
|
android.R.layout.simple_list_item_1,
|
|
memberNames
|
|
)
|
|
|
|
ParseController.fetchMembers(true) { members, memberNames, e ->
|
|
if (e == null) {
|
|
val adapter = ArrayAdapter(
|
|
myContext,
|
|
android.R.layout.simple_list_item_1,
|
|
memberNames
|
|
)
|
|
binding.list.adapter = adapter
|
|
showAnimation(false)
|
|
|
|
binding.list.setOnItemClickListener { _, _, index, _ ->
|
|
val member = members[index]
|
|
MemberBottomSheet(members[index]) { editedMember ->
|
|
if (editedMember == null) {
|
|
showAnimation(true)
|
|
loadMembers()
|
|
return@MemberBottomSheet
|
|
}
|
|
if (editedMember != member) {
|
|
editedMember.saveInBackground {
|
|
if (it == null) {
|
|
showSuccessToast("Gespeichert")
|
|
showAnimation(true)
|
|
loadMembers()
|
|
} else {
|
|
showErrorToast("Fehler bei der Speicherung")
|
|
logE("Fehler bei der Speicherung des neuen Technikers")
|
|
it.printStackTrace()
|
|
}
|
|
}
|
|
}
|
|
}.show(parentFragmentManager, MemberBottomSheet.TAG)
|
|
}
|
|
} else {
|
|
showAnimation(true, false)
|
|
showErrorToast("Abruf fehlgeschlagen")
|
|
logE("Abruf der Techniker fehlgeschlagen")
|
|
e.printStackTrace()
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun showAnimation(show: Boolean, connected: Boolean = true) {
|
|
val viewVisibility = if (show) View.VISIBLE else View.INVISIBLE
|
|
val newSpeed = if (!connected) 1.2f else 1.5f
|
|
val animation = if (connected) "loading.json" else "no-connection.json"
|
|
binding.apply {
|
|
loadingAnimation.apply {
|
|
setAnimation(animation)
|
|
speed = newSpeed
|
|
visibility = viewVisibility
|
|
playAnimation()
|
|
}
|
|
}
|
|
}
|
|
}
|