package com.thomasdh.roosterpgplus.Fragments; import android.graphics.Color; import android.os.Bundle; import android.preference.PreferenceManager; 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.AdapterView; import android.widget.ArrayAdapter; import android.widget.TextView; import com.thomasdh.roosterpgplus.Adapters.AnimatedPagerAdapter; import com.thomasdh.roosterpgplus.CustomUI.DefaultSpinner; 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.ArrayList; import java.util.List; import lombok.Getter; import lombok.Setter; @FragmentTitle(title = R.string.action_bar_dropdown_klassenrooster) public class KlassenRoosterFragment extends RoosterViewFragment implements AdapterView.OnItemSelectedListener, RoosterBuilder.BuilderFunctions { private static final String CHOSEN_KLAS_KEY = "lastChosenKlas"; private static final Long MIN_REFRESH_WAIT_TIME = (long) 3600000; private DefaultSpinner klasSpinner; @Getter @Setter private String klas; @Override public String getAnalyticsTitle() { return Constants.ANALYTICS_FRAGMENT_KLASROOSTER; } //region Lifecycle @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); setRootView(inflater.inflate(R.layout.fragment_main_klas, container, false)); viewPager = (ViewPager) getRootView().findViewById(R.id.rooster_viewPager); viewPager.setAdapter(new AnimatedPagerAdapter()); swipeRefreshLayout = (SwipeRefreshLayout) getRootView().findViewById(R.id.rooster_swiperefresh); setupSwipeRefreshLayout(); klasSpinner = (DefaultSpinner) getRootView().findViewById(R.id.main_fragment_spinner_klas); RoosterInfo.getKlassen(getContext(), s -> onKlassenLoaded((ArrayList<String>) s)); return getRootView(); } //region Spinners void onKlassenLoaded(ArrayList<String> klassen) { if(klassen == null) return; ArrayAdapter<String> klasAdapter = new ArrayAdapter<>(getContext(), R.layout.spinner_title, klassen); klasAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); klasSpinner.setAdapter(klasAdapter); klasSpinner.setOnItemSelectedListener(this); String lastChosenKlas = PreferenceManager.getDefaultSharedPreferences(getContext()).getString(CHOSEN_KLAS_KEY, null); if(lastChosenKlas == null) return; setKlas(lastChosenKlas); klasSpinner.setSelection(klasAdapter.getPosition(lastChosenKlas)); } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { setKlas(((TextView) view).getText().toString()); PreferenceManager.getDefaultSharedPreferences(getContext()).edit().putString(CHOSEN_KLAS_KEY, getKlas()).commit(); loadRooster(); } @Override public void onNothingSelected(AdapterView<?> parent) { } //endregion //endregion //region Statemanagement @Override public boolean canLoadRooster() { return getKlas() != null; } @Override public List<NameValuePair> getURLQuery(List<NameValuePair> query) { query.add(new BasicNameValuePair("klas", getKlas())); return query; } @Override public long getLoad() { return RoosterInfo.getLoad("klas"+getKlas()+getWeek(), getContext()); } @Override public void setLoad() { RoosterInfo.setLoad("klas" + getKlas() + getWeek(), System.currentTimeMillis(), getContext()); } @Override public LoadType getLoadType() { long lastLoad = getLoad(); if(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); } @Override public View fillLesView(Lesuur lesuur, View lesView, LayoutInflater inflater) { if(!lesuur.klassen.contains(getKlas())) { // optioneel lesView.findViewById(R.id.optioneel_container).setBackgroundColor(Color.parseColor("#FAFAFA")); } 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); vakTextView.setText(lesuur.vak); leraarTextView.setText(StringUtils.join(lesuur.leraren, " & ")); lokaalTextView.setText(lesuur.lokaal); String times = format.format(lesuur.lesStart) + " - " + format.format(lesuur.lesEind); if(!lesuur.klassen.contains(getKlas())) { // optioneel, klassen erbij voor de duidelijkheid times = times + ", " + StringUtils.join(lesuur.klassen, " & "); } tijdenTextView.setText(times); return lesView; } //endregion }