X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fde%2Fdhbwloe%2Fcampusapp%2FCampusApp.java;h=403c7401b748e12feeb2d2ca8f935f60b7eb6596;hb=12137edd8e00a50e1cb621193594f80e8a3591fc;hp=e9200ac1900e54b2d049642dee14c994054b2bb9;hpb=a0f644715b43af1e4acf2513b972c3f980efdaca;p=DHBWCampusApp.git diff --git a/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java b/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java index e9200ac..403c740 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java +++ b/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java @@ -1,7 +1,23 @@ +/* CampusApp.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 . + */ package de.dhbwloe.campusapp; import android.content.Context; import android.content.Intent; +import android.content.res.TypedArray; import android.nfc.NfcAdapter; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; @@ -30,7 +46,6 @@ import java.util.Date; import de.dhbwloe.campusapp.nfcreader.NfcCardListener; public class CampusApp extends FragmentActivity { - private boolean bSearchActive = false; private CampusAppContext AppContext = null; @@ -51,23 +66,48 @@ public class CampusApp extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { Log.i("CampusApp", "Event: onCreate"); + + if(CampusAppContext.DEBUG) { + final Thread.UncaughtExceptionHandler systemExceptionHandler = Thread.getDefaultUncaughtExceptionHandler(); + final CampusAppExceptionHandler oExceptionHandler = new CampusAppExceptionHandler(); + Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler() { + @Override + public void uncaughtException(Thread thread, Throwable e) { + oExceptionHandler.handleUncaughtException(thread, e); + //systemExceptionHandler.uncaughtException(thread, e); + System.exit(1); + } + }); + } + super.onCreate(savedInstanceState); setContentView(R.layout.activity_campus_app); + // Erstelle neuen AppContext, wenn keiner existiert AppContext = CampusAppContext.getInstance(); if(AppContext == null) - AppContext = new CampusAppContext(this, R.id.fragment_container); + AppContext = new CampusAppContext(this, R.id.fragment_container, R.id.nav_view); else AppContext.setMainActivity(this); + // Wenn die App aus dem Ruhezustand (oder auch Orientation change) reaktiviert wird soll nicht zuerst der Splashscreen angezeigt werden. boolean instantRestore = false; if(savedInstanceState != null) { long lastrun = savedInstanceState.getLong("lastrun"); - if(((new Date()).getTime()/1000) - lastrun < 30) { + lastrun = ((new Date()).getTime()/1000) - lastrun; + Log.i("CampusApp", "Restored from Idle state! Idled: "+lastrun+" secs"); + if(lastrun < 30) { instantRestore = true; + // restore previous Title AppContext.setTitle(savedInstanceState.getString("activetitle")); + } + + Bundle contextVars = savedInstanceState.getBundle("savedContextVariables"); + if(contextVars != null) { + Bundle contextVariables = AppContext.getContextVariables(); + contextVariables.putAll(contextVars); } } @@ -84,6 +124,7 @@ public class CampusApp extends FragmentActivity { @Override public void onSaveInstanceState(Bundle savedInstanceState) { Log.i("CampusApp", "Event: onSaveInstanceState"); + // Save instance state during "restarts" due to orientation changes. // We don't want to see the splash screen everytime the orientation changes ;) savedInstanceState.putLong("lastrun", (new Date()).getTime() / 1000); @@ -91,6 +132,9 @@ public class CampusApp extends FragmentActivity { TextView titleView = (TextView) findViewById(R.id.title); savedInstanceState.putString("activetitle", titleView.getText().toString()); + Bundle contextVariables = AppContext.getContextVariables(); + savedInstanceState.putBundle("savedContextVariables", contextVariables); + // Always call the superclass so it can save the view hierarchy state super.onSaveInstanceState(savedInstanceState); } @@ -125,28 +169,11 @@ public class CampusApp extends FragmentActivity { // Handle navigation view item clicks here. int id = item.getItemId(); - switch (id) { // Navigation Items from res/menu/activity_campus_app_drawer.xml - case R.id.nav_dashboard: - AppContext.getNavigationManager().navigatePage("Dashboard"); + for(CampusAppContext.NavigationItem navitem : AppContext.NAVIGATION_TARGETS) { + if(navitem.navItemId == id) { + AppContext.getNavigationManager().navigatePage(navitem.navTarget); break; - case R.id.nav_vorlesungsplan: - AppContext.getNavigationManager().navigatePage("Vorlesungsplan"); - break; - case R.id.nav_mensa: - AppContext.getNavigationManager().navigatePage("Mensa"); - break; - case R.id.nav_news: - AppContext.getNavigationManager().navigatePage("News"); - break; - case R.id.nav_settings: - Intent settings = new Intent(AppContext.getMainActivity(), SettingsActivity.class); - AppContext.getMainActivity().startActivity(settings); - break; - case R.id.nav_impressum: - AppContext.getNavigationManager().navigatePage("Impressum"); - break; - default: - return false; + } } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); @@ -162,6 +189,7 @@ public class CampusApp extends FragmentActivity { EditText edtSearchInput = (EditText) findViewById(R.id.search_input); TextView txtTitle = (TextView) findViewById(R.id.title); + // EventListener für Suchfunktion btnOpenSearch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -274,6 +302,13 @@ public class CampusApp extends FragmentActivity { /* nfc listener related callbacks */ @Override public void onResume() { + if(AppContext == null) + AppContext = CampusAppContext.getInstance(); + if(AppContext == null) + AppContext = new CampusAppContext(this, R.id.fragment_container, R.id.nav_view); + else + AppContext.setMainActivity(this); + super.onResume(); Log.i("CampusApp", "onResume event"); AppContext.getNfcCardListener().resumeForefrontDispatcher();