/// <summary> /// Wechsel zur Hauptansicht und Speichern der eingegeben Daten. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void Speichern_DatenSichernUndWechselZuHauptansicht(object sender, RoutedEventArgs e) { // Sperren der Oberfläche SperrenDerAnsicht(); bool speichernErfolgreich = false; UserEinstellungen einst = new UserEinstellungen(); // Aktueller Wert des Sliders für den Radius einst.Radius = (float)sliderSuchradius.Value; einst.GPSErlaubt = toggleSwitchGPSErlaubnis.IsOn; // Weitere Einstellungen möglich // Speichern der Nutzereinstellungen in einer Datei speichernErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst); // Wechsel zur Hauptansicht und Ausgabe des Erfolgs/Misserfolgs beim Speichern if (speichernErfolgreich == true) { this.Frame.Navigate(typeof(FensterHauptansicht)); } else { var message = new MessageDialog(Meldungen.UserEinstellungen.SpeicherFehler, "Fehler!"); await message.ShowAsync(); this.Frame.Navigate(typeof(FensterHauptansicht)); } // Oberfläche entsperren EntsperrenDerAnsicht(); }
/// <summary> /// Abmelden durch Wechsel zur Startansicht (FensterAnmOdReg) und Speichern von Defaultwerten /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void btnAbmelden_wechselZuFensterAnmelden(object sender, RoutedEventArgs e) { // Sperren der Oberfläche SperrenDerAnsicht(); // UserEinstellungen auf Default zurücksetzen bool speichernErfolgreich = false; UserEinstellungen einst = new UserEinstellungen(); einst.Radius = 50; // "Neue" Werte speichern speichernErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst); // Partyliste aus Zwischenspeichern löschen IEnumerable <Party> liste = null; speichernErfolgreich = await DatenVerarbeitung.PartysSpeichern(liste); // Oberfläche entsperren EntsperrenDerAnsicht(); // Wechsel zum Start this.Frame.Navigate(typeof(FensterAnmOdReg)); }
/// <summary> /// Stellt die Erlaubnis für die GPS-Nutzung ein und fragt bei Änderungen nochmal nach. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void toggleSwitchGPSErlaubnis_GPSEinstellen(object sender, RoutedEventArgs e) { // Oberfläche sperren SperrenDerAnsicht(); UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen(); var accessStatus = await Geolocator.RequestAccessAsync(); if (accessStatus == GeolocationAccessStatus.Allowed) { // Status des ToggleSwitches NACH dem Antippen if (toggleSwitchGPSErlaubnis.IsOn == true) { einst.GPSErlaubt = true; } else { einst.GPSErlaubt = false; } } else { einst.GPSErlaubt = false; toggleSwitchGPSErlaubnis.IsOn = false; // Da GPS nicht erlaubt var message = new MessageDialog(Meldungen.UserEinstellungen.FehlerGPS, "Achtung!"); await message.ShowAsync(); } // Neue Einstellungen speichern await DatenVerarbeitung.UserEinstellungenSpeichern(einst); // Oberfläche entsperren EntsperrenDerAnsicht(); }
/// <summary> /// Speichert die Partys auf der ListView für die Offline-Nutzung. /// </summary> /// <param name="liste"></param> /// <returns></returns> private static async Task <bool> ListViewAuslesenUndZwischenspeichern(IEnumerable <Party> liste) { bool erfolg = false; erfolg = await DatenVerarbeitung.PartysSpeichern(liste); return(erfolg); }
/// <summary> /// Auslesen des vom Nutzer gesetzten Suchradius aus einer Datei und Anzeigen durch Slider. /// </summary> private async void SuchRadiusUndGPSEinstellen() { UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen(); if (einst.Radius != 0) { sliderSuchradius.Value = einst.Radius; } else { sliderSuchradius.Value = 50; } if (einst.GPSErlaubt == true) { toggleSwitchGPSErlaubnis.IsOn = true; } else { toggleSwitchGPSErlaubnis.IsOn = false; } }
/// <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; }
/// <summary> /// Zeigt die Partys in der Umgebung an. Suchradius wird in UserEinstellungen geändert. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public async void Suchen_abrufenPartys(object sender, RoutedEventArgs e) { // Sperren der Oberfläche SperrenDerAnsicht(); // Listen leeren listViewSuchErgebnis.Items.Clear(); listViewVorgemerkt.Items.Clear(); listViewTeilnahme.Items.Clear(); UserEinstellungen einst = await DatenVerarbeitung.UserEinstellungenAuslesen(); if (einst.GPSErlaubt == true) { // Liste der Partys aus der Nähe partyListe = await btnInDerNaehePartysAbrufen(); // Anzeigen der Partys in der "normalen" Liste und ggf. in der Liste für die vorgemerkten Partys. if (partyListe.Any()) { 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++; } } } else { var message = new MessageDialog(Meldungen.Hauptansicht.KeinePartysInDerNaehe, "Schade!"); await message.ShowAsync(); } } else { var message = new MessageDialog(Meldungen.Hauptansicht.FehlerGPSNoetig, "Achtung!"); await message.ShowAsync(); } // Oberfläche entsperren EntsperrenDerAnsicht(); }
/// <summary> /// Erstellen des neuen Nutzers und bei Erfolg wechseln zur Hauptansicht. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void Bestaetigen_WechselZuHauptansicht(object sender, RoutedEventArgs e) { bool status = false; bool erfolg = false; bool speichernErfolgreich = false; // Daten auslesen neuerNutzer.Username = textBoxRegNUTZERNAME.Text; neuerNutzer.Email = textBoxRegEMAIL.Text; // Oberfläche sperren SperrenDerAnsicht(); if (pwBoxPASSWORT.Password == pwBoxPASSWORTBEST.Password) { // Speichern des Passworts neuerNutzer.Password = pwBoxPASSWORTBEST.Password; // Anlegen des neuen Nutzers status = await BackEndComUserLogik.CreateUser(neuerNutzer); progRingReg.Visibility = Visibility.Collapsed; progRingReg.IsActive = false; // Abhängig vom Erfolg/Misserfolg beim Erstellen wird eine Nachricht angezeigt und ggf. die Ansicht gewechselt. if (status == true) { var message = new MessageDialog(Meldungen.Registrierung.ErfolgEins + neuerNutzer.Email.ToString() + Meldungen.Registrierung.ErfolgZwei, "Nutzer erfolgreich registriert!"); await message.ShowAsync(); // Speichern der Login-Daten erfolg = await DatenVerarbeitung.LoginSpeichern(neuerNutzer); // UserEinstellungen auf Default zurücksetzen UserEinstellungen einst = new UserEinstellungen(); einst.Radius = 50; einst.GPSErlaubt = false; // "Neue" Werte speichern speichernErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst); if (erfolg == true && speichernErfolgreich == true) { // Wechsel zur Hauptansicht this.Frame.Navigate(typeof(FensterHauptansicht)); } else { message = new MessageDialog(Meldungen.Registrierung.SpeicherFehler, "Fehler beim Speichern!"); await message.ShowAsync(); } } else { var message = new MessageDialog(Meldungen.Registrierung.ErstellenFehler, "Fehler beim Erstellen!"); await message.ShowAsync(); } } else { var message = new MessageDialog(Meldungen.Registrierung.PasswortFehler, "Passwörter sind nciht identisch!"); await message.ShowAsync(); } // Entsperren der Oberfläche EntsperrenDerAnsicht(); }
/// <summary> /// Hier werden die Daten vom Nutzer validiert. Entweder ändert sich die Anzeige (korrekte Daten) oder der Nutzer erhält eine Nachricht, /// dass die eingegeben Daten falsch sind. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void Anmelden_WechselZuHauptansicht(object sender, RoutedEventArgs e) { bool korrekteEingabe = false; bool speichernErfolgreich = false; bool einstellungenErfolgreich = false; // UserEinstellungen auf Default zurücksetzen UserEinstellungen einst = new UserEinstellungen(); einst.Radius = 50; einst.GPSErlaubt = false; // "Neue" Werte speichern speichernErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst); // Partyliste aus Zwischenspeichern löschen IEnumerable <Party> liste = null; speichernErfolgreich = await DatenVerarbeitung.PartysSpeichern(liste); anmeldung.Username = txtBoxAnmNUTZERNAME.Text; anmeldung.Email = txtBlAnmEMAIL.Text; anmeldung.Password = pwBoxPASSWORT.Password; // Sperren der Ansicht SperrenDerAnsicht(); korrekteEingabe = await DatenVerarbeitung.LoginUeberpruefen(anmeldung); if (korrekteEingabe == true) { // Speichern der Anmeldedaten in eine Textdatei speichernErfolgreich = await DatenVerarbeitung.LoginSpeichern(anmeldung); // Default-Radius für Suchumfeld in Datei speichern einstellungenErfolgreich = await DatenVerarbeitung.UserEinstellungenSpeichern(einst); if (speichernErfolgreich == true && einstellungenErfolgreich == true) { // Wenn alles erfolgreich gespeichert wurde progressRingAnmeldung.Visibility = Visibility.Collapsed; progressRingAnmeldung.IsActive = false; var message = new MessageDialog(Meldungen.Anmeldung.Erfolg, "Erfolg!"); await message.ShowAsync(); this.Frame.Navigate(typeof(FensterHauptansicht)); } else { var message = new MessageDialog(Meldungen.Anmeldung.UnbekannterFehler, "Unbekannter Fehler!"); await message.ShowAsync(); } } else { var message = new MessageDialog(Meldungen.Anmeldung.Misserfolg, "Fehler bei der Anmeldung!"); await message.ShowAsync(); } // Oberfläche entsperren EntsperrenDerAnsicht(); }