X-Git-Url: http://git.pk910.de/?p=DHBWCampusApp.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fde%2Fdhbwloe%2Fcampusapp%2Ffragments%2FNews.java;h=5efb4f7b429c4e68cbdaa00d305e400c461bceaf;hp=6a48b68fec5b538cb422855f81ae4ca20c255229;hb=cea4ee15ef92f521ae962404bd1b3c25042219fa;hpb=9a28e7b4c1520f629721693a04b4978fec9692e7 diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/News.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/News.java index 6a48b68..5efb4f7 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/News.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/News.java @@ -7,10 +7,21 @@ import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.ListView; + +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.ArrayList; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; +import de.dhbwloe.campusapp.news.NewsItem; import de.dhbwloe.campusapp.search.SearchIndices; +import de.dhbwloe.campusapp.vorlesungen.CourseEvent; /** * A simple {@link Fragment} subclass. @@ -22,21 +33,106 @@ public class News extends CampusAppFragment { new SearchIndices("News", true) {{ setUpdateTime(1); setTarget("#News"); - setTitle("News"); - setDescription("News der DHBW & Stuv"); - addKeyWord("news, dhbw, stuv, termin, termine"); + setTitle(R.string.search_news_title); + setDescription(R.string.search_news_description); + addKeyWord(R.string.search_news_keywords); }}, }; } + private View view; + private NewsListAdapter listAdapter; + private ArrayList newsListItems = new ArrayList(); + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_news, container, false); - AppContext.setTitle("News"); + view = inflater.inflate(R.layout.fragment_news, container, false); + AppContext.setTitle(AppContext.getResString(R.string.news_title)); + + ListView newsItemsList = (ListView) view.findViewById(R.id.newsListView); + listAdapter = new NewsListAdapter(view.getContext(), R.layout.fragment_news_item, newsListItems); + newsItemsList.setAdapter(listAdapter); + + CompoundButton.OnCheckedChangeListener changeListener = new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + refreshNewsItems(); + } + }; + ((CheckBox) view.findViewById(R.id.showDhbwNews)).setOnCheckedChangeListener(changeListener); + ((CheckBox) view.findViewById(R.id.showStuvNews)).setOnCheckedChangeListener(changeListener); + ((CheckBox) view.findViewById(R.id.showStuvEvents)).setOnCheckedChangeListener(changeListener); + newsItemsList.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + NewsListItem item = newsListItems.get(position); + if (item == null) + return; + + String link = item.getLink(); + if(link != null) { + Bundle args = new Bundle(); + args.putString("url", link); + AppContext.getNavigationManager().navigatePage("WebBrowser", args, false); + } + } + }); return view; } + @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() { + @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); + } + } }