Esempio n. 1
0
        public ListUI()
        {
            mCallback             = null;
            mCurSel               = -1;
            mExpandedItem         = -1;
            mList                 = new ListBodyUI(this);
            mHeader               = new ListHeaderUI();
            mListInfo             = new TListInfoUI();
            mListInfo.mListColumn = new Dictionary <int, Rectangle>();

            add(mHeader);
            base.add(mList);

            mListInfo.mColumns           = 0;
            mListInfo.mFontIdx           = -1;
            mListInfo.mTextStyle         = (int)FormatFlags.DT_VCENTER; // m_uTextStyle(DT_VCENTER | DT_END_ELLIPSIS)
            mListInfo.mTextColor         = Color.FromArgb(0xFF, 00, 00, 00).ToArgb();
            mListInfo.mBkColor           = 0;
            mListInfo.mSelectedTextColor = Color.FromArgb(0xFF, 00, 00, 00).ToArgb();
            mListInfo.mSelectedBkColor   = Color.FromArgb(0xFF, 0xC1, 0xE3, 0xFF).ToArgb();
            mListInfo.mHotTextColor      = Color.FromArgb(0xFF, 0x00, 0x00, 0x00).ToArgb();
            mListInfo.mHotBkColor        = Color.FromArgb(0xFF, 0xE9, 0xF5, 0xFF).ToArgb();
            mListInfo.mDisabledTextColor = Color.FromArgb(0xFF, 0xCC, 0xCC, 0xCC).ToArgb();
            mListInfo.mDisabledBkColor   = Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF).ToArgb();
            mListInfo.mLineColor         = 0;
            mListInfo.mShowHtml          = false;
            mListInfo.mExpandable        = false;
            mListInfo.mMultiExpandable   = false;

            mScrollSelect = false;
        }
Esempio n. 2
0
        // 渲染前会调用该函数计算列表大小
        public override Size estimateSize(Size szAvailable)
        {
            if (mOwner == null)
            {
                return(new Size(0, 0));
            }

            TListInfoUI pInfo = mOwner.getListInfo();
            Size        cXY   = mXYFixed;

            if (cXY.Height == 0 && mManager != null)
            {
                cXY.Height  = mManager.getDefaultFont().Height + 8;
                cXY.Height += pInfo.mRectTextPadding.Top + pInfo.mRectTextPadding.Bottom;
            }

            if (cXY.Width == 0 && mManager != null)
            {
                Rectangle rcText = new Rectangle(0, 0, 9999, cXY.Height);
                if (pInfo.mShowHtml)
                {
                    int         nLinks   = 0;
                    Rectangle[] rcs      = null;
                    string[]    sss      = null;
                    Graphics    graphics = mManager.getBufferManager().getGraphics();
                    Bitmap      bitmap   = mManager.getBufferManager().getBackBuffer();
                    RenderEngine.drawHtmlText(ref graphics,
                                              ref bitmap,
                                              ref mManager,
                                              ref rcText,
                                              mText,
                                              0,
                                              ref rcs,
                                              ref sss,
                                              ref nLinks,
                                              (int)FormatFlags.DT_SINGLELINE | (int)FormatFlags.DT_CALCRECT | pInfo.mTextStyle & ~(int)FormatFlags.DT_RIGHT & ~(int)FormatFlags.DT_CENTER);
                }
                else
                {
                    Graphics graphics = mManager.getBufferManager().getGraphics();
                    Bitmap   bitmap   = mManager.getBufferManager().getBackBuffer();

                    RenderEngine.drawText(ref graphics,
                                          ref bitmap,
                                          ref mManager,
                                          ref rcText,
                                          mText,
                                          0,
                                          pInfo.mFontIdx,
                                          (int)FormatFlags.DT_SINGLELINE | (int)FormatFlags.DT_CALCRECT | pInfo.mTextStyle & ~(int)FormatFlags.DT_RIGHT & ~(int)FormatFlags.DT_CENTER);
                }
                cXY.Width = rcText.Right - rcText.Left + pInfo.mRectTextPadding.Left + pInfo.mRectTextPadding.Right;
            }

            return(cXY);
        }
Esempio n. 3
0
        public override Size estimateSize(Size szAvailable)
        {
            TListInfoUI pInfo = null;

            if (mOwner != null)
            {
                pInfo = mOwner.getListInfo();
            }

            Size cXY = mXYFixed;

            if (cXY.Height == 0 && mManager != null)
            {
                cXY.Height = mManager.getDefaultFont().Height + 8;
                if (pInfo != null)
                {
                    cXY.Height += pInfo.mRectTextPadding.Top + pInfo.mRectTextPadding.Bottom;
                }
            }

            return(cXY);
        }
