public void ScrollToItem(CustomListViewItem item)
 {
     if (_items.Count > 0)
     {
         this.ScrollControlIntoView(item);
     }
 }
        private void AddMessage(CustomListViewItem item, bool selfSender)
        {
            CustomListViewItem lastItem = customListView1.GetLastItem();

            bool     insertDateInfo = false;
            DateTime itemDate       = (item as IChatMessageItem).Message.MessageDate;

            if (lastItem == null)
            {
                insertDateInfo = true;
            }
            else
            {
                if (itemDate.Date > (lastItem as IChatMessageItem).Message.MessageDate.Date)
                {
                    insertDateInfo = true;
                }
            }

            bool wasScrolledToBottom = customListView1.IsScrolledToBottom();

            if (insertDateInfo)
            {
                customListView1.AddItem(new ChatMessageInfoItem(new MessageItem(DateTime.UtcNow)));
            }

            customListView1.AddItem(item);

            if (_chatItem.Selected && (wasScrolledToBottom || selfSender))
            {
                customListView1.ScrollToBottom();
            }
        }
Esempio n. 3
0
 public void ScrollToBottom()
 {
     if (_items.Count > 0)
     {
         _lastScrolledItem = _items[_items.Count - 1];
         this.ScrollControlIntoView(_lastScrolledItem);
     }
 }
        public void SelectItem(CustomListViewItem item)
        {
            this.SuspendLayout();

            OnSelectItem(item);

            this.ResumeLayout();
        }
        public bool RemoveItem(CustomListViewItem item)
        {
            int index = _items.IndexOf(item);

            if (index > -1)
            {
                this.SuspendLayout();

                this.Controls.Remove(item);
                _items.Remove(item);

                item.Click       -= item_Clicked;
                item.DoubleClick -= item_DoubleClick;
                item.MouseUp     -= item_MouseUp;
                item.KeyPress    -= item_KeyPress;
                item.KeyUp       -= item_KeyUp;
                item.KeyDown     -= item_KeyDown;
                item.SortList    -= item_SortList;

                ReArrangeItems();

                if (_selectedItem == item)
                {
                    if (_items.Count > 0)
                    {
                        if (index > 0)
                        {
                            OnSelectItem(_items[index - 1]);
                        }
                        else
                        {
                            OnSelectItem(_items[index]);
                        }

                        if (ItemClick != null)
                        {
                            ItemClick(this, EventArgs.Empty);
                        }
                    }
                    else
                    {
                        _selectedItem = null;
                    }
                }

                this.ResumeLayout();

                return(true);
            }

            return(false);
        }
        private void ReArrangeItems()
        {
            if (_items.Count > 0)
            {
                int requiredItemWidth = this.Width - _borderPadding * 2 - this.Padding.Left - this.Padding.Right;

                if (base.VerticalScroll.Visible)
                {
                    requiredItemWidth -= 17;
                }

                bool doneOnce = false;

                while (true)
                {
                    //check width
                    if (requiredItemWidth != _items[0].Width)
                    {
                        for (int i = 0; i < _items.Count; i++)
                        {
                            _items[i].Width = requiredItemWidth;
                        }
                    }

                    //check item placement
                    _items[0].Location = new Point(this.Padding.Left, this.Padding.Top + this.AutoScrollPosition.Y);

                    for (int i = 1; i < _items.Count; i++)
                    {
                        CustomListViewItem previousControl = _items[i - 1];
                        CustomListViewItem currentControl  = _items[i];

                        currentControl.Location = new Point(previousControl.Location.X, previousControl.Location.Y + previousControl.Height + this.Padding.Bottom);
                    }

                    CustomListViewItem lastItem = _items[_items.Count - 1];

                    if (!doneOnce && !base.VerticalScroll.Visible && ((lastItem.Top + lastItem.Height) > this.Height))
                    {
                        requiredItemWidth -= 17;
                        doneOnce           = true;
                        continue;
                    }

                    break;
                }
            }
        }
        private bool OnSelectItem(CustomListViewItem item)
        {
            if (_selectedItem != item)
            {
                _selectedItem = item;

                foreach (CustomListViewItem control in _items)
                {
                    control.Selected = control.Equals(item);
                }

                return(true);
            }

            return(false);
        }
