diff --git a/ENI2/DetailViewControls/OverViewDetailControl.xaml b/ENI2/DetailViewControls/OverViewDetailControl.xaml
index f2feb1b0..8cd35795 100644
--- a/ENI2/DetailViewControls/OverViewDetailControl.xaml
+++ b/ENI2/DetailViewControls/OverViewDetailControl.xaml
@@ -262,7 +262,7 @@ SelectionMode="Extended" AutoGenerateColumns="False" MouseDoubleClick="dataGrid_
-
+
diff --git a/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs b/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs
index 8362dc24..34267ceb 100644
--- a/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs
+++ b/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs
@@ -834,19 +834,19 @@ namespace ENI2.DetailViewControls
private void buttonSendAll_Click(object sender, RoutedEventArgs e)
{
SelectImportClassesDialog sicd = new SelectImportClassesDialog();
- List readyToSendMessages = new List();
+ List readyToSendMessages = new List();
foreach (Message message in this.Messages)
- {
- if (message.MessageNotificationClass == NotificationClass.STO) continue;
- // other filters?
-
+ {
if (((message.ViolationCount ?? 0) > 0) || ((message.ErrorCount ?? 0) > 0)) continue; // these need more work
- readyToSendMessages.Add(message);
+ if (Message.IsListClass(message.MessageNotificationClass) && (message.Elements.Count == 0)) continue; // avoid suspend on empty list classes
+ readyToSendMessages.Add(message.MessageNotificationClass);
}
- sicd.Messages = readyToSendMessages;
+ sicd.Messages = this.Messages;
+ sicd.PreselectedClasses.AddRange(readyToSendMessages);
sicd.IsTransit = this.Core.IsTransit;
+ sicd.IsImportMode = false;
if ((sicd.ShowDialog() ?? false) && (sicd.SelectedClasses.Count > 0))
{
@@ -854,7 +854,7 @@ namespace ENI2.DetailViewControls
List toSendMessages = new List();
foreach(NotificationClass notificationClass in sicd.SelectedClasses)
{
- Message selectedMessage = readyToSendMessages.Find(x => x.MessageNotificationClass == notificationClass);
+ Message selectedMessage = this.Messages.Find(x => x.MessageNotificationClass == notificationClass);
if (selectedMessage != null)
{
toSendMessages.Add(selectedMessage);
diff --git a/ENI2/EditControls/SelectImportClassesDialog.xaml b/ENI2/EditControls/SelectImportClassesDialog.xaml
index 19885b45..cb8d30e5 100644
--- a/ENI2/EditControls/SelectImportClassesDialog.xaml
+++ b/ENI2/EditControls/SelectImportClassesDialog.xaml
@@ -8,7 +8,7 @@
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:p="clr-namespace:ENI2.Properties"
mc:Ignorable="d"
- Title="{x:Static p:Resources.textSelectImportClasses}" Height="600" Width="250" Background="AliceBlue">
+ Title="{x:Static p:Resources.textSelectImportClasses}" Height="660" Width="250" Background="AliceBlue">
diff --git a/ENI2/EditControls/SelectImportClassesDialog.xaml.cs b/ENI2/EditControls/SelectImportClassesDialog.xaml.cs
index a513bd93..a4dbc18c 100644
--- a/ENI2/EditControls/SelectImportClassesDialog.xaml.cs
+++ b/ENI2/EditControls/SelectImportClassesDialog.xaml.cs
@@ -1,5 +1,5 @@
// Copyright (c) 2017-today schick Informatik
-// Description: Select classes for import
+// Description: Select classes for import via Excel or for sending them once completed
// Returns: Array of selected classes as property
using System;
@@ -17,7 +17,8 @@ namespace ENI2.EditControls
public partial class SelectImportClassesDialog : ENI2.Controls.EditWindowBase
{
private readonly List _selectClasses = new List();
- private readonly List _selectedClasses = new List();
+ private readonly List _selectedClasses = new List();
+ private readonly List _preselectedClasses = new List();
public SelectImportClassesDialog()
{
@@ -25,33 +26,62 @@ namespace ENI2.EditControls
this.Loaded += SelectImportClassesDialog_Loaded;
}
+ ///
+ /// List of all message classes that are available for selection
+ ///
public List SelectedClasses
{
get { return _selectedClasses; }
}
+ ///
+ /// Classes that should be checked already when the dialog is opened (relevant for send mode)
+ ///
+ public List PreselectedClasses
+ {
+ get { return _preselectedClasses; }
+ }
+
///
/// These messages are needed to derive message classes from, already sorted in the right manner
///
public List Messages { get; set; }
+ ///
+ /// Flag to reduce selection amount in case of transit
+ ///
public bool IsTransit { get; set; }
+ ///
+ /// Flag if dialog is used in import mode (default true). Set false for send all mode.
+ ///
+ public bool IsImportMode { get; set; } = true;
+
private void SelectImportClassesDialog_Loaded(object sender, RoutedEventArgs e)
{
-
- foreach(Message aMessage in this.Messages)
+
+
+ foreach (Message aMessage in this.Messages)
{
+ // these are of no interest
if ((aMessage.MessageNotificationClass == Message.NotificationClass.VISIT) ||
(aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) ||
+ (aMessage.MessageNotificationClass == Message.NotificationClass.STO))
+ continue;
+
+ // these are never imported but may be sent
+ if (IsImportMode)
+ {
+ if ((aMessage.MessageNotificationClass == Message.NotificationClass.ATA) ||
+ (aMessage.MessageNotificationClass == Message.NotificationClass.ATD))
+ continue;
+ }
+
+ // filter out messages not relevant for transit
+ if (IsTransit && (
(aMessage.MessageNotificationClass == Message.NotificationClass.ATA) ||
(aMessage.MessageNotificationClass == Message.NotificationClass.ATD) ||
- (aMessage.MessageNotificationClass == Message.NotificationClass.STO)
- ) continue;
-
- if (IsTransit &&
- ((aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) ||
- (aMessage.MessageNotificationClass == Message.NotificationClass.BPOL) ||
+ (aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) ||
(aMessage.MessageNotificationClass == Message.NotificationClass.HAZD) ||
(aMessage.MessageNotificationClass == Message.NotificationClass.INFO) ||
(aMessage.MessageNotificationClass == Message.NotificationClass.LADG) ||
@@ -65,13 +95,14 @@ namespace ENI2.EditControls
)) continue;
SelectClass sc = new SelectClass();
- sc.Name = Enum.GetName(typeof(bsmd.database.Message.NotificationClass), aMessage.MessageNotificationClass);
+ sc.Name = Enum.GetName(typeof(Message.NotificationClass), aMessage.MessageNotificationClass);
sc.Class = aMessage.MessageNotificationClass;
- sc.IsSelected = false;
+ sc.IsSelected = this._preselectedClasses.Contains(sc.Class);
_selectClasses.Add(sc);
}
+
- this.checkListBoxClasses.ItemsSource = _selectClasses;
+ this.checkListBoxClasses.ItemsSource = _selectClasses;
this.OKClicked += SelectImportClassesDialog_OKClicked;
}