aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorCamil Staps2015-04-11 23:30:39 +0200
committerCamil Staps2015-04-11 23:30:39 +0200
commitdbc2ea6cc842ade3fd48cc8457916e39443de77e (patch)
tree560fc8efe18b3cacbd2f1ce52d44d462b51c9411 /app/src
parentGeneral improvements & continuation of development (diff)
General continuation of development
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/com/camilstaps/common/Date.java8
-rw-r--r--app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java13
-rw-r--r--app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java33
-rw-r--r--app/src/main/java/com/camilstaps/taize/MainActivity.java134
-rw-r--r--app/src/main/java/com/camilstaps/taize/Taize.java3
-rw-r--r--app/src/main/res/layout/activity_main.xml11
-rw-r--r--app/src/main/res/layout/pager_content.xml3
-rw-r--r--app/src/main/res/menu/global.xml5
-rw-r--r--app/src/main/res/values-nl/strings.xml3
-rw-r--r--app/src/main/res/values/preference_values.xml8
-rw-r--r--app/src/main/res/values/strings.xml5
11 files changed, 171 insertions, 55 deletions
diff --git a/app/src/main/java/com/camilstaps/common/Date.java b/app/src/main/java/com/camilstaps/common/Date.java
index c01cc0d..8e5d6f4 100644
--- a/app/src/main/java/com/camilstaps/common/Date.java
+++ b/app/src/main/java/com/camilstaps/common/Date.java
@@ -110,6 +110,14 @@ public class Date implements Comparable<Date> {
}
}
+ public void addOrSubtractDays(int n) {
+ if (n < 0) {
+ subtractDays(-n);
+ } else {
+ addDays(n);
+ }
+ }
+
public boolean equals(Date date) {
return year == date.year && month == date.month && day == date.day;
}
diff --git a/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java b/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java
index d61ba37..d17bc90 100644
--- a/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java
+++ b/app/src/main/java/com/camilstaps/common/DatedStringPreferenceSet.java
@@ -87,4 +87,17 @@ public class DatedStringPreferenceSet {
put(context, key, new HashSet<DatedString>());
}
+ public static void remove(Context context, String key, Date date) {
+ Set<DatedString> set = (Set) get(context, key, DatedString.class);
+ Iterator<DatedString> iterator = set.iterator();
+ boolean add = false;
+ while (iterator.hasNext()) {
+ DatedString this_object = iterator.next();
+ if (this_object.getDate().equals(date)) {
+ iterator.remove();
+ }
+ }
+ put(context, key, set);
+ }
+
}
diff --git a/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java b/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java
index b5cde3c..e3b93e8 100644
--- a/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java
+++ b/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java
@@ -5,14 +5,17 @@ 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.widget.TextView;
+import android.widget.Toast;
import com.camilstaps.common.Date;
import com.camilstaps.common.Listener;
+import com.camilstaps.common.NullListener;
/**
* Created by camilstaps on 8-4-15.
@@ -24,6 +27,8 @@ public class DailyReadingFragment extends Fragment {
private Context context;
private Date date;
+ private String reading;
+ private String bibleText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -37,7 +42,7 @@ public class DailyReadingFragment extends Fragment {
int dateOffset = args.getInt("dateOffset", 0);
date = new Date();
- date.subtractDays(dateOffset);
+ date.addOrSubtractDays(dateOffset);
setupContent();
@@ -62,24 +67,36 @@ public class DailyReadingFragment extends Fragment {
PreferenceManager.getDefaultSharedPreferences(context).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
+ public String getReading() {
+ return reading;
+ }
+
+ public String getBibleText() {
+ return bibleText;
+ }
+
protected void setupContent() {
- setDailyReading();
- setDailyReadingBibleText();
+ setDailyReading(new NullListener<DailyReading>());
+ setDailyReadingBibleText(new NullListener<String>());
}
- private void setDailyReading() {
+ public void setDailyReading(final Listener<DailyReading> listener) {
Taize.getDailyReading(context, new Listener<DailyReading>() {
@Override
public void success(DailyReading data) {
((TextView) rootView.findViewById(R.id.textDailyReading)).setText(data.getTextWithoutReference());
+ reading = data.getString();
BibleText bt = data.getBibleReference();
- if (bt != null)
+ if (bt != null) {
((TextView) rootView.findViewById(R.id.refDailyReadingBibleText)).setText(bt.toString());
+ }
+ listener.success(data);
}
@Override
public void failure() {
((TextView) rootView.findViewById(R.id.textDailyReading)).setText("No reading found.");
+ listener.failure();
}
}, date);
@@ -88,18 +105,20 @@ public class DailyReadingFragment extends Fragment {
((TextView) rootView.findViewById(R.id.dateDailyReading)).setText(niceDate);
}
- private void setDailyReadingBibleText() {
+ public void setDailyReadingBibleText(final Listener<String> listener) {
Taize.getDailyReadingBibleText(context, new Listener<String>() {
@Override
public void success(String data) {
((TextView) rootView.findViewById(R.id.textDailyReadingBibleText)).setText(data);
+ bibleText = data;
+ listener.success(data);
}
@Override
public void failure() {
((TextView) rootView.findViewById(R.id.textDailyReadingBibleText)).setText("No bible text found.");
+ listener.failure();
}
}, date);
}
-
}
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;
+ }
}
}
diff --git a/app/src/main/java/com/camilstaps/taize/Taize.java b/app/src/main/java/com/camilstaps/taize/Taize.java
index c9e912f..2510946 100644
--- a/app/src/main/java/com/camilstaps/taize/Taize.java
+++ b/app/src/main/java/com/camilstaps/taize/Taize.java
@@ -82,6 +82,7 @@ public class Taize {
@Override
public void failure() {
listener.failure();
+ DatedStringPreferenceSet.remove(context, "dailyreadingbibletexts", date);
}
}, date);
}
@@ -130,7 +131,7 @@ public class Taize {
});
try {
- retrieve.execute(url_reading_feed + "?lang=en&date=" + date.toString()).get();
+ retrieve.execute(url_reading_feed_en + "&date=" + date.toString()).get();
} catch (Exception e) {
e.printStackTrace();
listener.failure();
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 7d924ef..d11f106 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,7 +1,12 @@
-<android.support.v4.view.ViewPager
+<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/swiperefresh"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent">
+
+ <android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_margin="0dp"/> \ No newline at end of file
+ android:layout_margin="0dp"/>
+</android.support.v4.widget.SwipeRefreshLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/pager_content.xml b/app/src/main/res/layout/pager_content.xml
index 0f53c69..9a3a6cc 100644
--- a/app/src/main/res/layout/pager_content.xml
+++ b/app/src/main/res/layout/pager_content.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/app/src/main/res/menu/global.xml b/app/src/main/res/menu/global.xml
index cd094ff..a2c2ee2 100644
--- a/app/src/main/res/menu/global.xml
+++ b/app/src/main/res/menu/global.xml
@@ -10,4 +10,9 @@
android:title="@string/action_share"
android:orderInCategory="50"
app:showAsAction="ifRoom"/>
+ <item
+ android:id="@+id/action_today"
+ android:title="@string/action_today"
+ android:orderInCategory="30"
+ app:showAsAction="ifRoom"/>
</menu>
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 2de50b8..cb56a78 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="app_name">Taizé</string>
<string name="action_settings">Instellingen</string>
+ <string name="action_share">Delen</string>
+ <string name="action_today">Vandaag</string>
</resources>
diff --git a/app/src/main/res/values/preference_values.xml b/app/src/main/res/values/preference_values.xml
index 71138ba..fbf01fd 100644
--- a/app/src/main/res/values/preference_values.xml
+++ b/app/src/main/res/values/preference_values.xml
@@ -2,8 +2,8 @@
<resources>
<!-- Strings related to Settings -->
<string name="pref_title_language_dailyreading">Language of the readings</string>
- <string name="pref_language_dailyreading_default">en</string>
- <string name="pref_language_dailyreading_default_entry">English</string>
+ <string name="pref_language_dailyreading_default" translatable="false">en</string>
+ <string name="pref_language_dailyreading_default_entry" translatable="false">English</string>
<string-array name="pref_languages_dailyreading_entries">
<item>čeština</item>
<item>dansk</item>
@@ -58,8 +58,8 @@
</string-array>
<string name="pref_title_version_bible">Bible</string>
- <string name="pref_version_bible_default">kjv</string>
- <string name="pref_version_bible_default_entry">King James Version</string>
+ <string name="pref_version_bible_default" translatable="false">kjv</string>
+ <string name="pref_version_bible_default_entry" translatable="false">King James Version</string>
<string-array name="pref_bibles_entries">
<item>Afrikaans: Ou Vertaling</item>
<item>Albanian: Albanian</item>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9e415e0..8d7d9c9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,8 +1,9 @@
<resources>
- <string name="app_name">Taizé</string>
+ <string name="app_name" translatable="false">Taizé</string>
<string name="action_settings">Settings</string>
<string name="action_share">Share</string>
+ <string name="action_today">Today</string>
- <string name="title_activity_settings">@string/action_settings</string>
+ <string name="title_activity_settings" translatable="false">@string/action_settings</string>
</resources>