コード例 #1
0
ファイル: ContactInfo.cs プロジェクト: ple103/apss-330
        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);
        }
コード例 #2
0
ファイル: MirandaDatabase.cs プロジェクト: tomasdeml/hyphen
        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;
        }
コード例 #3
0
ファイル: MirandaDatabase.cs プロジェクト: tomasdeml/hyphen
 public ContactInfo FindContact(string searchValue, ContactInfoProperty searchCriterion, StringEncoding valueEncoding)
 {
     return FindContact(searchValue, searchCriterion, valueEncoding, StringComparison.Ordinal);
 }