--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputcommonctrls/src/peninputlabel/peninputlabel.cpp Tue Feb 02 01:02:04 2010 +0200
@@ -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 <AknsUtils.h>
+
+#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<CFbsBitGc*>(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<CFbsBitGc*>(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<CFont*>(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