--- /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 <telbubbleextensionobserver.h>
+#include <telbubbleextensiondata.h>
+#include <telbubblecustomelement.h>
+#include <telbubbleimage.h>
+
+// ======== 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<CTelBrandingImage*>( 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] );
+ }
+ }
+