textinput/peninputgenericitut/src/peninputcommonbgctrl.cpp
branchRCL_3
changeset 21 ecbabf52600f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputgenericitut/src/peninputcommonbgctrl.cpp	Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,192 @@
+/*
+* 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:
+*
+*/
+
+// system includes
+#include <peninputlayout.h>
+#include <AknIconUtils.h>
+#include <coemain.h>
+#include <AknsUtils.h>
+#include <AknsDrawUtils.h> 
+// user includes
+#include "peninputcommonbgctrl.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+CAknFepCtrlCommonBgCtrl* CAknFepCtrlCommonBgCtrl::NewL(CFepUiLayout* aUiLayout, 
+                                                       TInt aControlId, 
+                                                       TAknsItemID aFrameID,
+    								 				   TAknsItemID aCenterID)
+    { 
+    CAknFepCtrlCommonBgCtrl* self = NewLC(aUiLayout, 
+                                          aControlId, 
+                                          aFrameID, 
+                                          aCenterID);
+    CleanupStack::Pop(self);
+    
+    return self;                        
+    }
+    
+CAknFepCtrlCommonBgCtrl* CAknFepCtrlCommonBgCtrl::NewLC(CFepUiLayout* aUiLayout, 
+                                                        TInt aControlId, 
+                                                        TAknsItemID aFrameID,
+    								 					TAknsItemID aCenterID)
+    { 
+    CAknFepCtrlCommonBgCtrl* self = new (ELeave) CAknFepCtrlCommonBgCtrl(aUiLayout, 
+                                                                         aControlId,
+                                                                         aFrameID,
+                                                                         aCenterID);
+    CleanupStack::PushL(self);
+    self->BaseConstructL();
+	self->SetOrdinalPos(CFepUiBaseCtrl::EOrderBackground); 
+    return self;                      
+    }
+    	
+void CAknFepCtrlCommonBgCtrl::SizeChanged(const TRect& aRect)
+	{
+    if (aRect.Size().iWidth == 0 || aRect.Size().iHeight == 0)
+    {
+    return;
+    }
+	
+    TRect rect = Rect();
+    if ( aRect == rect )
+        {
+        return;
+        }
+    
+	SetRect( aRect );
+	
+	Draw();
+    UpdateArea(Rect(), EFalse);
+	}
+	
+TBool CAknFepCtrlCommonBgCtrl::Contains(const TPoint& /*aPt*/)
+	{
+	return EFalse;	
+	}
+
+CAknFepCtrlCommonBgCtrl::CAknFepCtrlCommonBgCtrl(CFepUiLayout* aUiLayout, 
+                                                 TInt aControlId, 
+                                                 TAknsItemID aFrameID,
+    								 			 TAknsItemID aCenterID)
+    : CFepUiBaseCtrl(TRect(), aUiLayout, aControlId),
+   	  iFrameID(aFrameID), iCenterID(aCenterID)
+    {        
+    SetControlType( ECtrlBackgroundCtrl );
+    }
+
+CAknFepCtrlCommonBgCtrl::~CAknFepCtrlCommonBgCtrl()
+    {
+    iSubItems.Reset();
+    iSubItems.Close();
+    }
+
+void CAknFepCtrlCommonBgCtrl::SetFrameID( TAknsItemID aFrameID, TAknsItemID aCenterID )
+	{
+	iFrameID 	= aFrameID;
+	iCenterID 	= aCenterID;	
+	}
+
+void CAknFepCtrlCommonBgCtrl::Draw()
+    {
+    if(Hiden() || !Ready() || Rect().Size() == TSize(0,0))
+	    {
+	    return;
+	    }
+	
+    CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
+    
+    //mask bitmaps
+  	DrawOpaqueMaskBackground();  
+    TRect rect = Rect();        
+    // ----- draw frame -----
+    gc->Activate( BitmapDevice() );                
+    gc->Clear(rect);
+	DrawFrame( gc, rect, iFrameID, iCenterID);
+	
+	for( TInt i = 0; i < iSubItems.Count(); i++ )
+		{
+		if( iSubItems[i].iIsShow )
+			{
+			DrawFrame( gc, 
+					   iSubItems[i].iRect, 
+					   iSubItems[i].iFrameID, 
+					   iSubItems[i].iCenterID );				
+			}
+		}
+    }
+    
+void CAknFepCtrlCommonBgCtrl::ReDrawRect(const TRect& aRect)
+	{
+    if(Hiden() || !Ready() || Rect().Size() == TSize(0,0))
+	    {
+	    return;
+	    }	
+	    
+	CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
+	DrawOpaqueMaskBackground();  
+	gc->Activate( BitmapDevice() );                
+    gc->Clear(aRect);
+    
+	gc->SetClippingRect( aRect );
+    TRect rect = Rect();        
+	
+	DrawFrame( gc, rect, iFrameID, iCenterID);
+	
+	for( TInt i = 0; i < iSubItems.Count(); i++ )
+		{
+		if( iSubItems[i].iIsShow )
+			{
+			DrawFrame( gc, 
+					   iSubItems[i].iRect, 
+					   iSubItems[i].iFrameID, 
+					   iSubItems[i].iCenterID );				
+			}
+		}	    
+    gc->CancelClippingRect();
+	}
+	
+void CAknFepCtrlCommonBgCtrl::AddSubBgItemL( const TCommonBgCtrlSubItem& aSubItem )
+	{
+	iSubItems.AppendL( aSubItem );	
+	}
+
+void CAknFepCtrlCommonBgCtrl::ShowSubBgItem( TInt aIndex, TBool aShow )
+	{
+	iSubItems[aIndex].iIsShow = aShow;
+	}
+
+void CAknFepCtrlCommonBgCtrl::DrawFrame( CFbsBitGc* aGc, 
+										 const TRect& aRect,
+										 TAknsItemID aFrameID,
+										 TAknsItemID aCenterID )
+	{
+	MAknsSkinInstance* skin = UiLayout()->SkinInstance();
+    TRect innerRect = aRect;
+    innerRect.Shrink( 4, 4 );
+	
+    AknsDrawUtils::DrawFrame(
+						    skin, *aGc, 
+						    aRect, innerRect, 
+						    aFrameID, aCenterID);	
+	}
+	
+TCommonBgCtrlSubItem& CAknFepCtrlCommonBgCtrl::GetSubBgItem( TInt aIndex )	
+	{
+	return iSubItems[aIndex];	
+	}
+//  End Of File