Exemplo n.º 1
0
 private void CListView_MouseDown(object sender, MouseEventArgs e)
 {
     cursor    = new Point(e.X, e.Y);
     mouseDown = true;
     try
     {
         if ((Control.ModifierKeys & Keys.Control) != Keys.Control)
         {
             foreach (ListViewItem d in Items)
             {
                 d.Selected = false;
             }
         }
         for (int i = ScrollY; i < Items.Count; i++)
         {
             CListViewItem Item = (CListViewItem)Items[i];
             int           y    = (i - scrollY + 1) * ItemHeight;
             if (e.Y >= y && e.Y <= y + ItemHeight)
             {
                 Item.Selected = true;
                 this.Refresh();
             }
         }
     }
     catch
     {
     }
 }
Exemplo n.º 2
0
 void CListView_DragDrop(object sender, DragEventArgs e)
 {
     HoveredElement = GetElementUnderPosition(this.PointToClient(new Point(e.X, e.Y)));
     this.mouseDown = false;
     if (DragElements.Count > 0)
     {
         if (HoveredElement != null && AllowsReoreder)
         {
             CListViewItem    context    = DragElements[0];
             CListViewItem    targetSite = HoveredElement;
             List <int>       indexes    = new List <int>();
             ReorderEventArgs args       = new ReorderEventArgs();
             args.Elements    = DragElements;
             args.Position    = this.Items.IndexOf(DragElements[0]);
             args.NewPosition = this.Items.IndexOf(HoveredElement);
             if (BeforeReorder != null)
             {
                 BeforeReorder(this, args);
             }
             if (BeforeReorder == null || !args.Cancel)
             {
                 // Reorder the elements in reality
                 foreach (CListViewItem elm in DragElements)
                 {
                     indexes.Add(this.Items.IndexOf(elm));
                     this.Items.Remove(elm);
                 }
                 try
                 {
                     for (int i = 0; i < DragElements.Count; i++)
                     {
                         CListViewItem element = DragElements[i];
                         this.Items.Insert(i + args.NewPosition, element);
                     }
                 }
                 catch (Exception ex)
                 {
                     for (int i = 0; i < DragElements.Count; i++)
                     {
                         CListViewItem element = DragElements[i];
                         this.Items.Insert(i + args.Position, element);
                     }
                 }
                 args.Indexes = indexes.ToArray();
                 if (Reordered != null)
                 {
                     Reordered(this, args);
                 }
             }
         }
         this.Refresh();
     }
     this.Parent.Refresh();
 }
Exemplo n.º 3
0
 void CListView_MouseDoubleClick(object sender, MouseEventArgs e)
 {
     for (int i = ScrollY; i < Items.Count; i++)
     {
         CListViewItem Item = (CListViewItem)Items[i];
         int           y    = (i - scrollY + 1) * ItemHeight;
         if (e.Y >= y && e.Y <= y + ItemHeight)
         {
             if (Item.Track != null)
             {
                 Item.Track.Play();
             }
         }
     }
 }
Exemplo n.º 4
0
        void CListView_DragOver(object sender, DragEventArgs e)
        {
            HoveredElement = GetElementUnderPosition(this.PointToClient(new Point(e.X, e.Y)));
            BufferedGraphicsContext g = new BufferedGraphicsContext();
            BufferedGraphics        i = g.Allocate(this.CreateGraphics(), new Rectangle(0, 0, this.Width, this.Height));

            this.DrawCore(i.Graphics, true);

            i.Graphics.DrawLine(new Pen(Color.White), new Point(0, ItemHeight * (this.Items.IndexOf(HoveredElement) + 1)), new Point(this.Width, ItemHeight * (this.Items.IndexOf(HoveredElement) + 1)));
            i.Render();


            if (this.AllowsReoreder || true)
            {
                e.Effect = DragDropEffects.Copy;
            }
        }
Exemplo n.º 5
0
        public CListViewItem AddItem(CListViewItem Item)
        {
            CListViewItem item = Item;

            if (ItemAdded != null)
            {
                ItemAdded.Invoke(this, new ItemsAddedArgs(item));
            }

            if (item.Index % 2 == 1)
            {
                item.BackColor = AlternativeColor;
            }
            item.Spawn = this;
            this.Items.Add(item);

            return(item);
        }
