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