diff -r 000000000000 -r 5f000ab63145 phoneplugins/telbranding/src/telbrandingbubble.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneplugins/telbranding/src/telbrandingbubble.cpp Mon Jan 18 20:18:27 2010 +0200 @@ -0,0 +1,225 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Wraps bubble into one class. +* +*/ + +#include "telbrandingbubble.h" +#include "telbrandingcallindicator.h" +#include "telbrandingserverhandler.h" +#include "telbrandingimage.h" + +#include +#include +#include +#include + +// ======== CONSTANTS ======== +_LIT8( KBrandImageId, "bubble_manager_brand_image" ); +_LIT8( KCallIndicatorImageId, "bubble_manager_call_indicator_image" ); + + +// ======== LOCAL FUNCTIONS ======== + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::CTelBrandingBubble +// --------------------------------------------------------------------------- +// +CTelBrandingBubble::CTelBrandingBubble( MTelBubbleExtensionData& aCallData ) : + iCallData( aCallData ) + { + + } + + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::ConstructL +// --------------------------------------------------------------------------- +// +void CTelBrandingBubble::ConstructL( + CTelBrandingServerHandler& aServer ) + { + // Branded call indication + TRAP_IGNORE( + CreateCallIndicationElementL( + aServer, + CTelBubbleCustomElement::ESmallCallIndicator ); + + CreateCallIndicationElementL( + aServer, + CTelBubbleCustomElement::EBigCallIndicator ); + ) + + if( !iElements.Count() ) + { + // Basic brand image + TRAP_IGNORE( AddBrandingImageWithPriorityL( + KBrandImageId, + aServer, + CTelBubbleCustomElement::EBrandImage ); + ) + } + + } + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::NewLC +// --------------------------------------------------------------------------- +// +CTelBrandingBubble* CTelBrandingBubble::NewLC( + MTelBubbleExtensionData& aCallData, + CTelBrandingServerHandler& aServer ) + { + CTelBrandingBubble* self = new( ELeave ) CTelBrandingBubble( aCallData ); + CleanupStack::PushL( self ); + self->ConstructL( aServer ); + return self; + } + + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::~CTelBrandingBubble +// --------------------------------------------------------------------------- +// +CTelBrandingBubble::~CTelBrandingBubble() + { + iElements.ResetAndDestroy(); + iElements.Close(); + } + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::CreateCallIndicationElementL +// --------------------------------------------------------------------------- +// +void CTelBrandingBubble::CreateCallIndicationElementL( + CTelBrandingServerHandler& aServer, + CTelBubbleCustomElement::TElementType aType ) + { + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + // Call indicator + aServer.GetBrandIconL( + KCallIndicatorImageId, + bitmap, + mask ); + + CEikImage* image = new(ELeave) CEikImage; + image->SetPicture( bitmap, mask ); + CleanupStack::PushL( image ); + + CTelBrandingCallIndicator* indicator = + CTelBrandingCallIndicator::NewL( iCallData, image ); + + CleanupStack::Pop( image ); + CleanupStack::PushL( indicator ); + + CTelBubbleCustomElement* customElement = + CTelBubbleCustomElement::NewL( indicator, aType ); + + CleanupStack::Pop( indicator ); + + AddElementToArrayL( customElement ); + } + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::AddBrandingImageWithPriorityL +// --------------------------------------------------------------------------- +// +void CTelBrandingBubble::AddBrandingImageWithPriorityL( + const TDesC8& aImageType, + CTelBrandingServerHandler& aServer, + CTelBubbleCustomElement::TElementType aType ) + { + CTelBrandingImage* image = + CTelBrandingImage::NewLC(); + + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + aServer.GetBrandIconL( + aImageType, + bitmap, + mask ); + + image->SetPicture( bitmap, mask ); + + CTelBubbleCustomElement* customElement = + CTelBubbleCustomElement::NewL( image, aType ); + + CleanupStack::Pop( image ); + + TInt lowerIndex = iElements.Count()-1; + if( lowerIndex != KErrNotFound ) + { + // Set previous element to lower priority + CTelBrandingImage* lowerImage = + static_cast( iElements[lowerIndex]->Control() ); + image->SetLowerPriorityBranding( lowerImage ); + } + + AddElementToArrayL( customElement ); + } + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::AddElementToArrayL +// --------------------------------------------------------------------------- +// +void CTelBrandingBubble::AddElementToArrayL( CTelBubbleCustomElement* aElement ) + { + CleanupStack::PushL( aElement ); + + iElements.AppendL( aElement ); + + CleanupStack::Pop( aElement ); + } + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::BubbleId +// --------------------------------------------------------------------------- +// +TInt CTelBrandingBubble::BubbleId() const + { + return iCallData.BubbleId(); + } + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::AttachElements +// --------------------------------------------------------------------------- +// +void CTelBrandingBubble::AttachElements( MTelBubbleExtensionObserver& aObs ) const + { + for( TInt i = 0; i < iElements.Count(); i++ ) + { + aObs.AttachElement( + BubbleId(), iElements[i] ); + } + + } + +// --------------------------------------------------------------------------- +// CTelBrandingBubble::DetechElements +// --------------------------------------------------------------------------- +// +void CTelBrandingBubble::DetechElements( MTelBubbleExtensionObserver& aObs ) const + { + for( TInt i = 0; i < iElements.Count(); i++ ) + { + aObs.DetachElement( + BubbleId(), iElements[i] ); + } + } +