diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt
index ab2d5e7fd..0a10696a0 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt
@@ -240,11 +240,27 @@ class EventActivity : SimpleActivity() {
R.id.delete -> deleteEvent()
R.id.duplicate -> duplicateEvent()
R.id.share -> shareEvent()
+ android.R.id.home -> onBackPressed()
else -> return super.onOptionsItemSelected(item)
}
return true
}
+ override fun onBackPressed() {
+ CloseEditingDialog(this) {
+ ensureBackgroundThread {
+ when (it) {
+ CLOSE_WITHOUT_SAVING -> {
+ runOnUiThread {
+ finish()
+ }
+ }
+ SAVE_AND_CLOSE -> saveEvent()
+ }
+ }
+ }
+ }
+
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
if (!mWasActivityInitialized) {
@@ -334,6 +350,7 @@ class EventActivity : SimpleActivity() {
updateAttendeesVisibility()
}
+
private fun setupEditEvent() {
val realStart = if (mEventOccurrenceTS == 0L) mEvent.startTS else mEventOccurrenceTS
val duration = mEvent.endTS - mEvent.startTS
@@ -1011,7 +1028,6 @@ class EventActivity : SimpleActivity() {
eventsHelper.deleteEvent(mEvent.id!!, true)
mEvent.id = null
}
-
storeEvent(wasRepeatable)
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/CloseEditingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/CloseEditingDialog.kt
new file mode 100644
index 000000000..00f710a75
--- /dev/null
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/CloseEditingDialog.kt
@@ -0,0 +1,33 @@
+package com.simplemobiletools.calendar.pro.dialogs
+
+import android.app.Activity
+import android.view.ViewGroup
+import androidx.appcompat.app.AlertDialog
+import com.simplemobiletools.calendar.pro.R
+import com.simplemobiletools.calendar.pro.helpers.*
+import com.simplemobiletools.commons.extensions.setupDialogStuff
+import kotlinx.android.synthetic.main.dialog_return_without_saving.view.*
+
+class CloseEditingDialog(val activity: Activity, val callback: (closeRule: Int) -> Unit) {
+ val dialog: AlertDialog?
+
+ init {
+ val view = activity.layoutInflater.inflate(R.layout.dialog_return_without_saving, null)
+
+ dialog = AlertDialog.Builder(activity)
+ .setPositiveButton(R.string.yes) { _, _ -> dialogConfirmed(view as ViewGroup) }
+ .setNegativeButton(R.string.no, null)
+ .create().apply {
+ activity.setupDialogStuff(view, this)
+ }
+ }
+
+ private fun dialogConfirmed(view: ViewGroup) {
+ val closeRule = when (view.close_event_radio_view.checkedRadioButtonId) {
+ R.id.close_event_without_saving -> CLOSE_WITHOUT_SAVING
+ else -> SAVE_AND_CLOSE
+ }
+ dialog?.dismiss()
+ callback(closeRule)
+ }
+}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/Constants.kt
index e63fde821..cd7538424 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/Constants.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/Constants.kt
@@ -155,4 +155,7 @@ const val DELETE_ALL_OCCURRENCES = 2
const val REMINDER_NOTIFICATION = 0
const val REMINDER_EMAIL = 1
+const val CLOSE_WITHOUT_SAVING = 0
+const val SAVE_AND_CLOSE = 1
+
fun getNowSeconds() = System.currentTimeMillis() / 1000L
diff --git a/app/src/main/res/layout/dialog_return_without_saving.xml b/app/src/main/res/layout/dialog_return_without_saving.xml
new file mode 100644
index 000000000..c32c06cde
--- /dev/null
+++ b/app/src/main/res/layout/dialog_return_without_saving.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3699b4f9a..5ce6350cf 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -293,6 +293,9 @@
Reddit:
https://www.reddit.com/r/SimpleMobileTools
+ Are you sure you want to close?
+ Close without saving
+ Save and close