Exemplo n.º 6
0
        public CListViewItem GetElementUnderPosition(Point pos)
        {
            for (int i = 0; i < this.Items.Count; i++)
            {
                try
                {
                    CListViewItem D = (CListViewItem)Items[i];

                    int top = (i + 1) * ItemHeight;
                    if (pos.Y > top && pos.Y < top + itemHeight)
                    {
                        return(D);
                    }
                }
                catch
                {
                }
            }
            return(null);
        }
Exemplo n.º 7
0
        void CListView_DragOver(object sender, DragEventArgs e)
        {
            HoveredElement = GetElementUnderPosition(this.PointToClient(new Point(e.X, e.Y)));
            BufferedGraphicsContext g = new BufferedGraphicsContext();
            BufferedGraphics i = g.Allocate(this.CreateGraphics(), new Rectangle(0, 0, this.Width, this.Height));
            this.DrawCore(i.Graphics, true);

            i.Graphics.DrawLine(new Pen(Color.White), new Point(0, ItemHeight * (this.Items.IndexOf(HoveredElement) + 1)), new Point(this.Width, ItemHeight * (this.Items.IndexOf(HoveredElement) + 1)));
            i.Render();

            if (this.AllowsReoreder || true)
            {
                e.Effect = DragDropEffects.Copy;
            }
        }
Exemplo n.º 8
0
        void CListView_DragDrop(object sender, DragEventArgs e)
        {
            HoveredElement = GetElementUnderPosition(this.PointToClient(new Point(e.X, e.Y)));
            this.mouseDown = false;
            if (DragElements.Count > 0)
            {
                if (HoveredElement != null && AllowsReoreder)
                {

                    CListViewItem context = DragElements[0];
                    CListViewItem targetSite = HoveredElement;
                    List<int> indexes = new List<int>();
                    ReorderEventArgs args = new ReorderEventArgs();
                    args.Elements = DragElements;
                    args.Position = this.Items.IndexOf(DragElements[0]);
                    args.NewPosition = this.Items.IndexOf(HoveredElement);
                    if (BeforeReorder != null)
                        BeforeReorder(this, args);
                    if (BeforeReorder == null || !args.Cancel)
                    {

                        // Reorder the elements in reality
                        foreach (CListViewItem elm in DragElements)
                        {
                            indexes.Add(this.Items.IndexOf(elm));
                            this.Items.Remove(elm);
                        }
                        try
                        {
                            for (int i = 0; i < DragElements.Count; i++)
                            {
                                CListViewItem element = DragElements[i];
                                this.Items.Insert(i + args.NewPosition, element);
                            }
                        }
                        catch (Exception ex)
                        {
                            for (int i = 0; i < DragElements.Count; i++)
                            {
                                CListViewItem element = DragElements[i];
                                this.Items.Insert(i + args.Position, element);
                            }
                        }
                        args.Indexes = indexes.ToArray();
                        if (Reordered != null)
                            Reordered(this, args);
                    }
                }
                this.Refresh();

            }
            this.Parent.Refresh();
        }
Exemplo n.º 9
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            Cursor = Cursors.Default;
            if(mouseDown)
            if ((Diff(e.X, cursor.X) > 10 || Diff(e.Y, cursor.Y) > 10) && this.AllowsReoreder)
            {
                HoveredElement = GetElementUnderPosition(new Point(e.X, e.Y));
                StringBuilder sb = new StringBuilder();
                this.DragElements.Clear();
                foreach (CListViewItem i in SelectedTracks)
                {
                    sb.Append(i.Track.Uri);
                    DragElements.Add(i);
                }
                DataObject d = new DataObject(System.Windows.Forms.DataFormats.Text, sb);

                DoDragDrop(d, DragDropEffects.Copy);
            }
            else
            {
            }
               /* for (int i = scrollY; i < scrollY + ContainingItems; i++)
            {
                try
                {
                    ListViewItem D = Items[i];
                    int left = 0;
                    int x = 0;
                    int top = (i + scrollY + 1) * ItemHeight;
                    foreach (ColumnHeader d in Columns)
                    {

                        if (D.SubItems[i].Text.StartsWith("$") && e.X >= left && e.X <= left + d.Width && e.Y <= top && e.Y >= top + ItemHeight)
                        {
                            Cursor = Cursors.Hand;
                        }

                        left += d.Width;
                        x++;
                    }
                }
                catch
                {
                }
            }*/
        }
