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
}
public static class TabListener implements ActionBar.TabListener {
private Fragment mFragment;
protected Fragment mFragment;
public TabListener(Fragment fragment) {
mFragment = fragment;
......
package net.i2p.android.router.activity;
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.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.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.Tab;
public class NetDbActivity extends I2PActivityBase {
static final int TAB_SUMMARY = 0;
static final int TAB_ROUTERS = 1;
static final int TAB_LEASESETS = 2;
private static final String SELECTED_TAB = "selected_tab";
/**
* Whether or not the activity is in two-pane mode, i.e. running on a tablet
* device.
*/
private boolean mTwoPane;
NetDbPagerAdapter mNetDbPagerAdapter;
ViewPager mViewPager;
private static final String SELECTED_TAB = "selected_tab";
@Override
protected boolean useViewPager() {
protected boolean canUseTwoPanes() {
return true;
}
......@@ -33,54 +31,50 @@ public class NetDbActivity extends I2PActivityBase {
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Set up NetDbPagerAdapter containing the categories
mNetDbPagerAdapter = new NetDbPagerAdapter(getSupportFragmentManager());
// 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.
}
};
// Statistics tab
NetDbSummaryPagerFragment sf = new NetDbSummaryPagerFragment();
actionBar.addTab(
actionBar.newTab()
.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.newTab()
.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.newTab()
.setText("LeaseSets")
.setTabListener(tabListener));
.setTabListener(new TabListener(lf)));
if (savedInstanceState != null) {
int selected = savedInstanceState.getInt(SELECTED_TAB);
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
......@@ -90,61 +84,22 @@ public class NetDbActivity extends I2PActivityBase {
getSupportActionBar().getSelectedNavigationIndex());
}
public class NetDbPagerAdapter extends FragmentStatePagerAdapter {
private int mSection;
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;
}
public static class NetDbSummaryPagerTabListener extends TabListener {
public NetDbSummaryPagerTabListener(Fragment fragment) {
super(fragment);
}
@Override
public CharSequence getPageTitle(int i) {
switch (mSection) {
case TAB_ROUTERS:
case TAB_LEASESETS:
return "CAT " + (i + 1);
default: // TAB_SUMMARY
switch (i) {
case 1:
return "Countries";
case 2:
return "Transports";
default:
return "Versions";
}
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
/**
* This is a work-around for Issue 42601
* https://code.google.com/p/android/issues/detail?id=42601
*
* The method getChildFragmentManager() does not clear up
* when the Fragment is detached.
*/
mFragment = new NetDbSummaryPagerFragment();
super.onTabSelected(tab, ft);
}
}
}
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