コード例 #1
0
        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);
        }
コード例 #2
0
        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)));
        }
コード例 #3
0
ファイル: ActivityItem.cs プロジェクト: Makzz90/VKClient_re
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 private static string GetCaptionText(NewsActivityLikes activityLikes, IReadOnlyCollection <User> users)
 {
     return(activityLikes.text);
 }