Skip to content

Commit c6c0c6b

Browse files
authored
Merge pull request #128 from FossifyOrg/fix_incorrect_toast
Fix misleading toast when disabling one-shot alarms
2 parents 1cc26e7 + 6df69d9 commit c6c0c6b

File tree

1 file changed

+49
-29
lines changed

1 file changed

+49
-29
lines changed

app/src/main/kotlin/org/fossify/clock/adapters/AlarmsAdapter.kt

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ import androidx.recyclerview.widget.RecyclerView
1010
import org.fossify.clock.R
1111
import org.fossify.clock.activities.SimpleActivity
1212
import org.fossify.clock.databinding.ItemAlarmBinding
13-
import org.fossify.clock.extensions.*
13+
import org.fossify.clock.extensions.config
14+
import org.fossify.clock.extensions.dbHelper
15+
import org.fossify.clock.extensions.getAlarmSelectedDaysString
16+
import org.fossify.clock.extensions.getFormattedTime
17+
import org.fossify.clock.extensions.swap
1418
import org.fossify.clock.helpers.TODAY_BIT
1519
import org.fossify.clock.helpers.TOMORROW_BIT
1620
import org.fossify.clock.helpers.getCurrentDayMinutes
@@ -28,8 +32,11 @@ import org.fossify.commons.interfaces.StartReorderDragListener
2832
import org.fossify.commons.views.MyRecyclerView
2933

3034
class AlarmsAdapter(
31-
activity: SimpleActivity, var alarms: ArrayList<Alarm>, val toggleAlarmInterface: ToggleAlarmInterface,
32-
recyclerView: MyRecyclerView, itemClick: (Any) -> Unit,
35+
activity: SimpleActivity,
36+
var alarms: ArrayList<Alarm>,
37+
val toggleAlarmInterface: ToggleAlarmInterface,
38+
recyclerView: MyRecyclerView,
39+
itemClick: (Any) -> Unit,
3340
) : MyRecyclerViewAdapter(activity, recyclerView, itemClick), ItemTouchHelperContract {
3441

3542
private var startReorderDragListener: StartReorderDragListener
@@ -115,7 +122,9 @@ class AlarmsAdapter(
115122
activity.dbHelper.deleteAlarms(alarmsToRemove)
116123
}
117124

118-
private fun getSelectedItems() = alarms.filter { selectedKeys.contains(it.id) } as ArrayList<Alarm>
125+
private fun getSelectedItems(): ArrayList<Alarm> {
126+
return alarms.filter { selectedKeys.contains(it.id) } as ArrayList<Alarm>
127+
}
119128

120129
@SuppressLint("ClickableViewAccessibility")
121130
private fun setupView(view: View, alarm: Alarm, holder: ViewHolder) {
@@ -143,35 +152,46 @@ class AlarmsAdapter(
143152
alarmSwitch.isChecked = alarm.isEnabled
144153
alarmSwitch.setColors(textColor, properPrimaryColor, backgroundColor)
145154
alarmSwitch.setOnClickListener {
146-
if (alarm.days > 0) {
147-
if (activity.config.wasAlarmWarningShown) {
148-
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
149-
} else {
150-
ConfirmationDialog(
151-
activity,
152-
messageId = org.fossify.commons.R.string.alarm_warning,
153-
positive = org.fossify.commons.R.string.ok,
154-
negative = 0
155-
) {
156-
activity.config.wasAlarmWarningShown = true
155+
when {
156+
alarm.days > 0 -> {
157+
if (activity.config.wasAlarmWarningShown) {
157158
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
159+
} else {
160+
ConfirmationDialog(
161+
activity = activity,
162+
messageId = org.fossify.commons.R.string.alarm_warning,
163+
positive = org.fossify.commons.R.string.ok,
164+
negative = 0
165+
) {
166+
activity.config.wasAlarmWarningShown = true
167+
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
168+
}
158169
}
159170
}
160-
} else if (alarm.days == TODAY_BIT) {
161-
if (alarm.timeInMinutes <= getCurrentDayMinutes()) {
162-
alarm.days = TOMORROW_BIT
163-
alarmDays.text = resources.getString(org.fossify.commons.R.string.tomorrow)
171+
172+
alarm.days == TODAY_BIT -> {
173+
if (alarm.timeInMinutes <= getCurrentDayMinutes()) {
174+
alarm.days = TOMORROW_BIT
175+
alarmDays.text =
176+
resources.getString(org.fossify.commons.R.string.tomorrow)
177+
}
178+
activity.dbHelper.updateAlarm(alarm)
179+
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
180+
}
181+
182+
alarm.days == TOMORROW_BIT -> {
183+
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
184+
}
185+
186+
// Unreachable zombie branch. Days are always set to a non-zero value.
187+
alarmSwitch.isChecked -> {
188+
activity.toast(R.string.no_days_selected)
189+
alarmSwitch.isChecked = false
190+
}
191+
192+
else -> {
193+
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
164194
}
165-
activity.dbHelper.updateAlarm(alarm)
166-
root.context.scheduleNextAlarm(alarm, true)
167-
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
168-
} else if (alarm.days == TOMORROW_BIT) {
169-
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
170-
} else if (alarmSwitch.isChecked) {
171-
activity.toast(R.string.no_days_selected)
172-
alarmSwitch.isChecked = false
173-
} else {
174-
toggleAlarmInterface.alarmToggled(alarm.id, alarmSwitch.isChecked)
175195
}
176196
}
177197
}

0 commit comments

Comments
 (0)