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 @@ + + + + + +