@@ -12,6 +12,7 @@ sealed class HomeContract {
12
12
val alarms : List <Alarm > = emptyList(),
13
13
val lastAddedAlarmIndex : Int? = null ,
14
14
val dropdownMenuExpanded : Boolean = false ,
15
+ val sortDropDownMenuExpanded : Boolean = false ,
15
16
val selectedAlarmIds : Set <Long > = emptySet(),
16
17
val isSelectionMode : Boolean = false ,
17
18
val isDeleteDialogVisible : Boolean = false ,
@@ -25,17 +26,27 @@ sealed class HomeContract {
25
26
val name : String = " " ,
26
27
val activeItemMenu : Long? = null ,
27
28
val activeItemMenuPosition : Pair <Float , Float >? = null ,
29
+ val sortOrder : AlarmSortOrder = AlarmSortOrder .DEFAULT ,
28
30
) : UiState {
29
31
val isAllSelected: Boolean
30
32
get() = alarms.isNotEmpty() && selectedAlarmIds.size == alarms.size
33
+
31
34
val hasActivatedAlarm: Boolean
32
35
get() = alarms.any { it.isAlarmActive }
36
+
37
+ val sortedAlarms: List <Alarm >
38
+ get() = when (sortOrder) {
39
+ AlarmSortOrder .DEFAULT -> alarms
40
+ AlarmSortOrder .ACTIVATION -> alarms.sortedByDescending { it.isAlarmActive }
41
+ }
33
42
}
34
43
35
44
sealed class Action {
36
45
data object NavigateToAlarmCreation : Action ()
37
46
data object ToggleMultiSelectionMode : Action ()
38
- data object ToggleDropdownMenuVisibility : Action ()
47
+ data object ShowDropDownMenu : Action ()
48
+ data object ShowSortDropDownMenu : Action ()
49
+ data object HideDropDownMenu : Action ()
39
50
data class ToggleAlarmSelection (val alarmId : Long ) : Action()
40
51
data class ToggleAlarmActivation (val alarmId : Long ) : Action()
41
52
data class SwipeToDeleteAlarm (val id : Long ) : Action()
@@ -57,6 +68,7 @@ sealed class HomeContract {
57
68
data object NavigateToSetting : Action ()
58
69
data class ShowItemMenu (val alarmId : Long , val x : Float , val y : Float ) : Action()
59
70
data object HideItemMenu : Action ()
71
+ data class SetSortOrder (val sortOrder : AlarmSortOrder ) : Action()
60
72
}
61
73
62
74
sealed class SideEffect : com.yapp.ui.base.SideEffect {
@@ -76,4 +88,9 @@ sealed class HomeContract {
76
88
val onAction : () -> Unit ,
77
89
) : SideEffect()
78
90
}
91
+
92
+ enum class AlarmSortOrder {
93
+ DEFAULT ,
94
+ ACTIVATION ,
95
+ }
79
96
}
0 commit comments