I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit fbc56d4e authored by str4d's avatar str4d
Browse files

Only use ViewPager for NetDb stats

parent 2a050b3c
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</android.support.v4.view.ViewPager>
...@@ -323,7 +323,7 @@ public abstract class I2PActivityBase extends ActionBarActivity implements ...@@ -323,7 +323,7 @@ public abstract class I2PActivityBase extends ActionBarActivity implements
} }
public static class TabListener implements ActionBar.TabListener { public static class TabListener implements ActionBar.TabListener {
private Fragment mFragment; protected Fragment mFragment;
public TabListener(Fragment fragment) { public TabListener(Fragment fragment) {
mFragment = fragment; mFragment = fragment;
......
package net.i2p.android.router.activity; package net.i2p.android.router.activity;
import net.i2p.android.router.R; import net.i2p.android.router.R;
import net.i2p.android.router.fragment.NetDbSummaryTableFragment; import net.i2p.android.router.fragment.NetDbListFragment;
import net.i2p.android.router.fragment.NetDbSummaryPagerFragment;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.Tab; import android.support.v7.app.ActionBar.Tab;
public class NetDbActivity extends I2PActivityBase { public class NetDbActivity extends I2PActivityBase {
static final int TAB_SUMMARY = 0; /**
static final int TAB_ROUTERS = 1; * Whether or not the activity is in two-pane mode, i.e. running on a tablet
static final int TAB_LEASESETS = 2; * device.
private static final String SELECTED_TAB = "selected_tab"; */
private boolean mTwoPane;
NetDbPagerAdapter mNetDbPagerAdapter; private static final String SELECTED_TAB = "selected_tab";
ViewPager mViewPager;
@Override @Override
protected boolean useViewPager() { protected boolean canUseTwoPanes() {
return true; return true;
} }
...@@ -33,54 +31,50 @@ public class NetDbActivity extends I2PActivityBase { ...@@ -33,54 +31,50 @@ public class NetDbActivity extends I2PActivityBase {
ActionBar actionBar = getSupportActionBar(); ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Set up NetDbPagerAdapter containing the categories // Statistics tab
mNetDbPagerAdapter = new NetDbPagerAdapter(getSupportFragmentManager()); NetDbSummaryPagerFragment sf = new NetDbSummaryPagerFragment();
// Set up ViewPager for swiping between categories
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mNetDbPagerAdapter);
mViewPager.setOnPageChangeListener(
new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
mViewPager.setCurrentItem(position);
}
});
// Set up TabListener to update NetDbPagerAdapter with the
// current section to display categories for
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
public void onTabSelected(Tab tab, FragmentTransaction ft) {
mNetDbPagerAdapter.setCurrentSection(tab.getPosition());
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
mNetDbPagerAdapter.setCurrentSection(TAB_SUMMARY);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// User selected the already selected tab.
}
};
actionBar.addTab( actionBar.addTab(
actionBar.newTab() actionBar.newTab()
.setText("Statistics") .setText("Statistics")
.setTabListener(tabListener)); .setTabListener(new NetDbSummaryPagerTabListener(sf)));
// Routers tab
NetDbListFragment rf = new NetDbListFragment();
Bundle args = new Bundle();
args.putBoolean(NetDbListFragment.SHOW_ROUTERS, true);
rf.setArguments(args);
actionBar.addTab( actionBar.addTab(
actionBar.newTab() actionBar.newTab()
.setText("Routers") .setText("Routers")
.setTabListener(tabListener)); .setTabListener(new TabListener(rf)));
// LeaseSets tab
NetDbListFragment lf = new NetDbListFragment();
args = new Bundle();
args.putBoolean(NetDbListFragment.SHOW_ROUTERS, false);
lf.setArguments(args);
actionBar.addTab( actionBar.addTab(
actionBar.newTab() actionBar.newTab()
.setText("LeaseSets") .setText("LeaseSets")
.setTabListener(tabListener)); .setTabListener(new TabListener(lf)));
if (savedInstanceState != null) { if (savedInstanceState != null) {
int selected = savedInstanceState.getInt(SELECTED_TAB); int selected = savedInstanceState.getInt(SELECTED_TAB);
actionBar.setSelectedNavigationItem(selected); actionBar.setSelectedNavigationItem(selected);
} }
if (findViewById(R.id.detail_fragment) != null) {
// The detail container view will be present only in the
// large-screen layouts (res/values-large and
// res/values-sw600dp). If this view is present, then the
// activity should be in two-pane mode.
mTwoPane = true;
// In two-pane mode, list items should be given the
// 'activated' state when touched.
//rf.setActivateOnItemClick(true);
//lf.setActivateOnItemClick(true);
}
} }
@Override @Override
...@@ -90,61 +84,22 @@ public class NetDbActivity extends I2PActivityBase { ...@@ -90,61 +84,22 @@ public class NetDbActivity extends I2PActivityBase {
getSupportActionBar().getSelectedNavigationIndex()); getSupportActionBar().getSelectedNavigationIndex());
} }
public class NetDbPagerAdapter extends FragmentStatePagerAdapter { public static class NetDbSummaryPagerTabListener extends TabListener {
private int mSection; public NetDbSummaryPagerTabListener(Fragment fragment) {
super(fragment);
public NetDbPagerAdapter(FragmentManager fm) {
super(fm);
mSection = TAB_SUMMARY;
}
public void setCurrentSection(int section) {
// Change the ViewPager item (in case the
// new section doesn't have as many items)
mViewPager.setCurrentItem(0);
// Update the section
mSection = section;
notifyDataSetChanged();
}
@Override
public Fragment getItem(int i) {
switch (mSection) {
case TAB_ROUTERS:
case TAB_LEASESETS:
default: // TAB_SUMMARY
return NetDbSummaryTableFragment.newInstance(i);
}
}
@Override
public int getCount() {
switch (mSection) {
case TAB_ROUTERS:
return 2;
case TAB_LEASESETS:
return 1;
default: // TAB_SUMMARY
return 3;
}
} }
@Override @Override
public CharSequence getPageTitle(int i) { public void onTabSelected(Tab tab, FragmentTransaction ft) {
switch (mSection) { /**
case TAB_ROUTERS: * This is a work-around for Issue 42601
case TAB_LEASESETS: * https://code.google.com/p/android/issues/detail?id=42601
return "CAT " + (i + 1); *
default: // TAB_SUMMARY * The method getChildFragmentManager() does not clear up
switch (i) { * when the Fragment is detached.
case 1: */
return "Countries"; mFragment = new NetDbSummaryPagerFragment();
case 2: super.onTabSelected(tab, ft);
return "Transports";
default:
return "Versions";
}
}
} }
} }
} }
package net.i2p.android.router.fragment;
import android.support.v4.app.Fragment;
public class NetDbListFragment extends Fragment {
public static final String SHOW_ROUTERS = "show_routers";
}
package net.i2p.android.router.fragment;
import net.i2p.android.router.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class NetDbSummaryPagerFragment extends Fragment {
NetDbPagerAdapter mNetDbPagerAdapter;
ViewPager mViewPager;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.parentfragment_viewpager, container, false);
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Set up NetDbPagerAdapter containing the categories
mNetDbPagerAdapter = new NetDbPagerAdapter(getChildFragmentManager());
// Set up ViewPager for swiping between categories
mViewPager = (ViewPager) getActivity().findViewById(R.id.pager);
mViewPager.setAdapter(mNetDbPagerAdapter);
mViewPager.setOnPageChangeListener(
new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
mViewPager.setCurrentItem(position);
}
});
}
public class NetDbPagerAdapter extends FragmentStatePagerAdapter {
public NetDbPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return NetDbSummaryTableFragment.newInstance(i);
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int i) {
switch (i) {
case 1:
return "Countries";
case 2:
return "Transports";
default:
return "Versions";
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment