diff -r 000000000000 -r 6474c204b198 mobile/android/base/widget/IconTabWidget.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobile/android/base/widget/IconTabWidget.java Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,75 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.gecko.widget; + +import org.mozilla.gecko.R; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageButton; +import android.widget.TextView; +import android.widget.TabWidget; + +public class IconTabWidget extends TabWidget { + private OnTabChangedListener mListener; + private final int mButtonLayoutId; + private final boolean mIsIcon; + + public static interface OnTabChangedListener { + public void onTabChanged(int tabIndex); + } + + public IconTabWidget(Context context, AttributeSet attrs) { + super(context, attrs); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.IconTabWidget); + mButtonLayoutId = a.getResourceId(R.styleable.IconTabWidget_android_layout, 0); + mIsIcon = (a.getInt(R.styleable.IconTabWidget_display, 0x00) == 0x00); + a.recycle(); + + if (mButtonLayoutId == 0) { + throw new RuntimeException("You must supply layout attribute"); + } + } + + public void addTab(int imageResId, int stringResId) { + View button = LayoutInflater.from(getContext()).inflate(mButtonLayoutId, this, false); + if (mIsIcon) { + ((ImageButton) button).setImageResource(imageResId); + button.setContentDescription(getContext().getString(stringResId)); + } else { + ((TextView) button).setText(getContext().getString(stringResId)); + } + + addView(button); + button.setOnClickListener(new TabClickListener(getTabCount() - 1)); + button.setOnFocusChangeListener(this); + } + + public void setTabSelectionListener(OnTabChangedListener listener) { + mListener = listener; + } + + @Override + public void onFocusChange(View view, boolean hasFocus) { + } + + private class TabClickListener implements OnClickListener { + private final int mIndex; + + public TabClickListener(int index) { + mIndex = index; + } + + @Override + public void onClick(View view) { + if (mListener != null) + mListener.onTabChanged(mIndex); + } + } +}