Zwischenstand

This commit is contained in:
2025-04-08 10:22:22 +02:00
parent aa48d9d92d
commit de97c8de8a
48 changed files with 4726 additions and 1866 deletions

View File

@@ -94,6 +94,15 @@
</StartupObject>
</PropertyGroup>
<ItemGroup>
<Compile Include="Converter\NewlineConverter.cs" />
<Compile Include="View\TemplateSelectors\AiConversationMessageTemplateSelector.cs" />
<Compile Include="View\Windows\AnimatedBeWoWindow.xaml.cs">
<DependentUpon>AnimatedBeWoWindow.xaml</DependentUpon>
</Compile>
<Page Include="View\Windows\AnimatedBeWoWindow.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Reference Include="Blacklight.Wpf.Controls, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Lib\Blacklight.Wpf.Controls.dll</HintPath>
@@ -324,6 +333,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\ControlStyles\WindowStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\DataTemplates\ControlTemplates.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -332,6 +345,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\DataTemplates\WindowTemplates.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Features\AIChatStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\ModernOrangeBlack.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -3467,7 +3488,9 @@
<Resource Include="Ressources\Icons\chatbot2.png" />
</ItemGroup>
<ItemGroup>
<Folder Include="Converter\Features\" />
<Folder Include="Scripts\" />
<Folder Include="View\Controls\Popup\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>

View File

@@ -82,6 +82,7 @@
<conv:RadioBoolToIntConverter x:Key="RadioBoolToIntConverter" />
<conv:EnumTranslationConverter x:Key="EnumTranslationConverter" />
<conv:TooltipTextConverter x:Key="TooltipTextConverter" />
<conv:NewlineConverter x:Key="NewlineConverter" />
<conv:ValidationConverter x:Key="ValidationConverter" />
<conv:ValueConverterGroup x:Key="Validation2BrushConverter">
@@ -605,8 +606,12 @@
Grid.RowSpan="1"
Grid.Column="0"
Grid.ColumnSpan="2"
Padding="5,5,5,5">
Padding="5,5,5,5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<ContentPresenter
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="0,0,0,0"
Content="{TemplateBinding Content}"
ContentStringFormat="{TemplateBinding ContentStringFormat}"

View File

@@ -35,6 +35,7 @@ using DevExpress.Xpf.Grid;
using DevExpress.Xpf.Scheduling;
using DevExpress.XtraScheduler;
using System.ServiceModel;
using BeWo.View.Windows;
namespace BeWo
{
@@ -50,6 +51,9 @@ namespace BeWo
public static LoginControl LoginControl;
public static MainControl MainControl;
public static AnimatedBeWoWindow CurrentAnimatedBeWoWindow;
public static string ShortVersion = "3.24";
public static string Version = "Version 3.24";

View File

@@ -1,10 +1,20 @@
<Window x:Class="BeWo.ConfirmDemoDialog"
<Window
x:Class="BeWo.ConfirmDemoDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BeWoPlaner" Height="240" Width="360" WindowStartupLocation="CenterScreen" WindowStyle="None" ResizeMode="NoResize" >
Title="BeWoPlaner"
Width="360"
Height="240"
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
WindowStyle="None">
<Grid Background="{x:Null}" Margin="0,0,0,0">
<Border BorderThickness="1" Padding="5,5,5,5" BorderBrush="Black" Background="{DynamicResource LoginBackgroundColor}">
<Grid Margin="0,0,0,0" Background="{x:Null}">
<Border
Padding="5,5,5,5"
Background="{DynamicResource LoginBackgroundColor}"
BorderBrush="Black"
BorderThickness="1">
<Grid Opacity="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@@ -17,25 +27,61 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Source="Ressources\Icons\bewoplaner_logo_small.png" Height="45" Margin="7,7,0,0"/>
<Image
Grid.Row="0"
Height="45"
Margin="7,7,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Source="Ressources\Icons\bewoplaner_logo_small.png" />
<Grid Grid.Row="1" Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" ></RowDefinition>
<RowDefinition Height="Auto" ></RowDefinition>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock TextWrapping="Wrap" Margin="3" FontSize="14">WICHTIG! Bitte tragen Sie keine echten Daten bei Ihren Tests ein, da es sich um einen öffentlichen Testzugang handelt, auf den jeder Zugriff hat!</TextBlock>
<Button x:Name="CountButton" Grid.Row="2" Grid.Column="1" Width="120" Margin="3,25,3,3" IsDefault="True" HorizontalAlignment="Right" Click="ButtonBase_OnClick">OK</Button>
<TextBlock
Margin="3"
FontSize="14"
TextWrapping="Wrap">
WICHTIG! Bitte tragen Sie keine echten Daten bei Ihren Tests ein, da es sich um einen öffentlichen Testzugang handelt, auf den jeder Zugriff hat!
</TextBlock>
<Button
x:Name="CountButton"
Grid.Row="2"
Grid.Column="1"
Width="120"
Margin="3,25,3,3"
HorizontalAlignment="Right"
Click="ButtonBase_OnClick"
IsDefault="True">
OK
</Button>
<!--<Button Grid.Row="2" Grid.Column ="2" Width="100" Margin="3" IsCancel="True" IsEnabled="False" HorizontalAlignment="Right">Abbrechen</Button>-->
</Grid>
</Grid>
</Border>
<Line Grid.ColumnSpan="4" Stroke="#FFADADAD" X1="14" Y1="70" X2="585" Y2="70" StrokeThickness="1"></Line>
<Line x:Name="linkLine" Stroke="#FFADADAD" X1="14" Y1="340" X2="585" Y2="340" StrokeThickness="1" Margin="0,30,0,-30"></Line>
<Line
Grid.ColumnSpan="4"
Stroke="#FFADADAD"
StrokeThickness="1"
X1="14"
X2="585"
Y1="70"
Y2="70" />
<Line
x:Name="linkLine"
Margin="0,30,0,-30"
Stroke="#FFADADAD"
StrokeThickness="1"
X1="14"
X2="585"
Y1="340"
Y2="340" />
</Grid>

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace BeWo.Converter
{
public class NewlineConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value?.ToString()?
.Replace("\\r\\n", "\r\n")
.Replace("\\n", "\r\n")
.Replace("\\r", "\r\n");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -1,10 +1,18 @@
<Window x:Class="BeWo.EnterTenantDialog"
<Window
x:Class="BeWo.EnterTenantDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BeWoPlaner" Height="240" Width="320" WindowStartupLocation="CenterScreen" WindowStyle="ToolWindow">
Title="BeWoPlaner"
Width="320"
Height="240"
WindowStartupLocation="CenterScreen"
WindowStyle="ToolWindow">
<Grid Background="{x:Null}" Margin="0,0,0,0">
<Border BorderThickness="0" Padding="5,5,5,5" Background="{DynamicResource LoginBackgroundColor}">
<Grid Margin="0,0,0,0" Background="{x:Null}">
<Border
Padding="5,5,5,5"
Background="{DynamicResource LoginBackgroundColor}"
BorderThickness="0">
<Grid Opacity="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@@ -17,7 +25,13 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Source="Ressources\Icons\bewoplaner_logo_small.png" Height="45" Margin="7,7,0,0"/>
<Image
Grid.Row="0"
Height="45"
Margin="7,7,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Source="Ressources\Icons\bewoplaner_logo_small.png" />
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@@ -25,21 +39,67 @@
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" ></RowDefinition>
<RowDefinition Height="Auto" ></RowDefinition>
<RowDefinition Height="Auto" ></RowDefinition>
<RowDefinition Height="Auto" ></RowDefinition>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.ColumnSpan="3" TextWrapping="Wrap" Margin="3">Bitte geben Sie Ihre 10-stellige Kundennummer ein:</TextBlock>
<TextBox x:Name="txtTenant" Grid.ColumnSpan="3" Grid.Row="1" Margin="3"></TextBox>
<Button Grid.Row="2" Grid.Column ="1" Width="100" Margin="3" IsDefault="True" Click="ButtonBase_OnClick">OK</Button>
<Button Grid.Row="2" Grid.Column ="2" Width="100" Margin="3" IsCancel="True" >Abbrechen</Button>
<CheckBox Grid.ColumnSpan="3" Grid.Row="3" Margin="3" Checked="ToggleButton_OnChecked" Unchecked="ToggleButton_OnUnchecked">Demo Zugang nutzen</CheckBox>
<TextBlock
Grid.ColumnSpan="3"
Margin="3"
TextWrapping="Wrap">
Bitte geben Sie Ihre 10-stellige Kundennummer ein:
</TextBlock>
<TextBox
x:Name="txtTenant"
Grid.Row="1"
Grid.ColumnSpan="3"
Margin="3" />
<Button
Grid.Row="2"
Grid.Column="1"
Width="100"
Margin="3"
Click="ButtonBase_OnClick"
IsDefault="True">
OK
</Button>
<Button
Grid.Row="2"
Grid.Column="2"
Width="100"
Margin="3"
IsCancel="True">
Abbrechen
</Button>
<CheckBox
Grid.Row="3"
Grid.ColumnSpan="3"
Margin="3"
Checked="ToggleButton_OnChecked"
Unchecked="ToggleButton_OnUnchecked">
Demo Zugang nutzen
</CheckBox>
</Grid>
</Grid>
</Border>
<Line Grid.ColumnSpan="4" Stroke="#FFADADAD" X1="14" Y1="70" X2="585" Y2="70" StrokeThickness="1"></Line>
<Line x:Name="linkLine" Stroke="#FFADADAD" X1="14" Y1="340" X2="585" Y2="340" StrokeThickness="1" Margin="0,30,0,-30"></Line>
<Line
Grid.ColumnSpan="4"
Stroke="#FFADADAD"
StrokeThickness="1"
X1="14"
X2="585"
Y1="70"
Y2="70" />
<Line
x:Name="linkLine"
Margin="0,30,0,-30"
Stroke="#FFADADAD"
StrokeThickness="1"
X1="14"
X2="585"
Y1="340"
Y2="340" />
</Grid>

View File

@@ -1,13 +1,20 @@
<Window x:Class="BeWo.OpenOrSaveDialog"
<Window
x:Class="BeWo.OpenOrSaveDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="OpenOrSaveDialog" Height="150" Width="300"
WindowStartupLocation="CenterOwner"
WindowStyle="None"
Title="OpenOrSaveDialog"
Width="300"
Height="150"
AllowsTransparency="True"
Background="Transparent" ResizeMode="NoResize" >
Background="Transparent"
ResizeMode="NoResize"
WindowStartupLocation="CenterOwner"
WindowStyle="None">
<Grid>
<GroupBox Style="{StaticResource MainContentGroupBoxWithoutMaximizeBtnStyle}" Header="Download" MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown">
<GroupBox
Header="Download"
MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown"
Style="{StaticResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid Background="{DynamicResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
@@ -18,10 +25,35 @@
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Question}" Grid.ColumnSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center" Foreground="#FF202020"/>
<Button Margin="0,0,0,5" Grid.Row="1" Grid.Column="0" Content="Öffnen" Width="85" Command="Open" />
<Button Margin="0,0,0,5" Grid.Row="1" Grid.Column="1" Content="Speichern" Width="85" Command="Save" />
<Button Margin="0,0,0,5" Grid.Row="1" Grid.Column="2" Content="Abbrechen" Width="85" Command="Close" />
<TextBlock
Grid.ColumnSpan="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="#FF202020"
Text="{Binding Question}"
TextAlignment="Center"
TextWrapping="Wrap" />
<Button
Grid.Row="1"
Grid.Column="0"
Width="85"
Margin="0,0,0,5"
Command="Open"
Content="Öffnen" />
<Button
Grid.Row="1"
Grid.Column="1"
Width="85"
Margin="0,0,0,5"
Command="Save"
Content="Speichern" />
<Button
Grid.Row="1"
Grid.Column="2"
Width="85"
Margin="0,0,0,5"
Command="Close"
Content="Abbrechen" />
</Grid>
</GroupBox>
</Grid>

View File

@@ -1,20 +1,75 @@
<Window x:Class="BeWo.ProxyLoginView"
<Window
x:Class="BeWo.ProxyLoginView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
Title="Proxy Einstellungen" Height="200" Width="300">
Title="Proxy Einstellungen"
Width="300"
Height="200">
<Grid>
<Button x:Name="proxyOK" Content="OK" HorizontalAlignment="Left" Margin="75,120,0,0" VerticalAlignment="Top" Width="100" Click="proxyOK_Click"/>
<Button x:Name="proxyAbbr" Content="Abbrechen" HorizontalAlignment="Left" Margin="180,120,0,0" VerticalAlignment="Top" Width="100" Click="proxyAbbr_Click"/>
<Button
x:Name="proxyOK"
Width="100"
Margin="75,120,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Click="proxyOK_Click"
Content="OK" />
<Button
x:Name="proxyAbbr"
Width="100"
Margin="180,120,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Click="proxyAbbr_Click"
Content="Abbrechen" />
<Label Content="Proxyname:" HorizontalAlignment="Left" Margin="10,15,0,0" VerticalAlignment="Top" Width="100"/>
<Label Content="{markup:Translate Benutzername:}" HorizontalAlignment="Left" Margin="10,45,0,0" VerticalAlignment="Top" Width="100"/>
<Label Content="Passwort:" HorizontalAlignment="Left" Margin="10,75,0,0" VerticalAlignment="Top" Width="100"/>
<Label
Width="100"
Margin="10,15,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="Proxyname:" />
<Label
Width="100"
Margin="10,45,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="{markup:Translate Benutzername:}" />
<Label
Width="100"
Margin="10,75,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="Passwort:" />
<TextBox x:Name="proxynametxt" HorizontalAlignment="Left" Height="23" Margin="120,15,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="160" SelectionOpacity="0.5" />
<TextBox x:Name="proxybenutzer" HorizontalAlignment="Left" Height="23" Margin="120,45,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="160" SelectionOpacity="0.5"/>
<PasswordBox x:Name="proxypasswort" HorizontalAlignment="Left" Height="23" Margin="120,75,0,0" VerticalAlignment="Top" Width="160" SelectionOpacity="0.5"/>
<TextBox
x:Name="proxynametxt"
Width="160"
Height="23"
Margin="120,15,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
SelectionOpacity="0.5"
TextWrapping="Wrap" />
<TextBox
x:Name="proxybenutzer"
Width="160"
Height="23"
Margin="120,45,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
SelectionOpacity="0.5"
TextWrapping="Wrap" />
<PasswordBox
x:Name="proxypasswort"
Width="160"
Height="23"
Margin="120,75,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
SelectionOpacity="0.5" />
</Grid>
</Window>

View File

@@ -1,13 +1,21 @@
<Window x:Class="BeWo.PwVergessenView"
<Window
x:Class="BeWo.PwVergessenView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
Title="PwVergessenView" Height="135" Width="322" WindowStartupLocation="CenterScreen" WindowStyle="None"
Title="PwVergessenView"
Width="322"
Height="135"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="NoResize">
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
WindowStyle="None">
<Grid>
<GroupBox Header="Passwort anfordern" Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown">
<GroupBox
Header="Passwort anfordern"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid Background="{StaticResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -18,12 +26,44 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Height="20" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Red" Margin="3,8,3,3"/>
<Label Grid.Row="1" Grid.Column="0" Margin="3" Content="{markup:Translate Benutzername}" />
<TextBox x:Name="BenutzernamenTextBox" Grid.Row="1" Grid.Column="1" MaxLines="1" Margin="3" />
<StackPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Stretch">
<Button Margin="3" Content="Neues Passwort anfordern" Width="150" Click="AnfordernClick" IsDefault="True" VerticalContentAlignment="Center" />
<Button Margin="3" Content="Abbrechen" Width="150" Command="Close" />
<TextBlock
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
Height="20"
Margin="3,8,3,3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="Red" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
Content="{markup:Translate Benutzername}" />
<TextBox
x:Name="BenutzernamenTextBox"
Grid.Row="1"
Grid.Column="1"
Margin="3"
MaxLines="1" />
<StackPanel
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
HorizontalAlignment="Stretch"
Orientation="Horizontal">
<Button
Width="150"
Margin="3"
VerticalContentAlignment="Center"
Click="AnfordernClick"
Content="Neues Passwort anfordern"
IsDefault="True" />
<Button
Width="150"
Margin="3"
Command="Close"
Content="Abbrechen" />
</StackPanel>
</Grid>
</GroupBox>

File diff suppressed because it is too large Load Diff

View File

@@ -1,22 +1,26 @@
<dx:DXWindow x:Class="BeWo.Scheduling.View.AppointmentRecurrenceEditView"
<dx:DXWindow
x:Class="BeWo.Scheduling.View.AppointmentRecurrenceEditView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduling"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
mc:Ignorable="d"
Loaded="AppointmentRecurrenceEditView_OnLoaded"
xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduling"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="AppointmentRecurrenceEditView"
Width="507"
Height="Auto"
Background="{StaticResource ObjectEditBackgroundBrush}"
ResizeMode="NoResize"
Closing="AppointmentRecurrenceEditView_OnClosing"
Title="AppointmentRecurrenceEditView" Height="Auto" Width="507" SizeToContent="Height">
Loaded="AppointmentRecurrenceEditView_OnLoaded"
ResizeMode="NoResize"
SizeToContent="Height"
mc:Ignorable="d">
<Window.Resources>
<Style x:Key="RecurrenceInfoControlStyle" TargetType="dxsch:RecurrenceInfoControlBase">
<Setter Property="RecurrenceInfo" Value="{Binding RecurrenceInfo}"/>
<Setter Property="RecurrenceInfo" Value="{Binding RecurrenceInfo}" />
<Style.Triggers>
<Trigger Property="Visibility" Value="Collapsed">
<Setter Property="RecurrenceInfo" Value="{x:Null}"/>
<Setter Property="RecurrenceInfo" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
@@ -39,17 +43,47 @@
<RowDefinition Height="*" />
<RowDefinition Height="6" />
</Grid.RowDefinitions>
<Border BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="4" Grid.Column="0" CornerRadius="4" Grid.Row="1" Grid.RowSpan="3"/>
<Border SnapsToDevicePixels="True" x:Name="Header" Grid.Column="1" Padding="3,1,3,0" Grid.Row="0" Grid.RowSpan="2">
<ContentPresenter ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<Border
Grid.Row="1"
Grid.RowSpan="3"
Grid.Column="0"
Grid.ColumnSpan="4"
Background="{TemplateBinding Background}"
BorderBrush="Transparent"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="4" />
<Border
x:Name="Header"
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="1"
Padding="3,1,3,0"
SnapsToDevicePixels="True">
<ContentPresenter
ContentSource="Header"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
<ContentPresenter Grid.ColumnSpan="2" Grid.Column="1" Margin="{TemplateBinding Padding}" Grid.Row="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<Border SnapsToDevicePixels="True" Grid.Column="0" BorderBrush="Gray" BorderThickness="{TemplateBinding BorderThickness}" Grid.ColumnSpan="4" CornerRadius="4" Grid.Row="1" Grid.RowSpan="3">
<ContentPresenter
Grid.Row="2"
Grid.Column="1"
Grid.ColumnSpan="2"
Margin="{TemplateBinding Padding}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
<Border
Grid.Row="1"
Grid.RowSpan="3"
Grid.Column="0"
Grid.ColumnSpan="4"
BorderBrush="Gray"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="4"
SnapsToDevicePixels="True">
<Border.OpacityMask>
<MultiBinding ConverterParameter="7" Converter="{StaticResource BorderGapMaskConverter}">
<Binding ElementName="Header" Path="ActualWidth"/>
<Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}"/>
<Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}"/>
<MultiBinding Converter="{StaticResource BorderGapMaskConverter}" ConverterParameter="7">
<Binding ElementName="Header" Path="ActualWidth" />
<Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}" />
<Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}" />
</MultiBinding>
</Border.OpacityMask>
</Border>
@@ -65,35 +99,73 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<GroupBox Grid.Row="0" Header="Serienmuster" Style="{StaticResource GroupBoxStyle}" Margin="5">
<GroupBox
Grid.Row="0"
Margin="5"
Header="Serienmuster"
Style="{StaticResource GroupBoxStyle}">
<DockPanel>
<dxsch:RecurrenceTypeControl DockPanel.Dock="Left" RecurrenceTypes="{Binding AvailableRecurrenceTypes}" RecurrenceType="{Binding RecurrenceInfo.Type, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<dxsch:RecurrenceTypeControl
DockPanel.Dock="Left"
RecurrenceType="{Binding RecurrenceInfo.Type, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
RecurrenceTypes="{Binding AvailableRecurrenceTypes}" />
<StackPanel Orientation="Horizontal">
<Separator />
</StackPanel>
<StackPanel MinHeight="90">
<dxsch:DailyRecurrenceControl Style="{StaticResource RecurrenceInfoControlStyle}" Visibility="{Binding RecurrenceInfo.Type, Converter={dxsch:RecurrenceTypeToVisibilityConverter VisibleValue=Daily}}"/>
<dxsch:WeeklyRecurrenceControl Style="{StaticResource RecurrenceInfoControlStyle}" Visibility="{Binding RecurrenceInfo.Type, Converter={dxsch:RecurrenceTypeToVisibilityConverter VisibleValue=Weekly}}" FirstDayOfWeek="{Binding FirstDayOfWeek}"/>
<dxsch:MonthlyRecurrenceControl Style="{StaticResource RecurrenceInfoControlStyle}" Visibility="{Binding RecurrenceInfo.Type, Converter={dxsch:RecurrenceTypeToVisibilityConverter VisibleValue=Monthly}}"/>
<dxsch:YearlyRecurrenceControl x:Name="YearlyRecurrence" Style="{StaticResource RecurrenceInfoControlStyle}" Visibility="{Binding RecurrenceInfo.Type, Converter={dxsch:RecurrenceTypeToVisibilityConverter VisibleValue=Yearly}}"/>
<dxsch:DailyRecurrenceControl Style="{StaticResource RecurrenceInfoControlStyle}" Visibility="{Binding RecurrenceInfo.Type, Converter={dxsch:RecurrenceTypeToVisibilityConverter VisibleValue=Daily}}" />
<dxsch:WeeklyRecurrenceControl
FirstDayOfWeek="{Binding FirstDayOfWeek}"
Style="{StaticResource RecurrenceInfoControlStyle}"
Visibility="{Binding RecurrenceInfo.Type, Converter={dxsch:RecurrenceTypeToVisibilityConverter VisibleValue=Weekly}}" />
<dxsch:MonthlyRecurrenceControl Style="{StaticResource RecurrenceInfoControlStyle}" Visibility="{Binding RecurrenceInfo.Type, Converter={dxsch:RecurrenceTypeToVisibilityConverter VisibleValue=Monthly}}" />
<dxsch:YearlyRecurrenceControl
x:Name="YearlyRecurrence"
Style="{StaticResource RecurrenceInfoControlStyle}"
Visibility="{Binding RecurrenceInfo.Type, Converter={dxsch:RecurrenceTypeToVisibilityConverter VisibleValue=Yearly}}" />
</StackPanel>
</DockPanel>
</GroupBox>
<GroupBox Grid.Row="1" Header="Serienende" Style="{StaticResource GroupBoxStyle}" Margin="5">
<dxsch:RecurrenceRangeControl RecurrenceInfo="{Binding RecurrenceInfo}"/>
<GroupBox
Grid.Row="1"
Margin="5"
Header="Serienende"
Style="{StaticResource GroupBoxStyle}">
<dxsch:RecurrenceRangeControl RecurrenceInfo="{Binding RecurrenceInfo}" />
</GroupBox>
<Grid Grid.Row="2" VerticalAlignment="Bottom" Margin="0">
<Border Height="40" Margin="0,10,0,0" VerticalAlignment="Bottom" Background="#FF000000">
<Grid
Grid.Row="2"
Margin="0"
VerticalAlignment="Bottom">
<Border
Height="40"
Margin="0,10,0,0"
VerticalAlignment="Bottom"
Background="#FF000000">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#19000000" Offset="0" />
<GradientStop Color="#33FFFFFF" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#33FFFFFF" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<StackPanel VerticalAlignment="Bottom" Height="40" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Content="OK" Width="80" Height="25" Margin="3" Click="OkButton_Click" />
<Button Content="Abbrechen" Width="80" Height="25" Margin="3" Click="CloseButton_OnClick" />
<StackPanel
Height="40"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Orientation="Horizontal">
<Button
Width="80"
Height="25"
Margin="3"
Click="OkButton_Click"
Content="OK" />
<Button
Width="80"
Height="25"
Margin="3"
Click="CloseButton_OnClick"
Content="Abbrechen" />
</StackPanel>
</Grid>
</Grid>

