Revise copy (#656)

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-03-21 12:14:13 +00:00 committed by GitHub
parent de489b0041
commit 98e9f6734a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 183 additions and 180 deletions

View file

@ -43,7 +43,8 @@
<activity
android:name=".UserPreference"
android:parentActivityName=".PasswordStore" />
android:parentActivityName=".PasswordStore"
android:label="@string/action_settings" />
<service
android:name=".autofill.AutofillService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">

View file

@ -60,7 +60,7 @@ class UserPreference : AppCompatActivity() {
class PrefsFragment : PreferenceFragmentCompat() {
private var autofillDependencies = listOf<Preference?>()
private var autoFillEnablePreference: CheckBoxPreference? = null
private var autoFillEnablePreference: SwitchPreferenceCompat? = null
private lateinit var callingActivity: UserPreference
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@ -87,6 +87,7 @@ class UserPreference : AppCompatActivity() {
val keyPreference = findPreference<Preference>("openpgp_key_id_pref")
// General preferences
val showTimePreference = findPreference<Preference>("general_show_time")
val clearAfterCopyPreference = findPreference<CheckBoxPreference>("clear_after_copy")
val clearClipboard20xPreference = findPreference<CheckBoxPreference>("clear_clipboard_20x")
@ -115,7 +116,7 @@ class UserPreference : AppCompatActivity() {
clearAfterCopyPreference?.isVisible = sharedPreferences.getString("general_show_time", "45")?.toInt() != 0
clearClipboard20xPreference?.isVisible = sharedPreferences.getString("general_show_time", "45")?.toInt() != 0
val selectedKeys = (sharedPreferences.getStringSet("openpgp_key_ids_set", null)
?: HashSet<String>()).toTypedArray()
?: HashSet()).toTypedArray()
keyPreference?.summary = if (selectedKeys.isEmpty()) {
this.resources.getString(R.string.pref_no_key_selected)
} else {
@ -270,17 +271,20 @@ class UserPreference : AppCompatActivity() {
}
}
findPreference<Preference>("general_show_time")?.onPreferenceChangeListener =
ChangeListener { _, newValue: Any? ->
try {
val isEnabled = newValue.toString().toInt() != 0
clearAfterCopyPreference?.isVisible = isEnabled
clearClipboard20xPreference?.isVisible = isEnabled
true
} catch (e: NumberFormatException) {
false
}
}
showTimePreference?.onPreferenceChangeListener = ChangeListener { _, newValue: Any? ->
try {
val isEnabled = newValue.toString().toInt() != 0
clearAfterCopyPreference?.isVisible = isEnabled
clearClipboard20xPreference?.isVisible = isEnabled
true
} catch (e: NumberFormatException) {
false
}
}
showTimePreference?.summaryProvider = Preference.SummaryProvider<Preference> {
getString(R.string.pref_show_time_summary, sharedPreferences.getString("general_show_time", "45"))
}
findPreference<SwitchPreferenceCompat>("biometric_auth")?.apply {
val isFingerprintSupported = BiometricManager.from(requireContext()).canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS
@ -290,6 +294,7 @@ class UserPreference : AppCompatActivity() {
summary = getString(R.string.biometric_auth_summary_error)
} else {
setOnPreferenceClickListener {
isEnabled = false
val editor = sharedPreferences.edit()
val checked = isChecked
Authenticator(requireActivity()) { result ->
@ -297,12 +302,14 @@ class UserPreference : AppCompatActivity() {
is AuthenticationResult.Success -> {
// Apply the changes
editor.putBoolean("biometric_auth", checked)
isEnabled = true
}
else -> {
// If any error occurs, revert back to the previous state. This
// catch-all clause includes the cancellation case.
editor.putBoolean("biometric_auth", !checked)
isChecked = !checked
isEnabled = true
}
}
}.authenticate()
@ -541,7 +548,7 @@ class UserPreference : AppCompatActivity() {
// TODO: This is fragile. Workaround until PasswordItem is backed by DocumentFile
val docId = DocumentsContract.getTreeDocumentId(uri)
val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val path = if (split.size > 0) split[1] else split[0]
val path = if (split.isNotEmpty()) split[1] else split[0]
val repoPath = "${Environment.getExternalStorageDirectory()}/$path"
Timber.tag(TAG).d("Selected repository path is $repoPath")
@ -689,7 +696,7 @@ class UserPreference : AppCompatActivity() {
@JvmStatic
private fun setCustomDictSummary(customDictPref: Preference?, uri: Uri) {
val fileName = uri.path?.substring(uri.path?.lastIndexOf(":")!! + 1)
customDictPref?.summary = "Selected dictionary: " + fileName
customDictPref?.summary = "Selected dictionary: $fileName"
}
}
}

View file

@ -80,7 +80,7 @@
<string name="pref_crypto_title">التشفير</string>
<string name="pref_provider_title">إختيار مزود الأوبن بي جي بي OpenPGP</string>
<string name="pref_general_title">الإعدادات العامة</string>
<string name="pref_password_title">مدة الإبقاء على كلمة السر ظاهرة</string>
<string name="pref_show_time_title">مدة الإبقاء على كلمة السر ظاهرة</string>
<string name="pref_copy_title">نسخ كلمة السر تلقائيًا</string>
<string name="ssh_key_success_dialog_title">تم استيراد مفتاح الـ SSH</string>
<string name="ssh_key_error_dialog_title">حدث هناك خطأ أثناء عملية إسترجاع مفتاح الـ SSH</string>

View file

@ -79,8 +79,7 @@
<string name="pref_provider_title">Vybrat poskytovatele OpenPGP</string>
<string name="pref_key_title">Vybrat ID OpenPGP klíče</string>
<string name="pref_general_title">Všeobecné</string>
<string name="pref_password_title">Čas zobrazení hesla</string>
<string name="pref_password_dialog_title">Nastavení času po který bude heslo uloženo ve schránce</string>
<string name="pref_show_time_title">Čas zobrazení hesla</string>
<string name="pref_copy_title">Automaticky kopírovat heslo</string>
<string name="pref_copy_dialog_title">Automatické kopírování hesla do schránky po úspěšném dešifrování.</string>
<string name="ssh_key_success_dialog_title">SSH-key importován</string>

View file

@ -96,8 +96,7 @@
<string name="pref_provider_title">Wähle OpenPGP-Provider</string>
<string name="pref_key_title">Wähle OpenPGP-Key ID</string>
<string name="pref_general_title">Allgemein</string>
<string name="pref_password_title">Ablaufzeit des Passworts</string>
<string name="pref_password_dialog_title">Nach dieser Anzahl der Sekunden wird das Passwort aus der Zwischenablage gelöscht.</string>
<string name="pref_show_time_title">Ablaufzeit des Passworts</string>
<string name="pref_copy_title">Kopiere Passwort automatisch</string>
<string name="pref_copy_dialog_title">Kopiert das Passwort in die Zwischenablage, wenn der Eintrag entschlüsselt wurde.</string>
<string name="ssh_key_success_dialog_title">SSH-Key importiert</string>

View file

@ -122,8 +122,7 @@
<string name="pref_key_title">Selecciona la llave OpenPGP</string>
<string name="pref_no_key_selected">Ninguna llave seleccionada</string>
<string name="pref_general_title">General</string>
<string name="pref_password_title">Tiempo para mostrar contraseña</string>
<string name="pref_password_dialog_title">Establece el tiempo antes de limpiar la contraseña del portapapeles. Un valor de cero deshabilita el limpiado.</string>
<string name="pref_show_time_title">Tiempo para mostrar contraseña</string>
<string name="pref_copy_title">Copiar contraseña automáticamente</string>
<string name="pref_copy_dialog_title">Automáticamente copia la contraseña al portapapeles si el descifrado fue exitoso.</string>
<string name="ssh_key_success_dialog_title">Llave SSH importada</string>

View file

@ -81,8 +81,7 @@
<string name="pref_provider_title">Sélection du prestataire OpenPGP</string>
<string name="pref_key_title">Sélection de votre identifiant OpenPGP</string>
<string name="pref_general_title">Général</string>
<string name="pref_password_title">Durée de disponibilité du mot de passe</string>
<string name="pref_password_dialog_title">Choisissez la durée pendant laquelle le mot de passe sera disponnible dans le presse-papier</string>
<string name="pref_show_time_title">Durée de disponibilité du mot de passe</string>
<string name="pref_copy_title">Copie automatique du mot de passe</string>
<string name="pref_copy_dialog_title">Copie automatiquement le mot de passe vers le presse-papier si le déchiffrement a réussi.</string>
<string name="ssh_key_success_dialog_title">Clef SSH importée</string>

View file

@ -82,8 +82,7 @@
<string name="pref_provider_title">OpenPGP プロバイダーを選択</string>
<string name="pref_key_title">OpenPGP 鍵 ID を選択</string>
<string name="pref_general_title">全般</string>
<string name="pref_password_title">パスワード表示時間</string>
<string name="pref_password_dialog_title">パスワードをクリップボードに入れておく時間を設定</string>
<string name="pref_show_time_title">パスワード表示時間</string>
<string name="pref_copy_title">自動的にパスワードをコピー</string>
<string name="pref_copy_dialog_title">復号化が成功した後、自動的にパスワードをクリップボードにコピーします。</string>
<string name="ssh_key_success_dialog_title">SSH 鍵をインポートしました</string>

View file

@ -100,8 +100,7 @@
<string name="pref_provider_title">Выберите провайдера OpenPGP</string>
<string name="pref_key_title">Выберите ключ OpenPGP</string>
<string name="pref_general_title">Общие</string>
<string name="pref_password_title">Время в буфере</string>
<string name="pref_password_dialog_title">Время нахождения пароля в буфере обмена</string>
<string name="pref_show_time_title">Время в буфере</string>
<string name="pref_copy_title">Автоматически копировать пароль</string>
<string name="pref_copy_dialog_title">Автоматически копировать пароль в буфер обмена после успешного расшифрования</string>
<string name="ssh_key_success_dialog_title">SSH ключ импортирован</string>

View file

@ -65,8 +65,7 @@
<string name="pref_git_delete_repo_summary">删除本地的 (隐藏) Repo</string>
<string name="pref_git_title">Git</string>
<string name="pref_key_title">选择 OpenPGP Key Id</string>
<string name="pref_password_dialog_title">选择密码在剪贴板中保存的时间限制</string>
<string name="pref_password_title">密码保存时限</string>
<string name="pref_show_time_title">密码保存时限</string>
<string name="pref_provider_title">选择 OpenPGP 应用</string>
<string name="pref_recursive_filter">搜索子文件夹</string>
<string name="pref_recursive_filter_hint">在当前目录的子目录中查找密码</string>

View file

@ -63,8 +63,7 @@
<string name="pref_git_delete_repo_summary">刪除本機的 (隱藏) Repo</string>
<string name="pref_git_title">Git</string>
<string name="pref_key_title">選擇 OpenPGP Key Id</string>
<string name="pref_password_dialog_title">選擇密碼在剪貼簿中保存的時間限制</string>
<string name="pref_password_title">密碼保存時限</string>
<string name="pref_show_time_title">密碼保存時限</string>
<string name="pref_provider_title">選擇 OpenPGP app</string>
<string name="pref_recursive_filter">搜尋子資料夾</string>
<string name="pref_recursive_filter_hint">在目前目錄的子目錄中查詢密碼</string>

View file

@ -43,7 +43,11 @@
<item>9</item>
<item>10</item>
</string-array>
<string-array name="pwgen_provider">
<string-array name="pwgen_provider_labels">
<item>Classic</item>
<item>XKPasswd</item>
</string-array>
<string-array name="pwgen_provider_values">
<item>classic</item>
<item>xkpasswd</item>
</string-array>

View file

@ -10,11 +10,11 @@
<string name="dialog_delete">Delete directory</string>
<string name="dialog_do_not_delete">Cancel</string>
<string name="title_activity_git_clone">Repository information</string>
<string name="title_activity_git_config" translatable="false">Git Configurations</string>
<string name="title_activity_git_config" translatable="false">Git configuration</string>
<!-- Password Store -->
<string name="creation_dialog_text">Please clone or create a new repository below before trying to add a password or any synchronization operation.</string>
<string name="key_dialog_text">You have to select your "PGP-Key ID" before initializing the repository</string>
<string name="creation_dialog_text">Please clone or create a new repository below before trying to add a password or running any synchronization operation.</string>
<string name="key_dialog_text">You have to select your PGP key ID before initializing the repository</string>
<string name="delete_dialog_text">Are you sure you want to delete the password %1$s?</string>
<string name="move">Move</string>
<string name="edit">Edit</string>
@ -29,15 +29,14 @@
<string name="password_exists_message">This will overwrite %1$s with %2$s.</string>
<!-- git commits -->
<string name="git_commit_add_text">Add password for %1$s using android password store.</string>
<string name="git_commit_edit_text">"Edit %1$s using android password store."</string>
<string name="git_commit_folder_text">"Folder %1$s created using android password store."</string>
<string name="git_commit_remove_text">"Remove %1$s from store."</string>
<string name="git_commit_move_text">"Rename %1$s to %2$s."</string>
<string name="git_commit_increment_text">"Increment HOTP counter for %1$s."</string>
<string name="git_commit_add_text">Add generated password for %1$s using android password store.</string>
<string name="git_commit_edit_text">Edit password for %1$s using android password store.</string>
<string name="git_commit_remove_text">Remove %1$s from store.</string>
<string name="git_commit_move_text">Rename %1$s to %2$s.</string>
<string name="git_commit_increment_text">Increment HOTP counter for %1$s.</string>
<!-- PGPHandler -->
<string name="provider_toast_text">No OpenPGP Provider selected!</string>
<string name="provider_toast_text">No OpenPGP provider selected!</string>
<string name="clipboard_password_toast_text">Password copied to clipboard, you have %d seconds to paste it somewhere.</string>
<string name="clipboard_password_no_clear_toast_text">Password copied to clipboard</string>
<string name="clipboard_username_toast_text">Username copied to clipboard</string>
@ -134,13 +133,13 @@
<string name="pref_git_delete_repo">Delete repository</string>
<string name="pref_dialog_delete_title">Clear repository</string>
<string name="pref_crypto_title">Crypto</string>
<string name="pref_provider_title">Select OpenPGP Provider</string>
<string name="pref_key_title">Select OpenPGP Key id</string>
<string name="pref_provider_title">Select OpenPGP provider</string>
<string name="pref_key_title">Select OpenPGP key ID</string>
<string name="pref_no_key_selected">No key selected</string>
<string name="pref_general_title">General</string>
<string name="pref_password_title">Password Show Time</string>
<string name="pref_password_dialog_title">Set the time (in seconds) you want the password to be in clipboard. 0 means forever.</string>
<string name="pref_copy_title">Automatically copy Password</string>
<string name="pref_show_time_title">Password show time</string>
<string name="pref_show_time_summary">Set the time (in seconds) you want the password to be in clipboard. 0 means forever. Current value: %1$s</string>
<string name="pref_copy_title">Automatically copy password</string>
<string name="pref_copy_dialog_title">Automatically copy the password to the clipboard after decryption was successful.</string>
<string name="ssh_key_success_dialog_title">SSH-key imported</string>
<string name="ssh_key_error_dialog_title">Error while trying to import the ssh-key</string>
@ -148,9 +147,9 @@
<string name="pref_recursive_filter">Recursive filtering</string>
<string name="pref_recursive_filter_hint">Recursively find passwords of the current directory.</string>
<string name="pref_sort_order_title">Password sort order</string>
<string name="pref_folder_first_sort_order">Folders First</string>
<string name="pref_file_first_sort_order">Files First</string>
<string name="pref_type_independent_sort_order">Type Independent</string>
<string name="pref_folder_first_sort_order">Folders first</string>
<string name="pref_file_first_sort_order">Files first</string>
<string name="pref_type_independent_sort_order">Type independent</string>
<string name="pref_autofill_title">Autofill</string>
<string name="pref_autofill_enable_title">Enable autofill</string>
<string name="pref_autofill_enable_msg">Tap OK to go to Accessibility settings. There, tap Password Store under Services then tap the switch in the top right to turn it on or off.</string>
@ -160,7 +159,7 @@
<string name="pref_autofill_default_title">Automatically match by default</string>
<string name="pref_autofill_default_hint">Default to \'Automatically match\' for apps without custom settings. Otherwise, \'Never match.\'</string>
<string name="pref_autofill_always_title">Always show dialog</string>
<string name="pref_autofill_full_path_title">Show Full Path</string>
<string name="pref_autofill_full_path_title">Show full path</string>
<string name="pref_autofill_full_path_hint">Show full path of matching password files</string>
<string name="pref_misc_title">Misc</string>
<string name="pref_clear_clipboard_title">Clear clipboard 20 times</string>
@ -172,7 +171,7 @@
<string name="prefs_use_default_file_picker">Use default file picker</string>
<string name="prefs_clear_after_copy_title">Automatically clear the clipboard after copy</string>
<string name="prefs_clear_after_copy_summary">After an automatic copy or a manual copy of the password, the clipboard will be automatically cleared.</string>
<string name="prefs_export_passwords_title">Export Passwords</string>
<string name="prefs_export_passwords_title">Export passwords</string>
<string name="prefs_export_passwords_summary">Exports the encrypted passwords to an external directory</string>
<string name="prefs_version">Version</string>
@ -208,7 +207,6 @@
<string name="xkpwgen_pref_custom_dict_picker_title">Custom worldlist file</string>
<string name="xkpwgen_pref_custom_dict_picker_summary">Tap to pick a custom wordlist file containing one word per line</string>
<!-- ssh keygen fragment -->
<string name="ssh_keygen_length">Length</string>
<string name="ssh_keygen_passphrase">Passphrase</string>

View file

@ -1,179 +1,180 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.preference.PreferenceCategory android:title="@string/pref_git_title">
<androidx.preference.PreferenceCategory app:title="@string/pref_git_title">
<androidx.preference.Preference
android:key="git_server_info"
android:title="@string/pref_edit_server_info" />
app:key="git_server_info"
app:title="@string/pref_edit_server_info" />
<androidx.preference.Preference
android:key="git_config"
android:title="@string/pref_edit_git_config" />
app:key="git_config"
app:title="@string/pref_edit_git_config" />
<androidx.preference.Preference
android:key="ssh_key"
android:title="@string/pref_ssh_title" />
app:key="ssh_key"
app:title="@string/pref_ssh_title" />
<androidx.preference.Preference
android:key="ssh_keygen"
android:title="@string/pref_ssh_keygen_title" />
app:key="ssh_keygen"
app:title="@string/pref_ssh_keygen_title" />
<androidx.preference.Preference
android:key="ssh_key_clear_passphrase"
android:title="@string/ssh_key_clear_passphrase" />
app:key="ssh_key_clear_passphrase"
app:title="@string/ssh_key_clear_passphrase" />
<androidx.preference.Preference
android:key="hotp_remember_clear_choice"
android:title="@string/hotp_remember_clear_choice" />
app:key="hotp_remember_clear_choice"
app:title="@string/hotp_remember_clear_choice" />
<androidx.preference.Preference
android:key="ssh_openkeystore_clear_keyid"
android:title="@string/ssh_openkeystore_clear_keyid" />
app:key="ssh_openkeystore_clear_keyid"
app:title="@string/ssh_openkeystore_clear_keyid" />
<androidx.preference.Preference
android:key="ssh_see_key"
android:title="@string/pref_ssh_see_key_title" />
app:key="ssh_see_key"
app:title="@string/pref_ssh_see_key_title" />
<androidx.preference.Preference
android:key="git_delete_repo"
android:summary="@string/pref_git_delete_repo_summary"
android:title="@string/pref_git_delete_repo" />
app:key="git_delete_repo"
app:summary="@string/pref_git_delete_repo_summary"
app:title="@string/pref_git_delete_repo" />
<CheckBoxPreference
android:key="git_external"
android:summary="@string/pref_external_repository_summary"
android:title="@string/pref_external_repository" />
app:key="git_external"
app:summary="@string/pref_external_repository_summary"
app:title="@string/pref_external_repository" />
<androidx.preference.Preference
android:dependency="git_external"
android:key="pref_select_external"
android:title="@string/pref_select_external_repository" />
app:dependency="git_external"
app:key="pref_select_external"
app:title="@string/pref_select_external_repository" />
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory android:title="@string/pref_crypto_title">
<androidx.preference.PreferenceCategory app:title="@string/pref_crypto_title">
<me.msfjarvis.openpgpktx.preference.OpenPgpAppPreference
android:key="openpgp_provider_list"
android:title="@string/pref_provider_title" />
app:key="openpgp_provider_list"
app:title="@string/pref_provider_title" />
<androidx.preference.Preference
android:key="openpgp_key_id_pref"
android:title="@string/pref_key_title" />
app:key="openpgp_key_id_pref"
app:title="@string/pref_key_title" />
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory android:title="@string/password_generator_category_title">
<androidx.preference.PreferenceCategory app:title="@string/password_generator_category_title">
<androidx.preference.ListPreference
android:key="pref_key_pwgen_type"
android:title="@string/xkpwgen_pref_gentype_title"
android:defaultValue="classic"
android:entries="@array/pwgen_provider"
android:entryValues="@array/pwgen_provider"
app:key="pref_key_pwgen_type"
app:title="@string/xkpwgen_pref_gentype_title"
app:defaultValue="classic"
app:entries="@array/pwgen_provider_labels"
app:entryValues="@array/pwgen_provider_values"
app:useSimpleSummaryProvider="true"
android:persistent="true" />
app:persistent="true" />
<androidx.preference.CheckBoxPreference
android:key="pref_key_is_custom_dict"
android:title="@string/xkpwgen_pref_custom_dict_title"
android:summaryOn="@string/xkpwgen_pref_custom_dict_summary_on"
android:summaryOff="@string/xkpwgen_pref_custom_dict_summary_off"/>
app:key="pref_key_is_custom_dict"
app:title="@string/xkpwgen_pref_custom_dict_title"
app:summaryOn="@string/xkpwgen_pref_custom_dict_summary_on"
app:summaryOff="@string/xkpwgen_pref_custom_dict_summary_off"/>
<androidx.preference.Preference
android:key="pref_key_custom_dict"
android:title="@string/xkpwgen_pref_custom_dict_picker_title"
android:summary="@string/xkpwgen_pref_custom_dict_picker_summary"
android:dependency="pref_key_is_custom_dict"/>
app:key="pref_key_custom_dict"
app:title="@string/xkpwgen_pref_custom_dict_picker_title"
app:summary="@string/xkpwgen_pref_custom_dict_picker_summary"
app:dependency="pref_key_is_custom_dict"/>
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory android:title="@string/pref_general_title">
<androidx.preference.PreferenceCategory app:title="@string/pref_general_title">
<androidx.preference.EditTextPreference
android:defaultValue="45"
android:dialogTitle="@string/pref_password_dialog_title"
app:defaultValue="45"
app:dialogTitle="@string/pref_show_time_summary"
android:inputType="number"
android:key="general_show_time"
android:summary="@string/pref_password_dialog_title"
android:title="@string/pref_password_title" />
app:key="general_show_time"
app:summary="@string/pref_show_time_summary"
app:title="@string/pref_show_time_title" />
<androidx.preference.CheckBoxPreference
android:defaultValue="true"
android:title="@string/show_password_pref_title"
android:summary="@string/show_password_pref_summary"
android:key="show_password" />
app:defaultValue="true"
app:title="@string/show_password_pref_title"
app:summary="@string/show_password_pref_summary"
app:key="show_password" />
<androidx.preference.CheckBoxPreference
android:defaultValue="true"
android:title="@string/show_extra_content_pref_title"
android:summary="@string/show_extra_content_pref_summary"
android:key="show_extra_content" />
app:defaultValue="true"
app:title="@string/show_extra_content_pref_title"
app:summary="@string/show_extra_content_pref_summary"
app:key="show_extra_content" />
<androidx.preference.CheckBoxPreference
android:defaultValue="true"
android:dialogTitle="@string/pref_copy_dialog_title"
android:key="copy_on_decrypt"
android:summary="@string/pref_copy_dialog_title"
android:title="@string/pref_copy_title" />
app:defaultValue="true"
app:dialogTitle="@string/pref_copy_dialog_title"
app:key="copy_on_decrypt"
app:summary="@string/pref_copy_dialog_title"
app:title="@string/pref_copy_title" />
<androidx.preference.CheckBoxPreference
android:defaultValue="true"
android:key="clear_after_copy"
android:summary="@string/prefs_clear_after_copy_summary"
android:title="@string/prefs_clear_after_copy_title" />
app:defaultValue="true"
app:key="clear_after_copy"
app:summary="@string/prefs_clear_after_copy_summary"
app:title="@string/prefs_clear_after_copy_title" />
<androidx.preference.CheckBoxPreference
android:defaultValue="true"
android:key="filter_recursively"
android:summary="@string/pref_recursive_filter_hint"
android:title="@string/pref_recursive_filter" />
app:defaultValue="true"
app:key="filter_recursively"
app:summary="@string/pref_recursive_filter_hint"
app:title="@string/pref_recursive_filter" />
<androidx.preference.CheckBoxPreference
android:defaultValue="false"
android:key="search_on_start"
android:summary="@string/pref_search_on_start_hint"
android:title="@string/pref_search_on_start" />
app:defaultValue="false"
app:key="search_on_start"
app:summary="@string/pref_search_on_start_hint"
app:title="@string/pref_search_on_start" />
<androidx.preference.CheckBoxPreference
android:defaultValue="false"
android:key="search_from_root"
android:summary="@string/pref_search_from_root_hint"
android:title="@string/pref_search_from_root" />
app:defaultValue="false"
app:key="search_from_root"
app:summary="@string/pref_search_from_root_hint"
app:title="@string/pref_search_from_root" />
<androidx.preference.ListPreference
android:title="@string/pref_sort_order_title"
android:defaultValue="FOLDER_FIRST"
android:key="sort_order"
android:entries="@array/sort_order_entries"
android:entryValues="@array/sort_order_values"
android:persistent="true" />
app:title="@string/pref_sort_order_title"
app:defaultValue="FOLDER_FIRST"
app:key="sort_order"
app:entries="@array/sort_order_entries"
app:entryValues="@array/sort_order_values"
app:persistent="true"
app:summary="%s" />
<androidx.preference.CheckBoxPreference
app:title="@string/pref_show_hidden_title"
app:summary="@string/pref_show_hidden_summary"
app:key="show_hidden_folders"
app:defaultValue="false"
app:persistent="true" />
<androidx.preference.SwitchPreferenceCompat
android:title="@string/pref_show_hidden_title"
android:summary="@string/pref_show_hidden_summary"
android:key="show_hidden_folders"
android:defaultValue="false"
android:persistent="true" />
<androidx.preference.SwitchPreferenceCompat
android:key="biometric_auth"
android:title="@string/biometric_auth_title"
android:summary="@string/biometric_auth_summary" />
app:key="biometric_auth"
app:title="@string/biometric_auth_title"
app:summary="@string/biometric_auth_summary" />
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory android:title="@string/pref_autofill_title">
<androidx.preference.CheckBoxPreference
android:defaultValue="true"
android:key="autofill_enable"
android:title="@string/pref_autofill_enable_title"/>
<androidx.preference.PreferenceCategory app:title="@string/pref_autofill_title">
<androidx.preference.SwitchPreferenceCompat
app:defaultValue="true"
app:key="autofill_enable"
app:title="@string/pref_autofill_enable_title"/>
<androidx.preference.Preference
android:key="autofill_apps"
android:title="@string/pref_autofill_apps_title"/>
app:key="autofill_apps"
app:title="@string/pref_autofill_apps_title"/>
<androidx.preference.CheckBoxPreference
android:defaultValue="true"
android:key="autofill_default"
android:summary="@string/pref_autofill_default_hint"
android:title="@string/pref_autofill_default_title"/>
app:defaultValue="true"
app:key="autofill_default"
app:summary="@string/pref_autofill_default_hint"
app:title="@string/pref_autofill_default_title"/>
<androidx.preference.CheckBoxPreference
android:defaultValue="false"
android:key="autofill_always"
android:title="@string/pref_autofill_always_title"/>
app:defaultValue="false"
app:key="autofill_always"
app:title="@string/pref_autofill_always_title"/>
<androidx.preference.CheckBoxPreference
android:defaultValue="false"
android:key="autofill_full_path"
android:summary="@string/pref_autofill_full_path_hint"
android:title="@string/pref_autofill_full_path_title"/>
app:defaultValue="false"
app:key="autofill_full_path"
app:summary="@string/pref_autofill_full_path_hint"
app:title="@string/pref_autofill_full_path_title"/>
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory android:title="@string/pref_misc_title">
<androidx.preference.PreferenceCategory app:title="@string/pref_misc_title">
<androidx.preference.Preference
android:key="export_passwords"
android:title="@string/prefs_export_passwords_title"
android:summary="@string/prefs_export_passwords_summary"/>
app:key="export_passwords"
app:title="@string/prefs_export_passwords_title"
app:summary="@string/prefs_export_passwords_summary"/>
<androidx.preference.CheckBoxPreference
android:defaultValue="false"
android:key="clear_clipboard_20x"
android:summary="@string/pref_clear_clipboard_hint"
android:title="@string/pref_clear_clipboard_title" />
app:defaultValue="false"
app:key="clear_clipboard_20x"
app:summary="@string/pref_clear_clipboard_hint"
app:title="@string/pref_clear_clipboard_title" />
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory>
<androidx.preference.Preference
android:icon="@mipmap/ic_launcher_round"
android:key="app_version"
android:title="@string/prefs_version" />
app:icon="@mipmap/ic_launcher_round"
app:key="app_version"
app:title="@string/prefs_version" />
</androidx.preference.PreferenceCategory>
</androidx.preference.PreferenceScreen>