mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-05-24 15:04:23 +02:00
allow snoozing or dismissing alarm by dragging the middle element
This commit is contained in:
parent
9352fa0221
commit
cde58b8c8c
@ -23,6 +23,7 @@ class ReminderActivity : SimpleActivity() {
|
|||||||
private val increaseVolumeHandler = Handler()
|
private val increaseVolumeHandler = Handler()
|
||||||
private val maxReminderDurationHandler = Handler()
|
private val maxReminderDurationHandler = Handler()
|
||||||
private var isAlarmReminder = false
|
private var isAlarmReminder = false
|
||||||
|
private var didVibrate = false
|
||||||
private var alarm: Alarm? = null
|
private var alarm: Alarm? = null
|
||||||
private var mediaPlayer: MediaPlayer? = null
|
private var mediaPlayer: MediaPlayer? = null
|
||||||
private var lastVolumeValue = 0.1f
|
private var lastVolumeValue = 0.1f
|
||||||
@ -67,32 +68,50 @@ class ReminderActivity : SimpleActivity() {
|
|||||||
reminder_draggable_background.applyColorFilter(getAdjustedPrimaryColor())
|
reminder_draggable_background.applyColorFilter(getAdjustedPrimaryColor())
|
||||||
var minDragX = 0f
|
var minDragX = 0f
|
||||||
var maxDragX = 0f
|
var maxDragX = 0f
|
||||||
|
var initialDraggableX = 0f
|
||||||
|
|
||||||
reminder_dismiss.onGlobalLayout {
|
reminder_dismiss.onGlobalLayout {
|
||||||
minDragX = reminder_snooze.left.toFloat()
|
minDragX = reminder_snooze.left.toFloat()
|
||||||
maxDragX = reminder_dismiss.left.toFloat()
|
maxDragX = reminder_dismiss.left.toFloat()
|
||||||
|
initialDraggableX = reminder_draggable.left.toFloat()
|
||||||
}
|
}
|
||||||
|
|
||||||
reminder_draggable.setOnTouchListener { v, event ->
|
reminder_draggable.setOnTouchListener { v, event ->
|
||||||
when (event.action) {
|
when (event.action) {
|
||||||
MotionEvent.ACTION_DOWN -> dragDownX = event.x
|
MotionEvent.ACTION_DOWN -> {
|
||||||
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> dragDownX = 0f
|
dragDownX = event.x
|
||||||
|
reminder_draggable_background.animate().alpha(0f)
|
||||||
|
}
|
||||||
|
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
|
||||||
|
dragDownX = 0f
|
||||||
|
if (!didVibrate) {
|
||||||
|
reminder_draggable.animate().x(initialDraggableX).withEndAction {
|
||||||
|
reminder_draggable_background.animate().alpha(0.2f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
MotionEvent.ACTION_MOVE -> {
|
MotionEvent.ACTION_MOVE -> {
|
||||||
reminder_draggable.x = Math.min(maxDragX, Math.max(minDragX, event.rawX - dragDownX))
|
reminder_draggable.x = Math.min(maxDragX, Math.max(minDragX, event.rawX - dragDownX))
|
||||||
|
if (reminder_draggable.x >= maxDragX - 50f) {
|
||||||
|
if (!didVibrate) {
|
||||||
|
reminder_draggable.performHapticFeedback()
|
||||||
|
}
|
||||||
|
didVibrate = true
|
||||||
|
finishActivity()
|
||||||
|
} else if (reminder_draggable.x <= minDragX + 50f) {
|
||||||
|
if (!didVibrate) {
|
||||||
|
reminder_draggable.performHapticFeedback()
|
||||||
|
}
|
||||||
|
didVibrate = true
|
||||||
|
snoozeAlarm()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
reminder_dismiss.setOnClickListener {
|
|
||||||
finish()
|
|
||||||
}
|
|
||||||
|
|
||||||
reminder_snooze.beVisibleIf(isAlarmReminder)
|
reminder_snooze.beVisibleIf(isAlarmReminder)
|
||||||
reminder_snooze.applyColorFilter(config.textColor)
|
reminder_snooze.applyColorFilter(config.textColor)
|
||||||
reminder_snooze.setOnClickListener {
|
|
||||||
snoozeClicked()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupAudio() {
|
private fun setupAudio() {
|
||||||
@ -125,7 +144,7 @@ class ReminderActivity : SimpleActivity() {
|
|||||||
|
|
||||||
override fun onNewIntent(intent: Intent?) {
|
override fun onNewIntent(intent: Intent?) {
|
||||||
super.onNewIntent(intent)
|
super.onNewIntent(intent)
|
||||||
finish()
|
finishActivity()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
@ -141,12 +160,13 @@ class ReminderActivity : SimpleActivity() {
|
|||||||
mediaPlayer = null
|
mediaPlayer = null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun snoozeClicked() {
|
private fun snoozeAlarm() {
|
||||||
|
destroyPlayer()
|
||||||
if (config.useSameSnooze) {
|
if (config.useSameSnooze) {
|
||||||
setupAlarmClock(alarm!!, config.snoozeTime * MINUTE_SECONDS)
|
setupAlarmClock(alarm!!, config.snoozeTime * MINUTE_SECONDS)
|
||||||
finishActivity()
|
finishActivity()
|
||||||
} else {
|
} else {
|
||||||
showPickSecondsDialog(config.snoozeTime * MINUTE_SECONDS, true) {
|
showPickSecondsDialog(config.snoozeTime * MINUTE_SECONDS, true, cancelCallback = { finishActivity() }) {
|
||||||
config.snoozeTime = it / MINUTE_SECONDS
|
config.snoozeTime = it / MINUTE_SECONDS
|
||||||
setupAlarmClock(alarm!!, it)
|
setupAlarmClock(alarm!!, it)
|
||||||
finishActivity()
|
finishActivity()
|
||||||
|
@ -10,6 +10,6 @@
|
|||||||
android:pivotY="50%"
|
android:pivotY="50%"
|
||||||
android:repeatCount="infinite"
|
android:repeatCount="infinite"
|
||||||
android:repeatMode="reverse"
|
android:repeatMode="reverse"
|
||||||
android:toXScale="2.0"
|
android:toXScale="1.8"
|
||||||
android:toYScale="2.0"/>
|
android:toYScale="1.8"/>
|
||||||
|
|
||||||
|
@ -32,9 +32,10 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/reminder_snooze"
|
android:id="@+id/reminder_snooze"
|
||||||
android:layout_width="@dimen/stopwatch_button_small_size"
|
android:layout_width="@dimen/reminder_background_min_size"
|
||||||
android:layout_height="@dimen/stopwatch_button_small_size"
|
android:layout_height="@dimen/reminder_background_min_size"
|
||||||
android:padding="@dimen/normal_margin"
|
android:clickable="false"
|
||||||
|
android:padding="@dimen/activity_margin"
|
||||||
android:src="@drawable/ic_snooze_big"
|
android:src="@drawable/ic_snooze_big"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/reminder_draggable"
|
app:layout_constraintBottom_toBottomOf="@+id/reminder_draggable"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/reminder_draggable"
|
app:layout_constraintEnd_toStartOf="@+id/reminder_draggable"
|
||||||
@ -48,7 +49,7 @@
|
|||||||
android:layout_height="@dimen/reminder_background_min_size"
|
android:layout_height="@dimen/reminder_background_min_size"
|
||||||
android:layout_marginBottom="@dimen/activity_margin"
|
android:layout_marginBottom="@dimen/activity_margin"
|
||||||
android:alpha="0.2"
|
android:alpha="0.2"
|
||||||
android:padding="@dimen/normal_margin"
|
android:padding="@dimen/medium_margin"
|
||||||
android:src="@drawable/pulsing_background"
|
android:src="@drawable/pulsing_background"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/reminder_dismiss"
|
app:layout_constraintEnd_toStartOf="@+id/reminder_dismiss"
|
||||||
@ -58,10 +59,10 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/reminder_draggable"
|
android:id="@+id/reminder_draggable"
|
||||||
android:layout_width="@dimen/stopwatch_button_small_size"
|
android:layout_width="@dimen/reminder_background_min_size"
|
||||||
android:layout_height="@dimen/stopwatch_button_small_size"
|
android:layout_height="@dimen/reminder_background_min_size"
|
||||||
android:layout_marginBottom="@dimen/activity_margin"
|
android:layout_marginBottom="@dimen/activity_margin"
|
||||||
android:padding="@dimen/normal_margin"
|
android:padding="@dimen/activity_margin"
|
||||||
android:src="@drawable/ic_alarm_big"
|
android:src="@drawable/ic_alarm_big"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/reminder_dismiss"
|
app:layout_constraintEnd_toStartOf="@+id/reminder_dismiss"
|
||||||
@ -71,9 +72,10 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/reminder_dismiss"
|
android:id="@+id/reminder_dismiss"
|
||||||
android:layout_width="@dimen/stopwatch_button_small_size"
|
android:layout_width="@dimen/reminder_background_min_size"
|
||||||
android:layout_height="@dimen/stopwatch_button_small_size"
|
android:layout_height="@dimen/reminder_background_min_size"
|
||||||
android:padding="@dimen/normal_margin"
|
android:clickable="false"
|
||||||
|
android:padding="@dimen/activity_margin"
|
||||||
android:src="@drawable/ic_dismiss_alarm_big"
|
android:src="@drawable/ic_dismiss_alarm_big"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/reminder_draggable"
|
app:layout_constraintBottom_toBottomOf="@+id/reminder_draggable"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user