Warning: This file has been marked up for HTML
VERSION 4.00
Begin VB.Form frmAddress
BorderStyle = 1 'Fixed Single
Caption = "Addresses"
ClientHeight = 6765
ClientLeft = 1125
ClientTop = 1530
ClientWidth = 9435
Height = 7170
Left = 1065
LinkTopic = "Form1"
LockControls = -1 'True
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 6765
ScaleWidth = 9435
Top = 1185
Width = 9555
Begin VB.OptionButton optIndex
Caption = "Use &Numeric Index"
Height = 315
Index = 0
Left = 4560
TabIndex = 37
Top = 5820
Value = -1 'True
Width = 1815
End
Begin VB.OptionButton optIndex
Caption = "Use &Address Object"
Height = 315
Index = 1
Left = 6480
TabIndex = 36
Top = 5820
Width = 1815
End
Begin VB.CheckBox chkGroupsOnly
Caption = "Groups &Only"
Height = 315
Left = 7080
TabIndex = 35
Top = 6240
Width = 2235
End
Begin VB.CommandButton cmdSystemAddressBook
Caption = "Account.&SystemAddressBook"
Height = 375
Left = 6300
TabIndex = 13
Top = 3120
Width = 2955
End
Begin VB.CommandButton cmdFrequentContacts
Caption = "Account.&FrequentContacts"
Height = 375
Left = 3240
TabIndex = 12
Top = 3120
Width = 2955
End
Begin VB.CommandButton cmdDefaultAddressBook
Caption = "Account.&DefaultAddressBook"
Height = 375
Left = 180
TabIndex = 11
Top = 3120
Width = 2955
End
Begin VB.CommandButton cmdLogin
Caption = "&Login"
Default = -1 'True
Height = 375
Left = 120
TabIndex = 33
Top = 120
Width = 4275
End
Begin VB.TextBox txtParameters
Height = 315
Left = 120
TabIndex = 1
Text = "/ph-"
Top = 960
Width = 4275
End
Begin VB.TextBox txtUserID
Height = 315
Left = 120
TabIndex = 0
Text = "UserID"
Top = 600
Width = 4275
End
Begin VB.TextBox txtItem
Height = 315
Left = 4560
TabIndex = 31
Top = 6240
Width = 975
End
Begin VB.CommandButton cmdGoto
Caption = "<- &Goto Index"
Height = 315
Left = 5580
TabIndex = 32
Top = 6240
Width = 1275
End
Begin VB.Frame Frame2
Caption = "Additional Address Information"
Height = 2115
Left = 4560
TabIndex = 30
Top = 3600
Width = 4755
Begin VB.Label lblMembersCount
Height = 255
Left = 1440
TabIndex = 27
Top = 1500
Width = 3255
End
Begin VB.Label lblFieldsCount
Height = 255
Left = 1440
TabIndex = 25
Top = 1260
Width = 3255
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "Index:"
Height = 255
Index = 10
Left = 60
TabIndex = 28
Top = 1740
Width = 1275
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "Members Count:"
Height = 255
Index = 9
Left = 60
TabIndex = 26
Top = 1500
Width = 1275
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "Fields Count:"
Height = 255
Index = 11
Left = 60
TabIndex = 24
Top = 1260
Width = 1275
End
Begin VB.Label lblIndex
Height = 255
Left = 1440
TabIndex = 29
Top = 1740
Width = 3255
End
Begin VB.Label lblObjType
Height = 255
Left = 1440
TabIndex = 23
Top = 1020
Width = 3255
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "Object Type:"
Height = 255
Index = 8
Left = 60
TabIndex = 22
Top = 1020
Width = 1275
End
Begin VB.Label lblEmailType
Height = 255
Left = 1440
TabIndex = 21
Top = 780
Width = 3255
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "Email Type:"
Height = 255
Index = 7
Left = 60
TabIndex = 20
Top = 780
Width = 1275
End
Begin VB.Label lblEmailAddress
Height = 255
Left = 1440
TabIndex = 19
Top = 540
Width = 3255
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "Email Address:"
Height = 255
Index = 6
Left = 60
TabIndex = 18
Top = 540
Width = 1275
End
Begin VB.Label lblDisplayName
Height = 255
Left = 1440
TabIndex = 17
Top = 300
Width = 3255
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "Display Name:"
Height = 255
Index = 5
Left = 60
TabIndex = 16
Top = 300
Width = 1275
End
End
Begin VB.Frame Frame1
Caption = "Account Information"
Height = 1155
Left = 4560
TabIndex = 8
Top = 120
Width = 4755
Begin VB.Label lblTCPIPPort
Height = 255
Left = 1440
TabIndex = 7
Top = 780
Width = 3255
End
Begin VB.Label lblTCPIPAddress
Height = 255
Left = 1440
TabIndex = 5
Top = 540
Width = 3255
End
Begin VB.Label lblPathToHost
Height = 255
Left = 1440
TabIndex = 3
Top = 300
Width = 3255
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "TCP/IP Port:"
Height = 255
Index = 4
Left = 60
TabIndex = 6
Top = 780
Width = 1275
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "TCP/IP Address:"
Height = 255
Index = 3
Left = 60
TabIndex = 4
Top = 540
Width = 1275
End
Begin VB.Label Label1
Alignment = 1 'Right Justify
Caption = "Path to Host:"
Height = 255
Index = 0
Left = 60
TabIndex = 2
Top = 300
Width = 1275
End
End
Begin VB.ListBox lstAddressBookEntries
Height = 2715
IntegralHeight = 0 'False
Left = 120
TabIndex = 15
Top = 3840
Width = 4275
End
Begin ComctlLib.ProgressBar ProgressBar1
Align = 2 'Align Bottom
Height = 120
Left = 0
TabIndex = 34
Top = 6645
Width = 9435
_ExtentX = 16642
_ExtentY = 212
_Version = 327680
Appearance = 1
MouseIcon = "Address.frx":0000
End
Begin ComctlLib.ListView lvAddressBooks
Height = 1275
Left = 120
TabIndex = 10
Top = 1740
Width = 9195
_ExtentX = 16219
_ExtentY = 2249
View = 3
LabelEdit = 1
LabelWrap = 0 'False
HideSelection = 0 'False
_Version = 327680
ForeColor = -2147483640
BackColor = -2147483643
Appearance = 1
MouseIcon = "Address.frx":001C
NumItems = 8
BeginProperty ColumnHeader(1) {0713E8C7-850A-101B-AFC0-4210102A8DA7}
Key = "Name"
Object.Tag = ""
Text = "Name"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(2) {0713E8C7-850A-101B-AFC0-4210102A8DA7}
Key = "ObjType"
Object.Tag = ""
Text = "Obj Type"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(3) {0713E8C7-850A-101B-AFC0-4210102A8DA7}
Key = "Subtype"
Object.Tag = ""
Text = "Subtype"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(4) {0713E8C7-850A-101B-AFC0-4210102A8DA7}
Key = "Entries"
Object.Tag = ""
Text = "Entries"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(5) {0713E8C7-850A-101B-AFC0-4210102A8DA7}
Key = "FieldDefinitions"
Object.Tag = ""
Text = "Field Definitions"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(6) {0713E8C7-850A-101B-AFC0-4210102A8DA7}
Key = "SortOrder"
Object.Tag = ""
Text = "Sort Order"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(7) {0713E8C7-850A-101B-AFC0-4210102A8DA7}
Key = "Default"
Object.Tag = ""
Text = "Default"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(8) {0713E8C7-850A-101B-AFC0-4210102A8DA7}
Key = "ProviderID"
Object.Tag = ""
Text = "Provider ID"
Object.Width = 2540
EndProperty
End
Begin VB.Line Line1
X1 = 120
X2 = 9300
Y1 = 1380
Y2 = 1380
End
Begin VB.Label Label1
Caption = "Address &Books"
Height = 195
Index = 2
Left = 120
TabIndex = 9
Top = 1500
Width = 9195
End
Begin VB.Label Label1
Caption = "Address Book &Entries"
Height = 195
Index = 1
Left = 120
TabIndex = 14
Top = 3600
Width = 4275
End
End
Attribute VB_Name = "frmAddress"
Attribute VB_Creatable = False
Attribute VB_Exposed = False
'/***************************************************************************
'$name: ADDRESS.FRM
'$version: 1.0
'$date_modified: 121298
'$description: This app lists all of the AddressBooks on a system and allows
' you to select them and display the AddressBookEntries for the
' AddressBook. It will also display the information for the
' selected AddressBookEntry.
'$owner: GroupWise SDK Team Lead
'Copyright (c) 1998 Novell, Inc. All Rights Reserved.
'
'THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES.
'USE AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO THE LICENSE AGREEMENT
'ACCOMPANYING THE SOFTWARE DEVELOPMENT KIT (SDK) THAT CONTAINS THIS WORK.
'PURSUANT TO THE SDK LICENSE AGREEMENT, NOVELL HEREBY GRANTS TO DEVELOPER A
'ROYALTY-FREE, NON-EXCLUSIVE LICENSE TO INCLUDE NOVELL'S SAMPLE CODE IN ITS
'PRODUCT. NOVELL GRANTS DEVELOPER WORLDWIDE DISTRIBUTION RIGHTS TO MARKET,
'DISTRIBUTE, OR SELL NOVELL'S SAMPLE CODE AS A COMPONENT OF DEVELOPER'S
'PRODUCTS. NOVELL SHALL HAVE NO OBLIGATIONS TO DEVELOPER OR DEVELOPER'S
'CUSTOMERS WITH RESPECT TO THIS CODE.
'****************************************************************************/
Option Explicit
' Arrays for enumeration constants
Private sAddressTypeConstants(5) As String
Private sAddressBookTypeConstants(3) As String
Private sAddressBookSubtypeConstants(2) As String
Private sSortConstants(2) As String
' GroupWise Object API variabls
Private GWRootAccount As Object
Private GWAddressBook As Object
Private GWAddressBooks As Object
Private GWAddressBookEntries As Object
' Status flags
Private bErrorFlag As Boolean
Private Sub chkGroupsOnly_Click()
If Not bErrorFlag Then
Screen.MousePointer = vbHourglass
' Update AddressBookEntries ListBox
Call GetAddressBookEntries
Screen.MousePointer = vbDefault
End If
bErrorFlag = False
End Sub
Private Sub Form_Load()
' Center the form
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
'Assign enumeration Constants (See Object Browser - F2)
sAddressTypeConstants(egwUnknown) = "Unknown"
sAddressTypeConstants(egwUser) = "User"
sAddressTypeConstants(egwCompany) = "Company"
sAddressTypeConstants(egwResource) = "Resource"
sAddressTypeConstants(egwGroup) = "Group"
sAddressBookTypeConstants(egwUnknownBook) = "Unknown Book"
sAddressBookTypeConstants(egwNovellPersonal) = "Novell Personal"
sAddressBookTypeConstants(egwNovellSystem) = "Novell System"
sAddressBookSubtypeConstants(egwOther) = "Other"
sAddressBookSubtypeConstants(egwFrequentContact) = "Frequent Contact"
sSortConstants(egwAscending) = "Ascending"
sSortConstants(egwDescending) = "Descending"
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Cleanup global API variables
Set GWAddressBookEntries = Nothing
Set GWAddressBooks = Nothing
Set GWAddressBook = Nothing
Set GWRootAccount = Nothing
End Sub
Private Sub cmdLogin_Click()
Dim objApplication As Object
Screen.MousePointer = vbHourglass
' Release API objects so you can login again
Set GWAddressBookEntries = Nothing
Set GWAddressBooks = Nothing
Set GWAddressBook = Nothing
Set GWRootAccount = Nothing
' Initialize controls
lvAddressBooks.ListItems.Clear
lstAddressBookEntries.Clear
' Get the application object
Me.Caption = "Creating GroupWare Session...": DoEvents
Set objApplication = CreateObject("NovellGroupWareSession")
' Login to GroupWise API
Me.Caption = "Logging In...": DoEvents
Set GWRootAccount = objApplication.Login(txtUserID, txtParameters)
' Display GroupWise Account properties
lblPathToHost = GWRootAccount.PathToHost
lblTCPIPAddress = GWRootAccount.TCPIPAddress
lblTCPIPPort = GWRootAccount.TCPIPPort
'Get Address Books
Call GetAddressBooks
Screen.MousePointer = vbDefault
End Sub
Private Sub cmdDefaultAddressBook_Click()
Screen.MousePointer = vbHourglass
On Error GoTo cmdDefaultAddressBook_Click_Err
' Get the AddressBookEntries for the Default AddressBook
Set GWAddressBook = GWRootAccount.DefaultAddressBook
Call GetAddressBookEntries
cmdDefaultAddressBook_Click_Err:
Screen.MousePointer = vbDefault
End Sub
Private Sub cmdFrequentContacts_Click()
Screen.MousePointer = vbHourglass
On Error GoTo cmdFrequentContacts_Click_Err
' Get the AddressBookEntries for the Frequent Contacts AddressBook
Set GWAddressBook = GWRootAccount.FrequentContacts
Call GetAddressBookEntries
cmdFrequentContacts_Click_Err:
Screen.MousePointer = vbDefault
End Sub
Private Sub cmdSystemAddressBook_Click()
Screen.MousePointer = vbHourglass
On Error GoTo cmdSystemAddressBook_Click_Err
' Get the AddressBookEntries for the System AddressBook
Set GWAddressBook = GWRootAccount.SystemAddressBook
Call GetAddressBookEntries
cmdSystemAddressBook_Click_Err:
Screen.MousePointer = vbDefault
End Sub
Private Sub cmdGoto_Click()
' Goes to the AddressBookEntry based on the given index from the text box
lstAddressBookEntries.ListIndex = Val(txtItem) - 1
End Sub
Private Sub lvAddressBooks_ItemClick(ByVal Item As ListItem)
Screen.MousePointer = vbHourglass
On Error GoTo lvAddressBooks_ItemClick_Err
' Get the AddressBookEntries for the selected AddressBook
Set GWAddressBook = GWAddressBooks(Item.Index)
Call GetAddressBookEntries
lvAddressBooks_ItemClick_Err:
Screen.MousePointer = vbDefault
End Sub
Private Sub lstAddressBookEntries_Click()
Dim objAddresses As Addresses
Dim objAddress As AddressBookEntry
Dim sAddress As String
Screen.MousePointer = vbHourglass
On Error Resume Next
' Get an AddressBookEntry object
Set objAddress = GWAddressBookEntries(lstAddressBookEntries.ItemData(lstAddressBookEntries.ListIndex))
If Err Then
MsgBox "Set objAddress = GWAddressBookEntries(lstAddressBookEntries.ItemData (lstAddressBookEntries.ListIndex))"
Err.Clear
End If
If optindex(0) = True Then
' Get an AddressBookEntry using a numeric index from above call
Call GetAddressBookEntry(objAddress)
If Err Then
MsgBox "Error using numeric index"
Err.Clear
End If
Else
' Check for an EmailAddress
If Len(objAddress.EmailAddress) Then
' Save the EmailAddress string
sAddress = objAddress.EmailAddress
If Err Then
MsgBox "sAddress = objAddress.EmailAddress"
Err.Clear
End If
' Perform a Find with the previously saved EmailAddress string
Set objAddresses = GWAddressBookEntries.Find("(<E-Mail Address> contains """ & sAddress & """)")
If Err Then
MsgBox "Set objAddresses = GWAddressBookEntries.Find(""(<E-Mail Address> contains """ & sAddress & """)"")"
Err.Clear
End If
Else
' Save the DisplayName string if there was no EmailAddress
sAddress = objAddress.DisplayName
If Err Then
MsgBox "sAddress = objAddress.DisplayName"
Err.Clear
End If
' Perform a Find with the previously saved DisplayName string
Set objAddresses = GWAddressBookEntries.Find("(Name contains """ & sAddress & """)")
If Err Then
MsgBox "Set objAddresses = GWAddressBookEntries.Find(""(Name contains """ & sAddress & """)"")"
Err.Clear
End If
End If
' Get an AddressBookEntry using an Address object
Call GetAddressBookEntry( _
GWAddressBookEntries(objAddresses(1)) _
)
End If
Screen.MousePointer = vbDefault
End Sub
Private Sub GetAddressBooks()
Dim objAddressBook As Object
Dim objListItem As ListItem
Dim lCount As Long
Me.Caption = "Getting Address Books...": DoEvents
' Get the AddressBooks collection
Set GWAddressBooks = GWRootAccount.AddressBooks
If GWAddressBooks.Count Then ProgressBar1.Max = GWAddressBooks.Count
' Display the AddressBooks in the ListView
For Each objAddressBook In GWAddressBooks
Set objListItem = lvAddressBooks.ListItems.Add(, , objAddressBook.Name)
With objListItem
objListItem.SubItems(1) = sAddressBookTypeConstants(objAddressBook.ObjType)
objListItem.SubItems(2) = sAddressBookSubtypeConstants(objAddressBook.Subtype)
objListItem.SubItems(3) = objAddressBook.AddressBookEntries.Count
objListItem.SubItems(4) = objAddressBook.FieldDefinitions.Count
objListItem.SubItems(5) = sSortConstants(objAddressBook.SortOrder)
objListItem.SubItems(6) = objAddressBook.Default
objListItem.SubItems(7) = objAddressBook.ProviderID
End With
' Display progress
lCount = lCount + 1
ProgressBar1 = lCount
Next
ProgressBar1 = 0
End Sub
Private Sub GetAddressBookEntries()
Dim objAddressBookEntry As Object
Dim lCount As Long
Me.Caption = "Getting Address Book Entries...": DoEvents
' Initialize controls
Call ClearInfo
lstAddressBookEntries.Clear
On Error GoTo GetAddressBookEntries_Err
' Get the AddressBookEntries collection form the AddressBook passed in
Set GWAddressBookEntries = GWAddressBook.AddressBookEntries
On Error GoTo 0
If GWAddressBookEntries.Count Then ProgressBar1.Max = GWAddressBookEntries.Count
' Display the AddressBookEntries in the ListBox
For Each objAddressBookEntry In GWAddressBookEntries
lCount = lCount + 1
If chkGroupsOnly = vbChecked Then
' Display only Groups if the "Groups Only" CheckBox is checked
If objAddressBookEntry.ObjType = egwGroup Then
lstAddressBookEntries.AddItem objAddressBookEntry.DisplayName
' Save the Index for quick access when selecting the item in the ListBox
lstAddressBookEntries.ItemData(lstAddressBookEntries.NewIndex) = lCount
End If
Else
' Display all AddressBookEntiries
lstAddressBookEntries.AddItem objAddressBookEntry.DisplayName
' Save the Index for quick access
lstAddressBookEntries.ItemData(lstAddressBookEntries.NewIndex) = lCount
End If
ProgressBar1 = lCount
Next
ProgressBar1 = 0
' Select the first item in the ListBox
If lstAddressBookEntries.ListCount Then lstAddressBookEntries.ListIndex = 0
Exit Sub
GetAddressBookEntries_Err:
bErrorFlag = True
chkGroupsOnly = vbUnchecked
MsgBox "You must first select an Address Book.", vbInformation
End Sub
Private Sub GetAddressBookEntry(objAddressBookEntry As Object)
On Error Resume Next
' Initialize controls
Call ClearInfo
' Display all AddressBookEntry information
lblDisplayName = objAddressBookEntry.DisplayName
If Err Then lblDisplayName = Err.Description: Err.Clear
lblDisplayName.Refresh
lblEmailAddress = objAddressBookEntry.EmailAddress
If Err Then lblEmailAddress = Err.Description: Err.Clear
lblEmailAddress.Refresh
lblEmailType = objAddressBookEntry.EmailType
If Err Then lblEmailType = Err.Description: Err.Clear
lblEmailType.Refresh
lblObjType = objAddressBookEntry.ObjType & " = " & _
sAddressTypeConstants(objAddressBookEntry.ObjType)
If Err Then lblObjType = Err.Description: Err.Clear
lblObjType.Refresh
lblFieldsCount = objAddressBookEntry.Fields.Count
If Err Then lblFieldsCount = Err.Description: Err.Clear
lblFieldsCount.Refresh
lblMembersCount = objAddressBookEntry.Members.Count
If Err Then lblMembersCount = Err.Description: Err.Clear
lblMembersCount.Refresh
lblIndex = lstAddressBookEntries.ItemData(lstAddressBookEntries.ListIndex)
If Err Then lblIndex = Err.Description: Err.Clear
lblIndex.Refresh
End Sub
Private Sub ClearInfo()
lblDisplayName = ""
lblEmailAddress = ""
lblEmailType = ""
lblObjType = ""
lblFieldsCount = ""
lblMembersCount = ""
lblIndex = ""
End Sub
Private Sub txtParameters_GotFocus()
' Position the cursor at the end of the text in the TextBox
txtParameters.SelStart = Len(txtParameters)
End Sub
Private Sub txtUserID_GotFocus()
' Select contents of TextBox
txtUserID.SelStart = 0
txtUserID.SelLength = Len(txtUserID)
End Sub