diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 75f0752a..8e05d5b8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -43,7 +43,8 @@
+ android:parentActivityName=".PasswordStore"
+ android:label="@string/action_settings" />
diff --git a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt
index 2a8f584d..8667110a 100644
--- a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt
@@ -60,7 +60,7 @@ class UserPreference : AppCompatActivity() {
class PrefsFragment : PreferenceFragmentCompat() {
private var autofillDependencies = listOf()
- 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("openpgp_key_id_pref")
// General preferences
+ val showTimePreference = findPreference("general_show_time")
val clearAfterCopyPreference = findPreference("clear_after_copy")
val clearClipboard20xPreference = findPreference("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()).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("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 {
+ getString(R.string.pref_show_time_summary, sharedPreferences.getString("general_show_time", "45"))
+ }
findPreference("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"
}
}
}
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index 3ac92731..c23ff0e0 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -80,7 +80,7 @@
التشفير
إختيار مزود الأوبن بي جي بي OpenPGP
الإعدادات العامة
- مدة الإبقاء على كلمة السر ظاهرة
+ مدة الإبقاء على كلمة السر ظاهرة
نسخ كلمة السر تلقائيًا
تم استيراد مفتاح الـ SSH
حدث هناك خطأ أثناء عملية إسترجاع مفتاح الـ SSH
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 40b9e316..c1830df5 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -79,8 +79,7 @@
Vybrat poskytovatele OpenPGP
Vybrat ID OpenPGP klíče
Všeobecné
- Čas zobrazení hesla
- Nastavení času po který bude heslo uloženo ve schránce
+ Čas zobrazení hesla
Automaticky kopírovat heslo
Automatické kopírování hesla do schránky po úspěšném dešifrování.
SSH-key importován
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 99358f5a..1c4b3cde 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -96,8 +96,7 @@
Wähle OpenPGP-Provider
Wähle OpenPGP-Key ID
Allgemein
- Ablaufzeit des Passworts
- Nach dieser Anzahl der Sekunden wird das Passwort aus der Zwischenablage gelöscht.
+ Ablaufzeit des Passworts
Kopiere Passwort automatisch
Kopiert das Passwort in die Zwischenablage, wenn der Eintrag entschlüsselt wurde.
SSH-Key importiert
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 84d1f7b9..faaf046e 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -122,8 +122,7 @@
Selecciona la llave OpenPGP
Ninguna llave seleccionada
General
- Tiempo para mostrar contraseña
- Establece el tiempo antes de limpiar la contraseña del portapapeles. Un valor de cero deshabilita el limpiado.
+ Tiempo para mostrar contraseña
Copiar contraseña automáticamente
Automáticamente copia la contraseña al portapapeles si el descifrado fue exitoso.
Llave SSH importada
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index a45a90a8..93f21000 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -81,8 +81,7 @@
Sélection du prestataire OpenPGP
Sélection de votre identifiant OpenPGP
Général
- Durée de disponibilité du mot de passe
- Choisissez la durée pendant laquelle le mot de passe sera disponnible dans le presse-papier
+ Durée de disponibilité du mot de passe
Copie automatique du mot de passe
Copie automatiquement le mot de passe vers le presse-papier si le déchiffrement a réussi.
Clef SSH importée
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 43db9352..ae7ea9ab 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -82,8 +82,7 @@
OpenPGP プロバイダーを選択
OpenPGP 鍵 ID を選択
全般
- パスワード表示時間
- パスワードをクリップボードに入れておく時間を設定
+ パスワード表示時間
自動的にパスワードをコピー
復号化が成功した後、自動的にパスワードをクリップボードにコピーします。
SSH 鍵をインポートしました
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index b21824a6..e34cb292 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -100,8 +100,7 @@
Выберите провайдера OpenPGP
Выберите ключ OpenPGP
Общие
- Время в буфере
- Время нахождения пароля в буфере обмена
+ Время в буфере
Автоматически копировать пароль
Автоматически копировать пароль в буфер обмена после успешного расшифрования
SSH ключ импортирован
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 1201fd31..61deada0 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -65,8 +65,7 @@
删除本地的 (隐藏) Repo
Git
选择 OpenPGP Key Id
- 选择密码在剪贴板中保存的时间限制
- 密码保存时限
+ 密码保存时限
选择 OpenPGP 应用
搜索子文件夹
在当前目录的子目录中查找密码
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index f8c01e48..22da24d2 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -63,8 +63,7 @@
刪除本機的 (隱藏) Repo
Git
選擇 OpenPGP Key Id
- 選擇密碼在剪貼簿中保存的時間限制
- 密碼保存時限
+ 密碼保存時限
選擇 OpenPGP app
搜尋子資料夾
在目前目錄的子目錄中查詢密碼
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 6b757fd6..522fe6cc 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -43,7 +43,11 @@
- 9
- 10
-
+
+ - Classic
+ - XKPasswd
+
+
- classic
- xkpasswd
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index cbc88eaf..288b93f2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,11 +10,11 @@
Delete directory
Cancel
Repository information
- Git Configurations
+ Git configuration
- Please clone or create a new repository below before trying to add a password or any synchronization operation.
- You have to select your "PGP-Key ID" before initializing the repository
+ Please clone or create a new repository below before trying to add a password or running any synchronization operation.
+ You have to select your PGP key ID before initializing the repository
Are you sure you want to delete the password %1$s?
Move
Edit
@@ -29,15 +29,14 @@
This will overwrite %1$s with %2$s.
- Add password for %1$s using android password store.
- "Edit %1$s using android password store."
- "Folder %1$s created using android password store."
- "Remove %1$s from store."
- "Rename %1$s to %2$s."
- "Increment HOTP counter for %1$s."
+ Add generated password for %1$s using android password store.
+ Edit password for %1$s using android password store.
+ Remove %1$s from store.
+ Rename %1$s to %2$s.
+ Increment HOTP counter for %1$s.
- No OpenPGP Provider selected!
+ No OpenPGP provider selected!
Password copied to clipboard, you have %d seconds to paste it somewhere.
Password copied to clipboard
Username copied to clipboard
@@ -134,13 +133,13 @@
Delete repository
Clear repository
Crypto
- Select OpenPGP Provider
- Select OpenPGP Key id
+ Select OpenPGP provider
+ Select OpenPGP key ID
No key selected
General
- Password Show Time
- Set the time (in seconds) you want the password to be in clipboard. 0 means forever.
- Automatically copy Password
+ Password show time
+ Set the time (in seconds) you want the password to be in clipboard. 0 means forever. Current value: %1$s
+ Automatically copy password
Automatically copy the password to the clipboard after decryption was successful.
SSH-key imported
Error while trying to import the ssh-key
@@ -148,9 +147,9 @@
Recursive filtering
Recursively find passwords of the current directory.
Password sort order
- Folders First
- Files First
- Type Independent
+ Folders first
+ Files first
+ Type independent
Autofill
Enable autofill
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.
@@ -160,7 +159,7 @@
Automatically match by default
Default to \'Automatically match\' for apps without custom settings. Otherwise, \'Never match.\'
Always show dialog
- Show Full Path
+ Show full path
Show full path of matching password files
Misc
Clear clipboard 20 times
@@ -172,7 +171,7 @@
Use default file picker
Automatically clear the clipboard after copy
After an automatic copy or a manual copy of the password, the clipboard will be automatically cleared.
- Export Passwords
+ Export passwords
Exports the encrypted passwords to an external directory
Version
@@ -208,7 +207,6 @@
Custom worldlist file
Tap to pick a custom wordlist file containing one word per line
-
Length
Passphrase
diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml
index 3d91cbfa..1fb8d325 100644
--- a/app/src/main/res/xml/preference.xml
+++ b/app/src/main/res/xml/preference.xml
@@ -1,179 +1,180 @@
-
+
+ app:key="git_server_info"
+ app:title="@string/pref_edit_server_info" />
+ app:key="git_config"
+ app:title="@string/pref_edit_git_config" />
+ app:key="ssh_key"
+ app:title="@string/pref_ssh_title" />
+ app:key="ssh_keygen"
+ app:title="@string/pref_ssh_keygen_title" />
+ app:key="ssh_key_clear_passphrase"
+ app:title="@string/ssh_key_clear_passphrase" />
+ app:key="hotp_remember_clear_choice"
+ app:title="@string/hotp_remember_clear_choice" />
+ app:key="ssh_openkeystore_clear_keyid"
+ app:title="@string/ssh_openkeystore_clear_keyid" />
+ app:key="ssh_see_key"
+ app:title="@string/pref_ssh_see_key_title" />
+ app:key="git_delete_repo"
+ app:summary="@string/pref_git_delete_repo_summary"
+ app:title="@string/pref_git_delete_repo" />
+ app:key="git_external"
+ app:summary="@string/pref_external_repository_summary"
+ app:title="@string/pref_external_repository" />
+ app:dependency="git_external"
+ app:key="pref_select_external"
+ app:title="@string/pref_select_external_repository" />
-
+
+ app:key="openpgp_provider_list"
+ app:title="@string/pref_provider_title" />
+ app:key="openpgp_key_id_pref"
+ app:title="@string/pref_key_title" />
-
+
+ app:persistent="true" />
+ 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"/>
+ 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"/>
-
+
+ app:key="general_show_time"
+ app:summary="@string/pref_show_time_summary"
+ app:title="@string/pref_show_time_title" />
+ app:defaultValue="true"
+ app:title="@string/show_password_pref_title"
+ app:summary="@string/show_password_pref_summary"
+ app:key="show_password" />
+ app:defaultValue="true"
+ app:title="@string/show_extra_content_pref_title"
+ app:summary="@string/show_extra_content_pref_summary"
+ app:key="show_extra_content" />
+ 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" />
+ app:defaultValue="true"
+ app:key="clear_after_copy"
+ app:summary="@string/prefs_clear_after_copy_summary"
+ app:title="@string/prefs_clear_after_copy_title" />
+ app:defaultValue="true"
+ app:key="filter_recursively"
+ app:summary="@string/pref_recursive_filter_hint"
+ app:title="@string/pref_recursive_filter" />
+ app:defaultValue="false"
+ app:key="search_on_start"
+ app:summary="@string/pref_search_on_start_hint"
+ app:title="@string/pref_search_on_start" />
+ app:defaultValue="false"
+ app:key="search_from_root"
+ app:summary="@string/pref_search_from_root_hint"
+ app:title="@string/pref_search_from_root" />
+ 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" />
+
-
+ app:key="biometric_auth"
+ app:title="@string/biometric_auth_title"
+ app:summary="@string/biometric_auth_summary" />
-
-
+
+
+ app:key="autofill_apps"
+ app:title="@string/pref_autofill_apps_title"/>
+ app:defaultValue="true"
+ app:key="autofill_default"
+ app:summary="@string/pref_autofill_default_hint"
+ app:title="@string/pref_autofill_default_title"/>
+ app:defaultValue="false"
+ app:key="autofill_always"
+ app:title="@string/pref_autofill_always_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"/>
-
+
+ app:key="export_passwords"
+ app:title="@string/prefs_export_passwords_title"
+ app:summary="@string/prefs_export_passwords_summary"/>
+ app:defaultValue="false"
+ app:key="clear_clipboard_20x"
+ app:summary="@string/pref_clear_clipboard_hint"
+ app:title="@string/pref_clear_clipboard_title" />
+ app:icon="@mipmap/ic_launcher_round"
+ app:key="app_version"
+ app:title="@string/prefs_version" />