View File

@@ -1,14 +1,23 @@
<Window x:Class="BeWo.SchulbegleitenderDienst.KrankheitsZeitraumView"
<Window
x:Class="BeWo.SchulbegleitenderDienst.KrankheitsZeitraumView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:view="clr-namespace:BeWo.SchulbegleitenderDienst.View"
mc:Ignorable="d"
Background="Transparent" WindowStartupLocation="CenterScreen"
d:DataContext="{d:DesignData Type=AbsenceTimeEditViewModel}"
SizeToContent="WidthAndHeight" WindowStyle="None" AllowsTransparency="True">
<GroupBox Header="Zeitraum auswählen" x:Name="rootGroupBox" Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" Background="Transparent" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown" >
AllowsTransparency="True"
Background="Transparent"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterScreen"
WindowStyle="None"
mc:Ignorable="d">
<GroupBox
x:Name="rootGroupBox"
Background="Transparent"
Header="Zeitraum auswählen"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid>
<view:AbsenceTimeEditView />
</Grid>

View File

@@ -1,142 +1,235 @@
<Window x:Class="BeWo.SchulbegleitenderDienst.VertretenderKlientSearchView"
<Window
x:Class="BeWo.SchulbegleitenderDienst.VertretenderKlientSearchView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:BeWo.View"
xmlns:controls="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:search="clr-namespace:BeWo.View.Search"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
Title="Vertretung auswählen" Height="650" Width="750" WindowStartupLocation="CenterScreen"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
ResizeMode="CanResizeWithGrip" WindowStyle="None" Background="Transparent">
xmlns:search="clr-namespace:BeWo.View.Search"
xmlns:view="clr-namespace:BeWo.View"
Title="Vertretung auswählen"
Width="750"
Height="650"
Background="Transparent"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterScreen"
WindowStyle="None">
<GroupBox Header="{markup:Translate Vertretenden auswählen}" x:Name="rootGroupBox" Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown" >
<GroupBox
x:Name="rootGroupBox"
Header="{markup:Translate Vertretenden auswählen}"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid>
<Grid Background="White" x:Name="rootGroupBoxMitarbeiter" >
<Grid x:Name="rootGroupBoxMitarbeiter" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="225"/>
<RowDefinition Height="125"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="225" />
<RowDefinition Height="125" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- ############################### Oberes 1/3 auswahl Kriterien ################################################ -->
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="125"/>
<RowDefinition Height="*"/>
<RowDefinition Height="100" />
<RowDefinition Height="125" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox Header="{markup:Translate Mitarbeiter Wunsch Kriterien}" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Style="{StaticResource ObjectEditGroupBox}" Margin="3,3,3,3" >
<GroupBox
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="3,3,3,3"
Header="{markup:Translate Mitarbeiter Wunsch Kriterien}"
Style="{StaticResource ObjectEditGroupBox}">
<!-- Ready machen für teilweise funktion / Combobox zur auswahl der tokens und TextBox zur anzeige der ausgewählten tokens -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- <controls:NullItemComboBox Grid.Row="0" Grid.Column="0" x:Name="MitarbeiterWunschAuswahl" SelectionChanged="MitarbeiterWunschAuswahl_OnSelectionChanged" Width="200" Height="23" Visibility="Collapsed" /> -->
<TextBox Grid.Row="1" Grid.Column="0" Margin="3" x:Name="MitarbeiterWunschAnzeige" MinHeight="50" TextWrapping="Wrap" Width="200" IsReadOnly="True" />
<TextBox
x:Name="MitarbeiterWunschAnzeige"
Grid.Row="1"
Grid.Column="0"
Width="200"
MinHeight="50"
Margin="3"
IsReadOnly="True"
TextWrapping="Wrap" />
</Grid>
</GroupBox>
<GroupBox Header="{markup:Translate Mitarbeiter Ausschluss Kriterien}" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Style="{StaticResource ObjectEditGroupBox}" Margin="3,3,3,3">
<GroupBox
Grid.Row="0"
Grid.Column="2"
Grid.ColumnSpan="2"
Margin="3,3,3,3"
Header="{markup:Translate Mitarbeiter Ausschluss Kriterien}"
Style="{StaticResource ObjectEditGroupBox}">
<!-- Ready machen für teilweise funktion <ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/> <RowDefinition Height="Auto"/>-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- <controls:NullItemComboBox Grid.Row="0" Grid.Column="0" x:Name="MitarbeiterAussschlussAuswahl" SelectionChanged="MitarbeiterAussschlussAuswahl_OnSelectionChanged" Width="200" Height="23" Visibility="Collapsed"/> -->
<TextBox Grid.Row="1" Margin="3" Grid.Column="0" x:Name="MitarbeiterAussschlussAnzeige" Width="200" MinHeight="50" TextWrapping="Wrap" IsReadOnly="True"/>
<TextBox
x:Name="MitarbeiterAussschlussAnzeige"
Grid.Row="1"
Grid.Column="0"
Width="200"
MinHeight="50"
Margin="3"
IsReadOnly="True"
TextWrapping="Wrap" />
</Grid>
</GroupBox>
<GroupBox Header="{markup:Translate Klient Wunsch Kriterien}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Style="{StaticResource ObjectEditGroupBox}" Margin="3,3,3,3" >
<GroupBox
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="3,3,3,3"
Header="{markup:Translate Klient Wunsch Kriterien}"
Style="{StaticResource ObjectEditGroupBox}">
<!-- ############### wird durch Token Combobox mit devexpress vers. 17 ersetzt ################################## -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<controls:NullItemComboBox Grid.Row="0" Grid.Column="0" x:Name="KlientWunschAuswahl" SelectionChanged="KlientWunschAuswahl_OnSelectionChanged" Width="200" Height="23" />
<controls:NullItemComboBox
x:Name="KlientWunschAuswahl"
Grid.Row="0"
Grid.Column="0"
Width="200"
Height="23"
SelectionChanged="KlientWunschAuswahl_OnSelectionChanged" />
<TextBox Grid.Row="1" Margin="3" Grid.Column="0" x:Name="KlientWunschAnzeige" Width="200" MinHeight="50" TextWrapping="Wrap" IsReadOnly="True"/>
<TextBox
x:Name="KlientWunschAnzeige"
Grid.Row="1"
Grid.Column="0"
Width="200"
MinHeight="50"
Margin="3"
IsReadOnly="True"
TextWrapping="Wrap" />
</Grid>
<!-- ############################################################################################################## -->
</GroupBox>
<GroupBox Header="{markup:Translate Klient Ausschluss Kriterien}" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Style="{StaticResource ObjectEditGroupBox}" Margin="3,3,3,3" >
<GroupBox
Grid.Row="1"
Grid.Column="2"
Grid.ColumnSpan="2"
Margin="3,3,3,3"
Header="{markup:Translate Klient Ausschluss Kriterien}"
Style="{StaticResource ObjectEditGroupBox}">
<!-- ############### wird durch Token Combobox mit devexpress vers. 17 ersetzt ################################## -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<controls:NullItemComboBox Grid.Row="0" Grid.Column="0" x:Name="KlientAussschlussAuswahl" SelectionChanged="KlientAussschlussAuswahl_OnSelectionChanged" Width="200" Height="23" />
<controls:NullItemComboBox
x:Name="KlientAussschlussAuswahl"
Grid.Row="0"
Grid.Column="0"
Width="200"
Height="23"
SelectionChanged="KlientAussschlussAuswahl_OnSelectionChanged" />
<TextBox Grid.Row="1" Margin="3" Grid.Column="0" x:Name="KlientAussschlussAnzeige" Width="200" MinHeight="50" TextWrapping="Wrap" IsReadOnly="True"/>
<TextBox
x:Name="KlientAussschlussAnzeige"
Grid.Row="1"
Grid.Column="0"
Width="200"
MinHeight="50"
Margin="3"
IsReadOnly="True"
TextWrapping="Wrap" />
</Grid>
<!-- ############################################################################################################## -->
</GroupBox>
<GroupBox Header="Geschlecht" Grid.Row="0" Grid.Column="4" Style="{StaticResource ObjectEditGroupBox}" Margin="3,3,3,3">
<GroupBox
Grid.Row="0"
Grid.Column="4"
Margin="3,3,3,3"
Header="Geschlecht"
Style="{StaticResource ObjectEditGroupBox}">
<WrapPanel Orientation="Horizontal">
<CheckBox Content="männlich" Margin="3,3,3,3" Click="RBMaennlich_OnClick" x:Name="RBMaennlich" IsChecked="True"/>
<CheckBox Content="weiblich" Margin="3,3,3,3" Click="RBWeiblich_OnClick" x:Name="RBWeiblich" IsChecked="True" />
<CheckBox
x:Name="RBMaennlich"
Margin="3,3,3,3"
Click="RBMaennlich_OnClick"
Content="männlich"
IsChecked="True" />
<CheckBox
x:Name="RBWeiblich"
Margin="3,3,3,3"
Click="RBWeiblich_OnClick"
Content="weiblich"
IsChecked="True" />
</WrapPanel>
</GroupBox>
@@ -144,47 +237,87 @@
<Grid Column="4" Grid.Row="1" Margin="3,3,3,3">
<Grid
Grid.Row="1"
Margin="3,3,3,3"
Column="4">
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition Height="60"/>
<RowDefinition Height="*"/>
<RowDefinition Height="60" />
<RowDefinition Height="60" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox Grid.Row="0" Margin="1" Style="{StaticResource ObjectEditGroupBox}" Header="{markup:Translate Klienten PLZ}">
<GroupBox
Grid.Row="0"
Margin="1"
Header="{markup:Translate Klienten PLZ}"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<WrapPanel Orientation="Horizontal" Margin="1" HorizontalAlignment="Left" Grid.Column="0">
<Label Content ="Plz:" />
<WrapPanel
Grid.Column="0"
Margin="1"
HorizontalAlignment="Left"
Orientation="Horizontal">
<Label Content="Plz:" />
<Label x:Name="LabelPlzMitarbeiter" Width="50" />
</WrapPanel>
<WrapPanel Orientation="Horizontal" Margin="1" HorizontalAlignment="Right" Grid.Column="1">
<Label Content="Ort:"/>
<WrapPanel
Grid.Column="1"
Margin="1"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Label Content="Ort:" />
<Label x:Name="LabelOrtMitarbeiter" Width="100" />
</WrapPanel>
</Grid>
</GroupBox>
<GroupBox Grid.Row="1" Margin="1" Style="{StaticResource ObjectEditGroupBox}" Header="Suche nach">
<GroupBox
Grid.Row="1"
Margin="1"
Header="Suche nach"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="1" Grid.Column="0">
<WrapPanel
Grid.Column="0"
Margin="1"
HorizontalAlignment="Left"
Orientation="Horizontal">
<Label Content="Plz:" />
<dxe:TextEdit x:Name="PlzMitarbeiter" Height="23" Width="50" VerticalContentAlignment="Center" EditValueChanged="PlzMitarbeiter_OnEditValueChanged" MaskType="RegEx" Mask="\d{1,5}" ShowError="False" />
<dxe:TextEdit
x:Name="PlzMitarbeiter"
Width="50"
Height="23"
VerticalContentAlignment="Center"
EditValueChanged="PlzMitarbeiter_OnEditValueChanged"
Mask="\d{1,5}"
MaskType="RegEx"
ShowError="False" />
</WrapPanel>
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="1" Grid.Column="1">
<WrapPanel
Grid.Column="1"
Margin="1"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Label Content="Ort:" />
<TextBox x:Name="OrtMitarbeiter" Height="23" Width="100" VerticalContentAlignment="Center" TextChanged="OrtMitarbeiter_OnTextChanged" />
<TextBox
x:Name="OrtMitarbeiter"
Width="100"
Height="23"
VerticalContentAlignment="Center"
TextChanged="OrtMitarbeiter_OnTextChanged" />
</WrapPanel>
</Grid>
</GroupBox>
@@ -196,57 +329,121 @@
<!--Bereich einfügen um auszuwählen ob ganzen tag oder nur teilweise -->
<GroupBox Header="Vertretungs Zeitraum" Grid.Row="1" Grid.Column="0" Style="{StaticResource ObjectEditGroupBox}" Margin="3,3,3,3" >
<!-- Bereich einfügen um auszuwählen ob ganzen tag oder nur teilweise -->
<GroupBox
Grid.Row="1"
Grid.Column="0"
Margin="3,3,3,3"
Header="Vertretungs Zeitraum"
Style="{StaticResource ObjectEditGroupBox}">
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox Grid.Column="2" Grid.Row="0" Grid.ColumnSpan="2" Content="ganztägig" Unchecked="KVCheckBox_OnUnchecked" Checked="KVCheckBox_OnChecked"
HorizontalAlignment="Left" x:Name="KVCheckBox" />
<CheckBox
x:Name="KVCheckBox"
Grid.Row="0"
Grid.Column="2"
Grid.ColumnSpan="2"
HorizontalAlignment="Left"
Checked="KVCheckBox_OnChecked"
Content="ganztägig"
Unchecked="KVCheckBox_OnUnchecked" />
<Label Grid.Row="1" Grid.Column="0" Content="Vertretung ab" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="Vertretung ab" />
<Label Grid.Row="2" Grid.Column="0" Content="Vertretung bis" />
<Label
Grid.Row="2"
Grid.Column="0"
Content="Vertretung bis" />
<Label Grid.Row="1" Grid.Column="2" Content="Uhrzeit von" x:Name="KVLabelUhrzeitVon" />
<Label
x:Name="KVLabelUhrzeitVon"
Grid.Row="1"
Grid.Column="2"
Content="Uhrzeit von" />
<Label Grid.Row="2" Grid.Column="2" Content="Uhrzeit bis" x:Name="KVLabelUhrzeitBis" />
<Label
x:Name="KVLabelUhrzeitBis"
Grid.Row="2"
Grid.Column="2"
Content="Uhrzeit bis" />
<dxe:DateEdit x:Name="KVDatepickerVon" MaskType="DateTimeAdvancingCaret" Grid.Column="1" Grid.Row="1" Margin="3" Height="23" Width="125" EditValueChanged="KVDatepickerVon_OnEditValueChanged"/>
<dxe:DateEdit
x:Name="KVDatepickerVon"
Grid.Row="1"
Grid.Column="1"
Width="125"
Height="23"
Margin="3"
EditValueChanged="KVDatepickerVon_OnEditValueChanged"
MaskType="DateTimeAdvancingCaret" />
<dxe:DateEdit x:Name="KVDatepickerBis" MaskType="DateTimeAdvancingCaret" Grid.Column="1" Grid.Row="2" Margin="3" Height="23" Width="125" EditValueChanged="KVDatepickerBis_OnEditValueChanged" />
<dxe:DateEdit
x:Name="KVDatepickerBis"
Grid.Row="2"
Grid.Column="1"
Width="125"
Height="23"
Margin="3"
EditValueChanged="KVDatepickerBis_OnEditValueChanged"
MaskType="DateTimeAdvancingCaret" />
<dxe:TextEdit Grid.Column="3" Grid.Row="1" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" ShowError="False" MaskShowPlaceHolders="True" x:Name="KVDatepicker_UhrzeitVon"
MaskUseAsDisplayFormat="True" InvalidValueBehavior="AllowLeaveEditor"
Height="23" Grid.ColumnSpan="2" Visibility="Visible" Width="75"
Margin="3,3,3,3"/>
<dxe:TextEdit
x:Name="KVDatepicker_UhrzeitVon"
Grid.Row="1"
Grid.Column="3"
Grid.ColumnSpan="2"
Width="75"
Height="23"
Margin="3,3,3,3"
InvalidValueBehavior="AllowLeaveEditor"
Mask="(0?\d|1\d|2[0-3]):[0-5]\d"
MaskShowPlaceHolders="True"
MaskType="RegEx"
MaskUseAsDisplayFormat="True"
ShowError="False"
Visibility="Visible" />
<dxe:TextEdit Grid.Column="3" Grid.Row="2" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" ShowError="False" MaskShowPlaceHolders="True" x:Name="KVDatepicker_UhrzeitBis"
MaskUseAsDisplayFormat="True" InvalidValueBehavior="AllowLeaveEditor" Width="75"
Height="23" Grid.ColumnSpan="2" Visibility="Visible"
Margin="3,3,3,3"/>
<dxe:TextEdit
x:Name="KVDatepicker_UhrzeitBis"
Grid.Row="2"
Grid.Column="3"
Grid.ColumnSpan="2"
Width="75"
Height="23"
Margin="3,3,3,3"
InvalidValueBehavior="AllowLeaveEditor"
Mask="(0?\d|1\d|2[0-3]):[0-5]\d"
MaskShowPlaceHolders="True"
MaskType="RegEx"
MaskUseAsDisplayFormat="True"
ShowError="False"
Visibility="Visible" />
</Grid>
</GroupBox>
<!--##################################################################-->
<!-- ################################################################## -->
<!-- ##################################### unterer 2/3 Mitarbeiter Controll ####################################### -->
@@ -255,32 +452,73 @@
<!-- Aus der SearchView ein Grid Bauen das mehr Informationen Enthält / zurzeit Name Adresse Arbeitszeit -->
<dxg:GridControl x:Name="GridDataControlKlientVertretungsearchview" Visibility="Visible" Grid.Row="2" Grid.Column="0" AllowDrop="true" Margin="3,3,3,3" VerticalContentAlignment="Center" >
<dxg:GridControl.Columns >
<dxg:GridControl
x:Name="GridDataControlKlientVertretungsearchview"
Grid.Row="2"
Grid.Column="0"
Margin="3,3,3,3"
VerticalContentAlignment="Center"
AllowDrop="true"
Visibility="Visible">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Name" Width="155" ReadOnly="True" Header="Name"/>
<dxg:GridColumn FieldName="Postleitzahl" Width="75" ReadOnly="True" Header="Postleitzahl" />
<dxg:GridColumn FieldName="Strasse" Width="100" ReadOnly="True" Header="Strasse" />
<dxg:GridColumn FieldName="Stadt" Width="105" ReadOnly="True" Header="Stadt" />
<dxg:GridColumn FieldName="Geschlecht" Width="75" ReadOnly="True" Header="Geschlecht" />
<dxg:GridColumn
Width="155"
FieldName="Name"
Header="Name"
ReadOnly="True" />
<dxg:GridColumn
Width="75"
FieldName="Postleitzahl"
Header="Postleitzahl"
ReadOnly="True" />
<dxg:GridColumn
Width="100"
FieldName="Strasse"
Header="Strasse"
ReadOnly="True" />
<dxg:GridColumn
Width="105"
FieldName="Stadt"
Header="Stadt"
ReadOnly="True" />
<dxg:GridColumn
Width="75"
FieldName="Geschlecht"
Header="Geschlecht"
ReadOnly="True" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="True" />
<dxg:TableView
AllowPerPixelScrolling="True"
AutoWidth="True"
ShowTotalSummary="False" />
</dxg:GridControl.View>
</dxg:GridControl>
<!-- ################################################################################################## Margin="3,3,3,3"-->
<!-- ################################################################################################## Margin="3,3,3,3" -->
<StackPanel Grid.Row="3" Grid.Column="0" >
<StackPanel Grid.Row="3" Grid.Column="0">
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" >
<Button Content="Übernehmen" Width="90" Click="ButtonBase_OnClick" Margin="3,3,3,3" />
<Button Content="Schließen" Width="90" Click="ButtonClose_OnClick" Margin="3,3,3,3"/>
<WrapPanel
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Orientation="Horizontal">
<Button
Width="90"
Margin="3,3,3,3"
Click="ButtonBase_OnClick"
Content="Übernehmen" />
<Button
Width="90"
Margin="3,3,3,3"
Click="ButtonClose_OnClick"
Content="Schließen" />
</WrapPanel>
</StackPanel>

