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.view.LayoutInflater;
11 import android.view.View;
12 import android.view.ViewGroup;
13 import android.widget.LinearLayout;
14 import android.widget.RelativeLayout;
15 import android.widget.TextView;
17 import java.text.SimpleDateFormat;
18 import java.util.ArrayList;
19 import java.util.Calendar;
20 import java.util.Date;
21 import java.util.List;
23 import de.dhbwloe.campusapp.CampusAppContext;
24 import de.dhbwloe.campusapp.CampusAppFragment;
25 import de.dhbwloe.campusapp.R;
26 import de.dhbwloe.campusapp.search.SearchIndices;
27 import de.dhbwloe.campusapp.vorlesungen.CourseEvent;
28 import de.dhbwloe.campusapp.vorlesungen.CourseGroup;
31 * A simple {@link Fragment} subclass.
33 public class Vorlesungsplan extends CampusAppFragment {
34 public interface VorlesungsplanFragment {
38 /* implement this for search results ;) */
39 public static SearchIndices[] GetSearchIndices() {
40 return new SearchIndices[] {
41 new SearchIndices("Vorlesungsplan", true) {{
43 setTarget("#Vorlesungsplan");
44 setTitle(R.string.search_vorlesungsplan_title);
45 setDescription(R.string.search_vorlesungsplan_description);
46 addKeyWord(R.string.search_vorlesungsplan_keywords);
48 new SearchIndices("VorlesungsplanExams", true) {{
50 setTarget("#Vorlesungsplan#view=exams");
51 setTitle(R.string.search_vorlesungsplan_klausur_title);
52 setDescription(R.string.search_vorlesungsplan_klausur_description);
53 addKeyWord(R.string.search_vorlesungsplan_klausur_keywords);
59 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
60 Bundle arguments = getArguments();
62 boolean showExamsPage = false;
63 if(arguments != null) {
64 String groupid = arguments.getString("groupid");
66 showGroupId = Integer.parseInt(groupid);
67 String view = arguments.getString("view");
68 if(view != null && view.equalsIgnoreCase("exams"))
74 view = inflater.inflate(R.layout.fragment_vorlesungsplan_group, container, false);
76 CourseGroup group = AppContext.getDatabaseManager().getCourseGroup(showGroupId);
78 AppContext.setTitle(AppContext.getResString(R.string.vorlesungsplan_group_title, group.getGroupName()));
80 showGroupEvents(view, group);
85 view = inflater.inflate(R.layout.fragment_vorlesungsplan, container, false);
86 AppContext.setTitle(AppContext.getResString(R.string.vorlesungsplan_title));
88 ViewPager pager = (ViewPager) view.findViewById(R.id.viewpager);
89 setupViewPager(pager);
92 pager.setCurrentItem(2);
94 TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs);
95 tabLayout.setupWithViewPager(pager);
101 private void setupViewPager(ViewPager viewPager) {
102 final ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());
104 adapter.addFragment(new VorlesungsplanUpcoming(), AppContext.getResString(R.string.vorlesungsplan_upcoming));
105 adapter.addFragment(new VorlesungsplanGroups(), AppContext.getResString(R.string.vorlesungsplan_groups));
106 adapter.addFragment(new VorlesungsplanExams(), AppContext.getResString(R.string.vorlesungsplan_exams));
108 viewPager.setAdapter(adapter);
109 viewPager.setCurrentItem(0);
111 VorlesungsplanFragment fragment = (VorlesungsplanFragment)adapter.getItem(0);
112 fragment.setActive();
115 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
117 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
122 public void onPageSelected(int position) {
123 VorlesungsplanFragment fragment = (VorlesungsplanFragment)adapter.getItem(position);
124 fragment.setActive();
128 public void onPageScrollStateChanged(int state) {
134 private void showGroupEvents(View view, CourseGroup group) {
135 CourseEvent events[] = AppContext.getDatabaseManager().getCourseEventsByGroup(group);
137 CourseEvent nextEvent = null;
138 CourseEvent lastEvent = null;
139 CourseEvent examEvent = null;
140 long now = (new Date()).getTime()/1000;
141 SimpleDateFormat dateFormat = new SimpleDateFormat(AppContext.getResString(R.string.timeformat_vorlesungsplan_fulldate));
143 LinearLayout container = (LinearLayout) view.findViewById(R.id.allEventsList);
144 TextView groupName = (TextView) view.findViewById(R.id.courseTitle);
145 TextView nextEventView = (TextView) view.findViewById(R.id.nextEvent);
146 TextView lastEventView = (TextView) view.findViewById(R.id.lastEvent);
147 TextView examEventView = (TextView) view.findViewById(R.id.klausurEvent);
149 groupName.setText(group.getGroupName());
150 container.removeAllViews();
152 for(CourseEvent event : events) {
153 if(event.getEventFrom() >= now && nextEvent == null)
155 if(event.getCourseType() == CourseEvent.CourseType.COURSETYPE_KLAUSUR)
160 LinearLayout eventEntry = new LinearLayout(view.getContext());
161 eventEntry.setLayoutParams(new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
162 RelativeLayout.LayoutParams.WRAP_CONTENT));
163 eventEntry.setOrientation(LinearLayout.HORIZONTAL);
165 TextView dotView = new TextView(view.getContext());
166 dotView.setText(AppContext.getResString(R.string.listDot));
167 eventEntry.addView(dotView);
169 if(event.getEventFrom() < now)
170 dotView.setTextColor(AppContext.getMainActivity().getResources().getColor(R.color.color_dhbw_lightgray));
172 dotView.setTextColor(AppContext.getMainActivity().getResources().getColor(R.color.color_dhbw_darkred));
174 TextView nameView = new TextView(view.getContext());
175 LinearLayout.LayoutParams nameViewLayoutParams = new LinearLayout.LayoutParams(
176 LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
177 nameViewLayoutParams.setMargins(16,0,0,0);
178 nameView.setLayoutParams(nameViewLayoutParams);
179 nameView.setText(dateFormat.format(new Date(event.getEventFrom() * 1000)));
180 eventEntry.addView(nameView);
182 TextView locationView = new TextView(view.getContext());
183 LinearLayout.LayoutParams locationViewLayoutParams = new LinearLayout.LayoutParams(
184 LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
185 locationViewLayoutParams.setMargins(32,0,0,0);
186 locationView.setLayoutParams(locationViewLayoutParams);
187 locationView.setText(event.getEventLocation());
188 eventEntry.addView(locationView);
190 container.addView(eventEntry);
193 if(nextEvent != null)
194 nextEventView.setText(dateFormat.format(new Date(nextEvent.getEventFrom() * 1000)));
196 nextEventView.setText(CampusAppContext.getInstance().getResString(R.string.vorlesungsplan_groups_nonext));
198 if(lastEvent != null)
199 lastEventView.setText(dateFormat.format(new Date(lastEvent.getEventFrom() * 1000)));
201 lastEventView.setText(CampusAppContext.getInstance().getResString(R.string.vorlesungsplan_groups_nonext));
203 if(examEvent != null)
204 examEventView.setText(dateFormat.format(new Date(examEvent.getEventFrom() * 1000)));
206 examEventView.setText(CampusAppContext.getInstance().getResString(R.string.vorlesungsplan_groups_noklausur));
209 class ViewPagerAdapter extends FragmentPagerAdapter {
210 private final List<Fragment> mFragmentList = new ArrayList<>();
211 private final List<String> mFragmentTitleList = new ArrayList<>();
213 public ViewPagerAdapter(FragmentManager manager) {
218 public Fragment getItem(int position) {
219 return mFragmentList.get(position);
223 public int getCount() {
224 return mFragmentList.size();
227 public void addFragment(Fragment fragment, String title) {
228 mFragmentList.add(fragment);
229 mFragmentTitleList.add(title);
233 public CharSequence getPageTitle(int position) {
234 return mFragmentTitleList.get(position);