package novoda.demo;
import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.view.Gravity;
import android.view.View;
import com.example.google.tv.leftnavbar.LeftNavBar;
import com.example.google.tv.leftnavbar.LeftNavBarService;
public class LeftNavBarWrapper {
private LeftNavBar mLeftNavBar = null;
private Activity mActivity = null;
private static final ActionBar.TabListener BLANK_LISTENER = new ActionBar.TabListener() {
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
};
LeftNavBarWrapper(Activity activity) {
this.mActivity = activity;
}
public LeftNavBar newInstance() {
return (LeftNavBarService.instance()).getLeftNavBar(mActivity);
}
public void leftNarBarInit(LeftNavBar bar) {
setupTopActionBar();
bar.setBackgroundDrawable(mActivity.getResources().getDrawable(R.drawable.leftnav_bar_background_dark));
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(LeftNavBar.DISPLAY_SHOW_HOME);
bar.setDisplayOptions(LeftNavBar.DISPLAY_SHOW_TITLE);
bar.setDisplayOptions(LeftNavBar.DISPLAY_AUTO_EXPAND);
bar.setDisplayShowHomeEnabled(true);
bar.setDisplayShowTitleEnabled(true);
bar.setShowHideAnimationEnabled(true);
}
public LeftNavBar getLeftNavBar() {
if (mLeftNavBar == null) {
mLeftNavBar = new LeftNavBar(mActivity);
mLeftNavBar.setOnClickHomeListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
return mLeftNavBar;
}
private void setupTopActionBar() {
ActionBar bar = getLeftNavBar();
bar.setTitle(R.string.app_name);
setupCustomNavBarView();
setupNavBarTabs();
}
private void setupCustomNavBarView() {
getLeftNavBar().setCustomView(R.layout.custom_view);
ActionBar.LayoutParams params = new ActionBar.LayoutParams(0);
params.width = params.height = nextDimension(0);
params.gravity = nextGravity(nextGravity(0, true), false);
applyCustomParams(params);
}
private void applyCustomParams(ActionBar.LayoutParams params) {
ActionBar bar = getLeftNavBar();
bar.setCustomView(bar.getCustomView(), params);
}
private static int nextDimension(int dimension) {
switch (dimension) {
case 40:
return 100;
case 100:
return ActionBar.LayoutParams.MATCH_PARENT;
case ActionBar.LayoutParams.MATCH_PARENT:
default:
return 40;
}
}
private static int nextGravity(int gravity, boolean horizontal) {
int hGravity = gravity & Gravity.HORIZONTAL_GRAVITY_MASK;
int vGravity = gravity & Gravity.VERTICAL_GRAVITY_MASK;
if (horizontal) {
switch (hGravity) {
case Gravity.LEFT:
hGravity = Gravity.CENTER_HORIZONTAL;
break;
case Gravity.CENTER_HORIZONTAL:
hGravity = Gravity.RIGHT;
break;
case Gravity.RIGHT:
default:
hGravity = Gravity.LEFT;
break;
}
} else {
switch (vGravity) {
case Gravity.TOP:
vGravity = Gravity.CENTER_VERTICAL;
break;
case Gravity.CENTER_VERTICAL:
vGravity = Gravity.BOTTOM;
break;
case Gravity.BOTTOM:
default:
vGravity = Gravity.TOP;
break;
}
}
return hGravity | vGravity;
}
private void setupNavBarTabs() {
ActionBar bar = getLeftNavBar();
bar.removeAllTabs();
bar.addTab(bar.newTab().setText(R.string.taba).setIcon(R.drawable.tab_a)
.setTabListener(BLANK_LISTENER), false);
bar.addTab(bar.newTab().setText(R.string.tabb).setIcon(R.drawable.tab_b)
.setTabListener(BLANK_LISTENER), false);
bar.addTab(bar.newTab().setText(R.string.tabc).setIcon(R.drawable.tab_c)
.setTabListener(BLANK_LISTENER), false);
bar.addTab(bar.newTab().setText(R.string.tabd).setIcon(R.drawable.tab_d)
.setTabListener(BLANK_LISTENER), false);
}
}