ToggleSlider.java revision 1e28f4110f4005a38a1c55836b87df706e8e3229
11e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato/* 21e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * Copyright (C) 2010 The Android Open Source Project 31e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * 41e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 51e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * you may not use this file except in compliance with the License. 61e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * You may obtain a copy of the License at 71e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * 81e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * http://www.apache.org/licenses/LICENSE-2.0 91e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * 101e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * Unless required by applicable law or agreed to in writing, software 111e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 121e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * See the License for the specific language governing permissions and 141e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato * limitations under the License. 151e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato */ 161e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 171e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratopackage com.android.systemui.statusbar.policy; 181e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 191e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.content.Context; 201e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.content.res.Resources; 211e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.graphics.drawable.Drawable; 221e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.util.AttributeSet; 231e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.util.Slog; 241e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.view.View; 251e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.widget.CompoundButton; 261e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.widget.RelativeLayout; 271e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.widget.SeekBar; 281e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.widget.TextView; 291e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport android.widget.ToggleButton; 301e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 311e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratoimport com.android.systemui.R; 321e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 331e28f4110f4005a38a1c55836b87df706e8e3229Joe Onoratopublic class ToggleSlider extends RelativeLayout 341e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato implements CompoundButton.OnCheckedChangeListener, SeekBar.OnSeekBarChangeListener { 351e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato private static final String TAG = "StatusBar.ToggleSlider"; 361e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 371e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public interface Listener { 381e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void onChanged(ToggleSlider v, boolean tracking, boolean checked, int value); 391e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 401e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 411e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public static class Slider extends SeekBar { 421e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public Slider(Context context) { 431e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato this(context, null); 441e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 451e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 461e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public Slider(Context context, AttributeSet attrs) { 471e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato super(context, attrs); 481e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 491e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 501e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public Slider(Context context, AttributeSet attrs, int defStyle) { 511e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato super(context, attrs, defStyle); 521e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 531e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 541e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 551e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato private Listener mListener; 561e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato private boolean mTracking; 571e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 581e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato private ToggleButton mToggle; 591e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato private SeekBar mSlider; 601e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato private TextView mLabel; 611e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 621e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public ToggleSlider(Context context) { 631e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato this(context, null); 641e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 651e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 661e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public ToggleSlider(Context context, AttributeSet attrs) { 671e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato this(context, attrs, 0); 681e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 691e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 701e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public ToggleSlider(Context context, AttributeSet attrs, int defStyle) { 711e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato super(context, attrs, defStyle); 721e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato View.inflate(context, R.layout.status_bar_toggle_slider, this); 731e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 741e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mToggle = (ToggleButton)findViewById(R.id.toggle); 751e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mToggle.setOnCheckedChangeListener(this); 761e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mToggle.setTextOn("hi"); 771e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mToggle.setTextOff("hi"); 781e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 791e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mSlider = (SeekBar)findViewById(R.id.slider); 801e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mSlider.setOnSeekBarChangeListener(this); 811e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 821e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato /* 831e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mLabel = (TextView)findViewById(R.id.label); 841e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mLabel.setText("yo"); 851e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato */ 861e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 871e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 881e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void onCheckedChanged(CompoundButton toggle, boolean checked) { 891e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato Drawable thumb; 901e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato final Resources res = getContext().getResources(); 911e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato if (checked) { 921e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato thumb = res.getDrawable(R.drawable.scrubber_control_disabled_holo); 931e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } else { 941e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato thumb = res.getDrawable(com.android.internal.R.drawable.scrubber_control_holo); 951e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 961e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mSlider.setThumb(thumb); 971e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 981e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato if (mListener != null) { 991e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mListener.onChanged(this, mTracking, checked, mSlider.getProgress()); 1001e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1011e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1021e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 1031e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 1041e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato if (mListener != null) { 1051e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mListener.onChanged(this, mTracking, mToggle.isChecked(), progress); 1061e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1071e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1081e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 1091e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void onStartTrackingTouch(SeekBar seekBar) { 1101e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mTracking = true; 1111e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato if (mListener != null) { 1121e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mListener.onChanged(this, mTracking, mToggle.isChecked(), mSlider.getProgress()); 1131e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1141e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mToggle.setChecked(false); 1151e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1161e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 1171e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void onStopTrackingTouch(SeekBar seekBar) { 1181e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mTracking = false; 1191e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato if (mListener != null) { 1201e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mListener.onChanged(this, mTracking, mToggle.isChecked(), mSlider.getProgress()); 1211e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1221e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1231e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 1241e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void setOnChangedListener(Listener l) { 1251e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mListener = l; 1261e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1271e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 1281e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void setChecked(boolean checked) { 1291e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mToggle.setChecked(checked); 1301e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1311e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 1321e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public boolean isChecked() { 1331e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato return mToggle.isChecked(); 1341e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1351e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 1361e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void setMax(int max) { 1371e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mSlider.setMax(max); 1381e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1391e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 1401e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato public void setValue(int value) { 1411e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato mSlider.setProgress(value); 1421e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato } 1431e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato} 1441e28f4110f4005a38a1c55836b87df706e8e3229Joe Onorato 145