@@ -8,6 +8,7 @@ import io.github.sds100.keymapper.system.display.Orientation
88import io.github.sds100.keymapper.util.getKey
99import io.github.sds100.keymapper.util.valueOrNull
1010import kotlinx.serialization.Serializable
11+ import java.time.LocalTime
1112import java.util.UUID
1213
1314/* *
@@ -216,6 +217,20 @@ sealed class Constraint {
216217 data class Discharging (override val uid : String = UUID .randomUUID().toString()) : Constraint() {
217218 override val id: ConstraintId = ConstraintId .DISCHARGING
218219 }
220+
221+ @Serializable
222+ data class Time (
223+ override val uid : String = UUID .randomUUID().toString(),
224+ val startHour : Int ,
225+ val startMinute : Int ,
226+ val endHour : Int ,
227+ val endMinute : Int ,
228+ ) : Constraint() {
229+ override val id: ConstraintId = ConstraintId .TIME
230+
231+ val startTime: LocalTime by lazy { LocalTime .of(startHour, startMinute) }
232+ val endTime: LocalTime by lazy { LocalTime .of(endHour, endMinute) }
233+ }
219234}
220235
221236object ConstraintModeEntityMapper {
@@ -375,6 +390,28 @@ object ConstraintEntityMapper {
375390 ConstraintEntity .CHARGING -> Constraint .Charging (uid = entity.uid)
376391 ConstraintEntity .DISCHARGING -> Constraint .Discharging (uid = entity.uid)
377392
393+ ConstraintEntity .TIME -> {
394+ val startTime =
395+ entity.extras.getData(ConstraintEntity .EXTRA_START_TIME ).valueOrNull()!!
396+ .split(" :" )
397+ val startHour = startTime[0 ].toInt()
398+ val startMin = startTime[1 ].toInt()
399+
400+ val endTime =
401+ entity.extras.getData(ConstraintEntity .EXTRA_END_TIME ).valueOrNull()!!
402+ .split(" :" )
403+ val endHour = endTime[0 ].toInt()
404+ val endMin = endTime[1 ].toInt()
405+
406+ Constraint .Time (
407+ uid = entity.uid,
408+ startHour = startHour,
409+ startMinute = startMin,
410+ endHour = endHour,
411+ endMinute = endMin,
412+ )
413+ }
414+
378415 else -> throw Exception (" don't know how to convert constraint entity with type ${entity.type} " )
379416 }
380417 }
@@ -606,5 +643,18 @@ object ConstraintEntityMapper {
606643 uid = constraint.uid,
607644 ConstraintEntity .DISCHARGING ,
608645 )
646+
647+ is Constraint .Time -> ConstraintEntity (
648+ uid = constraint.uid,
649+ type = ConstraintEntity .TIME ,
650+ EntityExtra (
651+ ConstraintEntity .EXTRA_START_TIME ,
652+ " ${constraint.startHour} :${constraint.startMinute} " ,
653+ ),
654+ EntityExtra (
655+ ConstraintEntity .EXTRA_END_TIME ,
656+ " ${constraint.endHour} :${constraint.endMinute} " ,
657+ ),
658+ )
609659 }
610660}
0 commit comments