Added flag-type editing to participant type, allowing participant to include several types

This commit is contained in:
Daniel Schick 2023-08-10 08:49:17 +02:00
parent 383f6a38c7
commit 6e764aa043
4 changed files with 57 additions and 17 deletions

View File

@ -4,6 +4,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:RoleEditor" xmlns:local="clr-namespace:RoleEditor"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d" mc:Ignorable="d"
Title="Bremen calling admin editor" Height="650" Width="800" Icon="Resources/lock_preferences.ico" Loaded="Window_Loaded"> Title="Bremen calling admin editor" Height="650" Width="800" Icon="Resources/lock_preferences.ico" Loaded="Window_Loaded">
<Grid> <Grid>
@ -66,7 +67,7 @@
<TextBox x:Name="textBoxParticipantPostalCode" Grid.Row="2" Grid.Column="2" Margin="2" VerticalContentAlignment="Center" /> <TextBox x:Name="textBoxParticipantPostalCode" Grid.Row="2" Grid.Column="2" Margin="2" VerticalContentAlignment="Center" />
<TextBox x:Name="textBoxParticipantCity" Grid.Row="3" Grid.Column="2" Margin="2" VerticalContentAlignment="Center" /> <TextBox x:Name="textBoxParticipantCity" Grid.Row="3" Grid.Column="2" Margin="2" VerticalContentAlignment="Center" />
<CheckBox x:Name="checkboxParticipantActive" Grid.Row="4" Grid.Column="2" VerticalAlignment="Center" /> <CheckBox x:Name="checkboxParticipantActive" Grid.Row="4" Grid.Column="2" VerticalAlignment="Center" />
<ComboBox x:Name="comboBoxParticipantType" Grid.Row="5" Grid.Column="2" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" /> <xctk:CheckComboBox x:Name="comboBoxParticipantType" Grid.Row="5" Grid.Column="2" Margin="2" SelectedValue="Key" DisplayMemberPath="Value" />
<TextBox x:Name="textBoxParticipantCreated" Grid.Row="6" IsReadOnly="True" IsEnabled="False" Grid.Column="2" Margin="2" VerticalContentAlignment="Center" /> <TextBox x:Name="textBoxParticipantCreated" Grid.Row="6" IsReadOnly="True" IsEnabled="False" Grid.Column="2" Margin="2" VerticalContentAlignment="Center" />
<TextBox x:Name="textBoxParticipantModified" Grid.Row="7" IsReadOnly="True" IsEnabled="False" Grid.Column="2" Margin="2" VerticalContentAlignment="Center" /> <TextBox x:Name="textBoxParticipantModified" Grid.Row="7" IsReadOnly="True" IsEnabled="False" Grid.Column="2" Margin="2" VerticalContentAlignment="Center" />
<Button x:Name="buttonParticipantSave" Grid.Row="8" Grid.Column="2" Click="buttonParticipantSave_Click" Margin="2"> <Button x:Name="buttonParticipantSave" Grid.Row="8" Grid.Column="2" Click="buttonParticipantSave_Click" Margin="2">

View File

