SplashScreen Bild Skalierung entfernt: Unnötiger Speicherfresser
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / SplashScreen.java
index 77cb27eea36bc31c7f112464edf6c05eafb610ce..6ecc333283d5b63178811c996a3a2a3b2f762063 100644 (file)
@@ -1,6 +1,19 @@
+/* SplashScreen.java
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
 package de.dhbwloe.campusapp.fragments;
-
-
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Point;
@@ -21,6 +34,8 @@ import de.dhbwloe.campusapp.CampusApp;
 import de.dhbwloe.campusapp.CampusAppContext;
 import de.dhbwloe.campusapp.CampusAppFragment;
 import de.dhbwloe.campusapp.R;
+import de.dhbwloe.campusapp.coursenames.CourseNameManager;
+import de.dhbwloe.campusapp.coursenames.CourseNameManagerInterface;
 import de.dhbwloe.campusapp.mensaplan.MensaplanManager;
 import de.dhbwloe.campusapp.mensaplan.MensaplanManagerInterface;
 import de.dhbwloe.campusapp.news.NewsManager;
@@ -35,6 +50,8 @@ import de.dhbwloe.campusapp.vorlesungen.CourseGroup;
  * A simple {@link Fragment} subclass.
  */
 public class SplashScreen extends CampusAppFragment {
+    private static final boolean PARALLELIZE_SPLASHTASKS = true;
+
     private ProgressBar splashProgress;
     private int progressCounter;
     private Handler timerHandler = new Handler();
@@ -68,22 +85,6 @@ public class SplashScreen extends CampusAppFragment {
 
         AppContext.setTitle("DHBW Lörrach");
 
-        ImageView splashImage = (ImageView)view.findViewById(R.id.splashImage);
-        BitmapFactory.Options dimensions = new BitmapFactory.Options();
-        Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dhbw_campus_hd, dimensions);
-        int height = dimensions.outHeight;
-        int width =  dimensions.outWidth;
-        Display display = AppContext.getMainActivity().getWindowManager().getDefaultDisplay();
-        Point size = new Point();
-        display.getSize(size);
-        float scaleX = (float)size.x / (float)width;
-        float scaleY = (float)size.y / (float)height;
-        float scale = Math.max(scaleX, scaleY);
-        int newWidth = (int)(width*scale);
-        int newHeight = (int)(height*scale);
-        Bitmap newBitmap = Bitmap.createScaledBitmap(mBitmap, newWidth, newHeight, true);
-        splashImage.setImageBitmap(newBitmap);
-
         timerRunnable = new Runnable() {
             @Override
             public void run() {
@@ -98,6 +99,35 @@ public class SplashScreen extends CampusAppFragment {
                         AppContext.addDefaultSearchIndexes();
                         break;
                     case 3:
+                        String lastCNSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastCNSync");
+                        long lastCNSync;
+                        if(lastCNSyncStr != null)
+                            lastCNSync = Long.parseLong(lastCNSyncStr);
+                        else
+                            lastCNSync = 0;
+
+                        CourseNameManager cnm = new CourseNameManager();
+
+                        if(lastCNSync == 0 || now - lastCNSync > (86400 * 7)) { //sync every 7 days
+                            cnm.synchronizeCourseNames(new CourseNameManagerInterface() {
+                                @Override
+                                public void onCourseNamesSynchronized() {
+                                    long now = (new Date()).getTime() / 1000;
+                                    AppContext.getDatabaseManager().setRuntimeCache("LastCNSync", Long.toString(now));
+                                    timerHandler.postDelayed(timerRunnable, 100);
+                                }
+
+                                @Override
+                                public void onCourseNamesFailed(String errorMessage) {
+                                    timerHandler.postDelayed(timerRunnable, 100);
+                                }
+                            });
+                        }
+                        else
+                            break;
+
+                        return;
+                    case 4:
                         String startCounter = AppContext.getDatabaseManager().getRuntimeCache("AppStartCounter");
                         if(startCounter == null || Integer.parseInt(startCounter) == 0) {
                             AppContext.getNavigationManager().navigatePage("FirstRun", null, false);
@@ -105,7 +135,7 @@ public class SplashScreen extends CampusAppFragment {
                         }
                         AppContext.getDatabaseManager().setRuntimeCache("AppStartCounter", Integer.toString(Integer.parseInt(startCounter) + 1));
                         break;
-                    case 4:
+                    case 5:
                         String lastVLMFullSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastVLMFullSync");
                         String lastVLMPartialSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastVLMPartialSync");
                         long lastVLMFullSync, lastVLMPartialSync;
@@ -118,7 +148,7 @@ public class SplashScreen extends CampusAppFragment {
                         else
                             lastVLMPartialSync = 0;
 
-                        String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName");
+                        final String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName");
                         if(kursTag == null || kursTag.isEmpty())
                             break;
                         CalendarManager vpm = new CalendarManager(AppContext, kursTag);
@@ -127,6 +157,11 @@ public class SplashScreen extends CampusAppFragment {
                             vpm.performFullSynchronisation(new CalendarManagerInterface() {
                                 @Override
                                 public void onCalendarUpdateDone() {
+                                    if(!AppContext.getDatabaseManager().haveCourseName(kursTag)) {
+                                        CourseNameManager cnm = new CourseNameManager();
+                                        cnm.addCourseName(kursTag);
+                                    }
+
                                     long now = (new Date()).getTime() / 1000;
                                     AppContext.getDatabaseManager().setRuntimeCache("LastVLMFullSync", Long.toString(now));
                                     AppContext.getDatabaseManager().setRuntimeCache("LastVLMPartialSync", Long.toString(now));
@@ -155,6 +190,11 @@ public class SplashScreen extends CampusAppFragment {
                             vpm.performFastSynchronisation(new CalendarManagerInterface() {
                                 @Override
                                 public void onCalendarUpdateDone() {
+                                    if(!AppContext.getDatabaseManager().haveCourseName(kursTag)) {
+                                        CourseNameManager cnm = new CourseNameManager();
+                                        cnm.addCourseName(kursTag);
+                                    }
+
                                     long now = (new Date()).getTime()/1000;
                                     AppContext.getDatabaseManager().setRuntimeCache("LastVLMPartialSync", Long.toString(now));
                                     timerHandler.postDelayed(timerRunnable, 100);
@@ -180,7 +220,7 @@ public class SplashScreen extends CampusAppFragment {
                         else
                             break;
                         return;
-                    case 5:
+                    case 6:
                         String lastMPMSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastMPSync");
                         long lastMPMSync;
                         if(lastMPMSyncStr != null)
@@ -208,9 +248,9 @@ public class SplashScreen extends CampusAppFragment {
                         else
                             break;
                         return;
-                    case 6:
                     case 7:
-                        final String syncSource = (progressCounter == 6 ? "DHBW" : "STUV");
+                    case 8:
+                        final String syncSource = (progressCounter == 7 ? "DHBW" : "STUV");
                         String lastNewsSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastNewsSync_"+syncSource);
                         long lastNewsSync;
                         if(lastNewsSyncStr != null)
@@ -238,7 +278,7 @@ public class SplashScreen extends CampusAppFragment {
                         else
                             break;
                         return;
-                    case 8:
+                    case 9:
                         String lastStuvSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastStuvSync");
                         long lastStuvSync;
                         if(lastStuvSyncStr != null)