Imports EgtWPFLib5 Imports LicenseManager Public Class MainWindowVM Inherits VMBase #Region "FIELDS & PROPERTIES" Friend Enum ProjectModeOpt As Integer MAINMENU = 0 NEWCLIENT = 1 NEWKEY = 2 NEWLICENCE = 3 NEWPRODUCT = 4 NEWVERSION = 5 NEWRESELLER = 6 SEARCHCLIENT = 7 SEARCHKEY = 8 SEARCHLICENCE = 9 SEARCHPRODUCT = 10 SEARCHVERSION = 11 SEARCHRESELLER = 12 UPDATECLIENT = 13 UPDATEKEY = 14 UPDATELICENCE = 15 UPDATEPRODUCT = 16 UPDATEVERSION = 17 UPDATERESELLER = 18 End Enum Public Shared Narrowing Operator CType(v As Window) As MainWindowVM Throw New NotImplementedException() End Operator Private m_MainWindowM As MainWindowM Friend ReadOnly Property MainWindowM As MainWindowM Get Return m_MainWindowM End Get End Property ' Variabile che indica che il programma è stato avviato correttamente (sia la mappa che l'ambiente Egt) Private m_bInitStatus As Boolean Friend ReadOnly Property InitStatus As Boolean Get Return m_bInitStatus End Get End Property ' Titolo Private m_Title As String Public Property Title As String Get Return m_Title End Get Set(value As String) m_Title = value NotifyPropertyChanged("Title") End Set End Property Private m_SelProjectMode As ProjectModeOpt Friend Property SelProjectMode As ProjectModeOpt Get Return m_SelProjectMode End Get Set(value As ProjectModeOpt) ' Esco dallo stato corrente Select Case m_SelProjectMode Case ProjectModeOpt.MAINMENU Case ProjectModeOpt.NEWCLIENT Case ProjectModeOpt.NEWKEY Case ProjectModeOpt.NEWLICENCE Case ProjectModeOpt.NEWPRODUCT Case ProjectModeOpt.NEWVERSION Case ProjectModeOpt.NEWRESELLER Case ProjectModeOpt.SEARCHCLIENT Case ProjectModeOpt.SEARCHKEY Case ProjectModeOpt.SEARCHLICENCE Case ProjectModeOpt.SEARCHPRODUCT Case ProjectModeOpt.SEARCHVERSION Case ProjectModeOpt.SEARCHRESELLER Case ProjectModeOpt.UPDATECLIENT Case ProjectModeOpt.UPDATEKEY Case ProjectModeOpt.UPDATELICENCE Case ProjectModeOpt.UPDATEPRODUCT Case ProjectModeOpt.UPDATEVERSION Case ProjectModeOpt.UPDATERESELLER End Select ' Entro nel nuovo stato m_SelProjectMode = value Select Case m_SelProjectMode Case ProjectModeOpt.MAINMENU Map.refMainMenuVM.InitMainMenuPage() Case ProjectModeOpt.NEWCLIENT Try Map.refNewClientPageVM.InitNewClientPage() Catch ex As Exception MsgBox("Eccezione generata" & vbCrLf & ex.Message) End Try Case ProjectModeOpt.NEWKEY Map.refNewKeyPageVM.InitNewKeyPage() Case ProjectModeOpt.NEWLICENCE Map.refNewLicencePageVM.InitNewLicencePage() Case ProjectModeOpt.NEWPRODUCT Map.refNewProductPageVM.InitNewProductPage() Case ProjectModeOpt.NEWVERSION Map.refNewVersionPageVM.InitVersionPage() Case ProjectModeOpt.NEWRESELLER Map.refNewResellerPageVM.InitNewResellerPage() Case ProjectModeOpt.SEARCHCLIENT Map.refSearchClientPageVM.InitSearchClientPage() Case ProjectModeOpt.SEARCHKEY Map.refSearchKeyPageVM.InitSearchKeyPage() Case ProjectModeOpt.SEARCHLICENCE Map.refSearchLicencePageVM.InitSearchLicencePage() Case ProjectModeOpt.SEARCHPRODUCT Map.refSearchProductPageVM.InitSearchProductPage() Case ProjectModeOpt.SEARCHVERSION Map.refSearchVersionPageVM.InitSearchVersionPage() Case ProjectModeOpt.SEARCHRESELLER Map.refSearchResellerPageVM.InitSearchResellerPage() Case ProjectModeOpt.UPDATECLIENT Map.refUpdateClientPageVM.InitUpdateClientPage() Case ProjectModeOpt.UPDATEKEY Map.refUpdateKeyPageVM.InitUpdateKeyPage() Case ProjectModeOpt.UPDATELICENCE Map.refUpdateLicencePageVM.InitUpdateLicencePage() Case ProjectModeOpt.UPDATEPRODUCT Map.refUpdateProductPageVM.InitUpdateProductPage() Case ProjectModeOpt.UPDATEVERSION Map.refUpdateVersionPageVM.InitUpdateVersionPage() Case ProjectModeOpt.UPDATERESELLER Map.refUpdateResellerPageVM.InitUpdateResellerPage() End Select NotifyPropertyChanged("ProjectContent") End Set End Property Private m_MainMenuV As MainMenuV Private m_NewClientPageV As NewClientPageV Private m_NewKeyPageV As NewKeyPageV Private m_NewLicencePageV As NewLicencePageV Private m_NewProductPageV As NewProductPageV Private m_NewVersionPageV As NewVersionPageV Private m_NewResellerPageV As NewResellerPageV Private m_SearchClientPageV As SearchClientPageV Private m_SearchKeyPageV As SearchKeyPageV Private m_SearchLicencePageV As SearchLicencePageV Private m_SearchProductPageV As SearchProductPageV Private m_SearchVersionPageV As SearchVersionPageV Private m_SearchResellerPageV As SearchResellerPageV Private m_UpdateClientPageV As UpdateClientPageV Private m_UpdateKeyPageV As UpdateKeyPageV Private m_UpdateLicencePageV As UpdateLicencePageV Private m_UpdateProductPageV As UpdateProductPageV Private m_UpdateVersionPageV As UpdateVersionPageV Private m_UpdateResellerPageV As UpdateResellerPageV Public ReadOnly Property ProjectContent As FrameworkElement Get Select Case m_SelProjectMode Case ProjectModeOpt.MAINMENU Return m_MainMenuV Case ProjectModeOpt.NEWCLIENT Return m_NewClientPageV Case ProjectModeOpt.NEWKEY Return m_NewKeyPageV Case ProjectModeOpt.NEWLICENCE Return m_NewLicencePageV Case ProjectModeOpt.NEWPRODUCT Return m_NewProductPageV Case ProjectModeOpt.NEWVERSION Return m_NewVersionPageV Case ProjectModeOpt.NEWRESELLER Return m_NewResellerPageV Case ProjectModeOpt.SEARCHCLIENT Return m_SearchClientPageV Case ProjectModeOpt.SEARCHKEY Return m_SearchKeyPageV Case ProjectModeOpt.SEARCHLICENCE Return m_SearchLicencePageV Case ProjectModeOpt.SEARCHPRODUCT Return m_SearchProductPageV Case ProjectModeOpt.SEARCHVERSION Return m_SearchVersionPageV Case ProjectModeOpt.SEARCHRESELLER Return m_SearchResellerPageV Case ProjectModeOpt.UPDATECLIENT Return m_UpdateClientPageV Case ProjectModeOpt.UPDATEKEY Return m_UpdateKeyPageV Case ProjectModeOpt.UPDATELICENCE Return m_UpdateLicencePageV Case ProjectModeOpt.UPDATEPRODUCT Return m_UpdateProductPageV Case ProjectModeOpt.UPDATEVERSION Return m_UpdateVersionPageV Case ProjectModeOpt.UPDATERESELLER Return m_UpdateResellerPageV Case Else Return m_MainMenuV End Select End Get End Property ' definizione comandi Private m_cmdAboutBox As ICommand #End Region ' FIELDS & PROPERTIES #Region "CONSTRUCTOR" Sub New() ' Avvio l'inizializzazione della mappa passandogli il riferimento al MainWindowVM Map.BeginInit(Me) ' Costruisco model della MainWindow m_MainWindowM = New MainWindowM ' Creo tutti gli oggetti m_MainMenuV = New MainMenuV m_NewClientPageV = New NewClientPageV m_NewKeyPageV = New NewKeyPageV m_NewLicencePageV = New NewLicencePageV m_NewProductPageV = New NewProductPageV m_NewVersionPageV = New NewVersionPageV m_NewResellerPageV = New NewResellerPageV m_SearchClientPageV = New SearchClientPageV m_SearchKeyPageV = New SearchKeyPageV m_SearchLicencePageV = New SearchLicencePageV m_SearchProductPageV = New SearchProductPageV m_SearchVersionPageV = New SearchVersionPageV m_SearchResellerPageV = New SearchResellerPageV m_UpdateClientPageV = New UpdateClientPageV m_UpdateKeyPageV = New UpdateKeyPageV m_UpdateLicencePageV = New UpdateLicencePageV m_UpdateProductPageV = New UpdateProductPageV m_UpdateVersionPageV = New UpdateVersionPageV m_UpdateResellerPageV = New UpdateResellerPageV ' Setto il titolo dell'applicazione SetTitle(My.Application.Info.Title.ToString() & " ver. " & My.Application.Info.Version.Major.ToString() & "." & My.Application.Info.Version.Minor.ToString() & (ChrW(97 - 1 + My.Application.Info.Version.Build)).ToString() & My.Application.Info.Version.Revision.ToString()) ' Imposto pagina MainMenu all'avvio SelProjectMode = MainWindowVM.ProjectModeOpt.MAINMENU End Sub #End Region ' CONSTRUCTOR #Region "METHODS" Friend Sub SetTitle(sTitle As String) m_Title = sTitle NotifyPropertyChanged("Title") End Sub Friend Sub ContentRendered() ' Verifico che l'inizializzazione di tutte le parti del programma sia andata a buon fine If Map.EndInit() Then m_bInitStatus = True ' altrimenti chiudo il programma Else m_bInitStatus = False End If 'ManageDb.CreateTable() End Sub #End Region ' METHODS #Region "COMMANDS" #Region "AboutBoxCommand" ' Returns a command that manage the MainWindow_Unloaded command Public ReadOnly Property AboutBoxCommand() As ICommand Get If m_cmdAboutBox Is Nothing Then m_cmdAboutBox = New Command(AddressOf AboutBox) End If Return m_cmdAboutBox End Get End Property ' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded. Public Sub AboutBox(ByVal param As Object) Dim AboutBoxWindow As New AboutBoxV AboutBoxWindow.Owner = Application.Current.MainWindow AboutBoxWindow.ShowDialog() End Sub #End Region ' AboutBoxCommand #End Region ' COMMANDS End Class