alpha 0.0.1
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / VorlesungsplanUpcoming.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.ListView;
10
11 import java.text.SimpleDateFormat;
12 import java.util.ArrayList;
13 import java.util.Date;
14
15 import de.dhbwloe.campusapp.CampusAppContext;
16 import de.dhbwloe.campusapp.CampusAppFragment;
17 import de.dhbwloe.campusapp.R;
18 import de.dhbwloe.campusapp.vorlesungen.CourseEvent;
19
20 /**
21  * A simple {@link Fragment} subclass.
22  */
23 public class VorlesungsplanUpcoming extends CampusAppFragment implements Vorlesungsplan.VorlesungsplanFragment {
24     private View view;
25     private String courseName;
26     private ArrayList<VorlesungsplanUpcomingDayListItem> upcomingDays = new ArrayList<VorlesungsplanUpcomingDayListItem>();
27     private VorlesungsplanUpcomingDayListAdapter upcomingDaysAdapter;
28
29     public VorlesungsplanUpcoming() {
30         // Required empty public constructor
31     }
32
33
34     @Override
35     public View onCreateView(LayoutInflater inflater, ViewGroup container,
36                              Bundle savedInstanceState) {
37         view = inflater.inflate(R.layout.fragment_vorlesungsplan_upcoming, container, false);
38
39         String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName");
40         if(kursTag == null || kursTag.isEmpty()) {
41             return null;
42         }
43         courseName = kursTag;
44
45         ListView listView = (ListView) view.findViewById(R.id.listView);
46         upcomingDaysAdapter = new VorlesungsplanUpcomingDayListAdapter(view.getContext(), R.layout.fragment_vorlesungsplan_upcoming_day, upcomingDays);
47         listView.setAdapter(upcomingDaysAdapter);
48
49         return view;
50     }
51
52     @Override
53     public void setActive() {
54
55     }
56
57     @Override
58     public void onResume() {
59         super.onResume();
60         if(courseName != null)
61             refreshUpcomingEvents();
62     }
63
64     private int getDayId(long time) {
65         Date date = new Date(time * 1000);
66         return getDayId(date);
67     }
68     private int getDayId(Date date) {
69         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
70         return Integer.parseInt(dateFormat.format(date));
71     }
72
73     private void refreshUpcomingEvents() {
74         if(AppContext == null)
75             AppContext = CampusAppContext.getInstance();
76         long now = (new Date()).getTime() / 1000;
77
78         CourseEvent events[] = AppContext.getDatabaseManager().getCourseCalendarTimetable(courseName, now, 365);
79         int lastDayId = 0;
80         VorlesungsplanUpcomingDayListItem lastDayItem = null;
81         upcomingDays.clear();
82         for(int i = 0; i < events.length; i++) {
83             int dayId = getDayId(events[i].getEventTo());
84             if(dayId > lastDayId) {
85                 lastDayItem = new VorlesungsplanUpcomingDayListItem(events[i].getEventTo());
86                 upcomingDays.add(lastDayItem);
87                 lastDayId = dayId;
88             }
89             lastDayItem.addCourseEvent(events[i]);
90         }
91         if(upcomingDaysAdapter != null) {
92             upcomingDaysAdapter.notifyDataSetChanged();
93         }
94     }
95
96 }