mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Fix database preferences
This commit is contained in:
@@ -53,18 +53,17 @@ import com.kunzisoft.keepass.settings.preference.IconPackListPreference
|
|||||||
import com.kunzisoft.keepass.settings.preference.InputNumberPreference
|
import com.kunzisoft.keepass.settings.preference.InputNumberPreference
|
||||||
import com.kunzisoft.keepass.settings.preference.InputTextPreference
|
import com.kunzisoft.keepass.settings.preference.InputTextPreference
|
||||||
import com.kunzisoft.keepass.settings.preferencedialogfragment.*
|
import com.kunzisoft.keepass.settings.preferencedialogfragment.*
|
||||||
import com.kunzisoft.keepass.utils.UriUtil
|
|
||||||
|
|
||||||
class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferenceClickListener {
|
class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferenceClickListener {
|
||||||
|
|
||||||
private var database: Database = Database.getInstance()
|
private var mDatabase: Database = Database.getInstance()
|
||||||
private var databaseReadOnly: Boolean = false
|
private var mDatabaseReadOnly: Boolean = false
|
||||||
|
|
||||||
private var count = 0
|
private var mCount = 0
|
||||||
|
|
||||||
private var roundPref: Preference? = null
|
private var mRoundPref: InputNumberPreference? = null
|
||||||
private var memoryPref: Preference? = null
|
private var mMemoryPref: InputNumberPreference? = null
|
||||||
private var parallelismPref: Preference? = null
|
private var mParallelismPref: InputNumberPreference? = null
|
||||||
|
|
||||||
enum class Screen {
|
enum class Screen {
|
||||||
APPLICATION, FORM_FILLING, ADVANCED_UNLOCK, DATABASE, APPEARANCE
|
APPLICATION, FORM_FILLING, ADVANCED_UNLOCK, DATABASE, APPEARANCE
|
||||||
@@ -75,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 = findPreference(getString(R.string.settings_autofill_enable_key)) as SwitchPreference?
|
val autoFillEnablePreference: SwitchPreference? = findPreference<SwitchPreference>(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
|
||||||
@@ -91,7 +90,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
if (arguments != null)
|
if (arguments != null)
|
||||||
key = arguments!!.getInt(TAG_KEY)
|
key = arguments!!.getInt(TAG_KEY)
|
||||||
|
|
||||||
databaseReadOnly = database.isReadOnly
|
mDatabaseReadOnly = mDatabase.isReadOnly
|
||||||
|| ReadOnlyHelper.retrieveReadOnlyFromInstanceStateOrArguments(savedInstanceState, arguments)
|
|| ReadOnlyHelper.retrieveReadOnlyFromInstanceStateOrArguments(savedInstanceState, arguments)
|
||||||
|
|
||||||
// Load the preferences from an XML resource
|
// Load the preferences from an XML resource
|
||||||
@@ -319,7 +318,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
|
|
||||||
findPreference<Preference>(getString(R.string.reset_education_screens_key))?.setOnPreferenceClickListener {
|
findPreference<Preference>(getString(R.string.reset_education_screens_key))?.setOnPreferenceClickListener {
|
||||||
// To allow only one toast
|
// To allow only one toast
|
||||||
if (count == 0) {
|
if (mCount == 0) {
|
||||||
val sharedPreferences = Education.getEducationSharedPreferences(context!!)
|
val sharedPreferences = Education.getEducationSharedPreferences(context!!)
|
||||||
val editor = sharedPreferences.edit()
|
val editor = sharedPreferences.edit()
|
||||||
for (resourceId in Education.educationResourcesKeys) {
|
for (resourceId in Education.educationResourcesKeys) {
|
||||||
@@ -328,7 +327,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
editor.apply()
|
editor.apply()
|
||||||
Toast.makeText(context, R.string.reset_education_screens_text, Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, R.string.reset_education_screens_text, Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
count++
|
mCount++
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -337,22 +336,22 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
private fun onCreateDatabasePreference(rootKey: String?) {
|
private fun onCreateDatabasePreference(rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.preferences_database, rootKey)
|
setPreferencesFromResource(R.xml.preferences_database, rootKey)
|
||||||
|
|
||||||
if (database.loaded) {
|
if (mDatabase.loaded) {
|
||||||
|
|
||||||
val dbGeneralPrefCategory: PreferenceCategory? = findPreference<PreferenceCategory>(getString(R.string.database_general_key))
|
val dbGeneralPrefCategory: PreferenceCategory? = findPreference<PreferenceCategory>(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<InputTextPreference>(getString(R.string.database_name_key))
|
||||||
if (database.containsName()) {
|
if (mDatabase.containsName()) {
|
||||||
dbNamePref?.summary = database.name
|
dbNamePref?.summary = mDatabase.name
|
||||||
} else {
|
} else {
|
||||||
dbGeneralPrefCategory?.removePreference(dbNamePref)
|
dbGeneralPrefCategory?.removePreference(dbNamePref)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Db description
|
// Db description
|
||||||
val dbDescriptionPref: InputTextPreference? = findPreference<InputTextPreference>(getString(R.string.database_description_key))
|
val dbDescriptionPref: InputTextPreference? = findPreference<InputTextPreference>(getString(R.string.database_description_key))
|
||||||
if (database.containsDescription()) {
|
if (mDatabase.containsDescription()) {
|
||||||
dbDescriptionPref?.summary = database.description
|
dbDescriptionPref?.summary = mDatabase.description
|
||||||
} else {
|
} else {
|
||||||
dbGeneralPrefCategory?.removePreference(dbDescriptionPref)
|
dbGeneralPrefCategory?.removePreference(dbDescriptionPref)
|
||||||
}
|
}
|
||||||
@@ -361,30 +360,36 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
val recycleBinPref: SwitchPreference? = findPreference<SwitchPreference>(getString(R.string.recycle_bin_key))
|
val recycleBinPref: SwitchPreference? = findPreference<SwitchPreference>(getString(R.string.recycle_bin_key))
|
||||||
// TODO Recycle
|
// TODO Recycle
|
||||||
dbGeneralPrefCategory?.removePreference(recycleBinPref) // To delete
|
dbGeneralPrefCategory?.removePreference(recycleBinPref) // To delete
|
||||||
if (database.isRecycleBinAvailable) {
|
if (mDatabase.isRecycleBinAvailable) {
|
||||||
recycleBinPref?.isChecked = database.isRecycleBinEnabled
|
recycleBinPref?.isChecked = mDatabase.isRecycleBinEnabled
|
||||||
recycleBinPref?.isEnabled = false
|
recycleBinPref?.isEnabled = false
|
||||||
} else {
|
} else {
|
||||||
dbGeneralPrefCategory?.removePreference(recycleBinPref)
|
dbGeneralPrefCategory?.removePreference(recycleBinPref)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Version
|
// Version
|
||||||
findPreference<Preference>(getString(R.string.database_version_key))?.summary = database.getVersion()
|
findPreference<Preference>(getString(R.string.database_version_key))
|
||||||
|
?.summary = mDatabase.getVersion()
|
||||||
|
|
||||||
// Encryption Algorithm
|
// Encryption Algorithm
|
||||||
findPreference<DialogListExplanationPreference>(getString(R.string.encryption_algorithm_key))?.summary = database.getEncryptionAlgorithmName(resources)
|
findPreference<DialogListExplanationPreference>(getString(R.string.encryption_algorithm_key))
|
||||||
|
?.summary = mDatabase.getEncryptionAlgorithmName(resources)
|
||||||
|
|
||||||
// Key derivation function
|
// Key derivation function
|
||||||
findPreference<DialogListExplanationPreference>(getString(R.string.key_derivation_function_key))?.summary = database.getKeyDerivationName(resources)
|
findPreference<DialogListExplanationPreference>(getString(R.string.key_derivation_function_key))
|
||||||
|
?.summary = mDatabase.getKeyDerivationName(resources)
|
||||||
|
|
||||||
// Round encryption
|
// Round encryption
|
||||||
findPreference<InputNumberPreference>(getString(R.string.transform_rounds_key))?.summary = database.numberKeyEncryptionRoundsAsString
|
mRoundPref = findPreference<InputNumberPreference>(getString(R.string.transform_rounds_key))
|
||||||
|
mRoundPref?.summary = mDatabase.numberKeyEncryptionRoundsAsString
|
||||||
|
|
||||||
// Memory Usage
|
// Memory Usage
|
||||||
findPreference<InputNumberPreference>(getString(R.string.memory_usage_key))?.summary = database.memoryUsageAsString
|
mMemoryPref = findPreference<InputNumberPreference>(getString(R.string.memory_usage_key))
|
||||||
|
mMemoryPref?.summary = mDatabase.memoryUsageAsString
|
||||||
|
|
||||||
// Parallelism
|
// Parallelism
|
||||||
findPreference<InputNumberPreference>(getString(R.string.parallelism_key))?.summary = database.parallelismAsString
|
mParallelismPref = findPreference<InputNumberPreference>(getString(R.string.parallelism_key))
|
||||||
|
mParallelismPref?.summary = mDatabase.parallelismAsString
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.e(javaClass.name, "Database isn't ready")
|
Log.e(javaClass.name, "Database isn't ready")
|
||||||
@@ -435,7 +440,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
super.onStop()
|
super.onStop()
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
if (count == 10) {
|
if (mCount == 10) {
|
||||||
Education.getEducationSharedPreferences(activity).edit()
|
Education.getEducationSharedPreferences(activity).edit()
|
||||||
.putBoolean(getString(R.string.education_screen_reclicked_key), true).apply()
|
.putBoolean(getString(R.string.education_screen_reclicked_key), true).apply()
|
||||||
}
|
}
|
||||||
@@ -462,12 +467,9 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
preference.key == getString(R.string.key_derivation_function_key) -> {
|
preference.key == getString(R.string.key_derivation_function_key) -> {
|
||||||
val keyDerivationDialogFragment = DatabaseKeyDerivationPreferenceDialogFragmentCompat.newInstance(preference.key)
|
val keyDerivationDialogFragment = DatabaseKeyDerivationPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||||
// Add other prefs to manage
|
// Add other prefs to manage
|
||||||
if (roundPref != null)
|
keyDerivationDialogFragment.setRoundPreference(mRoundPref)
|
||||||
keyDerivationDialogFragment.setRoundPreference(roundPref!!)
|
keyDerivationDialogFragment.setMemoryPreference(mMemoryPref)
|
||||||
if (memoryPref != null)
|
keyDerivationDialogFragment.setParallelismPreference(mParallelismPref)
|
||||||
keyDerivationDialogFragment.setMemoryPreference(memoryPref!!)
|
|
||||||
if (parallelismPref != null)
|
|
||||||
keyDerivationDialogFragment.setParallelismPreference(parallelismPref!!)
|
|
||||||
dialogFragment = keyDerivationDialogFragment
|
dialogFragment = keyDerivationDialogFragment
|
||||||
}
|
}
|
||||||
preference.key == getString(R.string.transform_rounds_key) -> {
|
preference.key == getString(R.string.transform_rounds_key) -> {
|
||||||
@@ -482,7 +484,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
else -> otherDialogFragment = true
|
else -> otherDialogFragment = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dialogFragment != null && !databaseReadOnly) {
|
if (dialogFragment != null && !mDatabaseReadOnly) {
|
||||||
dialogFragment.setTargetFragment(this, 0)
|
dialogFragment.setTargetFragment(this, 0)
|
||||||
dialogFragment.show(fragmentManager, null)
|
dialogFragment.show(fragmentManager, null)
|
||||||
}
|
}
|
||||||
@@ -495,7 +497,7 @@ class NestedSettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferen
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onSaveInstanceState(outState: Bundle) {
|
override fun onSaveInstanceState(outState: Bundle) {
|
||||||
ReadOnlyHelper.onSaveInstanceState(outState, databaseReadOnly)
|
ReadOnlyHelper.onSaveInstanceState(outState, mDatabaseReadOnly)
|
||||||
super.onSaveInstanceState(outState)
|
super.onSaveInstanceState(outState)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,26 +62,26 @@ class DatabaseKeyDerivationPreferenceDialogFragmentCompat
|
|||||||
override fun onDialogClosed(positiveResult: Boolean) {
|
override fun onDialogClosed(positiveResult: Boolean) {
|
||||||
if (database != null && positiveResult && database!!.allowKdfModification()) {
|
if (database != null && positiveResult && database!!.allowKdfModification()) {
|
||||||
if (kdfEngineSelected != null) {
|
if (kdfEngineSelected != null) {
|
||||||
val newKdfEngine = kdfEngineSelected
|
val newKdfEngine = kdfEngineSelected!!
|
||||||
val oldKdfEngine = database!!.kdfEngine
|
val oldKdfEngine = database!!.kdfEngine
|
||||||
database?.assignKdfEngine(newKdfEngine!!)
|
database?.assignKdfEngine(newKdfEngine)
|
||||||
|
|
||||||
actionInUIThreadAfterSaveDatabase = AfterDescriptionSave(newKdfEngine!!, oldKdfEngine)
|
actionInUIThreadAfterSaveDatabase = AfterDescriptionSave(newKdfEngine, oldKdfEngine)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.onDialogClosed(positiveResult)
|
super.onDialogClosed(positiveResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setRoundPreference(preference: Preference) {
|
fun setRoundPreference(preference: Preference?) {
|
||||||
this.roundPreference = preference
|
this.roundPreference = preference
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setMemoryPreference(preference: Preference) {
|
fun setMemoryPreference(preference: Preference?) {
|
||||||
this.memoryPreference = preference
|
this.memoryPreference = preference
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setParallelismPreference(preference: Preference) {
|
fun setParallelismPreference(preference: Preference?) {
|
||||||
this.parallelismPreference = preference
|
this.parallelismPreference = preference
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user