diff options
author | Steve Slaven <bpk@hoopajoo.net> | 2010-12-23 22:16:56 (GMT) |
---|---|---|
committer | Steve Slaven <bpk@hoopajoo.net> | 2010-12-23 22:16:56 (GMT) |
commit | acd2e2b439275a7b0ed11b1f04994b0a15c1ff18 (patch) | |
tree | 834e92df513a3ce23ea67a8c999807e7c123c622 /src/com | |
download | SoftKeys-acd2e2b439275a7b0ed11b1f04994b0a15c1ff18.zip SoftKeys-acd2e2b439275a7b0ed11b1f04994b0a15c1ff18.tar.gz SoftKeys-acd2e2b439275a7b0ed11b1f04994b0a15c1ff18.tar.bz2 |
Initial commitv3.00
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/hlidskialf/android/preference/SeekBarPreference.java | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/src/com/hlidskialf/android/preference/SeekBarPreference.java b/src/com/hlidskialf/android/preference/SeekBarPreference.java new file mode 100644 index 0000000..9055943 --- /dev/null +++ b/src/com/hlidskialf/android/preference/SeekBarPreference.java @@ -0,0 +1,122 @@ +/* The following code was written by Matthew Wiggins + * and is released under the APACHE 2.0 license + * + * Modified by Kevin Gaudin : constructor now retrieves resources references values + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +package com.hlidskialf.android.preference; + +import android.content.Context; +import android.preference.DialogPreference; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.SeekBar; +import android.widget.TextView; + +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 mSplashText, mValueText; + private Context mContext; + + private String mDialogMessage, mSuffix; + private int mDefault, mMax, mValue = 0; + + public SeekBarPreference( Context context, AttributeSet attrs ) { + super( context, attrs ); + mContext = context; + + 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() { + LinearLayout.LayoutParams params; + LinearLayout layout = new LinearLayout( mContext ); + layout.setOrientation( LinearLayout.VERTICAL ); + layout.setPadding( 6, 6, 6, 6 ); + + mSplashText = new TextView( mContext ); + if( mDialogMessage != null ) + mSplashText.setText( mDialogMessage ); + layout.addView( mSplashText ); + + mValueText = new TextView( mContext ); + mValueText.setGravity( Gravity.CENTER_HORIZONTAL ); + mValueText.setTextSize( 32 ); + params = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.FILL_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT ); + layout.addView( mValueText, params ); + + mSeekBar = new SeekBar( mContext ); + mSeekBar.setOnSeekBarChangeListener( this ); + layout.addView( mSeekBar, new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.FILL_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT ) ); + + 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 ) { + super.onSetInitialValue( restore, 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( new Integer( 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; + } +} + |