WifiSettings überarbeitet, kleine fixes
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / News.java
1 package de.dhbwloe.campusapp.fragments;
2
3
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;
14
15 import java.util.Collections;
16 import java.util.Comparator;
17 import java.util.Date;
18 import java.util.ArrayList;
19
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;
25
26 /**
27  * A simple {@link Fragment} subclass.
28  */
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) {{
34                     setUpdateTime(1);
35                     setTarget("#News");
36                     setTitle(R.string.search_news_title);
37                     setDescription(R.string.search_news_description);
38                     addKeyWord(R.string.search_news_keywords);
39                 }},
40         };
41     }
42
43     private View view;
44     private NewsListAdapter listAdapter;
45     protected ArrayList<NewsListItem> newsListItems = new ArrayList<NewsListItem>();
46
47     @Override
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));
52
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);
56
57         CompoundButton.OnCheckedChangeListener changeListener = new CompoundButton.OnCheckedChangeListener() {
58             @Override
59             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
60                 refreshNewsItems();
61             }
62         };
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);
66
67         newsItemsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
68             @Override
69             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
70                 NewsListItem item = newsListItems.get(position);
71                 if (item == null)
72                     return;
73
74                 String link = item.getLink();
75                 if(link != null) {
76                     Bundle args = new Bundle();
77                     args.putString("url", link);
78                     AppContext.getNavigationManager().navigatePage("WebBrowser", args, false);
79                 }
80             }
81         });
82
83         return view;
84     }
85
86     @Override
87     public void onResume() {
88         super.onResume();
89         if(view != null)
90             refreshNewsItems();
91     }
92
93     protected void refreshNewsItems() {
94         newsListItems.clear();
95
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);
99
100         if(showDhbwNewsChkbok.isChecked()) {
101             loadNewsSource("DHBW", true);
102         }
103         if(showStuvNewsChkbok.isChecked()) {
104             loadNewsSource("STUV", false);
105         }
106         if(showStuvEventsChkbok.isChecked()) {
107             loadEventsSource("STUV", false);
108         }
109
110         Collections.sort(newsListItems, new Comparator<NewsListItem>() {
111             @Override
112             public int compare(NewsListItem item2, NewsListItem item1) {
113                 long now = (new Date()).getTime() / 1000;
114                 return (int) (item2.getTimeDifference(now) - item1.getTimeDifference(now));
115             }
116         });
117         if(listAdapter != null)
118             listAdapter.notifyDataSetChanged();
119     }
120
121     protected void loadNewsSource(String sourceName, boolean isDhbw) {
122         long now = (new Date()).getTime() / 1000;
123
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);
128         }
129     }
130
131     protected void loadEventsSource(String sourceName, boolean isDhbw) {
132         long now = (new Date()).getTime() / 1000;
133
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);
138         }
139     }
140 }