From fde16c60f4ce5d57a0c7d5a0186dcd532a23f0f0 Mon Sep 17 00:00:00 2001 From: Fabian Henneke Date: Wed, 25 Mar 2020 18:13:04 +0100 Subject: Make preferred directory structure for Autofill configurable (#660) Some users keep their password files in a directory structure such as: /example.org/john@doe.org.gpg while others prefer the style: /example.org/john@doe.org/password.gpg This commit adds a setting that allows to switch between the two. All Autofill operations, such as search, match, generate and save, respect this setting. Note: The first style seems to be the most widely used and is therefore kept as the default. The second style is mentioned on the official Pass website at: https://www.passwordstore.org/#organization --- .../main/java/com/zeapo/pwdstore/UserPreference.kt | 37 +++++++++++----------- 1 file changed, 19 insertions(+), 18 deletions(-) (limited to 'app/src/main/java/com/zeapo/pwdstore/UserPreference.kt') diff --git a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt index 895338e9..06ee24e5 100644 --- a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt +++ b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt @@ -62,8 +62,9 @@ class UserPreference : AppCompatActivity() { private lateinit var prefsFragment: PrefsFragment class PrefsFragment : PreferenceFragmentCompat() { - private var autofillDependencies = listOf() private var autoFillEnablePreference: SwitchPreferenceCompat? = null + private lateinit var autofillDependencies: List + private lateinit var oreoAutofillDependencies: List private lateinit var callingActivity: UserPreference override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { @@ -96,16 +97,21 @@ class UserPreference : AppCompatActivity() { // Autofill preferences autoFillEnablePreference = findPreference("autofill_enable") - val autoFillAppsPreference = findPreference("autofill_apps") - val autoFillDefaultPreference = findPreference("autofill_default") - val autoFillAlwaysShowDialogPreference = findPreference("autofill_always") - val autoFillShowFullNamePreference = findPreference("autofill_full_path") + val autoFillAppsPreference = findPreference("autofill_apps")!! + val autoFillDefaultPreference = findPreference("autofill_default")!! + val autoFillAlwaysShowDialogPreference = + findPreference("autofill_always")!! + val autoFillShowFullNamePreference = + findPreference("autofill_full_path")!! autofillDependencies = listOf( autoFillAppsPreference, autoFillDefaultPreference, autoFillAlwaysShowDialogPreference, autoFillShowFullNamePreference ) + val oreoAutofillDirectoryStructurePreference = + findPreference("oreo_autofill_directory_structure")!! + oreoAutofillDependencies = listOf(oreoAutofillDirectoryStructurePreference) // Misc preferences val appVersionPreference = findPreference("app_version") @@ -236,7 +242,7 @@ class UserPreference : AppCompatActivity() { selectExternalGitRepositoryPreference?.onPreferenceChangeListener = resetRepo externalGitRepositoryPreference?.onPreferenceChangeListener = resetRepo - autoFillAppsPreference?.onPreferenceClickListener = ClickListener { + autoFillAppsPreference.onPreferenceClickListener = ClickListener { val intent = Intent(callingActivity, AutofillPreferenceActivity::class.java) startActivity(intent) true @@ -356,10 +362,14 @@ class UserPreference : AppCompatActivity() { private fun updateAutofillSettings() { val isAccessibilityServiceEnabled = callingActivity.isAccessibilityServiceEnabled + val isAutofillServiceEnabled = callingActivity.isAutofillServiceEnabled autoFillEnablePreference?.isChecked = - isAccessibilityServiceEnabled || callingActivity.isAutofillServiceEnabled + isAccessibilityServiceEnabled || isAutofillServiceEnabled autofillDependencies.forEach { - it?.isVisible = isAccessibilityServiceEnabled + it.isVisible = isAccessibilityServiceEnabled + } + oreoAutofillDependencies.forEach { + it.isVisible = isAutofillServiceEnabled } } @@ -409,16 +419,7 @@ class UserPreference : AppCompatActivity() { startActivity(intent) } setNegativeButton(R.string.dialog_cancel, null) - setOnDismissListener { - val isEnabled = - if (enableOreoAutofill && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - callingActivity.isAutofillServiceEnabled - } else { - callingActivity.isAccessibilityServiceEnabled - } - autoFillEnablePreference?.isChecked = isEnabled - autofillDependencies.forEach { it?.isVisible = isEnabled } - } + setOnDismissListener { updateAutofillSettings() } show() } } -- cgit v1.2.3