using System; using System.Collections.Generic; using System.Diagnostics; using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Platform.Storage; namespace spplus; public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void MnuExpSettings_OnClick(object? sender, RoutedEventArgs e) { var res = MessageBox.Show(this, "Dieses Feature ist noch nicht implementiert", "Fehlend"); } private void MnuExit_OnClick(object? sender, RoutedEventArgs e) { Environment.Exit(0); } private void MnuHelp_OnClick(object? sender, RoutedEventArgs e) { try { Process.Start(new ProcessStartInfo { FileName = "https://git.mypapercloud.de/fierke/spplus/wiki", UseShellExecute = true // Wichtig für Plattformübergreifendes Öffnen }); } catch (Exception ex) { Console.WriteLine($"Fehler beim Öffnen des Links: {ex.Message}"); } } private void MnuGit_OnClick(object? sender, RoutedEventArgs e) { try { Process.Start(new ProcessStartInfo { FileName = "https://git.mypapercloud.de/fierke/spplus", UseShellExecute = true // Wichtig für Plattformübergreifendes Öffnen }); } catch (Exception ex) { Console.WriteLine($"Fehler beim Öffnen des Links: {ex.Message}"); } } private void MnuAbout_OnClick(object? sender, RoutedEventArgs e) { Window w = new(); w.WindowState = WindowState.Normal; w.WindowStartupLocation = WindowStartupLocation.CenterScreen; w.Width = 300; w.Height = 120; Grid g = new(); TextBlock tb = new() { Text = "spplus v1.0.0\n(c)2026 MyPapertown, Elias Fierke" }; g.Children.Add(tb); w.Content = g; w.Show(); } private async void BtnImport_OnClick(object? sender, RoutedEventArgs e) { var topLevel = GetTopLevel(this); var file = await topLevel!.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions { Title = "CSV-Datei auswählen", AllowMultiple = false, FileTypeFilter = new[] { new FilePickerFileType(".csv-Datei") { Patterns = new[] { "*.csv" } } } }); if (file == null) return; var imported_students = import.ImportStudentsFromFile(file[0].Path.LocalPath.ToString()); foreach (var s in imported_students) { Settings.Instance.Students.Add(s); } RefreshImportedStudentList(); } private void RefreshImportedStudentList() { LbStudentsImported.Items.Clear(); int count_selected = 0; foreach (var s in Settings.Instance.Students) { LbStudentsImported.Items.Add(s); count_selected += s.SelectedCourseNames.Count; } LblStudentAmount.Content = Settings.Instance.Students.Count.ToString(); LblSelectedAmount.Content = count_selected.ToString(); } private void BtnCraftCourses_OnClick(object? sender, RoutedEventArgs e) { // Craft courses here / call course-crafter } private void LbStudentsImported_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) { Prepare(); var stud = (Student)LbStudentsImported.SelectedItem; if (stud == null) { TbStudentName.Text = string.Empty; TbStudentID.Text = string.Empty; SetEmpty(); return; }; try { TbStudentName.Text = stud.Name; TbStudentID.Text = stud.ID; LblSport1.Content = stud.SelectedCourseNames[0]; LblSport2.Content = stud.SelectedCourseNames[1]; LblSport3.Content = stud.SelectedCourseNames[2]; LblSport4.Content = stud.SelectedCourseNames[3]; } catch { SetEmpty(); } return; void SetEmpty() { if(LblSport1.Content == "null") LblSport1.Content = "ungewählt"; if(LblSport2.Content == "null") LblSport2.Content = "ungewählt"; if(LblSport3.Content == "null") LblSport3.Content = "ungewählt"; if(LblSport4.Content == "null") LblSport4.Content = "ungewählt"; } void Prepare() { LblSport1.Content = "null"; LblSport2.Content = "null"; LblSport3.Content = "null"; LblSport4.Content = "null"; } } private void TbStudentName_OnTextChanged(object? sender, TextChangedEventArgs e) { try { ((Student)LbStudentsImported.SelectedItem).Name = TbStudentName.Text; //int current = LbStudentsImported.SelectedIndex; //RefreshImportedStudentList(); //LbStudentsImported.SelectedIndex = current; } catch { } } private void TbStudentID_OnTextChanged(object? sender, TextChangedEventArgs e) { try { ((Student)LbStudentsImported.SelectedItem).Name = TbStudentID.Text; //int current = LbStudentsImported.SelectedIndex; //RefreshImportedStudentList(); //LbStudentsImported.SelectedIndex = current; } catch { } } }