View File

@@ -1,160 +1,417 @@
<Window x:Class="BeWo.SchulbegleitenderDienst.VertretungsSearchView"
<Window
x:Class="BeWo.SchulbegleitenderDienst.VertretungsSearchView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
Title="Vertretung auswählen" SizeToContent="WidthAndHeight" AllowsTransparency="True" WindowStartupLocation="CenterScreen"
ResizeMode="CanResizeWithGrip" WindowStyle="None" Background="Transparent" d:DataContext="{d:DesignData VertretungsSearchView}">
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="Vertretung auswählen"
d:DataContext="{d:DesignData VertretungsSearchView}"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="CanResizeWithGrip"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterScreen"
WindowStyle="None"
mc:Ignorable="d">
<Window.Resources>
<dxmvvm:NumericToVisibilityConverter x:Key="NumericToVisibilityConverter" Inverse="True" />
<ControlTemplate x:Key="{dxgt:TableViewThemeKey ResourceKey=DataPresenterTemplate, ThemeName=Office2010Black}" TargetType="{x:Type dxg:DataPresenter}">
<Border Background="White">
<Grid>
<ContentPresenter/>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Es wurden keine Datensätze gefunden" Opacity="1"
<ContentPresenter />
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Opacity="1"
Text="Es wurden keine Datensätze gefunden"
Visibility="{Binding VisibleRowCount, Converter={StaticResource NumericToVisibilityConverter}, RelativeSource={RelativeSource AncestorType=dxg:GridControl}}" />
</Grid>
</Border>
</ControlTemplate>
</Window.Resources>
<GroupBox Header="Vertretung auswählen" x:Name="rootGroupBox" Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown" >
<GroupBox
x:Name="rootGroupBox"
Header="Vertretung auswählen"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid>
<Grid Background="White" x:Name="GridMain">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="3,3,3,0" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="{markup:Translate Klient/in:}" Margin="3,2,3,0" FontWeight="Bold"/>
<Label x:Name="lblCustomerName" Grid.Row="1" Grid.Column="0" Grid.RowSpan="2" Margin="3,0,3,2" Content="Max Mustermann"/>
<Label Grid.Row="0" Grid.Column="1" Content="Schule:" Margin="15,2,2,0" FontWeight="Bold"/>
<Label x:Name="lblSchoolName" Grid.Row="1" Grid.Column="1" Grid.RowSpan="2" Margin="15,0,3,2" Content="Max Mustermann"/>
<Label Grid.Row="0" Grid.Column="2" Content="Betreuungszeiten:" Margin="15,2,2,0" FontWeight="Bold"/>
<Label x:Name="lblBetreuungszeiten" Grid.Row="1" Grid.Column="2" Grid.RowSpan="2" Margin="15,0,3,2" Content="Max Mustermann"/>
<Label Grid.Row="0" Grid.Column="3" Content="{markup:Translate Klient Wunschkriterien}" Margin="15,2,3,0" FontWeight="Bold"/>
<dxg:LookUpEdit Grid.Row="1" Grid.Column="3" Grid.RowSpan="2" Margin="15,0,3,2" x:Name="TokenBoxWunschAnzeige" ValidateOnTextInput="True" ValidateOnEnterKeyPressed="True" TextWrapping="Wrap" IsReadOnly="True"
MinHeight="50" Width="150" PopupHeight="500" PopupWidth="750" PopupMinHeight="100" PopupMinWidth="100" IsPopupAutoWidth="False" >
<dxg:LookUpEdit.StyleSettings>
<dxg:TokenLookUpEditStyleSettings EnableTokenWrapping="True"/>
</dxg:LookUpEdit.StyleSettings>
</dxg:LookUpEdit>
<Label Grid.Row="0" Grid.Column="4" Content="{markup:Translate Klient Ausschlusskriterien}" Margin="15,2,2,0" FontWeight="Bold"/>
<dxg:LookUpEdit Grid.Row="1" Grid.Column="4" Grid.RowSpan="2" Margin="15,0,2,3" x:Name="TokenBoxAusschlussAnzeige" ValidateOnTextInput="True" ValidateOnEnterKeyPressed="True" TextWrapping="Wrap" IsReadOnly="True"
MinHeight="50" Width="150" PopupHeight="500" PopupWidth="750" PopupMinHeight="100" PopupMinWidth="100" IsPopupAutoWidth="False" >
<dxg:LookUpEdit.StyleSettings>
<dxg:TokenLookUpEditStyleSettings EnableTokenWrapping="True"/>
</dxg:LookUpEdit.StyleSettings>
</dxg:LookUpEdit>
</Grid>
<GroupBox Header="" Grid.Row="1" Margin="3,0,3,3" Style="{DynamicResource ObjectEditGroupBox}">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Vertretung ab" Margin="3"/>
<Label Grid.Row="1" Grid.Column="0" Content="Vertretung bis" Margin="3" />
<dxe:DateEdit x:Name="KVDatepickerVon" EditValue="{Binding Path=SubstitutionStart, UpdateSourceTrigger=PropertyChanged}" MaskType="DateTimeAdvancingCaret" AllowNullInput="False" Grid.Column="1" Grid.Row="0" Margin="3" Height="23" Width="125" />
<dxe:DateEdit x:Name="KVDatepickerBis" EditValue="{Binding Path=SubstitutionEnd, UpdateSourceTrigger=PropertyChanged}" MaskType="DateTimeAdvancingCaret" AllowNullInput="False" Grid.Column="1" Grid.Row="1" Margin="3" Height="23" Width="125" />
<Label Grid.Column="2" Grid.Row="0" Content="Uhrzeit" Margin="3" />
<dxe:TextEdit Grid.Column="3" Grid.Row="0" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" ShowError="False" MaskShowPlaceHolders="True"
MaskUseAsDisplayFormat="True" x:Name="startTime" Height="23" Width="60" Margin="3"/>
<Label Grid.Column="2" Grid.Row="1" Content="Uhrzeit" Margin="3" />
<dxe:TextEdit Grid.Column="3" Grid.Row="1" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" ShowError="False" MaskShowPlaceHolders="True"
MaskUseAsDisplayFormat="True" x:Name="endTime" Height="23" Width="60" Margin="3"/>
<Label x:Name="lblZuletztVertreten" Grid.Row="0" Grid.Column="5" Margin="3" Content="Letzte Vertretung" />
<ListBox Grid.Row="0" Grid.Column="6" Width="200" Height="54" Grid.RowSpan="2" Margin="3" x:Name="ListBoxLetzteVertreter" LostFocus="LetzteVertreter_OnLostFocus" SelectionChanged="LetzteVertreter_OnSelectionChanged" />
</Grid>
</GroupBox>
<GroupBox Header="" Grid.Row="2" Grid.Column="0" Style="{StaticResource ObjectEditGroupBox}" Margin="3,3,3,3" >
<Grid >
<Grid x:Name="GridMain" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<WrapPanel Orientation="Horizontal" Margin="0,3,0,3">
<CheckBox Content="{markup:Translate männlich}" Margin="3,0,3,0" Click="RBMaennlich_OnClick" x:Name="RBMaennlich" IsChecked="True" VerticalAlignment="Center"/>
<CheckBox Content="{markup:Translate weiblich}" Margin="3,0,3,0" Click="RBWeiblich_OnClick" x:Name="RBWeiblich" IsChecked="True" VerticalAlignment="Center"/>
<Label Content="PLZ:" Margin="10,0,3,0"/>
<dxe:TextEdit x:Name="PlzKlient" Margin="3,0,3,0" Height="23" Width="70" VerticalContentAlignment="Center" EditValueChanged="PlzKlient_OnTextChanged" MaskType="RegEx" Mask="\d{1,5}" ShowError="False" />
<Grid
Grid.Row="0"
Margin="3,3,3,0"
HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3,2,3,0"
Content="{markup:Translate Klient/in:}"
FontWeight="Bold" />
<Label
x:Name="lblCustomerName"
Grid.Row="1"
Grid.RowSpan="2"
Grid.Column="0"
Margin="3,0,3,2"
Content="Max Mustermann" />
<Label Content="Ort:" Margin="3,0,3,0"/>
<TextBox x:Name="OrtKlient" Margin="3,0,3,0" Height="23" Width="200" VerticalContentAlignment="Center" TextChanged="OrtKlient_OnTextChanged" />
<Label
Grid.Row="0"
Grid.Column="1"
Margin="15,2,2,0"
Content="Schule:"
FontWeight="Bold" />
<Label
x:Name="lblSchoolName"
Grid.Row="1"
Grid.RowSpan="2"
Grid.Column="1"
Margin="15,0,3,2"
Content="Max Mustermann" />
<CheckBox Content="{markup:Translate Verwende Abstandsmessung}" Margin="3,0,3,0" x:Name="chkEntfernungssuche" IsChecked="False" VerticalAlignment="Center" ToolTip="{markup:Translate Das Aktivieren der Option verwendet die Google Suche um den Abstand zwischen Adressen zu messen. Dieser Vorgang kann etwas mehr Zeit benötigen.}"/>
</WrapPanel>
<Button Grid.Row="1" Content="Suche starten" Width="90" Click="ButtonSuche_OnClick" Margin="3,3,3,3" HorizontalAlignment="Right" />
<Label
Grid.Row="0"
Grid.Column="2"
Margin="15,2,2,0"
Content="Betreuungszeiten:"
FontWeight="Bold" />
<Label
x:Name="lblBetreuungszeiten"
Grid.Row="1"
Grid.RowSpan="2"
Grid.Column="2"
Margin="15,0,3,2"
Content="Max Mustermann" />
<Label
Grid.Row="0"
Grid.Column="3"
Margin="15,2,3,0"
Content="{markup:Translate Klient Wunschkriterien}"
FontWeight="Bold" />
<dxg:LookUpEdit
x:Name="TokenBoxWunschAnzeige"
Grid.Row="1"
Grid.RowSpan="2"
Grid.Column="3"
Width="150"
MinHeight="50"
Margin="15,0,3,2"
IsPopupAutoWidth="False"
IsReadOnly="True"
PopupHeight="500"
PopupMinHeight="100"
PopupMinWidth="100"
PopupWidth="750"
TextWrapping="Wrap"
ValidateOnEnterKeyPressed="True"
ValidateOnTextInput="True">
<dxg:LookUpEdit.StyleSettings>
<dxg:TokenLookUpEditStyleSettings EnableTokenWrapping="True" />
</dxg:LookUpEdit.StyleSettings>
</dxg:LookUpEdit>
<Label
Grid.Row="0"
Grid.Column="4"
Margin="15,2,2,0"
Content="{markup:Translate Klient Ausschlusskriterien}"
FontWeight="Bold" />
<dxg:LookUpEdit
x:Name="TokenBoxAusschlussAnzeige"
Grid.Row="1"
Grid.RowSpan="2"
Grid.Column="4"
Width="150"
MinHeight="50"
Margin="15,0,2,3"
IsPopupAutoWidth="False"
IsReadOnly="True"
PopupHeight="500"
PopupMinHeight="100"
PopupMinWidth="100"
PopupWidth="750"
TextWrapping="Wrap"
ValidateOnEnterKeyPressed="True"
ValidateOnTextInput="True">
<dxg:LookUpEdit.StyleSettings>
<dxg:TokenLookUpEditStyleSettings EnableTokenWrapping="True" />
</dxg:LookUpEdit.StyleSettings>
</dxg:LookUpEdit>
</Grid>
<GroupBox
Grid.Row="1"
Margin="3,0,3,3"
Header=""
Style="{DynamicResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
Content="Vertretung ab" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
Content="Vertretung bis" />
<dxe:DateEdit
x:Name="KVDatepickerVon"
Grid.Row="0"
Grid.Column="1"
Width="125"
Height="23"
Margin="3"
AllowNullInput="False"
EditValue="{Binding Path=SubstitutionStart, UpdateSourceTrigger=PropertyChanged}"
MaskType="DateTimeAdvancingCaret" />
<dxe:DateEdit
x:Name="KVDatepickerBis"
Grid.Row="1"
Grid.Column="1"
Width="125"
Height="23"
Margin="3"
AllowNullInput="False"
EditValue="{Binding Path=SubstitutionEnd, UpdateSourceTrigger=PropertyChanged}"
MaskType="DateTimeAdvancingCaret" />
<Label
Grid.Row="0"
Grid.Column="2"
Margin="3"
Content="Uhrzeit" />
<dxe:TextEdit
x:Name="startTime"
Grid.Row="0"
Grid.Column="3"
Width="60"
Height="23"
Margin="3"
Mask="(0?\d|1\d|2[0-3]):[0-5]\d"
MaskShowPlaceHolders="True"
MaskType="RegEx"
MaskUseAsDisplayFormat="True"
ShowError="False" />
<Label
Grid.Row="1"
Grid.Column="2"
Margin="3"
Content="Uhrzeit" />
<dxe:TextEdit
x:Name="endTime"
Grid.Row="1"
Grid.Column="3"
Width="60"
Height="23"
Margin="3"
Mask="(0?\d|1\d|2[0-3]):[0-5]\d"
MaskShowPlaceHolders="True"
MaskType="RegEx"
MaskUseAsDisplayFormat="True"
ShowError="False" />
<Label
x:Name="lblZuletztVertreten"
Grid.Row="0"
Grid.Column="5"
Margin="3"
Content="Letzte Vertretung" />
<ListBox
x:Name="ListBoxLetzteVertreter"
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="6"
Width="200"
Height="54"
Margin="3"
LostFocus="LetzteVertreter_OnLostFocus"
SelectionChanged="LetzteVertreter_OnSelectionChanged" />
</Grid>
</GroupBox>
<dxg:GridControl x:Name="GridControlPossibleVertreter" Grid.Row="3" Grid.Column="0" Margin="3,3,3,3" Visibility="Visible" Height="200">
<GroupBox
Grid.Row="2"
Grid.Column="0"
Margin="3,3,3,3"
Header=""
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<WrapPanel Margin="0,3,0,3" Orientation="Horizontal">
<CheckBox
x:Name="RBMaennlich"
Margin="3,0,3,0"
VerticalAlignment="Center"
Click="RBMaennlich_OnClick"
Content="{markup:Translate männlich}"
IsChecked="True" />
<CheckBox
x:Name="RBWeiblich"
Margin="3,0,3,0"
VerticalAlignment="Center"
Click="RBWeiblich_OnClick"
Content="{markup:Translate weiblich}"
IsChecked="True" />
<Label Margin="10,0,3,0" Content="PLZ:" />
<dxe:TextEdit
x:Name="PlzKlient"
Width="70"
Height="23"
Margin="3,0,3,0"
VerticalContentAlignment="Center"
EditValueChanged="PlzKlient_OnTextChanged"
Mask="\d{1,5}"
MaskType="RegEx"
ShowError="False" />
<Label Margin="3,0,3,0" Content="Ort:" />
<TextBox
x:Name="OrtKlient"
Width="200"
Height="23"
Margin="3,0,3,0"
VerticalContentAlignment="Center"
TextChanged="OrtKlient_OnTextChanged" />
<CheckBox
x:Name="chkEntfernungssuche"
Margin="3,0,3,0"
VerticalAlignment="Center"
Content="{markup:Translate Verwende Abstandsmessung}"
IsChecked="False"
ToolTip="{markup:Translate Das Aktivieren der Option verwendet die Google Suche um den Abstand zwischen Adressen zu messen. Dieser Vorgang kann etwas mehr Zeit benötigen.}" />
</WrapPanel>
<Button
Grid.Row="1"
Width="90"
Margin="3,3,3,3"
HorizontalAlignment="Right"
Click="ButtonSuche_OnClick"
Content="Suche starten" />
</Grid>
</GroupBox>
<dxg:GridControl
x:Name="GridControlPossibleVertreter"
Grid.Row="3"
Grid.Column="0"
Height="200"
Margin="3,3,3,3"
Visibility="Visible">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Nachname" ReadOnly="True" Header="Nachname" SortOrder="Ascending" />
<dxg:GridColumn FieldName="Vorname" ReadOnly="True" Header="Vorname"/>
<dxg:GridColumn FieldName="Arbeitszeit" ReadOnly="True" Header="Betreuungszeiten"/>
<dxg:GridColumn FieldName="Postleitzahl" ReadOnly="True" Header="Postleitzahl" />
<dxg:GridColumn FieldName="Strasse" ReadOnly="True" Header="Strasse" />
<dxg:GridColumn FieldName="Stadt" ReadOnly="True" Header="Stadt" />
<dxg:GridColumn FieldName="Geschlecht" ReadOnly="True" Header="Geschlecht" />
<dxg:GridColumn
FieldName="Nachname"
Header="Nachname"
ReadOnly="True"
SortOrder="Ascending" />
<dxg:GridColumn
FieldName="Vorname"
Header="Vorname"
ReadOnly="True" />
<dxg:GridColumn
FieldName="Arbeitszeit"
Header="Betreuungszeiten"
ReadOnly="True" />
<dxg:GridColumn
FieldName="Postleitzahl"
Header="Postleitzahl"
ReadOnly="True" />
<dxg:GridColumn
FieldName="Strasse"
Header="Strasse"
ReadOnly="True" />
<dxg:GridColumn
FieldName="Stadt"
Header="Stadt"
ReadOnly="True" />
<dxg:GridColumn
FieldName="Geschlecht"
Header="Geschlecht"
ReadOnly="True" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" BestFitMode="AllRows" AllowBestFit="True" ShowTotalSummary="False" ShowGroupPanel="False" RowDoubleClick="TableView_OnRowDoubleClick" ShowGridMenu="TableView_OnShowGridMenu"/>
<dxg:TableView
AllowBestFit="True"
AllowPerPixelScrolling="True"
BestFitMode="AllRows"
RowDoubleClick="TableView_OnRowDoubleClick"
ShowGridMenu="TableView_OnShowGridMenu"
ShowGroupPanel="False"
ShowTotalSummary="False" />
</dxg:GridControl.View>
</dxg:GridControl>
<StackPanel Grid.Row="4" Grid.Column="0" Margin="3" >
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" >
<Button Content="Übernehmen" Width="90" Click="ButtonBase_OnClick" Margin="3,3,3,3" />
<Button Content="Schließen" Width="90" Click="ButtonClose_OnClick" Margin="3,3,3,3"/>
<StackPanel
Grid.Row="4"
Grid.Column="0"
Margin="3">
<WrapPanel
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Orientation="Horizontal">
<Button
Width="90"
Margin="3,3,3,3"
Click="ButtonBase_OnClick"
Content="Übernehmen" />
<Button
Width="90"
Margin="3,3,3,3"
Click="ButtonClose_OnClick"
Content="Schließen" />
</WrapPanel>
</StackPanel>
</Grid>

