19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 2014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * Copyright (C) 2011 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.preference; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 20014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reckimport android.content.res.TypedArray; 21014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reckimport android.os.Parcel; 22014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reckimport android.os.Parcelable; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet; 24014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reckimport android.view.KeyEvent; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.SeekBar; 27014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reckimport android.widget.SeekBar.OnSeekBarChangeListener; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 32014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reckpublic class SeekBarPreference extends Preference 33014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck implements OnSeekBarChangeListener { 344c8aafe300fd61527a4cb89669e804b843f21257Jim Miller 35014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck private int mProgress; 36014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck private int mMax; 37014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck private boolean mTrackingTouch; 38014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 39014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public SeekBarPreference( 40617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 41617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette super(context, attrs, defStyleAttr, defStyleRes); 42617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette 4319ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio TypedArray a = context.obtainStyledAttributes( 44617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette attrs, com.android.internal.R.styleable.ProgressBar, defStyleAttr, defStyleRes); 45014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck setMax(a.getInt(com.android.internal.R.styleable.ProgressBar_max, mMax)); 46014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck a.recycle(); 4719ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio 4819ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio a = context.obtainStyledAttributes(attrs, 4919ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio com.android.internal.R.styleable.SeekBarPreference, defStyleAttr, defStyleRes); 5019ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio final int layoutResId = a.getResourceId( 5119ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio com.android.internal.R.styleable.SeekBarPreference_layout, 5219ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio com.android.internal.R.layout.preference_widget_seekbar); 5319ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio a.recycle(); 5419ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio 5519ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio setLayoutResource(layoutResId); 56014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 58617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette public SeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) { 59617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette this(context, attrs, defStyleAttr, 0); 60617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette } 61617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public SeekBarPreference(Context context, AttributeSet attrs) { 6319ae4ca5a7d84a8a79feba560b024120b56b55b8Fabrice Di Meglio this(context, attrs, com.android.internal.R.attr.seekBarPreferenceStyle); 64014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 65014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 66014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public SeekBarPreference(Context context) { 67014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck this(context, null); 68014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 69014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 70014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 71014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck protected void onBindView(View view) { 72014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck super.onBindView(view); 73014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck SeekBar seekBar = (SeekBar) view.findViewById( 74014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck com.android.internal.R.id.seekbar); 75014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck seekBar.setOnSeekBarChangeListener(this); 76014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck seekBar.setMax(mMax); 77014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck seekBar.setProgress(mProgress); 78014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck seekBar.setEnabled(isEnabled()); 79014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 80014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 81014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 82014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public CharSequence getSummary() { 83014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return null; 84014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 85014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 86014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 87014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck protected void onSetInitialValue(boolean restoreValue, Object defaultValue) { 88014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck setProgress(restoreValue ? getPersistedInt(mProgress) 89014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck : (Integer) defaultValue); 90014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 91014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 92014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 93595d2bdc16885e4e182527204e62c4e375a3e53aJohn Reck protected Object onGetDefaultValue(TypedArray a, int index) { 94595d2bdc16885e4e182527204e62c4e375a3e53aJohn Reck return a.getInt(index, 0); 95595d2bdc16885e4e182527204e62c4e375a3e53aJohn Reck } 96595d2bdc16885e4e182527204e62c4e375a3e53aJohn Reck 97595d2bdc16885e4e182527204e62c4e375a3e53aJohn Reck @Override 98014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public boolean onKey(View v, int keyCode, KeyEvent event) { 99014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (event.getAction() != KeyEvent.ACTION_UP) { 100014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (keyCode == KeyEvent.KEYCODE_PLUS 101014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck || keyCode == KeyEvent.KEYCODE_EQUALS) { 102014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck setProgress(getProgress() + 1); 103014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return true; 104014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 105014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (keyCode == KeyEvent.KEYCODE_MINUS) { 106014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck setProgress(getProgress() - 1); 107014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return true; 108014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 109014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 110014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return false; 111014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 112014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 113014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public void setMax(int max) { 114014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (max != mMax) { 115014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck mMax = max; 116014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck notifyChanged(); 117014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 118014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 119014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 120014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public void setProgress(int progress) { 121014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck setProgress(progress, true); 122014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 123014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 124014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck private void setProgress(int progress, boolean notifyChanged) { 125014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (progress > mMax) { 126014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck progress = mMax; 127014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 128014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (progress < 0) { 129014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck progress = 0; 130014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 131014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (progress != mProgress) { 132014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck mProgress = progress; 133014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck persistInt(progress); 134014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (notifyChanged) { 135014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck notifyChanged(); 136014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 137014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 138014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 140014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public int getProgress() { 141014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return mProgress; 142014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 143014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 144014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck /** 145014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * Persist the seekBar's progress value if callChangeListener 146014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * returns true, otherwise set the seekBar's progress to the stored value 147014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck */ 148014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck void syncProgress(SeekBar seekBar) { 149014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck int progress = seekBar.getProgress(); 150014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (progress != mProgress) { 151014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (callChangeListener(progress)) { 152014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck setProgress(progress, false); 153014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } else { 154014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck seekBar.setProgress(mProgress); 155014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 156014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 157014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 158014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 159014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 160014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public void onProgressChanged( 161014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck SeekBar seekBar, int progress, boolean fromUser) { 162014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (fromUser && !mTrackingTouch) { 163014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck syncProgress(seekBar); 164014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 165014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 1664c8aafe300fd61527a4cb89669e804b843f21257Jim Miller 167014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 168014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public void onStartTrackingTouch(SeekBar seekBar) { 169014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck mTrackingTouch = true; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 172014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 173014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public void onStopTrackingTouch(SeekBar seekBar) { 174014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck mTrackingTouch = false; 175014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (seekBar.getProgress() != mProgress) { 176014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck syncProgress(seekBar); 177014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 178014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 179014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 180014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 181014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck protected Parcelable onSaveInstanceState() { 182014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck /* 183014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * Suppose a client uses this preference type without persisting. We 184014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * must save the instance state so it is able to, for example, survive 185014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * orientation changes. 186014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck */ 187014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 188014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck final Parcelable superState = super.onSaveInstanceState(); 189014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (isPersistent()) { 190014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck // No need to save instance state since it's persistent 191014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return superState; 192014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 193014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 194014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck // Save the instance state 195014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck final SavedState myState = new SavedState(superState); 196014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck myState.progress = mProgress; 197014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck myState.max = mMax; 198014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return myState; 1994c8aafe300fd61527a4cb89669e804b843f21257Jim Miller } 2004c8aafe300fd61527a4cb89669e804b843f21257Jim Miller 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 202014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck protected void onRestoreInstanceState(Parcelable state) { 203014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck if (!state.getClass().equals(SavedState.class)) { 204014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck // Didn't save state for us in onSaveInstanceState 205014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck super.onRestoreInstanceState(state); 206014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return; 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 208014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 209014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck // Restore the instance state 210014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck SavedState myState = (SavedState) state; 211014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck super.onRestoreInstanceState(myState.getSuperState()); 212014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck mProgress = myState.progress; 213014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck mMax = myState.max; 214014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck notifyChanged(); 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 217014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck /** 218014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * SavedState, a subclass of {@link BaseSavedState}, will store the state 219014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * of MyPreference, a subclass of Preference. 220014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * <p> 221014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck * It is important to always call through to super methods. 222014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck */ 223014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck private static class SavedState extends BaseSavedState { 224014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck int progress; 225014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck int max; 226014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 227014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public SavedState(Parcel source) { 228014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck super(source); 229014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 230014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck // Restore the click counter 231014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck progress = source.readInt(); 232014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck max = source.readInt(); 233014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 234014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 235014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @Override 236014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public void writeToParcel(Parcel dest, int flags) { 237014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck super.writeToParcel(dest, flags); 238014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 239014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck // Save the click counter 240014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck dest.writeInt(progress); 241014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck dest.writeInt(max); 242014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 243014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 244014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public SavedState(Parcelable superState) { 245014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck super(superState); 246014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 247014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 248014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck @SuppressWarnings("unused") 249014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public static final Parcelable.Creator<SavedState> CREATOR = 250014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck new Parcelable.Creator<SavedState>() { 251014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public SavedState createFromParcel(Parcel in) { 252014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return new SavedState(in); 253014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 254014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck 255014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck public SavedState[] newArray(int size) { 256014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck return new SavedState[size]; 257014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck } 258014fea2a663ab0bc2d80a6293b84b2647a4a1895John Reck }; 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 261