private void OnCardDAVContactCreated(IntPtr list, IntPtr lf) { var eTag = ""; IntPtr tmpPtr = LinphoneAPI.linphone_friend_get_ref_key(lf); if (tmpPtr != IntPtr.Zero) { eTag = Marshal.PtrToStringAnsi(tmpPtr); } LOG.Info(string.Format("### OnCardDAVContactCreated eTag: {0}", eTag)); if (CardDAVContactCreated != null) { var args = new CardDavContactEventArgs(CardDavContactEventArgs.CardDavAction.Create) { FriendListPtr = list, NewContactPtr = lf }; CardDAVContactCreated(args); } }
private void OnCardDAVContactRemoved(IntPtr list, IntPtr lf) { var refKey = ""; IntPtr tmpPtr = LinphoneAPI.linphone_friend_get_ref_key(lf); if (tmpPtr != IntPtr.Zero) { refKey = Marshal.PtrToStringAnsi(tmpPtr); } tmpPtr = LinphoneAPI.linphone_friend_get_ref_key(lf); if (tmpPtr != IntPtr.Zero) { refKey = Marshal.PtrToStringAnsi(tmpPtr); } LOG.Info(string.Format( "### OnCardDAVContactRemoved RefKey: {0}", refKey)); if (CardDAVContactDeleted != null) { var args = new CardDavContactEventArgs(CardDavContactEventArgs.CardDavAction.Delete) { FriendListPtr = list, ChangedContactPtr = lf }; CardDAVContactDeleted(args); } }
private void OnCardDAVContactUpdated(IntPtr list, IntPtr newFriend, IntPtr oldFriend) { var neweTag = ""; IntPtr tmpPtr = LinphoneAPI.linphone_friend_get_ref_key(newFriend); if (tmpPtr != IntPtr.Zero) { neweTag = Marshal.PtrToStringAnsi(tmpPtr); } var oldeTag = ""; tmpPtr = LinphoneAPI.linphone_friend_get_ref_key(oldFriend); if (tmpPtr != IntPtr.Zero) { neweTag = Marshal.PtrToStringAnsi(tmpPtr); } LOG.Info(string.Format("### OnCardDAVContactUpdated New eTag: {0} Old: ETag: {1}", neweTag, oldeTag)); if (CardDAVContactUpdated != null) { var args = new CardDavContactEventArgs(CardDavContactEventArgs.CardDavAction.Update) { FriendListPtr = list, NewContactPtr = newFriend, ChangedContactPtr = oldFriend }; CardDAVContactUpdated(args); } }
private void LinphoneCardDavContactUpdated(CardDavContactEventArgs args) { }
private void LinphoneCardDavContactDeleted(CardDavContactEventArgs args) { if (args.ChangedContactPtr == IntPtr.Zero) return; IntPtr addressPtr = LinphoneAPI.linphone_friend_get_address(args.ChangedContactPtr); if (addressPtr == IntPtr.Zero) return; string dn = string.Empty; IntPtr tmpPtr = LinphoneAPI.linphone_address_get_display_name(addressPtr); if (tmpPtr != IntPtr.Zero) { dn = Marshal.PtrToStringAnsi(tmpPtr); } if (string.IsNullOrEmpty(dn)) return; string un = ""; tmpPtr = LinphoneAPI.linphone_address_get_username(addressPtr); if (tmpPtr != IntPtr.Zero) { un = Marshal.PtrToStringAnsi(tmpPtr); } string host = ""; tmpPtr = LinphoneAPI.linphone_address_get_domain(addressPtr); if (tmpPtr != IntPtr.Zero) { host = Marshal.PtrToStringAnsi(tmpPtr); } var cfgSipAddress = string.Format("{0}@{1}", un, host); VATRPContact contact = FindContact(new ContactID(cfgSipAddress, IntPtr.Zero)); if (contact != null) { RemoveFavoriteOption(contact); try { if (contact.Avatar.NotBlank() && File.Exists(contact.Avatar)) { File.Delete(contact.Avatar); } } catch (Exception ex) { Debug.WriteLine("failed to remove file: " + ex.Message); } RemoveContact(cfgSipAddress, false); } }
private void LinphoneCardDavContactCreated(CardDavContactEventArgs args) { if (args.NewContactPtr == IntPtr.Zero) return; IntPtr addressPtr = LinphoneAPI.linphone_friend_get_address(args.NewContactPtr); if (addressPtr == IntPtr.Zero) return; string dn = ""; IntPtr tmpPtr = LinphoneAPI.linphone_address_get_display_name(addressPtr); if (tmpPtr != IntPtr.Zero) { dn = Marshal.PtrToStringAnsi(tmpPtr); } string un = ""; tmpPtr = LinphoneAPI.linphone_address_get_username(addressPtr); if (tmpPtr != IntPtr.Zero) { un = Marshal.PtrToStringAnsi(tmpPtr); } string host = ""; tmpPtr = LinphoneAPI.linphone_address_get_domain(addressPtr); if (tmpPtr != IntPtr.Zero) { host = Marshal.PtrToStringAnsi(tmpPtr); } int port = LinphoneAPI.linphone_address_get_port(addressPtr); if (string.IsNullOrWhiteSpace(un)) return; var cfgSipaddress = port == 0 ? string.Format("{0}@{1}", un, host) : string.Format("{0}@{1}:{2}", un, host, port); var refKey = ""; IntPtr refKeyPtr = LinphoneAPI.linphone_friend_get_ref_key(args.NewContactPtr); if (refKeyPtr != IntPtr.Zero) refKey = Marshal.PtrToStringAnsi(refKeyPtr); if (String.IsNullOrEmpty(refKey)) { refKey = Guid.NewGuid().ToString(); LinphoneAPI.linphone_friend_set_ref_key(args.NewContactPtr, refKey); } VATRPContact contact = new VATRPContact(new ContactID(cfgSipaddress, IntPtr.Zero)) { DisplayName = dn, Fullname = dn.NotBlank() ? dn : un, Gender = "male", SipUsername = un, RegistrationName = cfgSipaddress, IsLinphoneContact = true, LinphoneRefKey = refKey }; AddContact(contact, string.Empty); }