Implementiere neue TimePicker in MissionPusher

master
Niko Diamadis 4 years ago
parent 2515840230
commit b802e3798d
Signed by: niko
GPG Key ID: BE53B0B17B1B142E

@ -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("<b>Datum:</b><br/>${date}")
activity?.let { it1 -> picker2.show(it1.supportFragmentManager, picker2.tag) }
timePickerBuilder.show(requireActivity(), null) { time, duration ->
binding.durationView.text = Html.fromHtml(
"<b>Dauer:</b> $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("<b>Dauer:</b> $time Uhr, $duration Stunden")
}
activity?.let { it1 -> picker.show(it1.supportFragmentManager, picker.tag) }
picker.show(requireActivity().supportFragmentManager, picker.tag)
}
if (childKey != "") {

@ -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()
var missionStart: HourMinute? = null
var missionEnd: HourMinute? = null
if (missionTime != null) {
val missionTimes = missionTime.split(" Uhr")[0].split(" - ")
val missionStart = HourMinute.fromString(missionTimes[0])
val missionEnd = HourMinute.fromString(missionTimes[1])
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")

Loading…
Cancel
Save