package tv.emby.embyatv.ui; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import tv.emby.embyatv.R; import tv.emby.embyatv.model.GotFocusEvent; /** * Created by Eric on 2/20/2015. */ public class ImageButton extends ImageView { public static int STATE_PRIMARY = 0; public static int STATE_SECONDARY = 1; private TextView mHelpView; private String mHelpText = ""; private int mPrimaryImage; private int mSecondaryImage; private int mState; private GotFocusEvent mGotFocusListener; public ImageButton(Context context, AttributeSet attributeSet){ super(context, attributeSet); setOnFocusChangeListener(focusChangeListener); } public ImageButton(Context context, int imageResource, int size, final OnClickListener clicked) { this(context, imageResource, size, "", null, clicked); } public ImageButton(Context context, int imageResource, int size, String helpText, TextView helpView, final OnClickListener clicked) { super(context, null, R.style.spaced_buttons); setImageResource(imageResource); setMaxHeight(size); setAdjustViewBounds(true); setAlpha(.8f); setScaleType(ImageView.ScaleType.CENTER_INSIDE); setFocusable(true); setOnClickListener(clicked); mHelpView = helpView; mHelpText = helpText; setOnFocusChangeListener(focusChangeListener); } public void setHelpView(TextView view) { mHelpView = view; } public void setHelpText(String text) { mHelpText = text; } public void setState(int state) { mState = state; if (mSecondaryImage > 0) setImageResource(mState == STATE_SECONDARY ? mSecondaryImage : mPrimaryImage); } public void toggleState() { setState(mState == STATE_PRIMARY ? STATE_SECONDARY : STATE_PRIMARY); } private OnFocusChangeListener focusChangeListener = new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { if (mHelpView != null) mHelpView.setText(mHelpText); v.setBackgroundColor(getResources().getColor(R.color.lb_default_brand_color)); if (mGotFocusListener != null) mGotFocusListener.gotFocus(v); } else { if (mHelpView != null) mHelpView.setText(""); v.setBackgroundColor(0); } } }; public void setGotFocusListener(GotFocusEvent event) { mGotFocusListener = event; } public void setPrimaryImage(int mPrimaryImage) { this.mPrimaryImage = mPrimaryImage; } public void setSecondaryImage(int mSecondaryImage) { this.mSecondaryImage = mSecondaryImage; } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); setAlpha(enabled ? 1f : .4f); setFocusable(enabled); setFocusableInTouchMode(enabled); } }