Esempio n. 4
0
        public ComboUI()
        {
            mWindow = null;

            mCurSel            = -1;
            mTextPadding       = new Rectangle(0, 0, 0, 0);
            mDropBoxAttributes = "";
            mDropBox           = new Size(0, 150);
            mButtonState       = 0;

            mNormalImage   = "";
            mHotImage      = "";
            mPushedImage   = "";
            mFocusedImage  = "";
            mDisabledImage = "";

            mListInfo                    = new TListInfoUI();
            mListInfo.mColumns           = 0;
            mListInfo.mFontIdx           = -1;
            mListInfo.mTextStyle         = (int)FormatFlags.DT_VCENTER;
            mListInfo.mTextColor         = Color.FromArgb(0xFF, 00, 00, 00).ToArgb();
            mListInfo.mBkColor           = 0;
            mListInfo.mSelectedTextColor = Color.FromArgb(0xFF, 00, 00, 00).ToArgb();
            mListInfo.mSelectedBkColor   = Color.FromArgb(0xFF, 0xC1, 0xE3, 0xFF).ToArgb();
            mListInfo.mHotTextColor      = Color.FromArgb(0xFF, 00, 00, 00).ToArgb();
            mListInfo.mHotBkColor        = Color.FromArgb(0xFF, 0xE9, 0xF5, 0xFF).ToArgb();
            mListInfo.mDisabledTextColor = Color.FromArgb(0xFF, 0xCC, 0xCC, 0xCC).ToArgb();
            mListInfo.mDisabledBkColor   = Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF).ToArgb();
            mListInfo.mLineColor         = 0;
            mListInfo.mShowHtml          = false;
            mListInfo.mExpandable        = false;
            mListInfo.mMultiExpandable   = false;

            mListInfo.mRectTextPadding = new Rectangle(0, 0, 0, 0);
            mListInfo.mListColumn      = new Dictionary <int, Rectangle>();
        }
Esempio n. 5
0
        public void drawItemBk(ref Graphics graphics, ref Bitmap bitmap, ref Rectangle rcItem)
        {
            if (mOwner == null)
            {
                return;
            }
            TListInfoUI pInfo      = mOwner.getListInfo();
            int         iBackColor = pInfo.mBkColor;

            if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0)
            {
                iBackColor = pInfo.mHotBkColor;
            }
            if (isSelected())
            {
                iBackColor = pInfo.mSelectedBkColor;
            }
            if (!isEnabled())
            {
                iBackColor = pInfo.mDisabledBkColor;
            }

            if (iBackColor != 0)
            {
                RenderEngine.drawColor(ref graphics, ref bitmap, ref mRectItem, iBackColor);
            }

            if (!isEnabled())
            {
                if (pInfo.mDisabledImage != "")
                {
                    if (!drawImage(ref graphics, ref bitmap, pInfo.mDisabledImage))
                    {
                        pInfo.mDisabledImage = "";
                    }
                    else
                    {
                        return;
                    }
                }
            }
            if (isSelected())
            {
                if (pInfo.mSelectedImage != "")
                {
                    if (!drawImage(ref graphics, ref bitmap, pInfo.mSelectedImage))
                    {
                        pInfo.mSelectedImage = "";
                    }
                    else
                    {
                        return;
                    }
                }
            }
            if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0)
            {
                if (pInfo.mHotImage != "")
                {
                    if (!drawImage(ref graphics, ref bitmap, pInfo.mHotImage))
                    {
                        pInfo.mHotImage = "";
                    }
                    else
                    {
                        return;
                    }
                }
            }

            if (mBkImage != "")
            {
                if (!drawImage(ref graphics, ref bitmap, mBkImage))
                {
                    mBkImage = "";
                }
            }

            if (mBkImage == "")
            {
                if (pInfo.mImage != "")
                {
                    if (!drawImage(ref graphics, ref bitmap, pInfo.mImage))
                    {
                        pInfo.mImage = "";
                    }
                    else
                    {
                        return;
                    }
                }
            }

            if (pInfo.mLineColor != 0)
            {
                Rectangle rcLine = new Rectangle(mRectItem.Left, mRectItem.Bottom - 1, mRectItem.Right, mRectItem.Bottom - 1);
                RenderEngine.drawLine(ref graphics, ref bitmap, ref rcLine, 1, pInfo.mLineColor);
            }
        }
