Files
EgtCAM5/Internals/MruList.vb
T
Dario Sassi 3b9651fd84 EgtCAM5 1.6u5 :
- corretta gestione uscita con salvataggio file.
2016-09-29 08:02:38 +00:00

115 lines
4.0 KiB
VB.net

'----------------------------------------------------------------------------
' EgalTech 2015-2015
'----------------------------------------------------------------------------
' File : MruList.vb Data : 27.02.15 Versione : 1.6b7
' Contenuto : Classe MruList (gestione elenco file appena usati).
'
'
'
' Modifiche : 27.02.15 DS Creazione modulo.
'
'
'----------------------------------------------------------------------------
'--------------------------------------------------------------------------------------------------
Imports System.Collections.ObjectModel
Public Class MruList
'---------------------------------------------------------------------------
Private m_sSection As String
Private m_nMaxEntries As Integer
Friend m_FileNames As ObservableCollection(Of String)
'---------------------------------------------------------------------------
Public Sub New(sSection As String, nMaxEntries As Integer)
' Inizializzo
m_sSection = sSection
m_nMaxEntries = nMaxEntries
m_FileNames = New ObservableCollection(Of String)
' Carico lista da Ini.
LoadMruList()
End Sub
'---------------------------------------------------------------------------
Private Sub LoadMruList()
' Pulisco la lista dei file
m_FileNames.Clear()
' Carico la lista dei file salvati in INI
Dim sFileName As String = String.Empty
For i As Integer = 1 To m_nMaxEntries
Dim sKey As String = K_FILE + i.ToString()
If GetPrivateProfileString(m_sSection, sKey, "", sFileName) > 0 Then
m_FileNames.Add(sFileName)
End If
Next
End Sub
'---------------------------------------------------------------------------
Private Sub SaveMruList()
For i As Integer = 1 To m_nMaxEntries
Dim sKey As String = K_FILE + i.ToString()
If i <= m_FileNames.Count Then
WritePrivateProfileString(m_sSection, sKey, m_FileNames(i - 1).ToString)
Else
WritePrivateProfileString(m_sSection, sKey, "")
End If
Next
End Sub
'---------------------------------------------------------------------------
Public Sub Add(ByVal sFileName As String)
' Se già presente, rimuovo il file dalla lista
Dim i As Integer = FileNameIndex(sFileName)
If i > 0 Then
m_FileNames.Remove(i)
End If
' Aggiungo il file in cima alla lista
If m_FileNames.Count > 0 Then
m_FileNames.Insert(0, sFileName)
Else
m_FileNames.Add(sFileName)
End If
' Se la lista ha superato la massima dimensione, cancello l'ultimo record
If m_FileNames.Count > m_nMaxEntries Then
m_FileNames.RemoveAt(m_nMaxEntries + 1)
End If
' Salvo la lista aggiornata
SaveMruList()
End Sub
'---------------------------------------------------------------------------
Private Function FileNameIndex(ByVal sFileName As String) As Integer
For i As Integer = 1 To m_FileNames.Count
If String.Compare(m_FileNames(i - 1).ToString, sFileName, True) = 0 Then
Return i
End If
Next
Return 0
End Function
'---------------------------------------------------------------------------
Public Sub Remove(ByVal sFileName As String)
Dim i As Integer = FileNameIndex(sFileName)
If i > 0 Then
' Rimuovo il file
m_FileNames.RemoveAt(i)
' Salvo lalista aggiornata
SaveMruList()
End If
End Sub
'---------------------------------------------------------------------------
Public Function GetFileName(ByVal nInd As Integer, ByRef sFileName As String) As Boolean
If nInd > 0 And nInd <= m_FileNames.Count() Then
sFileName = m_FileNames(nInd).ToString()
Return True
Else
sFileName = String.Empty
Return False
End If
End Function
End Class