package com.camilstaps.taize; import android.content.Intent; import android.preference.PreferenceManager; 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.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.ViewGroup; import android.widget.PopupMenu; public class MainActivity extends ActionBarActivity { ViewPager viewPager; PagerAdapter pagerAdapter; ActionBar.TabListener tabListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Taize.cleanTextSets(this); setContentView(R.layout.activity_main); pagerAdapter = new TaizePagerAdapter(getSupportFragmentManager()); viewPager = (ViewPager) findViewById(R.id.pager); viewPager.setAdapter(pagerAdapter); final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); PreferenceManager.getDefaultSharedPreferences(this).edit().remove("dailyreadingbibletexts").apply(); tabListener = new ActionBar.TabListener() { @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { switch (tab.getPosition()) { case 0: viewPager.setCurrentItem(TaizePagerAdapter.DAILYREADING_TODAY); break; case 1: viewPager.setCurrentItem(TaizePagerAdapter.DAILYMEDITATION_TODAY); break; case 2: viewPager.setCurrentItem(TaizePagerAdapter.PODCAST_TODAY); } } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } }; actionBar.addTab(actionBar.newTab().setText("Reading").setIcon(R.drawable.ic_action_reading).setTabListener(tabListener)); actionBar.addTab(actionBar.newTab().setText("Meditation").setIcon(R.drawable.ic_action_meditation).setTabListener(tabListener)); //actionBar.addTab(actionBar.newTab().setText("Podcast").setIcon(R.drawable.ic_action_podcast).setTabListener(tabListener)); } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.global, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); Intent intent; switch (id) { case R.id.action_settings: intent = new Intent(this, SettingsActivity.class); startActivity(intent); return true; case R.id.action_share: PopupMenu popup = new PopupMenu(this, findViewById(R.id.action_share)); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.menu.share_popup, popup.getMenu()); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); switch (item.getItemId()) { case R.id.action_share_bibletext: //intent.putExtra(Intent.EXTRA_TEXT, ((DailyReadingFragment) TaizePagerAdapter.instantiateItem(viewPager, viewPager.getCurrentItem())).getBibleText()); break; case R.id.action_share_reading: //intent.putExtra(Intent.EXTRA_TEXT, ((DailyReadingFragment) TaizePagerAdapter.instantiateItem(viewPager, viewPager.getCurrentItem())).getReading()); break; } startActivity(intent); return false; } }); popup.show(); return true; } return super.onOptionsItemSelected(item); } private class TaizePagerAdapter extends FragmentStatePagerAdapter { public static final int DAILYREADING_PAST_LIMIT = 100, DAILYREADING_TODAY = 200, DAILYREADING_FUTURE_LIMIT = 299; public static final int DAILYMEDITATION_PAST_LIMIT = 300, DAILYMEDITATION_TODAY = 400, DAILYMEDITATION_FUTURE_LIMIT = 499; public static final int PODCAST_PAST_LIMIT = 500, PODCAST_TODAY = 600, PODCAST_FUTURE_LIMIT = 699; public static final int COUNT = 700; public TaizePagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { Fragment fragment = null; if (i >= DAILYREADING_PAST_LIMIT && i <= DAILYREADING_FUTURE_LIMIT) { fragment = new DailyReadingFragment(); Bundle args = new Bundle(); args.putInt("dateOffset", i - DAILYREADING_TODAY); fragment.setArguments(args); } else if (i >= DAILYMEDITATION_PAST_LIMIT && i <= DAILYMEDITATION_FUTURE_LIMIT) { fragment = new DailyMeditationFragment(); Bundle args = new Bundle(); args.putInt("dateOffset", i - DAILYMEDITATION_TODAY); fragment.setArguments(args); } else if (i >= PODCAST_PAST_LIMIT && i <= PODCAST_FUTURE_LIMIT) { return getItem(DAILYREADING_TODAY); } return fragment; } @Override public int getCount() { return COUNT; } @Override public Object instantiateItem(ViewGroup container, int position) { return super.instantiateItem(container, fakePosition(position)); } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, fakePosition(position), object); } private int fakePosition(int requestedPosition) { if (requestedPosition < 2) { return DAILYREADING_TODAY; } else { return requestedPosition; } } public int getItemPosition(Object object) { return POSITION_NONE; } } }