mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Add max history preferences
This commit is contained in:
@@ -112,9 +112,6 @@ class Database {
|
|||||||
return pwDatabaseV4?.kdfEngine ?: return KdfFactory.aesKdf
|
return pwDatabaseV4?.kdfEngine ?: return KdfFactory.aesKdf
|
||||||
}
|
}
|
||||||
|
|
||||||
val numberKeyEncryptionRoundsAsString: String
|
|
||||||
get() = numberKeyEncryptionRounds.toString()
|
|
||||||
|
|
||||||
var numberKeyEncryptionRounds: Long
|
var numberKeyEncryptionRounds: Long
|
||||||
get() = pwDatabaseV3?.numberKeyEncryptionRounds ?: pwDatabaseV4?.numberKeyEncryptionRounds ?: 0
|
get() = pwDatabaseV3?.numberKeyEncryptionRounds ?: pwDatabaseV4?.numberKeyEncryptionRounds ?: 0
|
||||||
@Throws(NumberFormatException::class)
|
@Throws(NumberFormatException::class)
|
||||||
@@ -123,9 +120,6 @@ class Database {
|
|||||||
pwDatabaseV4?.numberKeyEncryptionRounds = numberRounds
|
pwDatabaseV4?.numberKeyEncryptionRounds = numberRounds
|
||||||
}
|
}
|
||||||
|
|
||||||
val memoryUsageAsString: String
|
|
||||||
get() = memoryUsage.toString()
|
|
||||||
|
|
||||||
var memoryUsage: Long
|
var memoryUsage: Long
|
||||||
get() {
|
get() {
|
||||||
return pwDatabaseV4?.memoryUsage ?: return KdfEngine.UNKNOWN_VALUE.toLong()
|
return pwDatabaseV4?.memoryUsage ?: return KdfEngine.UNKNOWN_VALUE.toLong()
|
||||||
@@ -134,9 +128,6 @@ class Database {
|
|||||||
pwDatabaseV4?.memoryUsage = memory
|
pwDatabaseV4?.memoryUsage = memory
|
||||||
}
|
}
|
||||||
|
|
||||||
val parallelismAsString: String
|
|
||||||
get() = parallelism.toString()
|
|
||||||
|
|
||||||
var parallelism: Int
|
var parallelism: Int
|
||||||
get() = pwDatabaseV4?.parallelism ?: KdfEngine.UNKNOWN_VALUE
|
get() = pwDatabaseV4?.parallelism ?: KdfEngine.UNKNOWN_VALUE
|
||||||
set(parallelism) {
|
set(parallelism) {
|
||||||
@@ -161,6 +152,22 @@ class Database {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var historyMaxItems: Int
|
||||||
|
get() {
|
||||||
|
return pwDatabaseV4?.historyMaxItems ?: 0
|
||||||
|
}
|
||||||
|
set(value) {
|
||||||
|
pwDatabaseV4?.historyMaxItems = value
|
||||||
|
}
|
||||||
|
|
||||||
|
var historyMaxSize: Long
|
||||||
|
get() {
|
||||||
|
return pwDatabaseV4?.historyMaxSize ?: 0
|
||||||
|
}
|
||||||
|
set(value) {
|
||||||
|
pwDatabaseV4?.historyMaxSize = value
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if RecycleBin is available or not for this version of database
|
* Determine if RecycleBin is available or not for this version of database
|
||||||
* @return true if RecycleBin available
|
* @return true if RecycleBin available
|
||||||
@@ -708,14 +715,14 @@ class Database {
|
|||||||
pwDatabaseV4?.let {
|
pwDatabaseV4?.let {
|
||||||
val history = entry.getHistory()
|
val history = entry.getHistory()
|
||||||
|
|
||||||
val maxItems = it.historyMaxItems
|
val maxItems = historyMaxItems
|
||||||
if (maxItems >= 0) {
|
if (maxItems >= 0) {
|
||||||
while (history.size > maxItems) {
|
while (history.size > maxItems) {
|
||||||
entry.removeOldestEntryFromHistory()
|
entry.removeOldestEntryFromHistory()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val maxSize = it.historyMaxSize
|
val maxSize = historyMaxSize
|
||||||
if (maxSize >= 0) {
|
if (maxSize >= 0) {
|
||||||
while (true) {
|
while (true) {
|
||||||
var historySize: Long = 0
|
var historySize: Long = 0
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
|
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
val autoFillEnablePreference: SwitchPreference? = findPreference<SwitchPreference>(getString(R.string.settings_autofill_enable_key))
|
val autoFillEnablePreference: SwitchPreference? = findPreference(getString(R.string.settings_autofill_enable_key))
|
||||||
if (autoFillEnablePreference != null) {
|
if (autoFillEnablePreference != null) {
|
||||||
val autofillManager = activity.getSystemService(AutofillManager::class.java)
|
val autofillManager = activity.getSystemService(AutofillManager::class.java)
|
||||||
autoFillEnablePreference.isChecked = autofillManager != null
|
autoFillEnablePreference.isChecked = autofillManager != null
|
||||||
@@ -139,7 +139,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
setPreferencesFromResource(R.xml.preferences_form_filling, rootKey)
|
setPreferencesFromResource(R.xml.preferences_form_filling, rootKey)
|
||||||
|
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
val autoFillEnablePreference: SwitchPreference? = findPreference<SwitchPreference>(getString(R.string.settings_autofill_enable_key))
|
val autoFillEnablePreference: SwitchPreference? = findPreference(getString(R.string.settings_autofill_enable_key))
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
val autofillManager = activity.getSystemService(AutofillManager::class.java)
|
val autofillManager = activity.getSystemService(AutofillManager::class.java)
|
||||||
if (autofillManager != null && autofillManager.hasEnabledAutofillServices())
|
if (autofillManager != null && autofillManager.hasEnabledAutofillServices())
|
||||||
@@ -217,7 +217,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
setPreferencesFromResource(R.xml.preferences_advanced_unlock, rootKey)
|
setPreferencesFromResource(R.xml.preferences_advanced_unlock, rootKey)
|
||||||
|
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
val biometricUnlockEnablePreference: SwitchPreference? = findPreference<SwitchPreference>(getString(R.string.biometric_unlock_enable_key))
|
val biometricUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.biometric_unlock_enable_key))
|
||||||
// < M solve verifyError exception
|
// < M solve verifyError exception
|
||||||
var biometricUnlockSupported = false
|
var biometricUnlockSupported = false
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
@@ -240,7 +240,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val deleteKeysFingerprints: Preference? = findPreference<Preference>(getString(R.string.biometric_delete_all_key_key))
|
val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key))
|
||||||
if (!biometricUnlockSupported) {
|
if (!biometricUnlockSupported) {
|
||||||
deleteKeysFingerprints?.isEnabled = false
|
deleteKeysFingerprints?.isEnabled = false
|
||||||
} else {
|
} else {
|
||||||
@@ -338,10 +338,10 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
|
|
||||||
if (mDatabase.loaded) {
|
if (mDatabase.loaded) {
|
||||||
|
|
||||||
val dbGeneralPrefCategory: PreferenceCategory? = findPreference<PreferenceCategory>(getString(R.string.database_general_key))
|
val dbGeneralPrefCategory: PreferenceCategory? = findPreference(getString(R.string.database_general_key))
|
||||||
|
|
||||||
// Db name
|
// Db name
|
||||||
val dbNamePref: InputTextPreference? = findPreference<InputTextPreference>(getString(R.string.database_name_key))
|
val dbNamePref: InputTextPreference? = findPreference(getString(R.string.database_name_key))
|
||||||
if (mDatabase.containsName()) {
|
if (mDatabase.containsName()) {
|
||||||
dbNamePref?.summary = mDatabase.name
|
dbNamePref?.summary = mDatabase.name
|
||||||
} else {
|
} else {
|
||||||
@@ -349,15 +349,27 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Db description
|
// Db description
|
||||||
val dbDescriptionPref: InputTextPreference? = findPreference<InputTextPreference>(getString(R.string.database_description_key))
|
val dbDescriptionPref: InputTextPreference? = findPreference(getString(R.string.database_description_key))
|
||||||
if (mDatabase.containsDescription()) {
|
if (mDatabase.containsDescription()) {
|
||||||
dbDescriptionPref?.summary = mDatabase.description
|
dbDescriptionPref?.summary = mDatabase.description
|
||||||
} else {
|
} else {
|
||||||
dbGeneralPrefCategory?.removePreference(dbDescriptionPref)
|
dbGeneralPrefCategory?.removePreference(dbDescriptionPref)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Version
|
||||||
|
findPreference<Preference>(getString(R.string.database_version_key))
|
||||||
|
?.summary = mDatabase.getVersion()
|
||||||
|
|
||||||
|
// Max history items
|
||||||
|
findPreference<InputNumberPreference>(getString(R.string.max_history_items_key))
|
||||||
|
?.summary = mDatabase.historyMaxItems.toString()
|
||||||
|
|
||||||
|
// Max history size
|
||||||
|
findPreference<InputNumberPreference>(getString(R.string.max_history_size_key))
|
||||||
|
?.summary = mDatabase.historyMaxSize.toString()
|
||||||
|
|
||||||
// Recycle bin
|
// Recycle bin
|
||||||
val recycleBinPref: SwitchPreference? = findPreference<SwitchPreference>(getString(R.string.recycle_bin_key))
|
val recycleBinPref: SwitchPreference? = findPreference(getString(R.string.recycle_bin_key))
|
||||||
// TODO Recycle
|
// TODO Recycle
|
||||||
dbGeneralPrefCategory?.removePreference(recycleBinPref) // To delete
|
dbGeneralPrefCategory?.removePreference(recycleBinPref) // To delete
|
||||||
if (mDatabase.isRecycleBinAvailable) {
|
if (mDatabase.isRecycleBinAvailable) {
|
||||||
@@ -367,10 +379,6 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
dbGeneralPrefCategory?.removePreference(recycleBinPref)
|
dbGeneralPrefCategory?.removePreference(recycleBinPref)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Version
|
|
||||||
findPreference<Preference>(getString(R.string.database_version_key))
|
|
||||||
?.summary = mDatabase.getVersion()
|
|
||||||
|
|
||||||
// Encryption Algorithm
|
// Encryption Algorithm
|
||||||
findPreference<DialogListExplanationPreference>(getString(R.string.encryption_algorithm_key))
|
findPreference<DialogListExplanationPreference>(getString(R.string.encryption_algorithm_key))
|
||||||
?.summary = mDatabase.getEncryptionAlgorithmName(resources)
|
?.summary = mDatabase.getEncryptionAlgorithmName(resources)
|
||||||
@@ -380,16 +388,16 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
?.summary = mDatabase.getKeyDerivationName(resources)
|
?.summary = mDatabase.getKeyDerivationName(resources)
|
||||||
|
|
||||||
// Round encryption
|
// Round encryption
|
||||||
mRoundPref = findPreference<InputNumberPreference>(getString(R.string.transform_rounds_key))
|
mRoundPref = findPreference(getString(R.string.transform_rounds_key))
|
||||||
mRoundPref?.summary = mDatabase.numberKeyEncryptionRoundsAsString
|
mRoundPref?.summary = mDatabase.numberKeyEncryptionRounds.toString()
|
||||||
|
|
||||||
// Memory Usage
|
// Memory Usage
|
||||||
mMemoryPref = findPreference<InputNumberPreference>(getString(R.string.memory_usage_key))
|
mMemoryPref = findPreference(getString(R.string.memory_usage_key))
|
||||||
mMemoryPref?.summary = mDatabase.memoryUsageAsString
|
mMemoryPref?.summary = mDatabase.memoryUsage.toString()
|
||||||
|
|
||||||
// Parallelism
|
// Parallelism
|
||||||
mParallelismPref = findPreference<InputNumberPreference>(getString(R.string.parallelism_key))
|
mParallelismPref = findPreference(getString(R.string.parallelism_key))
|
||||||
mParallelismPref?.summary = mDatabase.parallelismAsString
|
mParallelismPref?.summary = mDatabase.parallelism.toString()
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.e(javaClass.name, "Database isn't ready")
|
Log.e(javaClass.name, "Database isn't ready")
|
||||||
@@ -397,7 +405,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun allowCopyPassword() {
|
private fun allowCopyPassword() {
|
||||||
val copyPasswordPreference: SwitchPreference? = findPreference<SwitchPreference>(getString(R.string.allow_copy_password_key))
|
val copyPasswordPreference: SwitchPreference? = findPreference(getString(R.string.allow_copy_password_key))
|
||||||
copyPasswordPreference?.setOnPreferenceChangeListener { _, newValue ->
|
copyPasswordPreference?.setOnPreferenceChangeListener { _, newValue ->
|
||||||
if (newValue as Boolean && context != null) {
|
if (newValue as Boolean && context != null) {
|
||||||
val message = getString(R.string.allow_copy_password_warning) +
|
val message = getString(R.string.allow_copy_password_warning) +
|
||||||
@@ -461,6 +469,12 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
preference.key == getString(R.string.database_description_key) -> {
|
preference.key == getString(R.string.database_description_key) -> {
|
||||||
dialogFragment = DatabaseDescriptionPreferenceDialogFragmentCompat.newInstance(preference.key)
|
dialogFragment = DatabaseDescriptionPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||||
}
|
}
|
||||||
|
preference.key == getString(R.string.max_history_items_key) -> {
|
||||||
|
dialogFragment = MaxHistoryItemsPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||||
|
}
|
||||||
|
preference.key == getString(R.string.max_history_size_key) -> {
|
||||||
|
dialogFragment = MaxHistorySizePreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||||
|
}
|
||||||
preference.key == getString(R.string.encryption_algorithm_key) -> {
|
preference.key == getString(R.string.encryption_algorithm_key) -> {
|
||||||
dialogFragment = DatabaseEncryptionAlgorithmPreferenceDialogFragmentCompat.newInstance(preference.key)
|
dialogFragment = DatabaseEncryptionAlgorithmPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Jeremy Jamet / Kunzisoft.
|
||||||
|
*
|
||||||
|
* This file is part of KeePass DX.
|
||||||
|
*
|
||||||
|
* KeePass DX is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* KeePass DX is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.Toast
|
||||||
|
import com.kunzisoft.keepass.R
|
||||||
|
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||||
|
|
||||||
|
class MaxHistoryItemsPreferenceDialogFragmentCompat : InputDatabaseSavePreferenceDialogFragmentCompat() {
|
||||||
|
|
||||||
|
override fun onBindDialogView(view: View) {
|
||||||
|
super.onBindDialogView(view)
|
||||||
|
|
||||||
|
inputText = database?.historyMaxItems?.toString() ?: "0"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDialogClosed(positiveResult: Boolean) {
|
||||||
|
if (database != null && positiveResult) {
|
||||||
|
var maxHistoryItems: Int
|
||||||
|
try {
|
||||||
|
maxHistoryItems = inputText.toInt()
|
||||||
|
} catch (e: NumberFormatException) {
|
||||||
|
Toast.makeText(context, R.string.error_rounds_not_number, Toast.LENGTH_LONG).show() // TODO change error
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (maxHistoryItems < 1) {
|
||||||
|
maxHistoryItems = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
val oldMaxHistoryItems = database!!.historyMaxItems
|
||||||
|
database!!.historyMaxItems = maxHistoryItems
|
||||||
|
|
||||||
|
actionInUIThreadAfterSaveDatabase = AfterMaxHistoryItemsSave(maxHistoryItems, oldMaxHistoryItems)
|
||||||
|
}
|
||||||
|
|
||||||
|
super.onDialogClosed(positiveResult)
|
||||||
|
}
|
||||||
|
|
||||||
|
private inner class AfterMaxHistoryItemsSave(private val mNewMaxHistoryItems: Int,
|
||||||
|
private val mOldMaxHistoryItems: Int)
|
||||||
|
: ActionRunnable() {
|
||||||
|
|
||||||
|
override fun onFinishRun(result: Result) {
|
||||||
|
var maxHistoryItemsToShow = mOldMaxHistoryItems
|
||||||
|
if (!result.isSuccess) {
|
||||||
|
maxHistoryItemsToShow = mNewMaxHistoryItems
|
||||||
|
database?.historyMaxItems = mNewMaxHistoryItems
|
||||||
|
}
|
||||||
|
preference.summary = maxHistoryItemsToShow.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
fun newInstance(key: String): MaxHistoryItemsPreferenceDialogFragmentCompat {
|
||||||
|
val fragment = MaxHistoryItemsPreferenceDialogFragmentCompat()
|
||||||
|
val bundle = Bundle(1)
|
||||||
|
bundle.putString(ARG_KEY, key)
|
||||||
|
fragment.arguments = bundle
|
||||||
|
|
||||||
|
return fragment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 Jeremy Jamet / Kunzisoft.
|
||||||
|
*
|
||||||
|
* This file is part of KeePass DX.
|
||||||
|
*
|
||||||
|
* KeePass DX is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* KeePass DX is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.Toast
|
||||||
|
import com.kunzisoft.keepass.R
|
||||||
|
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||||
|
|
||||||
|
class MaxHistorySizePreferenceDialogFragmentCompat : InputDatabaseSavePreferenceDialogFragmentCompat() {
|
||||||
|
|
||||||
|
override fun onBindDialogView(view: View) {
|
||||||
|
super.onBindDialogView(view)
|
||||||
|
|
||||||
|
inputText = database?.historyMaxSize?.toString() ?: "0"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDialogClosed(positiveResult: Boolean) {
|
||||||
|
if (positiveResult) {
|
||||||
|
database?.let { database ->
|
||||||
|
var maxHistorySize: Long
|
||||||
|
try {
|
||||||
|
maxHistorySize = inputText.toLong()
|
||||||
|
} catch (e: NumberFormatException) {
|
||||||
|
Toast.makeText(context, R.string.error_rounds_not_number, Toast.LENGTH_LONG).show() // TODO change error
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (maxHistorySize < 1) {
|
||||||
|
maxHistorySize = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
val oldMaxHistorySize = database.historyMaxSize
|
||||||
|
database.historyMaxSize = maxHistorySize
|
||||||
|
|
||||||
|
actionInUIThreadAfterSaveDatabase = AfterMaxHistorySizeSave(maxHistorySize, oldMaxHistorySize)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
super.onDialogClosed(positiveResult)
|
||||||
|
}
|
||||||
|
|
||||||
|
private inner class AfterMaxHistorySizeSave(private val mNewMaxHistorySize: Long,
|
||||||
|
private val mOldMaxHistorySize: Long)
|
||||||
|
: ActionRunnable() {
|
||||||
|
|
||||||
|
override fun onFinishRun(result: Result) {
|
||||||
|
var maxHistorySizeToShow = mNewMaxHistorySize
|
||||||
|
if (!result.isSuccess) {
|
||||||
|
maxHistorySizeToShow = mOldMaxHistorySize
|
||||||
|
database?.historyMaxSize = mOldMaxHistorySize
|
||||||
|
}
|
||||||
|
preference.summary = maxHistorySizeToShow.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
fun newInstance(key: String): MaxHistorySizePreferenceDialogFragmentCompat {
|
||||||
|
val fragment = MaxHistorySizePreferenceDialogFragmentCompat()
|
||||||
|
val bundle = Bundle(1)
|
||||||
|
bundle.putString(ARG_KEY, key)
|
||||||
|
fragment.arguments = bundle
|
||||||
|
|
||||||
|
return fragment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -31,15 +31,14 @@ class MemoryUsagePreferenceDialogFragmentCompat : InputDatabaseSavePreferenceDia
|
|||||||
super.onBindDialogView(view)
|
super.onBindDialogView(view)
|
||||||
|
|
||||||
setExplanationText(R.string.memory_usage_explanation)
|
setExplanationText(R.string.memory_usage_explanation)
|
||||||
inputText = database?.memoryUsageAsString ?: ""
|
inputText = database?.memoryUsage?.toString()?: "0"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDialogClosed(positiveResult: Boolean) {
|
override fun onDialogClosed(positiveResult: Boolean) {
|
||||||
if (database != null && positiveResult) {
|
if (database != null && positiveResult) {
|
||||||
var memoryUsage: Long
|
var memoryUsage: Long
|
||||||
try {
|
try {
|
||||||
val stringMemory = inputText
|
memoryUsage = inputText.toLong()
|
||||||
memoryUsage = java.lang.Long.parseLong(stringMemory)
|
|
||||||
} catch (e: NumberFormatException) {
|
} catch (e: NumberFormatException) {
|
||||||
Toast.makeText(context, R.string.error_rounds_not_number, Toast.LENGTH_LONG).show() // TODO change error
|
Toast.makeText(context, R.string.error_rounds_not_number, Toast.LENGTH_LONG).show() // TODO change error
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -31,15 +31,14 @@ class ParallelismPreferenceDialogFragmentCompat : InputDatabaseSavePreferenceDia
|
|||||||
super.onBindDialogView(view)
|
super.onBindDialogView(view)
|
||||||
|
|
||||||
setExplanationText(R.string.parallelism_explanation)
|
setExplanationText(R.string.parallelism_explanation)
|
||||||
inputText = database?.parallelismAsString ?: ""
|
inputText = database?.parallelism?.toString() ?: "0"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDialogClosed(positiveResult: Boolean) {
|
override fun onDialogClosed(positiveResult: Boolean) {
|
||||||
if (database != null && positiveResult) {
|
if (database != null && positiveResult) {
|
||||||
var parallelism: Int
|
var parallelism: Int
|
||||||
try {
|
try {
|
||||||
val stringParallelism = inputText
|
parallelism = inputText.toInt()
|
||||||
parallelism = Integer.parseInt(stringParallelism)
|
|
||||||
} catch (e: NumberFormatException) {
|
} catch (e: NumberFormatException) {
|
||||||
Toast.makeText(context, R.string.error_rounds_not_number, Toast.LENGTH_LONG).show() // TODO change error
|
Toast.makeText(context, R.string.error_rounds_not_number, Toast.LENGTH_LONG).show() // TODO change error
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -31,15 +31,14 @@ class RoundsPreferenceDialogFragmentCompat : InputDatabaseSavePreferenceDialogFr
|
|||||||
super.onBindDialogView(view)
|
super.onBindDialogView(view)
|
||||||
|
|
||||||
explanationText = getString(R.string.rounds_explanation)
|
explanationText = getString(R.string.rounds_explanation)
|
||||||
inputText = database?.numberKeyEncryptionRoundsAsString ?: ""
|
inputText = database?.numberKeyEncryptionRounds?.toString() ?: "0"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDialogClosed(positiveResult: Boolean) {
|
override fun onDialogClosed(positiveResult: Boolean) {
|
||||||
if (database != null && positiveResult) {
|
if (database != null && positiveResult) {
|
||||||
var rounds: Long
|
var rounds: Long
|
||||||
try {
|
try {
|
||||||
val strRounds = inputText
|
rounds = inputText.toLong()
|
||||||
rounds = java.lang.Long.parseLong(strRounds)
|
|
||||||
} catch (e: NumberFormatException) {
|
} catch (e: NumberFormatException) {
|
||||||
Toast.makeText(context, R.string.error_rounds_not_number, Toast.LENGTH_LONG).show()
|
Toast.makeText(context, R.string.error_rounds_not_number, Toast.LENGTH_LONG).show()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -149,12 +149,17 @@
|
|||||||
<!-- Database Settings -->
|
<!-- Database Settings -->
|
||||||
<string name="settings_database_key" translatable="false">settings_database_key</string>
|
<string name="settings_database_key" translatable="false">settings_database_key</string>
|
||||||
<string name="settings_database_change_credentials_key" translatable="false">settings_database_change_credentials_key</string>
|
<string name="settings_database_change_credentials_key" translatable="false">settings_database_change_credentials_key</string>
|
||||||
<string name="database_general_key" translatable="false">database_general_key</string>
|
|
||||||
|
|
||||||
|
<string name="database_general_key" translatable="false">database_general_key</string>
|
||||||
<string name="database_name_key" translatable="false">database_name_key</string>
|
<string name="database_name_key" translatable="false">database_name_key</string>
|
||||||
<string name="database_description_key" translatable="false">database_description_key</string>
|
<string name="database_description_key" translatable="false">database_description_key</string>
|
||||||
<string name="recycle_bin_key" translatable="false">recycle_bin_key</string>
|
|
||||||
<string name="database_version_key" translatable="false">database_version_key</string>
|
<string name="database_version_key" translatable="false">database_version_key</string>
|
||||||
|
|
||||||
|
<string name="database_history_key" translatable="false">database_history_key</string>
|
||||||
|
<string name="max_history_items_key" translatable="false">max_history_items_key</string>
|
||||||
|
<string name="max_history_size_key" translatable="false">max_history_size_key</string>
|
||||||
|
<string name="recycle_bin_key" translatable="false">recycle_bin_key</string>
|
||||||
|
|
||||||
<string name="encryption_algorithm_key" translatable="false">algorithm</string>
|
<string name="encryption_algorithm_key" translatable="false">algorithm</string>
|
||||||
<string name="key_derivation_function_key" translatable="false">key_derivation_function_key</string>
|
<string name="key_derivation_function_key" translatable="false">key_derivation_function_key</string>
|
||||||
<string name="transform_rounds_key" translatable="false">transform_rounds_key</string>
|
<string name="transform_rounds_key" translatable="false">transform_rounds_key</string>
|
||||||
|
|||||||
@@ -289,6 +289,8 @@
|
|||||||
<string name="full_file_path_enable_summary">View the full file path</string>
|
<string name="full_file_path_enable_summary">View the full file path</string>
|
||||||
<string name="recycle_bin_title">Use recycle bin</string>
|
<string name="recycle_bin_title">Use recycle bin</string>
|
||||||
<string name="recycle_bin_summary">Moves groups and entries to \"Recycle bin\" before deleting</string>
|
<string name="recycle_bin_summary">Moves groups and entries to \"Recycle bin\" before deleting</string>
|
||||||
|
<string name="max_history_items_title">Max. history items</string>
|
||||||
|
<string name="max_history_size_title">Max. history size</string>
|
||||||
<string name="monospace_font_fields_enable_title">Field font</string>
|
<string name="monospace_font_fields_enable_title">Field font</string>
|
||||||
<string name="monospace_font_fields_enable_summary">Change font used in fields for better character visibility</string>
|
<string name="monospace_font_fields_enable_summary">Change font used in fields for better character visibility</string>
|
||||||
<string name="auto_open_file_uri_title">Open files by selecting</string>
|
<string name="auto_open_file_uri_title">Open files by selecting</string>
|
||||||
|
|||||||
@@ -36,12 +36,6 @@
|
|||||||
android:title="@string/database_description_title"
|
android:title="@string/database_description_title"
|
||||||
android:positiveButtonText="@string/entry_save"
|
android:positiveButtonText="@string/entry_save"
|
||||||
android:negativeButtonText="@string/entry_cancel"/>
|
android:negativeButtonText="@string/entry_cancel"/>
|
||||||
<SwitchPreference
|
|
||||||
android:key="@string/recycle_bin_key"
|
|
||||||
android:persistent="false"
|
|
||||||
android:title="@string/recycle_bin_title"
|
|
||||||
android:summary="@string/recycle_bin_summary"
|
|
||||||
android:checked="false"/>
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="@string/database_version_key"
|
android:key="@string/database_version_key"
|
||||||
android:persistent="false"
|
android:persistent="false"
|
||||||
@@ -49,6 +43,31 @@
|
|||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:key="@string/database_history_key"
|
||||||
|
android:title="@string/entry_history">
|
||||||
|
|
||||||
|
<com.kunzisoft.keepass.settings.preference.InputNumberPreference
|
||||||
|
android:key="@string/max_history_items_key"
|
||||||
|
android:persistent="false"
|
||||||
|
android:title="@string/max_history_items_title"
|
||||||
|
android:positiveButtonText="@string/entry_save"
|
||||||
|
android:negativeButtonText="@string/entry_cancel"/>
|
||||||
|
<com.kunzisoft.keepass.settings.preference.InputNumberPreference
|
||||||
|
android:key="@string/max_history_size_key"
|
||||||
|
android:persistent="false"
|
||||||
|
android:title="@string/max_history_size_title"
|
||||||
|
android:positiveButtonText="@string/entry_save"
|
||||||
|
android:negativeButtonText="@string/entry_cancel"/>
|
||||||
|
<SwitchPreference
|
||||||
|
android:key="@string/recycle_bin_key"
|
||||||
|
android:persistent="false"
|
||||||
|
android:title="@string/recycle_bin_title"
|
||||||
|
android:summary="@string/recycle_bin_summary"
|
||||||
|
android:checked="false"/>
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:title="@string/encryption">
|
android:title="@string/encryption">
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user