View File

@@ -992,11 +992,8 @@ namespace BeWo.ServiceProxy
lClient.Endpoint.Behaviors.Add(new MultitenancyEndpointBehavior());
lClient.Endpoint.Address = EndpointAddresses[typeof(TInterface)];
}
return lClient;
}
@@ -1010,7 +1007,10 @@ namespace BeWo.ServiceProxy
Monitor.Enter(_Lock);
if ((++_RunningAsyncs) == 1 && BeWoApp.MainControl != null)
{
if (BeWoApp.CurrentAnimatedBeWoWindow is null)
BeWoApp.MainControl.StartWaiting();
else
BeWoApp.CurrentAnimatedBeWoWindow.StartWaiting();
}
Monitor.Exit(_Lock);
@@ -1021,6 +1021,7 @@ namespace BeWo.ServiceProxy
Monitor.Enter(_Lock);
if ((--_RunningAsyncs) == 0 && BeWoApp.MainControl != null)
{
BeWoApp.CurrentAnimatedBeWoWindow?.EndWaiting();
BeWoApp.MainControl.EndWaiting();
}

View File

@@ -57,8 +57,8 @@
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="#FF5C0000" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#FF993B3B" />
<GradientStop Offset="3" Color="#FF5C1919" />
<GradientStop Offset="0" Color="#ef4444" />
<GradientStop Offset="3" Color="#dc2626" />
</LinearGradientBrush>
</Style.Resources>

View File

@@ -0,0 +1,38 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="WindowBase" TargetType="{x:Type Window}" />
<Style
x:Key="EmptyWindow"
BasedOn="{StaticResource WindowBase}"
TargetType="{x:Type Window}" />
<!-- Eine Ease-Out-Funktion für eine sanfte Bewegung -->
<QuadraticEase x:Key="EaseOut" EasingMode="EaseOut" />
<Storyboard x:Key="WindowLoadedAnimation">
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0"
To="1"
Duration="0:0:0.5" />
<DoubleAnimation
EasingFunction="{StaticResource EaseOut}"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)"
From="50"
To="0"
Duration="0:0:0.5" />
</Storyboard>
<Storyboard x:Key="WindowClosingAnimation">
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="1"
To="0"
Duration="0:0:0.5" />
<DoubleAnimation
EasingFunction="{StaticResource EaseOut}"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)"
From="0"
To="50"
Duration="0:0:0.5" />
</Storyboard>
</ResourceDictionary>

View File

@@ -0,0 +1,3 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</ResourceDictionary>

View File

@@ -0,0 +1,146 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui"
xmlns:templateselectors="clr-namespace:BeWo.View.TemplateSelectors"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel">
<DataTemplate x:Key="ConversationHamburgerMenuItemTemplate" DataType="{x:Type viewmodel:AiConversationVM}">
<dxwui:HamburgerMenuNavigationButton Content="{Binding Displayname}" />
</DataTemplate>
<!-- Conversation Control -->
<DataTemplate x:Key="ConversationTemplate">
<Border
Width="auto"
Margin="0,0,0,0"
HorizontalAlignment="Stretch"
Background="#44000000"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="10, 10, 10, 10">
<Grid Margin="8">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock
FontWeight="SemiBold"
Text="{Binding Displayname}"
TextTrimming="CharacterEllipsis" />
<StackPanel Grid.Row="1" Orientation="Horizontal">
<TextBlock
FontSize="10"
FontWeight="Thin"
Text="Erstellt: " />
<TextBlock
FontSize="10"
FontWeight="Thin"
Text="{Binding Created, StringFormat={}{0:dd.MM.yyyy HH:mm:ss}}" />
</StackPanel>
<StackPanel Grid.Row="2" Orientation="Horizontal">
<TextBlock
FontSize="10"
FontWeight="Thin"
Text="Modell: " />
<TextBlock
FontSize="10"
FontWeight="Thin"
Text="{Binding Modell.ModelName}" />
</StackPanel>
</Grid>
</Border>
</DataTemplate>
<!-- Assistent Message Control -->
<DataTemplate x:Key="AssistentMessageTemplate">
<Grid Margin="0,0,30,0" HorizontalAlignment="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border
Width="auto"
Margin="0,0,4,0"
Padding="3"
VerticalAlignment="Top"
Background="#CCFFFFFF"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="10, 10, 10, 10">
<Image
Width="24"
Height="24"
Source="..\..\Ressources\Icons\chatbot2.png" />
</Border>
<Border
Grid.Column="1"
Background="#33000000"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="0, 10, 10, 10">
<Grid>
<TextBox
Height="auto"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Message, Converter={StaticResource NewlineConverter}}"
TextWrapping="Wrap" />
</Grid>
</Border>
</Grid>
</DataTemplate>
<!-- System Message Control -->
<DataTemplate x:Key="SystemMessageTemplate">
<Border
Width="auto"
Margin="30,0,30,0"
HorizontalAlignment="Center"
Background="#33000000"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="0">
<Grid>
<TextBox
Height="auto"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Message, Converter={StaticResource NewlineConverter}}"
TextWrapping="Wrap" />
</Grid>
</Border>
</DataTemplate>
<!-- User Message Control -->
<DataTemplate x:Key="UserMessageTemplate">
<Border
Width="auto"
Margin="30,0,0,0"
HorizontalAlignment="Right"
Background="#33000000"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="10, 0, 10, 10">
<Grid>
<TextBox
Height="auto"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Message, Converter={StaticResource NewlineConverter}}"
TextWrapping="Wrap" />
</Grid>
</Border>
</DataTemplate>
<templateselectors:AiConversationMessageTemplateSelector
x:Key="AiConversationMessageTemplateSelector"
AssistentMessageTemplate="{StaticResource AssistentMessageTemplate}"
SystemMessageTemplate="{StaticResource SystemMessageTemplate}"
UserMessageTemplate="{StaticResource UserMessageTemplate}" />
</ResourceDictionary>

