| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| #include "LineWidthValueSet.hxx" |
| |
| #include <i18npool/mslangid.hxx> |
| |
| namespace svx { namespace sidebar { |
| |
| |
| LineWidthValueSet::LineWidthValueSet ( |
| Window* pParent, const ResId& rResId) |
| : ValueSet( pParent, rResId ), |
| pVDev(NULL), |
| nSelItem(0), |
| bCusEnable(false) |
| { |
| strUnit = new XubString[9]; |
| SetColCount( 1 ); |
| SetLineCount( 9); |
| } |
| |
| |
| |
| |
| LineWidthValueSet::~LineWidthValueSet (void) |
| { |
| delete pVDev; |
| delete[] strUnit; |
| } |
| |
| |
| |
| |
| void LineWidthValueSet::SetUnit(XubString* str) |
| { |
| for(int i = 0; i < 9; i++) |
| { |
| strUnit[i] = str[i]; |
| } |
| } |
| |
| |
| |
| void LineWidthValueSet::SetSelItem(sal_uInt16 nSel) |
| { |
| nSelItem = nSel; |
| if(nSel == 0) |
| { |
| SelectItem(1); // ,false); // 'false' nut supported by AOO |
| SetNoSelection(); |
| } |
| else |
| { |
| SelectItem(nSelItem); |
| GrabFocus(); |
| } |
| } |
| |
| |
| |
| |
| sal_uInt16 LineWidthValueSet::GetSelItem() |
| { |
| return nSelItem; |
| } |
| |
| |
| |
| |
| void LineWidthValueSet::SetImage(Image img) |
| { |
| imgCus = img; |
| } |
| |
| |
| |
| |
| void LineWidthValueSet::SetCusEnable(bool bEnable) |
| { |
| bCusEnable = bEnable; |
| } |
| |
| |
| |
| |
| void LineWidthValueSet::UserDraw( const UserDrawEvent& rUDEvt ) |
| { |
| Rectangle aRect = rUDEvt.GetRect(); |
| OutputDevice* pDev = rUDEvt.GetDevice(); |
| sal_uInt16 nItemId = rUDEvt.GetItemId(); |
| |
| long nRectHeight = aRect.GetHeight(); |
| long nRectWidth = aRect.GetWidth(); |
| Point aBLPos = aRect.TopLeft(); |
| |
| //const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); |
| //Color aBackColor(0,0,200); |
| //const Color aTextColor = rStyleSettings.GetFieldTextColor(); |
| Font aOldFont = pDev->GetFont(); |
| Color aOldColor = pDev->GetLineColor(); |
| Color aOldFillColor = pDev->GetFillColor(); |
| |
| Font aFont(OutputDevice::GetDefaultFont(DEFAULTFONT_UI_SANS, MsLangId::getSystemLanguage(), DEFAULTFONT_FLAGS_ONLYONE)); |
| Size aSize = aFont.GetSize(); |
| aSize.Height() = nRectHeight*3/5; |
| aFont.SetSize( aSize ); |
| |
| Point aLineStart(aBLPos.X() + 5, aBLPos.Y() + ( nRectHeight - nItemId )/2); |
| Point aLineEnd(aBLPos.X() + nRectWidth * 7 / 9 - 10, aBLPos.Y() + ( nRectHeight - nItemId )/2); |
| if(nItemId == 9) |
| { |
| Point aImgStart(aBLPos.X() + 5, aBLPos.Y() + ( nRectHeight - 23 ) / 2); |
| pDev->DrawImage(aImgStart, imgCus); |
| // Point aStart(aImgStart.X() + 14 + 20 , aBLPos.Y() + nRectHeight/6); |
| Rectangle aStrRect = aRect; |
| aStrRect.Top() += nRectHeight/6; |
| aStrRect.Bottom() -= nRectHeight/6; |
| aStrRect.Left() += imgCus.GetSizePixel().Width() + 20; |
| if(bCusEnable) |
| aFont.SetColor(GetSettings().GetStyleSettings().GetFieldTextColor()); |
| else |
| aFont.SetColor(GetSettings().GetStyleSettings().GetDisableColor()); |
| |
| pDev->SetFont(aFont); |
| pDev->DrawText(aStrRect, strUnit[ nItemId - 1 ], TEXT_DRAW_ENDELLIPSIS); |
| } |
| else |
| { |
| if( nSelItem == nItemId ) |
| { |
| Color aBackColor(50,107,197); |
| Rectangle aBackRect = aRect; |
| aBackRect.Top() += 3; |
| aBackRect.Bottom() -= 2; |
| pDev->SetFillColor(aBackColor); |
| pDev->DrawRect(aBackRect); |
| } |
| else |
| { |
| pDev->SetFillColor( COL_TRANSPARENT ); |
| pDev->DrawRect(aRect); |
| } |
| |
| //draw text |
| if(nSelItem == nItemId ) |
| aFont.SetColor(COL_WHITE); |
| else |
| aFont.SetColor(GetSettings().GetStyleSettings().GetFieldTextColor()); |
| pDev->SetFont(aFont); |
| Point aStart(aBLPos.X() + nRectWidth * 7 / 9 , aBLPos.Y() + nRectHeight/6); |
| pDev->DrawText(aStart, strUnit[ nItemId - 1 ]); //can't set TEXT_DRAW_ENDELLIPSIS here ,or the text will disappear |
| |
| //draw line |
| if( nSelItem == nItemId ) |
| pDev->SetLineColor(COL_WHITE); |
| else |
| pDev->SetLineColor(GetSettings().GetStyleSettings().GetFieldTextColor()); |
| |
| for(sal_uInt16 i = 1; i <= nItemId; i++) |
| { |
| pDev->DrawLine(aLineStart,aLineEnd ); |
| aLineStart.setY(aLineStart.getY() + 1); |
| aLineEnd.setY (aLineEnd.getY() + 1); |
| } |
| } |
| |
| Invalidate( aRect ); |
| pDev->SetLineColor(aOldColor); |
| pDev->SetFillColor(aOldFillColor); |
| pDev->SetFont(aOldFont); |
| } |
| |
| |
| |
| } } // end of namespace svx::sidebar |
| |
| // eof |