diff -r 000000000000 -r 5f000ab63145 phoneuis/BubbleManager/Src/BMBubbleOutlookOneLined.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookOneLined.cpp Mon Jan 18 20:18:27 2010 +0200 @@ -0,0 +1,440 @@ +/* +* 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 CBubbleOutlookOneLined class. +* +*/ + + +// INCLUDE FILES +#include "BMBubbleOutlookOneLined.h" +#include "BMResourceManager.h" +#include "BMBubbleHeader.h" +#include "BMUtils.h" +#include "BMCustomManager.h" +#include "telbubbleanim.h" +#include "BMLayout.h" + +#include +#include +#include +#include + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::CBubbleOutlookOneLined( ) +// +// +// --------------------------------------------------------------------------- +// +CBubbleOutlookOneLined::CBubbleOutlookOneLined( + CBubbleManager& aBubbleManager ) +: CBubbleOutlook( aBubbleManager ) + { + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::ConstructL +// +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::ConstructL() + { + + iHeader = NULL; + CBubbleOutlook::ConstructL( ); + ActivateL(); + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::~CBubbleOutlookOneLined() +// +// +// --------------------------------------------------------------------------- +// +CBubbleOutlookOneLined::~CBubbleOutlookOneLined() + { + } + + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::Reset +// +// +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::Reset( ) + { + + iBubbleManager.ResourceManager().ReleaseEikImage( iBubble ); + iBubbleManager.CustomManager().ReleaseCustomElement( iSmallCallIndication ); + iBubbleManager.ResourceManager().ReleaseEikImage( iTypeIndication1 ); + iBubbleManager.ResourceManager().ReleaseEikImage( iTypeIndication2 ); + iBubbleManager.ResourceManager().ReleaseEikImage( iCyphOffImage ); + iBubbleManager.ResourceManager().ReleaseEikLabel( iTextLine1 ); + + iFullText1.Set( NULL , 0 ); + iHeader = NULL; + } + + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::ReadBubbleHeader +// +// +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::ReadBubbleHeader( CBubbleHeader& aHeader ) + { + iHeader = &aHeader; + + CBubbleManager::TPhoneCallState callState = iHeader->CallState( ); + + // Set small call indication icon + TInt defaultCallIndicator; + iSmallCallIndication = + iBubbleManager.CustomManager().ReserveCustomElement( + aHeader, + CTelBubbleCustomElement::ESmallCallIndicator, + defaultCallIndicator ); + + // Number type not shown with custom call indicator + if ( defaultCallIndicator ) + { + // Set the additional icons + BubbleUtils::SetCallTypePane( + *iHeader , + iTypeIndication1, + iTypeIndication2, + iBubbleManager ); + } + + // Set Cyph off image + BubbleUtils::SetCyphOffImage( *iHeader, iCyphOffImage, iBubbleManager ); + + + + // Get texts and possible timer/cost string. + // Reserved text buffer is KBubbleLabelMaxLength. If new text + // is longer it panics. + // It is enough if text is cropped to fit (eg. '...1234567890') + + switch ( callState ) + { + + case CBubbleManager::EOnHold: + case CBubbleManager::EDisconnected: + case CBubbleManager::EActive: + case CBubbleManager::EWaiting: + case CBubbleManager::EOutgoing: + case CBubbleManager::EAlertToDisconnected: + case CBubbleManager::EAlerting: + iTextLine1 = iBubbleManager.ResourceManager().ReserveEikLabel(); + iFullText1.Set( iHeader->CLI() ); + iText1ClipDirection = iHeader->CLIClipDirection( ); + break; + case CBubbleManager::EIncoming: + case CBubbleManager::ENone: + default: + iFullText1.Set( NULL , 0 ); + break; + } + } + + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::CountComponentControls() const +// +// +// --------------------------------------------------------------------------- +// +TInt CBubbleOutlookOneLined::CountComponentControls() const + { + TInt amount = 0; + if ( iSmallCallIndication ) + { + amount++; + } + + if ( iTypeIndication1 ) + { + amount++; + } + + if ( iTypeIndication2 ) + { + amount++; + } + + if ( iCyphOffImage ) + { + amount++; + } + + if ( iTextLine1 ) + { + amount++; + } + return amount; + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::ComponentControl +// +// +// --------------------------------------------------------------------------- +// +CCoeControl* CBubbleOutlookOneLined::ComponentControl( TInt aIndex ) const + { + TInt amount = -1; + if ( iSmallCallIndication ) + { + amount++; + } + + if ( aIndex == amount ) + { + return iSmallCallIndication->Control(); + } + + if ( iTypeIndication1 ) + { + amount++; + } + + if ( aIndex == amount ) + { + return iTypeIndication1; + } + + if ( iTypeIndication2 ) + { + amount++; + } + + if ( aIndex == amount ) + { + return iTypeIndication2; + } + + if ( iCyphOffImage ) + { + amount++; + } + + if ( aIndex == amount ) + { + return iCyphOffImage; + } + + if ( iTextLine1 ) + { + amount++; + } + + if ( aIndex == amount ) + { + return iTextLine1; + } + + return NULL; + + } + + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::Draw +// +// +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::Draw( const TRect& /*aRect*/ ) const + { + + // Check that proper call header is set + if ( iHeader == NULL ) + { + return; + } + + if ( !iHeader->IsUsed( ) || iHeader->IsInConference( ) ) + { + return; + } + + + // Set texts to fit. + BubbleUtils::ClipToLabel( iFullText1 , iTextLine1 , iText1ClipDirection ); + + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::DrawTimerCostNow +// +// +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::DrawTimerCostNow() + { + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::DrawCLINow +// +// +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::DrawCLINow() + { + if ( iHeader == NULL ) + { + return; + } + + iFullText1.Set( iHeader->CLI() ); + + CBubbleManager::TBubbleLabelString full = iHeader->CLI(); + CBubbleManager::TPhoneClippingDirection clipDir = + iHeader->CLIClipDirection(); + + // Set texts to fit. + if ( full.Length() > 0 ) + { + BubbleUtils::ClipToLabel( full , iTextLine1 , clipDir ); + BubbleUtils::AddTextToEikLabel( iTextLine1 , full ); + } + else + { + BubbleUtils::AddTextToEikLabel( iTextLine1 , KNullDesC ); + } + + + // First clear the area and then draw the new text + DrawLabelNow( iTextLine1 ); + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::DrawBitmaps +// +// +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::DrawBitmaps( CBitmapContext& aGc ) const + { + // Check that proper call header is set + if ( iHeader == NULL ) + { + return; + } + + if ( !iHeader->IsUsed( ) || iHeader->IsInConference( ) ) + { + return; + } + + if ( !iCallObjectDisplay ) + { + DrawCall1Bitmaps( aGc ); + } + else + { + DrawCall2Bitmaps( aGc ); + } + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::HandleAnimationStartL +// +// +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::HandleAnimationStartL() const + { + if( iSmallCallIndication && + iSmallCallIndication->ControlType() == CTelBubbleCustomElement::EBubbleAnimation ) + { + CTelBubbleAnim* anim = + static_cast ( iSmallCallIndication->Control() ); + anim->StartAnimationL(); + } + + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::ReleaseBitmaps +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::ReleaseBitmaps() + { + + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::RebuildBitmaps +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::RebuildBitmaps() + { + + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookOneLined::DrawCallHeaderText +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::DrawCallHeaderText() + { + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookTwoLined::DrawCall1Bitmaps +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::DrawCall1Bitmaps( CBitmapContext& aGc ) const + { + + aGc.SetBrushColor( AKN_LAF_COLOR( BubbleLayout::LayoutColourWhite() ) ); + if ( !BubbleUtils::DrawMaskedImage( aGc , iBubble ) ) + { + BubbleUtils::DrawBackgroundRect( aGc, Rect() ); + } + } + +// --------------------------------------------------------------------------- +// CBubbleOutlookTwoLined::DrawCall2Bitmaps +// --------------------------------------------------------------------------- +// +void CBubbleOutlookOneLined::DrawCall2Bitmaps( CBitmapContext& aGc ) const + { + if ( iBubble->Bitmap() ) + { + BubbleUtils::DrawMaskedImage( aGc , iBubble ); + } + else + { + // Draw bubble frame + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + if ( !AknsDrawUtils::DrawFrame( skin, + (CWindowGc&) aGc, + iOuterRect, + iInnerRect, + iFrameId, + KAknsIIDDefault ) ) + { + BubbleUtils::DrawBackgroundRect( aGc, Rect() ); + } + } + } + +// End of File