Esempio n. 6
0
        public override void drawItemText(ref Graphics graphics, ref Bitmap bitmap, ref Rectangle rcItem)
        {
            if (mText == "")
            {
                return;
            }

            if (mOwner == null)
            {
                return;
            }
            TListInfoUI pInfo      = mOwner.getListInfo();
            int         iTextColor = pInfo.mTextColor;

            if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0)
            {
                iTextColor = pInfo.mHotTextColor;
            }
            if (isSelected())
            {
                iTextColor = pInfo.mSelectedTextColor;
            }
            if (!isEnabled())
            {
                iTextColor = pInfo.mDisabledTextColor;
            }
            int       nLinks    = 0;
            Rectangle rcText    = rcItem;
            int       newLeft   = rcText.Left + pInfo.mRectTextPadding.Left;
            int       newRight  = rcText.Right - pInfo.mRectTextPadding.Right;
            int       newTop    = rcText.Top + pInfo.mRectTextPadding.Top;
            int       newBottom = rcText.Bottom - pInfo.mRectTextPadding.Bottom;

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

            Rectangle rcccc = rcText;

            if (pInfo.mShowHtml)
            {
                Rectangle[] rcs = null;
                string[]    ss  = null;
                RenderEngine.drawHtmlText(ref graphics,
                                          ref bitmap,
                                          ref mManager,
                                          ref rcText,
                                          mText,
                                          iTextColor,
                                          ref rcs,
                                          ref ss,
                                          ref nLinks,
                                          (int)FormatFlags.DT_SINGLELINE | pInfo.mTextStyle);
            }
            else
            {
                RenderEngine.drawText(ref graphics,
                                      ref bitmap,
                                      ref mManager,
                                      ref rcText,
                                      mText,
                                      iTextColor,
                                      pInfo.mFontIdx,
                                      (int)FormatFlags.DT_SINGLELINE | pInfo.mTextStyle);
            }
        }
Esempio n. 7
0
        public override void drawItemText(ref Graphics graphics, ref Bitmap bitmap, ref Rectangle rcItem)
        {
            if (mOwner == null)
            {
                return;
            }
            TListInfoUI pInfo      = mOwner.getListInfo();
            int         iTextColor = pInfo.mTextColor;

            if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0)
            {
                iTextColor = pInfo.mHotTextColor;
            }
            if (isSelected())
            {
                iTextColor = pInfo.mSelectedTextColor;
            }
            if (!isEnabled())
            {
                iTextColor = pInfo.mDisabledTextColor;
            }
            IListCallbackUI pCallback = mOwner.getTextCallback();

            if (pCallback == null)
            {
                return;
            }
            mNumLinks = 0;
            int nLinks = mRectLinks.Length;

            for (int i = 0; i < pInfo.mColumns; i++)
            {
                Rectangle rcItem1   = new Rectangle(pInfo.mListColumn[i].Left, mRectItem.Top, pInfo.mListColumn[i].Width, mRectItem.Height);
                int       newLeft   = rcItem1.Left + pInfo.mRectTextPadding.Left;
                int       newRight  = rcItem1.Right - pInfo.mRectTextPadding.Right;
                int       newTop    = rcItem1.Top + pInfo.mRectTextPadding.Top;
                int       newBottom = rcItem1.Bottom - pInfo.mRectTextPadding.Bottom;
                rcItem1.X      = newLeft;
                rcItem1.Width  = newRight - newLeft;
                rcItem1.Y      = newTop;
                rcItem1.Height = newBottom - newTop;

                string pstrText = pCallback.getItemText(this, mIndex, i);

                if (pInfo.mShowHtml)
                {
                    RenderEngine.drawHtmlText(ref graphics,
                                              ref bitmap,
                                              ref mManager,
                                              ref rcItem1,
                                              pstrText,
                                              iTextColor,
                                              ref mRectLinks,
                                              ref mLinks,
                                              ref nLinks,
                                              (int)FormatFlags.DT_SINGLELINE | pInfo.mTextStyle);
                }
                else
                {
                    RenderEngine.drawText(ref graphics,
                                          ref bitmap,
                                          ref mManager,
                                          ref rcItem1,
                                          pstrText,
                                          iTextColor,
                                          pInfo.mFontIdx,
                                          (int)FormatFlags.DT_SINGLELINE | pInfo.mTextStyle);
                }

                if (nLinks > 0)
                {
                    mNumLinks = nLinks;
                    nLinks    = 0;
                }
                else
                {
                    nLinks = mRectLinks.Length;
                }
            }
        }
