aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java2
-rw-r--r--app/src/main/java/com/camilstaps/taize/Bible.java20
-rw-r--r--app/src/main/java/com/camilstaps/taize/BibleText.java47
-rw-r--r--app/src/main/java/com/camilstaps/taize/DailyMeditation.java21
-rw-r--r--app/src/main/java/com/camilstaps/taize/DailyMeditationFragment.java101
-rw-r--r--app/src/main/java/com/camilstaps/taize/DailyReading.java13
-rw-r--r--app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java23
-rw-r--r--app/src/main/java/com/camilstaps/taize/MainActivity.java154
-rw-r--r--app/src/main/java/com/camilstaps/taize/Taize.java80
9 files changed, 329 insertions, 132 deletions
diff --git a/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java b/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java
index d17bc90..4e3e449 100644
--- a/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java
+++ b/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java
@@ -4,8 +4,6 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
-import com.camilstaps.taize.DailyReading;
-
import org.json.JSONException;
import java.text.ParseException;
diff --git a/app/src/main/java/com/camilstaps/taize/Bible.java b/app/src/main/java/com/camilstaps/taize/Bible.java
index 83fcba4..43795f7 100644
--- a/app/src/main/java/com/camilstaps/taize/Bible.java
+++ b/app/src/main/java/com/camilstaps/taize/Bible.java
@@ -2,7 +2,6 @@ package com.camilstaps.taize;
import android.content.Context;
import android.preference.PreferenceManager;
-import android.util.Log;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
@@ -85,7 +84,24 @@ public class Bible {
}
}
} catch (JSONException e) {
- passage.append("No Bible text found.");
+ try {
+ JSONObject response = new JSONObject(s.substring(1, s.length() - 2));
+ JSONObject chapter = response.getJSONObject("chapter");
+
+ List<String> sortedKeys = new ArrayList<String>();
+ Iterator<?> verses = chapter.keys();
+ while (verses.hasNext()) {
+ String verse_number = (String) verses.next();
+ sortedKeys.add(verse_number);
+ }
+ Collections.sort(sortedKeys);
+ for (String verse_number : sortedKeys) {
+ JSONObject verse = chapter.getJSONObject(verse_number);
+ passage.append(verse.getString("verse")).append(" ");
+ }
+ } catch (JSONException e2) {
+ errorListener.onErrorResponse(null);
+ }
}
listener.onResponse(passage.toString());
diff --git a/app/src/main/java/com/camilstaps/taize/BibleText.java b/app/src/main/java/com/camilstaps/taize/BibleText.java
index 6a9dba8..4f73ad8 100644
--- a/app/src/main/java/com/camilstaps/taize/BibleText.java
+++ b/app/src/main/java/com/camilstaps/taize/BibleText.java
@@ -4,6 +4,7 @@ import android.content.Context;
import com.android.volley.Response;
import com.android.volley.VolleyError;
+import com.camilstaps.common.Listener;
/**
* Class for holding some text in the Bible
@@ -16,6 +17,17 @@ public class BibleText {
private int start_chap, end_chap, start_verse, end_verse;
/**
+ * Constructor for a bible text consisting of a full chapter
+ * @param book
+ * @param chapter
+ */
+ public BibleText(String book, int chapter) {
+ this.book = book;
+ start_chap = end_chap = chapter;
+ start_verse = end_verse = -1;
+ }
+
+ /**
* Constructor for a bible text consisting of a single verse
* @param book
* @param chapter
@@ -46,13 +58,17 @@ public class BibleText {
@Override
public String toString() {
StringBuilder sb = new StringBuilder(book);
- sb.append(' ').append(Integer.toString(start_chap)).append(':').append(Integer.toString(start_verse));
- if (start_chap != end_chap || start_verse != end_verse) {
- sb.append('-');
- if (start_chap != end_chap) {
- sb.append(Integer.toString(end_chap)).append('-');
+ sb.append(' ').append(Integer.toString(start_chap));
+ if (start_verse != -1) {
+ sb.append(':').append(Integer.toString(start_verse));
+
+ if (start_chap != end_chap || start_verse != end_verse) {
+ sb.append('-');
+ if (start_chap != end_chap) {
+ sb.append(Integer.toString(end_chap)).append('-');
+ }
+ sb.append(Integer.toString(end_verse));
}
- sb.append(Integer.toString(end_verse));
}
return sb.toString();
}
@@ -61,13 +77,14 @@ public class BibleText {
* Get the text (without verse numbers, line breaks, etc.) of this passage
* @param context
* @param listener
- * @param errorListener
*/
- public void getText(Context context, Response.Listener<String> listener, Response.ErrorListener errorListener) {
+ public void getText(Context context, final Listener<String> listener) {
String passage = "";
if (start_chap == end_chap) {
- if (start_verse == end_verse) {
+ if (start_verse == -1) {
+ passage = book + " " + start_chap;
+ } else if (start_verse == end_verse) {
passage = book + " " + start_chap + ":" + start_verse;
} else {
passage = book + " " + start_chap + ":" + start_verse + "-" + end_verse;
@@ -81,7 +98,17 @@ public class BibleText {
passage = passageBuilder.toString();
}
- Bible.getPassage(context, passage, listener, errorListener);
+ Bible.getPassage(context, passage, new Response.Listener<String>() {
+ @Override
+ public void onResponse(String s) {
+ listener.success(s);
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError volleyError) {
+ listener.failure();
+ }
+ });
}
}
diff --git a/app/src/main/java/com/camilstaps/taize/DailyMeditation.java b/app/src/main/java/com/camilstaps/taize/DailyMeditation.java
new file mode 100644
index 0000000..fc5883b
--- /dev/null
+++ b/app/src/main/java/com/camilstaps/taize/DailyMeditation.java
@@ -0,0 +1,21 @@
+package com.camilstaps.taize;
+
+import org.json.JSONException;
+
+import java.text.ParseException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.camilstaps.common.Date;
+import com.camilstaps.common.DatedString;
+
+/**
+ * Created by camilstaps on 7-4-15.
+ */
+public class DailyMeditation extends DatedString {
+
+ public DailyMeditation(Date date, String string) {
+ super(date, string);
+ }
+
+}
diff --git a/app/src/main/java/com/camilstaps/taize/DailyMeditationFragment.java b/app/src/main/java/com/camilstaps/taize/DailyMeditationFragment.java
new file mode 100644
index 0000000..4e1d4be
--- /dev/null
+++ b/app/src/main/java/com/camilstaps/taize/DailyMeditationFragment.java
@@ -0,0 +1,101 @@
+package com.camilstaps.taize;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.support.v4.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.widget.TextView;
+
+import com.camilstaps.common.Date;
+import com.camilstaps.common.Listener;
+import com.camilstaps.common.NullListener;
+
+/**
+ * Created by camilstaps on 8-4-15.
+ */
+public class DailyMeditationFragment extends Fragment {
+
+ private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener;
+ private ViewTreeObserver.OnScrollChangedListener onScrollChangedListener;
+ private View rootView;
+ private Context context;
+
+ private Date date;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ rootView = inflater.inflate(R.layout.pager_content_dailymeditation, container, false);
+
+ context = container.getContext();
+
+ Bundle args = getArguments();
+ int dateOffset = args.getInt("dateOffset", 0);
+
+ date = new Date();
+ date.addOrSubtractDays(dateOffset);
+
+ setupContent();
+
+ onScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
+ @Override
+ public void onScrollChanged() {
+ Log.d("DMF", "Scrolling to (" + rootView.getScrollX() + "," + rootView.getScrollY() + ")");
+ /*if (rootView.getScrollY() > 0) {
+ ((MainActivity) context).swipeRefreshLayout.setEnabled(false);
+ } else {
+ ((MainActivity) context).swipeRefreshLayout.setEnabled(true);
+ }*/
+ }
+ };
+ rootView.findViewById(R.id.pager_content).getViewTreeObserver().addOnScrollChangedListener(onScrollChangedListener);
+
+ return rootView;
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ switch (key) {
+ case "dailymeditations":
+ setupContent();
+ break;
+ }
+ }
+ };
+ PreferenceManager.getDefaultSharedPreferences(context).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
+ }
+
+ protected void setupContent() {
+ setDailyMeditation(new NullListener<DailyMeditation>());
+ }
+
+ public void setDailyMeditation(final Listener<DailyMeditation> listener) {
+ Taize.getDailyMeditation(context, new Listener<DailyMeditation>() {
+ @Override
+ public void success(DailyMeditation data) {
+ ((TextView) rootView.findViewById(R.id.textDailyMeditation)).setText(data.getString());
+ listener.success(data);
+ }
+
+ @Override
+ public void failure() {
+ ((TextView) rootView.findViewById(R.id.textDailyMeditation)).setText("No reading found.");
+ listener.failure();
+ }
+ }, date);
+
+ String niceDate = date.toNiceString(context);
+ niceDate = niceDate.substring(0,1).toUpperCase() + niceDate.substring(1);
+ ((TextView) rootView.findViewById(R.id.dateDailyMeditation)).setText(niceDate);
+ }
+}
diff --git a/app/src/main/java/com/camilstaps/taize/DailyReading.java b/app/src/main/java/com/camilstaps/taize/DailyReading.java
index fa5115e..151f7e3 100644
--- a/app/src/main/java/com/camilstaps/taize/DailyReading.java
+++ b/app/src/main/java/com/camilstaps/taize/DailyReading.java
@@ -1,7 +1,6 @@
package com.camilstaps.taize;
import org.json.JSONException;
-import org.json.JSONObject;
import java.text.ParseException;
import java.util.regex.Matcher;
@@ -36,15 +35,19 @@ public class DailyReading extends DatedString {
return null;
}
- return new BibleText(bible_ref_m.group(1), Integer.parseInt(bible_ref_m.group(2)), Integer.parseInt(bible_ref_m.group(3)), Integer.parseInt(bible_ref_m.group(2)), Integer.parseInt(bible_ref_m.group(4)));
+ if (bible_ref_m.group(3) == null) {
+ return new BibleText(bible_ref_m.group(1), Integer.parseInt(bible_ref_m.group(2)));
+ } else {
+ return new BibleText(bible_ref_m.group(1), Integer.parseInt(bible_ref_m.group(2)), Integer.parseInt(bible_ref_m.group(3)), Integer.parseInt(bible_ref_m.group(2)), Integer.parseInt(bible_ref_m.group(4)));
+ }
}
private Matcher referenceMatcher() {
- Pattern bible_ref = Pattern.compile("\\((\\d? ?[a-zA-Z]+) (\\d{1,2})(?::|,)(\\d+)-?(\\d+?)\\)");
+ Pattern bible_ref = Pattern.compile("\\((\\d? ?[a-zA-Z]+) (\\d{1,2})(?::|,)?(\\d+)?-?(\\d+?)?\\)");
return bible_ref.matcher(string);
}
- public static DailyReading fromString(String s) throws JSONException, ParseException {
- return (DailyReading) DatedString.fromString(s, DailyReading.class);
+ public static DailyMeditation fromString(String s) throws JSONException, ParseException {
+ return (DailyMeditation) DatedString.fromString(s, DailyMeditation.class);
}
}
diff --git a/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java b/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java
index 7d07746..a45556b 100644
--- a/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java
+++ b/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java
@@ -5,13 +5,12 @@ import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
-import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
import android.widget.TextView;
-import android.widget.Toast;
import com.camilstaps.common.Date;
import com.camilstaps.common.Listener;
@@ -23,6 +22,7 @@ import com.camilstaps.common.NullListener;
public class DailyReadingFragment extends Fragment {
private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener;
+ private ViewTreeObserver.OnScrollChangedListener onScrollChangedListener;
private View rootView;
private Context context;
@@ -33,9 +33,7 @@ public class DailyReadingFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- // The last two arguments ensure LayoutParams are inflated
- // properly.
- rootView = inflater.inflate(R.layout.pager_content, container, false);
+ rootView = inflater.inflate(R.layout.pager_content_dailyreading, container, false);
context = container.getContext();
@@ -47,6 +45,21 @@ public class DailyReadingFragment extends Fragment {
setupContent();
+ onScrollChangedListener = new ViewTreeObserver.OnScrollChangedListener() {
+ @Override
+ public void onScrollChanged() {
+ Log.d("DRF", "Scrolling to (" + rootView.getScrollX() + "," + rootView.getScrollY() + ")");
+ /*if (rootView.getScrollY() > 0) {
+ ((MainActivity) context).swipeRefreshLayout.setEnabled(false);
+ } else {
+ ((MainActivity) context).swipeRefreshLayout.setEnabled(true);
+ }*/
+ }
+ };
+ rootView.findViewById(R.id.pager_content).getViewTreeObserver().addOnScrollChangedListener(onScrollChangedListener);
+
+ Log.d("DRF", "OnCreateView");
+
return rootView;
}
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;
}
}
diff --git a/app/src/main/java/com/camilstaps/taize/Taize.java b/app/src/main/java/com/camilstaps/taize/Taize.java
index 2510946..284af51 100644
--- a/app/src/main/java/com/camilstaps/taize/Taize.java
+++ b/app/src/main/java/com/camilstaps/taize/Taize.java
@@ -1,30 +1,18 @@
package com.camilstaps.taize;
import android.content.Context;
-import android.content.SharedPreferences;
import android.preference.PreferenceManager;
-import android.util.Log;
import android.widget.Toast;
-import com.android.volley.Response;
-import com.android.volley.VolleyError;
import com.camilstaps.common.Date;
import com.camilstaps.common.DatedString;
import com.camilstaps.common.DatedStringPreferenceSet;
import com.camilstaps.common.Listener;
-import com.camilstaps.common.NullListener;
import com.camilstaps.rss.RetrieveFeedTask;
import com.camilstaps.rss.RssParser;
-import org.json.JSONException;
-
-import java.text.ParseException;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
/**
* Class specific to methods for Taize
@@ -34,6 +22,7 @@ public class Taize {
private static final String url_reading_feed = "http://www.taize.fr/readingrss.php";
private static final String url_reading_feed_en = "http://www.taize.fr/readingrss.php?lang=en";
+ private static final String url_meditation_feed = "http://www.taize.fr/pdcrss.xml";
private static final int MAX_DIFFDATE_READING = 10;
@@ -65,16 +54,17 @@ public class Taize {
return;
}
- text.getText(context, new Response.Listener<String>() {
+ text.getText(context, new Listener<String>() {
@Override
- public void onResponse(String s) {
+ public void success(String s) {
DatedStringPreferenceSet.updateOrAdd(context, "dailyreadingbibletexts", new DatedString(date, s));
listener.success(s);
}
- }, new Response.ErrorListener() {
+
@Override
- public void onErrorResponse(VolleyError volleyError) {
- failure();
+ public void failure() {
+ listener.failure();
+ DatedStringPreferenceSet.remove(context, "dailyreadingbibletexts", date);
}
});
}
@@ -191,10 +181,64 @@ public class Taize {
}
+ public static void getDailyMeditation(final Context context, final Listener<DailyMeditation> listener, Date date) {
+
+ Set<DailyMeditation> dailyMeditations = (Set) DatedStringPreferenceSet.get(context, "dailymeditations", DailyMeditation.class);
+
+ for (DailyMeditation meditation : dailyMeditations) {
+ if (meditation.getDate().equals(date)) {
+ listener.success(meditation);
+ return;
+ }
+ }
+
+ fetchDailyMeditation(context, listener, date);
+
+ }
+
+ private static void fetchDailyMeditation(final Context context, final Listener<DailyMeditation> listener, final Date date) {
+
+ RetrieveFeedTask retrieve = new RetrieveFeedTask();
+ retrieve.setRssDownloadListener(new Listener<RssParser>() {
+ @Override
+ public void success(RssParser parser) {
+ try {
+ String text = parser.getItem(0).description.trim();
+ DailyMeditation reading = new DailyMeditation(date, text);
+
+ DatedStringPreferenceSet.add(context, "dailymeditations", reading);
+
+ listener.success(reading);
+ } catch (Exception e) {
+ failure();
+ }
+ }
+
+ @Override
+ public void failure() {
+ Toast.makeText(context, "Failed to fetch daily meditation.", Toast.LENGTH_SHORT).show();
+ listener.failure();
+ }
+ });
+
+ try {
+ retrieve.execute(url_meditation_feed
+ + "?lang=" + PreferenceManager.getDefaultSharedPreferences(context).getString(
+ SettingsActivity.SettingsFragment.PREF_LANGUAGE_READINGS,
+ context.getString(R.string.pref_language_dailyreading_default))
+ + "&date=" + date.toString()
+ ).get();
+ } catch (Exception e) {
+ e.printStackTrace();
+ listener.failure();
+ }
+
+ }
+
public static void cleanTextSets(Context context) {
cleanDailyReadingsSet(context, "dailyreadings");
cleanDailyReadingsSet(context, "englishdailyreadings");
- DatedStringPreferenceSet.clear(context, "dailyreadingbibletexts");
+ //DatedStringPreferenceSet.clear(context, "dailyreadingbibletexts");
}
public static void cleanDailyReadingsSet(Context context, String key) {