@ -209,7 +209,18 @@ namespace RoleEditor
p.Street = this.textBoxParticipantStreet.Text.Trim(); p.Street = this.textBoxParticipantStreet.Text.Trim();
p.PostalCode = this.textBoxParticipantPostalCode.Text.Trim(); p.PostalCode = this.textBoxParticipantPostalCode.Text.Trim();
p.City = this.textBoxParticipantCity.Text.Trim(); p.City = this.textBoxParticipantCity.Text.Trim();
p.Type = (Participant.ParticipantType) Enum.Parse(typeof(Participant.ParticipantType), (string) this.comboBoxParticipantType.SelectedValue);
p.Type = 0;
for(int i = 0; i < this.comboBoxParticipantType?.SelectedItems.Count; i++)
{
object? v = this.comboBoxParticipantType?.SelectedItems[i];
if (v != null)
{
KeyValuePair<string, string> kvp = (KeyValuePair<string, string>)v;
Participant.ParticipantType pType = (Participant.ParticipantType)Enum.Parse(typeof(Participant.ParticipantType), kvp.Key);
p.SetFlag(true, pType);
}
}
await p.Save(_dbManager); await p.Save(_dbManager);
this.listBoxParticipant.ItemsSource = null; this.listBoxParticipant.ItemsSource = null;
this.listBoxParticipant.ItemsSource = _participants; this.listBoxParticipant.ItemsSource = _participants;
@ -357,7 +368,7 @@ namespace RoleEditor
private async void listBoxParticipant_SelectionChanged(object sender, SelectionChangedEventArgs e) private async void listBoxParticipant_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
Participant? p = this.listBoxParticipant.SelectedItem as Participant; Participant? p = this.listBoxParticipant.SelectedItem as Participant;
this.textBoxParticipantName.Text = (p != null) ? p.Name : string.Empty; this.textBoxParticipantName.Text = (p != null) ? p.Name : string.Empty;
this.textBoxParticipantStreet.Text = (p != null) ? p.Street : string.Empty; this.textBoxParticipantStreet.Text = (p != null) ? p.Street : string.Empty;
@ -366,8 +377,24 @@ namespace RoleEditor
// this.checkboxParticipantActive.Checked = (p != null) ? p. // this.checkboxParticipantActive.Checked = (p != null) ? p.
this.textBoxParticipantCreated.Text = (p != null) ? p.Created.ToString() : string.Empty; this.textBoxParticipantCreated.Text = (p != null) ? p.Created.ToString() : string.Empty;
this.textBoxParticipantModified.Text = (p != null) ? p.Modified.ToString() : string.Empty; this.textBoxParticipantModified.Text = (p != null) ? p.Modified.ToString() : string.Empty;
this.comboBoxParticipantType.SelectedValue = (p != null) ? p.Type : 0;
this.comboBoxParticipantType.SelectedItems.Clear();
if (p != null)
{
foreach (Participant.ParticipantType pType in Enum.GetValues(typeof(Participant.ParticipantType)))
{
if (p.IsFlagSet(pType))
{
foreach (KeyValuePair<string, string> kvp in this.comboBoxParticipantType.Items)
{
if (kvp.Key.Equals(pType.ToString()))
{
this.comboBoxParticipantType.SelectedItems.Add(kvp);
}
}
}
}
}
// -> load users for this participant selection // -> load users for this participant selection
this._users.Clear(); this._users.Clear();
if (p != null) if (p != null)
@ -556,7 +583,7 @@ namespace RoleEditor
#endregion #endregion
#region private static helper #region private static helper
private static BitmapImage? LoadImage(byte[] imageData) private static BitmapImage? LoadImage(byte[] imageData)
{ {

View File

@ -1,11 +1,8 @@
using System; // Copyright (c) 2023- schick Informatik
using System.Collections.Generic; // Description: Container for participants (Teilnehmer)
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Linq;
using System.Reflection.PortableExecutable;
using System.Text;
using System.Threading.Tasks;
namespace brecal.model namespace brecal.model
{ {
@ -46,7 +43,7 @@ namespace brecal.model
public string? City { get; set; } public string? City { get; set; }
public ParticipantType Type { get; set;} public uint Type { get; set;}
public uint Flags { get; set; } public uint Flags { get; set; }
@ -74,7 +71,7 @@ namespace brecal.model
if (!reader.IsDBNull(2)) p.Street = reader.GetString(2); if (!reader.IsDBNull(2)) p.Street = reader.GetString(2);
if (!reader.IsDBNull(3)) p.PostalCode = reader.GetString(3); if (!reader.IsDBNull(3)) p.PostalCode = reader.GetString(3);
if (!reader.IsDBNull(4)) p.City = reader.GetString(4); if (!reader.IsDBNull(4)) p.City = reader.GetString(4);
if (!reader.IsDBNull(5)) p.Type = (ParticipantType) reader.GetInt32(5); if (!reader.IsDBNull(5)) p.Type = (uint) reader.GetInt32(5);
if (!reader.IsDBNull(6)) p.Flags = (uint)reader.GetInt32(6); if (!reader.IsDBNull(6)) p.Flags = (uint)reader.GetInt32(6);
if (!reader.IsDBNull(7)) p.Created = reader.GetDateTime(7); if (!reader.IsDBNull(7)) p.Created = reader.GetDateTime(7);
if (!reader.IsDBNull(8)) p.Modified = reader.GetDateTime(8); if (!reader.IsDBNull(8)) p.Modified = reader.GetDateTime(8);
@ -100,7 +97,7 @@ namespace brecal.model
public override void SetCreate(IDbCommand cmd) public override void SetCreate(IDbCommand cmd)
{ {
cmd.CommandText = "INSERT INTO participant (name, street, postal_code, city, flags) VALUES ( @NAME, @STREET, @POSTAL_CODE, @CITY, @TYPE, @FLAGS)"; cmd.CommandText = "INSERT INTO participant (name, street, postal_code, city, type, flags) VALUES ( @NAME, @STREET, @POSTAL_CODE, @CITY, @TYPE, @FLAGS)";
this.SetParameters(cmd); this.SetParameters(cmd);
} }
@ -171,13 +168,13 @@ namespace brecal.model
public bool IsFlagSet(ParticipantType flag) public bool IsFlagSet(ParticipantType flag)
{ {
return (this.Flags & (uint)flag) != 0; return (this.Type & (uint)flag) != 0;
} }
public void SetFlag(bool value, ParticipantType flag) public void SetFlag(bool value, ParticipantType flag)
{ {
if (value) this.Flags |= (uint)flag; if (value) this.Type |= (uint)flag;
else this.Flags &= (uint)~flag; else this.Type &= (uint)~flag;
} }
#endregion #endregion

View File

@ -0,0 +1,15 @@
extensions: designer.cs generated.cs
extensions: .cs .cpp .h
// Copyright (c) 2023- schick Informatik
// Description:
extensions: .aspx .ascx
<%--
Copyright (c) 2023- schick Informatik
--%>
extensions: .vb
'Sample license text.
extensions: .xml .config .xsd
<!--
Sample license text.
-->