+ @Override
+ public void onResume() {
+ super.onResume();
+ refreshNewsItems();
+ }
+
+ private void refreshNewsItems() {
+ newsListItems.clear();
+
+ CheckBox showDhbwNewsChkbok = (CheckBox) view.findViewById(R.id.showDhbwNews);
+ CheckBox showStuvNewsChkbok = (CheckBox) view.findViewById(R.id.showStuvNews);
+ CheckBox showStuvEventsChkbok = (CheckBox) view.findViewById(R.id.showStuvEvents);
+
+ if(showDhbwNewsChkbok.isChecked()) {
+ loadNewsSource("DHBW", true);
+ }
+ if(showStuvNewsChkbok.isChecked()) {
+ loadNewsSource("STUV", false);
+ }
+ if(showStuvEventsChkbok.isChecked()) {
+ loadEventsSource("STUV", false);
+ }
+
+ Collections.sort(newsListItems, new Comparator<NewsListItem>() {
+ @Override
+ public int compare(NewsListItem item2, NewsListItem item1) {
+ long now = (new Date()).getTime()/1000;
+ return (int) (item2.getTimeDifference(now) - item1.getTimeDifference(now));
+ }
+ });
+ listAdapter.notifyDataSetChanged();
+ }
+
+ private void loadNewsSource(String sourceName, boolean isDhbw) {
+ long now = (new Date()).getTime() / 1000;
+
+ NewsItem[] news = AppContext.getDatabaseManager().getNewsItems(sourceName, now, now - (86400 * 30 * 6)); // load 6 month
+ for(NewsItem cnews : news) {
+ NewsListItem listItem = new NewsListItem(cnews, isDhbw);
+ newsListItems.add(listItem);
+ }
+ }
+
+ private void loadEventsSource(String sourceName, boolean isDhbw) {
+ long now = (new Date()).getTime() / 1000;
+
+ CourseEvent[] events = AppContext.getDatabaseManager().getCourseCalendarTimetable(sourceName, now, 30 * 6); // load 6 month
+ for(CourseEvent event : events) {
+ NewsListItem listItem = new NewsListItem(event, isDhbw);
+ newsListItems.add(listItem);
+ }
+ }