Skip to content

Saritus/hap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hap

Download

Videos

Projekt

Bei hap handelt es sich um eine Android App, welche mittels Xamarin erstellt wurde. Das Interface wird erzeugt durch axml-Dateien und die Funktionalität wurde in C# programmiert.

Klassendiagramm

Die Klassenstruktur hält sich an die Regeln des Model-View-Controllers und enthält eine klare Trennung von Views, Activities, dem Objektmanager, den lokalen Daten und externen Verbindungen.

Lokale Daten

Drops

Drop

Die Grundlage von hap sind die sogenannten Drops. Das, was für den Kalender der Termin ist, ist für hap der Drop. Er speichert Informationen, wie ID, Name, Beschreibung, Kategorie, Ort, Zeit und Bild. Außerdem wird im Drop gekennzeichnet, ob ein Nutzer diesen Drop ignoriert hat.

ImageStorage

Der ImageStorage ist für die lokale Verwaltung von Bildern zuständig. Er besitzt ein Nachschlagewerk, welches jedem Bild einen eindeutigen Verweis zugeordnet. Das sorgt dafür, dass Drops, die das gleiche Bild besitzen, dieses nicht mehrfach an unterschiedlichen Stellen gespeichert haben müssen. Außerdem kümmert sich der ImageStorage um das Herunterladen von Bildern aus dem Internet, sollte es sich bei dem eingetragenen Verweis um eine URL handeln.

Programmiert ist der ImageStorage nach dem Prinzip des Singleton-Patterns, welches dafür sorgt, dass unterschiedliche Activities auf dieselbe Instanz zugreifen können, ohne sie mittels eines Parameters zu übergeben.

DropManager

DropManager

Der DropManager verwaltet sämtliche im System vorhandenen Drops. Er bietet mehrere Funktionen um die Liste nach bestimmten Kriterien, wie Gebäude oder Kategorie, zu filtern, nach Drops zu suchen, alle Drops in einer Datei zu speichern oder von einer Datei Drops zu laden, mittels eines Connectors sich mit einer Datenbank zu verbinden und somit Drops mit anderen Nutzern zu synchronisieren.

Verbindung

FakeConnector

Die Verbindung zu einer externen Quelle wird über eine Klasse gelöst, die das Connector-Interface implementiert. Dies sorgt dafür, dass die Art der Verbindung schnell und leicht gewechselt werden kann, da eine alternative Verbindungsklasse ebenfalls die Funktionen getNewDrops und saveNewDrop implementiert haben muss. Ebenso ist es möglich, einen FakeConnector zu benutzen, die zwar reagiert wie ein tatsächlicher Connector, in Wirklichkeit aber sämtliche Daten lokal vorliegen hat.

Interface

Ladebildschirm

LoadingScreen

Während des Ladebildschirms werden die bisher heruntergeladenen und erstellten Drop aus einer Datei geladen. Anschließend wird geprüft, ob es neue Drops auf dem Server gibt, so dass diese ebenfalls dem DropManager hinzugefügt werden können. Sollte es bei den neuen Drops auch neue Bilder geben, so werden auch diese heruntergeladen und im ImageStorage vermerkt.

Hauptbildschirm

MainScreen

Die Hauptansicht ist die Ansicht, die nach dem Start der App geöffnet wird. Sie sieht als Übersichtsansicht, von derer man in alle anderen Oberflächen gelangen kann.

Die MainActivity nimmt alle im DropManager vorhandenen Drops und erzeugt aus ihnen ImageButtons, welche dann an der richtigen Stelle auf der Karte eingefügt werden und auf die DropDetailsView des jeweiligen Drops verweisen.

Außerdem ist es in der Hauptansicht möglich, die Filterauswahl zu öffnen, mit derer man die Drops, welche auf der Karte angezeigt werden, nach Kategorien filtern kann.

Dropliste

History

In der HistoryActivity werden alle Drops des DropManager, sortiert nach ihrem jeweiligen Startdatum, in der Listenansicht angezeigt. Dafür wird für jeden Drop ein TableItem erstellt, welches die ID, den Namen, den Ort, die Startzeit und das Logo entsprechend der Kategorie des Drop besitzt. Diese TableItems werden dann der ListView hinzugefügt.

Detailansicht

DropDetail

Die Detailansicht dient dazu, dem Nutzer sämtliche in einem Drop gespeicherte Informationen anzuzeigen. Dafür werden Name, Beschreibung, Start- und Endzeit sowie Ort in einer einfachen Textansicht dargestellt. Für die Kategorie wird ein entsprechendes Icon abgebildet. Außerdem wird das im Drop eingetragene Bild angezeigt und wechselt beim Klick darauf in den Vollbildmodus. Zudem ist es möglich, sich die Position des Drop separiert auf einer Karte anzuschauen. Ebenfalls kann der Nutzer den Drop ignorieren, so dass er in der Hauptansicht nicht mehr auf der Karte abgebildet wird.

Neuen Drop erstellen

NewDrop

Das Erstellen eines neuen Drops erfolgt in einer gesonderten Eingabemaske. Hier kann der Nutzer den Namen, die Beschreibung und den Ort des Drop in einem Textfeld eingeben. Für den Ort wird anschließend in einer vorgefertigten Tabelle geschaut, an welcher Position sich der eingegebene Raum befindet. Die Start- und Endzeit wird vom Nutzer in einer sich zusätzlich öffnenden Kalenderansicht ausgewählt und danach intern in Form einer DateTime gespeichert. Wenn der Nutzer ein Bild für den Drop hinzufügen möchte, so wird dafür der Android-interne "Foto auswählen"-Dialog geöffnet und der Nutzer kann sich entweder eines der bereits auf dem Handy befindlichen Bilder aussuchen, oder über das Kamera-Menü ein neues aufnehmen und dieses benutzen. Nachdem sich für ein Bild entschieden wurde, so wird dieses dem ImageStorage hinzugefügt und der Verweis darauf im Drop hinterlegt.

Beteiligte

Projektmanager: Tom Ille

Konzeptor: Konstantin George

Gestaltung: Thomas Theling

Front-End: Julian Fuchs

Back-End: Sebastian Mischke

Releases

No releases published

Packages

No packages published

Languages