Kotlinized Preference

This commit is contained in:
J-Jamet
2019-07-18 18:19:03 +02:00
parent 67f99a4430
commit 2439c0e7cd
11 changed files with 189 additions and 267 deletions

View File

@@ -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;
}
}

View File

@@ -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
}
}

View File

@@ -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<String> entries = new ArrayList<>();
List<String> 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());
}
}

View File

@@ -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<String>()
val values = ArrayList<String>()
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)
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*
*/
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);
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*
*/
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
}
}

View File

@@ -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;
}
}

View File

@@ -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
}
}

View File

@@ -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;
}
}

View File

@@ -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
}
}

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2018 Jeremy Jamet / Kunzisoft. * Copyright 2019 Jeremy Jamet / Kunzisoft.
* *
* This file is part of KeePass DX. * This file is part of KeePass DX.
* *
@@ -17,10 +17,10 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.tasks; package com.kunzisoft.keepass.tasks
import android.support.annotation.StringRes; import android.support.annotation.StringRes
public interface ProgressTaskUpdater { interface ProgressTaskUpdater {
void updateMessage(@StringRes int resId); fun updateMessage(@StringRes resId: Int)
} }