1 package de.dhbwloe.campusapp.fragments;
4 import android.os.Bundle;
5 import android.support.v4.app.Fragment;
6 import android.support.v4.app.FragmentActivity;
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;
15 import java.util.Collections;
16 import java.util.Comparator;
17 import java.util.Date;
18 import java.util.ArrayList;
20 import de.dhbwloe.campusapp.CampusAppFragment;
21 import de.dhbwloe.campusapp.R;
22 import de.dhbwloe.campusapp.news.NewsItem;
23 import de.dhbwloe.campusapp.search.SearchIndices;
24 import de.dhbwloe.campusapp.vorlesungen.CourseEvent;
27 * A simple {@link Fragment} subclass.
29 public class News extends CampusAppFragment {
30 /* implement this for search results ;) */
31 public static SearchIndices[] GetSearchIndices() {
32 return new SearchIndices[] {
33 new SearchIndices("News", true) {{
36 setTitle(R.string.search_news_title);
37 setDescription(R.string.search_news_description);
38 addKeyWord(R.string.search_news_keywords);
44 private NewsListAdapter listAdapter;
45 protected ArrayList<NewsListItem> newsListItems = new ArrayList<NewsListItem>();
48 public View onCreateView(LayoutInflater inflater, ViewGroup container,
49 Bundle savedInstanceState) {
50 view = inflater.inflate(R.layout.fragment_news, container, false);
51 AppContext.setTitle(AppContext.getResString(R.string.news_title));
53 ListView newsItemsList = (ListView) view.findViewById(R.id.newsListView);
54 listAdapter = new NewsListAdapter(view.getContext(), R.layout.fragment_news_item, newsListItems);
55 newsItemsList.setAdapter(listAdapter);
57 CompoundButton.OnCheckedChangeListener changeListener = new CompoundButton.OnCheckedChangeListener() {
59 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
63 ((CheckBox) view.findViewById(R.id.showDhbwNews)).setOnCheckedChangeListener(changeListener);
64 ((CheckBox) view.findViewById(R.id.showStuvNews)).setOnCheckedChangeListener(changeListener);
65 ((CheckBox) view.findViewById(R.id.showStuvEvents)).setOnCheckedChangeListener(changeListener);
67 newsItemsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
69 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
70 NewsListItem item = newsListItems.get(position);
74 String link = item.getLink();
76 Bundle args = new Bundle();
77 args.putString("url", link);
78 AppContext.getNavigationManager().navigatePage("WebBrowser", args, false);
87 public void onResume() {
93 protected void refreshNewsItems() {
94 newsListItems.clear();
96 CheckBox showDhbwNewsChkbok = (CheckBox) view.findViewById(R.id.showDhbwNews);
97 CheckBox showStuvNewsChkbok = (CheckBox) view.findViewById(R.id.showStuvNews);
98 CheckBox showStuvEventsChkbok = (CheckBox) view.findViewById(R.id.showStuvEvents);
100 if(showDhbwNewsChkbok.isChecked()) {
101 loadNewsSource("DHBW", true);
103 if(showStuvNewsChkbok.isChecked()) {
104 loadNewsSource("STUV", false);
106 if(showStuvEventsChkbok.isChecked()) {
107 loadEventsSource("STUV", false);
110 Collections.sort(newsListItems, new Comparator<NewsListItem>() {
112 public int compare(NewsListItem item2, NewsListItem item1) {
113 long now = (new Date()).getTime() / 1000;
114 return (int) (item2.getTimeDifference(now) - item1.getTimeDifference(now));
117 if(listAdapter != null)
118 listAdapter.notifyDataSetChanged();
121 protected void loadNewsSource(String sourceName, boolean isDhbw) {
122 long now = (new Date()).getTime() / 1000;
124 NewsItem[] news = AppContext.getDatabaseManager().getNewsItems(sourceName, now, now - (86400 * 30 * 6)); // load 6 month
125 for(NewsItem cnews : news) {
126 NewsListItem listItem = new NewsListItem(cnews, isDhbw);
127 newsListItems.add(listItem);
131 protected void loadEventsSource(String sourceName, boolean isDhbw) {
132 long now = (new Date()).getTime() / 1000;
134 CourseEvent[] events = AppContext.getDatabaseManager().getCourseCalendarTimetable(sourceName, now, 30 * 6); // load 6 month
135 for(CourseEvent event : events) {
136 NewsListItem listItem = new NewsListItem(event, isDhbw);
137 newsListItems.add(listItem);