package org.wikipedia.views;
import android.content.Context;
import android.support.annotation.ColorRes;
import android.support.annotation.NonNull;
import android.support.design.widget.TabLayout;
import android.util.AttributeSet;
import org.wikipedia.R;
import static android.support.v4.content.ContextCompat.getColor;
import static android.support.v4.graphics.drawable.DrawableCompat.setTint;
public class ConfigurableTabLayout extends TabLayout {
@ColorRes private static final int TAB_ENABLED_COLOR = R.color.page_action_tab_enabled;
@ColorRes private static final int TAB_DISABLED_COLOR = R.color.page_action_tab_disabled;
public ConfigurableTabLayout(Context context) {
this(context, null);
}
public ConfigurableTabLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ConfigurableTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void enableTab(int index) {
Tab tab = getTabAt(index);
if (tab != null) {
setEnabled(tab, true);
}
}
public void disableTab(int index) {
Tab tab = getTabAt(index);
if (tab != null) {
setEnabled(tab, false);
}
}
public void enableAllTabs() {
for (int i = 0; i < getTabCount(); i++) {
enableTab(i);
}
}
public boolean isEnabled(@NonNull Tab tab) {
return !isDisabled(tab);
}
public boolean isDisabled(@NonNull Tab tab) {
return tab.getTag() != null && tab.getTag() instanceof DisabledTag;
}
private void setEnabled(@NonNull Tab tab, boolean enabled) {
tab.setTag(enabled ? null : new DisabledTag());
// noinspection ConstantConditions
setTint(tab.getIcon(), getColor(getContext(), enabled ? TAB_ENABLED_COLOR : TAB_DISABLED_COLOR));
}
private class DisabledTag {
}
}