summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
blob: 2862128915e49de6fb3d3a83ac5dd1fe625b1371 (plain)
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
package de.danoeh.antennapod.fragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;

import java.util.ArrayList;
import java.util.List;

import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.adapter.NavListAdapter;
import de.danoeh.antennapod.adapter.SubscriptionsAdapter;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.storage.DBReader;
import de.greenrobot.event.EventBus;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

/**
 * Fragment for displaying feed subscriptions
 */
public class SubscriptionFragment extends Fragment {

    public static final String TAG = "SubscriptionFragment";

    private GridView mSubscriptionGridLayout;
    private DBReader.NavDrawerData mDrawerData;
    private SubscriptionsAdapter mSubscriptionAdapter;
    private NavListAdapter.ItemAccess mItemAccess;

    private List<Feed> mSubscriptionList = new ArrayList<>();


    public SubscriptionFragment() {
    }


    public void setItemAccess(NavListAdapter.ItemAccess itemAccess) {
        mItemAccess = itemAccess;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_subscriptions, container, false);
        mSubscriptionGridLayout = (GridView) root.findViewById(R.id.subscriptions_grid);
        return root;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mSubscriptionAdapter = new SubscriptionsAdapter(getActivity(), mItemAccess);

        mSubscriptionGridLayout.setAdapter(mSubscriptionAdapter);

        Observable.fromCallable(() -> loadData())
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(result -> {
                    mDrawerData = result;
                    mSubscriptionList = mDrawerData.feeds;
                    mSubscriptionAdapter.setItemAccess(mItemAccess);
                    mSubscriptionAdapter.notifyDataSetChanged();
                }, error -> {
                    Log.e(TAG, Log.getStackTraceString(error));
                });


        mSubscriptionGridLayout.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                EventBus.getDefault().post(new SubscriptionEvent(mSubscriptionList.get(position)));
            }
        });

        if (getActivity() instanceof MainActivity) {
            ((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.my_subscriptions);
        }

    }

    @Override
    public void onResume() {
        super.onResume();
    }

    public class SubscriptionEvent {
        public final Feed feed;

        SubscriptionEvent(Feed f) {
            feed = f;
        }
    }


    private DBReader.NavDrawerData loadData() {
        return DBReader.getNavDrawerData();
    }
}