--- a/textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp Wed Jun 23 04:57:58 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4098 +0,0 @@
-/*
-* Copyright (c) 2002-2005 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 of button
-*
-*/
-
-
-// system includes
-#include <barsread.h>
-#include <peninputlayout.h>
-#include <AknIconUtils.h>
-#include <coemain.h>
-#include <AknsUtils.h>
-#include <AknUtils.h>
-#include <AknsDrawUtils.h>
-// user includes
-#include <peninputbutton.h>
-#include <peninputdragbutton.h>
-#include <peninputeventbutton.h>
-#include <peninputmultimodebutton.h>
-#include <peninputrepeatbutton.h>
-#include <peninputrawkeybutton.h>
-#include <peninputcommonbutton.h>
-#include <peninputmultiimagebutton.h>
-#include <peninputcommonctrls.hrh>
-#include <peninputcommonlayoutglobalenum.h>
-
-const TInt KInvalidBmp = -1 ;
-
-//default value for long press timer
-const TInt KLongPressInterval = 600000;
-
-//default value for repeat timer
-const TInt KRepeatInterval = 100000;
-
-//default text color and shadow text color
-const TUint32 KDefaultTextColor = 0x000000;
-const TUint32 KDefaultShadowTextColor = 0xffffff;
-const TInt32 KInvalidResId = -1;
-const TInt KInvalidEventId = 0xffff;
-//const TInt KFadingParamBlack = 255;
-//const TInt KFadingParamWhite = 0;
-
-const TInt KTransparency[256] =
- {
- 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7,
- 8, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13,
- 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 19,
- 19, 19, 20, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 23, 24, 24,
- 24, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, 29,
- 30, 30, 30, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35,
- 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 40, 40, 40,
- 41, 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 46,
- 46, 46, 47, 47, 47, 47, 48, 48, 48, 49, 49, 49, 50, 50, 50, 50, 51, 51,
- 51, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 56,
- 57, 57, 57, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62,
- 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 65, 66, 66, 66, 67, 67, 67,
- 68, 68, 68, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 71, 72, 72, 72, 73,
- 73, 73, 74, 74, 74, 74, 75, 75, 75, 76, 76, 76, 77, 77
- };
-// Invalid function icon color group
-const TInt KInvalidColorGroup = -1;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::CAknFepCtrlButton
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlButton::CAknFepCtrlButton(CFepUiLayout* aUiLayout, TInt aControlId)
-: CButtonBase(TRect(), aUiLayout, aControlId), iFirstTimeConstruct(ETrue), iHighlight(EFalse)
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::NewL
-// Two-phased constructor.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlButton* CAknFepCtrlButton::NewL(CFepUiLayout* aUiLayout, TInt aControlId)
- {
- CAknFepCtrlButton* self = NewLC(aUiLayout, aControlId);
- CleanupStack::Pop(self);
-
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::NewLC
-// Two-phased constructor.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlButton* CAknFepCtrlButton::NewLC(CFepUiLayout* aUiLayout, TInt aControlId)
- {
- CAknFepCtrlButton* self = new (ELeave) CAknFepCtrlButton(aUiLayout, aControlId);
- CleanupStack::PushL(self);
- self->BaseConstructL();
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlButton::~CAknFepCtrlButton()
- {
- iBmpList.Close();
- iMaskBmpList.Close();
- }
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::ConstructFromResourceL
-// The order of the image ids in the CButtonBase class must not be changed
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlButton::ConstructFromResourceL(TResourceReader& aReader)
- {
- if (!iFirstTimeConstruct)
- {
- iBmpList.Close();
- iMaskBmpList.Close();
- ResetBmpPool();
- }
-
- TPtrC bmpFileName = aReader.ReadTPtrC(); // Read the file name of the bmps
- TInt32 imgMajorSkinId = aReader.ReadInt32();
- TInt colorgroup = aReader.ReadInt16();
- TAknsItemID id;
-
- for (TInt ii = 0; ii < EBtnBmpLastType + 1; ++ii)
- {
- // Get the image ids and mask ids from resource
- TInt bmpId = aReader.ReadInt16();
- TInt bmpMskId = aReader.ReadInt16();
-
- // read skin item id
- const TInt skinitemid = aReader.ReadInt16();
- id.Set(TInt(imgMajorSkinId), skinitemid);
-
- if (bmpId != KInvalidBmp)
- {
- CFbsBitmap* bmp = NULL;
- CFbsBitmap* maskbmp = NULL;
-
- if (bmpMskId != KInvalidBmp)
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- maskbmp,
- bmpFileName,
- bmpId,
- bmpMskId);
-
- // set maskbmp and size
- SetMaskBitmapL(maskbmp, TButtonBmpType(EBtnBmpNonActive + ii));
- iMaskBmpList.Append(maskbmp);
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- bmpFileName,
- bmpId);
- }
-
- // set bmp and size
- SetBitmapL(bmp, TButtonBmpType(EBtnBmpNonActive + ii));
- iBmpList.Append(bmp);
- }
- }
-
- if (!iFirstTimeConstruct)
- {
- ResizeBitmaps(Rect().Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::ConstructFromResourceL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlButton::ConstructFromResourceL()
- {
- if (iResourceId == KInvalidResId)
- {
- User::Leave(KErrArgument);
- }
-
- if (!iFirstTimeConstruct)
- {
- // need to remove original bmp and maskbmp
- iBmpList.Close();
- iMaskBmpList.Close();
- ResetBmpPool();
- }
-
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId);
-
- TPtrC bmpFileName = reader.ReadTPtrC(); // Read the file name of the bmps
- TInt32 imgMajorSkinId = reader.ReadInt32();
- TInt colorgroup = reader.ReadInt16();
- TAknsItemID id;
-
- for (TInt ii = 0; ii < EBtnBmpLastType + 1; ++ii)
- {
- // 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)
- {
- CFbsBitmap* bmp = NULL;
- CFbsBitmap* maskbmp = NULL;
-
- if (bmpMskId != KInvalidBmp)
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- maskbmp,
- bmpFileName,
- bmpId,
- bmpMskId);
-
- // set maskbmp and size
- SetMaskBitmapL(maskbmp, TButtonBmpType(EBtnBmpNonActive + ii));
- iMaskBmpList.Append(maskbmp);
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- bmpFileName,
- bmpId);
- }
-
- // set bmp and size
- SetBitmapL(bmp, TButtonBmpType(EBtnBmpNonActive + ii));
- iBmpList.Append(bmp);
- }
- }
-
- CleanupStack::PopAndDestroy(); // reader
-
- if (!iFirstTimeConstruct)
- {
- ResizeBitmaps(Rect().Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::Draw
-// Draws UI
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlButton::Draw()
- {
- if(!AbleToDraw())
- return;
-
- if ( !BackgroundBmp() )
- {
- CButtonBase::Draw();
- }
-
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
-
- //mask bitmaps
- gc->Activate( MaskBitmapDevice() );
-
- gc->SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc->SetBrushColor( TRgb(KOpaqueColor));//Non transparent at all
- gc->SetPenStyle(CGraphicsContext::ESolidPen );
- gc->SetPenSize( PenSize());
- gc->SetPenColor( TRgb(KOpaqueColor) );
- gc->DrawRect(Rect());
-
- // ----- draw bitmaps -----
- gc->Activate( BitmapDevice() );
- if ( BackgroundBmp() )
- {
- TSize size=BackgroundBmp()->SizeInPixels();
-
- gc->DrawBitmap(Rect(), BackgroundBmp(),size);
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::SetActive
-// Set active for the button
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlButton::SetActive(TBool aActiveFlag)
- {
- if( IsDimmed() )
- {
- return;
- }
-
- if(IsActive() != aActiveFlag)
- {
- CFepUiBaseCtrl::SetActive(aActiveFlag);
- if(aActiveFlag || iHighlight)
- {
- SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse));
- SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue));
- //Hide(EFalse); //active button won't be Hiden ???
- }
- else
- {
- SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse));
- SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue));
- }
- if(BitGc())
- {
- Draw();
- UpdateArea(Rect(),EFalse);
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::SetHighlight
-// Set highlight for the button
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlButton::SetHighlight(TBool aIsHighlight)
- {
- iHighlight = aIsHighlight;
-
- if ( iHighlight )
- {
- SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse));
- SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue));
- }
- else
- {
- SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse));
- SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue));
- }
- Draw();
- UpdateArea(Rect(), EFalse);
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::ResizeBitmaps
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlButton::ResizeBitmaps(TSize aSize)
- {
- if (iMaskBmpList.Count() >= 1 &&
- iMaskBmpList[0]->SizeInPixels() != aSize)
- {
- for( int ii = 0; ii < iMaskBmpList.Count(); ++ii )
- {
- AknIconUtils::SetSize(iMaskBmpList[ii], aSize, EAspectRatioNotPreserved);
- }
- }
-
- if (iBmpList.Count() >= 1 &&
- iBmpList[0]->SizeInPixels() != aSize)
- {
- for( int ii = 0; ii < iBmpList.Count(); ++ii )
- {
- AknIconUtils::SetSize(iBmpList[ii], aSize, EAspectRatioNotPreserved);
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::SizeChanged
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlButton::SizeChanged(TRect aNewRect, TBool aIsReloadImages)
- {
- if ((aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0) &&
- (ControlId() != EPeninupWindowCtrlIdArrowLeftBtn &&
- ControlId() != EPeninupWindowCtrlIdArrowRightBtn))
- {
- return;
- }
-
- SetRect(aNewRect);
-
- //if (aIsReloadImages)
- {
- ResizeBitmaps(aNewRect.Size());
- }
-
- Draw();
- UpdateArea(Rect(), EFalse);
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlButton::HandlePointerLeave
-// Handle pointer leave event
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlButton::HandlePointerLeave(const TPoint& aPt)
- {
- if( IsDimmed() )
- return;
- if( iHighlight )
- {
- SetBackgroundBmp(iActiveBmp);
- SetBackgroundMaskBmp(iActiveMaskBmp);
- }
-
- else
- {
- SetBackgroundBmp(iNonActiveBkBmp);
- SetBackgroundMaskBmp(iNonActiveBkMaskBmp);
- }
- Draw();
- UpdateArea(Rect(), EFalse);
- CFepUiBaseCtrl::HandlePointerLeave(aPt);
- return ;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlDragButton::CAknFepCtrlDragButton
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlDragButton::CAknFepCtrlDragButton(CFepUiLayout* aUiLayout, TInt aControlId)
-: CDragBar(TRect(), aUiLayout, aControlId), iFirstTimeConstruct(ETrue)
- {
- }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlDragButton::~CAknFepCtrlDragButton()
- {
- iBmpList.Close();
- iMaskBmpList.Close();
-
- DeleteForgroundRes();
- delete iText;
- }
-
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlDragButton::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlDragButton* CAknFepCtrlDragButton::NewL(CFepUiLayout* aUiLayout,
- TInt aControlId)
- {
- CAknFepCtrlDragButton* self = NewLC(aUiLayout, aControlId);
- CleanupStack::Pop(self);
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlDragButton::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlDragButton* CAknFepCtrlDragButton::NewLC(CFepUiLayout* aUiLayout,
- TInt aControlId)
- {
- CAknFepCtrlDragButton* self = new (ELeave) CAknFepCtrlDragButton(aUiLayout, aControlId);
- CleanupStack::PushL(self);
- self->ConstructL();
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlDragButton::ConstructFromResourceL
-// The order of the image ids in the CButtonBase class must not be changed
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlDragButton::ConstructFromResourceL(TResourceReader& aReader)
- {
- /*
- if (!iFirstTimeConstruct)
- {
- iBmpList.Close();
- iMaskBmpList.Close();
- ResetBmpPool();
- }
-
- TPtrC bmpFileName = aReader.ReadTPtrC();
- TInt32 imgMajorSkinId = aReader.ReadInt32();
- TAknsItemID id;
-
- for (TInt ii = 0; ii < EBtnBmpLastType + 1; ++ii)
- {
- const TInt16 bmpId = aReader.ReadInt16();
- const TInt16 bmpMskId = aReader.ReadInt16();
-
- // read skin item id
- const TInt skinitemid = aReader.ReadInt16();
- id.Set(TInt(imgMajorSkinId), skinitemid);
-
- if (bmpId != KInvalidBmp)
- {
- CFbsBitmap* bmp = NULL;
- CFbsBitmap* maskbmp = NULL;
-
- if (bmpMskId != KInvalidBmp)
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- maskbmp,
- bmpFileName,
- bmpId,
- bmpMskId);
-
- SetMaskBitmapL(maskbmp, TButtonBmpType(EBtnBmpNonActive + ii));
- iMaskBmpList.Append(maskbmp);
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- bmpFileName,
- bmpId);
- }
-
- SetBitmapL(bmp, TButtonBmpType(EBtnBmpNonActive + ii));
- iBmpList.Append(bmp);
- }
- }
-
- if (!iFirstTimeConstruct)
- {
- ResizeBitmaps(Rect().Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;*/
- if (!iFirstTimeConstruct)
- {
- DeleteForgroundRes();
- }
-
- TPtrC bmpFileName = aReader.ReadTPtrC(); // Read the file name of the bmps
- TInt32 imgMajorSkinId = aReader.ReadInt32();
- TInt colorGroup = aReader.ReadInt16();
- TAknsItemID id;
-
- // Get the image ids and mask ids from resource
- TInt bmpId = aReader.ReadInt16();
- TInt bmpMskId = aReader.ReadInt16();
-
- // read skin item id
- const TInt skinitemid = aReader.ReadInt16();
- id.Set(TInt(imgMajorSkinId), skinitemid);
-
- if (bmpId != KInvalidBmp)
- {
- if (bmpMskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForgroundBmp,
- iForgroundBmpMask,
- bmpFileName,
- bmpId,
- bmpMskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id,
- KAknsIIDQsnIconColors,
- colorGroup,
- iForgroundBmp,
- iForgroundBmpMask,
- bmpFileName,
- bmpId,
- bmpMskId,
- AKN_LAF_COLOR( 0 ) );
- }
-
- AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iForgroundBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);
-
- /*CreateDimmedMaskL( iForgroundDimBmpMask,
- iForgroundBmpMask );
- AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);*/
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForgroundBmp,
- bmpFileName,
- bmpId);
- AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- }
- }
-
- if (!iFirstTimeConstruct)
- {
- //ResizeBitmaps(iForgroundBmpRect.Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
-
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlDragButton::ConstructFromResourceL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlDragButton::ConstructFromResourceL()
- {
- /*
- if (iResourceId == KInvalidResId)
- {
- User::Leave(KErrArgument);
- }
-
- if (!iFirstTimeConstruct)
- {
- iBmpList.Close();
- iMaskBmpList.Close();
- ResetBmpPool();
- }
-
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId);
-
- TPtrC bmpFileName = reader.ReadTPtrC();
- TInt32 imgMajorSkinId = reader.ReadInt32();
- TAknsItemID id;
-
- for (TInt ii = 0; ii < EBtnBmpLastType + 1; ++ii)
- {
- const TInt16 bmpId = reader.ReadInt16();
- const TInt16 bmpMskId = reader.ReadInt16();
-
- // read skin item id
- const TInt skinitemid = reader.ReadInt16();
- id.Set(TInt(imgMajorSkinId), skinitemid);
-
- if (bmpId != KInvalidBmp)
- {
- CFbsBitmap* bmp = NULL;
- CFbsBitmap* maskbmp = NULL;
-
- if (bmpMskId != KInvalidBmp)
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- maskbmp,
- bmpFileName,
- bmpId,
- bmpMskId);
-
- SetMaskBitmapL(maskbmp, TButtonBmpType(EBtnBmpNonActive + ii));
- iMaskBmpList.Append(maskbmp);
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- bmpFileName,
- bmpId);
- }
-
- SetBitmapL(bmp, TButtonBmpType(EBtnBmpNonActive + ii));
- iBmpList.Append(bmp);
- }
- }
-
- CleanupStack::PopAndDestroy(); // reader
-
- if (!iFirstTimeConstruct)
- {
- ResizeBitmaps(Rect().Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;*/
- if (iResourceId == KInvalidResId)
- {
- return;
- }
-
- if (!iFirstTimeConstruct)
- {
- // need to remove original bmp and maskbmp
- DeleteForgroundRes();
- }
-
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId);
-
- TPtrC bmpFileName = reader.ReadTPtrC(); // Read the file name of the bmps
- 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)
- {
- if (bmpMskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForgroundBmp,
- iForgroundBmpMask,
- bmpFileName,
- bmpId,
- bmpMskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id,
- KAknsIIDQsnIconColors,
- colorGroup,
- iForgroundBmp,
- iForgroundBmpMask,
- bmpFileName,
- bmpId,
- bmpMskId,
- AKN_LAF_COLOR( 0 ) );
- }
-
- AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iForgroundBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);
-
- /*CreateDimmedMaskL( iForgroundDimBmpMask, iForgroundBmpMask );
- AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);*/
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForgroundBmp,
- bmpFileName,
- bmpId);
- AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- }
- }
-
- CleanupStack::PopAndDestroy(); // reader
-
- if (!iFirstTimeConstruct)
- {
- //ResizeBitmaps(iForgroundBmpRect.Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
-
- }
-
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlDragButton::DeleteForgroundRes
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlDragButton::DeleteForgroundRes()
- {
- if( iForgroundBmp )
- {
- delete iForgroundBmp;
- iForgroundBmp = NULL;
- }
- if( iForgroundBmpMask )
- {
- delete iForgroundBmpMask;
- iForgroundBmpMask = NULL;
- }
- if( iForgroundDimBmpMask )
- {
- delete iForgroundDimBmpMask;
- iForgroundDimBmpMask = NULL;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlDragButton::CreateDimmedMaskL
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlDragButton::CreateDimmedMaskL( CFbsBitmap*& aDimmedMask,
- const CFbsBitmap* aMask
- /*TScaleMode aScaleMode*/ )
- {
- if (aMask && aMask->DisplayMode() == EGray256)
- {
- delete aDimmedMask;
- aDimmedMask = NULL;
-
- aDimmedMask = new (ELeave) CFbsBitmap;
-
- User::LeaveIfError(aDimmedMask->Create(aMask->SizeInPixels(), EGray256));
- CleanupStack::PushL(aDimmedMask);
-
- CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDimmedMask);
- CleanupStack::PushL(bitmapDevice);
-
- CFbsBitGc* bitGc(NULL);
- User::LeaveIfError(bitmapDevice->CreateContext(bitGc));
- CleanupStack::PushL(bitGc);
-
- bitGc->SetPenStyle(CGraphicsContext::ESolidPen);
- bitGc->BitBlt(TPoint(0, 0), aMask);
-
- aDimmedMask->LockHeap();
- TInt w = aMask->SizeInPixels().iWidth;
- TInt h = aMask->SizeInPixels().iHeight;
- TInt dataStride = aMask->DataStride() - w;
- unsigned char* address = (unsigned char *)aDimmedMask->DataAddress();
-
- for ( TInt i = 0; i < h; ++i )
- {
- for ( TInt j = 0; j < w; ++j )
- {
- *address = KTransparency[*address];
- ++address;
- }
- address += dataStride;
- }
-
- aDimmedMask->UnlockHeap();
-
- //AknIconUtils::SetSize(aDimmedMask, aMask->SizeInPixels(), aScaleMode);
-
- CleanupStack::PopAndDestroy(2); // bitmapDevice, bitGc
- CleanupStack::Pop(1); // aDimmedMask
- }
-
- }
-
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlDragButton::SetForgroundBmpRect
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlDragButton::SetForgroundBmpRect(const TRect& aRect)
- {
- iForgroundBmpRect = aRect;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlDragButton::SetForegroundBmpL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlDragButton::SetForegroundBmpL(CFbsBitmap* aBmp,
- CFbsBitmap* aMaskBmp)
- {
- DeleteForgroundRes();
-
- iForgroundBmp = aBmp;
- iForgroundBmpMask = aMaskBmp;
-
- ResizeBitmaps(iForgroundBmpRect.Size());
- }
-
-EXPORT_C void CAknFepCtrlDragButton::Move(const TPoint& aOffset)
- {
- CButtonBase::Move(aOffset);
- iForgroundBmpRect.Move( aOffset );
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlDragButton::HandlePointerDownEventL
-// Handle button down event
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CFepUiBaseCtrl* CAknFepCtrlDragButton::HandlePointerDownEventL(const TPoint& aPt)
- {
- if( IsDimmed() )
- return NULL;
-
- CDragBar::HandlePointerDownEventL(aPt);
-
- SetReady(ETrue);
- Draw();
- UpdateArea(Rect(),EFalse);
- ReportEvent(EEventButtonDown);
- return this;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlDragButton::Draw
-// Draws UI
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlDragButton::Draw()
- {
- if(!AbleToDraw())
- return;
-
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
-
- //mask bitmaps
- DrawOpaqueMaskBackground();
- TRect rect = Rect();
- TRect innerRect = rect;
- innerRect.Shrink( 10, 10 );
-
- // ----- draw bitmaps -----
- gc->Activate( BitmapDevice() );
- //gc->Clear(rect);
-
- CFbsBitmap* bmpMask = NULL;
-
- // Draw background
- if( IsDimmed() ) // Dimmed state
- {
- AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
- *gc,
- rect,
- innerRect,
- iInactiveImgID,
- KAknsIIDDefault );
- if( iForgroundDimBmpMask )
- {
- delete iForgroundDimBmpMask;
- iForgroundDimBmpMask = NULL;
- }
- TRAP_IGNORE(CreateDimmedMaskL( iForgroundDimBmpMask,
- iForgroundBmpMask ));
- AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);
- bmpMask = iForgroundDimBmpMask;
- }
- else
- {
- // Normal state or pressed state
- TAknsItemID ImgID = (IsDragging() | PointerDown()) ? iPressedImgID : iNormalImgID;
- AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
- *gc,
- rect,
- innerRect,
- ImgID,
- KAknsIIDDefault );
- bmpMask = iForgroundBmpMask;
- }
-
- // Draw forground
- if( iForgroundBmp )
- {
- TRect srcRect( TPoint( 0, 0 ), iForgroundBmp->SizeInPixels() );
- if( bmpMask )
- {
- gc->BitBltMasked( iForgroundBmpRect.iTl,
- iForgroundBmp,
- srcRect,
- bmpMask,
- EFalse);
- }
- else
- {
- gc->BitBlt( iForgroundBmpRect.iTl,
- iForgroundBmp,
- srcRect );
- }
- }
-
- if (iText)
- {
- TAknLayoutText textLayout;
- textLayout.LayoutText(Rect(), iTextFormat);
- textLayout.DrawText(*gc, *iText);
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlDragButton::ResizeBitmaps
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CAknFepCtrlDragButton::ResizeBitmaps(TSize aInnerSize)
- {
- /*
- if (iMaskBmpList.Count() >= 1 &&
- iMaskBmpList[0]->SizeInPixels() != aSize)
- {
- for( TInt ii = 0; ii < iMaskBmpList.Count(); ++ii )
- {
- AknIconUtils::SetSize(iMaskBmpList[ii], aSize, EAspectRatioNotPreserved);
- }
- }
-
- if (iBmpList.Count() >= 1 &&
- iBmpList[0]->SizeInPixels() != aSize)
- {
- for( TInt ii = 0; ii < iBmpList.Count(); ++ii )
- {
- AknIconUtils::SetSize(iBmpList[ii], aSize, EAspectRatioNotPreserved);
- }
- }*/
- if( iForgroundBmp && ( iForgroundBmp->SizeInPixels() != aInnerSize ) )
- {
- AknIconUtils::SetSize( iForgroundBmp, aInnerSize, EAspectRatioNotPreserved );
- }
- if( iForgroundBmpMask && ( iForgroundBmpMask->SizeInPixels() != aInnerSize ) )
- {
- AknIconUtils::SetSize( iForgroundBmpMask, aInnerSize, EAspectRatioNotPreserved );
- }
-
- /*TRAP_IGNORE(CreateDimmedMaskL(iForgroundDimBmpMask,
- iForgroundBmpMask)); */
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlDragButton::SizeChanged
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlDragButton::SizeChanged(TRect aNewRect,
- TRect aInnerRect,
- TBool aIsReloadImages)
- {
- // Reset the position and the extent of the button aera
- /*if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0)
- {
- return;
- }
-
- SetRect(aNewRect);
-
- if (aIsReloadImages)
- {
- ResizeBitmaps(aNewRect.Size());
- }
-
- Draw();
- UpdateArea(Rect(), ETrue);*/
-
- if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0)
- {
- return;
- }
-
- TRect oriRect = Rect();
- SetRect(aNewRect);
- iForgroundBmpRect = aInnerRect;
-
- if (aIsReloadImages)
- {
- ResizeBitmaps(aInnerRect.Size() );
- }
- RootControl()->ReDrawRect( oriRect );
- UpdateArea(oriRect, EFalse);
- Draw();
- UpdateArea(Rect(), EFalse);
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::CAknFepCtrlMultiModeButton
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlMultiModeButton::CAknFepCtrlMultiModeButton(CFepUiLayout* aUiLayout,
- TInt aControlId,TAknsItemID aNormalID,
- TAknsItemID aPressedID,TAknsItemID aInactiveID)
- : CAknFepCtrlCommonButton(aUiLayout, aControlId, aNormalID, aPressedID, aInactiveID)
- {
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::NewL
-// Two-phased constructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlMultiModeButton* CAknFepCtrlMultiModeButton::NewL(CFepUiLayout* aUiLayout,
- TInt aControlId,TAknsItemID aNormalID,
- TAknsItemID aPressedID,TAknsItemID aInactiveID)
- {
- CAknFepCtrlMultiModeButton* self = NewLC(aUiLayout, aControlId,
- aNormalID, aPressedID, aInactiveID);
- CleanupStack::Pop(self);
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::NewLC
-// Two-phased constructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlMultiModeButton* CAknFepCtrlMultiModeButton::NewLC(CFepUiLayout* aUiLayout,
- TInt aControlId,TAknsItemID aNormalID,
- TAknsItemID aPressedID,TAknsItemID aInactiveID)
- {
- CAknFepCtrlMultiModeButton* self = new (ELeave) CAknFepCtrlMultiModeButton(aUiLayout,
- aControlId,
- aNormalID,
- aPressedID,
- aInactiveID);
- CleanupStack::PushL(self);
- self->BaseConstructL();
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlMultiModeButton::~CAknFepCtrlMultiModeButton()
- {
- iImageResIdList.Close();
- iForegroundBmpList.ResetAndDestroy();
- iForegroundBmpList.Close();
- iForegroundMaskBmpList.ResetAndDestroy();
- iForegroundMaskBmpList.Close();
-
- iModeTextList.ResetAndDestroy();
- iModeTextList.Close();
-
- iModesList.ResetAndDestroy();
- iModesList.Close();
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::ConstructFromResourceL
-// The order of the image ids in the CButtonBase class must not be changed
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-
-EXPORT_C void CAknFepCtrlMultiModeButton::ConstructFromResourceL(TResourceReader& aReader)
- {
- if (!iFirstTimeConstruct)
- {
- iImageResIdList.Close();
- iForegroundBmpList.ResetAndDestroy();
- iForegroundBmpList.Close();
- iForegroundMaskBmpList.ResetAndDestroy();
- iForegroundMaskBmpList.Close();
-
- iModeTextList.ResetAndDestroy();
- iModeTextList.Close();
-
-
- iModesList.ResetAndDestroy();
- iModesList.Close();
-
- ResetBmpPool();
- }
-
- // read text color and shadow text color
- TInt32 colorMajorSkinId = aReader.ReadInt32();
- const TInt skinitemid = aReader.ReadInt16();
- TInt textcoloridx = aReader.ReadInt16();
- TInt shadowtextcoloridx = aReader.ReadInt16();
-
- TAknsItemID id;
-
- id.Set(TInt(colorMajorSkinId), skinitemid);
- TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(),
- iFontColor,
- id,
- textcoloridx);
-
- if (error != KErrNone)
- {
- iFontColor = TRgb(KDefaultTextColor);
- }
-
- SetFontColor(iFontColor);
-
- error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(),
- iShadowFontColor,
- id,
- shadowtextcoloridx);
-
- if (error != KErrNone)
- {
- iShadowFontColor = TRgb(KDefaultShadowTextColor);
- }
-
- SetShadowFontColor(iShadowFontColor);
-
- const TInt16 countModes = aReader.ReadInt16(); // Read the count of different cases
-
- if (countModes <= 0)
- {
- User::Leave(KErrArgument);
- }
-
- iNumberOfModes = 0;
-
- for (TInt ii = 0; ii < countModes; ii++)
- {
- AddModeL(aReader);
- iNumberOfModes++;
- }
-
- if (iFirstTimeConstruct)
- {
- if (iImageResIdList.Count() == 1)
- {
- // set background bimap for button
- SetButtonBmpL(EBtnBmpNonActive, 0);
- iCurrentBmpType = EBtnBmpNonActive;
- }
-
- const TInt16 defaultModeIndex = aReader.ReadInt16();
- SetCurrentModeL(EBtnBmpNonActive, defaultModeIndex);
- }
- else
- {
- SetButtonBmpL(iCurrentBmpType, iCurrentMode);
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::ConstructFromResourceL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-
-EXPORT_C void CAknFepCtrlMultiModeButton::ConstructFromResourceL()
- {
- if (iResourceId == KInvalidResId)
- {
- return;
- }
-
- if (!iFirstTimeConstruct)
- {
- iImageResIdList.Close();
- iForegroundBmpList.ResetAndDestroy();
- iForegroundBmpList.Close();
- iForegroundMaskBmpList.ResetAndDestroy();
- iForegroundMaskBmpList.Close();
-
- iModeTextList.ResetAndDestroy();
- iModeTextList.Close();
-
-
- iModesList.ResetAndDestroy();
- iModesList.Close();
-
- ResetBmpPool();
- }
-
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId);
-
- // read text color and shadow text color
- TInt32 colorMajorSkinId = reader.ReadInt32();
- const TInt skinitemid = reader.ReadInt16();
- TInt textcoloridx = reader.ReadInt16();
- TInt shadowtextcoloridx = reader.ReadInt16();
-
- TAknsItemID id;
-
- id.Set(TInt(colorMajorSkinId), skinitemid);
- TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(),
- iFontColor,
- id,
- textcoloridx);
-
- if (error != KErrNone)
- {
- iFontColor = TRgb(KDefaultTextColor);
- }
-
- SetFontColor(iFontColor);
-
- error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(),
- iShadowFontColor,
- id,
- shadowtextcoloridx);
-
- if (error != KErrNone)
- {
- iShadowFontColor = TRgb(KDefaultShadowTextColor);
- }
-
- SetShadowFontColor(iShadowFontColor);
-
- const TInt16 countModes = reader.ReadInt16();
-
- if (countModes <= 0)
- {
- User::Leave(KErrArgument);
- }
-
- iNumberOfModes = 0;
-
- for (TInt ii = 0; ii < countModes; ii++)
- {
- AddModeL(reader);
- iNumberOfModes++;
- }
-
-
- if (iFirstTimeConstruct)
- {
- if (iImageResIdList.Count() == 1)
- {
- // set background bimap for button
- SetButtonBmpL(EBtnBmpNonActive, 0);
- iCurrentBmpType = EBtnBmpNonActive;
- }
-
- const TInt16 defaultModeIndex = reader.ReadInt16();
- SetCurrentModeL(EBtnBmpNonActive, defaultModeIndex);
- }
- else
- {
- ResizeBitmaps(iForgroundBmpRect.Size());
- SetButtonBmpL(iCurrentBmpType, iCurrentMode);
- Draw();
- }
-
- CleanupStack::PopAndDestroy(); // reader
-
- iFirstTimeConstruct = EFalse;
-
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::AddModeL
-// Add new display mode from resource reader
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::AddModeL(TResourceReader& aReader)
- {
- const TInt32 imageResId = aReader.ReadInt32();
- iModeTextList.Append(aReader.ReadHBufCL());
- const TInt rangeId = aReader.ReadInt16();
- const TInt modeId = aReader.ReadInt16();
-
- TAknFepModeIndicator* modeIndicator = new (ELeave) TAknFepModeIndicator;
- CleanupStack::PushL(modeIndicator);
-
- modeIndicator->iRangeId = rangeId;
- modeIndicator->iModeId = modeId;
- modeIndicator->iPermitted = ETrue;
-
- iModesList.AppendL(modeIndicator);
- CleanupStack::Pop(modeIndicator); // indicator
-
- if ( imageResId != KInvalidBmp )
- {
- // switch mode means change image
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC(reader, imageResId);
-
- TPtrC bmpFileName = reader.ReadTPtrC();
- TInt32 imgMajorSkinId = reader.ReadInt32();
- TInt colorGroup = reader.ReadInt16();
- TAknsItemID id;
-
- for (TInt jj = 0; jj < /*EBtnBmpLastType +*/ 1; jj++)
- {
- const TInt16 bmpId = reader.ReadInt16();
- const TInt16 bmpMskId = reader.ReadInt16();
- const TInt16 skinitemid = reader.ReadInt16();
- id.Set(TInt(imgMajorSkinId), skinitemid);
-
- if (bmpId != KInvalidBmp)
- {
- CFbsBitmap* bmp = NULL;
- CFbsBitmap* maskbmp = NULL;
-
- if (bmpMskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- maskbmp,
- bmpFileName,
- bmpId,
- bmpMskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id,
- KAknsIIDQsnIconColors,
- colorGroup,
- bmp,
- maskbmp,
- bmpFileName,
- bmpId,
- bmpMskId,
- AKN_LAF_COLOR( 0 ) );
-
- }
- CleanupStack::PushL(maskbmp);
- AknIconUtils::SetSize(maskbmp, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);
- iForegroundMaskBmpList.AppendL(maskbmp);
- CleanupStack::Pop(maskbmp);
-
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- bmp,
- bmpFileName,
- bmpId);
-
- }
-
- CleanupStack::PushL(bmp);
- AknIconUtils::SetSize(bmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- iForegroundBmpList.AppendL(bmp);
- CleanupStack::Pop(bmp);
-
- }
- }
-
- CleanupStack::PopAndDestroy(); //reader
-
- iImageResIdList.Append(imageResId);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::SetButtonBmp
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::SetButtonBmpL(const TButtonBmpType aType ,
- const TInt aMode)
- {
- if ( !ForgroundBmp() ||
- ForgroundBmp()->Handle() != iForegroundBmpList[aMode]->Handle() ||
- !ForgroundBmpMask() ||
- ForgroundBmpMask()->Handle() != iForegroundMaskBmpList[aMode]->Handle() )
- {
- CFbsBitmap* bmp = new (ELeave) CFbsBitmap;
- if(iForegroundMaskBmpList.Count() > 0 && iForegroundBmpList[aMode])
- {
- CleanupStack::PushL( bmp );
-
- User::LeaveIfError(bmp->Duplicate(iForegroundBmpList[aMode]->Handle()));
-
- CleanupStack::Pop( bmp );
- }
- else
- {
- delete bmp;
- bmp = NULL;
- }
- CFbsBitmap* maskbmp = new (ELeave) CFbsBitmap;
-
- if(iForegroundMaskBmpList.Count() > 0 && iForegroundMaskBmpList[aMode])
- {
- CleanupStack::PushL( maskbmp );
- User::LeaveIfError(maskbmp->Duplicate(iForegroundMaskBmpList[aMode]->Handle()));
- CleanupStack::Pop( maskbmp );
- }
- else
- {
- delete maskbmp;
- maskbmp = NULL;
- }
- SetForegroundBmpL(bmp,maskbmp);
- }
- else if ( ForgroundBmp()->SizeInPixels() != iForegroundBmpList[aMode]->SizeInPixels() ||
- ForgroundBmpMask()->SizeInPixels() != iForegroundMaskBmpList[aMode]->SizeInPixels())
- {
- ResizeBitmaps(iForegroundBmpList[aMode]->SizeInPixels());
- }
-
- if(aType == EBtnBmpActivePressed
- || aType == EBtnBmpNonActivePressed)
- {
- SetHighlight(ETrue);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::SetCurrentModeL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::SetCurrentModeL(const TButtonBmpType aType,
- const TInt aModeIndex)
- {
- if ((aModeIndex >= 0) &&
- (aModeIndex <= NumberOfModes()-1) &&
- (iModesList[aModeIndex]->iPermitted))
- {
- iCurrentMode = aModeIndex;
-
- if (iImageResIdList.Count() > 1)
- {
- // change mode means change image
- SetButtonBmpL(aType, iCurrentMode);
- iCurrentBmpType = aType;
- }
-
- Draw();
- UpdateArea(Rect());
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::NextMode
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlMultiModeButton::NextMode() const
- {
- TInt startIndex = 0;
-
- if (iCurrentMode < (NumberOfModes() -1))
- {
- startIndex = iCurrentMode + 1;
- }
-
- TBool find = EFalse;
-
- while (!find && (startIndex != iCurrentMode))
- {
- if (iModesList[startIndex]->iPermitted)
- {
- find = ETrue;
- }
- else
- {
- startIndex++;
-
- if (startIndex > (NumberOfModes()-1))
- {
- startIndex = 0;
- }
- }
- }
-
- if (find)
- {
- return startIndex;
- }
- else
- {
- return iCurrentMode;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::ImageAlreadyExist
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CAknFepCtrlMultiModeButton::ImageAlreadyExist(const TInt32 aResId)
- {
- TBool findResId = EFalse;
-
- for (TInt i=0; i<iImageResIdList.Count(); i++)
- {
- if (aResId == iImageResIdList[i])
- {
- findResId = ETrue;
-
- break;
- }
- }
-
- return findResId;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::DisplayText
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::DisplayText()
- {
- if ((iFont) && (iShadowFont))
- {
- // draw shadow text
- BitGc()->UseFont(iShadowFont);
-
- BitGc()->SetBrushStyle( CGraphicsContext::ENullBrush );
- BitGc()->SetBrushColor( KRgbBlack);//Non transparent at all
- BitGc()->SetPenColor(iShadowFontColor);
- BitGc()->SetPenStyle(CGraphicsContext::ESolidPen);
- BitGc()->SetPenSize( PenSize());
-
- TPoint pointText;
- TPoint pointShadowText;
-
- TInt leftMarginOfText =
- (Rect().Width() - iFont->TextWidthInPixels(*(iModeTextList[iCurrentMode])))/2;
-
- pointText.iX = Rect().iTl.iX + leftMarginOfText;
- pointText.iY = Rect().iTl.iY + Rect().Height()*3/4;
-
- pointShadowText.iX = pointText.iX + 1;
- pointShadowText.iY = pointText.iY + 1;
-
- //BitGc()->DrawText(*(iModeTextList[iCurrentMode]), Rect(), Rect().Height()*3/4, CGraphicsContext::ECenter, Rect().Width()/2 - iFont->TextWidthInPixels(*(iModeTextList[iCurrentMode]))/2);
- BitGc()->DrawText(*(iModeTextList[iCurrentMode]), pointShadowText);
-
- BitGc()->DiscardFont();
-
- // draw text
- BitGc()->UseFont(iFont);
-
- BitGc()->SetBrushStyle( CGraphicsContext::ENullBrush );
- BitGc()->SetBrushColor( KRgbBlack);//Non transparent at all
- BitGc()->SetPenColor(iFontColor);
- BitGc()->SetPenStyle(CGraphicsContext::ESolidPen);
- BitGc()->SetPenSize( PenSize());
-
- //BitGc()->DrawText(*(iModeTextList[iCurrentMode]), Rect(), Rect().Height()*3/4+1, CGraphicsContext::ECenter, Rect().Width()/2 - iFont->TextWidthInPixels(*(iModeTextList[iCurrentMode]))/2-1);
- BitGc()->DrawText(*(iModeTextList[iCurrentMode]), pointText);
-
- BitGc()->DiscardFont();
-
- //BitGc()->SetPenStyle(CGraphicsContext::ENullPen);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::Draw
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::Draw()
- {
- if(!AbleToDraw())
- return;
-
- CAknFepCtrlCommonButton::Draw();
- //CButtonBase::Draw();
- if ( iModeTextList.Count() )
- {
- if ((iModeTextList[iCurrentMode]) && (iModeTextList[iCurrentMode]->Length() > 0))
- {
- DisplayText();
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::SetFontColor
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::SetFontColor(const TRgb aFontColor)
- {
- iFontColor = aFontColor;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::SetShadowFontColor
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::SetShadowFontColor(const TRgb aShadowFontColor)
- {
- iShadowFontColor = aShadowFontColor;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::SetPermittedModes
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlMultiModeButton::SetPermittedModes(const TInt aRangeId,
- const TInt aRealCaseId,
- TBool aPermit)
- {
- for (TInt i = 0; i < iModesList.Count(); i++)
- {
- if ((iModesList[i]->iRangeId == aRangeId) && (iModesList[i]->iModeId == aRealCaseId))
- {
- iModesList[i]->iPermitted = aPermit;
-
- return KErrNone;
- }
- }
-
- return KErrNotSupported;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::SetPermittedRange
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlMultiModeButton::SetPermittedRange(const TInt aRangeId, TBool aPermit)
- {
- TBool findRangeId = EFalse;
-
- for (TInt i = 0; i < iModesList.Count(); i++)
- {
- if ((iModesList[i]->iRangeId == aRangeId) && (iModesList[i]->iPermitted != aPermit))
- {
- iModesList[i]->iPermitted = aPermit;
- findRangeId = ETrue;
- }
- }
-
- if (!findRangeId)
- {
- return KErrNotSupported;
- }
- else
- {
- return KErrNone;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::EnableAllModes
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::EnableAllModes()
- {
- for (TInt i = 0; i < iModesList.Count(); i++)
- {
- iModesList[i]->iPermitted = ETrue;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::DisableAllModes
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::DisableAllModes()
- {
- for (TInt i = 0; i < iModesList.Count(); i++)
- {
- iModesList[i]->iPermitted = EFalse;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::DisableAllModes
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::DisableOneModes(const TInt aRangeId)
- {
- for (TInt i = 0; i < iModesList.Count(); i++)
- {
- if(iModesList[i]->iRangeId == aRangeId)
- {
- iModesList[i]->iPermitted = EFalse;
- TRAP_IGNORE(SetCurrentModeL(EBtnBmpNonActive, NextMode()));
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::IsGivenRangeSupported
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CAknFepCtrlMultiModeButton::IsGivenRangeSupported(const TInt aRange)
- {
- for (TInt i = 0; i < iModesList.Count(); i++)
- {
- // judge if aRange is supported by at least 1 mode
- if ((iModesList[i]->iRangeId == aRange) && (iModesList[i]->iPermitted))
- {
- return ETrue;
- }
- }
-
- return EFalse;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::SetRange
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlMultiModeButton::SetRange(const TInt aRange)
- {
- if (CurrentRange() != aRange)
- {
- for (TInt i = 0; i < iModesList.Count(); i++)
- {
- if ((iModesList[i]->iRangeId == aRange) &&
- (iModesList[i]->iPermitted))
- {
- TRAP_IGNORE(SetCurrentModeL(EBtnBmpActive, i));
- return KErrNone;
- }
- }
- }
-
- return KErrNotSupported;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::CurrentRange
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlMultiModeButton::CurrentRange() const
- {
- if ((iCurrentMode >= 0) && (iCurrentMode <= (NumberOfModes()-1)))
- {
- return iModesList[iCurrentMode]->iRangeId;
- }
- else
- {
- return KErrNotFound;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::RangeOfGivenMode()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlMultiModeButton::RangeOfGivenMode(TInt aModeIndex) const
- {
- if ((aModeIndex >= 0) && (aModeIndex <= NumberOfModes()-1))
- {
- return iModesList[aModeIndex]->iRangeId;
- }
-
- return KErrNotSupported;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::GetRealCaseByMode()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlMultiModeButton::GetRealCaseByMode(TInt aModeIndex) const
- {
- if ((aModeIndex >= 0) && (aModeIndex <= NumberOfModes() -1))
- {
- return iModesList[aModeIndex]->iModeId;
- }
-
- return KErrNotFound;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::GetRangeListL()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CAknFepCtrlMultiModeButton::GetRangeListL(RArray<TInt>& aList)
- {
- for (TInt i = 0; i < NumberOfModes(); i++)
- {
- if (aList.Find(iModesList[i]->iRangeId) == KErrNotFound)
- {
- aList.AppendL(iModesList[i]->iRangeId);
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::DuplicateBitmapL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-CFbsBitmap* CAknFepCtrlMultiModeButton::DuplicateBitmapL(CFbsBitmap* aSourceBmp)
- {
- CFbsBitmap* bmp = new (ELeave) CFbsBitmap;
- CleanupStack::PushL( bmp );
-
- User::LeaveIfError(bmp->Duplicate(aSourceBmp->Handle()));
-
- CleanupStack::Pop( bmp );
- //iOwnedBitmaps.InsertInAddressOrder(bmp);
- return bmp;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::ResizeBitmaps
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CAknFepCtrlMultiModeButton::ResizeBitmaps(TSize aSize)
- {
- if(iForegroundBmpList.Count() >= 1 && iForegroundBmpList[0]->SizeInPixels() != aSize
- || iForegroundMaskBmpList.Count() >= 1 && iForegroundMaskBmpList[0]->SizeInPixels() != aSize)
- {
- for (TInt i=0; i<iForegroundBmpList.Count(); i++)
- {
- AknIconUtils::SetSize(iForegroundBmpList[i], aSize, EAspectRatioNotPreserved);
- }
- for (TInt i=0; i<iForegroundMaskBmpList.Count(); i++)
- {
- AknIconUtils::SetSize(iForegroundMaskBmpList[i], aSize, EAspectRatioNotPreserved);
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::SizeChanged
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiModeButton::SizeChanged(TRect aRect, TRect aInnerRect,
- TBool aIsReloadImages)
- {
- if (aRect.Size().iWidth == 0 || aRect.Size().iHeight == 0)
- {
- return;
- }
- SetRect(aRect);
-
- iForgroundBmpRect = aInnerRect;
-
- if (aIsReloadImages)
- {
- ResizeBitmaps(aInnerRect.Size());
- }
-
- TRAP_IGNORE(SetButtonBmpL(iCurrentBmpType, iCurrentMode));
-
- CAknFepCtrlCommonButton::SizeChanged(aRect,aInnerRect,aIsReloadImages);
-/*
- Draw();
- UpdateArea(Rect(), ETrue);
-*/
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlMultiModeButton::TransferOwnership
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CAknFepCtrlMultiModeButton::TransferOwnership(CFbsBitmap* aRemoved)
- {
-/*
- TInt index = iOwnedBitmaps.FindInAddressOrder(aRemoved);
- if( index != KErrNotFound )
- {
- iOwnedBitmaps.Remove(index);
- }
-*/
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::NewL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlEventButton* CAknFepCtrlEventButton::NewL(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TInt aEvent,
- TInt aUnicode,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- {
- CAknFepCtrlEventButton* self = NewLC(aUiLayout, aControlId, aEvent, aUnicode,
- aNormalID, aPressedID, aInactiveID);
- CleanupStack::Pop(self);
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::NewLC
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlEventButton* CAknFepCtrlEventButton::NewLC(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TInt aEvent,
- TInt aUnicode,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- {
- CAknFepCtrlEventButton* self = new (ELeave) CAknFepCtrlEventButton(aUiLayout,
- aControlId,
- aEvent,
- aUnicode,
- aNormalID,
- aPressedID,
- aInactiveID);
- CleanupStack::PushL(self);
- self->BaseConstructL();
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::CAknFepCtrlEventButton
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlEventButton::CAknFepCtrlEventButton(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TInt aEvent,
- TInt aUnicode,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- : CAknFepCtrlCommonButton(aUiLayout, aControlId, aNormalID, aPressedID, aInactiveID),
- iEvent(aEvent),iUnicode(aUnicode),iText(NULL)
- {
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::~CAknFepCtrlEventButton
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlEventButton::~CAknFepCtrlEventButton()
- {
- delete iText;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::HandlePointerUpEventL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CFepUiBaseCtrl* CAknFepCtrlEventButton::HandlePointerUpEventL(const TPoint& aPoint)
- {
- if (iEvent == 0xFFFF)
- {
- return CAknFepCtrlCommonButton::HandlePointerUpEventL(aPoint);
- }
- else
- {
- CAknFepCtrlCommonButton::HandlePointerUpEventL(aPoint);
- if(IsDimmed())
- {
- return NULL;
- }
-
- if(IsActive())
- {
- SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse));
- SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue));
- }
- else
- {
- SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse));
- SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue));
- }
-
- SetActive(ETrue);
- Draw();
- UpdateArea(Rect(),EFalse);
-
- TPtrC ptr = (TUint16*)(&iUnicode);
- ReportEvent(iEvent,ptr);
-
- return this;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::DisplayText
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::DisplayText()
- {
- if ((iFont) && (iShadowFont))
- {
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
-
- gc->Activate(BitmapDevice());
-
- // draw shadow text
- gc->UseFont(iShadowFont);
-
- gc->SetBrushStyle( CGraphicsContext::ENullBrush );
- gc->SetBrushColor( KRgbBlack);//Non transparent at all
- gc->SetPenColor(iShadowFontColor);
- gc->SetPenStyle(CGraphicsContext::ESolidPen);
- gc->SetPenSize( PenSize());
-
- TPoint pointText;
- TPoint pointShadowText;
-
- TInt leftMarginOfText = (Rect().Width() - iFont->TextWidthInPixels(*iText))/2;
-
- pointText.iX = Rect().iTl.iX + leftMarginOfText;
- pointText.iY = Rect().iTl.iY + Rect().Height()*3/4;
-
- pointShadowText.iX = pointText.iX + 1;
- pointShadowText.iY = pointText.iY + 1;
-
- gc->DrawText(*iText, pointShadowText);
-
- gc->DiscardFont();
-
- // draw text
- gc->UseFont(iFont);
-
- gc->SetBrushStyle( CGraphicsContext::ENullBrush );
- gc->SetBrushColor( KRgbBlack);//Non transparent at all
- gc->SetPenColor(iFontColor);
- gc->SetPenStyle(CGraphicsContext::ESolidPen);
- gc->SetPenSize( PenSize());
-
- gc->DrawText(*iText, pointText);
-
- gc->DiscardFont();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::SetFontColor
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::SetFontColor(const TRgb aColor)
- {
- iFontColor = aColor;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::SetShadowFontColor
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::SetShadowFontColor(const TRgb aColor)
- {
- iShadowFontColor = aColor;
- }
-
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::Draw
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::Draw()
- {
- if(!AbleToDraw())
- return;
-
- CAknFepCtrlCommonButton::Draw();
-
- if ( iText && (iText->Length() > 0 ) )
- {
- DisplayText();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::SetText
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::SetText(const TDesC& aText)
- {
- if ( iText )
- {
- delete iText;
- iText = NULL;
- }
- TRAPD(err, iText = aText.AllocL());
- if (err != KErrNone)
- {
- iText = NULL;
- }
- Draw();
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::SetFont
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::SetFont(const CFont* aFont)
- {
- iFont = aFont;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::SetShadowFont
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::SetShadowFont(const CFont* aFont)
- {
- iShadowFont = aFont;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::Event
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlEventButton::Event() const
- {
- return iEvent;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::Unicode
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CAknFepCtrlEventButton::Unicode() const
- {
- return iUnicode;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::SetEvent
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::SetEvent(TInt aEvent)
- {
- iEvent = aEvent;
- }
-
-// -----------------------------------------------------------------------------
-// CAknFepCtrlEventButton::SetUnicode
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlEventButton::SetUnicode(TInt aUnicode)
- {
- iUnicode = aUnicode;
- }
-
-// ---------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlRepeatButton* CAknFepCtrlRepeatButton::NewLC(CFepUiLayout* aUiLayout,
- TInt aCtrlId,
- TInt aEvent,
- TInt aUnicode,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- {
- //PRINTF((_L("CAknFepCtrlRepeatButton::NewLC(), aCtrlId = %d\n"), aCtrlId));
- CAknFepCtrlRepeatButton *self = new(ELeave) CAknFepCtrlRepeatButton(aUiLayout,
- aCtrlId,
- aEvent,
- aUnicode,
- aNormalID,
- aPressedID,
- aInactiveID);
-
- CleanupStack::PushL(self);
- self->ConstructL();
-
- return self;
- }
-
-// ---------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlRepeatButton* CAknFepCtrlRepeatButton::NewL(CFepUiLayout* aUiLayout,
- TInt aCtrlId,
- TInt aEvent,
- TInt aUnicode,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- {
- //PRINTF((_L("CAknFepCtrlRepeatButton::NewL(), aCtrlId = %d\n"), aCtrlId));
- CAknFepCtrlRepeatButton *self = NewLC(aUiLayout, aCtrlId, aEvent, aUnicode,
- aNormalID, aPressedID, aInactiveID);
- CleanupStack::Pop(self);
-
- return self;
- }
-
-// ---------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlRepeatButton::~CAknFepCtrlRepeatButton()
- {
- //PRINTF((_L("CAknFepCtrlRepeatButton::~CAknFepCtrlRepeatButton()\n")));
- CancelRepeat();
-
- delete iLongPressTimer;
- delete iRepeatTimer;
- }
-
-// ---------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlRepeatButton::CAknFepCtrlRepeatButton(CFepUiLayout* aUiLayout,
- TInt aCtrlId,
- TInt aEvent,
- TInt aUnicode,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- :CAknFepCtrlEventButton(aUiLayout, aCtrlId, aEvent, aUnicode,
- aNormalID,
- aPressedID,
- aInactiveID)
- {
- iLongPressInterval = KLongPressInterval;
- iRepeatInterval = KRepeatInterval;
- }
-
-// ---------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlRepeatButton::ConstructL()
- {
- //PRINTF((_L("CAknFepCtrlRepeatButton::ConstructL()\n")));
- BaseConstructL();
-
- iLongPressTimer = CAknFepTimer::NewL(this);
- iRepeatTimer = CAknFepTimer::NewL(this);
- }
-
-// ---------------------------------------------------------
-// Time out event handler of both long press timer & repeat timer
-// ---------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlRepeatButton::HandleTimerOut(const CAknFepTimer* aTimer)
- {
- //PRINTF((_L("CAknFepCtrlRepeatButton::HandleTimerOut()--")));
- if (aTimer == iLongPressTimer)
- {
- //PRINTF((_L("long press timer timeout\n")));
- iRepeatTimer->SetTimer(iRepeatInterval);
- }
- else
- {
- if (aTimer == iRepeatTimer)
- {
- //PRINTF((_L("repeat timer timeout: EEventButtonUp reported\n")));
- if ( Unicode() )
- {
- TInt unicode = Unicode();
- TPtrC ptr = (TUint16*)(&unicode ) ;
- ReportEvent(Event(),ptr);
-#ifdef RD_TACTILE_FEEDBACK
- if (UiLayout()->SupportTactileFeedback())
- {
- UiLayout()->DoTactileFeedback(ETouchFeedbackSensitiveKeypad);
- }
-#endif //RD_TACTILE_FEEDBACK
- }
- else
- {
- ReportEvent(EEventButtonUp);
- }
- iRepeatTimer->SetTimer(iRepeatInterval);
- }
- }
- }
-
-// ---------------------------------------------------------
-// Handle button down start long press timer
-// ---------------------------------------------------------
-//
-EXPORT_C CFepUiBaseCtrl* CAknFepCtrlRepeatButton::HandlePointerDownEventL(const TPoint& aPt)
- {
- //PRINTF((_L("CAknFepCtrlRepeatButton::HandleButtonDown()\n")));
-
- //PRINTF((_L("Set long press Timer\n")));
- iLongPressTimer->SetTimer(iLongPressInterval);
-
- return CAknFepCtrlCommonButton::HandlePointerDownEventL(aPt);
- }
-
-// ---------------------------------------------------------
-// Handle button up cancel timers
-// ---------------------------------------------------------
-//
-EXPORT_C CFepUiBaseCtrl* CAknFepCtrlRepeatButton::HandlePointerUpEventL(const TPoint& aPt)
- {
- //PRINTF((_L("CAknFepCtrlRepeatButton::HandleButtonUp()\n")));
-
- CancelRepeat();
-
- return CAknFepCtrlEventButton::HandlePointerUpEventL(aPt);
- }
-
-// ---------------------------------------------------------
-// Handle pointer levae event cancel timers
-// ---------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlRepeatButton::HandlePointerLeave(const TPoint& aPoint)
- {
- CAknFepCtrlCommonButton::HandlePointerLeave(aPoint);
-
- CancelRepeat();
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlRepeatButton::CancelPointerDownL
-// Cancel pointer down event
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlRepeatButton::CancelPointerDownL()
- {
- CAknFepCtrlCommonButton::CancelPointerDownL();
-
- CancelRepeat();
- }
-
-// ---------------------------------------------------------
-// Set the repeat interval of repeat timer
-// ---------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlRepeatButton::SetRepeatInterval(const TTimeIntervalMicroSeconds32& aTime)
- {
- iRepeatInterval = aTime;
- }
-
-// ---------------------------------------------------------
-// Cancel timers
-// ---------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlRepeatButton::CancelRepeat()
- {
- //PRINTF((_L("CAknFepCtrlRepeatButton::CancelRepeat()\n")));
- iLongPressTimer->Cancel();
- iRepeatTimer->Cancel();
- }
-
-EXPORT_C CAknFepCtrlRawKeyButton* CAknFepCtrlRawKeyButton::NewL(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID,
- TInt aDownEvent,
- TInt aUpEvent,
- TInt aScanCode)
- {
- CAknFepCtrlRawKeyButton* self = NewLC(aUiLayout,
- aControlId,
- aNormalID,
- aPressedID,
- aInactiveID,
- aDownEvent,
- aUpEvent,
- aScanCode);
- CleanupStack::Pop(self);
-
- return self;
- }
-
-EXPORT_C CAknFepCtrlRawKeyButton* CAknFepCtrlRawKeyButton::NewLC(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID,
- TInt aDownEvent,
- TInt aUpEvent,
- TInt aScanCode)
- {
- CAknFepCtrlRawKeyButton* self = new (ELeave) CAknFepCtrlRawKeyButton(aUiLayout,
- aControlId,
- aNormalID,
- aPressedID,
- aInactiveID,
- aDownEvent,
- aUpEvent,
- aScanCode);
- CleanupStack::PushL(self);
- self->BaseConstructL();
- return self;
- }
-
-EXPORT_C CAknFepCtrlRawKeyButton::CAknFepCtrlRawKeyButton(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID,
- TInt aDownEvent,
- TInt aUpEvent,
- TInt aScanCode)
- : CAknFepCtrlCommonButton(aUiLayout, aControlId, aNormalID, aPressedID, aInactiveID),
- iDownEvent(aDownEvent),
- iUpEvent(aUpEvent),
- iScanCode(aScanCode),
- iLastPntDownEvent(EFalse)
- {
- }
-
-EXPORT_C CAknFepCtrlRawKeyButton::~CAknFepCtrlRawKeyButton()
- {
- }
-
-EXPORT_C CFepUiBaseCtrl* CAknFepCtrlRawKeyButton::HandlePointerDownEventL(const TPoint& aPoint)
- {
-/* if (iDownEvent == KInvalidEventId)
- {
- return CButtonBase::HandlePointerDownEventL(aPoint);
- }
-
- if(IsDimmed())
- {
- return NULL;
- }
-
- CAknFepCtrlButton::HandlePointerDownEventL(aPoint);
- if(IsActive())
- {
- SetBackgroundBmp(iActiveBmpPressed);
- SetBackgroundMaskBmp(iActiveMaskBmpPressed);
- }
- else
- {
- SetBackgroundBmp(iNonActiveBkBmpPressed);
- SetBackgroundMaskBmp(iNonActiveBkMaskBmpPressed);
- }
-
- Draw();
- UpdateArea(Rect(),ETrue);
-*/
- if(IsDimmed())
- {
- return NULL;
- }
-
- CAknFepCtrlCommonButton::HandlePointerDownEventL(aPoint);
- TKeyEvent event= {0,0,0,0};
- TPtrC eventDataPtr;
- event.iScanCode = iScanCode;
- eventDataPtr.Set(reinterpret_cast<TUint16*>(&event),sizeof(event));
-
- ReportEvent(iDownEvent,eventDataPtr);
-
- iLastPntDownEvent = ETrue;
-
- return this;
- }
-
-EXPORT_C CFepUiBaseCtrl* CAknFepCtrlRawKeyButton::HandlePointerUpEventL(const TPoint& aPoint)
- {
- if (iUpEvent == KInvalidEventId)
- {
- return CButtonBase::HandlePointerUpEventL(aPoint);
- }
-
-/* if(IsDimmed())
- {
- return NULL;
- }
-
- if(IsActive())
- {
- SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse));
- SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue));
- }
- else
- {
- SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse));
- SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue));
- }
-
- SetActive(ETrue);
- Draw();
- UpdateArea(Rect(),ETrue);
-*/
- if(IsDimmed())
- {
- return NULL;
- }
-
- CAknFepCtrlCommonButton::HandlePointerUpEventL(aPoint);
- if (iLastPntDownEvent)
- {
- // only when last event is pointer down event, there is need to simulate
- // pointer up event
- TKeyEvent event= {0,0,0,0};
- TPtrC eventDataPtr;
- event.iScanCode = iScanCode;
- eventDataPtr.Set(reinterpret_cast<TUint16*>(&event),sizeof(event));
-
- ReportEvent(iUpEvent,eventDataPtr);
-
- iLastPntDownEvent = EFalse;
- }
-
- return this;
- }
-
-EXPORT_C void CAknFepCtrlRawKeyButton::ConstructFromResourceL(TResourceReader& aReader)
- {
- TInt scancode = aReader.ReadInt16();
- SetScanCode(scancode);
-
- TInt32 btnimgResId = aReader.ReadInt32();
- TResourceReader imgreader;
- CCoeEnv::Static()->CreateResourceReaderLC(imgreader, btnimgResId);
- CAknFepCtrlCommonButton::ConstructFromResourceL(imgreader);
- CleanupStack::PopAndDestroy(); // imgreader
-
- //ResizeBitmaps(Rect().Size());
- iFirstTimeConstruct = EFalse;
- }
-
-EXPORT_C void CAknFepCtrlRawKeyButton::ConstructFromResourceL()
- {
- if (iResourceId == KInvalidResId)
- {
- return;
- }
-
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId);
-
- TInt scancode = reader.ReadInt16();
- SetScanCode(scancode);
-
- TInt32 btnimgResId = reader.ReadInt32();
- TResourceReader imgreader;
- CCoeEnv::Static()->CreateResourceReaderLC(imgreader, btnimgResId);
- CAknFepCtrlCommonButton::ConstructFromResourceL(imgreader);
- CleanupStack::PopAndDestroy(2); // reader, imgreader
-
- //ResizeBitmaps(Rect().Size());
- iFirstTimeConstruct = EFalse;
- }
-
-EXPORT_C void CAknFepCtrlRawKeyButton::HandlePointerLeave(const TPoint& aPoint)
- {
- if (!Rect().Contains(aPoint))
- {
- TRAP_IGNORE(HandlePointerUpEventL(Rect().Center()));
- }
- }
-
-EXPORT_C void CAknFepCtrlRawKeyButton::OnDeActivate()
- {
- CButtonBase::OnDeActivate();
-
- if (iLastPntDownEvent)
- {
- TRAP_IGNORE(HandlePointerUpEventL(Rect().Center()));
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::CAknFepCtrlCommonButton
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlCommonButton::CAknFepCtrlCommonButton(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
-: CButtonBase(TRect(), aUiLayout, aControlId),
- iFirstTimeConstruct(ETrue),
- iHighlight(EFalse),
- iPressed(EFalse),
- iTextColorIndex( KInvalidColorGroup )
- {
- iNormalImgID = aNormalID;
- iPressedImgID = aPressedID;
- iInactiveImgID = aInactiveID;
- CFepUiBaseCtrl::SetActive( ETrue );
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::NewL
-// Two-phased constructor.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlCommonButton* CAknFepCtrlCommonButton::NewL(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- {
- CAknFepCtrlCommonButton* self = NewLC(aUiLayout,
- aControlId,
- aNormalID,
- aPressedID,
- aInactiveID);
- CleanupStack::Pop(self);
-
- return self;
- }
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::NewLC
-// Two-phased constructor.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlCommonButton* CAknFepCtrlCommonButton::NewLC(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- {
- CAknFepCtrlCommonButton* self = new (ELeave) CAknFepCtrlCommonButton(aUiLayout,
- aControlId,
- aNormalID,
- aPressedID,
- aInactiveID);
- CleanupStack::PushL(self);
- self->BaseConstructL();
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlCommonButton::~CAknFepCtrlCommonButton()
- {
- DeleteForgroundRes();
- delete iColorIcons;
- delete iText;
- }
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::ConstructFromResourceL
-// The order of the image ids in the CButtonBase class must not be changed
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::ConstructFromResourceL(TResourceReader& aReader)
- {
- if (!iFirstTimeConstruct)
- {
- DeleteForgroundRes();
- if( iColorIcons )
- iColorIcons->ReConstructL();
- }
-
- TPtrC bmpFileName = aReader.ReadTPtrC(); // Read the file name of the bmps
- TInt32 imgMajorSkinId = aReader.ReadInt32();
- TInt colorGroup = aReader.ReadInt16();
- TAknsItemID id;
-
- // Get the image ids and mask ids from resource
- TInt bmpId = aReader.ReadInt16();
- TInt bmpMskId = aReader.ReadInt16();
-
- // read skin item id
- const TInt skinitemid = aReader.ReadInt16();
- id.Set(TInt(imgMajorSkinId), skinitemid);
-
- if (bmpId != KInvalidBmp)
- {
- if (bmpMskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForgroundBmp,
- iForgroundBmpMask,
- bmpFileName,
- bmpId,
- bmpMskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id,
- KAknsIIDQsnIconColors,
- colorGroup,
- iForgroundBmp,
- iForgroundBmpMask,
- bmpFileName,
- bmpId,
- bmpMskId,
- AKN_LAF_COLOR( 0 ) );
- }
-
- AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iForgroundBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);
-
- /*CreateDimmedMaskL( iForgroundDimBmpMask, iForgroundBmpMask );
- AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);*/
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForgroundBmp,
- bmpFileName,
- bmpId);
- AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- }
- }
-
- if (!iFirstTimeConstruct)
- {
- //ResizeBitmaps(iForgroundBmpRect.Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::ConstructFromResourceL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::ConstructFromResourceL()
- {
- if (iResourceId == KInvalidResId)
- {
- return;
- }
-
- if (!iFirstTimeConstruct)
- {
- // need to remove original bmp and maskbmp
- DeleteForgroundRes();
- if( iColorIcons )
- iColorIcons->ReConstructL();
- }
-
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId);
-
- TPtrC bmpFileName = reader.ReadTPtrC(); // Read the file name of the bmps
- 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)
- {
- if (bmpMskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForgroundBmp,
- iForgroundBmpMask,
- bmpFileName,
- bmpId,
- bmpMskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id,
- KAknsIIDQsnIconColors,
- colorGroup,
- iForgroundBmp,
- iForgroundBmpMask,
- bmpFileName,
- bmpId,
- bmpMskId,
- AKN_LAF_COLOR( 0 ) );
- }
-
- AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iForgroundBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);
-
- /*CreateDimmedMaskL( iForgroundDimBmpMask,
- iForgroundBmpMask );
- AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);*/
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForgroundBmp,
- bmpFileName,
- bmpId);
- AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);
- }
- }
-
- CleanupStack::PopAndDestroy(); // reader
-
- if (!iFirstTimeConstruct)
- {
- //ResizeBitmaps(iForgroundBmpRect.Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::Draw
-// Draws UI
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::Draw()
- {
- if(!AbleToDraw())
- return;
-
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
-
- //mask bitmaps
- DrawOpaqueMaskBackground();
- TRect rect = Rect();
- TRect innerRect = rect;
- innerRect.Shrink( 10, 10 );
-
- // ----- draw bitmaps -----
- gc->Activate( BitmapDevice() );
- // gc->SetClippingRegion( &ValidClipRegion() );
- //gc->Clear(rect);
-
- CFbsBitmap* bmpMask = NULL;
-
- // Draw background
- if( IsDimmed() ) // Dimmed state
- {
- AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
- *gc,
- rect,
- innerRect,
- iInactiveImgID,
- KAknsIIDDefault );
- if( iForgroundDimBmpMask )
- {
- delete iForgroundDimBmpMask;
- iForgroundDimBmpMask = NULL;
- }
- TRAP_IGNORE(CreateDimmedMaskL( iForgroundDimBmpMask,
- iForgroundBmpMask ));
- AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(),
- EAspectRatioNotPreserved);
-
- bmpMask = iForgroundDimBmpMask;
- }
- else
- {
- // Normal state or pressed state
- TAknsItemID ImgID;
- if (iHighlight)
- {
- ImgID = iPressedImgID;
- }
- else
- {
- ImgID = /*iPressed*/PointerDown()? iPressedImgID : iNormalImgID;
- }
-
- AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
- *gc,
- rect,
- innerRect,
- ImgID,
- KAknsIIDDefault );
- bmpMask = iForgroundBmpMask;
- }
-
- // Draw forground
- if ( iColorIcons ) // 3-pieces color icon
- {
- AknPenInputDrawUtils::Draw3PiecesColorIcon( iColorIcons,
- *gc,
- iForgroundBmpRect,
- iDraw3PiecesInfo.iInnerRect );
- }
- else if( iForgroundBmp )
- {
- TRect srcRect( TPoint( 0, 0 ), iForgroundBmp->SizeInPixels() );
- if( bmpMask )
- {
- gc->BitBltMasked( iForgroundBmpRect.iTl,
- iForgroundBmp,
- srcRect,
- bmpMask,
- EFalse);
- }
- else
- {
- gc->BitBlt( iForgroundBmpRect.iTl,
- iForgroundBmp,
- srcRect );
- }
- }
-
- if (iText)
- {
- //if( IsDimmed() )
- // {
- // gc->SetFadingParameters( KFadingParamBlack, KFadingParamWhite );
- // gc->SetFaded( ETrue );
- // }
-
- TAknLayoutText textLayout;
- textLayout.LayoutText(Rect(), iTextFormat);
- if( iTextColorIndex == KInvalidColorGroup )
- textLayout.DrawText(*gc, *iText);
- else
- {
- TRgb color( KRgbBlack ); // sane default for nonskinned case
- if ( AknsUtils::AvkonSkinEnabled() )
- {
- AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
- color, KAknsIIDQsnTextColors, iTextColorIndex );
- }
- if( IsDimmed() )
- {
- color = KRgbGray;
- }
- textLayout.DrawText(*gc, *iText, ETrue, color);
- }
- //if( IsDimmed() )
- // gc->SetFaded( EFalse );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::SetActive
-// Set active for the button
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::SetActive(TBool aActiveFlag)
- {
- if( IsDimmed() )
- {
- return;
- }
-
- if(IsActive() != aActiveFlag)
- {
- CFepUiBaseCtrl::SetActive(aActiveFlag);
-/* if(BitGc())
- {
- Draw();
- UpdateArea(Rect(),EFalse);
- }*/
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::SetHighlight
-// Set highlight for the button
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::SetHighlight(TBool aIsHighlight)
- {
- iHighlight = aIsHighlight;
-
- Draw();
- UpdateArea(Rect(),EFalse);
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::ResizeBitmaps
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlCommonButton::ResizeBitmaps(TSize aInnerSize)
- {
- if( iForgroundBmp && ( iForgroundBmp->SizeInPixels() != aInnerSize ) )
- {
- AknIconUtils::SetSize( iForgroundBmp, aInnerSize, EAspectRatioNotPreserved );
- }
- if( iForgroundBmpMask && ( iForgroundBmpMask->SizeInPixels() != aInnerSize ) )
- {
- AknIconUtils::SetSize( iForgroundBmpMask, aInnerSize, EAspectRatioNotPreserved );
- }
-
- /*TRAP_IGNORE(CreateDimmedMaskL(iForgroundDimBmpMask,
- iForgroundBmpMask));*/
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::SizeChanged
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::SizeChanged(TRect aNewRect,
- TRect aInnerRect,
- TBool aIsReloadImages)
- {
- if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0)
- {
- return;
- }
-
- TRect oriRect = Rect();
-
- if( oriRect == aNewRect && iForgroundBmpRect == aInnerRect )
- {
- return;
- }
-
- SetRect(aNewRect);
-
- if (aIsReloadImages)
- {
- iForgroundBmpRect = aInnerRect;
- ResizeBitmaps(aInnerRect.Size() );
- }
- RootControl()->ReDrawRect( Rect() );
- UpdateArea(Rect(), EFalse);
- Draw();
- UpdateArea(Rect(), EFalse);
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::SetForgroundBmpRect
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::SetForgroundBmpRect(const TRect& aRect)
- {
- iForgroundBmpRect = aRect;
- }
-
-EXPORT_C void CAknFepCtrlCommonButton::SetDraw3PieceFrameInfo(TDraw3PiecesFrame a3PiecesFrameInfo)
- {
- iDraw3PiecesInfo = a3PiecesFrameInfo;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::DeleteForgroundRes
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlCommonButton::DeleteForgroundRes()
- {
- if( iForgroundBmp )
- {
- delete iForgroundBmp;
- iForgroundBmp = NULL;
- }
- if( iForgroundBmpMask )
- {
- delete iForgroundBmpMask;
- iForgroundBmpMask = NULL;
- }
- if( iForgroundDimBmpMask )
- {
- delete iForgroundDimBmpMask;
- iForgroundDimBmpMask = NULL;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::CreateDimmedMaskL
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlCommonButton::CreateDimmedMaskL( CFbsBitmap*& aDimmedMask,
- const CFbsBitmap* aMask
- /*TScaleMode aScaleMode*/ )
- {
- if (aMask && aMask->DisplayMode() == EGray256)
- {
- delete aDimmedMask;
- aDimmedMask = NULL;
-
- aDimmedMask = new (ELeave) CFbsBitmap;
-
- User::LeaveIfError(aDimmedMask->Create(aMask->SizeInPixels(), EGray256));
- CleanupStack::PushL(aDimmedMask);
-
- CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDimmedMask);
- CleanupStack::PushL(bitmapDevice);
-
- CFbsBitGc* bitGc(NULL);
- User::LeaveIfError(bitmapDevice->CreateContext(bitGc));
- CleanupStack::PushL(bitGc);
-
- bitGc->SetPenStyle(CGraphicsContext::ESolidPen);
- bitGc->BitBlt(TPoint(0, 0), aMask);
-
- aDimmedMask->LockHeap();
- TInt w = aMask->SizeInPixels().iWidth;
- TInt h = aMask->SizeInPixels().iHeight;
- TInt dataStride = aMask->DataStride() - w;
- unsigned char* address = (unsigned char *)aDimmedMask->DataAddress();
-
- for ( TInt i = 0; i < h; ++i )
- {
- for ( TInt j = 0; j < w; ++j )
- {
- *address = KTransparency[*address];
- ++address;
- }
- address += dataStride;
- }
-
- aDimmedMask->UnlockHeap();
-
- //AknIconUtils::SetSize(aDimmedMask, aMask->SizeInPixels(), aScaleMode);
-
- CleanupStack::PopAndDestroy(2); // bitmapDevice, bitGc
- CleanupStack::Pop(1); // aDimmedMask
- }
-
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::HandlePointerDownEventL
-// Handle button down event
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CFepUiBaseCtrl* CAknFepCtrlCommonButton::HandlePointerDownEventL(const TPoint& aPt)
- {
- if( IsDimmed() )
- return NULL;
-
- CFepUiBaseCtrl::HandlePointerDownEventL(aPt);
- iPressed = ETrue;
-
- Draw();
- UpdateArea(Rect(),EFalse);
- ReportEvent(EEventButtonDown);
- return this;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::HandlePointerLeave
-// Handle pointer leave event
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::HandlePointerLeave(const TPoint& aPt)
- {
- if( IsDimmed() )
- return;
-
- CFepUiBaseCtrl::HandlePointerLeave(aPt);
- iPressed = EFalse;
-
- RootControl()->ReDrawRect( Rect() );
- UpdateArea(Rect(),EFalse);
-
- return ;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::HandleButtonUpEventL
-// Handle button up event
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CFepUiBaseCtrl* CAknFepCtrlCommonButton::HandlePointerUpEventL(const TPoint& aPt)
- {
- CFepUiBaseCtrl::HandlePointerUpEventL(aPt);
- if( IsDimmed() )
- return NULL;
-
- iPressed = EFalse;
- SetActive(ETrue);
- RootControl()->ReDrawRect( Rect() );
- //Draw();
- UpdateArea(Rect(),EFalse);
-
- ReportEvent(EEventButtonUp);
-
-#ifdef RD_TACTILE_FEEDBACK
- {
- UiLayout()->DoTactileFeedback(ETouchFeedbackSensitiveKeypad, ETrue, EFalse);
- }
-#endif // RD_TACTILE_FEEDBACK
-
- return this;
- }
-
-EXPORT_C void CAknFepCtrlCommonButton::HandlePointerEnter(const TPoint& aPt)
- {
- if( IsDimmed() )
- return;
-
- CFepUiBaseCtrl::HandlePointerEnter(aPt);
- iPressed = ETrue;
- Draw();
- UpdateArea(Rect(),EFalse);
-
- return ;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::CancelPointerDownL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::CancelPointerDownL()
- {
- CFepUiBaseCtrl::CancelPointerDownL();
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlCommonButton::SetForegroundBmpL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlCommonButton::SetForegroundBmpL(CFbsBitmap* aBmp,
- CFbsBitmap* aMaskBmp)
- {
- DeleteForgroundRes();
-
- iForgroundBmp = aBmp;
- iForgroundBmpMask = aMaskBmp;
-
- ResizeBitmaps(iForgroundBmpRect.Size());
- }
-
-EXPORT_C void CAknFepCtrlCommonButton::Move(const TPoint& aOffset)
- {
- CButtonBase::Move(aOffset);
- iForgroundBmpRect.Move( aOffset );
-
- if ( iColorIcons )
- {
- iDraw3PiecesInfo.iInnerRect.Move( aOffset );
- }
- }
-
-
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::CAknFepCtrlMultiImageButton
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlMultiImageButton::CAknFepCtrlMultiImageButton(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- : CAknFepCtrlCommonButton(aUiLayout, aControlId, aNormalID, aPressedID, aInactiveID)
- {
- iNormalImgID = aNormalID;
- iPressedImgID = aPressedID;
- iInactiveImgID = aInactiveID;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::NewL
-// Two-phased constructor.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlMultiImageButton* CAknFepCtrlMultiImageButton::NewL(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- {
- CAknFepCtrlMultiImageButton* self = NewLC(aUiLayout,
- aControlId,
- aNormalID,
- aPressedID,
- aInactiveID);
- CleanupStack::Pop(self);
-
- return self;
- }
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::NewLC
-// Two-phased constructor.
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlMultiImageButton* CAknFepCtrlMultiImageButton::NewLC(CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aNormalID,
- TAknsItemID aPressedID,
- TAknsItemID aInactiveID)
- {
- CAknFepCtrlMultiImageButton* self = new (ELeave) CAknFepCtrlMultiImageButton(aUiLayout,
- aControlId,
- aNormalID,
- aPressedID,
- aInactiveID);
- CleanupStack::PushL(self);
- self->BaseConstructL();
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CAknFepCtrlMultiImageButton::~CAknFepCtrlMultiImageButton()
- {
- DeleteForgroundRes();
- delete iText;
- }
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::ConstructFromResourceL
-// The order of the image ids in the CButtonBase class must not be changed
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiImageButton::ConstructFromResourceL(TResourceReader& aReader)
- {
- if (!iFirstTimeConstruct)
- {
- DeleteForgroundRes();
- }
-
- TPtrC bmpFileName = aReader.ReadTPtrC(); // Read the file name of the bmps
- TInt32 imgMajorSkinId = aReader.ReadInt32();
- TInt colorGroup = aReader.ReadInt16();
- TAknsItemID id;
-
- // Get the image ids and mask ids from resource
- TInt bmpId = aReader.ReadInt16();
- TInt bmpMskId = aReader.ReadInt16();
-
- // read skin item id
- const TInt skinitemid = aReader.ReadInt16();
- id.Set(TInt(imgMajorSkinId), skinitemid);
-
- if (bmpId != KInvalidBmp)
- {
- if (bmpMskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForground1Bmp,
- iForground1BmpMask,
- bmpFileName,
- bmpId,
- bmpMskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id,
- KAknsIIDQsnIconColors,
- colorGroup,
- iForground1Bmp,
- iForground1BmpMask,
- bmpFileName,
- bmpId,
- bmpMskId,
- AKN_LAF_COLOR( 0 ) );
- }
-
- AknIconUtils::SetSize(iForground1Bmp, iForground1BmpRect.Size(), EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iForground1BmpMask, iForground1BmpRect.Size(),
- EAspectRatioNotPreserved);
-
- /*CreateDimmedMaskL( iForground1DimBmpMask, iForground1BmpMask );
- AknIconUtils::SetSize(iForground1DimBmpMask, iForground1BmpRect.Size(),
- EAspectRatioNotPreserved);*/
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForground1Bmp,
- bmpFileName,
- bmpId);
- AknIconUtils::SetSize(iForground1Bmp, iForground1BmpRect.Size(), EAspectRatioNotPreserved);
- }
- }
-
-
-
- TAknsItemID id2;
-
- // Get the image ids and mask ids from resource
- TInt bmp2Id = aReader.ReadInt16();
- TInt bmp2MskId = aReader.ReadInt16();
-
- // read skin item id
- const TInt skinitem2id = aReader.ReadInt16();
- id2.Set(TInt(imgMajorSkinId), skinitem2id);
-
- if (bmp2Id != KInvalidBmp)
- {
- if (bmp2MskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id2,
- iForground2Bmp,
- iForground2BmpMask,
- bmpFileName,
- bmp2Id,
- bmp2MskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id2,
- KAknsIIDQsnIconColors,
- colorGroup,
- iForground2Bmp,
- iForground2BmpMask,
- bmpFileName,
- bmp2Id,
- bmp2MskId,
- AKN_LAF_COLOR( 0 ) );
- }
-
- AknIconUtils::SetSize(iForground2Bmp, iForground2BmpRect.Size(), EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iForground2BmpMask, iForground2BmpRect.Size(),
- EAspectRatioNotPreserved);
-
- /*CreateDimmedMaskL( iForground2DimBmpMask, iForground2BmpMask );
- AknIconUtils::SetSize(iForground2DimBmpMask, iForground2BmpRect.Size(),
- EAspectRatioNotPreserved);*/
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id2,
- iForground2Bmp,
- bmpFileName,
- bmp2Id);
- AknIconUtils::SetSize(iForground2Bmp, iForground2BmpRect.Size(), EAspectRatioNotPreserved);
- }
- }
-
- if (!iFirstTimeConstruct)
- {
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::ConstructFromResourceL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiImageButton::ConstructFromResourceL()
- {
- if (iResourceId == KInvalidResId)
- {
- User::Leave(KErrArgument);
- }
-
- if (!iFirstTimeConstruct)
- {
- // need to remove original bmp and maskbmp
- DeleteForgroundRes();
- }
-
- TResourceReader reader;
- CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId);
-
- TPtrC bmpFileName = reader.ReadTPtrC(); // Read the file name of the bmps
- 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)
- {
- if (bmpMskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForground1Bmp,
- iForground1BmpMask,
- bmpFileName,
- bmpId,
- bmpMskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id,
- KAknsIIDQsnIconColors,
- colorGroup,
- iForground1Bmp,
- iForground1BmpMask,
- bmpFileName,
- bmpId,
- bmpMskId,
- AKN_LAF_COLOR( 0 ) );
- }
-
- AknIconUtils::SetSize(iForground1Bmp, iForground1BmpRect.Size(), EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iForground1BmpMask, iForground1BmpRect.Size(), EAspectRatioNotPreserved);
-
- /*CreateDimmedMaskL( iForground1DimBmpMask,
- iForground1BmpMask );
- AknIconUtils::SetSize(iForground1DimBmpMask, iForground1BmpRect.Size(), EAspectRatioNotPreserved);*/
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForground1Bmp,
- bmpFileName,
- bmpId);
- AknIconUtils::SetSize(iForground1Bmp, iForground1BmpRect.Size(), EAspectRatioNotPreserved);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- TAknsItemID id2;
-
- // Get the image ids and mask ids from resource
- TInt bmp2Id = reader.ReadInt16();
- TInt bmp2MskId = reader.ReadInt16();
-
- // Read skin item id
- const TInt skinitem2id = reader.ReadInt16();
- id2.Set(TInt(imgMajorSkinId), skinitem2id);
-
- if (bmp2Id != KInvalidBmp)
- {
- if (bmp2MskId != KInvalidBmp)
- {
- if( colorGroup == KInvalidColorGroup )
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id2,
- iForground2Bmp,
- iForground2BmpMask,
- bmpFileName,
- bmp2Id,
- bmp2MskId);
- }
- else
- {
- AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(),
- id,
- KAknsIIDQsnIconColors,
- colorGroup,
- iForground2Bmp,
- iForground2BmpMask,
- bmpFileName,
- bmp2Id,
- bmp2MskId,
- AKN_LAF_COLOR( 0 ) );
- }
-
- AknIconUtils::SetSize(iForground2Bmp, iForground2BmpRect.Size(), EAspectRatioPreserved);
- AknIconUtils::SetSize(iForground2BmpMask, iForground2BmpRect.Size(), EAspectRatioPreserved);
-
- /*CreateDimmedMaskL( iForground2DimBmpMask, iForground2BmpMask );
- AknIconUtils::SetSize(iForground2DimBmpMask, iForground2BmpRect.Size(),
- EAspectRatioNotPreserved);*/
- }
- else
- {
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- id,
- iForground2Bmp,
- bmpFileName,
- bmp2Id);
- AknIconUtils::SetSize(iForground2Bmp, iForground2BmpRect.Size(), EAspectRatioPreserved);
- }
- }
-
-
-
-
-
-
- CleanupStack::PopAndDestroy(); // reader
-
- if (!iFirstTimeConstruct)
- {
- //ResizeBitmaps(iForgroundBmpRect.Size());
- Draw();
- }
-
- iFirstTimeConstruct = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::Draw
-// Draws UI
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiImageButton::Draw()
- {
- if(!AbleToDraw())
- return;
-
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
-
- //mask bitmaps
- DrawOpaqueMaskBackground();
- TRect rect = Rect();
- TRect innerRect = rect;
- innerRect.Shrink( 10, 10 );
-
- // ----- draw bitmaps -----
- gc->Activate( BitmapDevice() );
- // gc->SetClippingRegion( &ValidClipRegion() );
- //gc->Clear(rect);
-
- CFbsBitmap* bmpMask1 = NULL;
- CFbsBitmap* bmpMask2 = NULL;
-
- // Draw background
- if( IsDimmed() ) // Dimmed state
- {
- AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
- *gc,
- rect,
- innerRect,
- iInactiveImgID,
- KAknsIIDDefault );
- if( iForground1DimBmpMask )
- {
- delete iForground1DimBmpMask;
- iForground1DimBmpMask = NULL;
- }
- TRAP_IGNORE(CreateDimmedMaskL( iForground1DimBmpMask,
- iForground1BmpMask ));
- AknIconUtils::SetSize(iForground1DimBmpMask, iForground1BmpRect.Size(),
- EAspectRatioNotPreserved);
- bmpMask1 = iForground1DimBmpMask;
-
- if( iForground2DimBmpMask )
- {
- delete iForground2DimBmpMask;
- iForground2DimBmpMask = NULL;
- }
- TRAP_IGNORE(CreateDimmedMaskL( iForground2DimBmpMask,
- iForground2BmpMask ));
- AknIconUtils::SetSize(iForground2DimBmpMask, iForground2BmpRect.Size(),
- EAspectRatioNotPreserved);
- bmpMask2 = iForground2DimBmpMask;
- }
- else
- {
- // Normal state or pressed state
- TAknsItemID ImgID;
- if (iHighlight)
- {
- ImgID = iPressedImgID;
- }
- else
- {
- ImgID = /*iPressed*/PointerDown()? iPressedImgID : iNormalImgID;
- }
-
- AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
- *gc,
- rect,
- innerRect,
- ImgID,
- KAknsIIDDefault );
- bmpMask1 = iForground1BmpMask;
- bmpMask2 = iForground2BmpMask;
- }
-
- // Draw forground
- if( iForground1Bmp && iForground2Bmp)
- {
- TRect srcRect( TPoint( 0, 0 ), iForground1Bmp->SizeInPixels() );
- if( bmpMask1 )
- {
- gc->BitBltMasked( iForground1BmpRect.iTl,
- iForground1Bmp,
- srcRect,
- bmpMask1,
- EFalse);
- }
- else
- {
- gc->BitBlt( iForground1BmpRect.iTl,
- iForground1Bmp,
- srcRect );
- }
-
- TRect src2Rect( TPoint( 0, 0 ), iForground2Bmp->SizeInPixels() );
- if( bmpMask2 )
- {
- gc->BitBltMasked( rect.iTl, //fix EVWG-7PKC6J. layout of 2nd foreground is determined by image itself, but not hard code.
- iForground2Bmp,
- src2Rect,
- bmpMask2,
- EFalse);
- }
- else
- {
- gc->BitBlt( rect.iTl, //fix EVWG-7PKC6J.
- iForground2Bmp,
- src2Rect );
- }
- }
-
- if (iText)
- {
- TAknLayoutText textLayout;
- textLayout.LayoutText(Rect(), iTextFormat);
- textLayout.DrawText(*gc, *iText);
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::ResizeBitmaps
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlMultiImageButton::ResizeBitmaps(TSize aInnerSize)
- {
- if( iForground1Bmp && ( iForground1Bmp->SizeInPixels() != aInnerSize ) )
- {
- AknIconUtils::SetSize( iForground1Bmp, aInnerSize, EAspectRatioNotPreserved );
- }
- if( iForground1BmpMask && ( iForground1BmpMask->SizeInPixels() != aInnerSize ) )
- {
- AknIconUtils::SetSize( iForground1BmpMask, aInnerSize, EAspectRatioNotPreserved );
- }
-
- //TRAP_IGNORE(CreateDimmedMaskL(iForground1DimBmpMask, iForground1BmpMask));
-
-
-
-
- if( iForground2Bmp && ( iForground2Bmp->SizeInPixels() != Rect().Size() ) )
- {
- AknIconUtils::SetSize( iForground2Bmp, Rect().Size(), EAspectRatioNotPreserved );
- }
- if( iForground2BmpMask && ( iForground2BmpMask->SizeInPixels() != Rect().Size() ) )
- {
- AknIconUtils::SetSize( iForground2BmpMask, Rect().Size(), EAspectRatioNotPreserved );
- }
-
- //TRAP_IGNORE(CreateDimmedMaskL(iForground2DimBmpMask, iForground2BmpMask));
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::SizeChanged
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CAknFepCtrlMultiImageButton::SizeChanged(TRect aNewRect,
- TRect aInnerRect,
- TBool aIsReloadImages)
- {
- if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0)
- {
- return;
- }
-
- TRect oriRect = Rect();
- SetRect(aNewRect);
- iForground1BmpRect = aInnerRect;
- iForground2BmpRect = aInnerRect;
-
- if (aIsReloadImages)
- {
- ResizeBitmaps(aInnerRect.Size() );
- }
- RootControl()->ReDrawRect( oriRect );
- UpdateArea(oriRect, EFalse);
- Draw();
- UpdateArea(Rect(), EFalse);
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::DeleteForgroundRes
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlMultiImageButton::DeleteForgroundRes()
- {
- if( iForground1Bmp )
- {
- delete iForground1Bmp;
- iForground1Bmp = NULL;
- }
- if( iForground1BmpMask )
- {
- delete iForground1BmpMask;
- iForground1BmpMask = NULL;
- }
- if( iForground1DimBmpMask )
- {
- delete iForground1DimBmpMask;
- iForground1DimBmpMask = NULL;
- }
-
-
- if( iForground2Bmp )
- {
- delete iForground2Bmp;
- iForground2Bmp = NULL;
- }
- if( iForground2BmpMask )
- {
- delete iForground2BmpMask;
- iForground2BmpMask = NULL;
- }
- if( iForground2DimBmpMask )
- {
- delete iForground2DimBmpMask;
- iForground2DimBmpMask = NULL;
- }
-
- }
-
-// ---------------------------------------------------------------------------
-// CAknFepCtrlMultiImageButton::CreateDimmedMaskL
-// This methods shall be called by the container's SizeChanged handler
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepCtrlMultiImageButton::CreateDimmedMaskL( CFbsBitmap*& aDimmedMask,
- const CFbsBitmap* aMask
- /*TScaleMode aScaleMode*/ )
- {
- if (aMask && aMask->DisplayMode() == EGray256)
- {
- delete aDimmedMask;
- aDimmedMask = NULL;
-
- aDimmedMask = new (ELeave) CFbsBitmap;
-
- User::LeaveIfError(aDimmedMask->Create(aMask->SizeInPixels(), EGray256));
- CleanupStack::PushL(aDimmedMask);
-
- CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDimmedMask);
- CleanupStack::PushL(bitmapDevice);
-
- CFbsBitGc* bitGc(NULL);
- User::LeaveIfError(bitmapDevice->CreateContext(bitGc));
- CleanupStack::PushL(bitGc);
-
- bitGc->SetPenStyle(CGraphicsContext::ESolidPen);
- bitGc->BitBlt(TPoint(0, 0), aMask);
-
- aDimmedMask->LockHeap();
- TInt w = aMask->SizeInPixels().iWidth;
- TInt h = aMask->SizeInPixels().iHeight;
- TInt dataStride = aMask->DataStride() - w;
- unsigned char* address = (unsigned char *)aDimmedMask->DataAddress();
-
- for ( TInt i = 0; i < h; ++i )
- {
- for ( TInt j = 0; j < w; ++j )
- {
- *address = KTransparency[*address];
- ++address;
- }
- address += dataStride;
- }
-
- aDimmedMask->UnlockHeap();
-
- //AknIconUtils::SetSize(aDimmedMask, aMask->SizeInPixels(), aScaleMode);
-
- CleanupStack::PopAndDestroy(2); // bitmapDevice, bitGc
- CleanupStack::Pop(1); // aDimmedMask
- }
-
- }
-
-EXPORT_C void CAknFepCtrlMultiImageButton::Move(const TPoint& aOffset)
- {
- CButtonBase::Move(aOffset);
- iForground1BmpRect.Move( aOffset );
- iForground2BmpRect.Move( aOffset );
- }
-
-// End Of File