package org.holoeverywhere.app;
import org.holoeverywhere.R;
import org.holoeverywhere.widget.FrameLayout;
import android.os.Bundle;
/**
* This activity class implement tabs + swipe navigation pattern<br />
* <br />
* Part of HoloEverywhere
*/
public abstract class TabSwipeActivity extends Activity implements
TabSwipeInterface<TabSwipeFragment.TabInfo> {
public static class InnerFragment extends TabSwipeFragment {
private TabSwipeActivity mActivity;
private boolean mTabsWasHandled = false;
@Override
protected void onHandleTabs() {
mTabsWasHandled = true;
if (mActivity != null) {
mActivity.onHandleTabs();
}
}
public void setActivity(TabSwipeActivity activity) {
if (activity == null) {
return;
}
mActivity = activity;
if (mTabsWasHandled) {
mActivity.onHandleTabs();
}
}
}
private int mCustomLayout = -1;
private InnerFragment mFragment;
@Override
public TabSwipeFragment.TabInfo addTab(CharSequence title,
Class<? extends Fragment> fragmentClass) {
return mFragment.addTab(title, fragmentClass);
}
@Override
public TabSwipeFragment.TabInfo addTab(CharSequence title,
Class<? extends Fragment> fragmentClass, Bundle fragmentArguments) {
return mFragment.addTab(title, fragmentClass, fragmentArguments);
}
@Override
public TabSwipeFragment.TabInfo addTab(int title,
Class<? extends Fragment> fragmentClass) {
return mFragment.addTab(title, fragmentClass);
}
@Override
public TabSwipeFragment.TabInfo addTab(int title,
Class<? extends Fragment> fragmentClass, Bundle fragmentArguments) {
return mFragment.addTab(title, fragmentClass, fragmentArguments);
}
@Override
public TabSwipeFragment.TabInfo addTab(
TabSwipeFragment.TabInfo tabInfo) {
return mFragment.addTab(tabInfo);
}
@Override
public TabSwipeFragment.TabInfo addTab(
TabSwipeFragment.TabInfo tabInfo, int position) {
return mFragment.addTab(tabInfo, position);
}
@Override
public OnTabSelectedListener getOnTabSelectedListener() {
return mFragment.getOnTabSelectedListener();
}
@Override
public boolean isSmoothScroll() {
return mFragment.isSmoothScroll();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFragment = (InnerFragment) getSupportFragmentManager().findFragmentById(R.id.contentPanel);
if (mFragment == null) {
mFragment = new InnerFragment();
}
mFragment.setActivity(this);
if (mCustomLayout > 0) {
mFragment.setCustomLayout(mCustomLayout);
}
if (mFragment.isDetached()) {
FrameLayout layout = new FrameLayout(this);
layout.setId(R.id.contentPanel);
setContentView(layout);
getSupportFragmentManager().beginTransaction()
.replace(R.id.contentPanel, mFragment).commit();
getSupportFragmentManager().executePendingTransactions();
}
}
/**
* Add your tabs here
*/
protected abstract void onHandleTabs();
@Override
public void reloadTabs() {
mFragment.reloadTabs();
}
@Override
public void removeAllTabs() {
mFragment.removeAllTabs();
}
@Override
public TabSwipeFragment.TabInfo removeTab(int position) {
return mFragment.removeTab(position);
}
@Override
public TabSwipeFragment.TabInfo removeTab(
TabSwipeFragment.TabInfo tabInfo) {
return mFragment.removeTab(tabInfo);
}
@Override
public void setCurrentTab(int position) {
mFragment.setCurrentTab(position);
}
@Override
public void setCustomLayout(int customLayout) {
mCustomLayout = customLayout;
}
@Override
public void setOnTabSelectedListener(OnTabSelectedListener onTabSelectedListener) {
mFragment.setOnTabSelectedListener(onTabSelectedListener);
}
@Override
public void setSmoothScroll(boolean smoothScroll) {
mFragment.setSmoothScroll(smoothScroll);
}
}