diff -r f5a1e66df979 -r a47de9135b21 textinput/peninputarc/src/peninputlayoutcontrol/peninputfloatbubble.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputfloatbubble.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -0,0 +1,193 @@ +/* +* Copyright (c) 2006-2006 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 for Floating bubble +* +*/ + + +#include +#include + +#include "peninputfloatbubble.h" + +const TInt KDefaultMarginSize = 10; + +// --------------------------------------------------------------------------- +// Symbian Constructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingBubble* CPeninputFloatingBubble::NewL() + { + CPeninputFloatingBubble* self = CPeninputFloatingBubble::NewLC(); + CleanupStack::Pop(); // self; + return self; + } + +// --------------------------------------------------------------------------- +// Symbian Constructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingBubble* CPeninputFloatingBubble::NewLC() + { + CPeninputFloatingBubble* self = new ( ELeave ) CPeninputFloatingBubble(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// c++ destructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingBubble::~CPeninputFloatingBubble() + { + if ( iText ) + { + delete iText; + } + + iText = NULL; + iIconImage = NULL; + iIconMask = NULL; + } + +// --------------------------------------------------------------------------- +// Draw this control +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::Draw( const TRect& aRect ) const + { + CWindowGc& gc = SystemGc(); + TRect rect = Rect(); + gc.Clear( rect ); + + //draw background + if ( iBkgndSkinId.iMajor ) + { + TRect border = rect; + TRect inner = rect; + inner.Shrink( KDefaultMarginSize, KDefaultMarginSize ); + AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), + gc, + border, + inner, + iBkgndSkinId, + KAknsIIDDefault ); + } + else + { + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.SetBrushColor( KRgbGray ); + gc.SetPenStyle( CGraphicsContext::ESolidPen ); + gc.SetPenColor( KRgbBlack ); + gc.DrawRoundRect( rect, TSize( 2, 2 ) ); + } + + //draw icon + if ( iIconImage ) + { + TSize size = iIconImage->SizeInPixels(); + TInt x = rect.iTl.iX + ( rect.Width() - size.iWidth ) / 2; + TInt y = rect.iTl.iY + ( rect.Height() - size.iHeight ) / 2; + if ( iIconMask ) + { + gc.BitBltMasked( TPoint( x, y ), iIconImage, + TRect( TPoint( 0, 0 ), size), iIconMask, + EFalse ); + } + else + { + gc.BitBlt( TPoint( x, y ), iIconImage ); + } + } + + //draw text + if ( iText ) + { + gc.SetBrushStyle( CGraphicsContext::ENullBrush ); + TAknLayoutText textLayout; + textLayout.LayoutText( rect, iTextFormat ); + TRgb color( KRgbBlack ); + if ( AknsUtils::AvkonSkinEnabled() ) + { + AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), + color, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG60 ); + } + textLayout.DrawText( gc, *iText, EFalse, color ); + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::SetBackgroundImage( TAknsItemID aBkgndImage ) + { + iBkgndSkinId = aBkgndImage; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::SetText( const TDesC& aText ) + { + if ( iText ) + { + delete iText; + } + iText = NULL; + + iText = aText.Alloc(); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::SetTextFormat( TAknTextLineLayout aTextFormat ) + { + iTextFormat = aTextFormat; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::SetIcon( CFbsBitmap* aIconImage, CFbsBitmap* aIconMask ) + { + iIconImage = aIconImage; + iIconMask = aIconMask; + } + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +// +CPeninputFloatingBubble::CPeninputFloatingBubble() + : iBkgndSkinId( KAknsIIDNone ) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// Symbian second-phase constructor +// --------------------------------------------------------------------------- +// +void CPeninputFloatingBubble::ConstructL() + { + BaseConstructL(); + }