mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-06-05 22:19:17 +02:00
Implement concise view for timer
This commit is contained in:
@ -7,7 +7,6 @@ import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
import com.simplemobiletools.clock.dialogs.MyTimePickerDialogDialog
|
||||
import com.simplemobiletools.clock.extensions.getFormattedDuration
|
||||
import com.simplemobiletools.clock.extensions.hideTimerNotification
|
||||
import com.simplemobiletools.clock.extensions.secondsToMillis
|
||||
@ -25,7 +24,7 @@ class TimerAdapter(
|
||||
private val simpleActivity: SimpleActivity,
|
||||
recyclerView: MyRecyclerView,
|
||||
onRefresh: () -> Unit,
|
||||
private val onItemClick: (Timer) -> Unit,
|
||||
onItemClick: (Timer) -> Unit,
|
||||
) : MyRecyclerViewListAdapter<Timer>(simpleActivity, recyclerView, diffUtil, null, onItemClick, onRefresh) {
|
||||
|
||||
companion object {
|
||||
@ -75,12 +74,10 @@ class TimerAdapter(
|
||||
return position
|
||||
}
|
||||
|
||||
|
||||
override fun onActionModeCreated() {}
|
||||
|
||||
override fun onActionModeDestroyed() {}
|
||||
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_timer, parent)
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
@ -101,7 +98,6 @@ class TimerAdapter(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun setupView(view: View, timer: Timer) {
|
||||
view.apply {
|
||||
val isSelected = selectedKeys.contains(timer.id)
|
||||
@ -118,23 +114,12 @@ class TimerAdapter(
|
||||
is TimerState.Paused -> timer.state.tick.getFormattedDuration()
|
||||
is TimerState.Running -> timer.state.tick.getFormattedDuration()
|
||||
}
|
||||
timer_time.setOnClickListener {
|
||||
changeDuration(timer)
|
||||
}
|
||||
|
||||
timer_delete.applyColorFilter(textColor)
|
||||
timer_delete.setOnClickListener {
|
||||
simpleActivity.timerHelper.deleteTimer(timer.id!!) {
|
||||
onRefresh.invoke()
|
||||
}
|
||||
}
|
||||
|
||||
timer_reset.applyColorFilter(textColor)
|
||||
timer_reset.setOnClickListener {
|
||||
stopTimer(timer)
|
||||
}
|
||||
|
||||
timer_play_pause.background = simpleActivity.resources.getColoredDrawableWithColor(R.drawable.circle_background_filled, adjustedPrimaryColor)
|
||||
timer_play_pause.applyColorFilter(if (adjustedPrimaryColor == Color.WHITE) Color.BLACK else Color.WHITE)
|
||||
timer_play_pause.setOnClickListener {
|
||||
when (val state = timer.state) {
|
||||
@ -148,31 +133,14 @@ class TimerAdapter(
|
||||
val state = timer.state
|
||||
val resetPossible = state is TimerState.Running || state is TimerState.Paused || state is TimerState.Finished
|
||||
timer_reset.beInvisibleIf(!resetPossible)
|
||||
timer_delete.beInvisibleIf(!(!resetPossible && itemCount > 1))
|
||||
val drawableId = if (state is TimerState.Running) R.drawable.ic_pause_vector else R.drawable.ic_play_vector
|
||||
val iconColor = if (adjustedPrimaryColor == Color.WHITE) Color.BLACK else Color.WHITE
|
||||
timer_play_pause.setImageDrawable(simpleActivity.resources.getColoredDrawableWithColor(drawableId, iconColor))
|
||||
}
|
||||
}
|
||||
|
||||
private fun changeDuration(timer: Timer) {
|
||||
MyTimePickerDialogDialog(simpleActivity, timer.seconds) { seconds ->
|
||||
val timerSeconds = if (seconds <= 0) 10 else seconds
|
||||
updateTimer(timer.copy(seconds = timerSeconds))
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateTimer(timer: Timer, refresh: Boolean = true) {
|
||||
simpleActivity.timerHelper.insertOrUpdateTimer(timer) {
|
||||
if (refresh) {
|
||||
onRefresh.invoke()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun stopTimer(timer: Timer) {
|
||||
EventBus.getDefault().post(TimerEvent.Reset(timer.id!!, timer.seconds.secondsToMillis))
|
||||
simpleActivity.hideTimerNotification()
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user