12e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen/*
22e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * Copyright (C) 2009 The Android Open Source Project
32e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen *
42e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * Licensed under the Apache License, Version 2.0 (the "License");
52e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * you may not use this file except in compliance with the License.
62e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * You may obtain a copy of the License at
72e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen *
82e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen *      http://www.apache.org/licenses/LICENSE-2.0
92e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen *
102e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * Unless required by applicable law or agreed to in writing, software
112e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * distributed under the License is distributed on an "AS IS" BASIS,
122e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * See the License for the specific language governing permissions and
142e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * limitations under the License.
152e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen */
162e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
172e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenpackage com.android.effectstest;
182e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
192e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.os.Bundle;
202e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.util.Log;
212e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.widget.TextView;
222e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.widget.SeekBar;
232e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
242e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
252e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenabstract class EffectParameter implements SeekBar.OnSeekBarChangeListener {
262e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
272e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    private final static String TAG = "EffectParameter";
282e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
292e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    protected int mMin;
302e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    protected int mMax;
312e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    protected String mUnit;
322e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    protected SeekBar mSeekBar;
332e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    protected TextView mValueText;
342e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
352e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public EffectParameter (int min, int max, SeekBar seekBar, TextView textView, String unit) {
362e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        mMin = min;
372e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        mMax = max;
382e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        mSeekBar = seekBar;
392e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        mValueText = textView;
402e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        mUnit = unit;
412e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        byte[] paramBuf = new byte[4];
422e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
432e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        mSeekBar.setMax(max-min);
442e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
452e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
462e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public void displayValue(int value, boolean fromTouch) {
472e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        String text = Integer.toString(value)+" "+mUnit;
482e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        mValueText.setText(text);
492e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        if (!fromTouch) {
502e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            mSeekBar.setProgress(value - mMin);
512e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
522e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
532e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
542e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public void updateDisplay() {
552e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        displayValue(getParameter(), false);
562e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
572e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
582e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public abstract void setParameter(Integer value);
592e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
602e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public abstract Integer getParameter();
612e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
622e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public abstract void setEffect(Object effect);
632e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
642e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    // SeekBar.OnSeekBarChangeListener
652e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
662e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
672e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        if (seekBar != mSeekBar) {
682e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            Log.e(TAG, "onProgressChanged called with wrong seekBar");
692e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            return;
702e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
712e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
722e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        int value = progress + mMin;
732e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        if (fromTouch) {
742e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            setParameter(value);
752e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
762e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
772e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        displayValue(getParameter(), fromTouch);
782e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
792e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
802e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public void onStartTrackingTouch(SeekBar seekBar) {
812e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
822e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
832e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public void onStopTrackingTouch(SeekBar seekBar) {
842e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
852e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
862e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public void setEnabled(boolean e) {
872e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        mSeekBar.setEnabled(e);
882e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
892e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen}
90