Files
EgtPHOTOLib/ProjectSlab/ListPage/ListPageSlabVM.vb
2022-06-20 14:59:13 +02:00

120 lines
4.5 KiB
VB.net

Imports System.Collections.ObjectModel
Imports EgtWPFLib5
Public Class ListPageSlabVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Public ReadOnly Property SlabList As ObservableCollection(Of Slab)
Get
If IsNothing(PhotoMap.refProjectVM) Then Return Nothing
Return PhotoMap.refProjectVM.SlabList
End Get
End Property
Private m_bAutoScrollOnTopList As Boolean = False
Public Property bAutoScrollOnTopList As Boolean
Get
Return m_bAutoScrollOnTopList
End Get
Set(value As Boolean)
m_bAutoScrollOnTopList = value
NotifyPropertyChanged("bAutoScrollOnTopList")
End Set
End Property
' definizione comandi
Private m_cmdSlabBtn As ICommand
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New()
' Creo riferimento a questa classe in StoneMap
PhotoMap.SetRefListPageVM(Me)
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Sub InitListPage()
If PhotoMap.refSearchPanelVM.Search_IsChecked Then
PhotoMap.refSearchPanelVM.Search()
Else
PhotoMap.refProjectVM.SlabList = New ObservableCollection(Of Slab)(ManageDb.ExecuteSlabReaderQuery("SELECT * FROM " & Slab.DB_SLABS & " ORDER BY " & Slab.DB_MATERIAL & ", " & Slab.DB_STATE))
PhotoMap.refProjectVM.DateTimeList = New ObservableCollection(Of DataTimeRecord)(ManageDb.ExecuteDataTimeReaderQuery("SELECT * FROM " & Slab.DB_DATATIME))
End If
End Sub
Public Sub RefreshLisPage()
' leggo la tabella DataTime
Dim localDataTimeObervableCollection As ObservableCollection(Of DataTimeRecord) = New ObservableCollection(Of DataTimeRecord)(ManageDb.ExecuteDataTimeReaderQuery("SELECT * FROM " & Slab.DB_DATATIME))
Dim bRefreshAll As Boolean = False
' verifico che abbiano lo stesso numero di elementi
If localDataTimeObervableCollection.Count <> PhotoMap.refProjectVM.DateTimeList.Count Then
' allora devo aggiornare senza prcedere alla verifica
bRefreshAll = True
Else
' verifico che le due tabelle siano uguali, altrimenti aggiorno la lista
For Each Record In localDataTimeObervableCollection
For Each Item In PhotoMap.refProjectVM.DateTimeList
' se le due chiavi coincidono
If Item.CurrentKey = Record.CurrentKey Then
If Item.sLastDate <> Record.sLastDate Then
bRefreshAll = True
Exit For
End If
End If
Next
If bRefreshAll Then
Exit For
End If
Next
End If
If Not bRefreshAll Then Return
PhotoMap.refProjectVM.DateTimeList = localDataTimeObervableCollection
' carico la lista delle lastre da DB
Dim localObservableCollection As ObservableCollection(Of Slab) = New ObservableCollection(Of Slab)(ManageDb.ExecuteSlabReaderQuery("SELECT * FROM " & Slab.DB_SLABS & " ORDER BY " & Slab.DB_MATERIAL & ", " & Slab.DB_STATE))
PhotoMap.refProjectVM.SlabList = localObservableCollection
' disattivo l'autoscroll
PhotoMap.refListPageVM.bAutoScrollOnTopList = False
'PhotoMap.refProjectVM.SlabList = New ObservableCollection(Of Slab)(ManageDb.ExecuteSlabReaderQuery("SELECT * FROM " & Slab.DB_SLABS & " ORDER BY " & Slab.DB_MATERIAL & ", " & Slab.DB_STATE))
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "SlabBtn"
Public Event SlabIsSelected(ByRef sender As Object, ByVal e As EventArgs)
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property SlabBtn_Command() As ICommand
Get
If m_cmdSlabBtn Is Nothing Then
m_cmdSlabBtn = New Command(AddressOf SlabBtn)
End If
Return m_cmdSlabBtn
End Get
End Property
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub SlabBtn(ByVal param As Object)
PhotoMap.refProjectVM.SelSlab = param
PhotoMap.refProjectVM.SelProjectMode = ProjectSlabVM.ProjectModeOpt.DETAIL
PhotoMap.refProjectVM.SelSlab.IsSelected = MainData.nKey
PhotoMap.refOptionPanelVM.IsSelected()
' vrificare se qualche altro utetnte sta cercando di accedere alla stessa lastra
RaiseEvent SlabIsSelected(Me, EventArgs.Empty)
End Sub
#End Region ' SlabBtn
#End Region ' COMMANDS
End Class