123 lines
5.0 KiB
C#
123 lines
5.0 KiB
C#
// Copyright (c) 2017-today schick Informatik
|
|
// Description: Select classes for import
|
|
// Returns: Array of selected classes as property
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Windows;
|
|
|
|
using bsmd.database;
|
|
|
|
namespace ENI2.EditControls
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for SelectImportClassesDialog.xaml
|
|
/// </summary>
|
|
public partial class SelectImportClassesDialog : ENI2.Controls.EditWindowBase
|
|
{
|
|
private readonly List<SelectClass> _selectClasses = new List<SelectClass>();
|
|
private readonly List<bsmd.database.Message.NotificationClass> _selectedClasses = new List<Message.NotificationClass>();
|
|
|
|
public SelectImportClassesDialog()
|
|
{
|
|
InitializeComponent();
|
|
this.Loaded += SelectImportClassesDialog_Loaded;
|
|
}
|
|
|
|
public List<Message.NotificationClass> SelectedClasses
|
|
{
|
|
get { return _selectedClasses; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// These messages are needed to derive message classes from, already sorted in the right manner
|
|
/// </summary>
|
|
public List<Message> Messages { get; set; }
|
|
|
|
public bool IsTransit { get; set; }
|
|
|
|
private void SelectImportClassesDialog_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
|
|
foreach(Message aMessage in this.Messages)
|
|
{
|
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.VISIT) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.ATA) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.ATD) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.STO) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.CREWD) || // XXX : TODO remove
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.PASD)
|
|
) continue;
|
|
|
|
if (IsTransit &&
|
|
((aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.BPOL) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.HAZD) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.INFO) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.LADG) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.NAME) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.PRE72H) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.SERV) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.TIEFD) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.TOWD) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.WAS) ||
|
|
(aMessage.MessageNotificationClass == Message.NotificationClass.WAS_RCPT)
|
|
)) continue;
|
|
|
|
SelectClass sc = new SelectClass();
|
|
sc.Name = Enum.GetName(typeof(bsmd.database.Message.NotificationClass), aMessage.MessageNotificationClass);
|
|
sc.Class = aMessage.MessageNotificationClass;
|
|
sc.IsSelected = false;
|
|
_selectClasses.Add(sc);
|
|
}
|
|
|
|
this.checkListBoxClasses.ItemsSource = _selectClasses;
|
|
this.OKClicked += SelectImportClassesDialog_OKClicked;
|
|
}
|
|
|
|
private void SelectImportClassesDialog_OKClicked()
|
|
{
|
|
foreach(SelectClass sc in _selectClasses)
|
|
{
|
|
if (sc.IsSelected) _selectedClasses.Add(sc.Class);
|
|
}
|
|
}
|
|
|
|
class SelectClass : INotifyPropertyChanged
|
|
{
|
|
private bool _isSelected;
|
|
public string Name { get; set; }
|
|
public Message.NotificationClass Class { get; set; }
|
|
public bool IsSelected
|
|
{
|
|
get { return _isSelected; }
|
|
set
|
|
{
|
|
_isSelected = value;
|
|
OnPropertyChanged("IsSelected");
|
|
}
|
|
}
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
protected void OnPropertyChanged(string propertyName)
|
|
{
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
}
|
|
|
|
private void buttonAll_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
foreach (SelectClass sc in _selectClasses)
|
|
sc.IsSelected = true;
|
|
}
|
|
|
|
private void buttonNone_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
foreach (SelectClass sc in _selectClasses)
|
|
sc.IsSelected = false;
|
|
}
|
|
}
|
|
}
|