コード例 #1
0
ファイル: ComboUI.cs プロジェクト: weimingtom/QUILib
        public override void paintText(ref Graphics graphics, ref Bitmap bitmap)
        {
            Rectangle rcText    = mRectItem;
            int       newLeft   = rcText.Left + mTextPadding.Left;
            int       newRight  = rcText.Right - mTextPadding.Right;
            int       newTop    = rcText.Top + mTextPadding.Top;
            int       newBottom = rcText.Bottom - mTextPadding.Bottom;

            rcText.X      = newLeft;
            rcText.Width  = newRight - newLeft;
            rcText.Y      = newTop;
            rcText.Height = newBottom - newTop;

            if (mCurSel >= 0)
            {
                ControlUI   pControl = (ControlUI)mItems[mCurSel];
                IListItemUI pElement = (IListItemUI)pControl.getInterface("ListItem");
                if (pElement != null)
                {
                    pElement.drawItemText(ref graphics, ref bitmap, ref rcText);
                }
                else
                {
                    Rectangle rcOldPos = pControl.getPos();
                    pControl.setPos(rcText);
                    pControl.doPaint(ref graphics, ref bitmap, rcText);
                    pControl.setPos(rcOldPos);
                }
            }
        }
コード例 #2
0
ファイル: ComboUI.cs プロジェクト: weimingtom/QUILib
        public override bool remove(ControlUI pControl)
        {
            int iIndex = getItemIndex(pControl);

            if (iIndex == -1)
            {
                return(false);
            }

            if (!base.removeAt(iIndex))
            {
                return(false);
            }

            for (int i = iIndex; i < getCount(); ++i)
            {
                ControlUI   p         = getItemAt(i);
                IListItemUI pListItem = (IListItemUI)p.getInterface("ListItem");
                if (pListItem != null)
                {
                    pListItem.setIndex(pListItem.getIndex() - 1);
                }
            }

            selectItem(findSelectable(mCurSel, false));

            return(true);
        }
コード例 #3
0
ファイル: ComboUI.cs プロジェクト: weimingtom/QUILib
        public override bool addAt(ControlUI pControl, int iIndex)
        {
            if (!base.addAt(pControl, iIndex))
            {
                return(false);
            }

            // 所有的列表项目都是我们指定的
            IListItemUI pListItem = (IListItemUI)pControl.getInterface("ListItem");

            if (pListItem != null)
            {
                pListItem.setOwner(this);
                pListItem.setIndex(iIndex);
            }

            for (int i = iIndex + 1; i < getCount(); ++i)
            {
                ControlUI p = getItemAt(i);
                pListItem = (IListItemUI)p.getInterface("ListItem");
                if (pListItem != null)
                {
                    pListItem.setIndex(pListItem.getIndex() + 1);
                }
            }
            return(true);
        }
コード例 #4
0
ファイル: ListUI.cs プロジェクト: weimingtom/QUILib
        public override bool setItemIndex(ControlUI pControl, int iIndex)
        {
            if (pControl.getInterface("ListHeader") != null)
            {
                return(base.setItemIndex(pControl, iIndex));
            }
            // We also need to recognize header sub-items
            if (pControl.getClass() == "ListHeaderItemUI")
            {
                return(mHeader.setItemIndex(pControl, iIndex));
            }

            int iOrginIndex = mList.getItemIndex(pControl);

            if (iOrginIndex == -1)
            {
                return(false);
            }

            if (!mList.setItemIndex(pControl, iIndex))
            {
                return(false);
            }

            // The list items should know about us
            IListItemUI pListItem = (IListItemUI)pControl.getInterface("ListItem");

            if (pListItem != null)
            {
                pListItem.setIndex(getCount());
            }

            for (int i = iOrginIndex; i < mList.getCount(); ++i)
            {
                ControlUI p = mList.getItemAt(i);
                pListItem = (IListItemUI)(p.getInterface("ListItem"));
                if (pListItem != null)
                {
                    pListItem.setIndex(pListItem.getIndex() - 1);
                }
            }

            selectItem(findSelectable(mCurSel, false));
            ensureVisible(mCurSel);

            return(true);
        }
コード例 #5
0
ファイル: ComboUI.cs プロジェクト: weimingtom/QUILib
        public override bool add(ControlUI pControl)
        {
            IListItemUI pListItem = (IListItemUI)pControl.getInterface("ListItem");

            if (pListItem != null)
            {
                pListItem.setOwner(this);
                pListItem.setIndex(mItems.Count);
            }
            return(base.add(pControl));
        }
