App Version zum Crashlog hinzugefügt
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / CampusAppContext.java
index 77c2b9d82ccc366b7bf4fc33eb10e9125975ed34..fb2defde821b468c36da9d93235643ecc47cbd15 100644 (file)
@@ -1,3 +1,18 @@
+/* CampusAppContext.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;
 
 import android.app.Activity;
 package de.dhbwloe.campusapp;
 
 import android.app.Activity;
@@ -14,9 +29,9 @@ import de.dhbwloe.campusapp.fragments.FirstRun;
 import de.dhbwloe.campusapp.fragments.Impressum;
 import de.dhbwloe.campusapp.fragments.Mensa;
 import de.dhbwloe.campusapp.fragments.MensaCard;
 import de.dhbwloe.campusapp.fragments.Impressum;
 import de.dhbwloe.campusapp.fragments.Mensa;
 import de.dhbwloe.campusapp.fragments.MensaCard;
-import de.dhbwloe.campusapp.fragments.MensaWochenplan;
 import de.dhbwloe.campusapp.fragments.News;
 import de.dhbwloe.campusapp.fragments.PopupFragment;
 import de.dhbwloe.campusapp.fragments.News;
 import de.dhbwloe.campusapp.fragments.PopupFragment;
+import de.dhbwloe.campusapp.fragments.Settings;
 import de.dhbwloe.campusapp.fragments.SplashScreen;
 import de.dhbwloe.campusapp.fragments.Vorlesungsplan;
 import de.dhbwloe.campusapp.fragments.WebBrowser;
 import de.dhbwloe.campusapp.fragments.SplashScreen;
 import de.dhbwloe.campusapp.fragments.Vorlesungsplan;
 import de.dhbwloe.campusapp.fragments.WebBrowser;
@@ -47,7 +62,49 @@ public class CampusAppContext {
             this.fragementType = type;
         }
     }
             this.fragementType = type;
         }
     }
-    private final AppPage[] PAGES = {
+    public class NavigationItem {
+        int navItemId;
+        String navTarget;
+    };
+
+    public static final String APPVERSION = "0.1.4 (beta)";
+    public static final boolean DEBUG = true;
+    public final NavigationItem[] NAVIGATION_TARGETS = new NavigationItem[] {
+            new NavigationItem() {{
+                navItemId = R.id.nav_dashboard;
+                navTarget = "Dashboard";
+            }},
+            new NavigationItem() {{
+                navItemId = R.id.nav_vorlesungsplan;
+                navTarget = "Vorlesungsplan";
+            }},
+            new NavigationItem() {{
+                navItemId = R.id.nav_mensa;
+                navTarget = "Mensa";
+            }},
+            new NavigationItem() {{
+                navItemId = R.id.nav_mensa;
+                navTarget = "Mensa";
+            }},
+            new NavigationItem() {{
+                navItemId = R.id.nav_news;
+                navTarget = "News";
+            }},
+            new NavigationItem() {{
+                navItemId = R.id.nav_settings;
+                navTarget = "Settings";
+            }},
+            new NavigationItem() {{
+                navItemId = R.id.nav_wifi;
+                navTarget = "WifiSettings";
+            }},
+            new NavigationItem() {{
+                navItemId = R.id.nav_impressum;
+                navTarget = "Impressum";
+            }},
+
+    };
+    private final AppPage[] PAGES = { // Hier müssen alle Fragmente, die auf der Activity angezeigt werden sollen eingetragen werden.
             new AppPage("SplashScreen", SplashScreen.class),
             new AppPage("Dashboard", Dashboard.class),
             new AppPage("AppSearch", AppSearch.class),
             new AppPage("SplashScreen", SplashScreen.class),
             new AppPage("Dashboard", Dashboard.class),
             new AppPage("AppSearch", AppSearch.class),
@@ -57,6 +114,7 @@ public class CampusAppContext {
             new AppPage("News", News.class),
             new AppPage("WifiSettings", WifiSettings.class),
             new AppPage("FirstRun", FirstRun.class),
             new AppPage("News", News.class),
             new AppPage("WifiSettings", WifiSettings.class),
             new AppPage("FirstRun", FirstRun.class),
+            new AppPage("Settings", Settings.class),
             new AppPage("Impressum", Impressum.class),
             new AppPage("WebBrowser", WebBrowser.class),
             new AppPage("WebBrowserPopup", WebBrowser.class, 3)
             new AppPage("Impressum", Impressum.class),
             new AppPage("WebBrowser", WebBrowser.class),
             new AppPage("WebBrowserPopup", WebBrowser.class, 3)
@@ -72,15 +130,20 @@ public class CampusAppContext {
     private NavigationManager oNavigationManager;
     private DatabaseManager oDatabaseManager;
     private NfcCardListener oNfcCardListener;
     private NavigationManager oNavigationManager;
     private DatabaseManager oDatabaseManager;
     private NfcCardListener oNfcCardListener;
+    private Bundle oContextVariables;
+    private CampusAppCrashHandler oExceptionHandler;
 
 
-    public CampusAppContext(CampusApp mainActivity, int fragmentContainerId) {
+    public CampusAppContext(CampusApp mainActivity, int fragmentContainerId, int navigationViewId) {
         final CampusAppContext AppContext = this;
         instance = this;
         final CampusAppContext AppContext = this;
         instance = this;
+
         oMainActivity = mainActivity;
         oMainActivity = mainActivity;
-        oNavigationManager = new NavigationManager(this, fragmentContainerId);
+        oContextVariables = new Bundle();
+        oNavigationManager = new NavigationManager(this, fragmentContainerId, navigationViewId);
         oDatabaseManager = new DatabaseManager(this);
         oNfcCardListener = new NfcCardListener(this);
 
         oDatabaseManager = new DatabaseManager(this);
         oNfcCardListener = new NfcCardListener(this);
 
+        // Alle Fragmente "registrieren"
         for(int i = 0; i < PAGES.length; i++)
             oNavigationManager.registerPage(PAGES[i].name, PAGES[i].fragment, PAGES[i].fragementType);
 
         for(int i = 0; i < PAGES.length; i++)
             oNavigationManager.registerPage(PAGES[i].name, PAGES[i].fragment, PAGES[i].fragementType);
 
@@ -110,9 +173,11 @@ public class CampusAppContext {
     }
 
     public void setTitle(String title) {
     }
 
     public void setTitle(String title) {
+        // Ändern des Titels (Im App Header angezeigt)
         PopupFragment popup = oNavigationManager.getDialog();
         if(popup != null) {
         PopupFragment popup = oNavigationManager.getDialog();
         if(popup != null) {
-            popup.getDialog().setTitle(title);
+            if(popup.getDialog() != null)
+                popup.getDialog().setTitle(title);
         } else {
             TextView titleView = (TextView)oMainActivity.findViewById(R.id.title);
             titleView.setText(title);
         } else {
             TextView titleView = (TextView)oMainActivity.findViewById(R.id.title);
             titleView.setText(title);
@@ -124,6 +189,7 @@ public class CampusAppContext {
     }
 
     public void addDefaultSearchIndexes() {
     }
 
     public void addDefaultSearchIndexes() {
+        // Alle Search Indices der eigetragenen Seiten beziehen und in der Datenbank speichern
         for(int i = 0; i < PAGES.length; i++) {
             try {
                 Method m = PAGES[i].fragment.getMethod("GetSearchIndices");
         for(int i = 0; i < PAGES.length; i++) {
             try {
                 Method m = PAGES[i].fragment.getMethod("GetSearchIndices");
@@ -144,11 +210,17 @@ public class CampusAppContext {
     }
 
     private void onNfcCardDataReceived(NfcCardData data) {
     }
 
     private void onNfcCardDataReceived(NfcCardData data) {
+        // NFC Daten erhalten
         Bundle bundle = new Bundle();
         Bundle bundle = new Bundle();
-        bundle.putDouble("balance", data.getBalance() / 100.0);
+        double cardBalance = data.getBalance() / 100.0;
+        bundle.putDouble("balance", cardBalance);
         bundle.putDouble("transaction", data.getLastTransaction() / 100.0);
 
         bundle.putDouble("transaction", data.getLastTransaction() / 100.0);
 
+        oContextVariables.putInt("nfcCardUniqueId", data.getUniqueId());
+        oContextVariables.putDouble("nfcCardBalance", cardBalance);
+
         String pagename = oNavigationManager.getCurrentPageName();
         String pagename = oNavigationManager.getCurrentPageName();
+        // Update angezeigtes Guthaben lediglich, wenn das Fragment bereits angezeigt wird
         if(pagename != null && pagename.equalsIgnoreCase("MensaCard")) {
             MensaCard fragment = (MensaCard) oNavigationManager.getCurrentFragment();
             fragment.showNfcCardData(bundle);
         if(pagename != null && pagename.equalsIgnoreCase("MensaCard")) {
             MensaCard fragment = (MensaCard) oNavigationManager.getCurrentFragment();
             fragment.showNfcCardData(bundle);
@@ -156,4 +228,19 @@ public class CampusAppContext {
             oNavigationManager.navigatePage("MensaCard", bundle);
     }
 
             oNavigationManager.navigatePage("MensaCard", bundle);
     }
 
+    public Bundle getContextVariables() {
+        return oContextVariables;
+    }
+
+    public String getResString(int id, Object... arguments) {
+        // printf like resource strings
+        String format = getResString(id);
+        String res = String.format(format, arguments);
+        return res;
+    }
+    public String getResString(int id) {
+        String str = oMainActivity.getResources().getString(id);
+        return str;
+    }
+
 }
 }