diff --git a/app/build.gradle b/app/build.gradle
index 1238f800c..e1924b3e5 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -45,7 +45,7 @@ ext {
}
dependencies {
- compile 'com.simplemobiletools:commons:2.37.6'
+ compile 'com.simplemobiletools:commons:2.37.10'
compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.7.2'
compile 'com.theartofdev.edmodo:android-image-cropper:2.4.0'
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt
index 3c69ea85c..62c143735 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/MainActivity.kt
@@ -60,6 +60,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private var mStoredShowMediaCount = true
private var mStoredTextColor = 0
private var mLoadedInitialPhotos = false
+ private var mIsPasswordProtectionPending = false
private var mLatestMediaId = 0L
private var mLastMediaHandler = Handler()
private var mCurrAsyncTask: GetDirectoriesAsynctask? = null
@@ -88,6 +89,8 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
directories_empty_text.setOnClickListener {
showFilterMediaDialog()
}
+
+ mIsPasswordProtectionPending = config.appPasswordProtectionOn
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
@@ -151,10 +154,22 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
getDirectoryAdapter()?.updateTextColor(config.textColor)
}
- tryloadGallery()
invalidateOptionsMenu()
directories_empty_text_label.setTextColor(config.textColor)
directories_empty_text.setTextColor(config.primaryColor)
+
+ if (mIsPasswordProtectionPending) {
+ handleAppPasswordProtection {
+ if (it) {
+ mIsPasswordProtectionPending = false
+ tryloadGallery()
+ } else {
+ finish()
+ }
+ }
+ } else {
+ tryloadGallery()
+ }
}
override fun onPause() {
diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt
index ca4b6023e..a09c3bd53 100644
--- a/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/gallery/activities/SettingsActivity.kt
@@ -50,6 +50,7 @@ class SettingsActivity : SimpleActivity() {
setupHideSystemUI()
setupReplaceShare()
setupPasswordProtection()
+ setupAppPasswordProtection()
setupDeleteEmptyFolders()
setupAllowVideoGestures()
setupShowMediaCount()
@@ -181,17 +182,41 @@ class SettingsActivity : SimpleActivity() {
settings_password_protection.isChecked = config.isPasswordProtectionOn
settings_password_protection_holder.setOnClickListener {
val tabToShow = if (config.isPasswordProtectionOn) config.protectionType else SHOW_ALL_TABS
- SecurityDialog(this, config.passwordHash, tabToShow) { hash, type ->
- val hasPasswordProtection = config.isPasswordProtectionOn
- settings_password_protection.isChecked = !hasPasswordProtection
- config.isPasswordProtectionOn = !hasPasswordProtection
- config.passwordHash = if (hasPasswordProtection) "" else hash
- config.protectionType = type
+ SecurityDialog(this, config.passwordHash, tabToShow) { hash, type, success ->
+ if (success) {
+ val hasPasswordProtection = config.isPasswordProtectionOn
+ settings_password_protection.isChecked = !hasPasswordProtection
+ config.isPasswordProtectionOn = !hasPasswordProtection
+ config.passwordHash = if (hasPasswordProtection) "" else hash
+ config.protectionType = type
- if (config.isPasswordProtectionOn) {
- val confirmationTextId = if (config.protectionType == PROTECTION_FINGERPRINT)
- R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully
- ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { }
+ if (config.isPasswordProtectionOn) {
+ val confirmationTextId = if (config.protectionType == PROTECTION_FINGERPRINT)
+ R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully
+ ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { }
+ }
+ }
+ }
+ }
+ }
+
+ private fun setupAppPasswordProtection() {
+ settings_app_password_protection.isChecked = config.appPasswordProtectionOn
+ settings_app_password_protection_holder.setOnClickListener {
+ val tabToShow = if (config.appPasswordProtectionOn) config.appProtectionType else SHOW_ALL_TABS
+ SecurityDialog(this, config.appPasswordHash, tabToShow) { hash, type, success ->
+ if (success) {
+ val hasPasswordProtection = config.appPasswordProtectionOn
+ settings_app_password_protection.isChecked = !hasPasswordProtection
+ config.appPasswordProtectionOn = !hasPasswordProtection
+ config.appPasswordHash = if (hasPasswordProtection) "" else hash
+ config.appProtectionType = type
+
+ if (config.appPasswordProtectionOn) {
+ val confirmationTextId = if (config.appProtectionType == PROTECTION_FINGERPRINT)
+ R.string.fingerprint_setup_successfully else R.string.protection_setup_successfully
+ ConfirmationDialog(this, "", confirmationTextId, R.string.ok, 0) { }
+ }
}
}
}
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 9b80d6fc3..509679282 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -308,6 +308,26 @@
+
+
+
+
+
+