View File

@@ -3,7 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:uc="clr-namespace:BeWo.View.Controls">
xmlns:uc="clr-namespace:BeWo.View.Controls" xmlns:templateselectors="clr-namespace:BeWo.View.TemplateSelectors">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Colors\Colors.xaml" />
@@ -23,6 +23,9 @@
<ResourceDictionary Source="ControlStyles\TextBoxStyles.xaml" />
<ResourceDictionary Source="ControlStyles\TextEditStyles.xaml" />
<ResourceDictionary Source="ControlStyles\ToggleButtonStyles.xaml" />
<ResourceDictionary Source="ControlStyles\WindowStyles.xaml" />
<ResourceDictionary Source="Features\AIChatStyles.xaml" />
<!-- Benötigt TextBoxStyles + ToggleButtonStyles -->
<ResourceDictionary Source="ControlStyles\NullItemComboBoxStyles.xaml" />
@@ -40,4 +43,6 @@
<Style BasedOn="{StaticResource BaseRadioButton}" TargetType="RadioButton" />
<Style BasedOn="{StaticResource TextBoxBase}" TargetType="TextBox" />
<Style BasedOn="{StaticResource BaseTextEdit}" TargetType="dxe:TextEdit" />
<!-- Default Styles -->
</ResourceDictionary>

View File

@@ -1,13 +1,20 @@
<Window x:Class="BeWo.UploadDialog"
<Window
x:Class="BeWo.UploadDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="UploadDialog" Height="150" Width="300"
WindowStartupLocation="CenterOwner"
WindowStyle="None"
Title="UploadDialog"
Width="300"
Height="150"
AllowsTransparency="True"
Background="Transparent" ResizeMode="NoResize" >
Background="Transparent"
ResizeMode="NoResize"
WindowStartupLocation="CenterOwner"
WindowStyle="None">
<Grid>
<GroupBox Style="{StaticResource MainContentGroupBoxWithoutMaximizeBtnStyle}" Header="Download" MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown">
<GroupBox
Header="Download"
MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown"
Style="{StaticResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid Background="{DynamicResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
@@ -18,9 +25,29 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Margin="3" Text="{Binding Question}" Grid.ColumnSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center" Foreground="#FF202020"/>
<Button Margin="0,0,5,5" Grid.Row="1" Grid.Column="1" Content="Hochladen" Click="btn_Upload_Click" x:Name="Hochladebtn" />
<Button Margin="0,0,5,5" Grid.Row="1" Grid.Column="2" Content="Abbrechen" Command="Close" x:Name="Abbrechbtn" />
<TextBlock
Grid.ColumnSpan="3"
Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="#FF202020"
Text="{Binding Question}"
TextAlignment="Center"
TextWrapping="Wrap" />
<Button
x:Name="Hochladebtn"
Grid.Row="1"
Grid.Column="1"
Margin="0,0,5,5"
Click="btn_Upload_Click"
Content="Hochladen" />
<Button
x:Name="Abbrechbtn"
Grid.Row="1"
Grid.Column="2"
Margin="0,0,5,5"
Command="Close"
Content="Abbrechen" />
</Grid>
</GroupBox>
</Grid>

View File

@@ -35,6 +35,7 @@ namespace BeWo.View
InitializeComponent();
rootGroupBox.Content = fe;
CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) => Close()));
}

View File

@@ -1,4 +1,6 @@
using BeWo.View.Controls;
using BeWo.View.Detail;
using BeWo.View.Windows;
using BeWo.ViewModel;
using BS.Shared.Extensions;
using System;
@@ -13,6 +15,23 @@ namespace BeWo.View
{
public static class BeWoWindowBuilder
{
public static Window GetAiConversationZeiterfassungWindow(List<Tuple<long, long>> context, double height = 600, double width = 1200)
{
var title = "Zeiterfassung KI Chat";
var control = new AiConversationChatView();
control.ViewModel.UIContext = (int)(UIContext.ServiceRecord);
control.ViewModel.ContextBeWoObjects = context;
var window = GetAnimatedBeWoWindow(title, control, 400, height, 1000, 400, width, 1600);
//var window = GetGenericBeWoWindow(title, 400, height, 1000, 600, width, 1600);
//window.GroupBoxContent = control;
return window;
}
public static BeWoWindow GetTextViewer(string title, string text, bool fixed_size = false, double height = 600, double width = 600)
{
if (fixed_size)
@@ -51,6 +70,7 @@ namespace BeWo.View
public static BeWoWindow GetBeWoWindow(String title, Control control, double height = 600, double width = 1200)
{
var beWoWindow = GetGenericBeWoWindow(title, 100, height, 1000, 100, width, 1600);
beWoWindow.GroupBoxContent = control;
return beWoWindow;
@@ -60,6 +80,12 @@ namespace BeWo.View
{
var beWoWindow = new BeWoWindow();
if (min_height > height || height > max_height)
throw new InvalidOperationException($"Window Height: {min_height} < {height} < {max_height}");
if (min_width > width || width > max_width)
throw new InvalidOperationException($"Window Width: {min_width} < {width} < {max_width}");
beWoWindow.Height = height;
beWoWindow.MinHeight = min_height;
beWoWindow.MaxHeight = max_height;
@@ -75,6 +101,32 @@ namespace BeWo.View
return beWoWindow;
}
private static AnimatedBeWoWindow GetAnimatedBeWoWindow(string title, Control control, double min_height, double height, double max_height, double min_width, double width, double max_width)
{
var beWoWindow = new AnimatedBeWoWindow();
if (min_height > height || height > max_height)
throw new InvalidOperationException($"Window Height: {min_height} < {height} < {max_height}");
if (min_width > width || width > max_width)
throw new InvalidOperationException($"Window Width: {min_width} < {width} < {max_width}");
beWoWindow.Height = height;
beWoWindow.MinHeight = min_height;
beWoWindow.MaxHeight = max_height;
beWoWindow.Width = width;
beWoWindow.MinWidth = min_width;
beWoWindow.MaxHeight = max_width;
beWoWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;
beWoWindow.Owner = BeWoApp.CurrentBeWo.MainWindow;
beWoWindow.Title = title + " Fenster";
beWoWindow.rootGroupBox.Header = title;
beWoWindow.GroupBoxContent = control;
return beWoWindow;
}
public static void ShowErrorMessageBox(string text)
{
MessageBox.Show(text, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk);

View File

@@ -6,7 +6,7 @@ using System.Windows.Interop;
namespace BeWo.View.Controls
{
public class PopupNonTopmost : Popup
public class PopupNonTopmost : System.Windows.Controls.Primitives.Popup
{
public static DependencyProperty TopmostProperty = Window.TopmostProperty.AddOwner(typeof (PopupNonTopmost), new FrameworkPropertyMetadata(false, OnTopmostChanged));

View File

@@ -6,6 +6,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui"
xmlns:listviewmodel="clr-namespace:BeWo.ViewModel.ListViewModel"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
@@ -39,7 +40,7 @@
Grid.Row="0"
Margin="0"
Orientation="Horizontal">
<Label
<!--<Label
Margin="0,0,0,0"
Padding="2"
Content="Suche"
@@ -78,7 +79,7 @@
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
</Button>-->
</StackPanel>
</GroupBox.Header>
@@ -90,33 +91,48 @@
</Grid.RowDefinitions>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" MinWidth="200" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!--<dxwui:HamburgerMenu
Background="Transparent"
ItemTemplate="{StaticResource ConversationHamburgerMenuItemTemplate}"
ItemsSource="{Binding VMList}">
<dxwui:HamburgerMenu.Content>
<dxwui:HamburgerMenuNavigationButton />
</dxwui:HamburgerMenu.Content>
</dxwui:HamburgerMenu>-->
<Grid>
<ListView
x:Name="listbox_conversations"
Background="Transparent"
ItemsSource="{Binding VMList}"
SelectedItem="{Binding SelectedVM}">
<ListView.ItemTemplate>
<DataTemplate x:Name="conversation_datatemplate" DataType="viewmodel:AiConversationVM">
<TextBlock Text="{Binding Json}" />
</DataTemplate>
</ListView.ItemTemplate>
x:Name="listbox_conversations"
Background="Transparent"
ItemTemplate="{StaticResource ConversationTemplate}"
ItemsSource="{Binding VMList}"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectedItem="{Binding SelectedVM}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="2" />
<Setter Property="BorderThickness" Value="0" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
</Grid>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid Visibility="{Binding SelectedVM, Converter={StaticResource ObjectVisibilityConverter}}">
<Grid Grid.Row="1" Visibility="{Binding SelectedVM, Converter={StaticResource ObjectVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0" />
<ColumnDefinition Width="*" />
@@ -151,14 +167,25 @@
</Grid>
<ListView
x:Name="listbox_messages"
Grid.Row="1"
Padding="3"
Background="Transparent"
ItemsSource="{Binding SelectedVM.Messages.VMList, Converter={StaticResource TestDebugConverter}}">
<ListView.ItemTemplate>
<DataTemplate x:Name="messages_datatemplate" DataType="viewmodel:AiConversationMessageVM">
<TextBlock Text="{Binding Json}" />
</DataTemplate>
</ListView.ItemTemplate>
BorderThickness="0"
ItemTemplateSelector="{StaticResource AiConversationMessageTemplateSelector}"
ItemsSource="{Binding SelectedVM.Messages.VMList, Converter={StaticResource TestDebugConverter}}"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="2" />
<Setter Property="BorderThickness" Value="0" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
</Grid>
@@ -171,8 +198,8 @@
<Rectangle Fill="#FF000000">
<Rectangle.OpacityMask>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#33FFFFFF" />
<GradientStop Offset="0" Color="#33000000" />
<GradientStop Offset="1" Color="#99FFFFFF" />
</LinearGradientBrush>
</Rectangle.OpacityMask>
</Rectangle>
@@ -224,7 +251,7 @@
Content="Schließen"
FontWeight="Medium"
Style="{StaticResource NavigationToolbarButtonStyle}"
Visibility="Visible" />
Visibility="Collapsed" />
</StackPanel>
</Grid>
</Border>

View File

@@ -4,6 +4,7 @@ using BS.Shared.Extensions;
using DevExpress.Mvvm;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
using System.Linq;
using System.Text;
@@ -32,6 +33,8 @@ namespace BeWo.View.Detail
OpenAiSettingCommand = new DelegateCommand(OpenAiSetting);
ReloadConversationsCommand = new DelegateCommand(ReloadConversations);
ReloadModelsCommand = new DelegateCommand(ReloadModels);
((INotifyCollectionChanged)listbox_messages.Items).CollectionChanged += listbox_conversations_SelectionChanged;
}
public AiConversationChatView(object o) : this()
@@ -92,5 +95,15 @@ namespace BeWo.View.Detail
ViewModel.VMList.MakeEqualTo(vms.VMList);
}, true);
}
private void listbox_conversations_SelectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (VisualTreeHelper.GetChildrenCount(listbox_messages) > 0)
{
Border border = (Border)VisualTreeHelper.GetChild(listbox_messages, 0);
ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}
}
}
}

View File

@@ -1,9 +1,12 @@
<Window x:Class="BeWo.View.Detail.CustomerHistoryDialog"
<Window
x:Class="BeWo.View.Detail.CustomerHistoryDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:detail="clr-namespace:BeWo.View.Detail"
Title="CustomerHistoryDialog" Height="300" Width="300">
Title="CustomerHistoryDialog"
Width="300"
Height="300">
<Grid>
<detail:CustomerHistoryView x:Name="CustomerHistoryView"></detail:CustomerHistoryView>
<detail:CustomerHistoryView x:Name="CustomerHistoryView" />
</Grid>
</Window>

View File

@@ -1,12 +1,15 @@
<Window x:Class="BeWo.View.Detail.DebugMessageLogView"
<Window
x:Class="BeWo.View.Detail.DebugMessageLogView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BeWo.View.Detail"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="Debug Log"
Width="1000"
Height="900"
WindowStartupLocation="Manual"
Title="Debug Log" mc:Ignorable="d"
Height="900" Width="1000">
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
@@ -16,11 +19,20 @@
<StackPanel Grid.Row="0">
<Button Click="ButtonBase_OnClick">Leeren</Button>
</StackPanel>
<ListView x:Name="DebugListView" ItemsSource="{Binding DebugMessageList}" Background="GhostWhite" Grid.Row="1">
<ListView
x:Name="DebugListView"
Grid.Row="1"
Background="GhostWhite"
ItemsSource="{Binding DebugMessageList}">
<ListView.ItemTemplate>
<DataTemplate DataType="local:DebugWindowMessage">
<Grid>
<TextBlock FontSize="16" FontWeight="Bold" FontFamily="Consolas" Text="{Binding MessageText}" Foreground="{Binding TextColor}"></TextBlock>
<TextBlock
FontFamily="Consolas"
FontSize="16"
FontWeight="Bold"
Foreground="{Binding TextColor}"
Text="{Binding MessageText}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>

View File

