diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/notes/activities/MainActivity.kt index 0217d841..b953ea5a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/activities/MainActivity.kt @@ -11,6 +11,7 @@ import android.view.ActionMode import android.view.Gravity import android.view.Menu import android.view.MenuItem +import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.* @@ -177,6 +178,21 @@ class MainActivity : SimpleActivity(), ViewPager.OnPageChangeListener { } } + override fun onBackPressed() { + if (!config.autosaveNotes && mAdapter?.anyHasUnsavedChanges() == true) { + ConfirmationAdvancedDialog(this, "", R.string.unsaved_changes_warning, R.string.save, R.string.discard) { + if (it) { + mAdapter?.saveAllFragmentTexts() + super.onBackPressed() + } else { + super.onBackPressed() + } + } + } else { + super.onBackPressed() + } + } + private fun storeStateVariables() { config.apply { storedEnableLineWrap = enableLineWrap diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/adapters/NotesPagerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/notes/adapters/NotesPagerAdapter.kt index 03ea82fe..0896f037 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/adapters/NotesPagerAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/adapters/NotesPagerAdapter.kt @@ -42,6 +42,10 @@ class NotesPagerAdapter(fm: FragmentManager, val notes: List, val activity fun focusEditText(position: Int) = fragments[position]?.focusEditText() + fun anyHasUnsavedChanges() = fragments.values.any { it.hasUnsavedChanges() } + + fun saveAllFragmentTexts() = fragments.values.forEach { it.saveText(false) } + fun undo(position: Int) = fragments[position]?.undo() fun redo(position: Int) = fragments[position]?.redo() diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt b/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt index b402051a..9bfd84a4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/fragments/NoteFragment.kt @@ -155,6 +155,8 @@ class NoteFragment : Fragment() { } } + fun hasUnsavedChanges() = getCurrentNoteViewText() != note.getNoteStoredValue() + fun focusEditText() { view.notes_view.requestFocus() }