+/* 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.Matrix;
import android.graphics.Point;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import java.util.Date;
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;
import de.dhbwloe.campusapp.news.NewsManagerInterface;
-import de.dhbwloe.campusapp.vorlesungen.VorlesungsplanManager;
-import de.dhbwloe.campusapp.vorlesungen.VorlesungsplanManagerInterface;
+import de.dhbwloe.campusapp.search.SearchIndices;
+import de.dhbwloe.campusapp.vorlesungen.CalendarManager;
+import de.dhbwloe.campusapp.vorlesungen.CalendarManagerInterface;
+import de.dhbwloe.campusapp.vorlesungen.CourseEvent;
+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();
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_splashscreen, container, false);
+ TextView versionView = (TextView) view.findViewById(R.id.version);
+ versionView.setText(CampusAppContext.APPVERSION);
+
splashProgress = (ProgressBar)view.findViewById(R.id.splashProgress);
splashProgress.setMax(20);
splashProgress.setProgress(0);
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() {
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);
}
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;
else
lastVLMPartialSync = 0;
- VorlesungsplanManager vpm = new VorlesungsplanManager(AppContext, "tif13a");
+ final String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName");
+ if(kursTag == null || kursTag.isEmpty())
+ break;
+ CalendarManager vpm = new CalendarManager(AppContext, kursTag);
if(lastVLMFullSync == 0 || now - lastVLMFullSync > (86400 * 14)) { // full sync every 14 days
- vpm.performFullSynchronisation(new VorlesungsplanManagerInterface() {
+ vpm.performFullSynchronisation(new CalendarManagerInterface() {
@Override
- public void onVorlesungsplanUpdateDone() {
+ 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));
}
@Override
- public void onVorlesungsplanUpdateFail(String errorMessage) {
+ public void onCalendarUpdateFail(String errorMessage) {
timerHandler.postDelayed(timerRunnable, 100);
}
+ @Override
+ public SearchIndices onGenerateCalendarSearchIndices(CourseEvent event) {
+ CourseGroup group = event.getCourseGroup();
+ SearchIndices indices = new SearchIndices("Vorlesungsplan#Group"+group.getGroupId(), false);
+ indices.setUpdateTime(event.getEventFrom());
+ indices.setTarget("#Vorlesungsplan#groupid=" + group.getGroupId());
+ indices.setTitle("Vorlesungsplan " + event.getCourseName());
+ indices.setDescription("Vorlesung " + event.getEventTitle());
+ indices.addKeyWord(event.getGroupTitle());
+ indices.addKeyWord(event.getEventLocation());
+ return indices;
+ }
});
}
else if(lastVLMPartialSync == 0 || now - lastVLMPartialSync > (86400)) { // partial sync every day
- vpm.performFastSynchronisation(new VorlesungsplanManagerInterface() {
+ vpm.performFastSynchronisation(new CalendarManagerInterface() {
@Override
- public void onVorlesungsplanUpdateDone() {
+ 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);
}
@Override
- public void onVorlesungsplanUpdateFail(String errorMessage) {
+ public void onCalendarUpdateFail(String errorMessage) {
timerHandler.postDelayed(timerRunnable, 100);
}
+ @Override
+ public SearchIndices onGenerateCalendarSearchIndices(CourseEvent event) {
+ CourseGroup group = event.getCourseGroup();
+ SearchIndices indices = new SearchIndices("Vorlesungsplan#Group"+group.getGroupId(), false);
+ indices.setUpdateTime(event.getEventFrom());
+ indices.setTarget("#Vorlesungsplan#groupid=" + group.getGroupId());
+ indices.setTitle(AppContext.getResString(R.string.search_vorlesungsplan_group_title, event.getCourseName()));
+ indices.setDescription(event.getEventTitle());
+ indices.addKeyWord(event.getGroupTitle());
+ indices.addKeyWord(event.getEventLocation());
+ return indices;
+ }
});
}
else
break;
return;
- case 5:
+ case 6:
String lastMPMSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastMPSync");
long lastMPMSync;
if(lastMPMSyncStr != null)
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)
else
break;
return;
- case 8:
+ case 9:
String lastStuvSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastStuvSync");
long lastStuvSync;
if(lastStuvSyncStr != null)
else
lastStuvSync = 0;
- VorlesungsplanManager stuvsyncmgr = new VorlesungsplanManager(AppContext, "STUV");
+ final String calendarName = "STUV";
+ CalendarManager stuvsyncmgr = new CalendarManager(AppContext, calendarName);
if(lastStuvSync == 0 || now - lastStuvSync > (86400 * 3)) { // full sync every 3 days
- stuvsyncmgr.performFullSynchronisation(new VorlesungsplanManagerInterface() {
+ stuvsyncmgr.performFullSynchronisation(new CalendarManagerInterface() {
@Override
- public void onVorlesungsplanUpdateDone() {
+ public void onCalendarUpdateDone() {
long now = (new Date()).getTime() / 1000;
AppContext.getDatabaseManager().setRuntimeCache("LastStuvSync", Long.toString(now));
timerHandler.postDelayed(timerRunnable, 100);
}
@Override
- public void onVorlesungsplanUpdateFail(String errorMessage) {
+ public void onCalendarUpdateFail(String errorMessage) {
timerHandler.postDelayed(timerRunnable, 100);
}
+
+ @Override
+ public SearchIndices onGenerateCalendarSearchIndices(CourseEvent event) {
+ CourseGroup group = event.getCourseGroup();
+ SearchIndices indices = new SearchIndices("Vorlesungsplan#Group"+group.getGroupId(), false);
+ indices.setUpdateTime(event.getEventFrom());
+ indices.setTarget("#News#showevent=" + group.getGroupId() + "&course=" + calendarName);
+ indices.setTitle(calendarName+" Event: " + event.getCourseName());
+ indices.setDescription(event.getEventTitle());
+ indices.addKeyWord(event.getGroupTitle());
+ indices.addKeyWord(event.getEventLocation());
+
+ return null;
+ }
});
}
else
timerHandler.postDelayed(timerRunnable, 100);
}
};
- timerHandler.postDelayed(timerRunnable, 500);
return view;
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ timerHandler.postDelayed(timerRunnable, 500);
+ }
+
}