@@ -1,13 +1,19 @@
<Window x:Class="BeWo.View.Detail.MailMergeWindow"
<Window
x:Class="BeWo.View.Detail.MailMergeWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:detail="clr-namespace:BeWo.View.Detail"
xmlns:conv="clr-namespace:BeWo.Converter"
xmlns:controls="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
WindowStyle="None"
xmlns:conv="clr-namespace:BeWo.Converter"
xmlns:detail="clr-namespace:BeWo.View.Detail"
x:Name="SerienbriefFenster"
Title="MailMergeWindow"
Width="750"
Height="530"
AllowsTransparency="True"
Background="Transparent"
Title="MailMergeWindow" Height="530" Width="750" ResizeMode="NoResize" WindowStartupLocation="CenterOwner" x:Name="SerienbriefFenster">
ResizeMode="NoResize"
WindowStartupLocation="CenterOwner"
WindowStyle="None">
<Window.Resources>
<!-- Region HilfeplanTemplate -->
<Style x:Key="SupportConceptMailMergeDetailStyle" TargetType="{x:Type ListBoxItem}">
@@ -18,16 +24,28 @@
<Setter.Value>
<ControlTemplate>
<Grid x:Name="PART_DeinGridIstNichtMeinGridIstMeinUngrid">
<Border x:Name="ItemBorder" CornerRadius="5" MinHeight="30" Background="#FF000000">
<Border
x:Name="ItemBorder"
MinHeight="30"
Background="#FF000000"
CornerRadius="5">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#19000000" Offset="0" />
<GradientStop Color="#26000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#26000000" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<Border x:Name="ItemContent" CornerRadius="5" MinHeight="30">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,3,5,3" OpacityMask="{x:Null}" SnapsToDevicePixels="True">
<Border
x:Name="ItemContent"
MinHeight="30"
CornerRadius="5">
<Grid
Margin="5,3,5,3"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
OpacityMask="{x:Null}"
SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" MinWidth="250" />
@@ -38,20 +56,56 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<CheckBox x:Name="cb1" Grid.RowSpan="2" Margin="3" Tag="{Binding}" Checked="CheckBoxChecked" Unchecked="CheckBoxUnChecked" VerticalAlignment="Center" HorizontalAlignment="Center" Height="21" Width="21">
<CheckBox
x:Name="cb1"
Grid.RowSpan="2"
Width="21"
Height="21"
Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Checked="CheckBoxChecked"
Tag="{Binding}"
Unchecked="CheckBoxUnChecked">
<CheckBox.IsChecked>
<MultiBinding Converter="{StaticResource CollectionContainsTag2BoolConverter}">
<Binding ElementName="cb1" Path="Tag"/>
<Binding Path="DataContext.SelectedForPrinting" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window} }"/>
<Binding ElementName="cb1" Path="Tag" />
<Binding Path="DataContext.SelectedForPrinting" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}" />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
<TextBlock x:Name="txtDetail1" Grid.Column="1" Grid.Row="0" Text="{Binding Path=DetailDescription}" FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" />
<TextBlock x:Name="txtDetail2" Grid.Column="1" Grid.Row="1" Text="{Binding Path=AddressString}" FontSize="12" Foreground="#FFA0A0A0" FontFamily="Microsoft Sans Serif" />
<ListBox x:Name="listBoxDetail3" Grid.Row="0" Grid.Column="2" Grid.RowSpan="2" ItemsSource="{Binding Path=CostBearerDetailStrings}" FontSize="12" Foreground="{Binding ForegroundBrush}" FontFamily="Microsoft Sans Serif" Background="Transparent" BorderThickness="0" IsHitTestVisible="False" Margin="6,0,0,0">
<TextBlock
x:Name="txtDetail1"
Grid.Row="0"
Grid.Column="1"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2"
Text="{Binding Path=DetailDescription}" />
<TextBlock
x:Name="txtDetail2"
Grid.Row="1"
Grid.Column="1"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="#FFA0A0A0"
Text="{Binding Path=AddressString}" />
<ListBox
x:Name="listBoxDetail3"
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="2"
Margin="6,0,0,0"
Background="Transparent"
BorderThickness="0"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="{Binding ForegroundBrush}"
IsHitTestVisible="False"
ItemsSource="{Binding Path=CostBearerDetailStrings}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type ListBox}, Mode=FindAncestor}}"/>
<TextBlock Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type ListBox}, Mode=FindAncestor}}" Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
@@ -60,26 +114,26 @@
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsArchived}" Value="True">
<Setter Property="Foreground" TargetName="txtDetail1" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail2" Value="#FF808080" />
<Setter Property="Foreground" TargetName="listBoxDetail3" Value="#FF808080" />
<Setter TargetName="txtDetail1" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail2" Property="Foreground" Value="#FF808080" />
<Setter TargetName="listBoxDetail3" Property="Foreground" Value="#FF808080" />
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#33000000" Offset="0" />
<GradientStop Color="#66000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#33000000" />
<GradientStop Offset="1" Color="#66000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="ListBoxItem.IsSelected" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#CC000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#CC000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
@@ -89,11 +143,11 @@
<Condition Property="ListBoxItem.IsSelected" Value="True" />
<Condition Property="Selector.IsSelectionActive" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#B2000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#B2000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
@@ -115,16 +169,28 @@
<Setter.Value>
<ControlTemplate>
<Grid>
<Border x:Name="ItemBorder" CornerRadius="5" MinHeight="30" Background="#FF000000">
<Border
x:Name="ItemBorder"
MinHeight="30"
Background="#FF000000"
CornerRadius="5">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#19000000" Offset="0" />
<GradientStop Color="#26000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#26000000" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<Border x:Name="ItemContent" CornerRadius="5" MinHeight="30">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,3,5,3" OpacityMask="{x:Null}" SnapsToDevicePixels="True">
<Border
x:Name="ItemContent"
MinHeight="30"
CornerRadius="5">
<Grid
Margin="5,3,5,3"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
OpacityMask="{x:Null}"
SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" SharedSizeGroup="CustomerDetailColumn" />
@@ -135,50 +201,98 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox x:Name="cb2" Grid.RowSpan="2" Margin="3" Tag="{Binding}" Checked="CheckBoxChecked" Unchecked="CheckBoxUnChecked" VerticalAlignment="Center" HorizontalAlignment="Center" Height="21" Width="21">
<CheckBox
x:Name="cb2"
Grid.RowSpan="2"
Width="21"
Height="21"
Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Checked="CheckBoxChecked"
Tag="{Binding}"
Unchecked="CheckBoxUnChecked">
<CheckBox.IsChecked>
<MultiBinding Converter="{StaticResource CollectionContainsTag2BoolConverter}">
<Binding ElementName="cb2" Path="Tag"/>
<Binding Path="DataContext.SelectedForPrinting" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window} }"/>
<Binding ElementName="cb2" Path="Tag" />
<Binding Path="DataContext.SelectedForPrinting" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}" />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
<StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal">
<TextBlock x:Name="txtDetail1" Text="{Binding Path=SimpleDescription}" FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" />
<TextBlock x:Name="txtDetail2" Text="{Binding Path=DateOfBirthString}" Margin="6,0,0,0" FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" />
<StackPanel
Grid.Row="0"
Grid.Column="1"
Orientation="Horizontal">
<TextBlock
x:Name="txtDetail1"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2"
Text="{Binding Path=SimpleDescription}" />
<TextBlock
x:Name="txtDetail2"
Margin="6,0,0,0"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2"
Text="{Binding Path=DateOfBirthString}" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="1" Orientation="Horizontal">
<TextBlock x:Name="txtDetail3" Text="{Binding Path=AddressString}" FontSize="12" Foreground="#FFA0A0A0" FontFamily="Microsoft Sans Serif" />
<StackPanel
Grid.Row="1"
Grid.Column="1"
Orientation="Horizontal">
<TextBlock
x:Name="txtDetail3"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="#FFA0A0A0"
Text="{Binding Path=AddressString}" />
</StackPanel>
<TextBlock Grid.Row="0" Grid.Column="2" x:Name="txtDetail4" Text="{Binding Path=CurrentEmployeeRole}" Margin="16,0,0,0" FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" />
<TextBlock Grid.Column="2" Grid.Row="1" x:Name="txtDetail5" Text="{Binding Path=MainAttendant}" Margin="16,0,0,0" FontSize="14" Foreground="#FFA0A0A0" FontFamily="Microsoft Sans Serif" />
<TextBlock
x:Name="txtDetail4"
Grid.Row="0"
Grid.Column="2"
Margin="16,0,0,0"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2"
Text="{Binding Path=CurrentEmployeeRole}" />
<TextBlock
x:Name="txtDetail5"
Grid.Row="1"
Grid.Column="2"
Margin="16,0,0,0"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFA0A0A0"
Text="{Binding Path=MainAttendant}" />
</Grid>
</Border>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsArchived}" Value="True">
<Setter Property="Foreground" TargetName="txtDetail1" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail2" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail3" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail4" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail5" Value="#FF808080" />
<Setter TargetName="txtDetail1" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail2" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail3" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail4" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail5" Property="Foreground" Value="#FF808080" />
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#33000000" Offset="0" />
<GradientStop Color="#66000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#33000000" />
<GradientStop Offset="1" Color="#66000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="ListBoxItem.IsSelected" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#CC000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#CC000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
@@ -188,11 +302,11 @@
<Condition Property="ListBoxItem.IsSelected" Value="True" />
<Condition Property="Selector.IsSelectionActive" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#B2000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#B2000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
@@ -214,92 +328,165 @@
<Setter.Value>
<ControlTemplate>
<Grid>
<Border x:Name="ItemBorder" CornerRadius="5" MinHeight="30" Background="#FF000000">
<Border
x:Name="ItemBorder"
MinHeight="30"
Background="#FF000000"
CornerRadius="5">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#19000000" Offset="0" />
<GradientStop Color="#26000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#26000000" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<Border x:Name="ItemContent" CornerRadius="5" MinHeight="30">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,3,5,3" OpacityMask="{x:Null}" SnapsToDevicePixels="True" >
<Border
x:Name="ItemContent"
MinHeight="30"
CornerRadius="5">
<Grid
Margin="5,3,5,3"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
OpacityMask="{x:Null}"
SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="personDetailColumn1"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="personDetailColumn2"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="personDetailColumn3"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="personDetailColumn1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="personDetailColumn2" />
<ColumnDefinition Width="Auto" SharedSizeGroup="personDetailColumn3" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox x:Name="cb3" Grid.RowSpan="2" Margin="3" Tag="{Binding}" Checked="CheckBoxChecked" Unchecked="CheckBoxUnChecked" VerticalAlignment="Center" HorizontalAlignment="Center" Height="21" Width="21">
<CheckBox
x:Name="cb3"
Grid.RowSpan="2"
Width="21"
Height="21"
Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Checked="CheckBoxChecked"
Tag="{Binding}"
Unchecked="CheckBoxUnChecked">
<CheckBox.IsChecked>
<MultiBinding Converter="{StaticResource CollectionContainsTag2BoolConverter}">
<Binding ElementName="cb3" Path="Tag"/>
<Binding Path="DataContext.SelectedForPrinting" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window} }"/>
<Binding ElementName="cb3" Path="Tag" />
<Binding Path="DataContext.SelectedForPrinting" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}" />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
<TextBlock x:Name="txtDetail1" Grid.Row="0" Grid.Column="1" Text="{Binding Path=DetailDescription}" FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" />
<TextBlock x:Name="txtDetail2" Grid.Column="1" Grid.Row="1" Text="{Binding Path=AddressString}" FontSize="12" Foreground="#FFA0A0A0" FontFamily="Microsoft Sans Serif" />
<TextBlock x:Name="txtDetail3" Grid.Row="0" Grid.Column="2" Text="{Binding Path=Function}" FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" Margin="10,0,10,0"/>
<TextBlock Visibility="Collapsed" x:Name="txtDetail4" Grid.Column="3" Grid.Row="0" Grid.RowSpan="2" Text="{Binding Path=ContactSummaryInfo}" FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" />
<StackPanel Orientation="Vertical" Grid.Column="3" Grid.Row="0" Grid.RowSpan="2">
<TextBlock FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif">
<TextBlock
x:Name="txtDetail1"
Grid.Row="0"
Grid.Column="1"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2"
Text="{Binding Path=DetailDescription}" />
<TextBlock
x:Name="txtDetail2"
Grid.Row="1"
Grid.Column="1"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="#FFA0A0A0"
Text="{Binding Path=AddressString}" />
<TextBlock
x:Name="txtDetail3"
Grid.Row="0"
Grid.Column="2"
Margin="10,0,10,0"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2"
Text="{Binding Path=Function}" />
<TextBlock
x:Name="txtDetail4"
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="3"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2"
Text="{Binding Path=ContactSummaryInfo}"
Visibility="Collapsed" />
<StackPanel
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="3"
Orientation="Vertical">
<TextBlock
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2">
<TextBlock.Visibility>
<Binding Path="Communication1">
<Binding.Converter>
<conv:ObjectVisibilityConverter/>
<conv:ObjectVisibilityConverter />
</Binding.Converter>
</Binding>
</TextBlock.Visibility>
<TextBlock.Text>
<MultiBinding StringFormat="{}Tel.: {0}">
<Binding Path="Communication1"/>
<Binding Path="Communication1" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif">
<TextBlock
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2">
<TextBlock.Visibility>
<Binding Path="Communication2">
<Binding.Converter>
<conv:ObjectVisibilityConverter/>
<conv:ObjectVisibilityConverter />
</Binding.Converter>
</Binding>
</TextBlock.Visibility>
<TextBlock.Text>
<MultiBinding StringFormat="{}Mobil: {0}">
<Binding Path="Communication2"/>
<Binding Path="Communication2" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock Text="EMail: " FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif">
<TextBlock
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2"
Text="EMail: ">
<TextBlock.Visibility>
<Binding Path="Communication3">
<Binding.Converter>
<conv:ObjectVisibilityConverter/>
<conv:ObjectVisibilityConverter />
</Binding.Converter>
</Binding>
</TextBlock.Visibility>
<TextBlock FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif">
<TextBlock
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2">
<TextBlock.Text>
<Binding Path="Communication3"/>
<Binding Path="Communication3" />
</TextBlock.Text>
</TextBlock>
</TextBlock>
<TextBlock FontSize="14" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif">
<TextBlock
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFD2D2D2">
<TextBlock.Visibility>
<Binding Path="Communication4">
<Binding.Converter>
<conv:ObjectVisibilityConverter/>
<conv:ObjectVisibilityConverter />
</Binding.Converter>
</Binding>
</TextBlock.Visibility>
<TextBlock.Text>
<MultiBinding StringFormat="{}Fax: {0}">
<Binding Path="Communication4"/>
<Binding Path="Communication4" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
@@ -309,28 +496,28 @@
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsArchived}" Value="True">
<Setter Property="Foreground" TargetName="txtDetail1" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail2" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail3" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail4" Value="#FF808080" />
<Setter TargetName="txtDetail1" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail2" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail3" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail4" Property="Foreground" Value="#FF808080" />
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#33000000" Offset="0" />
<GradientStop Color="#66000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#33000000" />
<GradientStop Offset="1" Color="#66000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="ListBoxItem.IsSelected" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#CC000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#CC000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
@@ -340,11 +527,11 @@
<Condition Property="ListBoxItem.IsSelected" Value="True" />
<Condition Property="Selector.IsSelectionActive" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#B2000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#B2000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
@@ -366,16 +553,28 @@
<Setter.Value>
<ControlTemplate>
<Grid>
<Border x:Name="ItemBorder" CornerRadius="5" MinHeight="30" Background="#FF000000">
<Border
x:Name="ItemBorder"
MinHeight="30"
Background="#FF000000"
CornerRadius="5">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#19000000" Offset="0" />
<GradientStop Color="#26000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#19000000" />
<GradientStop Offset="1" Color="#26000000" />
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
<Border x:Name="ItemContent" CornerRadius="5" MinHeight="30">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,3,5,3" OpacityMask="{x:Null}" SnapsToDevicePixels="True">
<Border
x:Name="ItemContent"
MinHeight="30"
CornerRadius="5">
<Grid
Margin="5,3,5,3"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
OpacityMask="{x:Null}"
SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
@@ -384,40 +583,64 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox x:Name="cb4" Checked="CheckBoxChecked" Unchecked="CheckBoxUnChecked" Grid.RowSpan="2" Margin="3" Tag="{Binding}" VerticalAlignment="Center" HorizontalAlignment="Center" Height="21" Width="21">
<CheckBox
x:Name="cb4"
Grid.RowSpan="2"
Width="21"
Height="21"
Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Checked="CheckBoxChecked"
Tag="{Binding}"
Unchecked="CheckBoxUnChecked">
<CheckBox.IsChecked>
<MultiBinding Converter="{StaticResource CollectionContainsTag2BoolConverter}">
<Binding ElementName="cb4" Path="Tag"/>
<Binding Path="DataContext.SelectedForPrinting" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window} }"/>
<Binding ElementName="cb4" Path="Tag" />
<Binding Path="DataContext.SelectedForPrinting" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}" />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
<TextBlock x:Name="txtDetail1" Grid.Row="0" Grid.Column="1" Text="{Binding Path=DetailDescription}" FontSize="14" Foreground="#FFFFFFFF" FontFamily="Microsoft Sans Serif" />
<TextBlock x:Name="txtDetail2" Grid.Column="1" Grid.Row="1" Text="{Binding Path=AddressString}" FontSize="12" Foreground="#FFD2D2D2" FontFamily="Microsoft Sans Serif" />
<TextBlock
x:Name="txtDetail1"
Grid.Row="0"
Grid.Column="1"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="#FFFFFFFF"
Text="{Binding Path=DetailDescription}" />
<TextBlock
x:Name="txtDetail2"
Grid.Row="1"
Grid.Column="1"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="#FFD2D2D2"
Text="{Binding Path=AddressString}" />
</Grid>
</Border>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsArchived}" Value="True">
<Setter Property="Foreground" TargetName="txtDetail1" Value="#FF808080" />
<Setter Property="Foreground" TargetName="txtDetail2" Value="#FF808080" />
<Setter TargetName="txtDetail1" Property="Foreground" Value="#FF808080" />
<Setter TargetName="txtDetail2" Property="Foreground" Value="#FF808080" />
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#33000000" Offset="0" />
<GradientStop Color="#66000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#33000000" />
<GradientStop Offset="1" Color="#66000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="ListBoxItem.IsSelected" Value="True">
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#CC000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#CC000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
@@ -427,11 +650,11 @@
<Condition Property="ListBoxItem.IsSelected" Value="True" />
<Condition Property="Selector.IsSelectionActive" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="OpacityMask" TargetName="ItemBorder">
<Setter TargetName="ItemBorder" Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#99000000" Offset="0" />
<GradientStop Color="#B2000000" Offset="1" />
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#99000000" />
<GradientStop Offset="1" Color="#B2000000" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
@@ -444,13 +667,14 @@
<!-- EndRegion OrganisationenTemplate -->
<detail:ListBoxItemStyleSelector x:Key="StyleSelector"
SupportConceptStyle="{StaticResource SupportConceptMailMergeDetailStyle}"
PersonStyle="{StaticResource PersonDetailStyle}"
<detail:ListBoxItemStyleSelector
x:Key="StyleSelector"
CustomerStyle="{StaticResource CustomerDetailStyle}"
OrganisationStyle="{StaticResource OrganisationDetailStyle}" />
OrganisationStyle="{StaticResource OrganisationDetailStyle}"
PersonStyle="{StaticResource PersonDetailStyle}"
SupportConceptStyle="{StaticResource SupportConceptMailMergeDetailStyle}" />
</Window.Resources>
<GroupBox Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" Header="Serienbrief drucken...">
<GroupBox Header="Serienbrief drucken..." Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid Margin="0,3,0,0" Background="{DynamicResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -464,29 +688,107 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
<Grid
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Margin="3" Content="Vorlage" />
<controls:NullItemComboBox x:Name="VorlagenComboBox" Grid.Row="0" Grid.Column="1" Margin="3" DisplayMemberPath="FileName" ItemsSource="{Binding Path=WordTemplates, UpdateSourceTrigger=PropertyChanged}" SelectedIndex="0"/>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
Content="Vorlage" />
<controls:NullItemComboBox
x:Name="VorlagenComboBox"
Grid.Row="0"
Grid.Column="1"
Margin="3"
DisplayMemberPath="FileName"
ItemsSource="{Binding Path=WordTemplates, UpdateSourceTrigger=PropertyChanged}"
SelectedIndex="0" />
</Grid>
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="0" Margin="3" Grid.ColumnSpan="2">
<Label Content="Suche" FontSize="14" Margin="0,-5,0,0" />
<TextBox Foreground="Black" Height="20" x:Name="TextboxSearch" MinWidth="90" Margin="3,-5,0,0" Width="300" TabIndex="0" Template="{DynamicResource SearchTextBoxTemplate}" BorderThickness="0,0,0,0" />
<TextBlock Margin="3,0,0,0" Foreground="Black" Text="{Binding Path=Items.Count, Converter={StaticResource StringFormatConverter}, ConverterParameter=Suchergebnisse: \{0\}, ElementName=ObjectListBox}" FontFamily="Microsoft Sans Serif" FontSize="14" />
<StackPanel
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="3"
Orientation="Horizontal">
<Label
Margin="0,-5,0,0"
Content="Suche"
FontSize="14" />
<TextBox
x:Name="TextboxSearch"
Width="300"
Height="20"
MinWidth="90"
Margin="3,-5,0,0"
BorderThickness="0,0,0,0"
Foreground="Black"
TabIndex="0"
Template="{DynamicResource SearchTextBoxTemplate}" />
<TextBlock
Margin="3,0,0,0"
FontFamily="Microsoft Sans Serif"
FontSize="14"
Foreground="Black"
Text="{Binding Path=Items.Count, Converter={StaticResource StringFormatConverter}, ConverterParameter=Suchergebnisse: \{0\}, ElementName=ObjectListBox}" />
</StackPanel>
<StackPanel Orientation="Horizontal" x:Name="SortPanel" Margin="3" Grid.Row="2" Grid.Column="0">
<TextBlock Foreground="Black" HorizontalAlignment="Left" Text="Sortiert nach" FontFamily="Microsoft Sans Serif" FontSize="12" Margin="6,2,0,0" />
<controls:NullItemComboBox x:Name="SortCombo" HorizontalAlignment="Left" FontFamily="Microsoft Sans Serif" FontSize="12" Margin="10,0,0,0" MinWidth="100" DisplayMemberPath="DisplayName" SelectionChanged="SortCombo_SelectionChanged" Style="{DynamicResource SortComboBox}" />
<ToggleButton Style="{DynamicResource SortDirectionToggleButtonStyle}" x:Name="SortDirectionToggleButton" Click="SortDirectionToggleButton_Click" />
<StackPanel
x:Name="SortPanel"
Grid.Row="2"
Grid.Column="0"
Margin="3"
Orientation="Horizontal">
<TextBlock
Margin="6,2,0,0"
HorizontalAlignment="Left"
FontFamily="Microsoft Sans Serif"
FontSize="12"
Foreground="Black"
Text="Sortiert nach" />
<controls:NullItemComboBox
x:Name="SortCombo"
MinWidth="100"
Margin="10,0,0,0"
HorizontalAlignment="Left"
DisplayMemberPath="DisplayName"
FontFamily="Microsoft Sans Serif"
FontSize="12"
SelectionChanged="SortCombo_SelectionChanged"
Style="{DynamicResource SortComboBox}" />
<ToggleButton
x:Name="SortDirectionToggleButton"
Click="SortDirectionToggleButton_Click"
Style="{DynamicResource SortDirectionToggleButtonStyle}" />
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Right">
<CheckBox x:Name="ChkShowArchived" Margin="3" VerticalAlignment="Center" Unchecked="ChkShowArchived_OnUnchecked" />
<CheckBox x:Name="ChkShowOnlyMyObjects" Click="ChkShowOnlyMyObjects_OnClick" Margin="3" VerticalAlignment="Center" Unchecked="ChkShowArchived_OnUnchecked" />
<StackPanel
Grid.Row="2"
Grid.Column="1"
HorizontalAlignment="Right"
Orientation="Horizontal">
<CheckBox
x:Name="ChkShowArchived"
Margin="3"
VerticalAlignment="Center"
Unchecked="ChkShowArchived_OnUnchecked" />
<CheckBox
x:Name="ChkShowOnlyMyObjects"
Margin="3"
VerticalAlignment="Center"
Click="ChkShowOnlyMyObjects_OnClick"
Unchecked="ChkShowArchived_OnUnchecked" />
</StackPanel>
<ListBox x:Name="ObjectListBox" Grid.Row="3" Grid.Column="0" Margin="3" Grid.ColumnSpan="2" ItemContainerStyleSelector="{StaticResource StyleSelector}">
<ListBox
x:Name="ObjectListBox"
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="3"
ItemContainerStyleSelector="{StaticResource StyleSelector}">
<ListBox.ItemsSource>
<MultiBinding Converter="{StaticResource FilterDCConverter}">
<Binding />
@@ -494,19 +796,47 @@
<Binding ElementName="ChkShowArchived" Path="IsChecked" />
<Binding Path="CustomFilter">
<Binding.RelativeSource>
<RelativeSource Mode="FindAncestor" AncestorType="{x:Type detail:MailMergeWindow}" />
<RelativeSource AncestorType="{x:Type detail:MailMergeWindow}" Mode="FindAncestor" />
</Binding.RelativeSource>
</Binding>
</MultiBinding>
</ListBox.ItemsSource>
</ListBox>
<CheckBox x:Name="AlleWaehlenCheckBox" Content="Alle auswählen" Grid.Row="4" Grid.Column="0" Margin="3" Checked="AlleWaehlenCheckBox_OnChecked" Unchecked="AlleWehlenCheckBox_OnUnchecked" />
<StackPanel Orientation="Horizontal" Grid.Row="5" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center">
<Button Margin="3" Click="PreviewBtnClick" Content="Vorschau" IsEnabled="{Binding SelectedForPrinting.Count, Converter={StaticResource CollectionCountToBoolConverter}}" />
<Button Margin="3" Content="Drucken" Click="PrintBtnClick" IsEnabled="{Binding SelectedForPrinting.Count, Converter={StaticResource CollectionCountToBoolConverter}}" />
<CheckBox
x:Name="AlleWaehlenCheckBox"
Grid.Row="4"
Grid.Column="0"
Margin="3"
Checked="AlleWaehlenCheckBox_OnChecked"
Content="Alle auswählen"
Unchecked="AlleWehlenCheckBox_OnUnchecked" />
<StackPanel
Grid.Row="5"
Grid.Column="0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Orientation="Horizontal">
<Button
Margin="3"
Click="PreviewBtnClick"
Content="Vorschau"
IsEnabled="{Binding SelectedForPrinting.Count, Converter={StaticResource CollectionCountToBoolConverter}}" />
<Button
Margin="3"
Click="PrintBtnClick"
Content="Drucken"
IsEnabled="{Binding SelectedForPrinting.Count, Converter={StaticResource CollectionCountToBoolConverter}}" />
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="5" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center">
<Button Margin="3" Content="Abbrechen" Command="Close" />
<StackPanel
Grid.Row="5"
Grid.Column="1"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Orientation="Horizontal">
<Button
Margin="3"
Command="Close"
Content="Abbrechen" />
</StackPanel>
</Grid>
</GroupBox>

