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