1 package de.dhbwloe.campusapp.fragments;
4 import android.os.Build;
5 import android.os.Bundle;
6 import android.support.v4.app.Fragment;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.ViewGroup;
10 import android.widget.AdapterView;
11 import android.widget.RelativeLayout;
12 import android.widget.TextView;
14 import java.text.SimpleDateFormat;
15 import java.util.ArrayList;
16 import java.util.Calendar;
17 import java.util.Date;
18 import java.util.List;
20 import de.dhbwloe.campusapp.CampusAppContext;
21 import de.dhbwloe.campusapp.CampusAppFragment;
22 import de.dhbwloe.campusapp.R;
23 import de.dhbwloe.campusapp.Tools;
24 import de.dhbwloe.campusapp.vorlesungen.CourseEvent;
27 * A simple {@link Fragment} subclass.
29 public class DashboardVorlesungsplan extends CampusAppFragment {
30 private static int lastGeneratedViewId = 572000;
32 private List<CourseEvent> events1 = new ArrayList<CourseEvent>();
33 private List<CourseEvent> events2 = new ArrayList<CourseEvent>();
34 private String courseName;
36 public DashboardVorlesungsplan() {
37 // Required empty public constructor
42 public View onCreateView(LayoutInflater inflater, ViewGroup container,
43 Bundle savedInstanceState) {
44 view = inflater.inflate(R.layout.fragment_dashboard_timetable, container, false);
45 String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName");
46 if(kursTag == null || kursTag.isEmpty()) {
54 public void onResume() {
56 if(courseName != null)
60 private int getDayId(long time) {
61 Date date = new Date(time * 1000);
62 return getDayId(date);
64 private int getDayId(Date date) {
65 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
66 return Integer.parseInt(dateFormat.format(date));
69 private void loadViewData() {
70 if(AppContext == null)
71 AppContext = CampusAppContext.getInstance();
72 long now = (new Date()).getTime() / 1000;
73 long tomorrow = now + 86400;
75 CourseEvent events[] = AppContext.getDatabaseManager().getCourseCalendarTimetable(courseName, now, 2);
78 if(events.length > 0) {
79 int firstDayId = getDayId(events[0].getEventTo());
80 for (int i = 0; i < events.length; i++) {
81 if (i == 0 || getDayId(events[i].getEventTo()) == firstDayId)
82 events1.add(events[i]);
84 events2.add(events[i]);
88 RelativeLayout container;
90 container = (RelativeLayout)view.findViewById(R.id.date1Overview);
91 buildDayView(container, events1);
92 container.setOnClickListener(new View.OnClickListener() {
94 public void onClick(View v) {
95 Bundle args = new Bundle();
96 if (events1.size() > 0) {
97 long date = events1.get(0).getEventTo();
98 args.putLong("date", date);
100 AppContext.getNavigationManager().navigatePage("Vorlesungsplan", args);
104 container = (RelativeLayout)view.findViewById(R.id.date2Overview);
105 buildDayView(container, events2);
106 container.setOnClickListener(new View.OnClickListener() {
108 public void onClick(View v) {
109 Bundle args = new Bundle();
110 if (events1.size() > 0) {
111 long date = events2.get(0).getEventTo();
112 args.putLong("date", date);
114 AppContext.getNavigationManager().navigatePage("Vorlesungsplan", args);
118 int todayDayId = getDayId(now);
119 int tomorrowDayId = getDayId(tomorrow);
122 TextView date1 = (TextView) view.findViewById(R.id.dateView1);
123 if(events1.size() > 0) {
124 date = new Date(events1.get(0).getEventTo() * 1000);
125 date1.setText(getDateText(date, todayDayId, tomorrowDayId));
129 TextView date2 = (TextView) view.findViewById(R.id.dateView2);
130 if(events2.size() > 0) {
131 date = new Date(events2.get(0).getEventTo() * 1000);
132 date2.setText(getDateText(date, todayDayId, tomorrowDayId));
137 private void buildDayView(RelativeLayout container, List<CourseEvent> events) {
138 container.removeAllViews();
141 TextView leftCol, rightCol = null;
142 RelativeLayout.LayoutParams params;
143 SimpleDateFormat dateFormat = new SimpleDateFormat(AppContext.getResString(R.string.timeformat_dashboard_vorlesungsplan_time));
144 int firstLeftColId = 0;
146 if(events.size() > 0) {
147 leftCol = new TextView(AppContext.getMainActivity());
148 params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
149 RelativeLayout.LayoutParams.WRAP_CONTENT);
150 params.setMargins(8, 4, 0, 0);
151 leftCol.setLayoutParams(params);
152 leftCol.setId(generateViewId());
153 firstLeftColId = leftCol.getId();
154 container.addView(leftCol);
159 for(int i = 0; i < events.size(); i++) {
160 CourseEvent event = events.get(i);
161 date = new Date(event.getEventFrom()*1000);
162 leftCol.setText(dateFormat.format(date));
164 rightCol = new TextView(AppContext.getMainActivity());
165 rightCol.setId(generateViewId());
166 params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
167 RelativeLayout.LayoutParams.WRAP_CONTENT);
168 params.setMargins(12, 12, 0, 0);
170 android:layout_alignTop="@+id/date1time2"
171 android:layout_toRightOf="@+id/date1time1"
172 android:layout_toEndOf="@+id/date1time1"
174 params.addRule(RelativeLayout.ALIGN_TOP, leftCol.getId());
175 params.addRule(RelativeLayout.RIGHT_OF, firstLeftColId);
176 params.addRule(RelativeLayout.END_OF, firstLeftColId);
177 rightCol.setLayoutParams(params);
179 String coursetitle = "";
180 if(event.getCourseType() == CourseEvent.CourseType.COURSETYPE_KLAUSUR)
181 coursetitle += AppContext.getResString(R.string.dashboard_calendar_klausur);
182 coursetitle += event.getEventShortTitle();
183 rightCol.setText(coursetitle);
186 leftCol = new TextView(AppContext.getMainActivity());
187 leftCol.setId(generateViewId());
188 params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
189 RelativeLayout.LayoutParams.WRAP_CONTENT);
190 params.setMargins(8, -8, 0, 0);
191 params.addRule(RelativeLayout.BELOW, rightCol.getId());
192 leftCol.setLayoutParams(params);
194 date = new Date(event.getEventTo()*1000);
195 leftCol.setText(dateFormat.format(date));
198 container.addView(rightCol);
199 container.addView(leftCol);
203 private String getDateText(Date eventDate, int todayDayId, int tomorrowDayId) {
204 int date1DayId = getDayId(eventDate);
206 if(date1DayId == todayDayId)
207 datetext = AppContext.getResString(R.string.dashboard_calendar_today);
208 else if(date1DayId == tomorrowDayId)
209 datetext = AppContext.getResString(R.string.dashboard_calendar_tomorrow);
211 String dayStr = Tools.getWeekdayString(eventDate);
212 SimpleDateFormat dateFormat = new SimpleDateFormat(AppContext.getResString(R.string.timeformat_dashboard_vorlesungsplan_date));
214 datetext = dayStr + ", " + dateFormat.format(eventDate);
219 private int generateViewId() {
220 if (Build.VERSION.SDK_INT >= 17)
221 return View.generateViewId();
223 return lastGeneratedViewId++;