diff -r ebd48d2de13c -r ecbabf52600f textinput/peninputcommonctrls/src/peninputlabel/peninputlabel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputcommonctrls/src/peninputlabel/peninputlabel.cpp Wed Sep 01 12:23:33 2010 +0100 @@ -0,0 +1,312 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0"" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Implementation for button base and dragbar +* +*/ + + +#include + +#include "peninputlabel.h" +#include "peninputlayout.h" + + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::NewL +// factory function +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CAknFepCtrlLabel* CAknFepCtrlLabel::NewL(CFepUiLayout* aUiLayout, TInt aCtrlId) + { + CAknFepCtrlLabel* lable=new (ELeave) CAknFepCtrlLabel(aUiLayout,aCtrlId); + + CleanupStack::PushL(lable); + lable->BaseConstructL(); + CleanupStack::Pop(lable); + + return lable; + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::CAknFepCtrlLabel +// C++ default constructor +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +CAknFepCtrlLabel::CAknFepCtrlLabel(CFepUiLayout* aUiLayout, TInt aCtrlId) + :CFepUiBaseCtrl(TRect(0,0,0,0),aUiLayout,aCtrlId), + iBaseline(-1), + iFontColor(KRgbWhite), + iAlignment(CGraphicsContext::ECenter) + { + SetControlType(EUserCtrlBase | ECtrlBaseCtrl); + +#ifdef __ALPHA_TRANCEPARENCY__ + const TRgb KDefaultButtonBackCol = TRgb(30,30,30); +#else + const TRgb KDefaultButtonBackCol = TRgb(230,230,230); +#endif + + SetBkColor(KDefaultButtonBackCol); + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::~CAknFepCtrlLabel +// Destructor +// --------------------------------------------------------------------------- +// +EXPORT_C CAknFepCtrlLabel::~CAknFepCtrlLabel() + { + delete iText; + + //font + if(iFontOwnership && iFont) + { + BitmapDevice()->ReleaseFont(iFont); + iFont = NULL; + } + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::Draw +// Draw the control +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::Draw() + { + if(!AbleToDraw()) + return; + + TRect rect = Rect(); + CFbsBitGc* gc = static_cast(BitGc()); + gc->Activate(MaskBitmapDevice()); + + //clear the rect + gc->SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc->SetBrushColor(TRgb(KOpaqueColor));//non transparency + gc->SetPenStyle(CGraphicsContext::ENullPen); + gc->DrawRect(rect); + + gc->Activate(BitmapDevice()); + + if (BackgroundBmp()) + { + if (BkMaskBmp()) + { + gc->DrawBitmapMasked(rect, BackgroundBmp(), BackgroundBmp()->SizeInPixels(), + BkMaskBmp(), ETrue); + } + else + { + gc->DrawBitmap(rect, BackgroundBmp(), BackgroundBmp()->SizeInPixels()); + } + } + + //draw caption if there is + if(iText && iFont) + { + CFbsBitGc* gc = static_cast(BitGc()); + + //use font + gc->UseFont(iFont); + gc->SetBrushStyle(CGraphicsContext::ENullBrush); + gc->SetPenStyle(CGraphicsContext::ESolidPen); + + TRect rect(iRect); + + //draw text shadow first + rect.Move(1,1); + + TInt baseLine = iFont->AscentInPixels()/2 + iRect.Height()/2; + gc->SetPenColor(iFontColor); + gc->DrawText(*iText, iRect, baseLine, iAlignment); + + gc->DiscardFont(); + } + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::SetBitmapL +// Set bitmap for given status +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::SetBitmapL(CFbsBitmap* aBitmap) + { + if(!aBitmap) + { + return; + } + + SetBackgroundBitmapL(aBitmap); + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::SetMaskBitmapL +// Set mask bitmap for given status +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::SetMaskBitmapL(CFbsBitmap* aBmp) + { + if(!aBmp) + { + return; + } + + SetBackgroundMaskBitmapL(aBmp); + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::SetFont +// Set caption font +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::SetFont(const TFontSpec& aFontSpec) + { + iFontSpec = aFontSpec; + //release old font + if(iFontOwnership && iFont) + { + BitmapDevice()->ReleaseFont(iFont); + iFont = NULL; + } + + iFontOwnership = ETrue; + if(BitmapDevice()) + { + if (KErrNone != BitmapDevice()->GetNearestFontInPixels(iFont,iFontSpec)) + iFont = NULL; + } + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::SetFont +// Set caption font +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::SetFont(const CFont* aFont) + { + if(iFontOwnership && iFont) + { + BitmapDevice()->ReleaseFont(iFont); + } + + iFontOwnership = EFalse; + iFont = const_cast(aFont); + + if(iFont) + { + iFontSpec = iFont->FontSpecInTwips(); + } + } + +// ----------------------------------------------------------------------------- +// CAknFepCtrlEventButton::SetFontColor +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::SetFontColor(const TRgb aColor) + { + iFontColor = aColor; + } + +// ----------------------------------------------------------------------------- +// CAknFepCtrlEventButton::SetText +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::SetText(const TDesC& aText) + { + + delete iText; + iText = NULL; + + TRAP_IGNORE( iText = aText.AllocL()); + + Draw(); + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::SizeChanged +// This methods shall be called by the container's SizeChanged handler +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::SizeChanged(TRect aNewRect, TBool aIsReloadImages) + { + if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0) + { + return; + } + + SetRect(aNewRect); + + if (aIsReloadImages) + { + ResizeBitmaps(aNewRect.Size()); + } + + Draw(); + UpdateArea(Rect(), EFalse); + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::ResizeBitmaps +// This methods shall be called by the container's SizeChanged handler +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CAknFepCtrlLabel::ResizeBitmaps(TSize aSize) + { + if (BkMaskBmp() && + BkMaskBmp()->SizeInPixels() != aSize) + { + AknIconUtils::SetSize(BkMaskBmp(), aSize, EAspectRatioNotPreserved); + } + + if (BackgroundBmp() && + BackgroundBmp()->SizeInPixels() != aSize) + { + AknIconUtils::SetSize(BackgroundBmp(), aSize, EAspectRatioNotPreserved); + } + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::SetTextAlignment +// This methods shall be called by the container's SizeChanged handler +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknFepCtrlLabel::SetTextAlignment(CGraphicsContext::TTextAlign aAlignment) + { + iAlignment = aAlignment; + } + +// --------------------------------------------------------------------------- +// CAknFepCtrlLabel::TextAlignment +// This methods shall be called by the container's SizeChanged handler +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CGraphicsContext::TTextAlign CAknFepCtrlLabel::TextAlignment() + { + return iAlignment; + } + +// End Of File