Files
Nuvolar/Nuvolar.Module/BusinessObjects/GeneralObjects/Contacts/PopUp/Contacts_SysncOutlook.vb
T
2017-03-08 11:21:27 +01:00

161 lines
7.5 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports DevExpress.Xpo
Imports DevExpress.Data.Filtering
Imports DevExpress.ExpressApp
Imports DevExpress.Persistent.Base
Imports DevExpress.Persistent.BaseImpl
Imports DevExpress.Persistent.Validation
Imports DevExpress.ExpressApp.ConditionalAppearance
Imports Microsoft.Office.Interop.Outlook
Imports Microsoft.Office.Interop
Public Enum eOverWriteDataType
OverWriteOutlookData = 1
OverWriteNuvolarData = 2
End Enum
Public Enum eSyscType
eNormalSysnc = 1
eFirstSync = 2
End Enum
'
<DefaultClassOptions()> _
<NonPersistent()> _
<CreatableItem(False)> _
<NavigationItem(False)> _
<Appearance("Contacts_SysncOutlook - Hide OverWriteDataType, when SyscType=2 AND IsFromOutlook=False", AppearanceItemType:="ViewItem", criteria:="SyscType=2 AND IsFromOutlook=False", targetitems:="OverWriteDataType", visibility:=Editors.ViewItemVisibility.Hide)> _
<Appearance("Contacts_SysncOutlook - Hide Contacts_OutlookFolderContact, when SyscType=1", AppearanceItemType:="ViewItem", criteria:="SyscType=1", targetitems:="Contacts_OutlookFolderContact", visibility:=Editors.ViewItemVisibility.Hide)> _
<Appearance("Contacts_SysncOutlook - Hide IsFromOutlook all time", AppearanceItemType:="ViewItem", criteria:="1=1", targetitems:="IsFromOutlook", visibility:=Editors.ViewItemVisibility.Hide)> _
<Appearance("Contacts_SysncOutlook - Hide SyscType, when IsFromOutlook=True", AppearanceItemType:="ViewItem", criteria:="IsFromOutlook=True", targetitems:="SyscType", visibility:=Editors.ViewItemVisibility.Hide)> _
Public Class Contacts_SysncOutlook
Inherits BaseObject
Private _OverWriteDataType As eOverWriteDataType
Private _SyscType As eSyscType
Private _Contacts_OutlookFolderContact As Contacts_OutlookFolderContact
Private _IsFromOutlook As Boolean
Public Sub New(ByVal session As Session)
MyBase.New(session)
End Sub
Public Overrides Sub AfterConstruction()
MyBase.AfterConstruction()
OverWriteDataType = eOverWriteDataType.OverWriteOutlookData
SyscType = eSyscType.eNormalSysnc
IsFromOutlook = False
End Sub
Property OverWriteDataType As eOverWriteDataType
Get
Return _OverWriteDataType
End Get
Set(value As eOverWriteDataType)
SetPropertyValue("OverWriteDataType", _OverWriteDataType, value)
End Set
End Property
<ImmediatePostData()> _
Property SyscType As eSyscType
Get
Return _SyscType
End Get
Set(value As eSyscType)
SetPropertyValue("SyscType", _SyscType, value)
End Set
End Property
<ImmediatePostData(True), DataSourceProperty("Contacts_OutlookFolderContactCollection")>
Property Contacts_OutlookFolderContact As Contacts_OutlookFolderContact
Get
Return _Contacts_OutlookFolderContact
End Get
Set(ByVal value As Contacts_OutlookFolderContact)
SetPropertyValue("OutlookContactsFolder", _Contacts_OutlookFolderContact, value)
End Set
End Property
Property IsFromOutlook As Boolean
Get
Return _IsFromOutlook
End Get
Set(value As Boolean)
SetPropertyValue("IsFromOutlook", _IsFromOutlook, value)
End Set
End Property
'------------ReadOnly---------------------
Private ReadOnly Property Contacts_OutlookFolderContactCollection As XPCollection(Of Contacts_OutlookFolderContact)
Get
Dim _Contacts_DeleteFolderContacts As New XPCollection(Of Contacts_OutlookFolderContact)(Session)
Session.Delete(_Contacts_DeleteFolderContacts)
Dim _Contacts_OutlookFolderContact As New XPCollection(Of Contacts_OutlookFolderContact)(Session)
Dim _OutlookApp As New Outlook.Application()
Dim _OutlookNameSpace As Outlook.NameSpace = _OutlookApp.GetNamespace("MAPI")
_OutlookNameSpace.Logon(, , False, True)
Dim _ContactFolder As MAPIFolder = _OutlookApp.ActiveExplorer.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts)
'Dim _FolderSuggestedContacts As MAPIFolder = _OutlookApp.ActiveExplorer.Session.GetDefaultFolder(OlDefaultFolders.olFolderSuggestedContacts)
If _ContactFolder IsNot Nothing Then
Dim _DefMap As New Contacts_OutlookFolderContact(Session)
_DefMap.EntryID = _ContactFolder.EntryID
_DefMap.FolderName = _ContactFolder.Name
_Contacts_OutlookFolderContact.Add(_DefMap)
For Each _FoldersName As MAPIFolder In _ContactFolder.Folders
OutlookFolderNames(_FoldersName, _Contacts_OutlookFolderContact)
Next
End If
'If _FolderSuggestedContacts IsNot Nothing Then
' Dim _DefMapSuggested As New Contacts_OutlookFolderContact(Session)
' _DefMapSuggested.EntryID = _FolderSuggestedContacts.EntryID
' _DefMapSuggested.FolderName = _FolderSuggestedContacts.Name
' _Contacts_OutlookFolderContact.Add(_DefMapSuggested)
' For Each _FolderSuggested As MAPIFolder In _FolderSuggestedContacts.Folders
' OutlookFolderSuggestedNames(_FolderSuggested, _Contacts_OutlookFolderContact)
' Next
'End If
Return _Contacts_OutlookFolderContact
End Get
End Property
'--------------Sub-----------------------
Private Sub OutlookFolderNames(_FoldersName As MAPIFolder, Contacts_OutlookFolderContact As DevExpress.Xpo.XPCollection(Of [Module].Contacts_OutlookFolderContact))
If _FoldersName.Folders.Count > 0 Then
Dim _Contacts_OutlookFolderContact As New Contacts_OutlookFolderContact(Session)
_Contacts_OutlookFolderContact.EntryID = _FoldersName.EntryID
_Contacts_OutlookFolderContact.FolderName = _FoldersName.Name
Contacts_OutlookFolderContact.Add(_Contacts_OutlookFolderContact)
For Each _FoldersNameAct As MAPIFolder In _FoldersName.Folders
OutlookFolderNames(_FoldersNameAct, Contacts_OutlookFolderContact)
Next
Else
Dim _Contacts_OutlookFolderContact As New Contacts_OutlookFolderContact(Session)
_Contacts_OutlookFolderContact.EntryID = _FoldersName.EntryID
_Contacts_OutlookFolderContact.FolderName = _FoldersName.Name
Contacts_OutlookFolderContact.Add(_Contacts_OutlookFolderContact)
End If
End Sub
Private Sub OutlookFolderSuggestedNames(_FolderSuggested As MAPIFolder, Contacts_OutlookFolderContact As DevExpress.Xpo.XPCollection(Of [Module].Contacts_OutlookFolderContact))
If _FolderSuggested.Folders.Count > 0 Then
Dim _Contacts_OutlookFolderContact As New Contacts_OutlookFolderContact(Session)
_Contacts_OutlookFolderContact.EntryID = _FolderSuggested.EntryID
_Contacts_OutlookFolderContact.FolderName = _FolderSuggested.Name
Contacts_OutlookFolderContact.Add(_Contacts_OutlookFolderContact)
For Each _FoldersSuggestedNameAct As MAPIFolder In _FolderSuggested.Folders
OutlookFolderSuggestedNames(_FoldersSuggestedNameAct, Contacts_OutlookFolderContact)
Next
Else
Dim _Contacts_OutlookFolderContact As New Contacts_OutlookFolderContact(Session)
_Contacts_OutlookFolderContact.EntryID = _FolderSuggested.EntryID
_Contacts_OutlookFolderContact.FolderName = _FolderSuggested.Name
Contacts_OutlookFolderContact.Add(_Contacts_OutlookFolderContact)
End If
End Sub
End Class