From 2439c0e7cd58fdb1329c3aa6af37902b52adc15c Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 18 Jul 2019 18:19:03 +0200 Subject: [PATCH] Kotlinized Preference --- .../DialogListExplanationPreference.java | 31 ----- .../DialogListExplanationPreference.kt | 18 +++ .../preference/IconPackListPreference.java | 42 ------- .../preference/IconPackListPreference.kt | 31 +++++ .../preference/InputNumberPreference.java | 107 ------------------ .../preference/InputNumberPreference.kt | 85 ++++++++++++++ .../InputTextExplanationPreference.java | 51 --------- .../InputTextExplanationPreference.kt | 32 ++++++ .../preference/InputTextPreference.java | 31 ----- .../preference/InputTextPreference.kt | 18 +++ ...askUpdater.java => ProgressTaskUpdater.kt} | 10 +- 11 files changed, 189 insertions(+), 267 deletions(-) delete mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/DialogListExplanationPreference.java create mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/DialogListExplanationPreference.kt delete mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/IconPackListPreference.java create mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/IconPackListPreference.kt delete mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/InputNumberPreference.java create mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/InputNumberPreference.kt delete mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.java create mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.kt delete mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.java create mode 100644 app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.kt rename app/src/main/java/com/kunzisoft/keepass/tasks/{ProgressTaskUpdater.java => ProgressTaskUpdater.kt} (76%) diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/DialogListExplanationPreference.java b/app/src/main/java/com/kunzisoft/keepass/settings/preference/DialogListExplanationPreference.java deleted file mode 100644 index 46a7ac64a..000000000 --- a/app/src/main/java/com/kunzisoft/keepass/settings/preference/DialogListExplanationPreference.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.kunzisoft.keepass.settings.preference; - -import android.content.Context; -import android.support.v7.preference.DialogPreference; -import android.util.AttributeSet; - -import com.kunzisoft.keepass.R; - -public class DialogListExplanationPreference extends DialogPreference { - - public DialogListExplanationPreference(Context context) { - this(context, null); - } - - public DialogListExplanationPreference(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.dialogPreferenceStyle); - } - - public DialogListExplanationPreference(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, attrs, defStyleAttr, defStyleAttr); - } - - public DialogListExplanationPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - - @Override - public int getDialogLayoutResource() { - return R.layout.pref_dialog_list_explanation; - } -} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/DialogListExplanationPreference.kt b/app/src/main/java/com/kunzisoft/keepass/settings/preference/DialogListExplanationPreference.kt new file mode 100644 index 000000000..2b2fe876d --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preference/DialogListExplanationPreference.kt @@ -0,0 +1,18 @@ +package com.kunzisoft.keepass.settings.preference + +import android.content.Context +import android.support.v7.preference.DialogPreference +import android.util.AttributeSet + +import com.kunzisoft.keepass.R + +class DialogListExplanationPreference @JvmOverloads constructor(context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = R.attr.dialogPreferenceStyle, + defStyleRes: Int = defStyleAttr) + : DialogPreference(context, attrs, defStyleAttr, defStyleRes) { + + override fun getDialogLayoutResource(): Int { + return R.layout.pref_dialog_list_explanation + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/IconPackListPreference.java b/app/src/main/java/com/kunzisoft/keepass/settings/preference/IconPackListPreference.java deleted file mode 100644 index ea9f4c787..000000000 --- a/app/src/main/java/com/kunzisoft/keepass/settings/preference/IconPackListPreference.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.kunzisoft.keepass.settings.preference; - -import android.content.Context; -import android.support.v7.preference.ListPreference; -import android.util.AttributeSet; - -import com.kunzisoft.keepass.R; -import com.kunzisoft.keepass.icons.IconPack; -import com.kunzisoft.keepass.icons.IconPackChooser; - -import java.util.ArrayList; -import java.util.List; - -public class IconPackListPreference extends ListPreference { - - public IconPackListPreference(Context context) { - this(context, null); - } - - public IconPackListPreference(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.dialogPreferenceStyle); - } - - public IconPackListPreference(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, attrs, defStyleAttr, defStyleAttr); - } - - public IconPackListPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - - List entries = new ArrayList<>(); - List values = new ArrayList<>(); - for (IconPack iconPack : IconPackChooser.getIconPackList(context)) { - entries.add(iconPack.getName()); - values.add(iconPack.getId()); - } - - setEntries(entries.toArray(new String[0])); - setEntryValues(values.toArray(new String[0])); - setDefaultValue(IconPackChooser.getSelectedIconPack(context).getId()); - } -} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/IconPackListPreference.kt b/app/src/main/java/com/kunzisoft/keepass/settings/preference/IconPackListPreference.kt new file mode 100644 index 000000000..1fe803c91 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preference/IconPackListPreference.kt @@ -0,0 +1,31 @@ +package com.kunzisoft.keepass.settings.preference + +import android.content.Context +import android.support.v7.preference.ListPreference +import android.util.AttributeSet + +import com.kunzisoft.keepass.R +import com.kunzisoft.keepass.icons.IconPack +import com.kunzisoft.keepass.icons.IconPackChooser + +import java.util.ArrayList + +class IconPackListPreference @JvmOverloads constructor(context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = R.attr.dialogPreferenceStyle, + defStyleRes: Int = defStyleAttr) + : ListPreference(context, attrs, defStyleAttr, defStyleRes) { + + init { + val entries = ArrayList() + val values = ArrayList() + for (iconPack in IconPackChooser.getIconPackList(context)) { + entries.add(iconPack.name) + values.add(iconPack.id) + } + + setEntries(entries.toTypedArray()) + entryValues = values.toTypedArray() + setDefaultValue(IconPackChooser.getSelectedIconPack(context).id) + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputNumberPreference.java b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputNumberPreference.java deleted file mode 100644 index 0c3ab9d2d..000000000 --- a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputNumberPreference.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2017 Brian Pellin, 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 . - * - */ -package com.kunzisoft.keepass.settings.preference; - -import android.content.Context; -import android.content.res.TypedArray; -import android.util.AttributeSet; - -import com.kunzisoft.keepass.R; -import com.kunzisoft.keepass.crypto.keyDerivation.KdfEngine; - -public class InputNumberPreference extends InputTextExplanationPreference { - - private long mNumber; - - public InputNumberPreference(Context context) { - this(context, null); - } - - public InputNumberPreference(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.dialogPreferenceStyle); - } - - public InputNumberPreference(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, attrs, defStyleAttr, defStyleAttr); - } - - public InputNumberPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - - @Override - public int getDialogLayoutResource() { - return R.layout.pref_dialog_numbers; - } - - public long getNumber() { - return mNumber; - } - - public void setNumber(long number) { - this.mNumber = number; - // Save to Shared Preferences - persistLong(number); - } - - @Override - public void setSummary(CharSequence summary) { - - if (summary.equals(KdfEngine.UNKNOW_VALUE_STRING)) { - setEnabled(false); - super.setSummary(""); - } - else { - setEnabled(true); - super.setSummary(summary); - } - } - - @Override - protected Object onGetDefaultValue(TypedArray a, int index) { - // Default value from attribute. Fallback value is set to 0. - return a.getInt(index, 0); - } - @Override - protected void onSetInitialValue(boolean restorePersistedValue, - Object defaultValue) { - // Read the value. Use the default value if it is not possible. - long number; - if (!restorePersistedValue) { - number = 100000; - if (defaultValue instanceof String) { - number = Long.parseLong((String) defaultValue); - } - if (defaultValue instanceof Integer) { - number = (Integer) defaultValue; - } - try { - number = (long) defaultValue; - } catch (Exception e) { - e.printStackTrace(); - } - } else { - number = getPersistedLong(mNumber); - } - - setNumber(number); - } - -} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputNumberPreference.kt b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputNumberPreference.kt new file mode 100644 index 000000000..b4cc67212 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputNumberPreference.kt @@ -0,0 +1,85 @@ +/* + * 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 . + * + */ +package com.kunzisoft.keepass.settings.preference + +import android.content.Context +import android.content.res.TypedArray +import android.util.AttributeSet + +import com.kunzisoft.keepass.R +import com.kunzisoft.keepass.crypto.keyDerivation.KdfEngine + +class InputNumberPreference @JvmOverloads constructor(context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = R.attr.dialogPreferenceStyle, + defStyleRes: Int = defStyleAttr) + : InputTextExplanationPreference(context, attrs, defStyleAttr, defStyleRes) { + + // Save to Shared Preferences + var number: Long = 0 + set(number) { + field = number + persistLong(number) + } + + override fun getDialogLayoutResource(): Int { + return R.layout.pref_dialog_numbers + } + + override fun setSummary(summary: CharSequence) { + if (summary == KdfEngine.UNKNOW_VALUE_STRING) { + isEnabled = false + super.setSummary("") + } else { + isEnabled = true + super.setSummary(summary) + } + } + + override fun onGetDefaultValue(a: TypedArray?, index: Int): Any { + // Default value from attribute. Fallback value is set to 0. + return a?.getInt(index, 0) ?: 0 + } + + override fun onSetInitialValue(restorePersistedValue: Boolean, + defaultValue: Any?) { + // Read the value. Use the default value if it is not possible. + var numberValue: Long + if (!restorePersistedValue) { + numberValue = 100000 + if (defaultValue is String) { + numberValue = java.lang.Long.parseLong(defaultValue as String?) + } + if (defaultValue is Int) { + numberValue = defaultValue.toLong() + } + try { + numberValue = defaultValue as Long + } catch (e: Exception) { + e.printStackTrace() + } + } else { + numberValue = getPersistedLong(this.number) + } + + number = numberValue + } + +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.java b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.java deleted file mode 100644 index eaafca812..000000000 --- a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.kunzisoft.keepass.settings.preference; - -import android.content.Context; -import android.content.res.TypedArray; -import android.support.v7.preference.DialogPreference; -import android.util.AttributeSet; - -import com.kunzisoft.keepass.R; - -public class InputTextExplanationPreference extends DialogPreference { - - protected String explanation; - - public InputTextExplanationPreference(Context context) { - this(context, null); - } - - public InputTextExplanationPreference(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.dialogPreferenceStyle); - } - - public InputTextExplanationPreference(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, attrs, defStyleAttr, defStyleAttr); - } - - public InputTextExplanationPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - TypedArray a = context.getTheme().obtainStyledAttributes( - attrs, - R.styleable.explanationDialog, - 0, 0); - try { - setExplanation(a.getString(R.styleable.explanationDialog_explanations)); - } finally { - a.recycle(); - } - } - - @Override - public int getDialogLayoutResource() { - return R.layout.pref_dialog_input_text_explanation; - } - - public String getExplanation() { - return explanation; - } - - public void setExplanation(String explanation) { - this.explanation = explanation; - } -} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.kt b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.kt new file mode 100644 index 000000000..c9ae031aa --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextExplanationPreference.kt @@ -0,0 +1,32 @@ +package com.kunzisoft.keepass.settings.preference + +import android.content.Context +import android.support.v7.preference.DialogPreference +import android.util.AttributeSet + +import com.kunzisoft.keepass.R + +open class InputTextExplanationPreference @JvmOverloads constructor(context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = R.attr.dialogPreferenceStyle, + defStyleRes: Int = defStyleAttr) + : DialogPreference(context, attrs, defStyleAttr, defStyleRes) { + + var explanation: String? = null + + init { + val styleAttributes = context.theme.obtainStyledAttributes( + attrs, + R.styleable.explanationDialog, + 0, 0) + try { + explanation = styleAttributes.getString(R.styleable.explanationDialog_explanations) + } finally { + styleAttributes.recycle() + } + } + + override fun getDialogLayoutResource(): Int { + return R.layout.pref_dialog_input_text_explanation + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.java b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.java deleted file mode 100644 index 8e9bbaa46..000000000 --- a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.kunzisoft.keepass.settings.preference; - -import android.content.Context; -import android.support.v7.preference.DialogPreference; -import android.util.AttributeSet; - -import com.kunzisoft.keepass.R; - -public class InputTextPreference extends DialogPreference { - - public InputTextPreference(Context context) { - this(context, null); - } - - public InputTextPreference(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.dialogPreferenceStyle); - } - - public InputTextPreference(Context context, AttributeSet attrs, int defStyleAttr) { - this(context, attrs, defStyleAttr, defStyleAttr); - } - - public InputTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - - @Override - public int getDialogLayoutResource() { - return R.layout.pref_dialog_input_text; - } -} diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.kt b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.kt new file mode 100644 index 000000000..67ce47900 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/settings/preference/InputTextPreference.kt @@ -0,0 +1,18 @@ +package com.kunzisoft.keepass.settings.preference + +import android.content.Context +import android.support.v7.preference.DialogPreference +import android.util.AttributeSet + +import com.kunzisoft.keepass.R + +class InputTextPreference @JvmOverloads constructor(context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = R.attr.dialogPreferenceStyle, + defStyleRes: Int = defStyleAttr) + : DialogPreference(context, attrs, defStyleAttr, defStyleRes) { + + override fun getDialogLayoutResource(): Int { + return R.layout.pref_dialog_input_text + } +} diff --git a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskUpdater.java b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskUpdater.kt similarity index 76% rename from app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskUpdater.java rename to app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskUpdater.kt index a41d0c7cc..d9bff26d4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskUpdater.java +++ b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskUpdater.kt @@ -1,5 +1,5 @@ /* - * Copyright 2018 Jeremy Jamet / Kunzisoft. + * Copyright 2019 Jeremy Jamet / Kunzisoft. * * This file is part of KeePass DX. * @@ -17,10 +17,10 @@ * along with KeePass DX. If not, see . * */ -package com.kunzisoft.keepass.tasks; +package com.kunzisoft.keepass.tasks -import android.support.annotation.StringRes; +import android.support.annotation.StringRes -public interface ProgressTaskUpdater { - void updateMessage(@StringRes int resId); +interface ProgressTaskUpdater { + fun updateMessage(@StringRes resId: Int) }