aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/com/camilstaps/taize/DailyReadingFragment.java
blob: d919e4252875ef210223e4bdc5285f1cc04a4782 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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 DailyReadingFragment extends Fragment {

    private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener;
    private ViewTreeObserver.OnScrollChangedListener onScrollChangedListener;
    private View rootView;
    private Context context;

    private Date date;
    private String reading;
    private String bibleText;
    private String reference;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.pager_content_dailyreading, 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("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);

        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 "dailyreadings":
                    case "dailyreadingbible":
                        setupContent();
                        break;
                }
            }
        };
        PreferenceManager.getDefaultSharedPreferences(context).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
    }

    public String getReading() {
        return reading + " (" + reference + ")";
    }

    public String getBibleText() {
        return reference + ": " + bibleText;
    }

    protected void setupContent() {
        setDailyReading(new NullListener<DailyReading>());
        setDailyReadingBibleText(new NullListener<String>());
    }

    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.getTextWithoutReference();
                BibleText bt = data.getBibleReference();
                if (bt != null) {
                    ((TextView) rootView.findViewById(R.id.refDailyReadingBibleText)).setText(bt.toString());
                    reference = bt.toString();
                }
                listener.success(data);
            }

            @Override
            public void failure() {
                ((TextView) rootView.findViewById(R.id.textDailyReading)).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.dateDailyReading)).setText(niceDate);
    }

    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);
    }
}