View File

@@ -1,12 +1,15 @@
<Window x:Class="BeWo.View.Detail.ModalViewWindow"
<Window
x:Class="BeWo.View.Detail.ModalViewWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
WindowStartupLocation="CenterOwner"
WindowStyle="None"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="CanResizeWithGrip">
<Grid x:Name="rootGrid">
</Grid>
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterOwner"
WindowStyle="None">
<Grid x:Name="rootGrid" />
</Window>

View File

@@ -5076,12 +5076,7 @@ namespace BeWo.View.Detail.Zeiterfassung
var context = ViewModel.GetVisibleInformationReferences(records);
var control = new AiConversationChatView();
control.ViewModel.UIContext = (int)(UIContext.ServiceRecord);
control.ViewModel.ContextBeWoObjects = context;
var window = BeWoWindowBuilder.GetBeWoWindow("Ai Chat", control, 800, 1200);
var window = BeWoWindowBuilder.GetAiConversationZeiterfassungWindow(context);
window.Show();
}

View File

@@ -161,24 +161,24 @@
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBox
Height="100"
MaxHeight="200"
x:Name="txt_input_context"
Margin="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Text="{Binding Context_Input}"
AcceptsReturn="True"/>
<TextBox
Height="100"
MaxHeight="200"
Grid.Column="1"
x:Name="txt_input_message"
Margin="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Text="{Binding MessageInput}"
AcceptsReturn="True"/>
AcceptsReturn="True"
Text="{Binding Context_Input}" />
<TextBox
x:Name="txt_input_message"
Grid.Column="1"
Height="100"
MaxHeight="200"
Margin="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AcceptsReturn="True"
Text="{Binding MessageInput}" />
<Button
Grid.Column="2"
Margin="5"

View File

@@ -1,13 +1,23 @@
<Window x:Class="BeWo.View.MessageDialog"
<Window
x:Class="BeWo.View.MessageDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converter="clr-namespace:BeWo.Converter"
Title="BeWoPlaner" Height="400" Width="500" WindowStartupLocation="CenterScreen" WindowStyle="None" ResizeMode="NoResize" >
<Window.Resources>
Title="BeWoPlaner"
Width="500"
Height="400"
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
WindowStyle="None">
<Window.Resources>
<converter:BoolVisibilityConverter x:Key="BoolVisibilityConverter" />
</Window.Resources>
<Grid Background="{x:Null}" Margin="0,0,0,0">
<Border BorderThickness="1" Padding="5,5,5,5" BorderBrush="Black" Background="{DynamicResource LoginBackgroundColor}">
</Window.Resources>
<Grid Margin="0,0,0,0" Background="{x:Null}">
<Border
Padding="5,5,5,5"
Background="{DynamicResource LoginBackgroundColor}"
BorderBrush="Black"
BorderThickness="1">
<Grid Opacity="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@@ -20,22 +30,39 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Source="..\Ressources\Icons\bewoplaner_logo_small.png" Height="45" Margin="7,7,0,0"/>
<Grid Grid.Row="1" Margin="0,10,0,0" x:Name="rootGrid">
<Image
Grid.Row="0"
Height="45"
Margin="7,7,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Source="..\Ressources\Icons\bewoplaner_logo_small.png" />
<Grid
x:Name="rootGrid"
Grid.Row="1"
Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox Background="Transparent"
BorderThickness="0" IsReadOnly="True"
x:Name="txtMessage" TextWrapping="Wrap" Margin="3" FontSize="14"></TextBox>
<TextBox
x:Name="txtMessage"
Margin="3"
Background="Transparent"
BorderThickness="0"
FontSize="14"
IsReadOnly="True"
TextWrapping="Wrap" />
<Grid Grid.Row="1" HorizontalAlignment="Center" Visibility="{Binding Path=IsInConfirmationWithPasswordMode, Converter={StaticResource BoolVisibilityConverter}}">
<Grid
Grid.Row="1"
HorizontalAlignment="Center"
Visibility="{Binding Path=IsInConfirmationWithPasswordMode, Converter={StaticResource BoolVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
@@ -44,8 +71,21 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Content="Passwort:" />
<PasswordBox Grid.Row="0" Grid.Column="1" Height="24" x:Name="PasswordBox" VerticalContentAlignment="Center" Width="185" VerticalAlignment="Center" HorizontalAlignment="Stretch"></PasswordBox>
<Label
Grid.Row="0"
Grid.Column="0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Content="Passwort:" />
<PasswordBox
x:Name="PasswordBox"
Grid.Row="0"
Grid.Column="1"
Width="185"
Height="24"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
VerticalContentAlignment="Center" />
</Grid>
<!--<Grid >
<Grid.RowDefinitions>
@@ -69,11 +109,41 @@
</Grid>
</Grid>
</Border>
<Line Grid.ColumnSpan="4" Stroke="#FFADADAD" X1="14" Y1="70" X2="486" Y2="70" StrokeThickness="1"></Line>
<Line x:Name="linkLine" Stroke="#FFADADAD" X1="14" Y1="320" X2="486" Y2="320" StrokeThickness="1" Margin="0,30,0,-30"></Line>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Button x:Name="OkayButton" Width="120" Margin="3,3,15,10" VerticalAlignment="Bottom" Click="OkayButton_OnClick">OK</Button>
<Button x:Name="CountButton" Width="120" Margin="3,3,15,10" IsDefault="True" VerticalAlignment="Bottom" Click="ButtonBase_OnClick">Schließen</Button>
<Line
Grid.ColumnSpan="4"
Stroke="#FFADADAD"
StrokeThickness="1"
X1="14"
X2="486"
Y1="70"
Y2="70" />
<Line
x:Name="linkLine"
Margin="0,30,0,-30"
Stroke="#FFADADAD"
StrokeThickness="1"
X1="14"
X2="486"
Y1="320"
Y2="320" />
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<Button
x:Name="OkayButton"
Width="120"
Margin="3,3,15,10"
VerticalAlignment="Bottom"
Click="OkayButton_OnClick">
OK
</Button>
<Button
x:Name="CountButton"
Width="120"
Margin="3,3,15,10"
VerticalAlignment="Bottom"
Click="ButtonBase_OnClick"
IsDefault="True">
Schließen
</Button>
</StackPanel>
</Grid>
</Window>

View File

@@ -1,14 +1,31 @@
<Window x:Class="BeWo.View.MiniChatView"
<Window
x:Class="BeWo.View.MiniChatView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Chat View" Height="102" Width="338" WindowStyle="None"
Title="Chat View"
Width="338"
Height="102"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="NoResize">
ResizeMode="NoResize"
WindowStyle="None">
<Grid>
<GroupBox Header="Name" x:Name="rootGroupBox" Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown">
<GroupBox
x:Name="rootGroupBox"
Header="Name"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid Background="{StaticResource ObjectEditBackgroundBrush}">
<TextBox x:Name="Minichat" HorizontalAlignment="Left" Height="51" Margin="5,2,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="320" IsEnabled="False" GotFocus="Minichat_OnGotFocus"/>
<TextBox
x:Name="Minichat"
Width="320"
Height="51"
Margin="5,2,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
GotFocus="Minichat_OnGotFocus"
IsEnabled="False"
TextWrapping="Wrap" />
</Grid>
</GroupBox>

View File

@@ -1,12 +1,21 @@
<Window x:Class="BeWo.View.PasswortAenderungsView"
<Window
x:Class="BeWo.View.PasswortAenderungsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="PasswortAenderungsView" Height="230" Width="340" WindowStartupLocation="CenterScreen" WindowStyle="None"
Title="PasswortAenderungsView"
Width="340"
Height="230"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="NoResize">
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
WindowStyle="None">
<Grid>
<GroupBox Header="Passwort ändern" x:Name="rootGroupBox" Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown">
<GroupBox
x:Name="rootGroupBox"
Header="Passwort ändern"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}">
<Grid Background="{StaticResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -20,23 +29,85 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock x:Name="textblock_editFailures" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Height="30" Foreground="Red" FontSize="12" TextWrapping="Wrap" Margin="3" VerticalAlignment="Center" HorizontalAlignment="Center" />
<Label Grid.Row="1" Grid.Column="0" Content="Altes Passwort" Margin="3" />
<PasswordBox x:Name="AltesPwBox" Grid.Row="1" Grid.Column="1" Margin="3" VerticalContentAlignment="Center" PasswordChanged="AltesPWgeaendert" />
<TextBlock
x:Name="textblock_editFailures"
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
Height="30"
Margin="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="12"
Foreground="Red"
TextWrapping="Wrap" />
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
Content="Altes Passwort" />
<PasswordBox
x:Name="AltesPwBox"
Grid.Row="1"
Grid.Column="1"
Margin="3"
VerticalContentAlignment="Center"
PasswordChanged="AltesPWgeaendert" />
<Label Grid.Row="2" Grid.Column="0" Content="Neues Passwort" Margin="3" />
<PasswordBox x:Name="NeuesPwBox" Grid.Row="2" Grid.Column="1" Margin="3" VerticalContentAlignment="Center" PasswordChanged="NeuesPwBox_OnPasswordChanged" />
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
Content="Neues Passwort" />
<PasswordBox
x:Name="NeuesPwBox"
Grid.Row="2"
Grid.Column="1"
Margin="3"
VerticalContentAlignment="Center"
PasswordChanged="NeuesPwBox_OnPasswordChanged" />
<Label Grid.Row="3" Grid.Column="0" Content="Passwort bestätigen" Margin="3" />
<PasswordBox x:Name="NeuesPwBox2" Grid.Row="3" Grid.Column="1" Margin="3" VerticalContentAlignment="Center" />
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
Content="Passwort bestätigen" />
<PasswordBox
x:Name="NeuesPwBox2"
Grid.Row="3"
Grid.Column="1"
Margin="3"
VerticalContentAlignment="Center" />
<Label Content="Passwort zu kurz" Grid.Row="4" Grid.ColumnSpan="2" Foreground="Red" x:Name="passwortprüfer" Visibility="Hidden" />
<Label
x:Name="passwortprüfer"
Grid.Row="4"
Grid.ColumnSpan="2"
Content="Passwort zu kurz"
Foreground="Red"
Visibility="Hidden" />
<StackPanel Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,0,0">
<Button Margin="3" Content="OK" Width="100" Click="AendernClick" IsDefault="True" />
<Button Margin="3" x:Name="AbbrechenButton" Content="Abbrechen" Width="100" Command="Close" />
<StackPanel
Grid.Row="5"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="0,10,0,0"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Width="100"
Margin="3"
Click="AendernClick"
Content="OK"
IsDefault="True" />
<Button
x:Name="AbbrechenButton"
Width="100"
Margin="3"
Command="Close"
Content="Abbrechen" />
</StackPanel>
</Grid>
</GroupBox>

