Esempio n. 1
0
 private void GenerateComments(double topMargin)
 {
     if (this._commentsCountItem == null)
     {
         this._commentsCountItem = CommentsItemsGeneratorHelper.CreateCommentsCountItem(this.Width, new Func <string>(this.GetCommentsHeaderText), 0.0, Application.Current.Resources["PhoneNewsBackgroundBrush"] as SolidColorBrush);
         this.VirtualizableChildren.Add((IVirtualizable)this._commentsCountItem);
     }
     this._commentsCountItem.ViewMargin = new Thickness(0.0, topMargin, 0.0, 0.0);
     topMargin += this._commentsCountItem.FixedHeight;
     if (this._commentItems == null)
     {
         this._commentItems = new List <CommentItem>();
         Comments comments = this._newsItemData.NewsItem.comments;
         if ((comments != null ? comments.list :  null) != null)
         {
             using (IEnumerator <Comment> enumerator = ((IEnumerable <Comment>)ListExtensions.TakeLast <Comment>(Enumerable.OrderBy <Comment, int>(new List <Comment>((IEnumerable <Comment>) this._newsItemData.NewsItem.comments.list), (Func <Comment, int>)(c => c.date)), 1)).GetEnumerator())
             {
                 while (((IEnumerator)enumerator).MoveNext())
                 {
                     Comment     comment     = enumerator.Current;
                     Stopwatch   stopwatch   = Stopwatch.StartNew();
                     CommentItem commentItem = new CommentItem(448.0, new Thickness(), LikeObjectType.comment, null, null, null, this._newsItemData.NewsItem.source_id, comment, Enumerable.FirstOrDefault <User>(this._newsItemData.Profiles, (Func <User, bool>)(u => u.uid == comment.from_id)), null, (Group)Enumerable.FirstOrDefault <Group>(this._newsItemData.Groups, (Func <Group, bool>)(g => g.id == comment.from_id)), null, "", "", null, true, false, "");
                     stopwatch.Stop();
                     this.VirtualizableChildren.Add((IVirtualizable)commentItem);
                     commentItem.ViewMargin = new Thickness(16.0, topMargin, 0.0, 0.0);
                     topMargin += commentItem.FixedHeight + 16.0;
                     this._commentItems.Add(commentItem);
                 }
             }
         }
     }
     else
     {
         foreach (CommentItem commentItem in this._commentItems)
         {
             commentItem.ViewMargin = new Thickness(16.0, topMargin, 0.0, 0.0);
             topMargin += commentItem.FixedHeight + 16.0;
         }
     }
     this._fixedHeight = topMargin;
 }
Esempio n. 2
0
        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);
        }