preferences added
This commit is contained in:
@@ -3,6 +3,7 @@ package org.solovyev.android.view.prefs;
|
||||
import android.content.Context;
|
||||
import android.preference.DialogPreference;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
@@ -19,7 +20,10 @@ import org.solovyev.common.utils.Mapper;
|
||||
public abstract class AbstractDialogPreference<T> extends DialogPreference {
|
||||
|
||||
@NotNull
|
||||
protected static final String androidns = "http://schemas.android.com/apk/res/android";
|
||||
protected final static String localNameSpace = "http://schemas.android.com/apk/res/org.solovyev.android.calculator";
|
||||
|
||||
@NotNull
|
||||
protected final static String androidns = "http://schemas.android.com/apk/res/android";
|
||||
|
||||
@NotNull
|
||||
protected TextView valueTextView;
|
||||
@@ -127,18 +131,26 @@ public abstract class AbstractDialogPreference<T> extends DialogPreference {
|
||||
}
|
||||
|
||||
protected void persistValue(@Nullable T value) {
|
||||
Log.d(AbstractDialogPreference.class.getName(), "Trying to persist value: " + value);
|
||||
this.value = value;
|
||||
|
||||
Log.d(AbstractDialogPreference.class.getName(), "android.preference.Preference.callChangeListener()");
|
||||
if (callChangeListener(value)) {
|
||||
Log.d(AbstractDialogPreference.class.getName(), "android.preference.Preference.shouldPersist()");
|
||||
if (shouldPersist()) {
|
||||
Log.d(AbstractDialogPreference.class.getName(), "org.solovyev.android.view.prefs.AbstractDialogPreference.persist()");
|
||||
persist(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void persist(@Nullable T value) {
|
||||
final String toBePersistedString = getMapper().formatValue(value);
|
||||
if (toBePersistedString != null) {
|
||||
if ( callChangeListener(value) ) {
|
||||
persistString(toBePersistedString);
|
||||
if (value != null) {
|
||||
final String toBePersistedString = getMapper().formatValue(value);
|
||||
if (toBePersistedString != null) {
|
||||
if ( callChangeListener(toBePersistedString) ) {
|
||||
persistString(toBePersistedString);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@ package org.solovyev.android.view.prefs;
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.solovyev.common.FloatIntervalMapper;
|
||||
import org.solovyev.common.NumberIntervalMapper;
|
||||
import org.solovyev.common.utils.Interval;
|
||||
import org.solovyev.common.utils.Mapper;
|
||||
|
||||
@@ -27,6 +27,6 @@ public class FloatRangeSeekBarPreference extends RangeSeekBarPreference<Float> {
|
||||
@NotNull
|
||||
@Override
|
||||
protected Mapper<Interval<Float>> getMapper() {
|
||||
return new FloatIntervalMapper() ;
|
||||
return new NumberIntervalMapper<Float>(Float.class);
|
||||
}
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@ package org.solovyev.android.view.prefs;
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.solovyev.common.IntegerIntervalMapper;
|
||||
import org.solovyev.common.NumberIntervalMapper;
|
||||
import org.solovyev.common.utils.*;
|
||||
|
||||
/**
|
||||
@@ -26,7 +26,7 @@ public class IntegerRangeSeekBarPreference extends RangeSeekBarPreference<Intege
|
||||
@NotNull
|
||||
@Override
|
||||
protected Mapper<Interval<Integer>> getMapper() {
|
||||
return new IntegerIntervalMapper();
|
||||
return new NumberIntervalMapper<Integer>(Integer.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2011. Created by serso aka se.solovyev.
|
||||
* For more information, please, contact se.solovyev@gmail.com
|
||||
* or visit http://se.solovyev.org
|
||||
*/
|
||||
|
||||
package org.solovyev.android.view.prefs;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.widget.LinearLayout;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.solovyev.android.view.widgets.NumberPicker;
|
||||
import org.solovyev.common.GenericIntervalMapper;
|
||||
import org.solovyev.common.utils.Interval;
|
||||
import org.solovyev.common.utils.Mapper;
|
||||
|
||||
/**
|
||||
* User: serso
|
||||
* Date: 9/26/11
|
||||
* Time: 10:31 PM
|
||||
*/
|
||||
public class NumberPickerDialogPreference extends AbstractDialogPreference<Integer> implements NumberPicker.OnChangedListener {
|
||||
|
||||
@NotNull
|
||||
private NumberPicker numberPicker;
|
||||
|
||||
@NotNull
|
||||
private final Interval<Integer> boundaries;
|
||||
|
||||
public NumberPickerDialogPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs, null);
|
||||
|
||||
//noinspection ConstantConditions
|
||||
boundaries = new GenericIntervalMapper<Integer>(getMapper()).parseValue(attrs.getAttributeValue(localNameSpace, "boundaries"));
|
||||
|
||||
createPreferenceView();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected LinearLayout onCreateDialogView() {
|
||||
final LinearLayout result = super.onCreateDialogView();
|
||||
|
||||
createPreferenceView();
|
||||
initPreferenceView();
|
||||
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
params.gravity = Gravity.CENTER;
|
||||
result.addView(numberPicker, params);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
protected void createPreferenceView() {
|
||||
this.numberPicker = new NumberPicker(context);
|
||||
this.numberPicker.setOnChangeListener(this);
|
||||
|
||||
initPreferenceView();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initPreferenceView() {
|
||||
if (value != null) {
|
||||
numberPicker.setRange(boundaries.getLeftBorder(), boundaries.getRightBorder());
|
||||
numberPicker.setCurrent(value);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected Mapper<Integer> getMapper() {
|
||||
return new Mapper<Integer>() {
|
||||
@Override
|
||||
public String formatValue(@Nullable Integer value) throws IllegalArgumentException {
|
||||
return String.valueOf(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer parseValue(@Nullable String value) throws IllegalArgumentException {
|
||||
return Integer.valueOf(value);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChanged(NumberPicker picker, int oldVal, int newVal) {
|
||||
persistValue(newVal);
|
||||
}
|
||||
}
|
@@ -16,8 +16,6 @@ import org.solovyev.common.utils.NumberInterval;
|
||||
*/
|
||||
public abstract class RangeSeekBarPreference<T extends Number> extends AbstractDialogPreference<Interval<T>> implements AbstractRangeSeekBar.OnRangeSeekBarChangeListener<T> {
|
||||
|
||||
public final static String localNameSpace = "http://schemas.android.com/apk/res/org.solovyev.android.calculator";
|
||||
|
||||
@NotNull
|
||||
private AbstractRangeSeekBar<T> rangeSeekBar;
|
||||
|
||||
|
@@ -11,7 +11,7 @@ import android.util.AttributeSet;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.SeekBar;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.solovyev.common.NumberMapper;
|
||||
import org.solovyev.common.utils.Mapper;
|
||||
|
||||
|
||||
@@ -60,17 +60,7 @@ public class SeekBarPreference extends AbstractDialogPreference<Integer> impleme
|
||||
@NotNull
|
||||
@Override
|
||||
protected Mapper<Integer> getMapper() {
|
||||
return new Mapper<Integer>() {
|
||||
@Override
|
||||
public String formatValue(@Nullable Integer integer) throws IllegalArgumentException {
|
||||
return integer == null ? null : String.valueOf(integer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer parseValue(@Nullable String s) throws IllegalArgumentException {
|
||||
return s == null ? null : Integer.valueOf(s);
|
||||
}
|
||||
};
|
||||
return new NumberMapper<Integer>(Integer.class);
|
||||
}
|
||||
|
||||
public void onProgressChanged(SeekBar seek, int value, boolean fromTouch) {
|
||||
|
Reference in New Issue
Block a user