textinput/peninputcommonctrls/src/peninputlabel/peninputlabel.cpp
branchRCL_3
changeset 21 ecbabf52600f
parent 0 eb1f2e154e89
--- /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 <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