/// <summary> /// Opens the contact card popup /// Does: Closed -> Non expanded, or Non expanded -> Expanded /// </summary> /// <returns>true if the contact card has been shown</returns> private bool OpenContactCardPopup() { if (this.CanShowContactCard) { this.CloseSearchPopup(); if (!this.PresenceIndicator.ContactPopupCard.IsOpen) { var hoverOnTarget = this.PresenceIndicator.ContactPopupCard.HoverOnTarget; if (hoverOnTarget != null) { FrameworkTools.InvokeEventHandlers( hoverOnTarget, Mouse.MouseMoveEvent, new MouseEventArgs(Mouse.PrimaryDevice, 0)); } } else { var clickTarget = this.PresenceIndicator.ContactPopupCard.SingleClickActionTarget; if (clickTarget != null) { FrameworkTools.InvokeEventHandlers(clickTarget, ButtonBase.ClickEvent); } } return(true); } return(false); }
/// <summary> /// Closes the contact card popup /// Does: Expanded -> Non expanded, or Non expanded -> closed /// </summary> /// <param name="closeAll"> /// If tru alwys closes completely /// </param> private void CloseContactCardPopup(bool closeAll = false) { var popup = this.PresenceIndicator.ContactPopupCard; if ((popup == null) || !popup.IsOpen || popup.IsPinned) { return; } // issue force close event by faking a sign off event popup.ForEachVisualChild(delegate(DependencyObject visualChild) { var button = visualChild as SplitButton; if (button != null) { button.IsMenuOpen = false; } }); if (closeAll || !popup.IsExpanded) { var hoverOffTarget = this.PresenceIndicator.ContactPopupCard.HoverOffTarget; if (hoverOffTarget != null) { FrameworkTools.InvokeEventHandlers( hoverOffTarget, Mouse.MouseLeaveEvent, new MouseEventArgs(Mouse.PrimaryDevice, 0)); } } popup.SelectedTabIndex = 0; popup.IsExpanded = false; popup.IsFloating = false; popup.IsPinned = false; popup.UpdateLayout(); }