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