mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-06-05 22:19:17 +02:00
Handle timer service notifications
This commit is contained in:
@ -12,10 +12,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import com.simplemobiletools.clock.R
|
import com.simplemobiletools.clock.R
|
||||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||||
import com.simplemobiletools.clock.dialogs.MyTimePickerDialogDialog
|
import com.simplemobiletools.clock.dialogs.MyTimePickerDialogDialog
|
||||||
import com.simplemobiletools.clock.extensions.checkAlarmsWithDeletedSoundUri
|
import com.simplemobiletools.clock.extensions.*
|
||||||
import com.simplemobiletools.clock.extensions.colorLeftDrawable
|
|
||||||
import com.simplemobiletools.clock.extensions.config
|
|
||||||
import com.simplemobiletools.clock.extensions.timerHelper
|
|
||||||
import com.simplemobiletools.clock.helpers.PICK_AUDIO_FILE_INTENT_ID
|
import com.simplemobiletools.clock.helpers.PICK_AUDIO_FILE_INTENT_ID
|
||||||
import com.simplemobiletools.clock.models.Timer
|
import com.simplemobiletools.clock.models.Timer
|
||||||
import com.simplemobiletools.clock.models.TimerState
|
import com.simplemobiletools.clock.models.TimerState
|
||||||
@ -116,11 +113,11 @@ class TimerAdapter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
is TimerState.Paused -> {
|
is TimerState.Paused -> {
|
||||||
timer_time.text = timer.state.tick.div(1000F).roundToInt().getFormattedDuration()
|
timer_time.text = timer.state.tick.getFormattedDuration()
|
||||||
}
|
}
|
||||||
|
|
||||||
is TimerState.Running -> {
|
is TimerState.Running -> {
|
||||||
timer_time.text = timer.state.tick.div(1000F).roundToInt().getFormattedDuration()
|
timer_time.text = timer.state.tick.getFormattedDuration()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -142,11 +139,12 @@ class TimerAdapter(
|
|||||||
|
|
||||||
private fun updateTimer(timer: Timer, refresh: Boolean = true) {
|
private fun updateTimer(timer: Timer, refresh: Boolean = true) {
|
||||||
Log.w(TAG, "updateTimer: $timer")
|
Log.w(TAG, "updateTimer: $timer")
|
||||||
activity.timerHelper.insertOrUpdateTimer(timer)
|
activity.timerHelper.insertOrUpdateTimer(timer){
|
||||||
if (refresh) {
|
if (refresh) {
|
||||||
onRefresh.invoke()
|
onRefresh.invoke()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "TimerAdapter"
|
private const val TAG = "TimerAdapter"
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package com.simplemobiletools.clock.extensions
|
package com.simplemobiletools.clock.extensions
|
||||||
|
|
||||||
import android.text.format.DateFormat
|
import android.text.format.DateFormat
|
||||||
|
import com.simplemobiletools.commons.extensions.getFormattedDuration
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
fun Long.formatStopwatchTime(useLongerMSFormat: Boolean): String {
|
fun Long.formatStopwatchTime(useLongerMSFormat: Boolean): String {
|
||||||
val MSFormat = if (useLongerMSFormat) "%03d" else "%01d"
|
val MSFormat = if (useLongerMSFormat) "%03d" else "%01d"
|
||||||
@ -37,5 +39,9 @@ fun Long.timestampFormat(format: String = "dd. MM. yyyy"): String {
|
|||||||
return DateFormat.format(format, calendar).toString()
|
return DateFormat.format(format, calendar).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Long.getFormattedDuration(forceShowHours: Boolean = false): String {
|
||||||
|
return this.div(1000F).roundToInt().getFormattedDuration(forceShowHours)
|
||||||
|
}
|
||||||
|
|
||||||
val Long.secondsToMillis get() = TimeUnit.SECONDS.toMillis(this)
|
val Long.secondsToMillis get() = TimeUnit.SECONDS.toMillis(this)
|
||||||
val Long.millisToSeconds get() = TimeUnit.MILLISECONDS.toSeconds(this)
|
val Long.millisToSeconds get() = TimeUnit.MILLISECONDS.toSeconds(this)
|
||||||
|
@ -100,17 +100,24 @@ class TimerFragment : Fragment() {
|
|||||||
|
|
||||||
private fun updateViews(position: Int) {
|
private fun updateViews(position: Int) {
|
||||||
activity?.runOnUiThread {
|
activity?.runOnUiThread {
|
||||||
|
if (timerAdapter.itemCount > 0) {
|
||||||
val timer = timerAdapter.getItemAt(position)
|
val timer = timerAdapter.getItemAt(position)
|
||||||
updateViewStates(timer.state)
|
updateViewStates(timer.state)
|
||||||
|
view.timer_play_pause.beVisible()
|
||||||
|
} else {
|
||||||
|
view.timer_delete.beGone()
|
||||||
|
view.timer_play_pause.beGone()
|
||||||
|
view.timer_reset.beGone()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun refreshTimers(scrollToLast: Boolean = false) {
|
private fun refreshTimers(scrollToLatest: Boolean = false) {
|
||||||
activity?.timerHelper?.getTimers { timers ->
|
activity?.timerHelper?.getTimers { timers ->
|
||||||
Log.d(TAG, "refreshTimers: $timers")
|
Log.d(TAG, "refreshTimers: $timers")
|
||||||
timerAdapter.submitList(timers) {
|
timerAdapter.submitList(timers) {
|
||||||
if (scrollToLast) {
|
if (scrollToLatest) {
|
||||||
view.timer_view_pager.currentItem = timers.lastIndex
|
view.timer_view_pager.currentItem = 0
|
||||||
}
|
}
|
||||||
updateViews(timer_view_pager.currentItem)
|
updateViews(timer_view_pager.currentItem)
|
||||||
}
|
}
|
||||||
|
@ -43,14 +43,16 @@ class TimerHelper(val context: Context) {
|
|||||||
fun insertNewTimer(callback: () -> Unit = {}) {
|
fun insertNewTimer(callback: () -> Unit = {}) {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
timerDao.insertOrUpdateTimer(
|
timerDao.insertOrUpdateTimer(
|
||||||
Timer(id = null,
|
Timer(
|
||||||
|
id = null,
|
||||||
seconds = DEFAULT_TIME,
|
seconds = DEFAULT_TIME,
|
||||||
TimerState.Idle,
|
TimerState.Idle,
|
||||||
false,
|
false,
|
||||||
context.getDefaultAlarmSound(RingtoneManager.TYPE_ALARM).uri,
|
context.getDefaultAlarmSound(RingtoneManager.TYPE_ALARM).uri,
|
||||||
context.getDefaultAlarmTitle(RingtoneManager.TYPE_ALARM),
|
context.getDefaultAlarmTitle(RingtoneManager.TYPE_ALARM),
|
||||||
"",
|
"",
|
||||||
DEFAULT_MAX_TIMER_REMINDER_SECS.toString())
|
System.currentTimeMillis(),
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
callback.invoke()
|
callback.invoke()
|
||||||
|
@ -9,7 +9,7 @@ import com.simplemobiletools.clock.models.Timer
|
|||||||
@Dao
|
@Dao
|
||||||
interface TimerDao {
|
interface TimerDao {
|
||||||
|
|
||||||
@Query("SELECT * FROM timers")
|
@Query("SELECT * FROM timers ORDER BY createdAt DESC")
|
||||||
fun getTimers(): List<Timer>
|
fun getTimers(): List<Timer>
|
||||||
|
|
||||||
@Query("SELECT * FROM timers WHERE id=:id")
|
@Query("SELECT * FROM timers WHERE id=:id")
|
||||||
|
@ -12,5 +12,5 @@ data class Timer(
|
|||||||
val soundUri: String,
|
val soundUri: String,
|
||||||
val soundTitle: String,
|
val soundTitle: String,
|
||||||
val label: String,
|
val label: String,
|
||||||
val maxReminderSecs: String,
|
val createdAt: Long,
|
||||||
)
|
)
|
||||||
|
@ -12,11 +12,15 @@ import android.os.IBinder
|
|||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import com.simplemobiletools.clock.R
|
import com.simplemobiletools.clock.R
|
||||||
import com.simplemobiletools.clock.extensions.config
|
import com.simplemobiletools.clock.extensions.getFormattedDuration
|
||||||
import com.simplemobiletools.clock.extensions.getOpenTimerTabIntent
|
import com.simplemobiletools.clock.extensions.getOpenTimerTabIntent
|
||||||
|
import com.simplemobiletools.clock.extensions.timerHelper
|
||||||
import com.simplemobiletools.clock.helpers.TIMER_RUNNING_NOTIF_ID
|
import com.simplemobiletools.clock.helpers.TIMER_RUNNING_NOTIF_ID
|
||||||
|
import com.simplemobiletools.clock.models.TimerEvent
|
||||||
|
import com.simplemobiletools.clock.models.TimerState
|
||||||
import com.simplemobiletools.commons.extensions.getFormattedDuration
|
import com.simplemobiletools.commons.extensions.getFormattedDuration
|
||||||
import com.simplemobiletools.commons.helpers.isOreoPlus
|
import com.simplemobiletools.commons.helpers.isOreoPlus
|
||||||
|
import kotlin.math.roundToInt
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import org.greenrobot.eventbus.Subscribe
|
import org.greenrobot.eventbus.Subscribe
|
||||||
import org.greenrobot.eventbus.ThreadMode
|
import org.greenrobot.eventbus.ThreadMode
|
||||||
@ -34,18 +38,43 @@ class TimerService : Service() {
|
|||||||
|
|
||||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||||
super.onStartCommand(intent, flags, startId)
|
super.onStartCommand(intent, flags, startId)
|
||||||
|
updateNotification()
|
||||||
val formattedDuration = config.timerSeconds.getFormattedDuration()
|
startForeground(TIMER_RUNNING_NOTIF_ID, notification(getString(R.string.app_name), getString(R.string.timer_notification_msg), -1))
|
||||||
startForeground(TIMER_RUNNING_NOTIF_ID, notification(formattedDuration))
|
|
||||||
|
|
||||||
return START_NOT_STICKY
|
return START_NOT_STICKY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun updateNotification() {
|
||||||
|
timerHelper.getTimers { timers ->
|
||||||
|
val runningTimers = timers.filter { it.state is TimerState.Running }
|
||||||
|
if (runningTimers.isNotEmpty()) {
|
||||||
|
val firstTimer = runningTimers.first()
|
||||||
|
val formattedDuration = (firstTimer.state as TimerState.Running).tick.getFormattedDuration()
|
||||||
|
val contextText = when {
|
||||||
|
runningTimers.size > 1 -> {
|
||||||
|
getString(R.string.timer_multiple_notification_msg, runningTimers.size)
|
||||||
|
}
|
||||||
|
firstTimer.label.isNotEmpty() -> {
|
||||||
|
getString(R.string.timer_single_notification_label_msg, firstTimer.label)
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
getString(R.string.timer_single_notification_msg, runningTimers.size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
startForeground(TIMER_RUNNING_NOTIF_ID, notification(formattedDuration, contextText, firstTimer.id!!))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
fun onMessageEvent(event: TimerStopService) {
|
fun onMessageEvent(event: TimerStopService) {
|
||||||
stopService()
|
stopService()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
|
fun onMessageEvent(event: TimerEvent.Refresh) {
|
||||||
|
updateNotification()
|
||||||
|
}
|
||||||
|
|
||||||
private fun stopService() {
|
private fun stopService() {
|
||||||
if (isOreoPlus()) {
|
if (isOreoPlus()) {
|
||||||
stopForeground(true)
|
stopForeground(true)
|
||||||
@ -60,7 +89,7 @@ class TimerService : Service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.O)
|
@TargetApi(Build.VERSION_CODES.O)
|
||||||
private fun notification(formattedDuration: String): Notification {
|
private fun notification(title: String, contentText: String, firstRunningTimerId: Long): Notification {
|
||||||
val channelId = "simple_alarm_timer"
|
val channelId = "simple_alarm_timer"
|
||||||
val label = getString(R.string.timer)
|
val label = getString(R.string.timer)
|
||||||
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
@ -73,16 +102,19 @@ class TimerService : Service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val builder = NotificationCompat.Builder(this)
|
val builder = NotificationCompat.Builder(this)
|
||||||
.setContentTitle(label)
|
.setContentTitle(title)
|
||||||
.setContentText(formattedDuration)
|
.setContentText(contentText)
|
||||||
.setSmallIcon(R.drawable.ic_timer)
|
.setSmallIcon(R.drawable.ic_timer)
|
||||||
.setContentIntent(this.getOpenTimerTabIntent(0))
|
|
||||||
.setPriority(Notification.PRIORITY_DEFAULT)
|
.setPriority(Notification.PRIORITY_DEFAULT)
|
||||||
.setSound(null)
|
.setSound(null)
|
||||||
.setOngoing(true)
|
.setOngoing(true)
|
||||||
.setAutoCancel(true)
|
.setAutoCancel(true)
|
||||||
.setChannelId(channelId)
|
.setChannelId(channelId)
|
||||||
|
|
||||||
|
if (firstRunningTimerId != -1L) {
|
||||||
|
builder.setContentIntent(this.getOpenTimerTabIntent(firstRunningTimerId))
|
||||||
|
}
|
||||||
|
|
||||||
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
|
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
|
||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Saat bölməsi</string>
|
<string name="clock_tab">Saat bölməsi</string>
|
||||||
<string name="alarm_tab">Siqnal bölməsi</string>
|
<string name="alarm_tab">Siqnal bölməsi</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Záložka hodin</string>
|
<string name="clock_tab">Záložka hodin</string>
|
||||||
<string name="alarm_tab">Záložka budíku</string>
|
<string name="alarm_tab">Záložka budíku</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Tab cloc</string>
|
<string name="clock_tab">Tab cloc</string>
|
||||||
<string name="alarm_tab">Tab larwm</string>
|
<string name="alarm_tab">Tab larwm</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Ur</string>
|
<string name="clock_tab">Ur</string>
|
||||||
<string name="alarm_tab">Alarm</string>
|
<string name="alarm_tab">Alarm</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Uhr</string>
|
<string name="clock_tab">Uhr</string>
|
||||||
<string name="alarm_tab">Wecker</string>
|
<string name="alarm_tab">Wecker</string>
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Ετικέτα Ρολογιού</string>
|
<string name="clock_tab">Ετικέτα Ρολογιού</string>
|
||||||
<string name="alarm_tab">Ετικέτα Αφύπνισης</string>
|
<string name="alarm_tab">Ετικέτα Αφύπνισης</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Pestaña de reloj</string>
|
<string name="clock_tab">Pestaña de reloj</string>
|
||||||
<string name="alarm_tab">Pestaña de alarma</string>
|
<string name="alarm_tab">Pestaña de alarma</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Erloju fitxa</string>
|
<string name="clock_tab">Erloju fitxa</string>
|
||||||
<string name="alarm_tab">Alarma fitxa</string>
|
<string name="alarm_tab">Alarma fitxa</string>
|
||||||
|
@ -16,6 +16,12 @@
|
|||||||
<string name="swipe_right_to_dismiss">Pyyhkäise oikealle sammuttaaksesi tai vasemmalle torkuttaaksesi.</string>
|
<string name="swipe_right_to_dismiss">Pyyhkäise oikealle sammuttaaksesi tai vasemmalle torkuttaaksesi.</string>
|
||||||
<string name="sort_by_creation_order">Luontijärjestys</string>
|
<string name="sort_by_creation_order">Luontijärjestys</string>
|
||||||
<string name="sort_by_alarm_time">Herätysaika</string>
|
<string name="sort_by_alarm_time">Herätysaika</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Kello-välilehti</string>
|
<string name="clock_tab">Kello-välilehti</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Horloge</string>
|
<string name="clock_tab">Horloge</string>
|
||||||
<string name="alarm_tab">Réveil</string>
|
<string name="alarm_tab">Réveil</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Kartica sata</string>
|
<string name="clock_tab">Kartica sata</string>
|
||||||
<string name="alarm_tab">Kartica alarma</string>
|
<string name="alarm_tab">Kartica alarma</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Tab jam</string>
|
<string name="clock_tab">Tab jam</string>
|
||||||
<string name="alarm_tab">Tab alarm</string>
|
<string name="alarm_tab">Tab alarm</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Tab jam</string>
|
<string name="clock_tab">Tab jam</string>
|
||||||
<string name="alarm_tab">Tab alarm</string>
|
<string name="alarm_tab">Tab alarm</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Scheda orologio</string>
|
<string name="clock_tab">Scheda orologio</string>
|
||||||
<string name="alarm_tab">Scheda sveglia</string>
|
<string name="alarm_tab">Scheda sveglia</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">時計</string>
|
<string name="clock_tab">時計</string>
|
||||||
<string name="alarm_tab">アラーム</string>
|
<string name="alarm_tab">アラーム</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Laikrodžio skirtukas</string>
|
<string name="clock_tab">Laikrodžio skirtukas</string>
|
||||||
<string name="alarm_tab">Žadintuvo skirtukas</string>
|
<string name="alarm_tab">Žadintuvo skirtukas</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">ക്ലോക്ക് ടാബ്</string>
|
<string name="clock_tab">ക്ലോക്ക് ടാബ്</string>
|
||||||
<string name="alarm_tab">അലാറം ടാബ്</string>
|
<string name="alarm_tab">അലാറം ടാബ്</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Klokke</string>
|
<string name="clock_tab">Klokke</string>
|
||||||
<string name="alarm_tab">Alarm</string>
|
<string name="alarm_tab">Alarm</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Aanmaakvolgorde</string>
|
<string name="sort_by_creation_order">Aanmaakvolgorde</string>
|
||||||
<string name="sort_by_alarm_time">Alarmtijd</string>
|
<string name="sort_by_alarm_time">Alarmtijd</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Tab Klok</string>
|
<string name="clock_tab">Tab Klok</string>
|
||||||
<string name="alarm_tab">Tab Alarm</string>
|
<string name="alarm_tab">Tab Alarm</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Zegar</string>
|
<string name="clock_tab">Zegar</string>
|
||||||
<string name="alarm_tab">Alarm</string>
|
<string name="alarm_tab">Alarm</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Relógio</string>
|
<string name="clock_tab">Relógio</string>
|
||||||
<string name="alarm_tab">Alarme</string>
|
<string name="alarm_tab">Alarme</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Часы</string>
|
<string name="clock_tab">Часы</string>
|
||||||
<string name="alarm_tab">Будильник</string>
|
<string name="alarm_tab">Будильник</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Poradia vytvorenia</string>
|
<string name="sort_by_creation_order">Poradia vytvorenia</string>
|
||||||
<string name="sort_by_alarm_time">Času budíka</string>
|
<string name="sort_by_alarm_time">Času budíka</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Okno s časom</string>
|
<string name="clock_tab">Okno s časom</string>
|
||||||
<string name="alarm_tab">Okno s budíkom</string>
|
<string name="alarm_tab">Okno s budíkom</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Fliken Klocka</string>
|
<string name="clock_tab">Fliken Klocka</string>
|
||||||
<string name="alarm_tab">Fliken Alarm</string>
|
<string name="alarm_tab">Fliken Alarm</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Saat sekmesi</string>
|
<string name="clock_tab">Saat sekmesi</string>
|
||||||
<string name="alarm_tab">Alarm sekmesi</string>
|
<string name="alarm_tab">Alarm sekmesi</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Годинник</string>
|
<string name="clock_tab">Годинник</string>
|
||||||
<string name="alarm_tab">Будильник</string>
|
<string name="alarm_tab">Будильник</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">时钟页面</string>
|
<string name="clock_tab">时钟页面</string>
|
||||||
<string name="alarm_tab">闹钟页面</string>
|
<string name="alarm_tab">闹钟页面</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">時鐘頁面</string>
|
<string name="clock_tab">時鐘頁面</string>
|
||||||
<string name="alarm_tab">鬧鐘頁面</string>
|
<string name="alarm_tab">鬧鐘頁面</string>
|
||||||
|
@ -17,6 +17,12 @@
|
|||||||
<string name="sort_by_creation_order">Creation order</string>
|
<string name="sort_by_creation_order">Creation order</string>
|
||||||
<string name="sort_by_alarm_time">Alarm time</string>
|
<string name="sort_by_alarm_time">Alarm time</string>
|
||||||
|
|
||||||
|
<!--Timer-->
|
||||||
|
<string name="timer_notification_msg">Timers are running</string>
|
||||||
|
<string name="timer_multiple_notification_msg">%d timers are running</string>
|
||||||
|
<string name="timer_single_notification_label_msg">Timer for %s is running</string>
|
||||||
|
<string name="timer_single_notification_msg">%d timer is running</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="clock_tab">Clock tab</string>
|
<string name="clock_tab">Clock tab</string>
|
||||||
<string name="alarm_tab">Alarm tab</string>
|
<string name="alarm_tab">Alarm tab</string>
|
||||||
|
Reference in New Issue
Block a user