diff --git a/app/build.gradle b/app/build.gradle
index 45b9baf4b..b6a9abe16 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -43,7 +43,7 @@ ext {
}
dependencies {
- implementation 'com.simplemobiletools:commons:3.8.11'
+ implementation 'com.simplemobiletools:commons:3.9.7'
implementation 'joda-time:joda-time:2.9.9'
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.android.support:multidex:1.0.2'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7bdfe96d0..bf49ce368 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -119,6 +119,10 @@
android:label="@string/event_types"
android:parentActivityName=".activities.SettingsActivity"/>
+
+
-
-
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SnoozeReminderActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SnoozeReminderActivity.kt
new file mode 100644
index 000000000..fce53b522
--- /dev/null
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SnoozeReminderActivity.kt
@@ -0,0 +1,39 @@
+package com.simplemobiletools.calendar.activities
+
+import android.app.NotificationManager
+import android.content.Context
+import android.os.Bundle
+import android.support.v7.app.AppCompatActivity
+import com.simplemobiletools.calendar.extensions.config
+import com.simplemobiletools.calendar.extensions.dbHelper
+import com.simplemobiletools.calendar.extensions.scheduleEventIn
+import com.simplemobiletools.calendar.extensions.showEventReminderDialog
+import com.simplemobiletools.calendar.helpers.EVENT_ID
+
+class SnoozeReminderActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ showEventReminderDialog(config.snoozeDelay, true, cancelCallback = { dialogCancelled() }) {
+ val eventId = intent.getIntExtra(EVENT_ID, 0)
+ val event = dbHelper.getEventWithId(eventId)
+ config.snoozeDelay = it
+
+ if (eventId != 0 && event != null) {
+ applicationContext.scheduleEventIn(System.currentTimeMillis() + it * 60000, event)
+ val manager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+ manager.cancel(eventId)
+ }
+ finishActivity()
+ }
+ }
+
+ private fun dialogCancelled() {
+ finishActivity()
+ }
+
+ private fun finishActivity() {
+ finish()
+ overridePendingTransition(0, 0)
+ }
+}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Activity.kt
index d2099fae0..41c540e9e 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Activity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Activity.kt
@@ -45,31 +45,37 @@ fun BaseSimpleActivity.getTempFile(): File? {
return File(folder, "events.ics")
}
-fun Activity.showEventReminderDialog(curMinutes: Int, callback: (minutes: Int) -> Unit) {
+fun Activity.showEventReminderDialog(curMinutes: Int, isSnoozePicker: Boolean = false, cancelCallback: (() -> Unit)? = null, callback: (minutes: Int) -> Unit) {
hideKeyboard()
val minutes = TreeSet()
minutes.apply {
- add(-1)
- add(0)
+ if (!isSnoozePicker) {
+ add(-1)
+ add(0)
+ }
+ add(5)
add(10)
+ add(20)
add(30)
+ add(60)
add(curMinutes)
}
val items = ArrayList(minutes.size + 1)
minutes.mapIndexedTo(items, { index, value ->
- RadioItem(index, getFormattedMinutes(value), value)
+ RadioItem(index, getFormattedMinutes(value, !isSnoozePicker), value)
})
var selectedIndex = 0
minutes.forEachIndexed { index, value ->
- if (value == curMinutes)
+ if (value == curMinutes) {
selectedIndex = index
+ }
}
items.add(RadioItem(-2, getString(R.string.custom)))
- RadioGroupDialog(this, items, selectedIndex) {
+ RadioGroupDialog(this, items, selectedIndex, showOKButton = isSnoozePicker, cancelCallback = cancelCallback) {
if (it == -2) {
CustomEventReminderDialog(this) {
callback(it)
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 1a2940808..7e941a940 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/extensions/Context.kt
@@ -23,12 +23,12 @@ import com.simplemobiletools.calendar.BuildConfig
import com.simplemobiletools.calendar.R
import com.simplemobiletools.calendar.activities.EventActivity
import com.simplemobiletools.calendar.activities.SimpleActivity
+import com.simplemobiletools.calendar.activities.SnoozeReminderActivity
import com.simplemobiletools.calendar.helpers.*
import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.calendar.models.*
import com.simplemobiletools.calendar.receivers.CalDAVSyncReceiver
import com.simplemobiletools.calendar.receivers.NotificationReceiver
-import com.simplemobiletools.calendar.services.SnoozeService
import com.simplemobiletools.commons.extensions.*
import org.joda.time.DateTime
import org.joda.time.DateTimeZone
@@ -217,11 +217,13 @@ private fun getNotification(context: Context, pendingIntent: PendingIntent, even
.setChannelId(channelId)
.addAction(R.drawable.ic_snooze, context.getString(R.string.snooze), getSnoozePendingIntent(context, event))
- if (context.isLollipopPlus())
+ if (context.isLollipopPlus()) {
builder.setVisibility(Notification.VISIBILITY_PUBLIC)
+ }
- if (context.config.vibrateOnReminder)
+ if (context.config.vibrateOnReminder) {
builder.setVibrate(longArrayOf(0, 300, 300, 300))
+ }
return builder.build()
}
@@ -236,10 +238,9 @@ private fun getPendingIntent(context: Context, event: Event): PendingIntent {
}
private fun getSnoozePendingIntent(context: Context, event: Event): PendingIntent {
- val intent = Intent(context, SnoozeService::class.java).setAction("snooze")
+ val intent = Intent(context, SnoozeReminderActivity::class.java).setAction("snooze")
intent.putExtra(EVENT_ID, event.id)
- intent.putExtra(EVENT_OCCURRENCE_TS, event.startTS)
- return PendingIntent.getService(context, event.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
+ return PendingIntent.getActivity(context, event.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
}
fun Context.launchNewEventIntent(dayCode: String = Formatter.getTodayCode(this)) {
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/services/SnoozeService.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/services/SnoozeService.kt
deleted file mode 100644
index 03f06176b..000000000
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/services/SnoozeService.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.simplemobiletools.calendar.services
-
-import android.app.IntentService
-import android.app.NotificationManager
-import android.content.Context
-import android.content.Intent
-import com.simplemobiletools.calendar.extensions.config
-import com.simplemobiletools.calendar.extensions.dbHelper
-import com.simplemobiletools.calendar.extensions.scheduleEventIn
-import com.simplemobiletools.calendar.helpers.EVENT_ID
-
-class SnoozeService : IntentService("Snooze") {
- override fun onHandleIntent(intent: Intent) {
- val eventId = intent.getIntExtra(EVENT_ID, 0)
- val event = dbHelper.getEventWithId(eventId)
-
- if (eventId != 0 && event != null) {
- applicationContext.scheduleEventIn(System.currentTimeMillis() + applicationContext.config.snoozeDelay * 60000, event)
- val manager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
- manager.cancel(eventId)
- }
- }
-}