Esempio n. 8
0
        private void ReArrangeItems()
        {
            if (_items.Count > 0)
            {
                //find total height of items including padding
                int totalHeightOfItems = 0;

                foreach (CustomListViewItem control in _items)
                {
                    totalHeightOfItems += control.Height + (_borderPadding * 2);
                }

                int requiredItemWidth;

                if (totalHeightOfItems > this.Height)
                {
                    //this means scrolling is enabled
                    requiredItemWidth = this.Width - _borderPadding * 2 - this.Padding.Left - this.Padding.Right - 17;
                }
                else
                {
                    //this means scrolling is disabled
                    requiredItemWidth = this.Width - _borderPadding * 2 - this.Padding.Left - this.Padding.Right;
                }

                //check width
                if (requiredItemWidth != _items[0].Width)
                {
                    for (int i = 0; i < _items.Count; i++)
                    {
                        _items[i].Width = requiredItemWidth;
                    }
                }

                //check item placement
                _items[0].Location = new Point(this.Padding.Left, this.Padding.Top + this.AutoScrollPosition.Y);

                for (int i = 1; i < _items.Count; i++)
                {
                    CustomListViewItem previousControl = _items[i - 1];
                    CustomListViewItem currentControl  = _items[i];

                    currentControl.Location = new Point(previousControl.Location.X, previousControl.Location.Y + previousControl.Height + this.Padding.Bottom);
                }
            }
        }
        public CustomListViewItem AddItem(CustomListViewItem item)
        {
            this.SuspendLayout();

            item.SeparatorColor = this.SeparatorColor;

            item.Click       += item_Clicked;
            item.DoubleClick += item_DoubleClick;
            item.MouseUp     += item_MouseUp;
            item.KeyPress    += item_KeyPress;
            item.KeyUp       += item_KeyUp;
            item.KeyDown     += item_KeyDown;
            item.SortList    += item_SortList;

            if (_items.Count > 0)
            {
                item.Width = _items[_items.Count - 1].Width;
            }

            _items.Add(item);
            this.Controls.Add(item);

            if (_sortItems)
            {
                _items.Sort(delegate(CustomListViewItem item1, CustomListViewItem item2) { return(string.Compare(item1.ToString(), item2.ToString())); });
            }

            ReArrangeItems();

            this.ResumeLayout();

            if (_selectedItem == null)
            {
                _selectedItem = item;
                item.Selected = true;
            }

            if (_autoScrollToBottom)
            {
                this.ScrollControlIntoView(item);
            }

            return(item);
        }
Esempio n. 10
0
        private void AddMessage(CustomListViewItem item)
        {
            CustomListViewItem lastItem = customListView1.GetLastItem();

            bool showDate = false;

            if (lastItem == null)
            {
                showDate = true;
            }
            else
            {
                if (lastItem.GetType().Equals(typeof(ChatMessageItem)))
                {
                    if (DateTime.Now.Date > (lastItem as ChatMessageItem).MessageDate.Date)
                    {
                        showDate = true;
                    }
                }
                else if (lastItem.GetType().Equals(typeof(ChatMessageInfoItem)))
                {
                    ChatMessageInfoItem xItem = lastItem as ChatMessageInfoItem;

                    if (xItem.IsDateSet() && (DateTime.Now.Date > xItem.MessageDate.Date))
                    {
                        showDate = true;
                    }
                }
            }

            if (showDate)
            {
                customListView1.AddItem(new ChatMessageInfoItem(DateTime.Now.ToString("dddd, MMMM d, yyyy")));
            }

            customListView1.AddItem(item);

            if (_chatItem.Selected)
            {
                customListView1.ScrollToBottom();
            }
        }
        private void item_MouseUp(object sender, MouseEventArgs e)
        {
            CustomListViewItem obj = sender as CustomListViewItem;

            this.SuspendLayout();

            bool selected = OnSelectItem(obj);

            this.ResumeLayout();

            if (selected && (ItemClick != null))
            {
                ItemClick(sender, EventArgs.Empty);
            }

            if (ItemMouseUp != null)
            {
                ItemMouseUp(sender, e);
            }
        }
