174 lines
6.9 KiB
C#
174 lines
6.9 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Media;
|
|
using System.Windows.Threading;
|
|
using Color = System.Drawing.Color;
|
|
|
|
namespace Xylem.Common.Production.ProductionUiCordonel.UserControls
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for UcRadioCheck.xaml
|
|
/// </summary>
|
|
public partial class UcRadioCheck : IUserControl
|
|
{
|
|
public class UiContainerElement
|
|
{
|
|
public Int32? Value;
|
|
public Color Color;
|
|
|
|
public UiContainerElement(Int32? value)
|
|
{
|
|
Value = value;
|
|
Color = !value.HasValue ? Color.LightYellow : Color.Transparent;
|
|
}
|
|
|
|
public String GetText()
|
|
{
|
|
return Value.HasValue ? Value.Value.ToString() : "-";
|
|
}
|
|
}
|
|
|
|
public class UiContainer
|
|
{
|
|
public readonly UiContainerElement rssiPamSirtDbMin;
|
|
public readonly UiContainerElement rssiSemiCordonelDbMin;
|
|
public readonly UiContainerElement rssiPamSirt;
|
|
public readonly UiContainerElement rssiSemiCordonel;
|
|
public readonly UiContainerElement rssiPamSirtDbMax;
|
|
public readonly UiContainerElement rssiSemiCordonelDbMax;
|
|
|
|
public UiContainer(Int32? rssiPamSirtDbMin = null, Int32? rssiSemiCordonelDbMin = null, Int32? rssiPamSirt = null,
|
|
Int32? rssiSemiCordonel = null, Int32? rssiPamSirtDbMax = null, Int32? rssiSemiCordonelDbMax = null)
|
|
{
|
|
this.rssiPamSirtDbMin = new UiContainerElement(rssiPamSirtDbMin);
|
|
this.rssiSemiCordonelDbMin = new UiContainerElement(rssiSemiCordonelDbMin);
|
|
this.rssiPamSirt = new UiContainerElement(rssiPamSirt);
|
|
this.rssiSemiCordonel = new UiContainerElement(rssiSemiCordonel);
|
|
this.rssiPamSirtDbMax = new UiContainerElement(rssiPamSirtDbMax);
|
|
this.rssiSemiCordonelDbMax = new UiContainerElement(rssiSemiCordonelDbMax);
|
|
|
|
//only when results from semi are present
|
|
if (this.rssiPamSirt.Value.HasValue && this.rssiSemiCordonel.Value.HasValue)
|
|
{
|
|
Boolean success = true;
|
|
|
|
if (!this.rssiPamSirtDbMin.Value.HasValue || this.rssiPamSirt.Value.Value < this.rssiPamSirtDbMin.Value.Value)
|
|
{
|
|
success = false;
|
|
this.rssiPamSirtDbMin.Color = Color.Tomato;
|
|
this.rssiPamSirt.Color = Color.White;
|
|
}
|
|
|
|
if (!this.rssiSemiCordonelDbMin.Value.HasValue || this.rssiSemiCordonel.Value.Value < this.rssiSemiCordonelDbMin.Value.Value)
|
|
{
|
|
success = false;
|
|
this.rssiSemiCordonelDbMin.Color = Color.Tomato;
|
|
this.rssiSemiCordonel.Color = Color.White;
|
|
}
|
|
|
|
if (!this.rssiPamSirtDbMax.Value.HasValue || this.rssiPamSirt.Value.Value > this.rssiPamSirtDbMax.Value.Value)
|
|
{
|
|
success = false;
|
|
this.rssiPamSirtDbMax.Color = Color.Tomato;
|
|
this.rssiPamSirt.Color = Color.White;
|
|
}
|
|
|
|
if (!this.rssiSemiCordonelDbMax.Value.HasValue || this.rssiSemiCordonel.Value.Value > this.rssiSemiCordonelDbMax.Value.Value)
|
|
{
|
|
success = false;
|
|
this.rssiSemiCordonelDbMax.Color = Color.Tomato;
|
|
this.rssiSemiCordonel.Color = Color.White;
|
|
}
|
|
|
|
if (success)
|
|
{
|
|
this.rssiPamSirt.Color = Color.LightGreen;
|
|
this.rssiSemiCordonel.Color = Color.LightGreen;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void SetUi(UiContainer uiContainer)
|
|
{
|
|
Dispatcher.Invoke(DispatcherPriority.Send,
|
|
new Action(() =>
|
|
{
|
|
setLbl(lblRssiPamSirtDbMin, uiContainer.rssiPamSirtDbMin);
|
|
setLbl(lblRssiSemiCordonelDbMin, uiContainer.rssiSemiCordonelDbMin);
|
|
setLbl(lblRssiPamSirt, uiContainer.rssiPamSirt);
|
|
setLbl(lblRssiSemiCordonel, uiContainer.rssiSemiCordonel);
|
|
setLbl(lblRssiPamSirtDbMax, uiContainer.rssiPamSirtDbMax);
|
|
setLbl(lblRssiSemiCordonelDbMax, uiContainer.rssiSemiCordonelDbMax);
|
|
}
|
|
));
|
|
}
|
|
|
|
private void setLbl(Label lbl, UiContainerElement element)
|
|
{
|
|
lbl.Content = element.GetText();
|
|
lbl.Background =
|
|
new SolidColorBrush(System.Windows.Media.Color.FromArgb(element.Color.A, element.Color.R, element.Color.G,
|
|
element.Color.B));
|
|
}
|
|
|
|
public event EventHandler OnResetRequested;
|
|
public event EventHandler OnDoneRequested;
|
|
|
|
public UcRadioCheck()
|
|
{
|
|
InitializeComponent();
|
|
lblHeadLine.Content = Properties.Resources.StrLblRadioCheck;
|
|
//btnSkip.Content = Properties.Resources.StrBtnSkip;
|
|
btnRetry.Content = Properties.Resources.StrBtnRetry;
|
|
}
|
|
|
|
public void Clear()
|
|
{
|
|
var uiContainer = new UiContainer();
|
|
Dispatcher.Invoke(DispatcherPriority.Send,
|
|
new Action(() =>
|
|
{
|
|
setLbl(lblRssiPamSirtDbMin, uiContainer.rssiPamSirtDbMin);
|
|
setLbl(lblRssiSemiCordonelDbMin, uiContainer.rssiSemiCordonelDbMin);
|
|
setLbl(lblRssiPamSirt, uiContainer.rssiPamSirt);
|
|
setLbl(lblRssiSemiCordonel, uiContainer.rssiSemiCordonel);
|
|
setLbl(lblRssiPamSirtDbMax, uiContainer.rssiPamSirtDbMax);
|
|
setLbl(lblRssiSemiCordonelDbMax, uiContainer.rssiSemiCordonelDbMax);
|
|
}
|
|
));
|
|
}
|
|
|
|
private void btnReset_Click(Object sender, RoutedEventArgs e)
|
|
{
|
|
Clear();
|
|
Task.Run(() => { OnResetRequested?.Invoke(sender, e); });
|
|
}
|
|
|
|
private void BtnSkip_Click(Object sender, RoutedEventArgs e)
|
|
{
|
|
Task.Run(() => { OnDoneRequested?.Invoke(sender, e); });
|
|
}
|
|
/// <summary>
|
|
/// Interaction logic for UcDialog.xaml
|
|
/// </summary>
|
|
/// <remarks date="2024-Aug-31" author="Thomas Wiedebusch">
|
|
/// - Initial
|
|
/// </remarks>
|
|
internal void SetHeadline(String message)
|
|
{
|
|
lblHeadLine.Dispatcher.Invoke(DispatcherPriority.Send,
|
|
new Action(() =>
|
|
{
|
|
lblHeadLine.Content = message;
|
|
}));
|
|
}
|
|
|
|
|
|
}
|
|
}
|