Zuordnung von Navigationsitem zu Zielseite in CampusAppContext verschoben - somit...
authorpk910 <philipp@pk910.de>
Thu, 10 Mar 2016 00:50:38 +0000 (01:50 +0100)
committerpk910 <philipp@pk910.de>
Thu, 10 Mar 2016 00:50:38 +0000 (01:50 +0100)
app/src/main/java/de/dhbwloe/campusapp/CampusApp.java
app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java
app/src/main/java/de/dhbwloe/campusapp/NavigationManager.java

index 654a4dc1f708a187ec7a35c948ed201f059f16b4..499a665e9bcc78b7ceb8dbb935729419a2c61cd8 100644 (file)
@@ -17,6 +17,7 @@ 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;
@@ -45,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;
 
@@ -72,7 +72,7 @@ public class CampusApp extends FragmentActivity {
         // 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);
 
@@ -155,30 +155,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");
-                        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");
+                for(CampusAppContext.NavigationItem navitem : AppContext.NAVIGATION_TARGETS) {
+                    if(navitem.navItemId == id) {
+                        AppContext.getNavigationManager().navigatePage(navitem.navTarget);
                         break;
-                    case R.id.nav_settings:
-                        AppContext.getNavigationManager().navigatePage("Settings");
-                        break;
-                    case R.id.nav_wifi:
-                        AppContext.getNavigationManager().navigatePage("WifiSettings");
-                        break;
-                    case R.id.nav_impressum:
-                        AppContext.getNavigationManager().navigatePage("Impressum");
-                        break;
-                    default:
-                        return false;
+                    }
                 }
 
                 DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
@@ -308,7 +289,9 @@ public class CampusApp extends FragmentActivity {
     @Override
     public void onResume() {
         if(AppContext == null)
-            AppContext = new CampusAppContext(this, R.id.fragment_container);
+            AppContext = CampusAppContext.getInstance();
+        if(AppContext == null)
+            AppContext = new CampusAppContext(this, R.id.fragment_container, R.id.nav_view);
         else
             AppContext.setMainActivity(this);
 
index 80db8ac27284c5f22b0b69c934f8ae7597c03de6..99a1d17f94bb7d019604e162ccd655b7f06bda68 100644 (file)
@@ -62,6 +62,46 @@ public class CampusAppContext {
             this.fragementType = type;
         }
     }
+    public class NavigationItem {
+        int navItemId;
+        String navTarget;
+    };
+
+    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";
+            }},
+
+    };
 
     public static final String APPVERSION = "0.1.3 (beta)";
     private final AppPage[] PAGES = { // Hier müssen alle Fragmente, die auf der Activity angezeigt werden sollen eingetragen werden.
@@ -92,12 +132,12 @@ public class CampusAppContext {
     private NfcCardListener oNfcCardListener;
     private Bundle oContextVariables;
 
-    public CampusAppContext(CampusApp mainActivity, int fragmentContainerId) {
+    public CampusAppContext(CampusApp mainActivity, int fragmentContainerId, int navigationViewId) {
         final CampusAppContext AppContext = this;
         instance = this;
         oMainActivity = mainActivity;
         oContextVariables = new Bundle();
-        oNavigationManager = new NavigationManager(this, fragmentContainerId);
+        oNavigationManager = new NavigationManager(this, fragmentContainerId, navigationViewId);
         oDatabaseManager = new DatabaseManager(this);
         oNfcCardListener = new NfcCardListener(this);
 
index ed339dd8a6b10cad42f64815ebf234ccd8de9f2b..073bf190bab359bda77f0c1fd2c33ed42840e275 100644 (file)
@@ -16,6 +16,7 @@
 package de.dhbwloe.campusapp;
 
 import android.os.Bundle;
+import android.support.design.widget.NavigationView;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.app.FragmentTransaction;
@@ -53,13 +54,15 @@ public class NavigationManager {
 
     // Container ID
     private int iFragmentContainerId;
+    private int iNavigationViewId;
 
     // Alle registrierte Fragmente mit Name
     private ArrayList<NavPage> lNavigationPages = new ArrayList<NavPage>();
 
-    public NavigationManager(CampusAppContext context, int fragmentContainer) {
+    public NavigationManager(CampusAppContext context, int fragmentContainer, int navigationView) {
         AppContext = context;
         iFragmentContainerId = fragmentContainer;
+        iNavigationViewId = navigationView;
         oCurrentPage = null;
     }
 
@@ -152,6 +155,8 @@ public class NavigationManager {
         oCurrentPage = page;
         oCurrentFragment = fragment;
 
+        updateNavigationHighlight();
+
         transaction.commit();
     }
 
@@ -225,4 +230,22 @@ public class NavigationManager {
         return closeDialog();
     }
 
+    private void updateNavigationHighlight() {
+        NavigationView navigationView = (NavigationView) AppContext.getMainActivity().findViewById(iNavigationViewId);
+
+        if(oCurrentPage == null)
+            return;
+
+        int activeItemId = 0;
+        for(CampusAppContext.NavigationItem navitem : AppContext.NAVIGATION_TARGETS) {
+            if(oCurrentPage.name.equalsIgnoreCase(navitem.navTarget)) {
+                activeItemId = navitem.navItemId;
+            }
+        }
+        if(activeItemId == 0)
+            return;
+
+        navigationView.setCheckedItem(activeItemId);
+    }
+
 }