public void Initialize(double width, NewsActivityLikes activityLikes, List <User> users, bool addSeparator) { List <User> intersection = NewsActivityLikesUC.GetIntersection((IReadOnlyCollection <User>)users, (IReadOnlyCollection <long>)activityLikes.user_ids); if (intersection == null || intersection.Count == 0) { return; } int count = intersection.Count; string photoMax1 = intersection[0].photo_max; if (!string.IsNullOrEmpty(photoMax1)) { ((UIElement)this.gridUser1).Visibility = Visibility.Visible; this._userImageUri1 = new Uri(photoMax1); } int num1 = 1; if (count > num1) { string photoMax2 = intersection[1].photo_max; if (!string.IsNullOrEmpty(photoMax2)) { ((UIElement)this.gridUser2).Visibility = Visibility.Visible; this._userImageUri2 = new Uri(photoMax2); } } int num2 = 2; if (count > num2) { string photoMax2 = intersection[2].photo_max; if (!string.IsNullOrEmpty(photoMax2)) { ((UIElement)this.gridUser3).Visibility = Visibility.Visible; this._userImageUri3 = new Uri(photoMax2); } } int userImagesWidth = NewsActivityLikesUC.CalculateUserImagesWidth(count); double textWidth = NewsActivityLikesUC.CalculateTextWidth(width, userImagesWidth); Canvas.SetLeft((UIElement)this.textBlockCaption, (double)(16 + userImagesWidth + 12)); ((FrameworkElement)this.textBlockCaption).Width = textWidth; this.textBlockCaption.Text = (NewsActivityLikesUC.GetCaptionText(activityLikes, (IReadOnlyCollection <User>)users)); if (((FrameworkElement)this.textBlockCaption).ActualHeight <= 26.0) { this._height = this._height - 26.0; } ((FrameworkElement)this.canvas).Width = width; ((FrameworkElement)this.canvas).Height = this._height; ((FrameworkElement)this.canvasBackground).Width = width; ((FrameworkElement)this.canvasBackground).Height = this._height; ((FrameworkElement)this.gridImages).Height = this._height; if (!addSeparator) { return; } ((UIElement)this.rectSeparator).Visibility = Visibility.Visible; Canvas.SetTop((UIElement)this.rectSeparator, ((FrameworkElement)this.canvas).Height - ((FrameworkElement)this.rectSeparator).Height); }
private static int CalculateUserImagesWidth(NewsActivityLikes activityLikes) { List <long> longList = activityLikes != null ? activityLikes.user_ids : null; if (longList == null || longList.Count == 0) { return(0); } return(NewsActivityLikesUC.CalculateUserImagesWidth(Math.Min(activityLikes.user_ids.Count, 3))); }
private double CreateActivityItem(NewsActivity activity, bool addSeparator) { VirtualizableItemBase virtualizableItemBase = (VirtualizableItemBase)null; switch (activity.Type) { case NewsActivityType.likes: virtualizableItemBase = this._createdItems.FirstOrDefault <KeyValuePair <NewsActivity, VirtualizableItemBase> >((Func <KeyValuePair <NewsActivity, VirtualizableItemBase>, bool>)(i => { if (i.Key.likes != null) { return(i.Key.likes == activity.likes); } return(false); })).Value; break; case NewsActivityType.comment: virtualizableItemBase = this._createdItems.FirstOrDefault <KeyValuePair <NewsActivity, VirtualizableItemBase> >((Func <KeyValuePair <NewsActivity, VirtualizableItemBase>, bool>)(i => { if (i.Key.comment != null) { return(i.Key.comment == activity.comment); } return(false); })).Value; break; } if (virtualizableItemBase == null) { switch (activity.Type) { case NewsActivityType.likes: virtualizableItemBase = (VirtualizableItemBase) new UCItem(this.Width, new Thickness(), (Func <UserControlVirtualizable>)(() => { VKClient.Common.UC.NewsActivityLikesUC newsActivityLikesUc = new VKClient.Common.UC.NewsActivityLikesUC(); double width = this.Width; NewsActivityLikes likes = activity.likes; List <User> users = this._users; int num = addSeparator ? 1 : 0; newsActivityLikesUc.Initialize(width, likes, users, num != 0); EventHandler <System.Windows.Input.GestureEventArgs> eventHandler = (EventHandler <System.Windows.Input.GestureEventArgs>)((sender, e) => { e.Handled = (true); Action likesTapAction = this._likesTapAction; if (likesTapAction == null) { return; } likesTapAction(); }); ((UIElement)newsActivityLikesUc).Tap += (eventHandler); return((UserControlVirtualizable)newsActivityLikesUc); }), (Func <double>)(() => VKClient.Common.UC.NewsActivityLikesUC.CalculateHeight(this.Width, activity.likes, this._users)), null, 0.0, false); break; case NewsActivityType.comment: virtualizableItemBase = (VirtualizableItemBase) new UCItem(this.Width, new Thickness(), (Func <UserControlVirtualizable>)(() => { VKClient.Common.UC.NewsActivityCommentUC activityCommentUc = new VKClient.Common.UC.NewsActivityCommentUC(); NewsActivityComment comment = activity.comment; List <User> users = this._users; List <Group> groups = this._groups; int num = addSeparator ? 1 : 0; activityCommentUc.Initialize(comment, (IEnumerable <User>)users, (IEnumerable <Group>)groups, num != 0); EventHandler <System.Windows.Input.GestureEventArgs> eventHandler = (EventHandler <System.Windows.Input.GestureEventArgs>)((sender, e) => { e.Handled = (true); Action commentsTapAction = this._commentsTapAction; if (commentsTapAction == null) { return; } commentsTapAction(); }); ((UIElement)activityCommentUc).Tap += (eventHandler); return((UserControlVirtualizable)activityCommentUc); }), (Func <double>)(() => VKClient.Common.UC.NewsActivityCommentUC.CalculateHeight(activity.comment)), null, 0.0, false); break; default: return(0.0); } this.VirtualizableChildren.Add((IVirtualizable)virtualizableItemBase); if (!this._createdItems.ContainsKey(activity)) { this._createdItems.Add(activity, virtualizableItemBase); } else { this._createdItems[activity] = virtualizableItemBase; } } return(virtualizableItemBase.FixedHeight); }
public static double CalculateHeight(double width, NewsActivityLikes activityLikes, List <User> users) { int userImagesWidth = NewsActivityLikesUC.CalculateUserImagesWidth(activityLikes); return(TextBlockMeasurementHelper.MeasureHeight(NewsActivityLikesUC.CalculateTextWidth(width, userImagesWidth), NewsActivityLikesUC.GetCaptionText(activityLikes, (IReadOnlyCollection <User>)users), new FontFamily("Segoe WP"), 18.0, 26.0, (LineStackingStrategy)1, (TextWrapping)2, new Thickness()) > 26.0 ? 82.0 : 56.0); }
private static string GetCaptionText(NewsActivityLikes activityLikes, IReadOnlyCollection <User> users) { return(activityLikes.text); }