1 package de.dhbwloe.campusapp.fragments;
4 import android.os.Bundle;
5 import android.support.design.widget.TabLayout;
6 import android.support.v4.app.Fragment;
7 import android.support.v4.app.FragmentManager;
8 import android.support.v4.app.FragmentPagerAdapter;
9 import android.support.v4.view.ViewPager;
10 import android.support.v7.app.AppCompatActivity;
11 import android.support.v7.widget.Toolbar;
12 import android.view.LayoutInflater;
13 import android.view.View;
14 import android.view.ViewGroup;
16 import java.text.SimpleDateFormat;
17 import java.util.ArrayList;
18 import java.util.Date;
19 import java.util.List;
21 import de.dhbwloe.campusapp.CampusAppFragment;
22 import de.dhbwloe.campusapp.R;
23 import de.dhbwloe.campusapp.search.SearchIndices;
26 * A simple {@link Fragment} subclass.
28 public class Mensa extends CampusAppFragment {
29 /* implement this for search results ;) */
30 public static SearchIndices[] GetSearchIndices() {
31 return new SearchIndices[] {
32 new SearchIndices("Mensa", true) {{
36 setDescription("Aktuelle Mensapläne");
37 addKeyWord("mensa, kantine, essen, mittagessen, mensaplan, plan, hunger, mittag");
42 private TabLayout tabLayout;
43 private ViewPager viewPager;
44 private boolean viewDayplan;
45 private long viewDate;
48 public View onCreateView(LayoutInflater inflater, ViewGroup container,
49 Bundle savedInstanceState) {
50 View view = inflater.inflate(R.layout.fragment_mensa, container, false);
51 boolean viewmodeSet = false;
52 Bundle arguments = getArguments();
53 viewDate = (new Date()).getTime()/1000;
54 if(arguments != null) {
55 String showdate = arguments.getString("showdate");
57 if(showdate != null && !showdate.isEmpty() && (date = Long.parseLong(showdate)) > 0) {
63 String viewmode = arguments.getString("viewmode");
64 if(viewmode != null && !viewmode.isEmpty()) {
65 if(viewmode.equalsIgnoreCase("day"))
74 String lastViewmode = AppContext.getDatabaseManager().getRuntimeCache("MensaplanViewMode");
75 if(lastViewmode != null && !lastViewmode.isEmpty()) {
76 if(lastViewmode.equalsIgnoreCase("day"))
86 AppContext.setTitle("Mensa "+(viewDayplan ? "Tagesplan" : "Wochenplan"));
89 toolbar = (Toolbar) view.findViewById(R.id.toolbar);
90 ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
92 ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
95 viewPager = (ViewPager) view.findViewById(R.id.viewpager);
96 setupViewPager(viewPager);
98 tabLayout = (TabLayout) view.findViewById(R.id.tabs);
99 tabLayout.setupWithViewPager(viewPager);
104 private void setupViewPager(ViewPager viewPager) {
105 final ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());
108 long now = (new Date()).getTime()/1000;
110 showDates = AppContext.getDatabaseManager().getDaysWithPlanData(now - (30 * 86400), now + (30 * 86400));
112 showDates = AppContext.getDatabaseManager().getDaysWithPlanData(now - (365 * 86400), now + (30 * 86400));
115 long activeItemDiff = -1;
116 Bundle args = getArguments();
117 for(int i = 0; i < showDates.length; i++) {
118 long date = showDates[i];
119 Bundle bundle = new Bundle();
123 SimpleDateFormat sdf;
125 sdf = new SimpleDateFormat("dd.MM.");
127 sdf = new SimpleDateFormat("WW");
130 long diff = Math.abs(viewDate - date);
131 if(activeItem == -1 || diff < activeItemDiff) {
133 activeItemDiff = diff;
137 title = sdf.format(new Date(date * 1000));
138 bundle.putLong("date", date);
139 adapter.addFragment(bundle, title);
141 viewPager.setAdapter(adapter);
142 viewPager.setCurrentItem(activeItem);
144 MensaTagesplan tagesplan = (MensaTagesplan)adapter.getItem(activeItem);
145 tagesplan.onSetActive();
148 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
150 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
155 public void onPageSelected(int position) {
157 MensaTagesplan tagesplan = (MensaTagesplan)adapter.getItem(position);
158 tagesplan.onSetActive();
163 public void onPageScrollStateChanged(int state) {
170 class ViewPagerAdapter extends FragmentPagerAdapter {
171 private final List<Fragment> mFragmentList = new ArrayList<>();
172 private final List<Bundle> mFragmentDataList = new ArrayList<>();
173 private final List<String> mFragmentTitleList = new ArrayList<>();
175 public ViewPagerAdapter(FragmentManager manager) {
180 public Fragment getItem(int position) {
182 while(mFragmentList.size() <= position) {
183 mFragmentList.add(null);
185 if(mFragmentList.get(position) != null)
186 return mFragmentList.get(position);
188 fragment = new MensaTagesplan();
190 fragment = new MensaWochenplan();
191 fragment.setArguments(mFragmentDataList.get(position));
192 mFragmentList.set(position, fragment);
197 public int getCount() {
198 return mFragmentDataList.size();
201 public void addFragment(Bundle fragmentdata, String title) {
202 fragmentdata.putBoolean("parentIsMensaFragment", true);
203 mFragmentDataList.add(fragmentdata);
204 mFragmentTitleList.add(title);
208 public CharSequence getPageTitle(int position) {
209 return mFragmentTitleList.get(position);