예제 #1
0
        /// <summary>
        /// Wenn auf den Knopf Einzel Ansicht geklickt wird,
        /// wird ein neues Objekt vom Typ UC_EinzelAnsicht erzeugt und angezeigt.
        /// Dies öffnet das Fenster um einen neuen Einsatz zu erstellen.
        /// </summary>
        /// <param name="sender">Button Objekt</param>
        /// <param name="e">Event Parameter</param>
        private void einzel_ansicht_neu_Click(object sender, RoutedEventArgs e)
        {
            EinzelAnsicht einzelAnsicht = new EinzelAnsicht(0);

            einzelAnsicht.Show();
            // Solange das EinzelAnsicht Fenster offen ist, soll das MainWindow gesperrt sein.
            this.IsEnabled = false;
            // Die Breite und die Höhe des MainWindow werden auf 500 und 300 gesezt.
            this.Width  = this.MinWidth = this.MaxWidth = 500;
            this.Height = 300;
            // Das MainWindow darf nicht vergrössert oder verkleinert werden.
            this.ResizeMode = ResizeMode.NoResize;
            // Wenn das EinzelAnsicht Fenster geschlossen wird, wird das MainWindow wieder freigegeben und die Listen Ansicht wird angezeigt.
            einzelAnsicht.Closed += new EventHandler((o, args) =>
            {
                this.IsEnabled = true;
                UCView.Content = new UC_ListenAnsicht();
            });
        }
예제 #2
0
        /// <summary>
        /// Wenn auf einen Einsatz geklickt wird, wird eine EinzelAnsicht geöffnet in der der Einsatz
        /// bearbeitet werden kann.
        /// </summary>
        /// <param name="sender">DataGrid Objekt</param>
        /// <param name="e">Event Parameter</param>
        private void listen_ansicht_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            // Das Sender Objekt wird in ein DataGrid konvertiert und
            // das ausgewählte Element wird geholt.
            DataGrid grid        = sender as DataGrid;
            Data     einsatzData = grid.SelectedValue as Data;
            // Eine EinzelAnsicht wird erstellt und als Parameter die Id des geklickten Einsatzes.
            EinzelAnsicht einzelAnsicht = new EinzelAnsicht(einsatzData.ID);

            // Die EinzelAnsicht wird angezeigt und das MainWindow wird gesperrt.
            einzelAnsicht.Show();
            Window.GetWindow(this).IsEnabled = false;
            // Wenn das EinzelAnsicht Fenster geschlossen wird, wird das
            // MainWindow wieder aktiviert, und ddas DataGrid wird aktualisiert.
            einzelAnsicht.Closed += new EventHandler((o, args) =>
            {
                Window.GetWindow(this).IsEnabled = true;
                setData();
            });
        }
 /// <summary>
 /// Diese Methode generiert den Kalender und sezt die Aktuelle Woche. Wenn sich in dieser Woche
 /// Einsätze befinden, werden diese mit Dauer angezeigt.
 /// </summary>
 private void generiereKalender()
 {
     // Den Kopfzeilen werden das Datum hinzugefügt.
     montag_datum.Content     += "\n" + Woche[0].Date.ToShortDateString();
     dienstag_datum.Content   += "\n" + Woche[1].Date.ToShortDateString();
     mittwoch_datum.Content   += "\n" + Woche[2].Date.ToShortDateString();
     donnerstag_datum.Content += "\n" + Woche[3].Date.ToShortDateString();
     freitag_datum.Content    += "\n" + Woche[4].Date.ToShortDateString();
     samstag_datum.Content    += "\n" + Woche[5].Date.ToShortDateString();
     sonntag_datum.Content    += "\n" + Woche[6].Date.ToShortDateString();
     foreach (Einsatz e in Bibliothek.Einsatz_Alle())
     {
         foreach (DateTime tag in Woche)
         {
             if (e.Start.Date == tag.Date)
             {
                 // Wenn das Datum des Wochentages des Einsatzes mit dem Datum des Wochentages in der foreach Schlaufe übereinstimmt,
                 // Wird ein Button generiert.
                 Button feld = new Button();
                 feld.BorderThickness = new Thickness(0, 0, 0, 0);
                 // Der Text des Buttons wird auf die ID des Einsatzes gesezt da für mehr kein Platz ist.
                 feld.Content = "ID: " + e.ID.ToString();
                 // Als ToolTip werden weitere Informationen angezeigt.
                 feld.ToolTip = "Mitarbeiter: " + e.Mitarbeiter.Vorname + " " + e.Mitarbeiter.Name + "\nProjekt: " + e.Projekt.Name;
                 feld.Width   = 50;
                 // Die höhe des Buttons entspricht der Dauer des Einsatzes. Eine Minute entspricht einem Pixel.
                 feld.Height = ((e.Ende.Hour * 60) + e.Ende.Minute) - ((e.Start.Hour * 60) + e.Start.Minute);
                 // Die Hintergrundfarbe des Buttons wird auf die Farbe des EInsatzes gsesezt.
                 feld.Background = new SolidColorBrush(e.Farbe);
                 // Der Abstand oben ist die Startzeit in Pixel also bei 02:00 wären es 120 Pixel.
                 // Das bewirkt dass der Button Dort anfängt wo die Startzeit ist.
                 feld.Margin = new Thickness(0, (e.Start.Hour * 60) + e.Start.Minute, 0, 0);
                 // Nun wird noch definiert das der Button standartmässig im linken oberen Ecken ist ( falls keine Abstände definiert sind ).
                 feld.HorizontalAlignment = HorizontalAlignment.Left;
                 feld.VerticalAlignment   = VerticalAlignment.Top;
                 // Es wird noch ein EventHandler gesezt das wenn auf den Button geklickt wird,
                 // wird der Einsatz in der Einzel Ansicht dargestellt und kann bearbeitet werden.
                 feld.Click += (sender, args) =>
                 {
                     // Eine Einzel Ansicht wird erstellt und angezeigt.
                     EinzelAnsicht einzelAnsicht = new EinzelAnsicht(e.ID);
                     einzelAnsicht.Show();
                     // Das MainWindow wird gesperrt.
                     Window.GetWindow(this).IsEnabled = false;
                     // Wenn das Fenster geschlossen wird, soll es den Kalender neu erstellen,
                     // da die Daten des EInsatzes geändert werden können während die EInzel Ansicht offen ist.
                     einzelAnsicht.Closed += new EventHandler((o, args2) =>
                     {
                         // Das MainWindow wird wieder aktiviert.
                         Window.GetWindow(this).IsEnabled = true;
                         // Für jeden Wochentag wird das Grid geleert.
                         foreach (KeyValuePair <string, Grid> eintrag in TagZuSpalte)
                         {
                             löscheKalender();
                         }
                         // Nun wird der Kalender neu generiert.
                         generiereKalender();
                     });
                 };
                 // Der Button wird zu dem passenden Grid hinzugefügt.
                 TagZuSpalte[e.Start.DayOfWeek.ToString()].Children.Add(feld);
                 // Wenn die Mitarbeiter ID grösser 1 ist, wird der Einsatz in die rechte Kolonne gesezt.
                 if (e.Mitarbeiter.ID > 1)
                 {
                     feld.SetValue(Grid.ColumnProperty, 1);
                 }
                 // Wenn die Mitarbeiter ID kleiner 1 ist, wird der Einsatz in die linke Kolonne gesezt.
                 else
                 {
                     feld.SetValue(Grid.ColumnProperty, 0);
                 }
                 // Der Button wird im Grid in die erste Reihe gesezt.
                 feld.SetValue(Grid.RowProperty, 0);
             }
         }
     }
 }