Exemplo n.º 10
0
        public CListViewItem AddItem(CListViewItem Item)
        {
            CListViewItem item = Item;
            if (ItemAdded != null)
                ItemAdded.Invoke(this, new ItemsAddedArgs(item));

            if (item.Index % 2 == 1)
            {
                item.BackColor = AlternativeColor;
            }
            item.Spawn = this;
            this.Items.Add(item);

            return item;
        }
Exemplo n.º 11
0
        void DrawCore(Graphics g, bool final)
        {
            int ColumnCount = Columns.Count;

            int index = 0;

            g.FillRectangle(new SolidBrush(this.BackColor), new Rectangle(0, 0, this.Width, this.Height));
            for (int i = 1; i < this.Height / ItemHeight; i++)
            {
                if (i % 2 == 1)
                {
                    g.FillRectangle(new SolidBrush(AlternativeColor), new Rectangle(0, i * ItemHeight, this.Width, ItemHeight));
                }
            }
            int Containing = ContainingItems;
            int CI         = (Containing > Count - scrollY ? Containing : Count);

            for (int i = scrollY; i < scrollY + CI; i++)
            {
                int top = (i - scrollY + 1) * ItemHeight;
                if (i > Count)
                {
                    continue;
                }
                CListViewItem Item = (CListViewItem)Items[i];



                if (Item.Selected)
                {
                    g.FillRectangle(new SolidBrush(SelectedBlock.BackColor), new Rectangle(0, top, this.Width, ItemHeight));
                }
                if (Item.Playing)
                {
                    g.FillRectangle(new SolidBrush(PlayingBlock.BackColor), new Rectangle(0, top, this.Width, ItemHeight));
                }


                int left = 0;
                for (var x = 0; x < ColumnCount; x++)
                {
                    var   d  = Columns[x];
                    Color FG = Item.Selected && !Item.Playing ? SelectedBlock.ForeColor : Item.Playing ? PlayingBlock.ForeColor : Block.ForeColor;
                    try
                    {
                        if (x < Item.SubItems.Count)
                        {
                            String P = Item.SubItems[x].Text;
                            float  w = g.MeasureString(P, this.Font).Width;
                            if ((int)w > d.Width)
                            {
                                StringBuilder R = new StringBuilder();

                                foreach (Char c in P)
                                {
                                    R.Append(c);
                                    float r = TextRenderer.MeasureText(R.ToString(), this.Font).Width;
                                    if ((int)r > d.Width)
                                    {
                                        R.Remove(R.Length - 4, 1);
                                        P = R.ToString() + "...";
                                        break;
                                    }
                                }
                            }
                            P = P.TrimStart('$');
                            this.Block.Stylesheet.DrawString(g, P, this.Font, new SolidBrush(FG), new Rectangle(2 + left, top + GetItemPosition(ItemHeight, 16), 300, 20), final);
                            left += d.Width;
                        }
                    }
                    catch
                    { }
                }
                if (UniDraw != null)
                {
                    UniDraw(this, g, Item);
                }
            }
            int leftx = 0;

            g.DrawImage(HeaderBlock.BackgroundImage, new Rectangle(0, 0, this.Width, ItemHeight));
            for (var x = 0; x < ColumnCount; x++)
            {
                var d = Columns[x];

                g.DrawString(d.Text, HeaderBlock.Font, new SolidBrush(HeaderBlock.TextShadowColor), new Point(leftx + 2, GetItemPosition(ItemHeight, 18) + 2));
                g.DrawString(d.Text, HeaderBlock.Font, new SolidBrush(HeaderBlock.ForeColor), new Point(leftx + 2, GetItemPosition(ItemHeight, 18) + 1));
                leftx += d.Width;
                // g.DrawImage(MediaChrome.Resources.columnlimiter, new Rectangle(leftx - 2, 0, 2, ItemHeight));
            }
        }
