alpha 0.0.1
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / Mensa.java
index ccc778595453b5db9dfe4f29af0b74a1ea2ba8e9..2d641de6d28bb1bb7bf88cd6f38eeeea48730fd9 100644 (file)
@@ -15,6 +15,7 @@ import android.view.ViewGroup;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -41,7 +42,6 @@ public class Mensa extends CampusAppFragment {
 
     private TabLayout tabLayout;
     private ViewPager viewPager;
-    private boolean viewDayplan;
     private long viewDate;
 
     @Override
@@ -56,34 +56,10 @@ public class Mensa extends CampusAppFragment {
             long date;
             if(showdate != null && !showdate.isEmpty() && (date = Long.parseLong(showdate)) > 0) {
                 viewDate = date;
-                viewDayplan = true;
-                viewmodeSet = true;
-            }
-            if(!viewmodeSet) {
-                String viewmode = arguments.getString("viewmode");
-                if(viewmode != null && !viewmode.isEmpty()) {
-                    if(viewmode.equalsIgnoreCase("day"))
-                        viewDayplan = true;
-                    else
-                        viewDayplan = false;
-                    viewmodeSet = true;
-                }
-            }
-        }
-        if(!viewmodeSet) {
-            String lastViewmode = AppContext.getDatabaseManager().getRuntimeCache("MensaplanViewMode");
-            if(lastViewmode != null && !lastViewmode.isEmpty()) {
-                if(lastViewmode.equalsIgnoreCase("day"))
-                    viewDayplan = true;
-                else
-                    viewDayplan = false;
-                viewmodeSet = true;
             }
         }
-        if(!viewmodeSet)
-            viewDayplan = true;
 
-        AppContext.setTitle("Mensa "+(viewDayplan ? "Tagesplan" : "Wochenplan"));
+        AppContext.setTitle("Mensa Speiseplan");
 
         /*
         toolbar = (Toolbar) view.findViewById(R.id.toolbar);
@@ -106,14 +82,30 @@ public class Mensa extends CampusAppFragment {
 
         long[] showDates;
         long now = (new Date()).getTime()/1000;
-        if(viewDayplan)
-            showDates = AppContext.getDatabaseManager().getDaysWithPlanData(now - (30 * 86400), now + (30 * 86400));
-        else
-            showDates = AppContext.getDatabaseManager().getDaysWithPlanData(now - (365 * 86400), now + (30 * 86400));
+        if(viewDate < now)
+            now = viewDate;
+
+        int weekdayResIds[] = new int[] { R.string.week_monday_short, R.string.week_tuesday_short, R.string.week_wednesday_short, R.string.week_thursday_short, R.string.week_friday_short, R.string.week_saturday_short, R.string.week_sunday_short };
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date(now * 1000));
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        long midnight = cal.getTimeInMillis() / 1000;
+        int dow = cal.get(Calendar.DAY_OF_WEEK);
+        dow -= 2;
+        if(dow < 0) // monday should be 0!
+            dow += 7;
+        long subTimeToWeekStart = (86400 * dow);
+        long showDateFrom = midnight - subTimeToWeekStart;
+
+        showDates = AppContext.getDatabaseManager().getDaysWithPlanData(showDateFrom, now + (30 * 86400));
 
         int activeItem = -1;
         long activeItemDiff = -1;
         Bundle args = getArguments();
+        int lastWeekday = 0;
         for(int i = 0; i < showDates.length; i++) {
             long date = showDates[i];
             Bundle bundle = new Bundle();
@@ -121,10 +113,12 @@ public class Mensa extends CampusAppFragment {
                 bundle.putAll(args);
             String title;
             SimpleDateFormat sdf;
-            if(viewDayplan)
-                sdf = new SimpleDateFormat("dd.MM.");
-            else
-                sdf = new SimpleDateFormat("WW");
+
+            cal.setTime(new Date(date * 1000));
+            int weekday = cal.get(Calendar.DAY_OF_WEEK);
+            weekday -= 2; // monday should be 0!
+            if(weekday < 0)
+                weekday += 7;
 
             if(viewDate > 0) {
                 long diff = Math.abs(viewDate - date);
@@ -134,16 +128,21 @@ public class Mensa extends CampusAppFragment {
                 }
             }
 
-            title = sdf.format(new Date(date * 1000));
+            if(lastWeekday > weekday) {
+                adapter.addFragment(null, null);
+            }
+            lastWeekday = weekday;
+
+            title = AppContext.getResString(weekdayResIds[weekday]);
             bundle.putLong("date", date);
             adapter.addFragment(bundle, title);
         }
         viewPager.setAdapter(adapter);
         viewPager.setCurrentItem(activeItem);
-        if(viewDayplan) {
-            MensaTagesplan tagesplan = (MensaTagesplan)adapter.getItem(activeItem);
-            tagesplan.onSetActive();
-        }
+
+        MensaTagesplan tagesplan = (MensaTagesplan)adapter.getItem(activeItem);
+        tagesplan.onSetActive();
+
 
         viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
             @Override
@@ -153,10 +152,8 @@ public class Mensa extends CampusAppFragment {
 
             @Override
             public void onPageSelected(int position) {
-                if(viewDayplan) {
-                    MensaTagesplan tagesplan = (MensaTagesplan)adapter.getItem(position);
-                    tagesplan.onSetActive();
-                }
+                MensaTagesplan tagesplan = (MensaTagesplan)adapter.getItem(position);
+                tagesplan.onSetActive();
             }
 
             @Override
@@ -184,10 +181,8 @@ public class Mensa extends CampusAppFragment {
             }
             if(mFragmentList.get(position) != null)
                 return mFragmentList.get(position);
-            if(viewDayplan)
-                fragment = new MensaTagesplan();
-            else
-                fragment = new MensaWochenplan();
+            fragment = new MensaTagesplan();
+
             fragment.setArguments(mFragmentDataList.get(position));
             mFragmentList.set(position, fragment);
             return fragment;
@@ -199,6 +194,14 @@ public class Mensa extends CampusAppFragment {
         }
 
         public void addFragment(Bundle fragmentdata, String title) {
+            if(title == null) {
+                Bundle bnd = new Bundle();
+                bnd.putBoolean("parentIsMensaFragment", true);
+                mFragmentDataList.add(bnd);
+                mFragmentTitleList.add("");
+                return;
+            }
+
             fragmentdata.putBoolean("parentIsMensaFragment", true);
             mFragmentDataList.add(fragmentdata);
             mFragmentTitleList.add(title);