From d9d78f4f6df02cd3ed1ab8188c53f8f7aa0d3b4f Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Mon, 30 May 2022 22:38:02 +0200 Subject: [PATCH] =?UTF-8?q?Vereinfache=20und=20versch=C3=B6nere=20Code=20f?= =?UTF-8?q?=C3=BCr=20Techniker-Verwaltung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cyb3rko/techniklogger/Utils.kt | 9 ++- .../fragments/ManageTechnikerFragment.kt | 64 +++++++++++-------- 2 files changed, 46 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/cyb3rko/techniklogger/Utils.kt b/app/src/main/java/com/cyb3rko/techniklogger/Utils.kt index 68adfc7..e66f9d2 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/Utils.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/Utils.kt @@ -7,15 +7,20 @@ import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.input.getInputField import com.afollestad.materialdialogs.input.input -internal const val CURRENT_YEAR = "current_year" -internal const val CURRENT_YEAR_NAME = "current_year_name" +internal const val CLASS_EINSATZ = "Einsatz" +internal const val CLASS_JAHR = "Jahr" +internal const val CLASS_TECHNIKER = "Techniker" internal const val COLUMN_EINSATZ_DATUM = "datum" internal const val COLUMN_EINSATZ_DAUER = "dauer" internal const val COLUMN_EINSATZ_JAHR = "jahr" internal const val COLUMN_EINSATZ_NAME = "name" internal const val COLUMN_EINSATZ_ORT = "ort" internal const val COLUMN_JAHR_NAME = "name" +internal const val COLUMN_TECHNIKER_ADMIN = "admin" +internal const val COLUMN_TECHNIKER_ENTLASSEN = "entlassen" internal const val COLUMN_TECHNIKER_NAME = "name" +internal const val CURRENT_YEAR = "current_year" +internal const val CURRENT_YEAR_NAME = "current_year_name" internal const val SHARED_PREFERENCE = "Safe" internal fun showNameDialog( diff --git a/app/src/main/java/com/cyb3rko/techniklogger/fragments/ManageTechnikerFragment.kt b/app/src/main/java/com/cyb3rko/techniklogger/fragments/ManageTechnikerFragment.kt index e33181c..c2642de 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/fragments/ManageTechnikerFragment.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/fragments/ManageTechnikerFragment.kt @@ -7,14 +7,17 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter -import android.widget.Toast import androidx.fragment.app.Fragment import com.afollestad.materialdialogs.LayoutMode import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.bottomsheets.BottomSheet import com.afollestad.materialdialogs.callbacks.onDismiss import com.afollestad.materialdialogs.customview.customView -import com.cyb3rko.techniklogger.R +import com.cyb3rko.techniklogger.* +import com.cyb3rko.techniklogger.CLASS_TECHNIKER +import com.cyb3rko.techniklogger.COLUMN_TECHNIKER_ADMIN +import com.cyb3rko.techniklogger.COLUMN_TECHNIKER_ENTLASSEN +import com.cyb3rko.techniklogger.COLUMN_TECHNIKER_NAME import com.cyb3rko.techniklogger.databinding.FragmentManageTechnikerBinding import com.google.android.material.switchmaterial.SwitchMaterial import com.google.android.material.textfield.TextInputEditText @@ -29,17 +32,22 @@ class ManageTechnikerFragment : Fragment() { private lateinit var techniker: MutableList private val technikerNames = mutableListOf() - private val query = ParseQuery.getQuery("Techniker") + private val query = ParseQuery.getQuery(CLASS_TECHNIKER) private val binding get() = _binding!! - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { _binding = FragmentManageTechnikerBinding.inflate(inflater, container, false) val root = binding.root myContext = requireContext() - query.whereEqualTo("entlassen", false) - query.limit = 100000 + query.whereEqualTo(COLUMN_TECHNIKER_ENTLASSEN, false) + query.orderByAscending(COLUMN_TECHNIKER_NAME) + query.limit = -1 fetchTechniker() @@ -51,12 +59,12 @@ class ManageTechnikerFragment : Fragment() { val view = it.view val newName = view.name.text.toString() val newAdmin = view.admin.isChecked - ParseObject.create("Techniker").apply { - put("name", newName) - put("admin", newAdmin) + ParseObject.create(CLASS_TECHNIKER).apply { + put(COLUMN_TECHNIKER_NAME, newName) + put(COLUMN_TECHNIKER_ADMIN, newAdmin) saveInBackground { if (it == null) { - Toast.makeText(myContext, "Hinzugefügt", Toast.LENGTH_SHORT).show() + Toasty.success(myContext, "Hinzugefügt").show() showAnimation(true) fetchTechniker() } else { @@ -84,26 +92,30 @@ class ManageTechnikerFragment : Fragment() { private fun fetchTechniker() { technikerNames.clear() - binding.list.adapter = ArrayAdapter(myContext, android.R.layout.simple_list_item_1, technikerNames) + binding.list.adapter = ArrayAdapter( + myContext, + android.R.layout.simple_list_item_1, + technikerNames + ) query.findInBackground { objects, e -> if (e == null) { - techniker = objects.sortedBy { - it.getString("name")!! - }.toMutableList() - + techniker = objects objects.forEach { - technikerNames.add(it.getString("name")!!) + technikerNames.add(it.getString(COLUMN_TECHNIKER_NAME)!!) } - technikerNames.sort() - val adapter = ArrayAdapter(myContext, android.R.layout.simple_list_item_1, technikerNames) + val adapter = ArrayAdapter( + myContext, + android.R.layout.simple_list_item_1, + technikerNames + ) binding.list.adapter = adapter showAnimation(false) binding.list.setOnItemClickListener { _, _, index, _ -> val dialogView = layoutInflater.inflate(R.layout.techniker_dialog, null) dialogView.findViewById(R.id.name).setText(technikerNames[index]) - dialogView.findViewById(R.id.admin).isChecked = techniker[index].getBoolean("admin") + dialogView.findViewById(R.id.admin).isChecked = techniker[index].getBoolean(COLUMN_TECHNIKER_ADMIN) MaterialDialog(myContext, BottomSheet(LayoutMode.WRAP_CONTENT)).show { title(text = "Techniker-Info") customView(0, dialogView, horizontalPadding = true) @@ -112,13 +124,15 @@ class ManageTechnikerFragment : Fragment() { val newName = view.name.text.toString() val newAdmin = view.admin.isChecked val parseObject = techniker[index] - if (newName != parseObject.getString("name") || newAdmin != parseObject.getBoolean("admin")) { + if (newName != parseObject.getString(COLUMN_TECHNIKER_NAME) || + newAdmin != parseObject.getBoolean(COLUMN_TECHNIKER_ADMIN) + ) { parseObject.apply { - put("name", newName) - put("admin", newAdmin) + put(COLUMN_TECHNIKER_NAME, newName) + put(COLUMN_TECHNIKER_ADMIN, newAdmin) saveInBackground { if (it == null) { - Toast.makeText(myContext, "Gespeichert", Toast.LENGTH_SHORT).show() + Toasty.success(myContext, "Gespeichert").show() showAnimation(true) fetchTechniker() } else { @@ -136,10 +150,10 @@ class ManageTechnikerFragment : Fragment() { message(text = "Soll '$name' wirklich entlassen werden?") positiveButton(text = "Ja") { techniker[index].apply { - put("entlassen", true) + put(COLUMN_TECHNIKER_ENTLASSEN, true) saveInBackground { if (it == null) { - Toast.makeText(myContext, "Gespeichert", Toast.LENGTH_SHORT).show() + Toasty.success(myContext, "Gespeichert").show() showAnimation(true) fetchTechniker() } else {