Exemplo n.º 12
0
    public void Init()
    {
        Clear();

        if (m_scItemList == null || m_pfItem == null)
        {
            return;
        }

        m_ScrollView       = m_scItemList.GetComponent <UIScrollView>();
        m_Panel            = m_scItemList.GetComponent <UIPanel>();
        m_Panel.onClipMove = OnMove;
        if (m_Scrollbar != null)
        {
            EventDelegate.Add(m_Scrollbar.onChange, OnChangeScrollBar);
            ShowScrollbars(false);
        }

        Vector4 clip     = m_Panel.baseClipRegion;
        Vector2 viewSize = new Vector2(clip.z, clip.w);

        m_fVIewYSize = viewSize.y;

        m_pfItem.SetActive(false);

        // original
        //Bounds bound = NGUIMath.CalculateRelativeWidgetBounds(m_Item.transform, true);
        //m_ItemSize = new Vector2(bound.size.x, bound.size.y);

        // modified[blueasa /2015-06-23]
        BoxCollider boxCollider = m_pfItem.GetComponent <BoxCollider>();

        m_ItemSize = new Vector2(boxCollider.size.x, boxCollider.size.y);

        m_TotalItemSize = m_ItemSize + m_ItemPadding;

        m_columnCount        = Mathf.RoundToInt(viewSize.x / m_TotalItemSize.x);
        m_rowCount           = Mathf.RoundToInt(viewSize.y / m_TotalItemSize.y);
        m_MaxItemCountInView = m_columnCount * m_rowCount;

        if (m_ScrollView.movement == UIScrollView.Movement.Horizontal)
        {
            m_bHorizontal = true;
            m_columnCount = m_columnCount + m_AddRowORColumn;

            m_InitPosition.x = -(viewSize.x * 0.5f) + (m_TotalItemSize.x / 2.0f);
            m_InitPosition.y = m_TotalItemSize.y * (m_rowCount - 1) / 2.0f;
            m_InitBound      = -(viewSize.x + m_ItemPadding.x) * 0.5f;
        }
        else if (m_ScrollView.movement == UIScrollView.Movement.Vertical)
        {
            m_bHorizontal = false;
            m_rowCount    = m_rowCount + m_AddRowORColumn;

            m_InitPosition.x = -m_TotalItemSize.x * (m_columnCount - 1) / 2.0f;
            m_InitPosition.y = (viewSize.y / 2.0f) - (m_TotalItemSize.y / 2.0f);
            m_InitBound      = (viewSize.y - m_ItemPadding.y) * 0.5f;
        }
        m_MaxItemCount = m_columnCount * m_rowCount;

        m_ExtentX2 = m_TotalItemSize.x * m_columnCount;
        m_ExtentY2 = m_TotalItemSize.y * m_rowCount;
        m_ExtentX  = m_ExtentX2 * 0.5f;
        m_ExtentY  = m_ExtentY2 * 0.5f;

        // 아이템 생성.
        CListViewItem item = null;

        for (int i = 0; i < m_MaxItemCount; ++i)
        {
            item         = new CListViewItem();
            item.m_Index = i;

            if (null != m_goCreatedItem && m_goCreatedItem.Length > i)
            {
                item.m_GameObject = m_goCreatedItem[i];
            }
            else
            {
                item.m_GameObject = NGUITools.AddChild(m_scItemList, m_pfItem);
            }
            m_listItem.AddLast(item);
        }

        AddEvent();

        Reset();

        // 스크롤바 초기화[blueasa / 2018-07-26]
        if (null != m_Scrollbar)
        {
            UpdateScrollBars();
        }
    }
