public ContactInfo(IntPtr obj) { objPtr = obj; List <ContactInfoProperty> csEmails = new List <ContactInfoProperty>(); int nEmailsSize = 0; IntPtr nEmails = VidyoContactInfoGetemailsArrayNative(VidyoContactInfoGetemailsNative(objPtr), ref nEmailsSize); int nEmailsIndex = 0; while (nEmailsIndex < nEmailsSize) { ContactInfoProperty csTemails = new ContactInfoProperty(Marshal.ReadIntPtr(nEmails + (nEmailsIndex * Marshal.SizeOf(nEmails)))); csEmails.Add(csTemails); nEmailsIndex++; } List <String> csGroups = new List <String>(); int nGroupsSize = 0; IntPtr nGroups = VidyoContactInfoGetgroupsArrayNative(VidyoContactInfoGetgroupsNative(objPtr), ref nGroupsSize); int nGroupsIndex = 0; while (nGroupsIndex < nGroupsSize) { csGroups.Add(Marshal.PtrToStringAnsi(Marshal.ReadIntPtr(nGroups + (nGroupsIndex * Marshal.SizeOf(nGroups))))); nGroupsIndex++; } List <ContactInfoProperty> csTelephones = new List <ContactInfoProperty>(); int nTelephonesSize = 0; IntPtr nTelephones = VidyoContactInfoGettelephonesArrayNative(VidyoContactInfoGettelephonesNative(objPtr), ref nTelephonesSize); int nTelephonesIndex = 0; while (nTelephonesIndex < nTelephonesSize) { ContactInfoProperty csTtelephones = new ContactInfoProperty(Marshal.ReadIntPtr(nTelephones + (nTelephonesIndex * Marshal.SizeOf(nTelephones)))); csTelephones.Add(csTtelephones); nTelephonesIndex++; } emails = csEmails; groups = csGroups; handle = Marshal.PtrToStringAnsi(VidyoContactInfoGethandleNative(objPtr)); id = Marshal.PtrToStringAnsi(VidyoContactInfoGetidNative(objPtr)); name = Marshal.PtrToStringAnsi(VidyoContactInfoGetnameNative(objPtr)); nickname = Marshal.PtrToStringAnsi(VidyoContactInfoGetnicknameNative(objPtr)); photo = Marshal.PtrToStringAnsi(VidyoContactInfoGetphotoNative(objPtr)); presenceState = VidyoContactInfoGetpresenceStateNative(objPtr); telephones = csTelephones; timestamp = VidyoContactInfoGettimestampNative(objPtr); VidyoContactInfoFreetelephonesArrayNative(nTelephones, nTelephonesSize); VidyoContactInfoFreegroupsArrayNative(nGroups, nGroupsSize); VidyoContactInfoFreeemailsArrayNative(nEmails, nEmailsSize); }
public ContactInfo FindContact(string searchValue, ContactInfoProperty searchCriterion, StringEncoding valueEncoding, StringComparison comparisonType) { if (searchValue == null) throw new ArgumentNullException("searchValues"); foreach (IntPtr handle in GetContactHandles()) { object value; ContactInfoPropertyType type; if (ContactInfo.GetProperty(handle, searchCriterion, out value, out type) && searchValue.Equals(value.ToString(), comparisonType)) return ContactInfo.FromHandle(handle); } Debug.Assert(false); return null; }
public ContactInfo FindContact(string searchValue, ContactInfoProperty searchCriterion, StringEncoding valueEncoding) { return FindContact(searchValue, searchCriterion, valueEncoding, StringComparison.Ordinal); }