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 androidx.navigation.fragment.navArgs
import com.cyb3rko.techniklogger.* import com.cyb3rko.techniklogger.*
import com.cyb3rko.techniklogger.CURRENT_YEAR import com.cyb3rko.techniklogger.CURRENT_YEAR
import com.cyb3rko.techniklogger.data.HourMinute
import com.cyb3rko.techniklogger.data.objects.Mission import com.cyb3rko.techniklogger.data.objects.Mission
import com.cyb3rko.techniklogger.data.ParseController import com.cyb3rko.techniklogger.data.ParseController
import com.cyb3rko.techniklogger.databinding.FragmentMissionPusherBinding import com.cyb3rko.techniklogger.databinding.FragmentMissionPusherBinding
import com.cyb3rko.techniklogger.modals.TimePickerBuilder
import com.google.android.material.datepicker.MaterialDatePicker import com.google.android.material.datepicker.MaterialDatePicker
import com.google.android.material.dialog.MaterialAlertDialogBuilder 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 com.parse.ParseObject
import java.sql.Time
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -34,8 +33,6 @@ class MissionPusherFragment : Fragment() {
private var date = "" private var date = ""
private lateinit var mission: Mission private lateinit var mission: Mission
private var time = "" private var time = ""
private lateinit var time1: Time
private lateinit var time2: Time
private var duration = 0f private var duration = 0f
private lateinit var location: String private lateinit var location: String
private lateinit var name: String private lateinit var name: String
@ -66,53 +63,29 @@ class MissionPusherFragment : Fragment() {
val dateInMillis = simpleDateFormat.parse(date)!!.time val dateInMillis = simpleDateFormat.parse(date)!!.time
builder.setSelection(dateInMillis + 7200000) builder.setSelection(dateInMillis + 7200000)
} }
if (time != "") { if (time != "") {
val times = time.split(" - ") val times = time.split(" Uhr")[0].split(" - ")
builder2.setHour(times[0].split(":")[0].toInt()) timePickerBuilder.apply {
.setMinute(times[0].split(":")[1].toInt()) initialStart = HourMinute.fromString(times[0])
builder3.setHour(times[1].split(":")[0].toInt()) initialEnd = HourMinute.fromString(times[1])
.setMinute(times[1].split(":")[1].toInt()) }
} }
var tempTime = ""
val picker = builder.build() 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 { picker.addOnPositiveButtonClickListener {
date = simpleDateFormat.format(Date(it)) date = simpleDateFormat.format(Date(it))
binding.dateView.text = Html.fromHtml("<b>Datum:</b><br/>${date}") 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() picker.show(requireActivity().supportFragmentManager, picker.tag)
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) }
} }
if (childKey != "") { if (childKey != "") {

@ -20,10 +20,10 @@ internal class TimePickerBuilder {
internal fun show( internal fun show(
activity: FragmentActivity, activity: FragmentActivity,
missionTime: String, missionTime: String?,
action: (time: String, duration: Float) -> Unit 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") activity.showWarningToast("Ändern der Arbeitszeit bei fehlendem Einsatz-Zeitraum nicht möglich")
return return
} }
@ -44,13 +44,18 @@ internal class TimePickerBuilder {
val picker1 = builder1.build() val picker1 = builder1.build()
val picker2 = builder2.build() val picker2 = builder2.build()
val missionTimes = missionTime.split(" Uhr")[0].split(" - ") var missionStart: HourMinute? = null
val missionStart = HourMinute.fromString(missionTimes[0]) var missionEnd: HourMinute? = null
val missionEnd = HourMinute.fromString(missionTimes[1]) 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) var start = HourMinute(0, 0)
picker1.addOnPositiveButtonClickListener { picker1.addOnPositiveButtonClickListener {
start = HourMinute(picker1.hour, picker1.minute) start = HourMinute(picker1.hour, picker1.minute)
if (start < missionStart) { if (missionStart != null && start < missionStart) {
activity.showWarningToast("Start muss im Einsatz-Zeitraum liegen") activity.showWarningToast("Start muss im Einsatz-Zeitraum liegen")
} else { } else {
picker2.show(activity.supportFragmentManager, "$TAG von") picker2.show(activity.supportFragmentManager, "$TAG von")
@ -60,7 +65,7 @@ internal class TimePickerBuilder {
var end: HourMinute var end: HourMinute
picker2.addOnPositiveButtonClickListener { picker2.addOnPositiveButtonClickListener {
end = HourMinute(picker2.hour, picker2.minute) end = HourMinute(picker2.hour, picker2.minute)
if (end > missionEnd) { if (missionEnd != null && end > missionEnd) {
activity.showWarningToast("Ende muss im Einsatz-Zeitraum liegen") activity.showWarningToast("Ende muss im Einsatz-Zeitraum liegen")
} else if (start >= end) { } else if (start >= end) {
activity.showWarningToast("Ungültige Arbeitszeit erkannt") activity.showWarningToast("Ungültige Arbeitszeit erkannt")

Loading…
Cancel
Save