From 2042c85b221481dbb797bcec5385f2ac6edcaf12 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 7 Apr 2022 18:06:47 +0200 Subject: [PATCH] Ask confirmation to lock if changes without save #970 --- CHANGELOG | 1 + .../activities/legacy/DatabaseLockActivity.kt | 15 ++++++++++++++- .../metadata/android/en-US/changelogs/106.txt | 3 ++- .../metadata/android/fr-FR/changelogs/106.txt | 3 ++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0b2a9d4c6..f7028e919 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -9,6 +9,7 @@ KeePassDX(3.4.0) * Better search implementation #175 #1254 * Setting to change keyboard during a search #1267 * Manage package name from Magikeyboard #1010 + * Ask confirmation to lock if changes without save #970 KeePassDX(3.3.3) * Fix shared otpauth link if database not open #1274 diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseLockActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseLockActivity.kt index 4b75c1998..77a2601f8 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseLockActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseLockActivity.kt @@ -29,6 +29,7 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.activity.viewModels +import androidx.appcompat.app.AlertDialog import com.kunzisoft.keepass.R import com.kunzisoft.keepass.activities.dialogs.DeleteNodesDialogFragment import com.kunzisoft.keepass.activities.dialogs.PasswordEncodingDialogFragment @@ -431,7 +432,19 @@ abstract class DatabaseLockActivity : DatabaseModeActivity(), } protected fun lockAndExit() { - sendBroadcast(Intent(LOCK_ACTION)) + // Ask confirmation if modification not saved + if (mDatabase?.isReadOnly == false + && mDatabase?.dataModifiedSinceLastLoading == true + && !PreferencesUtil.isAutoSaveDatabaseEnabled(this)) { + AlertDialog.Builder(this) + .setMessage(R.string.discard_changes) + .setNegativeButton(android.R.string.cancel, null) + .setPositiveButton(R.string.lock) { _, _ -> + sendBroadcast(Intent(LOCK_ACTION)) + }.create().show() + } else { + sendBroadcast(Intent(LOCK_ACTION)) + } } fun resetAppTimeout() { diff --git a/fastlane/metadata/android/en-US/changelogs/106.txt b/fastlane/metadata/android/en-US/changelogs/106.txt index b30acb0c4..2b2cf9d03 100644 --- a/fastlane/metadata/android/en-US/changelogs/106.txt +++ b/fastlane/metadata/android/en-US/changelogs/106.txt @@ -7,4 +7,5 @@ * Fix small bugs #1282 * Better search implementation #175 #1254 * Setting to change keyboard during a search #1267 - * Manage package name from Magikeyboard #1010 \ No newline at end of file + * Manage package name from Magikeyboard #1010 + * Ask confirmation to lock if changes without save #970 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/106.txt b/fastlane/metadata/android/fr-FR/changelogs/106.txt index 044210501..c0072b389 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/106.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/106.txt @@ -7,4 +7,5 @@ * Correction de petits bugs #1282 * Meilleure implémentation de la recherche #175 #1254 * Paramètre pour changer de clavier lors d'une recherche #1267 - * Gestion du nom de package du Magiclavier #1010 \ No newline at end of file + * Gestion du nom de package du Magiclavier #1010 + * Demande de confirmation de verouiller si chanegement sans sauvegarde #970 \ No newline at end of file