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.TextView; import com.thomasdh.roosterpgplus.Adapters.AnimatedPagerAdapter; import com.thomasdh.roosterpgplus.Data.Account; import com.thomasdh.roosterpgplus.Data.RoosterBuilder; import com.thomasdh.roosterpgplus.Data.RoosterInfo; import com.thomasdh.roosterpgplus.Helpers.Apache.BasicNameValuePair; import com.thomasdh.roosterpgplus.Helpers.Apache.NameValuePair; import com.thomasdh.roosterpgplus.Helpers.FragmentTitle; import com.thomasdh.roosterpgplus.Models.Lesuur; import com.thomasdh.roosterpgplus.R; import com.thomasdh.roosterpgplus.Settings.Constants; import org.apache.commons.lang3.StringUtils; import java.text.SimpleDateFormat; import java.util.List; @FragmentTitle(title = R.string.action_bar_dropdown_persoonlijk_rooster) public class PersoonlijkRoosterFragment extends RoosterViewFragment implements RoosterBuilder.BuilderFunctions { private static final String LOADS_NAME = "personal"; private static final Long MIN_REFRESH_WAIT_TIME = (long) 2700000; @Override public String getAnalyticsTitle() { return Constants.ANALYTICS_FRAGMENT_PERSROOSTER; } //region Lifecycle @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); Account.initialize(getContext()); 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()); if(!Account.isSet()) { Account.getInstance(getContext()).login(getActivity(), result -> loadRooster(), result -> swipeRefreshLayout.setRefreshing(false)); } else { loadRooster(); } return getRootView(); } //endregion //region Statemanagement @Override public boolean canLoadRooster() { return Account.isSet() && getViewPager() != null; } @Override public List<NameValuePair> getURLQuery(List<NameValuePair> query) { query.add(new BasicNameValuePair("key", Account.getApiKey())); return query; } @Override public void setLoad() { RoosterInfo.setLoad(LOADS_NAME+getWeek(), System.currentTimeMillis(), getContext()); } @Override public long getLoad() { return RoosterInfo.getLoad(LOADS_NAME+getWeek(), getContext()); } @Override public LoadType getLoadType() { Long lastLoad = RoosterInfo.getLoad(LOADS_NAME+getWeek(), getContext()); if(lastLoad == null || lastLoad == 0) { return LoadType.ONLINE; } else if(System.currentTimeMillis() > lastLoad + MIN_REFRESH_WAIT_TIME) { return LoadType.NEWONLINE; } else { return LoadType.OFFLINE; } } //endregion //region Rooster @Override public RoosterBuilder buildRooster(int urenCount) { return super.buildRooster(urenCount) .setBuilderFunctions(this) .setShowVervangenUren(false); } @Override public View fillLesView(Lesuur lesuur, View lesView, LayoutInflater inflater) { SimpleDateFormat format = new SimpleDateFormat("HH:mm"); TextView vakTextView = (TextView) lesView.findViewById(R.id.rooster_vak); TextView leraarTextView = (TextView) lesView.findViewById(R.id.rooster_leraar); TextView lokaalTextView = (TextView) lesView.findViewById(R.id.rooster_lokaal); TextView tijdenTextView = (TextView) lesView.findViewById(R.id.rooster_tijden); if(Account.getUserType() == Account.UserType.LEERLING) { // Leerlingrooster vakTextView.setText(lesuur.vak); leraarTextView.setText(StringUtils.join(lesuur.leraren, " & ")); lokaalTextView.setText(lesuur.lokaal); tijdenTextView.setText(format.format(lesuur.lesStart) + " - " + format.format(lesuur.lesEind)); } else { // Leraarrooster vakTextView.setText(lesuur.vak); leraarTextView.setText(StringUtils.join(lesuur.klassen, " & ")); lokaalTextView.setText(lesuur.lokaal); tijdenTextView.setText(format.format(lesuur.lesStart) + " - " + format.format(lesuur.lesEind)); } return lesView; } //endregion }