diff --git a/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt b/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt
index f6ab091..65764cc 100644
--- a/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt
+++ b/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt
@@ -1,6 +1,5 @@
package com.cyb3rko.techniklogger.fragments
-import android.annotation.SuppressLint
import android.content.Context
import android.os.Bundle
import android.text.Html
@@ -12,17 +11,14 @@ import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.cyb3rko.techniklogger.*
-import com.cyb3rko.techniklogger.CURRENT_YEAR
import com.cyb3rko.techniklogger.data.HourMinute
-import com.cyb3rko.techniklogger.data.objects.Mission
import com.cyb3rko.techniklogger.data.ParseController
+import com.cyb3rko.techniklogger.data.objects.Mission
import com.cyb3rko.techniklogger.databinding.FragmentMissionPusherBinding
+import com.cyb3rko.techniklogger.modals.DatePickerBuilder
import com.cyb3rko.techniklogger.modals.TimePickerBuilder
-import com.google.android.material.datepicker.MaterialDatePicker
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.parse.ParseObject
-import java.text.SimpleDateFormat
-import java.util.*
class MissionPusherFragment : Fragment() {
private var _binding: FragmentMissionPusherBinding? = null
@@ -36,8 +32,6 @@ class MissionPusherFragment : Fragment() {
private var duration = 0f
private lateinit var location: String
private lateinit var name: String
- @SuppressLint("SimpleDateFormat")
- private val simpleDateFormat = SimpleDateFormat("dd.MM.yyyy")
// This property is only valid between onCreateView and onDestroyView.
private val binding get() = _binding!!
@@ -54,14 +48,12 @@ class MissionPusherFragment : Fragment() {
getArgumentInformation()
restoreInformation()
- val builder = MaterialDatePicker.Builder.datePicker()
- .setTitleText("Datum")
+ val datePickerBuilder = DatePickerBuilder()
val timePickerBuilder = TimePickerBuilder()
binding.dateButton.setOnClickListener {
if (date != "") {
- val dateInMillis = simpleDateFormat.parse(date)!!.time
- builder.setSelection(dateInMillis + 7200000)
+ datePickerBuilder.setInitialDate(date)
}
if (time != "") {
@@ -71,21 +63,19 @@ class MissionPusherFragment : Fragment() {
initialEnd = HourMinute.fromString(times[1])
}
}
- val picker = builder.build()
- picker.addOnPositiveButtonClickListener {
- date = simpleDateFormat.format(Date(it))
- binding.dateView.text = Html.fromHtml("Datum:
${date}")
- timePickerBuilder.show(requireActivity(), null) { time, duration ->
+ datePickerBuilder.show(requireActivity()) { newDate ->
+ binding.dateView.text = Html.fromHtml("Datum:
${newDate}")
+ date = newDate
+
+ timePickerBuilder.show(requireActivity(), null) { newTime, newDuration ->
binding.durationView.text = Html.fromHtml(
- "Dauer: $time Uhr, $duration Stunden"
+ "Dauer: $newTime Uhr, $newDuration Stunden"
)
- this.time = time
- this.duration = duration
+ time = newTime
+ duration = newDuration
}
}
-
- picker.show(requireActivity().supportFragmentManager, picker.tag)
}
if (childKey != "") {
diff --git a/app/src/main/java/com/cyb3rko/techniklogger/modals/DatePickerBuilder.kt b/app/src/main/java/com/cyb3rko/techniklogger/modals/DatePickerBuilder.kt
new file mode 100644
index 0000000..c7ae144
--- /dev/null
+++ b/app/src/main/java/com/cyb3rko/techniklogger/modals/DatePickerBuilder.kt
@@ -0,0 +1,37 @@
+package com.cyb3rko.techniklogger.modals
+
+import android.annotation.SuppressLint
+import androidx.fragment.app.FragmentActivity
+import com.google.android.material.datepicker.MaterialDatePicker
+import java.text.SimpleDateFormat
+import java.util.*
+
+internal class DatePickerBuilder {
+ companion object {
+ private const val TAG = "DatePickerDialog"
+ }
+
+ @SuppressLint("SimpleDateFormat")
+ private val simpleDateFormat = SimpleDateFormat("dd.MM.yyyy")
+ private var initialDate = 0L
+
+ internal fun setInitialDate(date: String) {
+ initialDate = simpleDateFormat.parse(date)!!.time + 7200000
+ }
+
+ internal fun show(activity: FragmentActivity, action: (date: String) -> Unit) {
+ val builder = MaterialDatePicker.Builder.datePicker()
+ .setTitleText("Datum")
+
+ if (initialDate != 0L) builder.setSelection(initialDate)
+
+ val picker = builder.build()
+
+ picker.addOnPositiveButtonClickListener {
+ val date = simpleDateFormat.format(Date(it))
+ action(date)
+ }
+
+ picker.show(activity.supportFragmentManager, TAG)
+ }
+}