diff --git a/ACP/Core.cs b/ACP/Core.cs index 0aa0f14..8621130 100644 --- a/ACP/Core.cs +++ b/ACP/Core.cs @@ -1,5 +1,6 @@ namespace ACP { + using ApS; public class Core { #region Felder @@ -169,7 +170,7 @@ public void DeleteBild(int nummer) #endregion #region ToDos - public void SaveToDo(string bezeichnung, int cosplan_nr, int prozentErledigt, decimal kosten, ApS.Time zeit, int nummer = 0) + public void SaveToDo(string bezeichnung, int cosplan_nr, int? prozentErledigt, decimal? kosten, Time zeit, int nummer = 0) { using (ToDos toDos = new ToDos()) { @@ -177,8 +178,8 @@ public void SaveToDo(string bezeichnung, int cosplan_nr, int prozentErledigt, de { toDos.Bezeichnung = bezeichnung; toDos.Cosplan_Nr = cosplan_nr; - toDos.ProzentErledigt = prozentErledigt; - toDos.Kosten = kosten; + toDos.ProzentErledigt = prozentErledigt.ToInt(); + toDos.Kosten = kosten.ToDecimal(); toDos.Zeit = zeit; toDos.Save(ApS.Databases.SqlAction.Insert); @@ -188,10 +189,22 @@ public void SaveToDo(string bezeichnung, int cosplan_nr, int prozentErledigt, de toDos.Where = "Nummer = " + nummer; toDos.Read(); - toDos.Bezeichnung = bezeichnung; - toDos.ProzentErledigt = prozentErledigt; - toDos.Kosten = kosten; - toDos.Zeit = zeit; + if (!string.IsNullOrEmpty(bezeichnung)) + { + toDos.Bezeichnung = bezeichnung; + } + if (prozentErledigt != null) + { + toDos.ProzentErledigt = prozentErledigt.ToInt(); + } + if (kosten != null) + { + toDos.Kosten = kosten.ToDecimal(); + } + if (zeit != null) + { + toDos.Zeit = zeit; + } toDos.Save(ApS.Databases.SqlAction.Update); } diff --git a/ACP_GUI/Cosplan.xaml.cs b/ACP_GUI/Cosplan.xaml.cs index 2246903..ed1bc9a 100644 --- a/ACP_GUI/Cosplan.xaml.cs +++ b/ACP_GUI/Cosplan.xaml.cs @@ -381,6 +381,7 @@ private void ActualizeSingleToDoRow(GridExtended grid, ToDos toDos) { grid.Children.Clear(); grid.DataObject = new ToDos4Grid(toDos); + grid.FocusElementInEditMode = 2; TextBlock labelNummer = new TextBlock { @@ -404,7 +405,7 @@ private void ActualizeSingleToDoRow(GridExtended grid, ToDos toDos) { TextBlock labelKosten = new TextBlock { - Text = toDos.Kosten.ToString("#.##") + " €", + Text = toDos.Kosten.ToString("C"), HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Center, Foreground = Layout.WindowForeground @@ -413,6 +414,18 @@ private void ActualizeSingleToDoRow(GridExtended grid, ToDos toDos) Grid.SetColumn(labelKosten, 5); Grid.SetColumnSpan(labelKosten, 2); grid.Add2Children(labelKosten); + + BaseCheckBox chkErledigt = new BaseCheckBox + { + IsChecked = toDos.ProzentErledigt == 100, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + chkErledigt.CheckedChanged += ChkErledigt_CheckedChanged; + + Grid.SetColumn(chkErledigt, 7); + Grid.SetColumnSpan(chkErledigt, 2); + grid.Add2Children(chkErledigt); } else if (this.core.GetKategorie(toDos.Kategorie_Nr) == "Machen") { @@ -435,9 +448,15 @@ private void ActualizeSingleToDoRow(GridExtended grid, ToDos toDos) VerticalAlignment = VerticalAlignment.Center, Foreground = Layout.WindowForeground }; + comboProzentErledigt.SelectionChanged += ComboProzentErledigt_SelectionChanged; + for (int i = 0; i <= 100; i = i + 5) { comboProzentErledigt.Items.Add(new ComboBoxItem { Content = i + "%" }); + if (i == toDos.ProzentErledigt) + { + comboProzentErledigt.SelectedIndex = comboProzentErledigt.Items.Count - 1; + } } Grid.SetColumn(comboProzentErledigt, 7); @@ -457,6 +476,32 @@ private void ActualizeSingleToDoRow(GridExtended grid, ToDos toDos) grid.Children.Add(buttonDelToDo); } + private void ChkErledigt_CheckedChanged(object sender, EventArgs e) + { + BaseCheckBox chk = (BaseCheckBox)sender; + ToDos4Grid toDos4Grid = (ToDos4Grid)((GridExtended)chk.Parent).DataObject; + if (chk.IsChecked) + { + this.core.SaveToDo(null, toDos4Grid.Cosplan_Nr, 100, null, null, toDos4Grid.Nummer); + } + else + { + this.core.SaveToDo(null, toDos4Grid.Cosplan_Nr, 0, null, null, toDos4Grid.Nummer); + } + } + + private void ComboProzentErledigt_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + try + { + ComboBox combo = (ComboBox)sender; + ToDos4Grid toDos4Grid = (ToDos4Grid)((GridExtended)combo.Parent).DataObject; + this.core.SaveToDo(null, toDos4Grid.Cosplan_Nr, ((ComboBoxItem)combo.SelectedItem).Content.ToString().Replace("%", "").ToInt(), null, null, toDos4Grid.Nummer); + } + catch (NullReferenceException) + { /* combo.Parent is null, if window isn't loaded yet */ } + } + private void Grid_MouseLeave(object sender, MouseEventArgs e) { Grid grid = (Grid)sender;