diff --git a/OptionPanel/DrawOptionPanel/InputExpander/InputExpanderVM.vb b/OptionPanel/DrawOptionPanel/InputExpander/InputExpanderVM.vb index 4363e83..921141a 100644 --- a/OptionPanel/DrawOptionPanel/InputExpander/InputExpanderVM.vb +++ b/OptionPanel/DrawOptionPanel/InputExpander/InputExpanderVM.vb @@ -10,19 +10,8 @@ Public Class InputExpanderVM ' Variabile temporanea per salvare bShow Private m_bTempShow As Boolean - Private m_tmpInfoList As New ObservableCollection(Of InfoItem) - ''' - ''' Lista temporanea delle info - ''' - Private Property tmpInfoList As ObservableCollection(Of InfoItem) - Get - Return m_tmpInfoList - End Get - Set(value As ObservableCollection(Of InfoItem)) - m_tmpInfoList = value - OnPropertyChanged("tmpInfoList") - End Set - End Property + ' Lista temporanea delle Info + Private m_TempInfoList As New List(Of InfoItem) ' Expander fields Private m_IsExpanded As Boolean @@ -166,17 +155,18 @@ Public Class InputExpanderVM Set(value As Integer) If m_bTempShow Then Map.refProjectVM.SetLastInteger(value) m_ComboSelectedIndex = value - If m_ComboSelectedIndex >= 0 AndAlso tmpInfoList.Count > 0 Then - ' se la info è presente la aggiungo alla textbox per modificarla + ' se la combo è di Info ed è valida, la aggiungo alla textbox + If m_ComboSelectedIndex >= 0 AndAlso m_TempInfoList.Count() > 0 Then + Dim CurrItem As InfoItem = m_TempInfoList(m_ComboSelectedIndex) If String.IsNullOrEmpty(m_TextBox) Then - m_TextBox = (tmpInfoList(m_ComboSelectedIndex).sKey & "=" & m_tmpInfoList(m_ComboSelectedIndex).sValue).Trim() + m_TextBox = CurrItem.sKey & "=" & CurrItem.sValue Else If Not m_TextBox.EndsWith(vbCrLf) Then m_TextBox &= vbCrLf - m_TextBox &= (tmpInfoList(m_ComboSelectedIndex).sKey & "=" & m_tmpInfoList(m_ComboSelectedIndex).sValue).Trim() + m_TextBox &= CurrItem.sKey & "=" & CurrItem.sValue End If ComboVisibility = Visibility.Collapsed ComboItemsList.RemoveAt(m_ComboSelectedIndex) - tmpInfoList.RemoveAt(m_ComboSelectedIndex) + m_TempInfoList.RemoveAt(m_ComboSelectedIndex) m_ComboSelectedIndex = -1 If ComboItemsList.Count <= 0 Then ShowInfoItemVisibility = Visibility.Collapsed End If @@ -341,13 +331,16 @@ Public Class InputExpanderVM ''' Public Sub ShowInfoItem(ByVal param As Object) ' Se presente info inserita in textbox - If m_TextBox IsNot String.Empty Then - Dim sSplitItem As String() = m_TextBox.Split("="c) - Dim ItemCombo As InfoItem = tmpInfoList.FirstOrDefault(Function(x) x.sKey = sSplitItem(0)) - If Not IsNothing(ItemCombo) Then - ComboItemsList.Remove((ItemCombo.sKey & "=" & ItemCombo.sValue).Trim()) - tmpInfoList.Remove(ItemCombo) - End If + If Not String.IsNullOrWhiteSpace( m_TextBox) Then + Dim vLines As String() = m_TextBox.Split( vbCrLf.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) + For Each sLine As String In vLines + Dim vKeyVal As String() = sLine.Split("="c) + Dim nInd As Integer = m_TempInfoList.FindIndex( Function(x) x.sKey = vKeyVal(0)) + If nInd <> -1 Then + ComboItemsList.RemoveAt( nInd) + m_TempInfoList.RemoveAt( nInd) + End If + Next End If ComboVisibility = Visibility.Visible End Sub @@ -380,7 +373,7 @@ Public Class InputExpanderVM If PrepareInputBoxParam.bShowCombo Then m_bTempShow = PrepareInputBoxParam.bShowCombo ComboItemsList.Clear() - tmpInfoList.Clear() + m_TempInfoList.Clear() ComboVisibility = Visibility.Visible End If If PrepareInputBoxParam.bShowBtn Then @@ -436,22 +429,18 @@ Public Class InputExpanderVM ''' Funzione che popola la lista ComboItemsList ''' Private Sub ComboInfo() - tmpInfoList.Clear() + + m_TempInfoList.Clear() ComboItemsList.Clear() - Dim vsVal As String() = Nothing - EgtGetAllInfo(Map.refManageLayerExpanderVM.RightClickedTreeItemId, vsVal) + Dim vsInfo As String() = Nothing + EgtGetAllInfo( Map.refManageLayerExpanderVM.RightClickedTreeItemId, vsInfo) - If Not m_bTempShow And Not IsNothing(vsVal) Then - Dim Ind As Integer = 0 - For Each Item As String In vsVal - Dim sSplitItem As String() = Item.Split("="c) - tmpInfoList.Add(New InfoItem(Ind, sSplitItem(0), sSplitItem(1))) - Ind += 1 - Next - - For Each InfoItem As InfoItem In tmpInfoList - ComboItemsList.Add((InfoItem.sKey & "=" & InfoItem.sValue).Trim()) + If Not m_bTempShow And Not IsNothing( vsInfo) Then + For nInd As Integer = 0 To vsInfo.Count() - 1 + Dim vKeyVal As String() = vsInfo( nInd).Split("="c) + m_TempInfoList.Add(New InfoItem( nInd, vKeyVal(0), vKeyVal(1))) + ComboItemsList.Add( vsInfo( nInd)) Next End If End Sub