alpha 0.0.1
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / VorlesungsplanGroups.java
1 package de.dhbwloe.campusapp.fragments;
2
3
4 import android.os.Bundle;
5 import android.support.v4.app.Fragment;
6 import android.view.LayoutInflater;
7 import android.view.View;
8 import android.view.ViewGroup;
9 import android.widget.CheckBox;
10 import android.widget.CompoundButton;
11 import android.widget.ListView;
12
13 import java.util.ArrayList;
14 import java.util.Date;
15
16 import de.dhbwloe.campusapp.CampusAppFragment;
17 import de.dhbwloe.campusapp.R;
18 import de.dhbwloe.campusapp.vorlesungen.CourseGroup;
19
20 /**
21  * A simple {@link Fragment} subclass.
22  */
23 public class VorlesungsplanGroups extends CampusAppFragment implements Vorlesungsplan.VorlesungsplanFragment {
24     private String coursename;
25     private View view;
26     private VorlesungsplanGroupsListAdapter listAdapter;
27     private ArrayList<VorlesungsplanGroupsListItem> listItems = new ArrayList<VorlesungsplanGroupsListItem>();
28     private boolean showOldCourses = false;
29
30     public VorlesungsplanGroups() {
31         // Required empty public constructor
32     }
33
34
35     @Override
36     public View onCreateView(LayoutInflater inflater, ViewGroup container,
37                              Bundle savedInstanceState) {
38         String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName");
39         if(kursTag == null || kursTag.isEmpty())
40             return null;
41         coursename = kursTag;
42
43         view = inflater.inflate(R.layout.fragment_vorlesungsplan_groups, container, false);
44
45         ListView listView = (ListView) view.findViewById(R.id.listView);
46         listAdapter = new VorlesungsplanGroupsListAdapter(view.getContext(), R.layout.fragment_vorlesungsplan_groups_course, listItems);
47         listView.setAdapter(listAdapter);
48
49         CheckBox showOldChkBox = (CheckBox) view.findViewById(R.id.showOldCourses);
50         showOldChkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
51             @Override
52             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
53                 showOldCourses = isChecked;
54                 updateCoursesList();
55             }
56         });
57
58         return view;
59     }
60
61     @Override
62     public void setActive() {
63
64     }
65
66
67     @Override
68     public void onResume() {
69         super.onResume();
70         if(coursename != null)
71             updateCoursesList();
72     }
73
74     private void updateCoursesList() {
75         Date notBefore;
76         if(showOldCourses)
77             notBefore = null;
78         else
79             notBefore = new Date();
80
81         CourseGroup[] groups = AppContext.getDatabaseManager().getCourseGroups(coursename, notBefore);
82         listItems.clear();
83         for(CourseGroup group : groups) {
84             Bundle extraData = group.getExtraData();
85             long nextKlausur = extraData.getLong("NextKlausurEvent");
86             long lastEvent = extraData.getLong("LastEvent");
87
88             // wenn nextKlausur über 5 jahrevon LastEvent entfernt liegt gibt es in diesem kurs KEINE Klausur.
89             // der fiktive Wert musste zur technischen funktionalität der Datenbankabfrage eingefügt werden.
90             if(nextKlausur - lastEvent > (86400 * 365 * 5))
91                 nextKlausur = 0;
92
93             VorlesungsplanGroupsListItem item = new VorlesungsplanGroupsListItem(
94                     group.getGroupId(),
95                     coursename,
96                     group.getGroupName(),
97                     extraData.getLong("FirstEvent"),
98                     lastEvent,
99                     extraData.getInt("EventCount"),
100                     extraData.getLong("NextEvent"),
101                     nextKlausur
102             );
103             listItems.add(item);
104         }
105         if(listAdapter != null)
106             listAdapter.notifyDataSetChanged();
107     }
108
109 }