diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cfbdb1c2..6c7957fab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ Changelog ========== +Version 4.1.1 *(2018-07-04)* +---------------------------- + + * Allow customizing the audio stream used by reminders + * Show the time remaining till the reminder appears + * Couple other UX and stability improvements + Version 4.1.0 *(2018-06-13)* ---------------------------- diff --git a/app/build.gradle b/app/build.gradle index e8c358022..d72162430 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.simplemobiletools.calendar" minSdkVersion 16 targetSdkVersion 27 - versionCode 124 - versionName "4.1.0" + versionCode 125 + versionName "4.1.1" multiDexEnabled true setProperty("archivesBaseName", "calendar") } @@ -46,7 +46,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:4.3.27' + implementation 'com.simplemobiletools:commons:4.3.28' implementation 'joda-time:joda-time:2.9.9' implementation 'com.facebook.stetho:stetho:1.5.0' implementation 'com.android.support:multidex:1.0.3' diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt index a6894ada9..dae9991d6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt @@ -673,13 +673,11 @@ class EventActivity : SimpleActivity() { private fun storeEvent(wasRepeatable: Boolean) { if (mEvent.id == 0) { - dbHelper.insert(mEvent, true) { + dbHelper.insert(mEvent, true, this) { if (DateTime.now().isAfter(mEventStartDateTime.millis)) { if (mEvent.repeatInterval == 0 && mEvent.getReminders().isNotEmpty()) { notifyEvent(mEvent) } - } else { - toast(R.string.event_added) } finish() @@ -688,8 +686,8 @@ class EventActivity : SimpleActivity() { if (mRepeatInterval > 0 && wasRepeatable) { EditRepeatingEventDialog(this) { if (it) { - dbHelper.update(mEvent, true) { - eventUpdated() + dbHelper.update(mEvent, true, this) { + finish() } } else { dbHelper.addEventRepeatException(mEvent.id, mEventOccurrenceTS, true) @@ -701,25 +699,19 @@ class EventActivity : SimpleActivity() { repeatLimit = 0 } - dbHelper.insert(mEvent, true) { - toast(R.string.event_updated) + dbHelper.insert(mEvent, true, this) { finish() } } } } else { - dbHelper.update(mEvent, true) { - eventUpdated() + dbHelper.update(mEvent, true, this) { + finish() } } } } - private fun eventUpdated() { - toast(R.string.event_updated) - finish() - } - private fun updateStartTexts() { updateStartDateText() updateStartTimeText() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt index 0e7f12da2..4e1a4b94a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt @@ -322,7 +322,8 @@ class SettingsActivity : SimpleActivity() { val items = arrayListOf( RadioItem(AudioManager.STREAM_ALARM, res.getString(R.string.alarm_stream)), RadioItem(AudioManager.STREAM_SYSTEM, res.getString(R.string.system_stream)), - RadioItem(AudioManager.STREAM_NOTIFICATION, res.getString(R.string.notification_stream))) + RadioItem(AudioManager.STREAM_NOTIFICATION, res.getString(R.string.notification_stream)), + RadioItem(AudioManager.STREAM_RING, res.getString(R.string.ring_stream))) RadioGroupDialog(this@SettingsActivity, items, config.reminderAudioStream) { config.reminderAudioStream = it as Int @@ -334,7 +335,8 @@ class SettingsActivity : SimpleActivity() { private fun getAudioStreamText() = getString(when (config.reminderAudioStream) { AudioManager.STREAM_ALARM -> R.string.alarm_stream AudioManager.STREAM_SYSTEM -> R.string.system_stream - else -> R.string.notification_stream + AudioManager.STREAM_NOTIFICATION -> R.string.notification_stream + else -> R.string.ring_stream }) private fun setupVibrate() { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt index c9b2a6f46..b07367605 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt @@ -77,8 +77,9 @@ fun Context.scheduleAllEvents() { } } -fun Context.scheduleNextEventReminder(event: Event?, dbHelper: DBHelper) { - if (event == null || event.getReminders().isEmpty()) { +fun Context.scheduleNextEventReminder(event: Event, dbHelper: DBHelper, activity: SimpleActivity? = null) { + if (event.getReminders().isEmpty()) { + activity?.toast(R.string.saving) return } @@ -89,20 +90,29 @@ fun Context.scheduleNextEventReminder(event: Event?, dbHelper: DBHelper) { for (curEvent in it) { for (curReminder in reminderSeconds) { if (curEvent.getEventStartTS() - curReminder > now) { - scheduleEventIn((curEvent.getEventStartTS() - curReminder) * 1000L, curEvent) + scheduleEventIn((curEvent.getEventStartTS() - curReminder) * 1000L, curEvent, activity) return@getEvents } } } } + + activity?.toast(R.string.saving) } } -fun Context.scheduleEventIn(notifTS: Long, event: Event) { +fun Context.scheduleEventIn(notifTS: Long, event: Event, activity: SimpleActivity? = null) { if (notifTS < System.currentTimeMillis()) { + activity?.toast(R.string.saving) return } + if (activity != null) { + val secondsTillNotification = (notifTS - System.currentTimeMillis()) / 1000 + val msg = String.format(getString(R.string.reminder_triggers_in), formatSecondsToTimeString(secondsTillNotification.toInt())) + activity.toast(msg) + } + val pendingIntent = getNotificationIntent(applicationContext, event) val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager AlarmManagerCompat.setExactAndAllowWhileIdle(alarmManager, AlarmManager.RTC_WAKEUP, notifTS, pendingIntent) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt index 588a27898..f7013eb92 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt @@ -10,6 +10,7 @@ import android.database.sqlite.SQLiteQueryBuilder import android.text.TextUtils import android.util.SparseIntArray import com.simplemobiletools.calendar.R +import com.simplemobiletools.calendar.activities.SimpleActivity import com.simplemobiletools.calendar.extensions.* import com.simplemobiletools.calendar.models.Event import com.simplemobiletools.calendar.models.EventType @@ -200,7 +201,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont addEventType(eventType, db) } - fun insert(event: Event, addToCalDAV: Boolean, callback: (id: Int) -> Unit) { + fun insert(event: Event, addToCalDAV: Boolean, activity: SimpleActivity? = null, callback: (id: Int) -> Unit) { if (event.startTS > event.endTS) { callback(0) return @@ -216,7 +217,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont } context.updateWidgets() - context.scheduleNextEventReminder(event, this) + context.scheduleNextEventReminder(event, this, activity) if (addToCalDAV && event.source != SOURCE_SIMPLE_CALENDAR && context.config.caldavSync) { CalDAVHandler(context).insertCalDAVEvent(event) @@ -254,7 +255,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont } } - fun update(event: Event, updateAtCalDAV: Boolean, callback: (() -> Unit)? = null) { + fun update(event: Event, updateAtCalDAV: Boolean, activity: SimpleActivity? = null, callback: (() -> Unit)? = null) { val values = fillEventValues(event) val selection = "$COL_ID = ?" val selectionArgs = arrayOf(event.id.toString()) @@ -269,7 +270,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont } context.updateWidgets() - context.scheduleNextEventReminder(event, this) + context.scheduleNextEventReminder(event, this, activity) if (updateAtCalDAV && event.source != SOURCE_SIMPLE_CALENDAR && context.config.caldavSync) { CalDAVHandler(context).updateCalDAVEvent(event) } @@ -548,7 +549,9 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont mDb.insert(EXCEPTIONS_TABLE_NAME, null, it) val parentEvent = getEventWithId(parentEventId) - context.scheduleNextEventReminder(parentEvent, this) + if (parentEvent != null) { + context.scheduleNextEventReminder(parentEvent, this) + } } } diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index db21c0533..fe41de71d 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-br/strings.xml b/app/src/main/res/values-br/strings.xml index 4f30c4e7c..8156bae4c 100644 --- a/app/src/main/res/values-br/strings.xml +++ b/app/src/main/res/values-br/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 2bb24c6a0..fbee096df 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 4e8da2128..3d7df8518 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -159,10 +159,11 @@ Fortsæt påmindelser indtil jeg stopper dem Nedton gamle begivenheder Begivenheder - Audio stream used by reminders + Audio stream anvendt af påmindelser System Alarm - Notification + Notifikation + Ring CalDAV diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 93798cbea..12817e0c9 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index ba2b0af9c..0c90d2834 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 5e5a4bbc4..848c082b2 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 516ca0c06..7d9fd6b46 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 103cd4ec0..099496094 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -164,6 +164,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 3da823e2b..f493fcfc3 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 2137739fb..9be022679 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 586bd010e..586d38de9 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 7d09cba56..299b986f9 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -164,6 +164,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 48b87be10..94775b2f1 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 991b68727..09283219e 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 5557925a6..dda4251b3 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 462b718b3..296aec9a7 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 20a43670a..b4fd81e19 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -159,10 +159,11 @@ Herinneringen blijven herhalen totdat ze zijn uitgezet Afgelopen afspraken dimmen Afspraken - Audio stream used by reminders - System + Type geluiden voor herinneringen gebruiken + Systeem Alarm - Notification + Notificatie + Beltoon CalDAV diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml index 390dd1ee2..67ba1ffbc 100644 --- a/app/src/main/res/values-no/strings.xml +++ b/app/src/main/res/values-no/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 5d9508508..44a9faf00 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -7,13 +7,13 @@ Tydzień Miesiąc Rok - Prosta lista zdarzeń + Prosta lista wydarzeń Wygląda na to, że nie masz żadnych nadchodzących wydarzeń. Przejdź do dnia dzisiejszego - Prosty Kalendarz - widok miesięczny - Prosty Kalendarz - lista wydarzeń + Prosty kalendarz - widok miesięczny + Prosty kalendarz - lista wydarzeń Wydarzenie @@ -58,9 +58,9 @@ Przez wybrane dni Tego samego dnia Ostatniego dnia - Powtarzaj tego samego dnia każdego miesiąca + Powtarzaj w tym samym dniu każdego miesiąca Powtarzaj ostatniego dnia każdego miesiąca - Repeat on the same day every year + Powtarzaj w tym samym dniu każdego roku Powtarzaj w każdy(ą) Każdy(ą) pierwszy(ą) @@ -159,10 +159,11 @@ Powtarzaj przypomnienia aż do ich wyłączenia Przyciemniaj przeszłe wydarzenia Wydarzenia - Audio stream used by reminders + Rodzaj strumienia audio używanego przez przypomnienia System Alarm - Notification + Powiadomienie + Dzwonek CalDAV @@ -212,7 +213,7 @@       Nie zawiera żadnych żadnych reklam, nie potrzebuje masy uprawnień, jest w pełni otwartoźródłowy, kolory można dowolnie modyfikować. - Uprawniena pamięci są potrzebne tylko do eksportowania lub importowania wydarzeń z plików .isc. + Uprawniena pamięci są potrzebne tylko do eksportowania lub importowania wydarzeń z plików .ics. Uprawnienia kontaktów są używane tylko do importowania urodzin. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6884411cf..99fe522b5 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index a57999d63..4738c8f6e 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index fa25cd546..0a311896d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -163,6 +163,7 @@ Cистема Будильник Уведомление + Ring CalDAV diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index d9f0734a8..41fa06cf4 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -163,6 +163,7 @@ Systémový Výstražný Pripomienkový + Zvoniaci CalDAV diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index c576607f7..681e01706 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 7ee8ac3cb..f5737e9d7 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -159,10 +159,11 @@ Kapatılana kadar hatırlatıcıları tekrarla Geçmiş etkinlikleri karart Etkinlikler - Audio stream used by reminders - System + Hatırlatıcılar tarafından kullanılan ses akışı + Sistem Alarm - Notification + Bildirim + Zil sesi CalDAV diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b2abb6e9b..1146cf505 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -159,10 +159,11 @@ 不斷重複提醒直到解除 淡化過去的活動 活動 - Audio stream used by reminders - System - Alarm - Notification + 用於提醒的音源串流 + 系統 + 鬧鐘 + 通知 + 鈴聲 CalDAV diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3deb45e6d..40122a73f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -163,6 +163,7 @@ System Alarm Notification + Ring CalDAV