コード例 #6
0
ファイル: ListUI.cs プロジェクト: weimingtom/QUILib
        public override bool addAt(ControlUI pControl, int iIndex)
        {
            // Override the AddAt() method so we can add items specifically to
            // the intended widgets. Headers and are assumed to be
            // answer the correct interface so we can add multiple list headers.
            if (pControl.getInterface("ListHeader") != null)
            {
                return(base.addAt(pControl, iIndex));
            }
            // We also need to recognize header sub-items
            if (pControl.getClass() == "ListHeaderItemUI")
            {
                return(mHeader.addAt(pControl, iIndex));
            }

            if (!mList.addAt(pControl, iIndex))
            {
                return(false);
            }

            // The list items should know about us
            IListItemUI pListItem = (IListItemUI)pControl.getInterface("ListItem");

            if (pListItem != null)
            {
                pListItem.setOwner(this);
                pListItem.setIndex(iIndex);
            }

            for (int i = iIndex + 1; i < mList.getCount(); ++i)
            {
                ControlUI p = mList.getItemAt(i);
                pListItem = (IListItemUI)p.getInterface("ListItem");
                if (pListItem != null)
                {
                    pListItem.setIndex(pListItem.getIndex() + 1);
                }
            }
            return(true);
        }
コード例 #7
0
ファイル: ListUI.cs プロジェクト: weimingtom/QUILib
        public override int getItemIndex(ControlUI pControl)
        {
            if (pControl.getInterface("ListHeader") != null)
            {
                return(base.getItemIndex(pControl));
            }
            // We also need to recognize header sub-items
            if (pControl.getClass() == "ListHeaderItemUI")
            {
                return(mHeader.getItemIndex(pControl));
            }

            return(mList.getItemIndex(pControl));
        }
コード例 #8
0
ファイル: ListUI.cs プロジェクト: weimingtom/QUILib
        public override bool add(ControlUI pControl)
        {
            // Override the Add() method so we can add items specifically to
            // the intended widgets. Headers are assumed to be
            // answer the correct interface so we can add multiple list headers.
            if (pControl.getInterface("ListHeader") != null)
            {
                if (mHeader != pControl && mHeader.getCount() == 0)
                {
                    {
                        // 把旧的表头控件属性赋予到新的表头控件
                        pControl.setBackImage(mHeader.getBackImage());
                        pControl.setVisible(mHeader.isVisible());
                    }
                    base.remove(mHeader);
                    mHeader = null;
                    mHeader = (ListHeaderUI)(pControl);
                }

                return(base.addAt(pControl, 0));
            }
            // We also need to recognize header sub-items
            if (pControl.getClass() == "ListHeaderItemUI")
            {
                return(mHeader.add(pControl));
            }
            // The list items should know about us
            IListItemUI pListItem = (IListItemUI)pControl.getInterface("ListItem");

            if (pListItem != null)
            {
                pListItem.setOwner(this);
                pListItem.setIndex(getCount());
            }
            return(mList.add(pControl));
        }
コード例 #9
0
ファイル: ListUI.cs プロジェクト: weimingtom/QUILib
        public virtual bool expandItem(int iIndex, bool bExpand = true)
        {
            if (!mListInfo.mExpandable)
            {
                return(false);
            }
            if (mExpandedItem >= 0 && !mListInfo.mMultiExpandable)
            {
                ControlUI pControl = getItemAt(mExpandedItem);
                if (pControl != null)
                {
                    IListItemUI pItem = (IListItemUI)pControl.getInterface("ListItem");
                    if (pItem != null)
                    {
                        pItem.expand(false);
                    }
                }
                mExpandedItem = -1;
            }
            if (bExpand)
            {
                ControlUI pControl = getItemAt(iIndex);
                if (pControl == null)
                {
                    return(false);
                }
                if (!pControl.isVisible())
                {
                    return(false);
                }
                IListItemUI pItem = (IListItemUI)pControl.getInterface("ListItem");
                if (pItem == null)
                {
                    return(false);
                }
                mExpandedItem = iIndex;
                if (!pItem.expand(true))
                {
                    mExpandedItem = -1;
                    return(false);
                }
            }
            needUpdate();

            return(true);
        }
コード例 #10
0
ファイル: ListUI.cs プロジェクト: weimingtom/QUILib
        public override bool removeAt(int iIndex)
        {
            if (!mList.removeAt(iIndex))
            {
                return(false);
            }

            for (int i = iIndex; i < mList.getCount(); ++i)
            {
                ControlUI   p         = mList.getItemAt(i);
                IListItemUI pListItem = (IListItemUI)p.getInterface("ListItem");
                if (pListItem != null)
                {
                    pListItem.setIndex(pListItem.getIndex() - 1);
                }
            }

            selectItem(findSelectable(mCurSel, false));
            ensureVisible(mCurSel);

            return(true);
        }
