package com.thomasdh.roosterpgplus.Fragments; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ScrollView; import android.widget.TextView; import com.thomasdh.roosterpgplus.Adapters.AnimatedPagerAdapter; import com.thomasdh.roosterpgplus.Data.WebDownloader; import com.thomasdh.roosterpgplus.Helpers.Apache.NameValuePair; import com.thomasdh.roosterpgplus.Helpers.FragmentTitle; import com.thomasdh.roosterpgplus.Models.PGTVPage; import com.thomasdh.roosterpgplus.R; import com.thomasdh.roosterpgplus.Settings.Constants; import java.util.ArrayList; import java.util.List; import lombok.Getter; import lombok.Setter; @FragmentTitle(title = R.string.PGTV_Title) public class PGTVRoosterFragment extends RoosterViewFragment { public enum PGTVType { ROOSTER("rooster", "Rooster"), MEDEDELINGEN("nieuws", "Nieuws"); private String urlQuery; private String desc; PGTVType(String urlQuery, String desc) { this.urlQuery = urlQuery; this.desc = desc; } @Override public String toString() { return urlQuery; } public String toDesc() { return desc; } } @Getter @Setter private PGTVType type; @Override public String getAnalyticsTitle() { switch(type) { case ROOSTER: return Constants.ANALYTICS_FRAGMENT_PGTVROOSTER; default: return Constants.ANALYTICS_FRAGMENT_PGTVALGEM; } } @Override public void onCreate(Bundle savedInstanceState) { if(savedInstanceState != null) { type = (PGTVType) savedInstanceState.getSerializable("TYPE"); } else if(type == null) { type = PGTVType.ROOSTER; } super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); setRootView(inflater.inflate(R.layout.fragment_main, container, false)); swipeRefreshLayout = (SwipeRefreshLayout) getRootView().findViewById(R.id.rooster_swiperefresh); setupSwipeRefreshLayout(); viewPager = (ViewPager) getRootView().findViewById(R.id.rooster_viewPager); viewPager.setAdapter(new AnimatedPagerAdapter()); loadRooster(); return getRootView(); } @Override public void onSaveInstanceState(Bundle outState) { outState.putSerializable("TYPE", type); super.onSaveInstanceState(outState); } @Override protected boolean canLoadRooster() { return false; } @Override public List<NameValuePair> getURLQuery(List<NameValuePair> query) { return query; } @Override public LoadType getLoadType() { return null; } @Override public long getLoad() { return 0; } @Override public void setLoad() {} @Override public void loadRooster(boolean reload) { // PGTV laden if(type == null) return; if(swipeRefreshLayout != null) swipeRefreshLayout.setRefreshing(true); WebDownloader.getPGTVRooster(type.toString(), result -> { swipeRefreshLayout.setRefreshing(false); ArrayList<PGTVPage> data = (ArrayList<PGTVPage>) result; new PGTVBuilder().build(data, this); }, e -> { swipeRefreshLayout.setRefreshing(false); new PGTVBuilder().build(null, this); }, getActivity()); } private class PGTVBuilder { public void build(ArrayList<PGTVPage> data, RoosterViewFragment fragment) { if(getViewPager() == null) return; if(getViewPager().getAdapter() == null) getViewPager().setAdapter(new AnimatedPagerAdapter()); getViewPager().addOnPageChangeListener(fragment); if(data == null || data.isEmpty()) { View noContentView = LayoutInflater.from(getActivity()).inflate(R.layout.pgtv_null, null); ((AnimatedPagerAdapter) getViewPager().getAdapter()).setView(noContentView, 0, getActivity()); getViewPager().getAdapter().notifyDataSetChanged(); return; } int i = -1; for(PGTVPage page : data) { i++; View dagView = LayoutInflater.from(getActivity()).inflate(R.layout.pgtv_dag, null); /* Titel */ TextView title = (TextView) dagView.findViewById(R.id.pgtv_dag_titel); title.setText(page.title); TextView desc = (TextView) dagView.findViewById(R.id.pgtv_dag_content); desc.setText(page.desc); ScrollView scrollView = (ScrollView) dagView.findViewById(R.id.scrollview); final int finalI = i; scrollView.getViewTreeObserver().addOnScrollChangedListener(() -> { int scrollY = scrollView.getScrollY(); fragment.OnScroll(scrollY, finalI); }); ((AnimatedPagerAdapter) getViewPager().getAdapter()).setView(dagView, i, getActivity()); } getViewPager().getAdapter().notifyDataSetChanged(); } } }