package com.yeokm1.nussocprintandroid; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceScreen; 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.ActionBarActivity; import com.crashlytics.android.Crashlytics; import com.yeokm1.nussocprintandroid.core.FlurryFunctions; import com.yeokm1.nussocprintandroid.core.HelperFunctions; import com.yeokm1.nussocprintandroid.core.MyApplication; import com.yeokm1.nussocprintandroid.core.Storage; import com.yeokm1.nussocprintandroid.fragments.HelpFragment; import com.yeokm1.nussocprintandroid.fragments.PreferenceListFragment.OnPreferenceAttachedListener; import com.yeokm1.nussocprintandroid.fragments.PrintFragment; import com.yeokm1.nussocprintandroid.fragments.QuotaFragment; import com.yeokm1.nussocprintandroid.fragments.SettingsFragment; import java.util.Locale; public class MainActivity extends ActionBarActivity implements ActionBar.TabListener, OnPreferenceAttachedListener { private static final int FRAGMENT_PRINT_NUMBER = 0; private static final int FRAGMENT_QUOTA_NUMBER = 1; private static final int FRAGMENT_SETTINGS_NUMBER = 2; private static final int FRAGMENT_HELP_NUMBER = 3; SectionsPagerAdapter mSectionsPagerAdapter; /** * The {@link ViewPager} that will host the section contents. */ ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Crashlytics.start(this); setContentView(R.layout.layout_main); // Set up the action bar. final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // Create the adapter that will return a fragment for each of the three // primary sections of the activity. mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); // Set up the ViewPager with the sections adapter. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); // When swiping between different sections, select the corresponding // tab. We can also use ActionBar.Tab#select() to do this if we have // a reference to the Tab. mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } }); // For each of the sections in the app, add a tab to the action bar. for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { // Create a tab with text corresponding to the page title defined by // the adapter. Also specify this Activity object, which implements // the TabListener interface, as the callback (listener) for when // this tab is selected. actionBar.addTab( actionBar.newTab() .setText(mSectionsPagerAdapter.getPageTitle(i)) .setTabListener(this)); } Bundle intentBundle = getIntent().getExtras(); if(intentBundle != null) { Uri fileNameUri = (Uri) intentBundle.get(Intent.EXTRA_STREAM); if(fileNameUri != null) { ((MyApplication) getApplication()).setCurrentDocumentUri(fileNameUri); } } checkIfCredentialsAreSet(); } @Override protected void onStart(){ super.onStart(); FlurryFunctions.activityOnStart(this); } @Override protected void onStop(){ super.onStop(); FlurryFunctions.activityOnStop(this); } public void checkIfCredentialsAreSet(){ Storage storage = Storage.getInstance(); String username = storage.getUsername(); String password = storage.getPassword(); if(username.length() == 0 || password.length() == 0){ String dialogTitle = getString(R.string.credential_not_set_title); String dialogMessage = getString(R.string.credential_not_set_message); HelperFunctions.showAlert(this, dialogTitle, dialogMessage); } } @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { // When the given tab is selected, switch to the corresponding page in // the ViewPager. mViewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } /** * A {@link FragmentStatePagerAdapter} that returns a fragment corresponding to * one of the sections/tabs/pages. */ public class SectionsPagerAdapter extends FragmentStatePagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch(position){ case FRAGMENT_PRINT_NUMBER : return new PrintFragment(); case FRAGMENT_QUOTA_NUMBER : return new QuotaFragment(); case FRAGMENT_SETTINGS_NUMBER : return new SettingsFragment(); case FRAGMENT_HELP_NUMBER : return new HelpFragment(); default : return null; } } @Override public int getCount() { return 4; } @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case FRAGMENT_PRINT_NUMBER: return getString(R.string.tab_print).toUpperCase(l); case FRAGMENT_QUOTA_NUMBER: return getString(R.string.tab_quota).toUpperCase(l); case FRAGMENT_SETTINGS_NUMBER: return getString(R.string.tab_settings).toUpperCase(l); case FRAGMENT_HELP_NUMBER: return getString(R.string.tab_help).toUpperCase(l); } return null; } } @Override public void onPreferenceAttached(PreferenceScreen root, int xmlId) { //Dummy function used by PreferenceListFragment } }