aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/com/camilstaps/taize/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/camilstaps/taize/MainActivity.java')
-rw-r--r--app/src/main/java/com/camilstaps/taize/MainActivity.java134
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;
+ }
}
}