diff options
author | Camil Staps | 2015-04-11 23:30:39 +0200 |
---|---|---|
committer | Camil Staps | 2015-04-11 23:30:39 +0200 |
commit | dbc2ea6cc842ade3fd48cc8457916e39443de77e (patch) | |
tree | 560fc8efe18b3cacbd2f1ce52d44d462b51c9411 /app/src/main/java/com/camilstaps/taize/MainActivity.java | |
parent | General improvements & continuation of development (diff) |
General continuation of development
Diffstat (limited to 'app/src/main/java/com/camilstaps/taize/MainActivity.java')
-rw-r--r-- | app/src/main/java/com/camilstaps/taize/MainActivity.java | 134 |
1 files changed, 98 insertions, 36 deletions
diff --git a/app/src/main/java/com/camilstaps/taize/MainActivity.java b/app/src/main/java/com/camilstaps/taize/MainActivity.java index c7ca14c..5ce8b5f 100644 --- a/app/src/main/java/com/camilstaps/taize/MainActivity.java +++ b/app/src/main/java/com/camilstaps/taize/MainActivity.java @@ -5,23 +5,26 @@ 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.MotionEvent; -import android.view.View; import android.view.ViewGroup; -public class MainActivity extends ActionBarActivity { +import com.camilstaps.common.Listener; + +public class MainActivity extends ActionBarActivity implements SwipeRefreshLayout.OnRefreshListener { ViewPager pager; PagerAdapter pagerAdapter; + SwipeRefreshLayout swipeRefreshLayout; + int itemsInRefreshQueue = 0; @Override protected void onCreate(Bundle savedInstanceState) { @@ -31,81 +34,134 @@ public class MainActivity extends ActionBarActivity { 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(Integer.MAX_VALUE, false); + goToToday(); final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - //actionBar.setDisplayShowTitleEnabled(true); ActionBar.TabListener tabListener = new ActionBar.TabListener() { @Override - public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { - - } + public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {} @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)); } - public void onBackPressed() { - if (pager.getCurrentItem() == 0) { - super.onBackPressed(); - } else { - pager.setCurrentItem(pager.getCurrentItem() - 1); - } - } - @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.global, menu); return true; - //return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); - //noinspection SimplifiableIfStatement - if (id == R.id.action_settings) { - Intent intent = new Intent(this, SettingsActivity.class); - startActivity(intent); - return true; + Intent intent; + switch (id) { + case R.id.action_settings: + intent = new Intent(this, SettingsActivity.class); + startActivity(intent); + return true; + case R.id.action_share: + intent = new Intent(); + intent.setAction(Intent.ACTION_SEND); + intent.putExtra(Intent.EXTRA_TEXT, ((DailyReadingFragment) pagerAdapter.instantiateItem(pager, pager.getCurrentItem())).getReading()); + intent.setType("text/plain"); + startActivity(intent); + return true; + case R.id.action_today: + goToToday(); + return true; } 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(); + } + + @Override + public void failure() { + decreaseRefreshQueue(); + } + }); + + 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); + } + } + + protected void goToToday() { + Log.d("MAIN", "Going to scroll from " + pager.getCurrentItem() + " to " + (PagerAdapter.COUNT - PagerAdapter.LOOKAHEAD - 1) + "..."); + pager.setCurrentItem(PagerAdapter.COUNT - PagerAdapter.LOOKAHEAD - 1, false); + + } + private class PagerAdapter extends FragmentStatePagerAdapter { + public static final int COUNT = Integer.MAX_VALUE; + public static final int LOOKAHEAD = 31; + public PagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { + Log.d("PA", "Get " + i); + Fragment fragment = new DailyReadingFragment(); Bundle args = new Bundle(); - args.putInt("dateOffset", i); + args.putInt("dateOffset", -i + LOOKAHEAD); fragment.setArguments(args); return fragment; @@ -113,7 +169,7 @@ public class MainActivity extends ActionBarActivity { @Override public int getCount() { - return Integer.MAX_VALUE; + return COUNT; } @Override @@ -123,21 +179,27 @@ public class MainActivity extends ActionBarActivity { @Override public Object instantiateItem(ViewGroup container, int position) { + Log.d("PA", "Instantiate " + position); if (position < 2) { return super.instantiateItem(container, position); } else { - return super.instantiateItem(container, Integer.MAX_VALUE - position - 1); + return super.instantiateItem(container, COUNT - position - 1); } } @Override public void destroyItem(ViewGroup container, int position, Object object) { + Log.d("PA", "Destroy " + position); if (position < 2) { super.destroyItem(container, position, object); } else { - super.destroyItem(container, Integer.MAX_VALUE - position - 1, object); + super.destroyItem(container, COUNT - position - 1, object); } } + + public int getItemPosition(Object object) { + return POSITION_NONE; + } } } |