package tv.acfun.a63.view;
import tv.acfun.a63.R;
import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;
/**
* seekbar
* @author Matthew Wiggins
*
*/
public class SeekBarPreference extends DialogPreference implements
SeekBar.OnSeekBarChangeListener {
private static final String androidns = "http://schemas.android.com/apk/res/android";
private SeekBar mSeekBar;
private TextView mValueText;
private String mDialogMessage, mSuffix;
private int mDefault, mMax, mValue = 0;
public SeekBarPreference(Context context, AttributeSet attrs) {
super(context, attrs);
mDialogMessage = attrs.getAttributeValue(androidns, "dialogMessage");
mSuffix = attrs.getAttributeValue(androidns, "text");
mDefault = attrs.getAttributeIntValue(androidns, "defaultValue", 0);
mMax = attrs.getAttributeIntValue(androidns, "max", 100);
}
@Override
protected View onCreateDialogView() {
setDialogLayoutResource(R.layout.dialog_seekbar);
View layout = super.onCreateDialogView();
TextView message = (TextView) layout.findViewById(R.id.message);
if (mDialogMessage != null){
message.setText(mDialogMessage);
}else
message.setVisibility(View.GONE);
mValueText = (TextView) layout.findViewById(R.id.text);
mSeekBar = (SeekBar) layout.findViewById(R.id.seek_bar);
mSeekBar.setOnSeekBarChangeListener(this);
if (shouldPersist())
mValue = getPersistedInt(mDefault);
mSeekBar.setMax(mMax);
mSeekBar.setProgress(mValue);
return layout;
}
@Override
protected void onBindDialogView(View v) {
super.onBindDialogView(v);
mSeekBar.setMax(mMax);
mSeekBar.setProgress(mValue);
}
@Override
protected void onSetInitialValue(boolean restore, Object defaultValue) {
if (restore)
mValue = shouldPersist() ? getPersistedInt(mDefault) : 0;
else
mValue = (Integer) defaultValue;
}
public void onProgressChanged(SeekBar seek, int value, boolean fromTouch) {
String t = String.valueOf(value);
mValueText.setText(mSuffix == null ? t : t.concat(mSuffix));
if (shouldPersist())
persistInt(value);
callChangeListener(Integer.valueOf(value));
}
public void onStartTrackingTouch(SeekBar seek) {
}
public void onStopTrackingTouch(SeekBar seek) {
}
public void setMax(int max) {
mMax = max;
}
public int getMax() {
return mMax;
}
public void setProgress(int progress) {
mValue = progress;
if (mSeekBar != null)
mSeekBar.setProgress(progress);
}
public int getProgress() {
return mValue;
}
}