View File

@@ -0,0 +1,38 @@
using BeWo.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace BeWo.View.TemplateSelectors
{
public class AiConversationMessageTemplateSelector : DataTemplateSelector
{
public DataTemplate SystemMessageTemplate { get; set; }
public DataTemplate AssistentMessageTemplate { get; set; }
public DataTemplate UserMessageTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item is AiConversationMessageVM message)
{
switch (message.Role)
{
case BS.Shared.AiConversationMessageRole.System:
return SystemMessageTemplate;
case BS.Shared.AiConversationMessageRole.Assistent:
return AssistentMessageTemplate;
case BS.Shared.AiConversationMessageRole.User:
return UserMessageTemplate;
default:
break;
}
}
throw new NotImplementedException("AiConversationMessageVM.Role is null");
}
}
}

View File

@@ -1,13 +1,23 @@
<Window x:Class="BeWo.View.TwoFactorAuthMessageDialog"
<Window
x:Class="BeWo.View.TwoFactorAuthMessageDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converter="clr-namespace:BeWo.Converter"
Title="BeWoPlaner" Height="400" Width="500" WindowStartupLocation="CenterScreen" WindowStyle="None" ResizeMode="NoResize" >
<Window.Resources>
Title="BeWoPlaner"
Width="500"
Height="400"
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
WindowStyle="None">
<Window.Resources>
<converter:BoolVisibilityConverter x:Key="BoolVisibilityConverter" />
</Window.Resources>
<Grid Background="{x:Null}" Margin="0,0,0,0">
<Border BorderThickness="1" Padding="5,5,5,5" BorderBrush="Black" Background="{DynamicResource LoginBackgroundColor}">
</Window.Resources>
<Grid Margin="0,0,0,0" Background="{x:Null}">
<Border
Padding="5,5,5,5"
Background="{DynamicResource LoginBackgroundColor}"
BorderBrush="Black"
BorderThickness="1">
<Grid Opacity="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
@@ -20,22 +30,41 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Source="..\Ressources\Icons\bewoplaner_logo_small.png" Height="45" Margin="7,7,0,0"/>
<Grid Grid.Row="1" Margin="0,10,0,0" x:Name="rootGrid">
<Image
Grid.Row="0"
Height="45"
Margin="7,7,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Source="..\Ressources\Icons\bewoplaner_logo_small.png" />
<Grid
x:Name="rootGrid"
Grid.Row="1"
Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox Background="Transparent"
BorderThickness="0" IsReadOnly="True"
x:Name="txtMessage" TextWrapping="Wrap" Margin="3" FontSize="14">Wir haben Ihnen eine Mail an die hinterlegte Adresse geschickt. Bitte geben Sie den Code ein um sich anzumelden.</TextBox>
<TextBox
x:Name="txtMessage"
Margin="3"
Background="Transparent"
BorderThickness="0"
FontSize="14"
IsReadOnly="True"
TextWrapping="Wrap">
Wir haben Ihnen eine Mail an die hinterlegte Adresse geschickt. Bitte geben Sie den Code ein um sich anzumelden.
</TextBox>
<Grid Grid.Row="1" HorizontalAlignment="Center" Margin="10">
<Grid
Grid.Row="1"
Margin="10"
HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
@@ -45,7 +74,16 @@
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Grid.Column="1" x:Name="textbox" VerticalContentAlignment="Center" Width="185" VerticalAlignment="Center" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" FontSize="20"></TextBox>
<TextBox
x:Name="textbox"
Grid.Row="0"
Grid.Column="1"
Width="185"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
FontSize="20" />
</Grid>
<!--<Grid >
<Grid.RowDefinitions>
@@ -69,11 +107,41 @@
</Grid>
</Grid>
</Border>
<Line Grid.ColumnSpan="4" Stroke="#FFADADAD" X1="14" Y1="70" X2="486" Y2="70" StrokeThickness="1"></Line>
<Line x:Name="linkLine" Stroke="#FFADADAD" X1="14" Y1="320" X2="486" Y2="320" StrokeThickness="1" Margin="0,30,0,-30"></Line>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Button x:Name="OkayButton" Width="120" Margin="3,3,3,10" VerticalAlignment="Bottom" Click="OkayButton_OnClick">Anmelden</Button>
<Button x:Name="CancelButton" Width="120" Margin="3,3,15,10" IsDefault="True" VerticalAlignment="Bottom" Click="CancelButton_OnClick">Abbrechen</Button>
<Line
Grid.ColumnSpan="4"
Stroke="#FFADADAD"
StrokeThickness="1"
X1="14"
X2="486"
Y1="70"
Y2="70" />
<Line
x:Name="linkLine"
Margin="0,30,0,-30"
Stroke="#FFADADAD"
StrokeThickness="1"
X1="14"
X2="486"
Y1="320"
Y2="320" />
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<Button
x:Name="OkayButton"
Width="120"
Margin="3,3,3,10"
VerticalAlignment="Bottom"
Click="OkayButton_OnClick">
Anmelden
</Button>
<Button
x:Name="CancelButton"
Width="120"
Margin="3,3,15,10"
VerticalAlignment="Bottom"
Click="CancelButton_OnClick"
IsDefault="True">
Abbrechen
</Button>
</StackPanel>
</Grid>
</Window>

View File

@@ -0,0 +1,34 @@
<Window
x:Class="BeWo.View.Windows.AnimatedBeWoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BeWoPlaner"
MinWidth="300"
MinHeight="300"
AllowsTransparency="True"
Background="Transparent"
Closed="Window_Closed"
Closing="Window_Closing"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterOwner"
WindowStyle="None">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard Storyboard="{StaticResource WindowLoadedAnimation}" />
</EventTrigger>
</Window.Triggers>
<Grid x:Name="rootGrid">
<GroupBox
x:Name="rootGroupBox"
MouseDoubleClick="RootGroupBox_OnMouseDoubleClick"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithoutMaximizeBtnStyle}" />
</Grid>
</Window>

View File

@@ -0,0 +1,186 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace BeWo.View.Windows
{
/// <summary>
/// Interaktionslogik für AnimatedBeWoWindow.xaml
/// </summary>
public partial class AnimatedBeWoWindow : Window
{
private bool closeStoryBoardCompleted = false;
private WaitLayer2 _WaitLayer;
private object _GroupBoxContent;
public object GroupBoxContent
{
get { return _GroupBoxContent; }
set
{
_GroupBoxContent = value;
rootGroupBox.Content = value;
}
}
public bool IsMaximizable = true;
public bool IsWaiting { get; set; } = false;
public AnimatedBeWoWindow()
{
InitializeComponent();
CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) => Close()));
StartWaiting();
if (BeWoApp.CurrentAnimatedBeWoWindow == null)
{
BeWoApp.CurrentAnimatedBeWoWindow = this;
}
else
{
throw new InvalidOperationException("Opening, BeWoApp.CurrentAnimatedBeWoWindow already set");
}
}
public AnimatedBeWoWindow(FrameworkElement fe) : this()
{
rootGroupBox.Content = fe;
}
public AnimatedBeWoWindow(FrameworkElement fe, string stylestring) : this(fe)
{
rootGroupBox.Style = (Style)FindResource(stylestring);
}
public void Window_Closing(object sender, CancelEventArgs e)
{
if (!closeStoryBoardCompleted)
{
if (BeWoApp.CurrentAnimatedBeWoWindow == this)
{
BeWoApp.CurrentAnimatedBeWoWindow = null;
}
else
{
throw new InvalidOperationException("Closing, BeWoApp.CurrentAnimatedBeWoWindow not found");
}
if (FindResource("WindowClosingAnimation") is Storyboard storyboard)
{
storyboard.Completed += closeStoryBoard_Completed;
Storyboard.SetTarget(storyboard.Children[0], this);
Storyboard.SetTarget(storyboard.Children[1], this);
storyboard.Begin();
e.Cancel = true;
}
else
{
throw new InvalidOperationException("WindowClosingAnimation not found");
}
}
}
private void closeStoryBoard_Completed(object sender, EventArgs e)
{
closeStoryBoardCompleted = true;
Close();
}
private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
try
{
var p = e.GetPosition(this);
if (p.Y <= 40)
{
DragMove();
}
}
catch (Exception) { }
}
private void RootGroupBox_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (!IsVisible)
{
return;
}
if (!IsMaximizable)
{
return;
}
var pos = PointToScreen(Mouse.GetPosition(this));
if (!(e.OriginalSource is Border) && !(e.OriginalSource is TextBlock) || pos.Y > 200d || e.OriginalSource is TextBlock && Mouse.DirectlyOver is Button)
{
return;
}
if (WindowState == WindowState.Maximized)
{
WindowState = WindowState.Normal;
return;
}
if (WindowState == WindowState.Normal)
{
WindowState = WindowState.Maximized;
}
}
public void Window_Closed(object sender, EventArgs e)
{
}
public void StartWaiting()
{
Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)StartWaitingImmediately);
}
public void StartWaitingImmediately()
{
if (_WaitLayer == null)
{
_WaitLayer = new WaitLayer2();
Grid.SetColumnSpan(_WaitLayer, 3);
Grid.SetRowSpan(_WaitLayer, 3);
rootGrid.Children.Add(_WaitLayer);
Panel.SetZIndex(_WaitLayer, int.MaxValue);
//_WaitLayer.RefreshUI();
}
}
public void EndWaiting()
{
Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
if (_WaitLayer != null)
{
rootGrid.Children.Remove(_WaitLayer);
_WaitLayer = null;
}
});
}
}
}

View File

@@ -37,11 +37,13 @@ namespace BeWo.ViewModel
}
[JsonProperty(Order = 2)]
public string Role => DataContract.Role.ToString();
public string RoleString => DataContract.Role.ToString();
[JsonProperty(Order = 3)]
public string Time => DataContract.Created.ToString();
public AiConversationMessageRole Role => DataContract.Role;
protected override void InitByDataContract(AiConversationMessageDC pDataContract)
{
_Message = pDataContract.Message;

View File

@@ -7,6 +7,7 @@ using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Feature.AI;
using DevExpress.Mvvm;
using Newtonsoft.Json;
namespace BeWo.ViewModel

View File

@@ -171,21 +171,21 @@ namespace BeWo.ViewModel.ListViewModel
var message_dc = new AiConversationMessageDC()
{
Created = DateTime.Now,
Message = "Anweisungen \n\nTest",
Message = "Du bist eine intelligente Einheit mit ganz ganz vielen Eingaben: value1, value2, value3, value4\r\nTest",
Role = BS.Shared.AiConversationMessageRole.System
};
var message_dc2 = new AiConversationMessageDC()
{
Created = DateTime.Now,
Message = "Userprompt \n\nTest",
Message = "Dies ist eine Design Frage: Du sollst ganz viele Sachen machen. Dabei sollst du auf ganz viele Sachen achten: Zum Beispiel:\r\nSache 1\r\nSchritt 2",
Role = BS.Shared.AiConversationMessageRole.User
};
var message_dc3 = new AiConversationMessageDC()
{
Created = DateTime.Now,
Message = "Antwort\n\nTest",
Message = "Antwort. Dies ist eine Design Antwort. Du hast ganz viele Sachen angefragt. Dabei soll ich auf ganz viele Sachen achten. Wie Test, test, tEst und tesT.\r\nTest\r\nTest\r\nTest",
Role = BS.Shared.AiConversationMessageRole.Assistent
};
@@ -204,7 +204,7 @@ namespace BeWo.ViewModel.ListViewModel
var conversation_dc = new AiConversationDC()
{
Created = DateTime.Now,
Displayname = "Displayname",
Displayname = "Displayname Megamegalange Deluxe Op 3000",
Messages = messages_dc,
Modell = model,
UIContext = 19,
@@ -215,7 +215,33 @@ namespace BeWo.ViewModel.ListViewModel
VMList.Add(conversation_vm);
InitDummyConversations(10);
SelectedVM = conversation_vm;
}
private void InitDummyConversations(int count)
{
var model = new AiModelDC()
{
ModelName = "llama3.2"
};
for (int i = 0; i < count; i++)
{
var conversation_dc2 = new AiConversationDC()
{
Created = DateTime.Now,
Displayname = "Dummy Num " + i.ToString(),
Modell = model,
UIContext = 19,
Updated = DateTime.Now,
};
var conversation_vm2 = new AiConversationVM(conversation_dc2);
VMList.Add(conversation_vm2);
}
}
}
}

View File

@@ -1,13 +1,18 @@
<Window x:Class="BeWo.ownChat.ChatDokumentationsView"
<Window
x:Class="BeWo.ownChat.ChatDokumentationsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:BeWo.View"
Title="Chat Dokumentation" Height="500" Width="800" WindowStartupLocation="CenterScreen" WindowStyle="None"
Title="Chat Dokumentation"
Width="800"
Height="500"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="NoResize">
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
WindowStyle="None">
<Grid x:Name="DokumentGrid">
<Border x:Name="popup_contentChat" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"/>
<Border x:Name="popup_contentChat" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown" />
</Grid>
</Window>

View File

@@ -1,13 +1,17 @@
<Window x:Class="BeWo.ownChat.ChatEmojiView"
<Window
x:Class="BeWo.ownChat.ChatEmojiView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BeWo.View"
xmlns:chatController1="clr-namespace:ChatController;assembly=ChatController"
mc:Ignorable="d" x:Name="ChatEmojiVM"
Title="ChatEmojiService" Height="200" Width="300">
<Grid >
<chatController1:ChatEmojiiControl x:Name="Cec" ></chatController1:ChatEmojiiControl>
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BeWo.View"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="ChatEmojiVM"
Title="ChatEmojiService"
Width="300"
Height="200"
mc:Ignorable="d">
<Grid>
<chatController1:ChatEmojiiControl x:Name="Cec" />
</Grid>
</Window>

View File

@@ -1,17 +1,29 @@
<Window x:Class="BeWo.ownChat.ChatView"
<Window
x:Class="BeWo.ownChat.ChatView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BeWo.View"
xmlns:cc="clr-namespace:ChatController;assembly=ChatController"
mc:Ignorable="d" x:Name="ServiceChat"
Title="ChatService" Height="700" Width="900" ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterScreen" WindowStyle="None"
AllowsTransparency="True" Background="Transparent" Closing="ChatView_OnClosing">
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BeWo.View"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="ServiceChat"
Title="ChatService"
Width="900"
Height="700"
AllowsTransparency="True"
Background="Transparent"
Closing="ChatView_OnClosing"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterScreen"
WindowStyle="None"
mc:Ignorable="d">
<Grid>
<GroupBox Header="ownChat" x:Name="rootGroupBox" Style="{DynamicResource MainContentGroupBoxWithMinMaxCloseBtnStyle}" MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown">
<GroupBox
x:Name="rootGroupBox"
Header="ownChat"
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
Style="{DynamicResource MainContentGroupBoxWithMinMaxCloseBtnStyle}">
<cc:ChatMainControl x:Name="ChatMainControl" OnEmojii="ChatMainControl_OnOnEmoji" />
</GroupBox>
</Grid>

View File

@@ -303,8 +303,8 @@
<add key="SendMailModuleGkvSender" value="noreply@bewoplaner.de" />
<add key="SendMailModuleGkvReceiver" value="dakota.exchange@ownsoft.de" />
<add key="OpenWebUIUrl" value="http://ai1.ownsoft.de:8080/"/>
<add key="OpenWebUIKey" value="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjMyNzJlZjc5LWRmZjEtNDdjYS05NWNlLWZhNjk1ZDdjZGQ4NCJ9.xImpkx6GYE1pSKpIDIzBtXwZXjNnrvXf-5L5qZ1_pRg"/>
<add key="OpenWebUIUrl" value="https://owui1.ownsoft.de/"/>
<add key="OpenWebUIKey" value="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjMyNzJlZjc5LWRmZjEtNDdjYS05NWNlLWZhNjk1ZDdjZGQ4NCJ9.mhQZvSx_mY18J9nHUDTd36wWhDAOrzzlfG9FOS5MeSM"/>
</appSettings>
<!-- <> <> <> Appsettings <> <> <> -->
<devExpress>

View File

@@ -14,6 +14,7 @@ using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace BeWo.Service.ServiceImplementations