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 32f2fe5..f6ab091 100644
--- a/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt
+++ b/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionPusherFragment.kt
@@ -13,15 +13,14 @@ 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.databinding.FragmentMissionPusherBinding
+import com.cyb3rko.techniklogger.modals.TimePickerBuilder
import com.google.android.material.datepicker.MaterialDatePicker
import com.google.android.material.dialog.MaterialAlertDialogBuilder
-import com.google.android.material.timepicker.MaterialTimePicker
-import com.google.android.material.timepicker.TimeFormat
import com.parse.ParseObject
-import java.sql.Time
import java.text.SimpleDateFormat
import java.util.*
@@ -34,8 +33,6 @@ class MissionPusherFragment : Fragment() {
private var date = ""
private lateinit var mission: Mission
private var time = ""
- private lateinit var time1: Time
- private lateinit var time2: Time
private var duration = 0f
private lateinit var location: String
private lateinit var name: String
@@ -66,53 +63,29 @@ class MissionPusherFragment : Fragment() {
val dateInMillis = simpleDateFormat.parse(date)!!.time
builder.setSelection(dateInMillis + 7200000)
}
+
if (time != "") {
- val times = time.split(" - ")
- builder2.setHour(times[0].split(":")[0].toInt())
- .setMinute(times[0].split(":")[1].toInt())
- builder3.setHour(times[1].split(":")[0].toInt())
- .setMinute(times[1].split(":")[1].toInt())
+ val times = time.split(" Uhr")[0].split(" - ")
+ timePickerBuilder.apply {
+ initialStart = HourMinute.fromString(times[0])
+ initialEnd = HourMinute.fromString(times[1])
+ }
}
- var tempTime = ""
val picker = builder.build()
- val picker2 = builder2.build()
- val picker3 = builder3.build()
- var hour: String
- var minute: String
- var hoursInMillis: Long
- var minutesInMillis: Long
picker.addOnPositiveButtonClickListener {
date = simpleDateFormat.format(Date(it))
binding.dateView.text = Html.fromHtml("Datum:
${date}")
- activity?.let { it1 -> picker2.show(it1.supportFragmentManager, picker2.tag) }
+
+ timePickerBuilder.show(requireActivity(), null) { time, duration ->
+ binding.durationView.text = Html.fromHtml(
+ "Dauer: $time Uhr, $duration Stunden"
+ )
+ this.time = time
+ this.duration = duration
+ }
}
- picker2.addOnPositiveButtonClickListener {
- hour = picker2.hour.toString()
- hour = if (hour.length != 1) hour else "0$hour"
- minute = picker2.minute.toString()
- minute = if (minute.length != 1) minute else "0$minute"
- hoursInMillis = picker2.hour.toLong() * 3600000
- minutesInMillis = picker2.minute.toLong() * 60000
- time1 = Time(hoursInMillis + minutesInMillis)
- tempTime += "${hour}:${minute} - "
- activity?.let { it1 -> picker3.show(it1.supportFragmentManager, picker3.tag) }
- }
- picker3.addOnPositiveButtonClickListener {
- hour = picker3.hour.toString()
- hour = if (hour.length != 1) hour else "0$hour"
- minute = picker3.minute.toString()
- minute = if (minute.length != 1) minute else "0$minute"
- hoursInMillis = hour.toLong() * 3600000
- minutesInMillis = minute.toLong() * 60000
- time2 = Time(hoursInMillis + minutesInMillis)
- tempTime += "${hour}:${minute}"
- time = tempTime
-// duration = DecimalFormat("#.#").format((time2.time - time1.time) / 3600 / 1000.toFloat())
-// duration = duration.replace(",", ".")
- duration = (time2.time - time1.time) / 3600 / 1000.toFloat()
- binding.durationView.text = Html.fromHtml("Dauer: $time Uhr, $duration Stunden")
- }
- activity?.let { it1 -> picker.show(it1.supportFragmentManager, picker.tag) }
+
+ picker.show(requireActivity().supportFragmentManager, picker.tag)
}
if (childKey != "") {
diff --git a/app/src/main/java/com/cyb3rko/techniklogger/modals/TimePickerBuilder.kt b/app/src/main/java/com/cyb3rko/techniklogger/modals/TimePickerBuilder.kt
index 8996e0e..f815d9b 100644
--- a/app/src/main/java/com/cyb3rko/techniklogger/modals/TimePickerBuilder.kt
+++ b/app/src/main/java/com/cyb3rko/techniklogger/modals/TimePickerBuilder.kt
@@ -20,10 +20,10 @@ internal class TimePickerBuilder {
internal fun show(
activity: FragmentActivity,
- missionTime: String,
+ missionTime: String?,
action: (time: String, duration: Float) -> Unit
) {
- if (!missionTime.contains("Uhr")) {
+ if (missionTime != null && !missionTime.contains("Uhr")) {
activity.showWarningToast("Ändern der Arbeitszeit bei fehlendem Einsatz-Zeitraum nicht möglich")
return
}
@@ -44,13 +44,18 @@ internal class TimePickerBuilder {
val picker1 = builder1.build()
val picker2 = builder2.build()
- val missionTimes = missionTime.split(" Uhr")[0].split(" - ")
- val missionStart = HourMinute.fromString(missionTimes[0])
- val missionEnd = HourMinute.fromString(missionTimes[1])
+ var missionStart: HourMinute? = null
+ var missionEnd: HourMinute? = null
+ if (missionTime != null) {
+ val missionTimes = missionTime.split(" Uhr")[0].split(" - ")
+ missionStart = HourMinute.fromString(missionTimes[0])
+ missionEnd = HourMinute.fromString(missionTimes[1])
+ }
+
var start = HourMinute(0, 0)
picker1.addOnPositiveButtonClickListener {
start = HourMinute(picker1.hour, picker1.minute)
- if (start < missionStart) {
+ if (missionStart != null && start < missionStart) {
activity.showWarningToast("Start muss im Einsatz-Zeitraum liegen")
} else {
picker2.show(activity.supportFragmentManager, "$TAG von")
@@ -60,7 +65,7 @@ internal class TimePickerBuilder {
var end: HourMinute
picker2.addOnPositiveButtonClickListener {
end = HourMinute(picker2.hour, picker2.minute)
- if (end > missionEnd) {
+ if (missionEnd != null && end > missionEnd) {
activity.showWarningToast("Ende muss im Einsatz-Zeitraum liegen")
} else if (start >= end) {
activity.showWarningToast("Ungültige Arbeitszeit erkannt")