fix: Save mode as registration mode

This commit is contained in:
J-Jamet
2025-09-24 19:25:24 +02:00
parent ea4750fc11
commit 5bcbbac97f
61 changed files with 107 additions and 265 deletions

View File

@@ -206,8 +206,8 @@ class EntryEditActivity : DatabaseLockActivity(),
mDatabase,
entryId,
parentId,
EntrySelectionHelper.retrieveRegisterInfoFromIntent(intent),
EntrySelectionHelper.retrieveSearchInfoFromIntent(intent)
EntrySelectionHelper.retrieveRegisterInfoFromIntent(intent)
?: EntrySelectionHelper.retrieveSearchInfoFromIntent(intent)?.toRegisterInfo()
)
// To retrieve attachment
@@ -381,7 +381,7 @@ class EntryEditActivity : DatabaseLockActivity(),
intent = intent,
defaultAction = {},
searchAction = {},
saveAction = {},
registrationAction = {},
keyboardSelectionAction = {
entryValidatedForKeyboardSelection(database, entrySave.newEntry)
},
@@ -442,7 +442,7 @@ class EntryEditActivity : DatabaseLockActivity(),
searchAction = {
// Nothing when search retrieved
},
saveAction = {
registrationAction = {
entryValidatedForSave(entry)
},
keyboardSelectionAction = {
@@ -783,7 +783,7 @@ class EntryEditActivity : DatabaseLockActivity(),
val bundle = buildEntryResult(entry)
val intentEntry = Intent()
intentEntry.putExtras(bundle)
setResult(Activity.RESULT_OK, intentEntry)
setResult(RESULT_OK, intentEntry)
super.finish()
} catch (e: Exception) {
// Exception when parcelable can't be done
@@ -803,7 +803,7 @@ class EntryEditActivity : DatabaseLockActivity(),
fun registerForEntryResult(fragment: Fragment,
entryAddedOrUpdatedListener: (NodeId<UUID>?) -> Unit): ActivityResultLauncher<Intent> {
return fragment.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
if (result.resultCode == RESULT_OK) {
entryAddedOrUpdatedListener.invoke(
result.data?.getParcelableExtraCompat(ADD_OR_UPDATE_ENTRY_KEY)
)
@@ -816,7 +816,7 @@ class EntryEditActivity : DatabaseLockActivity(),
fun registerForEntryResult(activity: FragmentActivity,
entryAddedOrUpdatedListener: (NodeId<UUID>?) -> Unit): ActivityResultLauncher<Intent> {
return activity.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
if (result.resultCode == RESULT_OK) {
entryAddedOrUpdatedListener.invoke(
result.data?.getParcelableExtraCompat(ADD_OR_UPDATE_ENTRY_KEY)
)
@@ -858,40 +858,6 @@ class EntryEditActivity : DatabaseLockActivity(),
}
}
fun launchToUpdateForSave(context: Context,
database: ContextualDatabase,
entryId: NodeId<UUID>,
searchInfo: SearchInfo) {
if (database.loaded && !database.isReadOnly) {
if (TimeoutHelper.checkTimeAndLockIfTimeout(context)) {
val intent = Intent(context, EntryEditActivity::class.java)
intent.putExtra(KEY_ENTRY, entryId)
EntrySelectionHelper.startActivityForSaveModeResult(
context,
intent,
searchInfo
)
}
}
}
fun launchToCreateForSave(context: Context,
database: ContextualDatabase,
groupId: NodeId<*>,
searchInfo: SearchInfo) {
if (database.loaded && !database.isReadOnly) {
if (TimeoutHelper.checkTimeAndLockIfTimeout(context)) {
val intent = Intent(context, EntryEditActivity::class.java)
intent.putExtra(KEY_PARENT, groupId)
EntrySelectionHelper.startActivityForSaveModeResult(
context,
intent,
searchInfo
)
}
}
}
/**
* Launch EntryEditActivity to add a new entry in keyboard selection
*/

View File

@@ -449,19 +449,6 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
searchInfo)
}
/*
* -------------------------
* Save Launch
* -------------------------
*/
fun launchForSaveResult(context: Context,
searchInfo: SearchInfo) {
EntrySelectionHelper.startActivityForSaveModeResult(context,
Intent(context, FileDatabaseSelectActivity::class.java),
searchInfo)
}
/*
* -------------------------
* Keyboard Launch

View File

@@ -500,12 +500,14 @@ class GroupActivity : DatabaseLockActivity(),
searchAction = {
// Search not used
},
saveAction = { searchInfo ->
EntryEditActivity.launchToCreateForSave(
registrationAction = { registerInfo ->
EntryEditActivity.launchToCreateForRegistration(
context = this@GroupActivity,
database = database,
activityResultLauncher = null,
groupId = currentGroup.nodeId,
searchInfo = searchInfo
registerInfo = registerInfo,
typeMode = TypeMode.DEFAULT
)
onLaunchActivitySpecialMode()
},
@@ -714,7 +716,7 @@ class GroupActivity : DatabaseLockActivity(),
searchAction = {
// Search not used
},
saveAction = {
registrationAction = {
// Save not used
},
keyboardSelectionAction = {
@@ -739,7 +741,7 @@ class GroupActivity : DatabaseLockActivity(),
}
},
passkeyRegistrationAction = {
// TODO Passkey Registration
// Not use
}
)
}
@@ -897,9 +899,15 @@ class GroupActivity : DatabaseLockActivity(),
searchAction = {
// Nothing here, a search is simply performed
},
saveAction = { searchInfo ->
registrationAction = { registerInfo ->
if (!database.isReadOnly) {
entrySelectedForSave(database, entryVersioned, searchInfo)
entrySelectedForRegistration(
database = database,
entry = entryVersioned,
activityResultLauncher = null,
registerInfo = registerInfo,
typeMode = TypeMode.DEFAULT
)
loadGroup()
} else
finish()
@@ -909,7 +917,11 @@ class GroupActivity : DatabaseLockActivity(),
&& searchInfo != null
&& PreferencesUtil.isKeyboardSaveSearchInfoEnable(this@GroupActivity)
) {
updateEntryWithSearchInfo(database, entryVersioned, searchInfo)
updateEntryWithRegisterInfo(
database,
entryVersioned,
searchInfo.toRegisterInfo()
)
}
entrySelectedForKeyboardSelection(database, entryVersioned)
loadGroup()
@@ -919,7 +931,11 @@ class GroupActivity : DatabaseLockActivity(),
&& searchInfo != null
&& PreferencesUtil.isAutofillSaveSearchInfoEnable(this@GroupActivity)
) {
updateEntryWithSearchInfo(database, entryVersioned, searchInfo)
updateEntryWithRegisterInfo(
database,
entryVersioned,
searchInfo.toRegisterInfo()
)
}
entrySelectedForAutofillSelection(database, entryVersioned)
loadGroup()
@@ -938,11 +954,6 @@ class GroupActivity : DatabaseLockActivity(),
finish()
},
passkeySelectionAction = { searchInfo ->
if (!database.isReadOnly
&& searchInfo != null
) {
updateEntryWithSearchInfo(database, entryVersioned, searchInfo)
}
entrySelectedForPasskeySelection(database, entryVersioned)
loadGroup()
},
@@ -966,18 +977,6 @@ class GroupActivity : DatabaseLockActivity(),
}
}
private fun entrySelectedForSave(database: ContextualDatabase, entry: Entry, searchInfo: SearchInfo) {
removeSearch()
// Save to update the entry
EntryEditActivity.launchToUpdateForSave(
this@GroupActivity,
database,
entry.nodeId,
searchInfo
)
onLaunchActivitySpecialMode()
}
private fun entrySelectedForKeyboardSelection(database: ContextualDatabase, entry: Entry) {
removeSearch()
// Populate Magikeyboard with entry
@@ -1032,10 +1031,10 @@ class GroupActivity : DatabaseLockActivity(),
onLaunchActivitySpecialMode()
}
private fun updateEntryWithSearchInfo(
private fun updateEntryWithRegisterInfo(
database: ContextualDatabase,
entry: Entry,
searchInfo: SearchInfo
registerInfo: RegisterInfo
) {
val newEntry = Entry(entry)
val entryInfo = newEntry.getEntryInfo(
@@ -1043,8 +1042,7 @@ class GroupActivity : DatabaseLockActivity(),
raw = true,
removeTemplateConfiguration = false
)
// TODO Transform SearchInfo in RegisterInfo
entryInfo.saveSearchInfo(database, searchInfo)
entryInfo.saveRegisterInfo(database, registerInfo)
newEntry.setEntryInfo(database, entryInfo)
updateEntry(entry, newEntry)
}
@@ -1603,27 +1601,6 @@ class GroupActivity : DatabaseLockActivity(),
}
}
/*
* -------------------------
* Search save Launch
* -------------------------
*/
fun launchForSaveResult(context: Context,
database: ContextualDatabase,
searchInfo: SearchInfo,
autoSearch: Boolean = false) {
if (database.loaded && !database.isReadOnly) {
checkTimeAndBuildIntent(context, null) { intent ->
intent.putExtra(AUTO_SEARCH_KEY, autoSearch)
EntrySelectionHelper.startActivityForSaveModeResult(
context,
intent,
searchInfo
)
}
}
}
/*
* -------------------------
* Keyboard Launch
@@ -1753,15 +1730,16 @@ class GroupActivity : DatabaseLockActivity(),
onCancelSpecialMode()
}
},
saveAction = { searchInfo ->
registrationAction = { registerInfo ->
// Save info
if (database.loaded) {
if (!database.isReadOnly) {
launchForSaveResult(
activity,
database,
searchInfo,
false
launchForRegistration(
context = activity,
activityResultLauncher = null,
database = database,
registerInfo = registerInfo,
typeMode = TypeMode.DEFAULT
)
onLaunchActivitySpecialMode()
} else {

View File

@@ -572,10 +572,7 @@ class MainCredentialActivity : DatabaseModeActivity() {
clearCredentialsViews()
}
if (mReadOnly && (
mSpecialMode == SpecialMode.SAVE
|| mSpecialMode == SpecialMode.REGISTRATION)
) {
if (mReadOnly && mSpecialMode == SpecialMode.REGISTRATION) {
Log.e(TAG, getString(R.string.error_save_read_only))
Snackbar.make(coordinatorLayout,
R.string.error_save_read_only,
@@ -802,26 +799,6 @@ class MainCredentialActivity : DatabaseModeActivity() {
}
}
/*
* -------------------------
* Save Launch
* -------------------------
*/
@Throws(FileNotFoundException::class)
fun launchForSaveResult(activity: Activity,
databaseFile: Uri,
keyFile: Uri?,
hardwareKey: HardwareKey?,
searchInfo: SearchInfo) {
buildAndLaunchIntent(activity, databaseFile, keyFile, hardwareKey) { intent ->
EntrySelectionHelper.startActivityForSaveModeResult(
activity,
intent,
searchInfo)
}
}
/*
* -------------------------
* Keyboard Launch
@@ -950,13 +927,15 @@ class MainCredentialActivity : DatabaseModeActivity() {
)
onLaunchActivitySpecialMode()
},
saveAction = { searchInfo ->
launchForSaveResult(
registrationAction = { registerInfo ->
launchForRegistration(
activity = activity,
activityResultLauncher = activityResultLauncher,
databaseFile = databaseUri,
keyFile = keyFile,
hardwareKey = hardwareKey,
searchInfo = searchInfo
typeMode = TypeMode.DEFAULT,
registerInfo = registerInfo
)
onLaunchActivitySpecialMode()
},

View File

@@ -392,10 +392,8 @@ abstract class DatabaseLockActivity : DatabaseModeActivity(),
}
private fun checkRegister() {
// If in ave or registration mode, don't allow read only
if ((mSpecialMode == SpecialMode.SAVE
|| mSpecialMode == SpecialMode.REGISTRATION)
&& mDatabaseReadOnly) {
// If in registration mode, don't allow read only
if (mSpecialMode == SpecialMode.REGISTRATION && mDatabaseReadOnly) {
Toast.makeText(this, R.string.error_registration_read_only , Toast.LENGTH_LONG).show()
EntrySelectionHelper.removeModesFromIntent(intent)
finish()

View File

@@ -125,9 +125,8 @@ abstract class DatabaseModeActivity : DatabaseActivity() {
val selectionModeStringId = when (mSpecialMode) {
SpecialMode.DEFAULT, // Not important because hidden
SpecialMode.SEARCH -> R.string.search_mode
SpecialMode.SAVE -> R.string.save_mode
SpecialMode.SELECTION -> R.string.selection_mode
SpecialMode.REGISTRATION -> R.string.registration_mode
SpecialMode.REGISTRATION -> R.string.save_mode // Save is registration mode
}
val typeModeStringId = when (mTypeMode) {
TypeMode.DEFAULT, // Not important because hidden
@@ -145,7 +144,6 @@ abstract class DatabaseModeActivity : DatabaseActivity() {
visible = when (mSpecialMode) {
SpecialMode.DEFAULT -> false
SpecialMode.SEARCH -> true
SpecialMode.SAVE -> true
SpecialMode.SELECTION -> true
SpecialMode.REGISTRATION -> true
}

View File

@@ -102,16 +102,6 @@ object EntrySelectionHelper {
context.startActivity(intent)
}
fun startActivityForSaveModeResult(context: Context,
intent: Intent,
searchInfo: SearchInfo) {
addSpecialModeInIntent(intent, SpecialMode.SAVE)
addTypeModeInIntent(intent, TypeMode.DEFAULT)
addSearchInfoInIntent(intent, searchInfo)
intent.flags = intent.flags or Intent.FLAG_ACTIVITY_CLEAR_TASK
context.startActivity(intent)
}
fun startActivityForKeyboardSelectionModeResult(context: Context,
intent: Intent,
searchInfo: SearchInfo?) {
@@ -245,16 +235,18 @@ object EntrySelectionHelper {
&& typeMode == TypeMode.PASSKEY)
}
fun doSpecialAction(intent: Intent,
fun doSpecialAction(
intent: Intent,
defaultAction: () -> Unit,
searchAction: (searchInfo: SearchInfo) -> Unit,
saveAction: (searchInfo: SearchInfo) -> Unit,
registrationAction: (registerInfo: RegisterInfo?) -> Unit,
keyboardSelectionAction: (searchInfo: SearchInfo?) -> Unit,
autofillSelectionAction: (searchInfo: SearchInfo?,
autofillComponent: AutofillComponent) -> Unit,
autofillRegistrationAction: (registerInfo: RegisterInfo?) -> Unit,
passkeySelectionAction: (searchInfo: SearchInfo?) -> Unit,
passkeyRegistrationAction: (registerInfo: RegisterInfo?) -> Unit) {
passkeyRegistrationAction: (registerInfo: RegisterInfo?) -> Unit
) {
when (retrieveSpecialModeFromIntent(intent)) {
SpecialMode.DEFAULT -> {
@@ -272,16 +264,6 @@ object EntrySelectionHelper {
defaultAction.invoke()
}
}
SpecialMode.SAVE -> {
val searchInfo = retrieveSearchInfoFromIntent(intent)
removeModesFromIntent(intent)
removeInfoFromIntent(intent)
if (searchInfo != null)
saveAction.invoke(searchInfo)
else {
defaultAction.invoke()
}
}
SpecialMode.SELECTION -> {
val searchInfo: SearchInfo? = retrieveSearchInfoFromIntent(intent)
var autofillComponentInit = false
@@ -334,7 +316,11 @@ object EntrySelectionHelper {
passkeyRegistrationAction.invoke(registerInfo)
}
else -> {
// Do other registration type
if (registerInfo != null)
registrationAction.invoke(registerInfo)
else {
defaultAction.invoke()
}
}
}
}

View File

@@ -3,7 +3,6 @@ package com.kunzisoft.keepass.credentialprovider
enum class SpecialMode {
DEFAULT,
SEARCH,
SAVE,
SELECTION,
REGISTRATION;
}

View File

@@ -22,12 +22,11 @@ package com.kunzisoft.keepass.credentialprovider.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.core.net.toUri
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.FileDatabaseSelectActivity
import com.kunzisoft.keepass.activities.GroupActivity
import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity
import com.kunzisoft.keepass.credentialprovider.TypeMode
import com.kunzisoft.keepass.credentialprovider.magikeyboard.MagikeyboardService
import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException
@@ -88,7 +87,7 @@ class EntrySelectionLauncherActivity : DatabaseModeActivity() {
if (OtpEntryFields.isOTPUri(extra))
otpString = extra
}
launchSelection(database, sharedWebDomain, otpString)
launchSelection(database, null, otpString)
}
else -> {
if (database != null) {
@@ -133,11 +132,12 @@ class EntrySelectionLauncherActivity : DatabaseModeActivity() {
// Items found
if (searchInfo.otpString != null) {
if (!readOnly) {
GroupActivity.launchForSaveResult(
this,
openedDatabase,
searchInfo,
false
GroupActivity.launchForRegistration(
context = this,
activityResultLauncher = null,
database = openedDatabase,
registerInfo = searchInfo.toRegisterInfo(),
typeMode = TypeMode.DEFAULT
)
} else {
toastError(RegisterInReadOnlyDatabaseException())
@@ -174,11 +174,12 @@ class EntrySelectionLauncherActivity : DatabaseModeActivity() {
// Show the database UI to select the entry
if (searchInfo.otpString != null) {
if (!readOnly) {
GroupActivity.launchForSaveResult(
this,
openedDatabase,
searchInfo,
false
GroupActivity.launchForRegistration(
context = this,
activityResultLauncher = null,
database = openedDatabase,
registerInfo = searchInfo.toRegisterInfo(),
typeMode = TypeMode.DEFAULT
)
} else {
toastError(RegisterInReadOnlyDatabaseException())
@@ -202,9 +203,11 @@ class EntrySelectionLauncherActivity : DatabaseModeActivity() {
onDatabaseClosed = {
// If database not open
if (searchInfo.otpString != null) {
FileDatabaseSelectActivity.launchForSaveResult(
this,
searchInfo
FileDatabaseSelectActivity.launchForRegistration(
context = this,
activityResultLauncher = null,
registerInfo = searchInfo.toRegisterInfo(),
typeMode = TypeMode.DEFAULT
)
} else if (searchShareForMagikeyboard) {
FileDatabaseSelectActivity.launchForKeyboardSelectionResult(

View File

@@ -16,7 +16,6 @@ import com.kunzisoft.keepass.model.AttachmentState
import com.kunzisoft.keepass.model.EntryAttachmentState
import com.kunzisoft.keepass.model.EntryInfo
import com.kunzisoft.keepass.model.RegisterInfo
import com.kunzisoft.keepass.model.SearchInfo
import com.kunzisoft.keepass.model.StreamDirection
import com.kunzisoft.keepass.otp.OtpElement
import com.kunzisoft.keepass.utils.IOActionTask
@@ -28,7 +27,6 @@ class EntryEditViewModel: NodeEditViewModel() {
private var mEntryId: NodeId<UUID>? = null
private var mParentId: NodeId<*>? = null
private var mRegisterInfo: RegisterInfo? = null
private var mSearchInfo: SearchInfo? = null
private var mParent: Group? = null
private var mEntry: Entry? = null
private var mIsTemplate: Boolean = false
@@ -74,18 +72,18 @@ class EntryEditViewModel: NodeEditViewModel() {
private val _onBinaryPreviewLoaded = SingleLiveEvent<AttachmentPosition>()
fun loadDatabase(database: ContextualDatabase?) {
loadTemplateEntry(database, mEntryId, mParentId, mRegisterInfo, mSearchInfo)
loadTemplateEntry(database, mEntryId, mParentId, mRegisterInfo)
}
fun loadTemplateEntry(database: ContextualDatabase?,
fun loadTemplateEntry(
database: ContextualDatabase?,
entryId: NodeId<UUID>?,
parentId: NodeId<*>?,
registerInfo: RegisterInfo?,
searchInfo: SearchInfo?) {
registerInfo: RegisterInfo?
) {
this.mEntryId = entryId
this.mParentId = parentId
this.mRegisterInfo = registerInfo
this.mSearchInfo = searchInfo
database?.let {
mEntryId?.let {
@@ -105,8 +103,7 @@ class EntryEditViewModel: NodeEditViewModel() {
database,
entry,
mIsTemplate,
registerInfo,
searchInfo
registerInfo
)
}
},
@@ -145,8 +142,7 @@ class EntryEditViewModel: NodeEditViewModel() {
database,
mEntry,
mIsTemplate,
registerInfo,
searchInfo
registerInfo
)
}
},
@@ -159,11 +155,12 @@ class EntryEditViewModel: NodeEditViewModel() {
}
}
private fun decodeTemplateEntry(database: ContextualDatabase,
private fun decodeTemplateEntry(
database: ContextualDatabase,
entry: Entry?,
isTemplate: Boolean,
registerInfo: RegisterInfo?,
searchInfo: SearchInfo?): TemplatesEntry {
registerInfo: RegisterInfo?
): TemplatesEntry {
val templates = database.getTemplates(isTemplate)
val entryTemplate = entry?.let { database.getTemplate(it) }
?: Template.STANDARD
@@ -174,10 +171,6 @@ class EntryEditViewModel: NodeEditViewModel() {
// Load entry info
entry.getEntryInfo(database, true).let { tempEntryInfo ->
// Retrieve data from registration
// TODO only save registration
searchInfo?.let { tempSearchInfo ->
tempEntryInfo.saveSearchInfo(database, tempSearchInfo)
}
registerInfo?.let { regInfo ->
tempEntryInfo.saveRegisterInfo(database, regInfo)
}

View File

@@ -452,7 +452,6 @@
<string name="menu_form_filling_settings">ملء النموذج</string>
<string name="menu_reload_database">أعد تحميل البيانات</string>
<string name="menu_external_icon">أيقونة خارجية</string>
<string name="registration_mode">وضع التسجيل</string>
<string name="import_app_properties_title">استورد خصائص التطبيق</string>
<string name="import_app_properties_summary">اختر ملفًا لاستيراد إعدادات التطبيق</string>
<string name="export_app_properties_title">صدّر إعدادات التطبيق</string>

View File

@@ -485,7 +485,6 @@
<string name="search_mode">Axtarış modu</string>
<string name="save_mode">Yadda saxlama modu</string>
<string name="selection_mode">Seçim modu</string>
<string name="registration_mode">Qeydiyyat modu</string>
<string name="remember_database_locations_title">Məlumat bazalarının yerlərini xatırlayın</string>
<string name="remember_database_locations_summary">Məlumat bazalarının harada saxlanıldığını izlə</string>
<string name="remember_hardware_key_summary">Aparat-təchizat açarlarının harada istifadə olunduğunu izlə</string>

View File

@@ -336,7 +336,6 @@
<string name="menu_keystore_remove_key">Izbrišite ključ za otključavanje uređaja</string>
<string name="subdomain_search_summary">Pretražujte veb domene sa ograničenjima poddomena</string>
<string name="export_app_properties_title">Izvezite podešavanja aplikacije</string>
<string name="registration_mode">Režim registracije</string>
<string name="remember_database_locations_title">Zapamtite lokacije baza podataka</string>
<string name="remember_hardware_key_title">Zapamtite hardverske ključeve</string>
<string name="remember_hardware_key_summary">Vodi evidenciju o korišćenim hardverskim ključevima</string>

View File

@@ -296,7 +296,6 @@
<string name="search_mode">Рэжым пошуку</string>
<string name="save_mode">Рэжым захавання</string>
<string name="selection_mode">Рэжым выбару</string>
<string name="registration_mode">Рэжым рэгістрацыі</string>
<string name="remember_database_locations_title">Запамінаць размяшчэнне баз дадзеных</string>
<string name="remember_database_locations_summary">Адсочвае, дзе захоўваюцца базы дадзеных</string>
<string name="remember_keyfile_locations_title">Запамінаць размяшчэнне файлаў ключоў</string>

View File

@@ -462,7 +462,6 @@
<string name="error_invalid_OTP">Неприемлива тайна за OTP.</string>
<string name="error_no_name">Въведете име.</string>
<string name="hide_broken_locations_summary">Скрива вече несъществуващи хранилища от списъка с последно отваряните</string>
<string name="registration_mode">Режим регистрация</string>
<string name="remember_database_locations_title">Запомняне използваните хранилища</string>
<string name="show_recent_files_title">Показване на последните хранилища</string>
<string name="search_mode">Режим търсене</string>

View File

@@ -209,7 +209,6 @@
<string name="search_mode">অনুসন্ধান মোড</string>
<string name="save_mode">সেভ মোড</string>
<string name="selection_mode">নির্বাচন মোড</string>
<string name="registration_mode">রেজিস্ট্রেশন মোড</string>
<string name="remember_keyfile_locations_summary">কী ফাইলগুলি কোথায় সংরক্ষণ করা হয় তা ট্র্যাক রাখে</string>
<string name="show_recent_files_title">সাম্প্রতিক ফাইল দেখান</string>
<string name="show_recent_files_summary">সাম্প্রতিক ডাটাবেসের অবস্থান দেখান</string>

View File

@@ -347,7 +347,6 @@
<string name="place_of_issue">Lloc d\'expedició</string>
<string name="style_brightness_summary">Escull tema clar o fosc</string>
<string name="hardware_key">Clau física</string>
<string name="registration_mode">Mode de registre</string>
<string name="ignore_chars_filter">Ignora caràcters</string>
<string name="ask">Pregunta</string>
<string name="searchable">Cercable</string>

View File

@@ -480,7 +480,6 @@
<string name="biometric_security_update_required">Vyžadována aktualizace biometrického zabezpečení.</string>
<string name="configure_biometric">Žádné přihlašovací ani biometrické údaje nejsou registrovány.</string>
<string name="warning_empty_recycle_bin">Trvale odstranit všechny uzly z koše\?</string>
<string name="registration_mode">Registrace</string>
<string name="save_mode">Režim ukládání</string>
<string name="search_mode">Vyhledávání</string>
<string name="error_field_name_already_exists">Jméno kolonky již existuje.</string>

View File

@@ -475,7 +475,6 @@
\n
\nDatabasen kan blive meget stor og reducere ydeevnen med denne overførelse.</string>
<string name="warning_empty_recycle_bin">Slet alle noder permanent fra papirkurven\?</string>
<string name="registration_mode">Registreringstilstand</string>
<string name="save_mode">Gem-tilstand</string>
<string name="search_mode">Søgetilstand</string>
<string name="error_registration_read_only">Det er ikke tilladt at gemme et nyt element i en skrivebeskyttet database.</string>

View File

@@ -486,7 +486,6 @@
<string name="notification">Benachrichtigung</string>
<string name="biometric_security_update_required">Biometrische Sicherheitsaktualisierung erforderlich.</string>
<string name="configure_biometric">Es sind weder Biometrie- noch Geräteanmeldedaten registriert.</string>
<string name="registration_mode">Registrierungsmodus</string>
<string name="save_mode">Speichermodus</string>
<string name="search_mode">Suchmodus</string>
<string name="error_registration_read_only">Speichern eines neuen Elements in einer schreibgeschützten Datenbank ist unzulässig.</string>

View File

@@ -479,7 +479,6 @@
<string name="biometric_security_update_required">Απαιτείται ενημέρωση βιομετρικής ασφάλειας.</string>
<string name="configure_biometric">Κανένα πιστοποιητικό βιομετρίας ή συσκευής δεν είναι εγγεγραμμένο.</string>
<string name="warning_empty_recycle_bin">Να διαγραφούν οριστικά όλοι οι κόμβοι από τον κάδο ανακύκλωσης;</string>
<string name="registration_mode">Τρόπος εγγραφής</string>
<string name="save_mode">Λειτουργία αποθήκευσης</string>
<string name="search_mode">Λειτουργία αναζήτησης</string>
<string name="error_registration_read_only">Η αποθήκευση ενός νέου αντικειμένου δεν επιτρέπεται σε μια βάση δεδομένων μόνο για ανάγνωση.</string>

View File

@@ -452,7 +452,6 @@
<string name="configure_biometric">No se ha inscrito ninguna credencial biométrica o del dispositivo.</string>
<string name="warning_empty_keyfile_explanation">El contenido del archivo de clave nunca debe modificarse y, en el mejor de los casos, debe contener datos generados al azar.</string>
<string name="warning_empty_recycle_bin">¿Borrar permanentemente todos los nodos de la papelera de reciclaje\?</string>
<string name="registration_mode">Modo de registro</string>
<string name="save_mode">Modo de guardado</string>
<string name="search_mode">Modo de búsqueda</string>
<string name="contains_duplicate_uuid_procedure">¿Solucionar el problema generando nuevos UUID para que los duplicados continúen?</string>

View File

@@ -383,7 +383,6 @@
<string name="search_mode">Otsinguviis</string>
<string name="save_mode">Salvestusviis</string>
<string name="selection_mode">Valikuviis</string>
<string name="registration_mode">Registreerimisviis</string>
<string name="invalid_credentials">Salasõna või võtmefaili ei õnnestunud lugeda.</string>
<string name="protection">Kaitse</string>
<string name="underline">Allajoonitud</string>

View File

@@ -355,7 +355,6 @@
<string name="read_only_warning">Zure fitxategi nabigatzailearen arabera, KeePassDXek ez du baimenduta datuak idaztea.</string>
<string name="save_mode">Gorde modua</string>
<string name="selection_mode">Hautaketa modua</string>
<string name="registration_mode">Erregistro-modua</string>
<string name="remember_database_locations_title">Gogoratu datu-baseen kokalekuak</string>
<string name="remember_database_locations_summary">Erregistratu datu-baseen kokapenak</string>
<string name="remember_keyfile_locations_title">Gogoratu fitxategi-gakoen kokapenak</string>

View File

@@ -271,7 +271,6 @@
<string name="import_app_properties_summary">یک فایل برای وارد کردن ویژگی های برنامه انتخاب کنید</string>
<string name="import_app_properties_title">وارد کردن ویژگی های برنامه</string>
<string name="export_app_properties_title">صادر کردن ویژگی های برنامه</string>
<string name="registration_mode">حالت ثبت</string>
<string name="save_mode">حالت ذخیره</string>
<string name="search_mode">حالت جستجو</string>
<string name="menu_external_icon">نماد خارجی</string>

View File

@@ -431,7 +431,6 @@
<string name="warning_large_keyfile">Ei ole suositeltavaa lisätä suurta avantiedostos, sillä se voi estää tietokantaa avautumasta.</string>
<string name="warning_empty_keyfile_explanation">Avaintiedoston sisältöä ei tulisi koskaan muuttaa, ja parhaassa tapauksessa sen tulisi sisältää satunnaisesti tuotettua tietoa.</string>
<string name="save_mode">Tallennustila</string>
<string name="registration_mode">Rekisteröintitila</string>
<string name="export_app_properties_summary">Luo tiedosto, johon sovellusasetukset viedään</string>
<string name="export_app_properties_title">Vie sovellusasetukset</string>
<string name="description_app_properties">KeePassDX ominaisuudet sovellusasetusten hallintaan</string>

View File

@@ -298,7 +298,6 @@
<string name="export_app_properties_summary">Gumawa ng file para i-export ang mga setting ng app</string>
<string name="search_mode">Mode ng paghahanap</string>
<string name="selection_mode">Mode ng pagpili</string>
<string name="registration_mode">Mode ng pagrehistro</string>
<string name="remember_database_locations_summary">Sinusubaybayan kung saan naka-imbak ang mga database</string>
<string name="remember_keyfile_locations_title">Tandaan ang mga lokasyon ng keyfile</string>
<string name="remember_hardware_key_summary">Sinusubaybayan ang mga ginamit na hardware key</string>

View File

@@ -495,7 +495,6 @@
<string name="notification">Notification</string>
<string name="biometric_security_update_required">Mise à jour de sécurité biométrique requise.</string>
<string name="warning_empty_recycle_bin">Supprimer définitivement tous les nœuds de la corbeille \?</string>
<string name="registration_mode">Mode enregistrement</string>
<string name="save_mode">Mode sauvegarde</string>
<string name="search_mode">Mode recherche</string>
<string name="error_registration_read_only">Lenregistrement dun nouvel élément nest pas autorisé dans une base de données en lecture seule.</string>

View File

@@ -324,7 +324,6 @@
<string name="contains_duplicate_uuid">A base de datos contén UUIDs duplicados.</string>
<string name="contains_duplicate_uuid_procedure">Resolver o problema xerando novas UUIDs para que os duplicados continúen\?</string>
<string name="selection_mode">Modo de selección</string>
<string name="registration_mode">Modo de rexistro</string>
<string name="remember_database_locations_title">Lembrar localización das bases de datos</string>
<string name="remember_keyfile_locations_summary">Mantén un rexistro de onde son almacenados os ficheiros clave</string>
<string name="remember_hardware_key_title">Lembrar claves hardware</string>

View File

@@ -476,7 +476,6 @@
<string name="warning_empty_recycle_bin">Trajno izbrisati sve čvorove iz smeća\?</string>
<string name="biometric_security_update_required">Potrebno je aktualizirati biometrijsku zaštitu.</string>
<string name="configure_biometric">Ne postoji biometrijski ključ niti podaci za prijavu uređaja.</string>
<string name="registration_mode">Modus registracije</string>
<string name="save_mode">Modus spremanja</string>
<string name="search_mode">Modus pretrage</string>
<string name="error_field_name_already_exists">Ime polja već postoji.</string>

View File

@@ -450,7 +450,6 @@
\nA feltöltéstől az adatbázis nagyon nagyra nőhet, és csökkenhet a teljesítmény.</string>
<string name="warning_empty_recycle_bin">Végleg törli az összes csomópontot a kukából\?</string>
<string name="filter">Szűrő</string>
<string name="registration_mode">Regisztrációs mód</string>
<string name="save_mode">Mentési mód</string>
<string name="search_mode">Keresési mód</string>
<string name="subdomain_search_summary">Webdomainek keresése aldomain megszorításokkal</string>

View File

@@ -306,7 +306,6 @@
<string name="memory_usage_explanation">Jumlah memori yang akan digunakan oleh fungsi derivasi kunci.</string>
<string name="rounds_explanation">Putaran enkripsi tambahan memberikan perlindungan yang lebih tinggi terhadap serangan brute force, akan tetapi dapat memperlambat pemuatan dan penyimpanan.</string>
<string name="kdf_explanation">Untuk menghasilkan kunci untuk algoritma enkripsi, kunci master diubah menggunakan fungsi derivasi randomly salted key.</string>
<string name="registration_mode">Mode pendaftaran</string>
<string name="save_mode">Mode simpan</string>
<string name="search_mode">Mode pencarian</string>
<string name="menu_keystore_remove_key">Menghapus kunci buka kunci perangkat</string>

View File

@@ -481,7 +481,6 @@
<string name="notification">Notifica</string>
<string name="biometric_security_update_required">È necessario un aggiornamento della sicurezza biometrica.</string>
<string name="warning_empty_recycle_bin">Eliminare definitivamente tutti i nodi dal cestino\?</string>
<string name="registration_mode">Modalità registrazione</string>
<string name="save_mode">Modalità salvataggio</string>
<string name="search_mode">Modalità ricerca</string>
<string name="error_field_name_already_exists">Il nome del campo esiste già.</string>

View File

@@ -316,7 +316,6 @@
<string name="invalid_db_same_uuid">%1$s עם אותו UUID %2$s כבר קיים.</string>
<string name="master_key_settings_summary">שינוי, חידוש</string>
<string name="info">מידע</string>
<string name="registration_mode">מצב הרשמה</string>
<string name="menu_form_filling_settings_summary">מקלדת, מילוי אוטומטי, לוח העתקה</string>
<string name="search_mode">מצב חיפוש</string>
<string name="remember_database_locations_title">זכור מיקומי מסדי הנתונים</string>

View File

@@ -208,7 +208,6 @@
<string name="contains_duplicate_uuid">データベースには重複する UUID が含まれています。</string>
<string name="contains_duplicate_uuid_procedure">重複したエントリーに対する新しい UUID を生成して、問題を解決し続行しますか?</string>
<string name="selection_mode">選択モード</string>
<string name="registration_mode">登録モード</string>
<string name="remember_database_locations_title">データベースの場所を記憶</string>
<string name="remember_database_locations_summary">データベースの保存先を保持します</string>
<string name="remember_keyfile_locations_title">キーファイルの場所を記憶</string>

View File

@@ -344,7 +344,6 @@
<string name="menu_merge_from">... 로부터 병합</string>
<string name="menu_save_copy_to">... 에 복사본 저장</string>
<string name="menu_keystore_remove_key">고급 잠금 해제 키를 삭제</string>
<string name="registration_mode">등록 모드</string>
<string name="sort_last_access_time">접근</string>
<string name="invalid_db_same_uuid">%1$s 와 동일한 UUID %2$s 가 이미 존재합니다.</string>
<string name="underline">밑줄</string>

View File

@@ -306,7 +306,6 @@
<string name="subdomain_search_title">Subdomeno paieška</string>
<string name="subdomain_search_summary">Ieškoti žiniatinklio domenuose su subdomenų apribojimais</string>
<string name="contains_duplicate_uuid">Duomenų bazėje yra pasikartojančių UUID.</string>
<string name="registration_mode">Registracijos režimas</string>
<string name="show_recent_files_title">Rodyti naujausius failus</string>
<string name="show_recent_files_summary">Rodyti paskutinių duomenų bazių vietas</string>
<string name="memory_usage_explanation">Atminties kiekis, kurį turi naudoti rakto išvedimo funkcija.</string>

View File

@@ -373,7 +373,6 @@
<string name="keyboard_save_search_info_title">പങ്കിട്ട വിവരം സംരക്ഷിക്കുക</string>
<string name="clipboard_notifications_title">ക്ലിപ്ബോർഡ് അറിയിപ്പുകൾ</string>
<string name="warning_empty_recycle_bin">റീസൈക്കിൾ ബിന്നിൽ നിന്ന് എല്ലാ നോഡുകളും ശാശ്വതമായി ഇല്ലാതാക്കണോ\?</string>
<string name="registration_mode">രജിസ്ട്രേഷൻ മോഡ്</string>
<string name="search_mode">തിരയൽ മോഡ്</string>
<string name="error_registration_read_only">read-only ഡാറ്റാബേസിൽ പുതിയ ഒരു ഇനം സംരക്ഷിക്കാൻ കഴിയില്ല.</string>
<string name="education_device_unlock_title">വിപുലമായ ഡാറ്റാബേസ് അൺലോക്ക്</string>

View File

@@ -399,7 +399,6 @@
<string name="autofill_ask_to_save_data_title">Spør om lagring av data</string>
<string name="warning_empty_keyfile">Det anbefales ikke å legge til en tom nøkkelfil.</string>
<string name="warning_sure_add_file">Legg til filen uansett\?</string>
<string name="registration_mode">Registreringsmodus</string>
<string name="save_mode">Lagringsmodus</string>
<string name="search_mode">Søkemodus</string>
<string name="error_field_name_already_exists">Feltnavnet finnes allerede.</string>

View File

@@ -481,7 +481,6 @@
<string name="biometric_security_update_required">Biometrische beveiligingsupdate vereist.</string>
<string name="configure_biometric">Geen biometrische gegevens of apparaatgegevens geregistreerd.</string>
<string name="warning_empty_recycle_bin">Alles definitief uit de prullenbak verwijderen\?</string>
<string name="registration_mode">Registratiemodus</string>
<string name="save_mode">Veilige modus</string>
<string name="search_mode">Zoekmodus</string>
<string name="error_registration_read_only">Het opslaan van een nieuw item is niet toegestaan in een alleen-lezen database.</string>

View File

@@ -291,7 +291,6 @@
<string name="upload_attachment">%1$s ਅੱਪਲੋਡ ਕਰੋ</string>
<string name="show_uuid_summary">ਐਂਟਰੀ ਨਾਲ ਸੰਬੰਧਿਤ UUID ਦਿਖਾਉਂਦਾ ਹੈ</string>
<string name="encryption_explanation">ਸਾਰੇ ਡਾਟੇ ਲਈ ਡਾਟਾਬੇਸ ਇੰਕ੍ਰਿਪਸ਼ਨ ਐਲਗੋਰਿਥਮ ਵਰਤਿਆ ਗਿਆ ਹੈ।</string>
<string name="registration_mode">ਰਜਿਸਟਰੇਸ਼ਨ ਢੰਗ</string>
<string name="save_mode">ਸੰਭਾਲਣ ਢੰਗ</string>
<string name="search_mode">ਖੋਜਣ ਢੰਗ</string>
<string name="keystore_not_accessible">ਕੀ-ਸਟੋਰ ਠੀਕ ਢੰਗ ਨਾਲ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋਇਆ ਹੈ।</string>

View File

@@ -478,7 +478,6 @@
<string name="biometric_security_update_required">Wymagana aktualizacja zabezpieczeń biometrycznych.</string>
<string name="configure_biometric">Nie zarejestrowano żadnych danych biometrycznych ani danych urządzenia.</string>
<string name="warning_empty_recycle_bin">Trwale usunąć wszystkie węzły z kosza\?</string>
<string name="registration_mode">Tryb rejestracji</string>
<string name="save_mode">Tryb zapisywania</string>
<string name="search_mode">Tryb wyszukiwania</string>
<string name="error_registration_read_only">Zapisywanie nowego elementu nie jest dozwolone w bazie danych tylko do odczytu.</string>

View File

@@ -530,7 +530,6 @@
<string name="export_app_properties_title">Exportar as configurações do aplicativo</string>
<string name="import_app_properties_summary">Selecione um arquivo para importar as configurações do aplicativo</string>
<string name="import_app_properties_title">Importar as configurações do aplicativo</string>
<string name="registration_mode">Modo registro</string>
<string name="save_mode">Modo salvar</string>
<string name="search_mode">Modo busca</string>
<string name="menu_external_icon">Ícone externo</string>

View File

@@ -477,7 +477,6 @@
<string name="warning_database_info_changed_options">Unir os dados, substituir as alterações externas guardado a base de dados ou recarregá-los com as últimas alterações.</string>
<string name="warning_database_info_changed">A informação contida no seu ficheiro da base de dados foi alterada fora da aplicação.</string>
<string name="warning_empty_recycle_bin">Eliminar permanentemente todos os nós do caixote da reciclagem\?</string>
<string name="registration_mode">Modo de registo</string>
<string name="save_mode">Modo de guardar</string>
<string name="search_mode">Modo de pesquisa</string>
<string name="menu_keystore_remove_key">Eliminar a chave de desbloqueio do dispositivo</string>

View File

@@ -455,7 +455,6 @@
<string name="warning_database_info_changed_options">Unir os dados, substituir as alterações externas guardado a base de dados ou recarregá-los com as últimas alterações.</string>
<string name="warning_database_info_changed">A informação contida no seu ficheiro da base de dados foi alterada fora da aplicação.</string>
<string name="warning_empty_recycle_bin">Eliminar permanentemente todos os nós do caixote da reciclagem\?</string>
<string name="registration_mode">Modo de registo</string>
<string name="save_mode">Modo de guardar</string>
<string name="search_mode">Modo de pesquisa</string>
<string name="menu_keystore_remove_key">Eliminar a chave de desbloqueio do dispositivo</string>

View File

@@ -526,7 +526,6 @@
<string name="error_driver_required">Driver-ul pentru %1$s este necesară.</string>
<string name="error_unable_merge_database_kdb">Nu s-a putut fuziona cu o bază de date de format kdb.</string>
<string name="error_location_unknown">Locația bazei de date este necunoscută, acțiunea bazei de date nu poate fi efectuată.</string>
<string name="registration_mode">Mod de înregistrare</string>
<string name="remember_hardware_key_title">Reține cheile hardware</string>
<string name="remember_hardware_key_summary">Păstrează evidența cheilor hardware utilizate</string>
<string name="import_app_properties_summary">Selectați un fișier pentru a importa setările aplicației</string>

View File

@@ -479,7 +479,6 @@
<string name="notification">Уведомление</string>
<string name="biometric_security_update_required">Требуется обновление биометрической системы безопасности.</string>
<string name="warning_empty_recycle_bin">Удалить всё содержимое корзины безвозвратно\?</string>
<string name="registration_mode">Режим регистрации</string>
<string name="save_mode">Режим записи</string>
<string name="search_mode">Режим поиска</string>
<string name="error_registration_read_only">Сохранение новых записей невозможно, т.к. база открыта только для чтения.</string>

View File

@@ -514,7 +514,6 @@
<string name="copy_field">Kópia %1$s</string>
<string name="menu_security_settings">Bezpečnostné nastavenia</string>
<string name="menu_cancel">Zrušiť</string>
<string name="registration_mode">Režim registrácie</string>
<string name="show_recent_files_summary">Zobraziť umiestnenie nedávnych databáz</string>
<string name="show_recent_files_title">Zobraziť posledné súbory</string>
<string name="encryption_explanation">Algoritmus šifrovania databázy používaný pre všetky údaje</string>

View File

@@ -234,7 +234,6 @@
<string name="protection">Mbrojtje</string>
<string name="contains_duplicate_uuid">Baza e të dhënave përmban UUID-ra të përsëdytur.</string>
<string name="selection_mode">Mënyrë përzgjedhjeje</string>
<string name="registration_mode">Mënyrë regjistrimi</string>
<string name="remember_database_locations_title">Mbaj mend vendndodhje bazash të dhënash</string>
<string name="remember_keyfile_locations_title">Mbaj mend vendndodhje kartelash kyçesh</string>
<string name="show_recent_files_title">Shfaq kartelë të freskëta</string>

View File

@@ -322,7 +322,6 @@
<string name="search_mode">Режим претраге</string>
<string name="save_mode">Режим чувања</string>
<string name="selection_mode">Режим избора</string>
<string name="registration_mode">Режим регистрације</string>
<string name="hide_broken_locations_title">Сакриј неисправне везе базе података</string>
<string name="hide_broken_locations_summary">Сакријте покварене везе на листи недавних база података</string>
<string name="import_app_properties_title">Увезите подешавања апликације</string>

View File

@@ -535,7 +535,6 @@
<string name="subdomain_search_title">Subdomänsök</string>
<string name="subdomain_search_summary">Sök webbdomän med subdomänbegränsning</string>
<string name="search_mode">Sökläge</string>
<string name="registration_mode">Registreringsläge</string>
<string name="remember_hardware_key_title">Kom ihåg hårdvarunycklar</string>
<string name="remember_hardware_key_summary">Kom ihåg hårdvarunycklar som används</string>
<string name="import_app_properties_title">Importera appinställningar</string>

View File

@@ -414,7 +414,6 @@
<string name="exclude_ambiguous_chars">தெளிவற்ற கதாபாத்திரங்களை விலக்கவும்</string>
<string name="word_separator">பிரிப்பான்</string>
<string name="screenshot_mode_banner_text">திரைக்காட்சி பயன்முறை</string>
<string name="registration_mode">பதிவு முறை</string>
<string name="warning_database_info_reloaded">தரவுத்தளத்தை மீண்டும் ஏற்றுவது உள்நாட்டில் மாற்றியமைக்கப்பட்ட தரவை நீக்கும்.</string>
<string name="disable">முடக்கு</string>
<string name="autofill_close_database_title">தரவுத்தளத்தை மூடு</string>

View File

@@ -300,7 +300,6 @@
<string name="contains_duplicate_uuid">ฐานข้อมูลมี UUID ที่ซ้ำกัน</string>
<string name="contains_duplicate_uuid_procedure">แก้ปัญหาด้วยการสร้าง UUID ใหม่เพื่อรายการที่ซ้ํากัน ดําเนินการต่อหรือไม่\?</string>
<string name="remember_keyfile_locations_summary">ติดตามตำแหน่งที่เก็บ keyfile</string>
<string name="registration_mode">โหมดการลงทะเบียน</string>
<string name="remember_database_locations_summary">ติดตามตำแหน่งที่เก็บฐานข้อมูล</string>
<string name="remember_keyfile_locations_title">จดจำตำแหน่ง keyfile</string>
<string name="remember_hardware_key_title">จดจําคีย์ฮาร์ดแวร์</string>

View File

@@ -473,7 +473,6 @@
<string name="biometric_security_update_required">Biyometrik güvenlik güncellemesi gerekli.</string>
<string name="configure_biometric">Biyometrik bilgiler veya aygıt kimlik doğrulama bilgileri kaydedilmedi.</string>
<string name="warning_empty_recycle_bin">Geri dönüşüm kutusundaki tüm düğümler kalıcı olarak silinsin mi\?</string>
<string name="registration_mode">Kayıt modu</string>
<string name="save_mode">Kaydetme modu</string>
<string name="search_mode">Arama modu</string>
<string name="error_registration_read_only">Salt okunur bir veri tabanında yeni bir öge kaydetmeye izin verilmiyor.</string>

View File

@@ -479,7 +479,6 @@
<string name="biometric_security_update_required">Необхідно оновити біометричний захист.</string>
<string name="configure_biometric">Біометричних чи облікових даних пристрою не зареєстровано.</string>
<string name="warning_empty_recycle_bin">Видалити всі вузли з кошика остаточно\?</string>
<string name="registration_mode">Режим реєстрації</string>
<string name="save_mode">Режим збереження</string>
<string name="search_mode">Режим пошуку</string>
<string name="error_registration_read_only">Збереження нового елемента заборонено в базі даних лише для читання.</string>

View File

@@ -309,7 +309,6 @@
<string name="search_mode">Chế độ tìm kiếm</string>
<string name="save_mode">Chế độ lưu</string>
<string name="selection_mode">Chế độ lựa chọn</string>
<string name="registration_mode">Chế độ đăng ký</string>
<string name="remember_database_locations_title">Ghi nhớ vị trí cơ sở dữ liệu</string>
<string name="remember_database_locations_summary">Theo dõi nơi cơ sở dữ liệu được lưu trữ</string>
<string name="remember_keyfile_locations_title">Ghi nhớ vị trí của tệp khóa</string>

View File

@@ -478,7 +478,6 @@
<string name="biometric_security_update_required">需要生物识别安全更新。</string>
<string name="configure_biometric">未登记生物识别或设备凭证。</string>
<string name="warning_empty_recycle_bin">从回收站永久删除所有节点?</string>
<string name="registration_mode">注册模式</string>
<string name="save_mode">保存模式</string>
<string name="search_mode">搜索模式</string>
<string name="error_registration_read_only">只读数据库不允许保存新条目。</string>

View File

@@ -476,7 +476,6 @@
<string name="recycle_bin_group_title">回收桶(組)</string>
<string name="recycle_bin_summary">刪除群組和項目前先移至回收桶</string>
<string name="recycle_bin_title">回收桶使用情況</string>
<string name="registration_mode">註冊模式</string>
<string name="remember_database_locations_summary">跟蹤資料庫的存儲位置</string>
<string name="remember_database_locations_title">記住所有資料庫的位置</string>
<string name="remember_keyfile_locations_summary">追蹤密鑰檔案位置</string>

View File

@@ -314,7 +314,6 @@
<string name="search_mode">Search mode</string>
<string name="save_mode">Save mode</string>
<string name="selection_mode">Selection mode</string>
<string name="registration_mode">Registration mode</string>
<string name="remember_database_locations_title">Remember databases locations</string>
<string name="remember_database_locations_summary">Keeps track of where databases are stored</string>
<string name="remember_keyfile_locations_title">Remember keyfile locations</string>

View File

@@ -187,7 +187,7 @@ class EntryInfo : NodeInfo {
/**
* Add searchInfo to current EntryInfo
*/
fun saveSearchInfo(database: Database?, searchInfo: SearchInfo) {
private fun saveSearchInfo(database: Database?, searchInfo: SearchInfo) {
searchInfo.otpString?.let { otpString ->
setOtp(otpString)
} ?: searchInfo.webDomain?.let { webDomain ->

View File

@@ -158,6 +158,10 @@ class SearchInfo : ObjectNameResource, Parcelable {
return otpString ?: webDomain ?: applicationId ?: relyingParty ?: tag ?: ""
}
fun toRegisterInfo(): RegisterInfo {
return RegisterInfo(this)
}
companion object {
// https://gist.github.com/rishabhmhjn/8663966
const val APPLICATION_ID_REGEX = "^(?:[a-zA-Z]+(?:\\d*[a-zA-Z_]*)*)(?:\\.[a-zA-Z]+(?:\\d*[a-zA-Z_]*)*)+\$"