diff options
Diffstat (limited to 'main/src/main/java/de/blinkt/openvpn/activities/MainActivity.java')
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/activities/MainActivity.java | 143 |
1 files changed, 84 insertions, 59 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/activities/MainActivity.java b/main/src/main/java/de/blinkt/openvpn/activities/MainActivity.java index 1124fe47..d59640de 100644 --- a/main/src/main/java/de/blinkt/openvpn/activities/MainActivity.java +++ b/main/src/main/java/de/blinkt/openvpn/activities/MainActivity.java @@ -5,95 +5,120 @@ package de.blinkt.openvpn.activities; -import android.app.ActionBar; -import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; -import android.app.FragmentTransaction; +import android.app.FragmentManager; import android.content.Intent; +import android.support.annotation.StringRes; +import android.support.v4n.app.FragmentStatePagerAdapter; +import android.support.v4n.view.ViewPager; + +import java.util.Vector; import de.blinkt.openvpn.R; -import de.blinkt.openvpn.fragments.*; +import de.blinkt.openvpn.fragments.AboutFragment; +import de.blinkt.openvpn.fragments.FaqFragment; +import de.blinkt.openvpn.fragments.GeneralSettings; +import de.blinkt.openvpn.fragments.SendDumpFragment; +import de.blinkt.openvpn.fragments.VPNProfileList; +import de.blinkt.openvpn.views.PagerSlidingTabStrip; +import de.blinkt.openvpn.views.SlidingTabLayout; +import de.blinkt.openvpn.views.TabBarView; public class MainActivity extends Activity { - protected void onCreate(android.os.Bundle savedInstanceState) { + private ViewPager mPager; + private ScreenSlidePagerAdapter mPagerAdapter; + private SlidingTabLayout mSlidingTabLayout; + + protected void onCreate(android.os.Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ActionBar bar = getActionBar(); - bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - Tab vpnListTab = bar.newTab().setText(R.string.vpn_list_title); - Tab generalTab = bar.newTab().setText(R.string.generalsettings); - Tab faqtab = bar.newTab().setText(R.string.faq); - Tab abouttab = bar.newTab().setText(R.string.about); + setContentView(R.layout.main_activity); + + + // Instantiate a ViewPager and a PagerAdapter. + mPager = (ViewPager) findViewById(R.id.pager); + mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager()); + + + + + + mPagerAdapter.addTab(R.string.vpn_list_title, VPNProfileList.class); + + mPagerAdapter.addTab(R.string.generalsettings, GeneralSettings.class); + mPagerAdapter.addTab(R.string.faq, FaqFragment.class); + + if(SendDumpFragment.getLastestDump(this)!=null) { + mPagerAdapter.addTab(R.string.crashdump, SendDumpFragment.class); + } + + mPagerAdapter.addTab(R.string.about, AboutFragment.class); + mPager.setAdapter(mPagerAdapter); - vpnListTab.setTabListener(new TabListener<VPNProfileList>("profiles", VPNProfileList.class)); - generalTab.setTabListener(new TabListener<GeneralSettings>("settings", GeneralSettings.class)); - faqtab.setTabListener(new TabListener<FaqFragment>("faq", FaqFragment.class)); - abouttab.setTabListener(new TabListener<AboutFragment>("about", AboutFragment.class)); + /*mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.slding_tabs); + mSlidingTabLayout.setViewPager(mPager); */ - bar.addTab(vpnListTab); - bar.addTab(generalTab); - bar.addTab(faqtab); - bar.addTab(abouttab); + TabBarView tabs = (TabBarView) findViewById(R.id.sliding_tabs); + tabs.setViewPager(mPager); + /* if (false) { Tab logtab = bar.newTab().setText("Log"); logtab.setTabListener(new TabListener<LogFragment>("log", LogFragment.class)); bar.addTab(logtab); - } + }*/ + - if(SendDumpFragment.getLastestDump(this)!=null) { - Tab sendDump = bar.newTab().setText(R.string.crashdump); - sendDump.setTabListener(new TabListener<SendDumpFragment>("crashdump",SendDumpFragment.class)); - bar.addTab(sendDump); - } } - protected class TabListener<T extends Fragment> implements ActionBar.TabListener - { - private Fragment mFragment; - private String mTag; - private Class<T> mClass; - - public TabListener(String tag, Class<T> clz) { - mTag = tag; - mClass = clz; - - // Check to see if we already have a fragment for this tab, probably - // from a previously saved state. If so, deactivate it, because our - // initial state is that a tab isn't shown. - mFragment = getFragmentManager().findFragmentByTag(mTag); - if (mFragment != null && !mFragment.isDetached()) { - FragmentTransaction ft = getFragmentManager().beginTransaction(); - ft.detach(mFragment); - ft.commit(); - } + class Tab { + public Class<? extends Fragment> fragmentClass; + String mName; + + public Tab(Class<? extends Fragment> fClass, @StringRes String name){ + mName = name; + fragmentClass = fClass; } - - public void onTabSelected(Tab tab, FragmentTransaction ft) { - if (mFragment == null) { - mFragment = Fragment.instantiate(MainActivity.this, mClass.getName()); - ft.add(android.R.id.content, mFragment, mTag); - } else { - ft.attach(mFragment); - } + + } + + private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { + private Vector<Tab> mTabs = new Vector<Tab>(); + + public ScreenSlidePagerAdapter(FragmentManager fm) { + super(fm); } - public void onTabUnselected(Tab tab, FragmentTransaction ft) { - if (mFragment != null) { - ft.detach(mFragment); + @Override + public Fragment getItem(int position) { + try { + return mTabs.get(position).fragmentClass.newInstance(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); } + return null; } + @Override + public CharSequence getPageTitle(int position) { + return mTabs.get(position).mName; + } - @Override - public void onTabReselected(Tab tab, FragmentTransaction ft) { + @Override + public int getCount() { + return mTabs.size(); + } - } - } + public void addTab(@StringRes int name, Class<? extends Fragment> fragmentClass) { + mTabs.add(new Tab(fragmentClass, getString(name))); + } + } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { |