Die gesamte App wurde auf Basis einer einzigen Activity, auf welcher dynamisch Fragmente ausgetauscht werden aufgebaut. Wichtige Java Klassen der App: * CampusApp Die Klasse der haupt Activity. In dieser Klasse befindet sich die initialisierung des Grundgerüsts der App. Dazu gehören die Headerleise inklusive Such-Eingabe, die Navigationsleiste sowie der Platzhalter für spätere Fragmente. Die Klasse bildet den haupt Einstiegspunkt der App (Launcher) und erstellt beim start eine global verfügbare Instanz der Klasse CampusAppContext * CampusAppContext Der "Kontext" der App, ein einzelnes zentrales Objekt, was zur Laufzeit für alle weiteren teile der App zur verfügung steht. Innerhalb der Klasse CampusAppContext werden instanzen zum Navigations Manager, Datenbank Manager und der App Activity bereitgestellt. * NavigationManager Der Navigationsmanager (instanziert durch CampusAppContext) verwaltet die auf der App Activity angezeigten Fragmente und dient zur App internen Navigation. z.B. AppContext.getNavigationManager().navigatePage("Dashboard") Die einzelnen Fragmente der App müssen in CampusAppContext eingetragen werden. * fragments/* Fragmentspezifischer Code. Jedes Fragment der App wird im Hintergrund von einer eigenen Klasse verwaltet, welche hier zu finden ist. Fragmente, welche auf der App Activity angezeigt werden sollen müssen die Klasse CampusAppFragment erweitern. Die Klassen wurden dabei stets nach dem prinzip ()*(ListAdapter/ListItem) benannt. * database/* Datenbankspezifischer Code. Sämmtliche Datenbankabfragen werden durch die Klasse DatabaseManager verwaltet. Je nach Abfrage werden hierbei die entsprechenden Hilfsklassen MensaplanDatabaseHelper, NewsDatabaseHelper, VorlesungsplanDatabaseHelper genutzt. Auch die Struktur der Datenbank wird vom DatabaseManager beim ersten Start der App erstellt und bietet eine einfache Möglichkeit für spätere Updates der Struktur. * mensaplan/* Beinhaltet Code zum Herungerladen, Einlesen und Speicherung der durch die XML Schnittstelle bereitgestellten Daten. Die Klasse MensaTagesplan repräsentiert ein einzelnes Menü der Mensa. Diese Klasse dient als Transportobjekt sowohl vom XML Parser zur Datenbank als auch von der Datenbank an andere Teile der App. * news/* Selbes Prinzip wie mensaplan/*, jedoch fürs Einlesen der News (XML Parser) * vorlesungen/* Selbes Prinzip wie mensaplan/*, jedoch fürs Einlesen der Vorlesungsdaten (ICAL Parser) * nfcreader/* Code zum einlesen der Mensakarte. Dieser Code ist zu großen Teilen nicht selbst erstellt. Bereitgestellt durch: https://git.sterul.com/student-projects/dhbw-card-reader * search/* Beinhaltet Code zur Verwaltung der App Suche. Auch die entsprechenden HTTP Clients zur weiterleitung der Sucheingaben an die DHBW/STUV Webseite befinden sich hier (DhbwSearchHelper, StuvSearchHelper) Die App interne Suche besteht im grunde aus einem haufen von der App selbst erstellter Search Indices (Klasse SearchIndices) welche in der Datnebank gespeichert werden. Mithilfe der Klasse SearchTarget werden die teilweise mit Parametern bestückten Ziel Seiten dekodiert und aufgerufen. (z.B. #Vorlesungsplan#groupid=15 ) * network/* Beinhaltet Hilfsklassen für den XML/ISC Parser * wifi/* Beinhaltet Hilfsklassen für die automatische WLAN Konfiguration. Unter anderem sind ist hier auch der von der DHBW Bereitgestellte "Secure Login" für das dhbw-wlan realisiert.