mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Fix database settings
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package com.kunzisoft.keepass.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.kunzisoft.keepass.activities.DatabaseRetrieval
|
||||
@@ -13,15 +15,23 @@ import com.kunzisoft.keepass.viewmodels.DatabaseViewModel
|
||||
abstract class DatabasePreferenceFragment : PreferenceFragmentCompat(), DatabaseRetrieval {
|
||||
|
||||
private val mDatabaseViewModel: DatabaseViewModel by activityViewModels()
|
||||
private var mDatabase: Database? = null
|
||||
|
||||
override fun onViewCreated(view: View,
|
||||
savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
mDatabaseViewModel.database.observe(viewLifecycleOwner) { database ->
|
||||
view.resetAppTimeoutWhenViewFocusedOrChanged(requireContext(), database)
|
||||
mDatabase = database
|
||||
onDatabaseRetrieved(database)
|
||||
}
|
||||
return super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
view.resetAppTimeoutWhenViewFocusedOrChanged(requireContext(), mDatabase)
|
||||
}
|
||||
|
||||
override fun onDatabaseActionFinished(
|
||||
|
||||
@@ -24,7 +24,6 @@ import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.*
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceCategory
|
||||
import androidx.preference.SwitchPreference
|
||||
@@ -42,7 +41,6 @@ import com.kunzisoft.keepass.settings.preference.*
|
||||
import com.kunzisoft.keepass.settings.preferencedialogfragment.*
|
||||
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||
import com.kunzisoft.keepass.utils.MenuUtil
|
||||
import com.kunzisoft.keepass.viewmodels.DatabaseViewModel
|
||||
|
||||
class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
|
||||
@@ -50,6 +48,8 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
private var mDatabaseReadOnly: Boolean = false
|
||||
private var mDatabaseAutoSaveEnabled: Boolean = true
|
||||
|
||||
private var mScreen: Screen? = null
|
||||
|
||||
private var dbNamePref: InputTextPreference? = null
|
||||
private var dbDescriptionPref: InputTextPreference? = null
|
||||
private var dbDefaultUsername: InputTextPreference? = null
|
||||
@@ -65,37 +65,62 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
private var mMemoryPref: InputKdfSizePreference? = null
|
||||
private var mParallelismPref: InputKdfNumberPreference? = null
|
||||
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
mDatabase = database
|
||||
}
|
||||
|
||||
override fun onCreateScreenPreference(screen: Screen, savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setHasOptionsMenu(true)
|
||||
|
||||
mDatabaseReadOnly = mDatabase?.isReadOnly == true
|
||||
|| ReadOnlyHelper.retrieveReadOnlyFromInstanceStateOrArguments(savedInstanceState, arguments)
|
||||
// TODO Read only
|
||||
mDatabaseReadOnly = mDatabaseReadOnly || ReadOnlyHelper.retrieveReadOnlyFromInstanceStateOrArguments(savedInstanceState, arguments)
|
||||
|
||||
mScreen = screen
|
||||
val database = mDatabase
|
||||
// Load the preferences from an XML resource
|
||||
when (screen) {
|
||||
Screen.DATABASE -> {
|
||||
onCreateDatabasePreference(rootKey)
|
||||
setPreferencesFromResource(R.xml.preferences_database, rootKey)
|
||||
if (database?.loaded == true)
|
||||
onCreateDatabasePreference(database)
|
||||
}
|
||||
Screen.DATABASE_SECURITY -> {
|
||||
onCreateDatabaseSecurityPreference(rootKey)
|
||||
setPreferencesFromResource(R.xml.preferences_database_security, rootKey)
|
||||
if (database?.loaded == true)
|
||||
onCreateDatabaseSecurityPreference(database)
|
||||
}
|
||||
Screen.DATABASE_MASTER_KEY -> {
|
||||
onCreateDatabaseMasterKeyPreference(rootKey)
|
||||
setPreferencesFromResource(R.xml.preferences_database_master_key, rootKey)
|
||||
if (database?.loaded == true)
|
||||
onCreateDatabaseMasterKeyPreference(database)
|
||||
}
|
||||
else -> {
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
private fun onCreateDatabasePreference(rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.preferences_database, rootKey)
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
mDatabase = database
|
||||
mDatabaseReadOnly = mDatabaseReadOnly || database?.isReadOnly == true
|
||||
|
||||
mDatabase?.let { database ->
|
||||
if (database.loaded) {
|
||||
mDatabase?.let {
|
||||
if (it.loaded) {
|
||||
when (mScreen) {
|
||||
Screen.DATABASE -> {
|
||||
onCreateDatabasePreference(it)
|
||||
}
|
||||
Screen.DATABASE_SECURITY -> {
|
||||
onCreateDatabaseSecurityPreference(it)
|
||||
}
|
||||
Screen.DATABASE_MASTER_KEY -> {
|
||||
onCreateDatabaseMasterKeyPreference(it)
|
||||
}
|
||||
else -> {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log.e(javaClass.name, "Database isn't ready")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun onCreateDatabasePreference(database: Database) {
|
||||
val dbGeneralPrefCategory: PreferenceCategory? = findPreference(getString(R.string.database_category_general_key))
|
||||
|
||||
// Database name
|
||||
@@ -167,7 +192,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val recycleBinEnabled = newValue as Boolean
|
||||
database.enableRecycleBin(recycleBinEnabled, resources)
|
||||
refreshRecycleBinGroup()
|
||||
refreshRecycleBinGroup(database)
|
||||
// Save the database if not in readonly mode
|
||||
saveDatabase(mDatabaseAutoSaveEnabled)
|
||||
true
|
||||
@@ -183,7 +208,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
true
|
||||
}
|
||||
// Recycle Bin group
|
||||
refreshRecycleBinGroup()
|
||||
refreshRecycleBinGroup(database)
|
||||
} else {
|
||||
recycleBinGroupPref?.onPreferenceClickListener = null
|
||||
dbRecycleBinPrefCategory?.isVisible = false
|
||||
@@ -200,7 +225,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val templatesEnabled = newValue as Boolean
|
||||
database.enableTemplates(templatesEnabled, resources)
|
||||
refreshTemplatesGroup()
|
||||
refreshTemplatesGroup(database)
|
||||
// Save the database if not in readonly mode
|
||||
saveDatabase(mDatabaseAutoSaveEnabled)
|
||||
true
|
||||
@@ -211,7 +236,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
}
|
||||
}
|
||||
// Recycle Bin group
|
||||
refreshTemplatesGroup()
|
||||
refreshTemplatesGroup(database)
|
||||
} else {
|
||||
templatesGroupPrefCategory?.isVisible = false
|
||||
}
|
||||
@@ -229,17 +254,12 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
dbMaxHistorySizePref = findPreference<InputNumberPreference>(getString(R.string.max_history_size_key))?.apply {
|
||||
summary = database.historyMaxSize.toString()
|
||||
}
|
||||
|
||||
} else {
|
||||
Log.e(javaClass.name, "Database isn't ready")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun refreshRecycleBinGroup() {
|
||||
private fun refreshRecycleBinGroup(database: Database?) {
|
||||
recycleBinGroupPref?.apply {
|
||||
if (mDatabase?.isRecycleBinEnabled == true) {
|
||||
summary = mDatabase?.recycleBin?.toString()
|
||||
if (database?.isRecycleBinEnabled == true) {
|
||||
summary = database.recycleBin?.toString()
|
||||
isEnabled = true
|
||||
} else {
|
||||
summary = null
|
||||
@@ -248,10 +268,10 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun refreshTemplatesGroup() {
|
||||
private fun refreshTemplatesGroup(database: Database?) {
|
||||
templatesGroupPref?.apply {
|
||||
if (mDatabase?.isTemplatesEnabled == true) {
|
||||
summary = mDatabase?.templatesGroup?.toString()
|
||||
if (database?.isTemplatesEnabled == true) {
|
||||
summary = database.templatesGroup?.toString()
|
||||
isEnabled = true
|
||||
} else {
|
||||
summary = null
|
||||
@@ -260,11 +280,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun onCreateDatabaseSecurityPreference(rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.preferences_database_security, rootKey)
|
||||
|
||||
mDatabase?.let { database ->
|
||||
if (database.loaded) {
|
||||
private fun onCreateDatabaseSecurityPreference(database: Database) {
|
||||
// Encryption Algorithm
|
||||
mEncryptionAlgorithmPref = findPreference<DialogListExplanationPreference>(getString(R.string.encryption_algorithm_key))?.apply {
|
||||
summary = database.getEncryptionAlgorithmName()
|
||||
@@ -289,17 +305,9 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
mParallelismPref = findPreference<InputKdfNumberPreference>(getString(R.string.parallelism_key))?.apply {
|
||||
summary = database.parallelism.toString()
|
||||
}
|
||||
} else {
|
||||
Log.e(javaClass.name, "Database isn't ready")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun onCreateDatabaseMasterKeyPreference(rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.preferences_database_master_key, rootKey)
|
||||
|
||||
mDatabase?.let { database ->
|
||||
if (database.loaded) {
|
||||
private fun onCreateDatabaseMasterKeyPreference(database: Database) {
|
||||
findPreference<Preference>(getString(R.string.settings_database_change_credentials_key))?.apply {
|
||||
isEnabled = if (!mDatabaseReadOnly) {
|
||||
onPreferenceClickListener = Preference.OnPreferenceClickListener {
|
||||
@@ -312,10 +320,6 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
false
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log.e(javaClass.name, "Database isn't ready")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val colorSelectedListener: ((Boolean, Int)-> Unit) = { enable, color ->
|
||||
@@ -339,7 +343,8 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
return view
|
||||
}
|
||||
|
||||
override fun onProgressDialogThreadResult(actionTask: String,
|
||||
override fun onDatabaseActionFinished(database: Database,
|
||||
actionTask: String,
|
||||
result: ActionRunnable.Result) {
|
||||
result.data?.let { data ->
|
||||
if (data.containsKey(DatabaseTaskNotificationService.OLD_ELEMENT_KEY)
|
||||
@@ -357,7 +362,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
if (result.isSuccess) {
|
||||
newName
|
||||
} else {
|
||||
mDatabase?.name = oldName
|
||||
database.name = oldName
|
||||
oldName
|
||||
}
|
||||
dbNamePref?.summary = nameToShow
|
||||
@@ -369,7 +374,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
if (result.isSuccess) {
|
||||
newDescription
|
||||
} else {
|
||||
mDatabase?.description = oldDescription
|
||||
database.description = oldDescription
|
||||
oldDescription
|
||||
}
|
||||
dbDescriptionPref?.summary = descriptionToShow
|
||||
@@ -421,7 +426,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
oldRecycleBin
|
||||
}
|
||||
mDatabase?.setRecycleBin(recycleBinToShow)
|
||||
refreshRecycleBinGroup()
|
||||
refreshRecycleBinGroup(database)
|
||||
}
|
||||
DatabaseTaskNotificationService.ACTION_DATABASE_UPDATE_TEMPLATES_GROUP_TASK -> {
|
||||
val oldTemplatesGroup = data.getParcelable<Group?>(DatabaseTaskNotificationService.OLD_ELEMENT_KEY)
|
||||
@@ -433,7 +438,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
oldTemplatesGroup
|
||||
}
|
||||
mDatabase?.setTemplatesGroup(templatesGroupToShow)
|
||||
refreshTemplatesGroup()
|
||||
refreshTemplatesGroup(database)
|
||||
}
|
||||
DatabaseTaskNotificationService.ACTION_DATABASE_UPDATE_MAX_HISTORY_ITEMS_TASK -> {
|
||||
val oldMaxHistoryItems = data.getInt(DatabaseTaskNotificationService.OLD_ELEMENT_KEY)
|
||||
@@ -569,10 +574,10 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
dialogFragment = DatabaseTemplatesGroupPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
}
|
||||
getString(R.string.max_history_items_key) -> {
|
||||
dialogFragment = MaxHistoryItemsPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
dialogFragment = DatabaseMaxHistoryItemsPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
}
|
||||
getString(R.string.max_history_size_key) -> {
|
||||
dialogFragment = MaxHistorySizePreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
dialogFragment = DatabaseMaxHistorySizePreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
}
|
||||
|
||||
// Security
|
||||
@@ -588,13 +593,13 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
|
||||
dialogFragment = keyDerivationDialogFragment
|
||||
}
|
||||
getString(R.string.transform_rounds_key) -> {
|
||||
dialogFragment = RoundsPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
dialogFragment = DatabaseRoundsPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
}
|
||||
getString(R.string.memory_usage_key) -> {
|
||||
dialogFragment = MemoryUsagePreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
dialogFragment = DatabaseMemoryUsagePreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
}
|
||||
getString(R.string.parallelism_key) -> {
|
||||
dialogFragment = ParallelismPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
dialogFragment = DatabaseParallelismPreferenceDialogFragmentCompat.newInstance(preference.key)
|
||||
}
|
||||
else -> otherDialogFragment = true
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ import androidx.preference.SwitchPreference
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.activities.dialogs.UnderDevelopmentFeatureDialogFragment
|
||||
import com.kunzisoft.keepass.activities.helpers.ReadOnlyHelper
|
||||
import com.kunzisoft.keepass.tasks.ActionRunnable
|
||||
|
||||
// TODO Move database fragment in sub class
|
||||
abstract class NestedSettingsFragment : DatabasePreferenceFragment() {
|
||||
@@ -48,9 +47,6 @@ abstract class NestedSettingsFragment : DatabasePreferenceFragment() {
|
||||
|
||||
abstract fun onCreateScreenPreference(screen: Screen, savedInstanceState: Bundle?, rootKey: String?)
|
||||
|
||||
open fun onProgressDialogThreadResult(actionTask: String,
|
||||
result: ActionRunnable.Result) {}
|
||||
|
||||
protected fun preferenceInDevelopment(preferenceInDev: Preference) {
|
||||
preferenceInDev.setOnPreferenceClickListener { preference ->
|
||||
try { // don't check if we can
|
||||
|
||||
@@ -134,10 +134,10 @@ open class SettingsActivity
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
// Call result in fragment
|
||||
// TODO Call result in fragment by viewmodel
|
||||
(supportFragmentManager
|
||||
.findFragmentByTag(TAG_NESTED) as NestedSettingsFragment?)
|
||||
?.onProgressDialogThreadResult(actionTask, result)
|
||||
?.onDatabaseActionFinished(database, actionTask, result)
|
||||
}
|
||||
}
|
||||
coordinatorLayout?.showActionErrorIfNeeded(result)
|
||||
@@ -219,6 +219,7 @@ open class SettingsActivity
|
||||
* To keep the current screen when activity is reloaded
|
||||
*/
|
||||
fun keepCurrentScreen() {
|
||||
// TODO Nested screen
|
||||
(supportFragmentManager.findFragmentByTag(TAG_NESTED) as? NestedSettingsFragment?)
|
||||
?.getScreen()?.let { fragmentKey ->
|
||||
intent.putExtra(FRAGMENT_ARG, fragmentKey.name)
|
||||
|
||||
@@ -47,6 +47,7 @@ class DatabaseColorPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialog
|
||||
var onColorSelectedListener: ((enable: Boolean, color: Int) -> Unit)? = null
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
super.onCreateDialog(savedInstanceState)
|
||||
|
||||
val alertDialogBuilder = AlertDialog.Builder(requireActivity())
|
||||
|
||||
@@ -56,17 +57,6 @@ class DatabaseColorPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialog
|
||||
val fragmentManager = childFragmentManager
|
||||
chromaColorFragment = fragmentManager.findFragmentByTag(TAG_FRAGMENT_COLORS) as ChromaColorFragment?
|
||||
|
||||
mDatabase?.let { database ->
|
||||
val initColor = try {
|
||||
enableSwitchView.isChecked = true
|
||||
Color.parseColor(database.customColor)
|
||||
} catch (e: Exception) {
|
||||
enableSwitchView.isChecked = false
|
||||
DEFAULT_COLOR
|
||||
}
|
||||
arguments?.putInt(ARG_INITIAL_COLOR, initColor)
|
||||
}
|
||||
|
||||
if (chromaColorFragment == null) {
|
||||
chromaColorFragment = newInstance(arguments)
|
||||
fragmentManager.beginTransaction().apply {
|
||||
@@ -76,22 +66,6 @@ class DatabaseColorPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialog
|
||||
}
|
||||
|
||||
alertDialogBuilder.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||
val currentColor = chromaColorFragment!!.currentColor
|
||||
val customColorEnable = enableSwitchView.isChecked
|
||||
|
||||
onColorSelectedListener?.invoke(customColorEnable, currentColor)
|
||||
|
||||
mDatabase?.let { database ->
|
||||
val newColor = if (customColorEnable) {
|
||||
ChromaUtil.getFormattedColorString(currentColor, false)
|
||||
} else {
|
||||
""
|
||||
}
|
||||
val oldColor = database.customColor
|
||||
database.customColor = newColor
|
||||
saveColor(oldColor, newColor)
|
||||
}
|
||||
|
||||
onDialogClosed(true)
|
||||
dismiss()
|
||||
}
|
||||
@@ -112,8 +86,38 @@ class DatabaseColorPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialog
|
||||
return dialog
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
// Nothing here
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
database?.let {
|
||||
val initColor = try {
|
||||
enableSwitchView.isChecked = true
|
||||
Color.parseColor(it.customColor)
|
||||
} catch (e: Exception) {
|
||||
enableSwitchView.isChecked = false
|
||||
DEFAULT_COLOR
|
||||
}
|
||||
arguments?.putInt(ARG_INITIAL_COLOR, initColor)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
val currentColor = chromaColorFragment!!.currentColor
|
||||
val customColorEnable = enableSwitchView.isChecked
|
||||
|
||||
onColorSelectedListener?.invoke(customColorEnable, currentColor)
|
||||
database?.let {
|
||||
val newColor = if (customColorEnable) {
|
||||
ChromaUtil.getFormattedColorString(currentColor, false)
|
||||
} else {
|
||||
""
|
||||
}
|
||||
val oldColor = database.customColor
|
||||
database.customColor = newColor
|
||||
saveColor(oldColor, newColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.view.View
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.database.element.database.CompressionAlgorithm
|
||||
import com.kunzisoft.keepass.settings.preferencedialogfragment.adapter.ListRadioItemAdapter
|
||||
|
||||
@@ -31,6 +32,8 @@ class DatabaseDataCompressionPreferenceDialogFragmentCompat
|
||||
: DatabaseSavePreferenceDialogFragmentCompat(),
|
||||
ListRadioItemAdapter.RadioItemSelectedCallback<CompressionAlgorithm> {
|
||||
|
||||
private var mRecyclerView: RecyclerView? = null
|
||||
private var mCompressionAdapter: ListRadioItemAdapter<CompressionAlgorithm>? = null
|
||||
private var compressionSelected: CompressionAlgorithm? = null
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
@@ -38,25 +41,31 @@ class DatabaseDataCompressionPreferenceDialogFragmentCompat
|
||||
|
||||
setExplanationText(R.string.database_data_compression_summary)
|
||||
|
||||
val recyclerView = view.findViewById<RecyclerView>(R.id.pref_dialog_list)
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
mRecyclerView = view.findViewById(R.id.pref_dialog_list)
|
||||
mRecyclerView?.layoutManager = LinearLayoutManager(context)
|
||||
|
||||
activity?.let { activity ->
|
||||
val compressionAdapter = ListRadioItemAdapter<CompressionAlgorithm>(activity)
|
||||
compressionAdapter.setRadioItemSelectedCallback(this)
|
||||
recyclerView.adapter = compressionAdapter
|
||||
|
||||
mDatabase?.let { database ->
|
||||
compressionSelected = database.compressionAlgorithm
|
||||
compressionAdapter.setItems(database.availableCompressionAlgorithms, compressionSelected)
|
||||
}
|
||||
mCompressionAdapter = ListRadioItemAdapter<CompressionAlgorithm>(activity)
|
||||
mCompressionAdapter?.setRadioItemSelectedCallback(this)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
setExplanationText(R.string.database_data_compression_summary)
|
||||
|
||||
mRecyclerView?.adapter = mCompressionAdapter
|
||||
|
||||
database?.let {
|
||||
compressionSelected = it.compressionAlgorithm
|
||||
mCompressionAdapter?.setItems(it.availableCompressionAlgorithms, compressionSelected)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
if (compressionSelected != null) {
|
||||
val newCompression = compressionSelected
|
||||
val oldCompression = database.compressionAlgorithm
|
||||
|
||||
@@ -20,18 +20,18 @@
|
||||
package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
|
||||
class DatabaseDefaultUsernamePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
super.onBindDialogView(view)
|
||||
|
||||
inputText = mDatabase?.defaultUsername?: ""
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
inputText = database?.defaultUsername?: ""
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
mDatabase?.let { database ->
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
database?.let {
|
||||
if (positiveResult) {
|
||||
val newDefaultUsername = inputText
|
||||
val oldDefaultUsername = database.defaultUsername
|
||||
|
||||
@@ -20,18 +20,18 @@
|
||||
package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
|
||||
class DatabaseDescriptionPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
super.onBindDialogView(view)
|
||||
|
||||
inputText = mDatabase?.description ?: ""
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
inputText = database?.description ?: ""
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
mDatabase?.let { database ->
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
database?.let {
|
||||
if (positiveResult) {
|
||||
val newDescription = inputText
|
||||
val oldDescription = database.description
|
||||
|
||||
@@ -25,12 +25,15 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.crypto.EncryptionAlgorithm
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.settings.preferencedialogfragment.adapter.ListRadioItemAdapter
|
||||
|
||||
class DatabaseEncryptionAlgorithmPreferenceDialogFragmentCompat
|
||||
: DatabaseSavePreferenceDialogFragmentCompat(),
|
||||
ListRadioItemAdapter.RadioItemSelectedCallback<EncryptionAlgorithm> {
|
||||
|
||||
private var mRecyclerView: RecyclerView? = null
|
||||
private var mEncryptionAlgorithmAdapter: ListRadioItemAdapter<EncryptionAlgorithm>? = null
|
||||
private var algorithmSelected: EncryptionAlgorithm? = null
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
@@ -38,25 +41,28 @@ class DatabaseEncryptionAlgorithmPreferenceDialogFragmentCompat
|
||||
|
||||
setExplanationText(R.string.encryption_explanation)
|
||||
|
||||
val recyclerView = view.findViewById<RecyclerView>(R.id.pref_dialog_list)
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
mRecyclerView = view.findViewById(R.id.pref_dialog_list)
|
||||
mRecyclerView?.layoutManager = LinearLayoutManager(context)
|
||||
|
||||
activity?.let { activity ->
|
||||
val encryptionAlgorithmAdapter = ListRadioItemAdapter<EncryptionAlgorithm>(activity)
|
||||
encryptionAlgorithmAdapter.setRadioItemSelectedCallback(this)
|
||||
recyclerView.adapter = encryptionAlgorithmAdapter
|
||||
mEncryptionAlgorithmAdapter = ListRadioItemAdapter(activity)
|
||||
mEncryptionAlgorithmAdapter?.setRadioItemSelectedCallback(this)
|
||||
mRecyclerView?.adapter = mEncryptionAlgorithmAdapter
|
||||
}
|
||||
}
|
||||
|
||||
mDatabase?.let { database ->
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
database?.let {
|
||||
algorithmSelected = database.encryptionAlgorithm
|
||||
encryptionAlgorithmAdapter.setItems(database.availableEncryptionAlgorithms, algorithmSelected)
|
||||
}
|
||||
mEncryptionAlgorithmAdapter?.setItems(database.availableEncryptionAlgorithms, algorithmSelected)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
if (algorithmSelected != null) {
|
||||
val newAlgorithm = algorithmSelected
|
||||
val oldAlgorithm = database.encryptionAlgorithm
|
||||
|
||||
@@ -26,6 +26,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.crypto.kdf.KdfEngine
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.settings.preferencedialogfragment.adapter.ListRadioItemAdapter
|
||||
|
||||
class DatabaseKeyDerivationPreferenceDialogFragmentCompat
|
||||
@@ -33,6 +34,7 @@ class DatabaseKeyDerivationPreferenceDialogFragmentCompat
|
||||
ListRadioItemAdapter.RadioItemSelectedCallback<KdfEngine> {
|
||||
|
||||
private var kdfEngineSelected: KdfEngine? = null
|
||||
private var mKdfAdapter: ListRadioItemAdapter<KdfEngine>? = null
|
||||
private var roundPreference: Preference? = null
|
||||
private var memoryPreference: Preference? = null
|
||||
private var parallelismPreference: Preference? = null
|
||||
@@ -46,20 +48,24 @@ class DatabaseKeyDerivationPreferenceDialogFragmentCompat
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
|
||||
activity?.let { activity ->
|
||||
val kdfAdapter = ListRadioItemAdapter<KdfEngine>(activity)
|
||||
kdfAdapter.setRadioItemSelectedCallback(this)
|
||||
recyclerView.adapter = kdfAdapter
|
||||
mKdfAdapter = ListRadioItemAdapter(activity)
|
||||
mKdfAdapter?.setRadioItemSelectedCallback(this)
|
||||
recyclerView.adapter = mKdfAdapter
|
||||
}
|
||||
}
|
||||
|
||||
mDatabase?.let { database ->
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
database?.let {
|
||||
kdfEngineSelected = database.kdfEngine
|
||||
kdfAdapter.setItems(database.availableKdfEngines, kdfEngineSelected)
|
||||
}
|
||||
mKdfAdapter?.setItems(database.availableKdfEngines, kdfEngineSelected)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
if (database.allowKdfModification) {
|
||||
val newKdfEngine = kdfEngineSelected
|
||||
val oldKdfEngine = database.kdfEngine
|
||||
|
||||
@@ -22,14 +22,18 @@ package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
|
||||
class MaxHistoryItemsPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
class DatabaseMaxHistoryItemsPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
super.onBindDialogView(view)
|
||||
|
||||
setExplanationText(R.string.max_history_items_summary)
|
||||
mDatabase?.historyMaxItems?.let { maxItemsDatabase ->
|
||||
}
|
||||
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
database?.historyMaxItems?.let { maxItemsDatabase ->
|
||||
inputText = maxItemsDatabase.toString()
|
||||
setSwitchAction({ isChecked ->
|
||||
inputText = if (!isChecked) {
|
||||
@@ -42,9 +46,10 @@ class MaxHistoryItemsPreferenceDialogFragmentCompat : DatabaseSavePreferenceDial
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
var maxHistoryItems: Int = try {
|
||||
inputText.toInt()
|
||||
} catch (e: NumberFormatException) {
|
||||
@@ -70,8 +75,8 @@ class MaxHistoryItemsPreferenceDialogFragmentCompat : DatabaseSavePreferenceDial
|
||||
const val DEFAULT_MAX_HISTORY_ITEMS = 10
|
||||
const val NONE_MAX_HISTORY_ITEMS = -1
|
||||
|
||||
fun newInstance(key: String): MaxHistoryItemsPreferenceDialogFragmentCompat {
|
||||
val fragment = MaxHistoryItemsPreferenceDialogFragmentCompat()
|
||||
fun newInstance(key: String): DatabaseMaxHistoryItemsPreferenceDialogFragmentCompat {
|
||||
val fragment = DatabaseMaxHistoryItemsPreferenceDialogFragmentCompat()
|
||||
val bundle = Bundle(1)
|
||||
bundle.putString(ARG_KEY, key)
|
||||
fragment.arguments = bundle
|
||||
@@ -22,17 +22,21 @@ package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.utils.DataByte
|
||||
|
||||
class MaxHistorySizePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
class DatabaseMaxHistorySizePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
private var dataByte = DataByte(2L, DataByte.ByteFormat.MEBIBYTE)
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
super.onBindDialogView(view)
|
||||
|
||||
setExplanationText(R.string.max_history_size_summary)
|
||||
mDatabase?.historyMaxSize?.let { maxItemsDatabase ->
|
||||
}
|
||||
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
database?.historyMaxSize?.let { maxItemsDatabase ->
|
||||
dataByte = DataByte(maxItemsDatabase, DataByte.ByteFormat.BYTE)
|
||||
.toBetterByteFormat()
|
||||
inputText = dataByte.number.toString()
|
||||
@@ -54,13 +58,13 @@ class MaxHistorySizePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialo
|
||||
}
|
||||
showInputText(isChecked)
|
||||
}, maxItemsDatabase > INFINITE_MAX_HISTORY_SIZE)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
val maxHistorySize: Long = try {
|
||||
inputText.toLong()
|
||||
} catch (e: NumberFormatException) {
|
||||
@@ -92,8 +96,8 @@ class MaxHistorySizePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialo
|
||||
private val INFINITE_MAX_HISTORY_SIZE_DATA_BYTE = DataByte(INFINITE_MAX_HISTORY_SIZE, DataByte.ByteFormat.MEBIBYTE)
|
||||
private val DEFAULT_MAX_HISTORY_SIZE_DATA_BYTE = DataByte(6L, DataByte.ByteFormat.MEBIBYTE)
|
||||
|
||||
fun newInstance(key: String): MaxHistorySizePreferenceDialogFragmentCompat {
|
||||
val fragment = MaxHistorySizePreferenceDialogFragmentCompat()
|
||||
fun newInstance(key: String): DatabaseMaxHistorySizePreferenceDialogFragmentCompat {
|
||||
val fragment = DatabaseMaxHistorySizePreferenceDialogFragmentCompat()
|
||||
val bundle = Bundle(1)
|
||||
bundle.putString(ARG_KEY, key)
|
||||
fragment.arguments = bundle
|
||||
@@ -22,27 +22,32 @@ package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.utils.DataByte
|
||||
|
||||
class MemoryUsagePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
class DatabaseMemoryUsagePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
private var dataByte = DataByte(MIN_MEMORY_USAGE, DataByte.ByteFormat.BYTE)
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
super.onBindDialogView(view)
|
||||
|
||||
setExplanationText(R.string.memory_usage_explanation)
|
||||
}
|
||||
|
||||
val memoryBytes = mDatabase?.memoryUsage ?: MIN_MEMORY_USAGE
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
database?.let {
|
||||
val memoryBytes = database.memoryUsage
|
||||
dataByte = DataByte(memoryBytes, DataByte.ByteFormat.BYTE)
|
||||
.toBetterByteFormat()
|
||||
inputText = dataByte.number.toString()
|
||||
setUnitText(dataByte.format.stringId)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
var newMemoryUsage: Long = try {
|
||||
inputText.toLong()
|
||||
} catch (e: NumberFormatException) {
|
||||
@@ -70,8 +75,8 @@ class MemoryUsagePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFr
|
||||
|
||||
const val MIN_MEMORY_USAGE = 1L
|
||||
|
||||
fun newInstance(key: String): MemoryUsagePreferenceDialogFragmentCompat {
|
||||
val fragment = MemoryUsagePreferenceDialogFragmentCompat()
|
||||
fun newInstance(key: String): DatabaseMemoryUsagePreferenceDialogFragmentCompat {
|
||||
val fragment = DatabaseMemoryUsagePreferenceDialogFragmentCompat()
|
||||
val bundle = Bundle(1)
|
||||
bundle.putString(ARG_KEY, key)
|
||||
fragment.arguments = bundle
|
||||
@@ -20,19 +20,19 @@
|
||||
package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
|
||||
class DatabaseNamePreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
super.onBindDialogView(view)
|
||||
|
||||
inputText = mDatabase?.name ?: ""
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
inputText = database?.name ?: ""
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
val newName = inputText
|
||||
val oldName = database.name
|
||||
database.name = newName
|
||||
|
||||
@@ -22,19 +22,23 @@ package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
|
||||
class ParallelismPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
class DatabaseParallelismPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
super.onBindDialogView(view)
|
||||
|
||||
setExplanationText(R.string.parallelism_explanation)
|
||||
inputText = mDatabase?.parallelism?.toString() ?: MIN_PARALLELISM.toString()
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
inputText = database?.parallelism?.toString() ?: MIN_PARALLELISM.toString()
|
||||
}
|
||||
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
val parallelism: Long = try {
|
||||
inputText.toLong()
|
||||
} catch (e: NumberFormatException) {
|
||||
@@ -53,8 +57,8 @@ class ParallelismPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFr
|
||||
|
||||
const val MIN_PARALLELISM = 1L
|
||||
|
||||
fun newInstance(key: String): ParallelismPreferenceDialogFragmentCompat {
|
||||
val fragment = ParallelismPreferenceDialogFragmentCompat()
|
||||
fun newInstance(key: String): DatabaseParallelismPreferenceDialogFragmentCompat {
|
||||
val fragment = DatabaseParallelismPreferenceDialogFragmentCompat()
|
||||
val bundle = Bundle(1)
|
||||
bundle.putString(ARG_KEY, key)
|
||||
fragment.arguments = bundle
|
||||
@@ -24,6 +24,7 @@ import android.view.View
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.database.element.Group
|
||||
import com.kunzisoft.keepass.settings.preferencedialogfragment.adapter.ListRadioItemAdapter
|
||||
|
||||
@@ -31,6 +32,7 @@ class DatabaseRecycleBinGroupPreferenceDialogFragmentCompat
|
||||
: DatabaseSavePreferenceDialogFragmentCompat(),
|
||||
ListRadioItemAdapter.RadioItemSelectedCallback<Group> {
|
||||
|
||||
private var mGroupsAdapter: ListRadioItemAdapter<Group>? = null
|
||||
private var mGroupRecycleBin: Group? = null
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
@@ -40,24 +42,28 @@ class DatabaseRecycleBinGroupPreferenceDialogFragmentCompat
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
|
||||
activity?.let { activity ->
|
||||
val groupsAdapter = ListRadioItemAdapter<Group>(activity)
|
||||
groupsAdapter.setRadioItemSelectedCallback(this)
|
||||
recyclerView.adapter = groupsAdapter
|
||||
|
||||
mDatabase?.let { database ->
|
||||
mGroupRecycleBin = database.recycleBin
|
||||
groupsAdapter.setItems(database.getAllGroupsWithoutRoot(), mGroupRecycleBin)
|
||||
mGroupsAdapter = ListRadioItemAdapter(activity)
|
||||
mGroupsAdapter?.setRadioItemSelectedCallback(this)
|
||||
recyclerView.adapter = mGroupsAdapter
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
database?.let {
|
||||
mGroupRecycleBin = database.recycleBin
|
||||
mGroupsAdapter?.setItems(database.getAllGroupsWithoutRoot(), mGroupRecycleBin)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onItemSelected(item: Group) {
|
||||
mGroupRecycleBin = item
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
if (database.allowConfigurableRecycleBin) {
|
||||
val oldGroup = database.recycleBin
|
||||
val newGroup = mGroupRecycleBin
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.os.Bundle
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.view.View
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
|
||||
class DatabaseRemoveUnlinkedDataPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
@@ -36,8 +37,9 @@ class DatabaseRemoveUnlinkedDataPreferenceDialogFragmentCompat : DatabaseSavePre
|
||||
}.toString()
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
mDatabase?.let { _ ->
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
database?.let {
|
||||
if (positiveResult) {
|
||||
removeUnlinkedData()
|
||||
}
|
||||
|
||||
@@ -23,19 +23,23 @@ import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
|
||||
class RoundsPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
class DatabaseRoundsPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmentCompat() {
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
super.onBindDialogView(view)
|
||||
|
||||
explanationText = getString(R.string.rounds_explanation)
|
||||
inputText = mDatabase?.numberKeyEncryptionRounds?.toString() ?: MIN_ITERATIONS.toString()
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
inputText = database?.numberKeyEncryptionRounds?.toString() ?: MIN_ITERATIONS.toString()
|
||||
}
|
||||
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
var rounds: Long = try {
|
||||
inputText.toLong()
|
||||
} catch (e: NumberFormatException) {
|
||||
@@ -63,8 +67,8 @@ class RoundsPreferenceDialogFragmentCompat : DatabaseSavePreferenceDialogFragmen
|
||||
|
||||
const val MIN_ITERATIONS = 1L
|
||||
|
||||
fun newInstance(key: String): RoundsPreferenceDialogFragmentCompat {
|
||||
val fragment = RoundsPreferenceDialogFragmentCompat()
|
||||
fun newInstance(key: String): DatabaseRoundsPreferenceDialogFragmentCompat {
|
||||
val fragment = DatabaseRoundsPreferenceDialogFragmentCompat()
|
||||
val bundle = Bundle(1)
|
||||
bundle.putString(ARG_KEY, key)
|
||||
fragment.arguments = bundle
|
||||
@@ -21,7 +21,6 @@ package com.kunzisoft.keepass.settings.preferencedialogfragment
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import com.kunzisoft.keepass.activities.DatabaseRetrieval
|
||||
import com.kunzisoft.keepass.database.crypto.EncryptionAlgorithm
|
||||
@@ -38,31 +37,43 @@ abstract class DatabaseSavePreferenceDialogFragmentCompat
|
||||
|
||||
private var mDatabaseAutoSaveEnable = true
|
||||
private val mDatabaseViewModel: DatabaseViewModel by activityViewModels()
|
||||
protected var mDatabase: Database? = null
|
||||
private var mDatabase: Database? = null
|
||||
|
||||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
this.mDatabaseAutoSaveEnable = PreferencesUtil.isAutoSaveDatabaseEnabled(context)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
mDatabaseViewModel.database.observe(viewLifecycleOwner) { database ->
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
mDatabaseViewModel.database.observe(this) { database ->
|
||||
onDatabaseRetrieved(database)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
onDatabaseRetrieved(mDatabase)
|
||||
}
|
||||
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
this.mDatabase = database
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
onDialogClosed(mDatabase, positiveResult)
|
||||
}
|
||||
|
||||
open fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
// To inherit to save element in database
|
||||
}
|
||||
|
||||
override fun onDatabaseActionFinished(
|
||||
database: Database,
|
||||
actionTask: String,
|
||||
result: ActionRunnable.Result
|
||||
) {
|
||||
// Optional
|
||||
// Not used
|
||||
}
|
||||
|
||||
protected fun saveColor(oldColor: String,
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.view.View
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.database.element.Database
|
||||
import com.kunzisoft.keepass.database.element.Group
|
||||
import com.kunzisoft.keepass.settings.preferencedialogfragment.adapter.ListRadioItemAdapter
|
||||
|
||||
@@ -31,6 +32,7 @@ class DatabaseTemplatesGroupPreferenceDialogFragmentCompat
|
||||
: DatabaseSavePreferenceDialogFragmentCompat(),
|
||||
ListRadioItemAdapter.RadioItemSelectedCallback<Group> {
|
||||
|
||||
private var mGroupsAdapter: ListRadioItemAdapter<Group>? = null
|
||||
private var mGroupTemplates: Group? = null
|
||||
|
||||
override fun onBindDialogView(view: View) {
|
||||
@@ -40,24 +42,28 @@ class DatabaseTemplatesGroupPreferenceDialogFragmentCompat
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
|
||||
activity?.let { activity ->
|
||||
val groupsAdapter = ListRadioItemAdapter<Group>(activity)
|
||||
groupsAdapter.setRadioItemSelectedCallback(this)
|
||||
recyclerView.adapter = groupsAdapter
|
||||
|
||||
mDatabase?.let { database ->
|
||||
mGroupTemplates = database.templatesGroup
|
||||
groupsAdapter.setItems(database.getAllGroupsWithoutRoot(), mGroupTemplates)
|
||||
mGroupsAdapter = ListRadioItemAdapter(activity)
|
||||
mGroupsAdapter?.setRadioItemSelectedCallback(this)
|
||||
recyclerView.adapter = mGroupsAdapter
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDatabaseRetrieved(database: Database?) {
|
||||
super.onDatabaseRetrieved(database)
|
||||
database?.let {
|
||||
mGroupTemplates = database.templatesGroup
|
||||
mGroupsAdapter?.setItems(database.getAllGroupsWithoutRoot(), mGroupTemplates)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onItemSelected(item: Group) {
|
||||
mGroupTemplates = item
|
||||
}
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
override fun onDialogClosed(database: Database?, positiveResult: Boolean) {
|
||||
super.onDialogClosed(database, positiveResult)
|
||||
if (positiveResult) {
|
||||
mDatabase?.let { database ->
|
||||
database?.let {
|
||||
if (database.allowConfigurableTemplatesGroup) {
|
||||
val oldGroup = database.templatesGroup
|
||||
val newGroup = mGroupTemplates
|
||||
|
||||
Reference in New Issue
Block a user