Esempio n. 12
0
        void item_MouseUp(object sender, MouseEventArgs e)
        {
            CustomListViewItem obj = sender as CustomListViewItem;

            this.SuspendLayout();

            bool selected = OnSelectItem(obj);

            this.ResumeLayout();

            if (selected && (ItemClick != null))
            {
                ItemClick(this, EventArgs.Empty);
            }

            e = new MouseEventArgs(e.Button, e.Clicks, obj.Location.X + e.X, obj.Location.Y + e.Y, e.Delta);

            if (ItemMouseUp != null)
            {
                ItemMouseUp(this, e);
            }
        }
        public void TrimListFromTop(int totalItemsToKeep)
        {
            if (_items.Count > totalItemsToKeep)
            {
                int totalItemsToRemove = _items.Count - totalItemsToKeep;
                List <CustomListViewItem> itemsToRemove = new List <CustomListViewItem>(totalItemsToRemove);

                for (int i = 0; i < totalItemsToRemove; i++)
                {
                    itemsToRemove.Add(_items[i]);
                }

                this.SuspendLayout();

                foreach (CustomListViewItem item in itemsToRemove)
                {
                    this.Controls.Remove(item);
                    _items.Remove(item);

                    item.Click       -= item_Clicked;
                    item.DoubleClick -= item_DoubleClick;
                    item.MouseUp     -= item_MouseUp;
                    item.KeyPress    -= item_KeyPress;
                    item.KeyUp       -= item_KeyUp;
                    item.KeyDown     -= item_KeyDown;
                    item.SortList    -= item_SortList;

                    if (_selectedItem == item)
                    {
                        _selectedItem = null;
                    }
                }

                ReArrangeItems();

                this.ResumeLayout();
            }
        }
        public void InsertItemsAtTop(IEnumerable <CustomListViewItem> items)
        {
            this.SuspendLayout();

            this.Controls.Clear();

            foreach (CustomListViewItem item in items)
            {
                item.SeparatorColor = this.SeparatorColor;

                item.Click       += item_Clicked;
                item.DoubleClick += item_DoubleClick;
                item.MouseUp     += item_MouseUp;
                item.KeyPress    += item_KeyPress;
                item.KeyUp       += item_KeyUp;
                item.KeyDown     += item_KeyDown;
                item.SortList    += item_SortList;
            }

            CustomListViewItem previousTopItem = null;

            if (_items.Count > 0)
            {
                previousTopItem = _items[0];
            }

            _items.InsertRange(0, items);
            this.Controls.AddRange(_items.ToArray());

            ReArrangeItems();

            if (previousTopItem != null)
            {
                this.ScrollControlIntoView(previousTopItem);
            }

            this.ResumeLayout();
        }
Esempio n. 15
0
        public CustomListViewItem AddItem(CustomListViewItem item)
        {
            this.SuspendLayout();

            item.SeparatorColor = this.SeparatorColor;

            item.Click += item_Clicked;
            item.DoubleClick += item_DoubleClick;
            item.MouseUp += item_MouseUp;
            item.KeyPress += item_KeyPress;
            item.KeyUp += item_KeyUp;
            item.KeyDown += item_KeyDown;
            item.SortList += item_SortList;

            if (_items.Count > 0)
                item.Width = _items[_items.Count - 1].Width;

            _items.Add(item);
            this.Controls.Add(item);

            if (_sortItems)
                _items.Sort(delegate(CustomListViewItem item1, CustomListViewItem item2) { return string.Compare(item1.ToString(), item2.ToString()); });

            ReArrangeItems();

            this.ResumeLayout();

            if (_selectedItem == null)
            {
                _selectedItem = item;
                item.Selected = true;
            }

            if (_autoScrollToBottom)
                this.ScrollControlIntoView(item);

            return item;
        }
