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 private 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() {
92 private void refreshNewsItems() {
93 newsListItems.clear();
95 CheckBox showDhbwNewsChkbok = (CheckBox) view.findViewById(R.id.showDhbwNews);
96 CheckBox showStuvNewsChkbok = (CheckBox) view.findViewById(R.id.showStuvNews);
97 CheckBox showStuvEventsChkbok = (CheckBox) view.findViewById(R.id.showStuvEvents);
99 if(showDhbwNewsChkbok.isChecked()) {
100 loadNewsSource("DHBW", true);
102 if(showStuvNewsChkbok.isChecked()) {
103 loadNewsSource("STUV", false);
105 if(showStuvEventsChkbok.isChecked()) {
106 loadEventsSource("STUV", false);
109 Collections.sort(newsListItems, new Comparator<NewsListItem>() {
111 public int compare(NewsListItem item2, NewsListItem item1) {
112 long now = (new Date()).getTime()/1000;
113 return (int) (item2.getTimeDifference(now) - item1.getTimeDifference(now));
116 listAdapter.notifyDataSetChanged();
119 private void loadNewsSource(String sourceName, boolean isDhbw) {
120 long now = (new Date()).getTime() / 1000;
122 NewsItem[] news = AppContext.getDatabaseManager().getNewsItems(sourceName, now, now - (86400 * 30 * 6)); // load 6 month
123 for(NewsItem cnews : news) {
124 NewsListItem listItem = new NewsListItem(cnews, isDhbw);
125 newsListItems.add(listItem);
129 private void loadEventsSource(String sourceName, boolean isDhbw) {
130 long now = (new Date()).getTime() / 1000;
132 CourseEvent[] events = AppContext.getDatabaseManager().getCourseCalendarTimetable(sourceName, now, 30 * 6); // load 6 month
133 for(CourseEvent event : events) {
134 NewsListItem listItem = new NewsListItem(event, isDhbw);
135 newsListItems.add(listItem);