textinput/peninputfingerhwrar/src/peninputfingerhwrarindicator.cpp
branchRCL_3
changeset 3 f5a1e66df979
child 5 a47de9135b21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarindicator.cpp	Fri Feb 19 23:09:27 2010 +0200
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 2009 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:  CPeninputArabicFingerHwrIndicator
+*
+*/
+
+#include <AknsUtils.h>
+#include <barsread.h>
+
+#include "peninputfingerhwrarindicator.h"
+#include "peninputlayout.h"
+const TInt KInvalidResId = -1;
+const TInt KInvalidBmp = -1 ;
+const TInt KInvalidColorGroup = -1;
+
+
+// ---------------------------------------------------------------------------
+// CPeninputArabicFingerHwrIndicator::NewL
+// factory function
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CPeninputArabicFingerHwrIndicator* CPeninputArabicFingerHwrIndicator::NewL(CFepUiLayout* aUiLayout, TInt aCtrlId)
+    {
+    CPeninputArabicFingerHwrIndicator* lable=new (ELeave) CPeninputArabicFingerHwrIndicator(aUiLayout,aCtrlId);
+
+    CleanupStack::PushL(lable);
+    lable->BaseConstructL();
+    CleanupStack::Pop(lable);
+
+    return lable;    
+    }
+    
+// ---------------------------------------------------------------------------
+// CPeninputArabicFingerHwrIndicator::CPeninputArabicFingerHwrIndicator
+// C++ default constructor
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CPeninputArabicFingerHwrIndicator::CPeninputArabicFingerHwrIndicator(CFepUiLayout* aUiLayout, TInt aCtrlId)
+    :CFepUiBaseCtrl(TRect(0,0,0,0),aUiLayout,aCtrlId)
+    {
+    SetControlType(EUserCtrlBase | ECtrlBaseCtrl);
+    
+#ifdef __ALPHA_TRANCEPARENCY__
+    const TRgb KDefaultButtonBackCol = TRgb(30,30,30);
+#else
+    const TRgb KDefaultButtonBackCol = TRgb(230,230,230);
+#endif
+    
+    SetBkColor(KDefaultButtonBackCol);
+   }
+
+// ---------------------------------------------------------------------------
+// CPeninputArabicFingerHwrIndicator::~CPeninputArabicFingerHwrIndicator
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CPeninputArabicFingerHwrIndicator::~CPeninputArabicFingerHwrIndicator()
+    {  
+     
+    }
+
+void CPeninputArabicFingerHwrIndicator::ConstructFromResourceL( TInt aResID )
+	{
+	if (aResID == KInvalidResId)
+		{
+	    User::Leave( KErrArgument );
+		}
+	//DestroyRes();
+		
+	TResourceReader reader;
+    CCoeEnv::Static()->CreateResourceReaderLC(reader, aResID);
+    
+    // Read the file name of the bmps
+    TPtrC bmpFileName = reader.ReadTPtrC();    
+    TInt32 imgMajorSkinId = reader.ReadInt32();
+    TInt colorGroup = reader.ReadInt16();
+    TAknsItemID id;
+
+	// Get the image ids and mask ids from resource
+    TInt bmpId = reader.ReadInt16(); 
+    TInt bmpMskId = reader.ReadInt16();
+    
+    // Read skin item id
+    const TInt skinitemid = reader.ReadInt16();
+    id.Set(TInt(imgMajorSkinId), skinitemid);
+	
+    if ( bmpId == KInvalidBmp || 
+    	 bmpMskId == KInvalidBmp ||
+    	 colorGroup == KInvalidColorGroup )
+    	{
+    	User::Leave( KErrGeneral );
+    	}
+    
+	CFbsBitmap* bmp;
+	CFbsBitmap* bmpMask;	
+    AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
+				                 id,
+				                 KAknsIIDQsnIconColors,
+				                 colorGroup,
+				                 bmp,
+				                 bmpMask,
+				                 bmpFileName,
+				                 bmpId,
+				                 bmpMskId,
+				                 TRgb() );   	
+    
+	SetBitmapL(bmp);
+	SetMaskBitmapL(bmpMask);
+    CleanupStack::PopAndDestroy(); // reader
+	}
+	
+// ---------------------------------------------------------------------------
+// CPeninputArabicFingerHwrIndicator::Draw
+// Draw the control
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//    
+void CPeninputArabicFingerHwrIndicator::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(KTransparentColor));//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());
+            }    
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputArabicFingerHwrIndicator::SetBitmapL
+// Set bitmap for given status
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//    
+void CPeninputArabicFingerHwrIndicator::SetBitmapL(CFbsBitmap* aBitmap)
+    {
+    if(!aBitmap)
+        {
+        return;
+        }
+        
+    SetBackgroundBitmapL(aBitmap);    
+    }  
+   
+// ---------------------------------------------------------------------------
+// CPeninputArabicFingerHwrIndicator::SetMaskBitmapL
+// Set mask bitmap for given status
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//    
+void CPeninputArabicFingerHwrIndicator::SetMaskBitmapL(CFbsBitmap* aBmp)
+    {   
+    if(!aBmp)
+        {
+        return;   
+        }
+        
+    SetBackgroundMaskBitmapL(aBmp); 
+    }
+    
+// ---------------------------------------------------------------------------
+// CPeninputArabicFingerHwrIndicator::SizeChanged
+// This methods shall be called by the container's SizeChanged handler
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrIndicator::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);
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputArabicFingerHwrIndicator::ResizeBitmaps
+// This methods shall be called by the container's SizeChanged handler
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CPeninputArabicFingerHwrIndicator::ResizeBitmaps(TSize aSize)
+    {
+    if (BkMaskBmp() && 
+        BkMaskBmp()->SizeInPixels() != aSize)
+        {
+       	AknIconUtils::SetSize(BkMaskBmp(), aSize, EAspectRatioNotPreserved);
+        }
+
+    if (BackgroundBmp() && 
+        BackgroundBmp()->SizeInPixels() != aSize)
+        {
+       	AknIconUtils::SetSize(BackgroundBmp(), aSize, EAspectRatioNotPreserved);
+        }
+    }
+
+// End Of File