コード例 #11
0
ファイル: ListUI.cs プロジェクト: weimingtom/QUILib
        public override bool remove(ControlUI pControl)
        {
            if (pControl.getInterface("ListHeader") != null)
            {
                return(base.remove(pControl));
            }
            // We also need to recognize header sub-items
            if (pControl.getClass() == "ListHeaderItemUI")
            {
                return(mHeader.remove(pControl));
            }

            int iIndex = mList.getItemIndex(pControl);

            if (iIndex == -1)
            {
                return(false);
            }

            if (!mList.removeAt(iIndex))
            {
                return(false);
            }

            for (int i = iIndex; i < mList.getCount(); ++i)
            {
                ControlUI   p         = mList.getItemAt(i);
                IListItemUI pListItem = (IListItemUI)p.getInterface("ListItem");
                if (pListItem != null)
                {
                    pListItem.setIndex(pListItem.getIndex() - 1);
                }
            }

            selectItem(findSelectable(mCurSel, false));
            ensureVisible(mCurSel);

            return(true);
        }
コード例 #12
0
 public virtual void setOwner(ControlUI pOwner)
 {
     mOwner = (IListOwnerUI)pOwner.getInterface("ListOwner");
 }
コード例 #13
0
 public override void setOwner(ControlUI pOwner)
 {
     base.setOwner(pOwner);
     mOwner = (IListUI)pOwner.getInterface("List");
 }
コード例 #14
0
        // 广度优先搜索XML节点树创建相应的控件树,过滤非控件节点
        protected ControlUI parse(ref MarkupNode parentNode, ref ControlUI parentControl, ref PaintManagerUI manager)
        {
            if (parentNode == null)
            {
                throw new Exception("对象未赋值");
            }
            ControlUI ctlParent = null;

            {
                //parentControl.setManager(manager, null);

                Queue <MarkupNode> queueNode    = new Queue <MarkupNode>();
                Queue <ControlUI>  queueControl = new Queue <ControlUI>();

                queueNode.Enqueue(parentNode);
                queueControl.Enqueue(parentControl);

                while (queueNode.Count > 0)
                {
                    MarkupNode        curNode          = queueNode.Dequeue();
                    ControlUI         curParentControl = queueControl.Dequeue();
                    List <MarkupNode> listNode         = curNode.getChildList();

                    // 访问根节点
                    if (listNode != null && listNode.Count > 0)
                    {
                        // 子节点入队
                        foreach (var node in listNode)
                        {
                            // 过滤非控件节点
                            if (node.getName() == "Window" ||
                                node.getName() == "Image" ||
                                node.getName() == "Font" ||
                                node.getName() == "Default")
                            {
                                continue;
                            }

                            ControlUI newControl = null;
                            {
                                queueNode.Enqueue(node);

                                // 创建控件,加入控件树后入队
                                newControl = getControl(node.getName());

                                if (newControl != null && newControl is ControlUI)
                                {
                                    queueControl.Enqueue(newControl);

                                    newControl.setManager(manager, curParentControl);
                                    if (curParentControl != null)
                                    {
                                        IContainerUI container = (IContainerUI)curParentControl.getInterface("IContainer");
                                        container.add(newControl);
                                    }
                                    else
                                    {
                                        if (ctlParent != null)
                                        {
                                            throw new Exception("不能有两个根容器");
                                        }
                                        ctlParent = newControl;
                                    }
                                }
                                else if (mCallback != null)
                                {
                                    newControl = mCallback.createControl(node.getName(), manager);
                                    if (newControl == null)
                                    {
                                        throw new Exception("未知控件类型");
                                    }
                                    queueControl.Enqueue(newControl);

                                    newControl.setManager(manager, curParentControl);
                                    if (curParentControl != null)
                                    {
                                        IContainerUI container = (IContainerUI)curParentControl.getInterface("IContainer");
                                        container.add(newControl);
                                    }
                                    else
                                    {
                                        if (ctlParent != null)
                                        {
                                            throw new Exception("不能有两个根容器");
                                        }
                                        ctlParent = newControl;
                                    }
                                }
                                else
                                {
                                    throw new Exception("未知控件类型");
                                }
                            }

                            {
                                // 设置属性
                                if (manager != null)
                                {
                                    //newControl.setManager(manager, curParentControl);
                                    string defaultAttributes = manager.getDefaultAttributeList(node.getName());
                                    if (defaultAttributes != "")
                                    {
                                        newControl.applyAttributeList(defaultAttributes);
                                    }
                                }

                                List <XMLAttribute> listAttr = node.getAttributeList();
                                foreach (var attr in listAttr)
                                {
                                    newControl.addAttribute(attr.getName(), attr.getValue());
                                    newControl.setAttribute(attr.getName(), attr.getValue());
                                }
                            }
                        }
                    }
                }
            }

            return(ctlParent);
        }