Esempio n. 16
0
 public bool RemoveItem(CustomListViewItem item)
 {
     return(customListView1.RemoveItem(item));
 }
Esempio n. 17
0
 public CustomListViewItem AddItem(CustomListViewItem item)
 {
     return(customListView1.AddItem(item));
 }
Esempio n. 18
0
 public bool RemoveItem(CustomListViewItem item)
 {
     return customListView1.RemoveItem(item);
 }
Esempio n. 19
0
 public CustomListViewItem AddItem(CustomListViewItem item)
 {
     return customListView1.AddItem(item);
 }
Esempio n. 20
0
 public void ScrollToBottom()
 {
     if (_items.Count > 0)
     {
         _lastScrolledItem = _items[_items.Count - 1];
         this.ScrollControlIntoView(_lastScrolledItem);
     }
 }
Esempio n. 21
0
        public void SelectItem(CustomListViewItem item)
        {
            this.SuspendLayout();

            OnSelectItem(item);

            this.ResumeLayout();
        }
Esempio n. 22
0
        private bool OnSelectItem(CustomListViewItem item)
        {
            if (_selectedItem != item)
            {
                _selectedItem = item;

                foreach (CustomListViewItem control in _items)
                    control.Selected = control.Equals(item);

                return true;
            }

            return false;
        }
Esempio n. 23
0
        public bool RemoveItem(CustomListViewItem item)
        {
            int index = _items.IndexOf(item);
            if (index > -1)
            {
                this.SuspendLayout();

                this.Controls.Remove(item);
                _items.Remove(item);

                ReArrangeItems();

                item.Click -= item_Clicked;
                item.DoubleClick -= item_DoubleClick;
                item.MouseUp -= item_MouseUp;
                item.KeyPress -= item_KeyPress;
                item.KeyUp -= item_KeyUp;
                item.KeyDown -= item_KeyDown;
                item.SortList -= item_SortList;

                if (_selectedItem == item)
                {
                    if (_items.Count > 0)
                    {
                        if (index > 0)
                            OnSelectItem(_items[index - 1]);
                        else
                            OnSelectItem(_items[index]);

                        if (ItemClick != null)
                            ItemClick(this, EventArgs.Empty);
                    }
                    else
                    {
                        _selectedItem = null;
                    }
                }

                this.ResumeLayout();

                return true;
            }

            return false;
        }
Esempio n. 24
0
        private void AddMessage(CustomListViewItem item)
        {
            CustomListViewItem lastItem = customListView1.GetLastItem();

            bool showDate = false;

            if (lastItem == null)
                showDate = true;
            else
            {
                if (lastItem.GetType().Equals(typeof(ChatMessageItem)))
                {
                    if (DateTime.Now.Date > (lastItem as ChatMessageItem).MessageDate.Date)
                        showDate = true;
                }
                else if (lastItem.GetType().Equals(typeof(ChatMessageInfoItem)))
                {
                    ChatMessageInfoItem xItem = lastItem as ChatMessageInfoItem;

                    if (xItem.IsDateSet() && (DateTime.Now.Date > xItem.MessageDate.Date))
                        showDate = true;
                }
            }

            if (showDate)
                customListView1.AddItem(new ChatMessageInfoItem(DateTime.Now.ToString("dddd, MMMM d, yyyy")));

            customListView1.AddItem(item);

            if (_chatItem.Selected)
                customListView1.ScrollToBottom();
        }