Exemplo n.º 13
0
    private void Update()
    {
        int           realIndex = 0;
        bool          flag      = true;
        float         distance  = 0.0f;
        Vector3       pos;
        Vector4       clip  = m_Panel.finalClipRegion;
        Transform     trans = null;
        CListViewItem item  = null;

        // 앵커로 인한 view 사이즈 변동 확인
        if (m_fVIewYSize != m_Panel.baseClipRegion.w)
        {
            if (false == m_bInitOnMovePanel)
            {
                Init();
            }
//             else
//                 Refresh();
        }

        if (m_bHorizontal)
        {
            while (flag)
            {
                item     = m_listItem.First.Value;
                trans    = item.m_GameObject.transform;
                pos      = trans.localPosition;
                distance = pos.x - clip.x;

                if (distance < -m_ExtentX)
                {
                    for (int i = 0; i < m_rowCount; ++i)
                    {
                        item  = m_listItem.First.Value;
                        trans = item.m_GameObject.transform;
                        pos   = trans.localPosition;

                        realIndex = item.m_Index + m_MaxItemCount;
                        if (i == 0 && realIndex >= OnGetItemCount())
                        {
                            flag = false;
                            break;
                        }

                        item.m_Index        = realIndex;
                        pos.x              += m_ExtentX2;
                        trans.localPosition = pos;
                        trans.name          = realIndex.ToString();

                        if (realIndex < OnGetItemCount())
                        {
                            OnUpdateItem(realIndex, item.m_GameObject);
                            item.m_GameObject.SetActive(true);
                        }
                        else
                        {
                            item.m_GameObject.SetActive(false);
                        }

                        m_listItem.RemoveFirst();
                        m_listItem.AddLast(item);
                        m_ScrollView.InvalidateBounds();
                    }
                }
                else
                {
                    break;
                }
            }

            flag = true;
            while (flag)
            {
                item     = m_listItem.Last.Value;
                trans    = item.m_GameObject.transform;
                pos      = trans.localPosition;
                distance = pos.x - clip.x;

                if (distance > m_ExtentX)
                {
                    for (int i = 0; i < m_rowCount; ++i)
                    {
                        item  = m_listItem.Last.Value;
                        trans = item.m_GameObject.transform;
                        pos   = trans.localPosition;

                        realIndex = item.m_Index - m_MaxItemCount;
                        if (realIndex >= 0 && realIndex < OnGetItemCount())
                        {
                            item.m_Index        = realIndex;
                            pos.x              -= m_ExtentX2;
                            trans.localPosition = pos;
                            trans.name          = realIndex.ToString();

                            OnUpdateItem(realIndex, item.m_GameObject);

                            item.m_GameObject.SetActive(true);
                            m_listItem.RemoveLast();
                            m_listItem.AddFirst(item);
                            m_ScrollView.InvalidateBounds();
                        }
                        else
                        {
                            flag = false;
                            break;
                        }
                    }
                }
                else
                {
                    break;
                }
            }
        }
        else
        {
            while (flag)
            {
                item     = m_listItem.First.Value;
                trans    = item.m_GameObject.transform;
                pos      = trans.localPosition;
                distance = pos.y - clip.y;

                if (distance > m_ExtentY)
                {
                    for (int i = 0; i < m_columnCount; ++i)
                    {
                        item  = m_listItem.First.Value;
                        trans = item.m_GameObject.transform;
                        pos   = trans.localPosition;

                        realIndex = item.m_Index + m_MaxItemCount;
                        if (i == 0 && realIndex >= OnGetItemCount())
                        {
                            flag = false;
                            break;
                        }

                        item.m_Index        = realIndex;
                        pos.y              -= m_ExtentY2;
                        trans.localPosition = pos;
                        trans.name          = realIndex.ToString();

                        if (realIndex < OnGetItemCount())
                        {
                            OnUpdateItem(realIndex, item.m_GameObject);
                            item.m_GameObject.SetActive(true);
                        }
                        else
                        {
                            item.m_GameObject.SetActive(false);
                        }

                        m_listItem.RemoveFirst();
                        m_listItem.AddLast(item);
                        m_ScrollView.InvalidateBounds();
                    }
                }
                else
                {
                    break;
                }
            }

            flag = true;
            while (flag)
            {
                item     = m_listItem.Last.Value;
                trans    = item.m_GameObject.transform;
                pos      = trans.localPosition;
                distance = pos.y - clip.y;

                if (distance < -m_ExtentY)
                {
                    for (int i = 0; i < m_columnCount; ++i)
                    {
                        item  = m_listItem.Last.Value;
                        trans = item.m_GameObject.transform;
                        pos   = trans.localPosition;

                        realIndex = int.Parse(trans.name) - m_MaxItemCount;
                        if (realIndex >= 0 && realIndex < OnGetItemCount())
                        {
                            item.m_Index        = realIndex;
                            pos.y              += m_ExtentY2;
                            trans.localPosition = pos;
                            trans.name          = realIndex.ToString();

                            OnUpdateItem(realIndex, item.m_GameObject);

                            item.m_GameObject.SetActive(true);
                            m_listItem.RemoveLast();
                            m_listItem.AddFirst(item);
                            m_ScrollView.InvalidateBounds();
                        }
                        else
                        {
                            flag = false;
                            break;
                        }
                    }
                }
                else
                {
                    break;
                }
            }
        }

        UpdateScrollViewDragging();
    }