diff options
Diffstat (limited to 'src/org/cyanogenmod/audiofx/widget/Gallery.java')
-rw-r--r-- | src/org/cyanogenmod/audiofx/widget/Gallery.java | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/src/org/cyanogenmod/audiofx/widget/Gallery.java b/src/org/cyanogenmod/audiofx/widget/Gallery.java new file mode 100644 index 0000000..8bb5f2a --- /dev/null +++ b/src/org/cyanogenmod/audiofx/widget/Gallery.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2013, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.cyanogenmod.audiofx.widget; + +import android.content.Context; +import android.content.res.Resources; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.widget.AdapterView; +import android.widget.TextView; + +import org.cyanogenmod.audiofx.R; + +public class Gallery extends android.widget.Gallery { + public interface OnItemSelectedListener { + public void onItemSelected(int position); + } + + private boolean mEnabled = false; + + private int mHighlightColor; + private int mLowlightColor; + private int mDisabledColor; + + private TextView mLastView = null; + private OnItemSelectedListener mOnItemSelectedListener = null; + + public Gallery(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + Resources res = getResources(); + mHighlightColor = res.getColor(R.color.highlight); + mLowlightColor = res.getColor(R.color.grey); + mDisabledColor = res.getColor(R.color.disabled_gallery); + + setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { + TextView tv = (TextView) view; + if (tv != null) { + tv.setTextColor(mEnabled ? mHighlightColor : mDisabledColor); + } + if (mLastView != null && mLastView != tv) { + mLastView.setTextColor(mEnabled ? mLowlightColor : mDisabledColor); + } + mLastView = tv; + if (mEnabled && mOnItemSelectedListener != null) { + mOnItemSelectedListener.onItemSelected(position); + } + } + + @Override + public void onNothingSelected(AdapterView<?> parent) { + } + }); + } + + public Gallery(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public Gallery(Context context) { + this(context, null); + } + + public void setOnItemSelectedListener(OnItemSelectedListener listener) { + mOnItemSelectedListener = listener; + } + + @Override + public void setEnabled(boolean enabled) { + mEnabled = enabled; + final int count = getChildCount(); + for (int i = 0; i < count; ++i) { + final View view = getChildAt(i); + if (view instanceof TextView) { + ((TextView) view).setTextColor(enabled ? mLowlightColor : mDisabledColor); + } + } + + if (enabled) { + final TextView tv = (TextView) getSelectedView(); + if (tv != null) { + tv.setTextColor(mHighlightColor); + } + } + } + + @Override + public boolean onDown(MotionEvent e) { + return mEnabled ? super.onDown(e) : false; + } +} |