Esempio n. 8
0
        public override void setScrollPos(Size szPos)
        {
            int cx = 0;
            int cy = 0;

            if (mVerticalScrollbar != null && mVerticalScrollbar.isVisible())
            {
                int iLastScrollPos = mVerticalScrollbar.getScrollPos();
                mVerticalScrollbar.setScrollPos(szPos.Height);
                cy = mVerticalScrollbar.getScrollPos() - iLastScrollPos;
            }

            if (mHorizontalScrollbar != null && mHorizontalScrollbar.isVisible())
            {
                int iLastScrollPos = mHorizontalScrollbar.getScrollPos();
                mHorizontalScrollbar.setScrollPos(szPos.Width);
                cx = mHorizontalScrollbar.getScrollPos() - iLastScrollPos;
            }

            if (cx == 0 && cy == 0)
            {
                return;
            }

            Rectangle rcPos;

            for (int it2 = 0; it2 < mItems.Count; it2++)
            {
                ControlUI pControl = mItems[it2];
                if (!pControl.isVisible())
                {
                    continue;
                }
                if (pControl.isFloat())
                {
                    continue;
                }

                rcPos = pControl.getPos();
                int newLeft   = rcPos.Left - cx;
                int newRight  = rcPos.Right - cx;
                int newTop    = rcPos.Top - cy;
                int newBottom = rcPos.Bottom - cy;

                rcPos.X      = newLeft;
                rcPos.Width  = newRight - newLeft;
                rcPos.Y      = newTop;
                rcPos.Height = newBottom - newTop;
                pControl.setPos(rcPos);
            }

            invalidate();

            if (cx != 0 && mOwner != null)
            {
                ListHeaderUI pHeader = mOwner.getHeader();
                if (pHeader == null)
                {
                    return;
                }
                TListInfoUI pInfo = mOwner.getListInfo();
                pInfo.mColumns = Math.Min(pHeader.getCount(), ListUI.UILIST_MAX_COLUMNS);

                if (!pHeader.isVisible())
                {
                    pHeader.setInternVisible(true);
                }
                for (int i = 0; i < pInfo.mColumns; i++)
                {
                    ControlUI pControl = pHeader.getItemAt(i);
                    if (!pControl.isVisible())
                    {
                        continue;
                    }
                    if (pControl.isFloat())
                    {
                        continue;
                    }

                    Rectangle rcPos1   = pControl.getPos();
                    int       newLeft  = rcPos1.Left - cx;
                    int       newRight = rcPos1.Right - cx;
                    rcPos1.X     = newLeft;
                    rcPos1.Width = newRight - newLeft;
                    pControl.setPos(rcPos1);
                    pInfo.mListColumn[i] = pControl.getPos();
                }
                if (!pHeader.isVisible())
                {
                    pHeader.setInternVisible(false);
                }
            }
        }
Esempio n. 9
0
        public override void eventProc(ref TEventUI newEvent)
        {
            if (!isMouseEnabled() && newEvent.mType > (int)EVENTTYPE_UI.UIEVENT__MOUSEBEGIN && newEvent.mType < (int)EVENTTYPE_UI.UIEVENT__MOUSEEND)
            {
                if (mOwner != null)
                {
                    mOwner.eventProc(ref newEvent);
                }
                else
                {
                    base.eventProc(ref newEvent);
                }

                return;
            }
            if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_BUTTONDOWN)
            {
                if (isEnabled())
                {
                    mManager.sendNotify(this, "itemclick");
                    select();
                    invalidate();
                }
                return;
            }
            if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_MOUSEMOVE)
            {
                return;
            }
            if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_BUTTONUP)
            {
                if (mOwner == null)
                {
                    return;
                }
                TListInfoUI pInfo      = mOwner.getListInfo();
                Rectangle   rcExpander = new Rectangle(mRectItem.Left + mRectExpander.Left,
                                                       mRectItem.Top + mRectExpander.Top,
                                                       mRectItem.Left + mRectExpander.Right,
                                                       mRectItem.Top + mRectExpander.Bottom);
                if (pInfo.mExpandable && rcExpander.Contains(newEvent.mMousePos))
                {
                    expand(!mExpanded);
                }
                return;
            }
            if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_KEYDOWN)
            {
                switch ((Keys)newEvent.mKey)
                {
                case Keys.Left:
                    expand(false);
                    return;

                case Keys.Right:
                    expand(true);
                    return;
                }
            }
            if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_MOUSEENTER)
            {
                if ((mButtonState & (int)PaintFlags.UISTATE_HOT) == 0)
                {
                    mButtonState |= (int)PaintFlags.UISTATE_HOT;
                    invalidate();
                }
                return;
            }
            if (newEvent.mType == (int)EVENTTYPE_UI.UIEVENT_MOUSELEAVE)
            {
                if ((mButtonState & (int)PaintFlags.UISTATE_HOT) != 0)
                {
                    mButtonState &= ~(int)PaintFlags.UISTATE_HOT;
                    invalidate();
                }
                return;
            }
            base.eventProc(ref newEvent);
        }