X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fde%2Fdhbwloe%2Fcampusapp%2Ffragments%2FVorlesungsplan.java;h=a0bde341d8e7827dc27329cfc7450e5b16e50bb9;hb=783024077bd38c4bede07ca8310fb2daf67751b5;hp=caf8c88de80ce9314fcd64fd89cc492f778d5b14;hpb=a0f644715b43af1e4acf2513b972c3f980efdaca;p=DHBWCampusApp.git diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/Vorlesungsplan.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/Vorlesungsplan.java index caf8c88..a0bde34 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/Vorlesungsplan.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/Vorlesungsplan.java @@ -2,39 +2,237 @@ package de.dhbwloe.campusapp.fragments; import android.os.Bundle; +import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import de.dhbwloe.campusapp.CampusAppContext; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; import de.dhbwloe.campusapp.search.SearchIndices; +import de.dhbwloe.campusapp.vorlesungen.CourseEvent; +import de.dhbwloe.campusapp.vorlesungen.CourseGroup; /** * A simple {@link Fragment} subclass. */ public class Vorlesungsplan extends CampusAppFragment { + public interface VorlesungsplanFragment { + void setActive(); + } + /* implement this for search results ;) */ public static SearchIndices[] GetSearchIndices() { return new SearchIndices[] { new SearchIndices("Vorlesungsplan", true) {{ setUpdateTime(1); setTarget("#Vorlesungsplan"); - setTitle("Vorlesungsplan"); - setDescription("Vorlesungsplan dienes Kurses"); - addKeyWord("vorlesung, vorlesungen, plan, vorlesungsplan, stundenplan, termin, termine, kursplan, blockplan, block, zeit, zeiten"); + setTitle(R.string.search_vorlesungsplan_title); + setDescription(R.string.search_vorlesungsplan_description); + addKeyWord(R.string.search_vorlesungsplan_keywords); + }}, + new SearchIndices("VorlesungsplanExams", true) {{ + setUpdateTime(1); + setTarget("#Vorlesungsplan#view=exams"); + setTitle(R.string.search_vorlesungsplan_klausur_title); + setDescription(R.string.search_vorlesungsplan_klausur_description); + addKeyWord(R.string.search_vorlesungsplan_klausur_keywords); }}, }; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_vorlesungsplan, container, false); - AppContext.setTitle("Vorlesungsplan"); + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + Bundle arguments = getArguments(); + int showGroupId = 0; + boolean showExamsPage = false; + if(arguments != null) { + String groupid = arguments.getString("groupid"); + if(groupid != null) + showGroupId = Integer.parseInt(groupid); + String view = arguments.getString("view"); + if(view != null && view.equalsIgnoreCase("exams")) + showExamsPage = true; + } + + View view = null; + if(showGroupId > 0) { + view = inflater.inflate(R.layout.fragment_vorlesungsplan_group, container, false); + + CourseGroup group = AppContext.getDatabaseManager().getCourseGroup(showGroupId); + if(group != null) { + AppContext.setTitle(AppContext.getResString(R.string.vorlesungsplan_group_title, group.getGroupName())); + + showGroupEvents(view, group); + } else + view = null; + } + if(view == null) { + view = inflater.inflate(R.layout.fragment_vorlesungsplan, container, false); + AppContext.setTitle(AppContext.getResString(R.string.vorlesungsplan_title)); + + ViewPager pager = (ViewPager) view.findViewById(R.id.viewpager); + setupViewPager(pager); + + if(showExamsPage) + pager.setCurrentItem(2); + + TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs); + tabLayout.setupWithViewPager(pager); + } return view; } + private void setupViewPager(ViewPager viewPager) { + final ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); + + adapter.addFragment(new VorlesungsplanUpcoming(), AppContext.getResString(R.string.vorlesungsplan_upcoming)); + adapter.addFragment(new VorlesungsplanGroups(), AppContext.getResString(R.string.vorlesungsplan_groups)); + adapter.addFragment(new VorlesungsplanExams(), AppContext.getResString(R.string.vorlesungsplan_exams)); + + viewPager.setAdapter(adapter); + viewPager.setCurrentItem(0); + + VorlesungsplanFragment fragment = (VorlesungsplanFragment)adapter.getItem(0); + fragment.setActive(); + + + viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + VorlesungsplanFragment fragment = (VorlesungsplanFragment)adapter.getItem(position); + fragment.setActive(); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + } + + private void showGroupEvents(View view, CourseGroup group) { + CourseEvent events[] = AppContext.getDatabaseManager().getCourseEventsByGroup(group); + + CourseEvent nextEvent = null; + CourseEvent lastEvent = null; + CourseEvent examEvent = null; + long now = (new Date()).getTime()/1000; + SimpleDateFormat dateFormat = new SimpleDateFormat(AppContext.getResString(R.string.timeformat_vorlesungsplan_fulldate)); + + LinearLayout container = (LinearLayout) view.findViewById(R.id.allEventsList); + TextView groupName = (TextView) view.findViewById(R.id.courseTitle); + TextView nextEventView = (TextView) view.findViewById(R.id.nextEvent); + TextView lastEventView = (TextView) view.findViewById(R.id.lastEvent); + TextView examEventView = (TextView) view.findViewById(R.id.klausurEvent); + + groupName.setText(group.getGroupName()); + container.removeAllViews(); + + for(CourseEvent event : events) { + if(event.getEventFrom() >= now && nextEvent == null) + nextEvent = event; + if(event.getCourseType() == CourseEvent.CourseType.COURSETYPE_KLAUSUR) + examEvent = event; + else + lastEvent = event; + + LinearLayout eventEntry = new LinearLayout(view.getContext()); + eventEntry.setLayoutParams(new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT)); + eventEntry.setOrientation(LinearLayout.HORIZONTAL); + + TextView dotView = new TextView(view.getContext()); + dotView.setText(AppContext.getResString(R.string.listDot)); + eventEntry.addView(dotView); + + if(event.getEventFrom() < now) + dotView.setTextColor(AppContext.getMainActivity().getResources().getColor(R.color.color_dhbw_lightgray)); + else + dotView.setTextColor(AppContext.getMainActivity().getResources().getColor(R.color.color_dhbw_darkred)); + + TextView nameView = new TextView(view.getContext()); + LinearLayout.LayoutParams nameViewLayoutParams = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + nameViewLayoutParams.setMargins(16,0,0,0); + nameView.setLayoutParams(nameViewLayoutParams); + nameView.setText(dateFormat.format(new Date(event.getEventFrom() * 1000))); + eventEntry.addView(nameView); + + TextView locationView = new TextView(view.getContext()); + LinearLayout.LayoutParams locationViewLayoutParams = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + locationViewLayoutParams.setMargins(32,0,0,0); + locationView.setLayoutParams(locationViewLayoutParams); + locationView.setText(event.getEventLocation()); + eventEntry.addView(locationView); + + container.addView(eventEntry); + } + + if(nextEvent != null) + nextEventView.setText(dateFormat.format(new Date(nextEvent.getEventFrom() * 1000))); + else + nextEventView.setText(CampusAppContext.getInstance().getResString(R.string.vorlesungsplan_groups_nonext)); + + if(lastEvent != null) + lastEventView.setText(dateFormat.format(new Date(lastEvent.getEventFrom() * 1000))); + else + lastEventView.setText(CampusAppContext.getInstance().getResString(R.string.vorlesungsplan_groups_nonext)); + + if(examEvent != null) + examEventView.setText(dateFormat.format(new Date(examEvent.getEventFrom() * 1000))); + else + examEventView.setText(CampusAppContext.getInstance().getResString(R.string.vorlesungsplan_groups_noklausur)); + } + + class ViewPagerAdapter extends FragmentPagerAdapter { + private final List mFragmentList = new ArrayList<>(); + private final List mFragmentTitleList = new ArrayList<>(); + + public ViewPagerAdapter(FragmentManager manager) { + super(manager); + } + + @Override + public Fragment getItem(int position) { + return mFragmentList.get(position); + } + + @Override + public int getCount() { + return mFragmentList.size(); + } + + public void addFragment(Fragment fragment, String title) { + mFragmentList.add(fragment); + mFragmentTitleList.add(title); + } + + @Override + public CharSequence getPageTitle(int position) { + return mFragmentTitleList.get(position); + } + } + }