diff options
author | Camil Staps | 2015-04-15 12:59:32 +0200 |
---|---|---|
committer | Camil Staps | 2015-04-15 12:59:32 +0200 |
commit | 88041c0a7fd2c69094f1bb0ab1d15518cd1fd75d (patch) | |
tree | 5ee8cf6d2c3513f9a794ef9ae8dc9303c58b33e1 /app/src/main/java/com/camilstaps/taize/MainActivity.java | |
parent | New version readme (diff) |
Working tabs & meditations
Diffstat (limited to 'app/src/main/java/com/camilstaps/taize/MainActivity.java')
-rw-r--r-- | app/src/main/java/com/camilstaps/taize/MainActivity.java | 154 |
1 files changed, 64 insertions, 90 deletions
diff --git a/app/src/main/java/com/camilstaps/taize/MainActivity.java b/app/src/main/java/com/camilstaps/taize/MainActivity.java index e740cfd..4e05109 100644 --- a/app/src/main/java/com/camilstaps/taize/MainActivity.java +++ b/app/src/main/java/com/camilstaps/taize/MainActivity.java @@ -1,31 +1,28 @@ 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.v4.widget.SwipeRefreshLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; -import android.util.Log; -import android.view.HapticFeedbackConstants; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.ViewGroup; import android.widget.PopupMenu; -import com.camilstaps.common.Listener; +public class MainActivity extends ActionBarActivity { -public class MainActivity extends ActionBarActivity implements SwipeRefreshLayout.OnRefreshListener { - - ViewPager pager; + ViewPager viewPager; PagerAdapter pagerAdapter; - SwipeRefreshLayout swipeRefreshLayout; - int itemsInRefreshQueue = 0; + + ActionBar.TabListener tabListener; @Override protected void onCreate(Bundle savedInstanceState) { @@ -35,33 +32,46 @@ public class MainActivity extends ActionBarActivity implements SwipeRefreshLayou setContentView(R.layout.activity_main); - swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefresh); - swipeRefreshLayout.setOnRefreshListener(this); - - pager = (ViewPager) findViewById(R.id.pager); - pagerAdapter = new PagerAdapter(getSupportFragmentManager()); - pager.setAdapter(pagerAdapter); - pager.setCurrentItem(PagerAdapter.COUNT - PagerAdapter.LOOKAHEAD - 1, false); + pagerAdapter = new TaizePagerAdapter(getSupportFragmentManager()); + viewPager = (ViewPager) findViewById(R.id.pager); + viewPager.setAdapter(pagerAdapter); final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - ActionBar.TabListener tabListener = new ActionBar.TabListener() { + PreferenceManager.getDefaultSharedPreferences(this).edit().remove("dailyreadingbibletexts").apply(); + + tabListener = new ActionBar.TabListener() { @Override - public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {} + 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) {} + public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { + } @Override - public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {} + public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { + } }; - getWindow().getDecorView().performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); - 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)); + //actionBar.addTab(actionBar.newTab().setText("Podcast").setIcon(R.drawable.ic_action_podcast).setTabListener(tabListener)); + } + + @Override + public void onRestoreInstanceState(Bundle savedInstanceState) { } @Override @@ -94,10 +104,10 @@ public class MainActivity extends ActionBarActivity implements SwipeRefreshLayou intent.setType("text/plain"); switch (item.getItemId()) { case R.id.action_share_bibletext: - intent.putExtra(Intent.EXTRA_TEXT, ((DailyReadingFragment) pagerAdapter.instantiateItem(pager, pager.getCurrentItem())).getBibleText()); + //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) pagerAdapter.instantiateItem(pager, pager.getCurrentItem())).getReading()); + //intent.putExtra(Intent.EXTRA_TEXT, ((DailyReadingFragment) TaizePagerAdapter.instantiateItem(viewPager, viewPager.getCurrentItem())).getReading()); break; } startActivity(intent); @@ -112,66 +122,35 @@ public class MainActivity extends ActionBarActivity implements SwipeRefreshLayou return super.onOptionsItemSelected(item); } - @Override - public void onRefresh() { - increaseRefreshQueue(); - increaseRefreshQueue(); - - DailyReadingFragment fragment = (DailyReadingFragment) pagerAdapter.instantiateItem(pager, pager.getCurrentItem()); - - fragment.setDailyReading(new Listener<DailyReading>() { - @Override - public void success(DailyReading data) { - decreaseRefreshQueue(); - } + private class TaizePagerAdapter extends FragmentStatePagerAdapter { - @Override - public void failure() { - decreaseRefreshQueue(); - } - }); + 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; - fragment.setDailyReadingBibleText(new Listener<String>() { - @Override - public void success(String data) { - decreaseRefreshQueue(); - } - - @Override - public void failure() { - decreaseRefreshQueue(); - } - }); - } - - protected void increaseRefreshQueue() { - itemsInRefreshQueue++; - swipeRefreshLayout.setRefreshing(true); - } - - protected void decreaseRefreshQueue() { - itemsInRefreshQueue--; - if (itemsInRefreshQueue <= 0) { - itemsInRefreshQueue = 0; - swipeRefreshLayout.setRefreshing(false); - } - } - - private class PagerAdapter extends FragmentStatePagerAdapter { - public static final int COUNT = Integer.MAX_VALUE; - public static final int LOOKAHEAD = 31; - - public PagerAdapter(FragmentManager fm) { + public TaizePagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { - Fragment fragment = new DailyReadingFragment(); - Bundle args = new Bundle(); - args.putInt("dateOffset", -i + LOOKAHEAD); - fragment.setArguments(args); + 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; } @@ -182,25 +161,20 @@ public class MainActivity extends ActionBarActivity implements SwipeRefreshLayou } @Override - public CharSequence getPageTitle(int position) { - return "OBJECT " + (position + 1); - } - - @Override public Object instantiateItem(ViewGroup container, int position) { - if (position < 2) { - return super.instantiateItem(container, position); - } else { - return super.instantiateItem(container, COUNT - position - 1); - } + return super.instantiateItem(container, fakePosition(position)); } @Override public void destroyItem(ViewGroup container, int position, Object object) { - if (position < 2) { - super.destroyItem(container, position, object); + super.destroyItem(container, fakePosition(position), object); + } + + private int fakePosition(int requestedPosition) { + if (requestedPosition < 2) { + return DAILYREADING_TODAY; } else { - super.destroyItem(container, COUNT - position - 1, object); + return requestedPosition; } } |