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