/// <summary> /// Gibt die aktuellen Partys aus der Umgebung zurück. /// </summary> /// <returns></returns> private static async Task <IEnumerable <Party> > btnInDerNaehePartysAbrufen() { IEnumerable <Party> partyListe = null; Location pos; try { // Aktuelle Position ermitteln var geoLocation = new GeolocationLogik(); pos = await geoLocation.GetLocation(); } catch (Exception) { var message = new MessageDialog(Meldungen.Hauptansicht.FehlerGPSNoetig, "Achtung!"); await message.ShowAsync(); return(null); } // Radius aus UserEinstellungen UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen(); float radius = einst.Radius; // Liste der Partys vom BackEnd erhalten partyListe = await BackEndComPartyLogik.GetParties(pos, radius); // Zwischenspeichern der aktuell angezeigten Partys bool erfolg = await ListViewAuslesenUndZwischenspeichern(partyListe); if (erfolg == false) { var message = new MessageDialog(Meldungen.Hauptansicht.FehlerZwischenSpeichern, "Fehler beim Speichern für Offline-Nutzung!"); } return(partyListe); }
/// <summary> /// Bei Wechsel auf diese Seite wird eine Hinweismeldung ausgegeben (falls man vom Anmelden oder Registrieren kommt). /// Zusätzlich werden die eventuell schon zwischengespeicherten Partys wieder ausgelesen. /// </summary> /// <param name="e"></param> protected async override void OnNavigatedTo(NavigationEventArgs e) { // Sperren der Oberfläche this.IsEnabled = false; this.AppBarButtonEinstellungen.IsEnabled = false; this.AppBarButtonHinzufuegen.IsEnabled = false; this.AppBarButtonInDerNaehe.IsEnabled = false; progressRingInDerNaehe.Visibility = Visibility.Visible; progressRingInDerNaehe.IsActive = true; // Hinweis erscheint nur, wenn man vom Anmelden/Registrieren auf diese Haupansicht kommt PageStackEntry vorherigeSeite = Frame.BackStack.Last(); Type vorherigeSeiteTyp = vorherigeSeite?.SourcePageType; if (vorherigeSeiteTyp == (typeof(FensterAnmelden)) || vorherigeSeiteTyp == (typeof(FensterReg))) { var message = new MessageDialog(Meldungen.Hauptansicht.Nutzungsbedingungen, "Hinweis"); await message.ShowAsync(); } try { // Anzeigen der zwischengespeicherten Partys (falls vorhanden) partyListe = await DatenVerarbeitung.PartysAuslesen(); } catch (Exception) { } UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen(); if (einst.GPSErlaubt == true) { // Anzeigen der Partys in der "normalen" Liste und ggf. in der Liste für die vorgemerkten Partys. if (partyListe != null && partyListe.Any() == true) { anzahlPartys = partyListe.Count(); for (int durchlauf = 0; durchlauf < anzahlPartys; durchlauf++) { // Liste aller Partys in der Nähe werden in der "normalen" ListView angezeigt party = partyListe.ElementAt(durchlauf); listViewSuchErgebnis.Items.Add(party.PartyName); // Auf der Karte anzeigen PartyAufMapAnzeigen(party); // Liste der vorgemerkten Partys werden in einer separaten ListView angezeigt if (party.UserCommitmentState == EventCommitmentState.Noted) { listViewVorgemerkt.Items.Add(party.PartyName); anzahlVorgemerkt++; } // Liste der Partys, bei denen der Nutzer teilnimmt, werden in einer separaten ListView angezeigt if (party.UserCommitmentState == EventCommitmentState.Accepted) { listViewTeilnahme.Items.Add(party.PartyName); anzahlTeilgenommen++; } } } // Aktuelle Position ermitteln und dies als Kartenmittelpunkt setzen var geoLocation = new GeolocationLogik(); Location location = await geoLocation.GetLocation(); BasicGeoposition basis = new BasicGeoposition() { Latitude = location.Latitude, Longitude = location.Longitude }; Geopoint point = new Geopoint(basis); mapControlHauptansicht.Center = point; mapControlHauptansicht.ZoomLevel = 15; mapControlHauptansicht.LandmarksVisible = true; } // Entsperren der Oberfläche progressRingInDerNaehe.Visibility = Visibility.Collapsed; progressRingInDerNaehe.IsActive = false; this.AppBarButtonEinstellungen.IsEnabled = true; this.AppBarButtonHinzufuegen.IsEnabled = true; this.AppBarButtonInDerNaehe.IsEnabled = true; this.IsEnabled = true; }