textinput/peninputarc/src/peninputlayoutcontrol/peninputpopupbubble.cpp
branchRCL_3
changeset 56 8152b1f1763a
parent 50 5a1685599b76
child 57 9eb76adaa71f
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputpopupbubble.cpp	Wed Sep 15 12:34:44 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,492 +0,0 @@
-/*
-* Copyright (c) 2005-2007 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 CPopupBubbleCtrl
-*
-*/
-
-
-#include <AknIconUtils.h>
-#include <AknsUtils.h>
-#include <AknUtils.h>
-#include <AknsDrawUtils.h> 
-
-#include "peninputpopupbubble.h"
-#include "peninputlayout.h"
-#include <peninputpluginutils.h>
-#include <imageconversion.h> 
-#include "peninputcmd.h"
-
-const TInt KShrinkSize = 10;
-const TInt KDefaultTextColorIndex = EAknsCIQsnTextColorsCG60;
-const TInt KAlpha = 200;
-
-// ======== MEMBER FUNCTIONS ========
-
-/*****************************************************************************/
-// Implementation of Class CPopupBubbleWnd
-
-// ---------------------------------------------------------------------------
-// c++ constructor
-// ---------------------------------------------------------------------------
-//
-CPopupBubbleWnd::CPopupBubbleWnd(CPopupBubbleCtrl& aParent)
-: iParent(aParent),
-iSupportTransparent(EFalse)
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// c++ destructor
-// ---------------------------------------------------------------------------
-//
-CPopupBubbleWnd::~CPopupBubbleWnd()
-    {
-    //delete bitmaps    
-    iBitGc.ResetAndDestroy();
-    iDevice.ResetAndDestroy();
-    iBitmap.ResetAndDestroy();       
-    }
-
-// ---------------------------------------------------------------------------
-// Symbian constructor
-// ---------------------------------------------------------------------------
-//
-CPopupBubbleWnd* CPopupBubbleWnd::NewL(const TRect& aRect, CPopupBubbleCtrl& aParent)
-    {
-    CPopupBubbleWnd* self = CPopupBubbleWnd::NewLC(aRect, aParent);
-    CleanupStack::Pop(); // self;
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Symbian constructor
-// ---------------------------------------------------------------------------
-//
-CPopupBubbleWnd* CPopupBubbleWnd::NewLC(const TRect& aRect, CPopupBubbleCtrl& aParent)
-    {
-    CPopupBubbleWnd* self = new ( ELeave ) CPopupBubbleWnd(aParent);
-    CleanupStack::PushL( self );
-    self->ConstructL(aRect);
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Symbian second-phase constructor
-// ---------------------------------------------------------------------------
-//
-void CPopupBubbleWnd::ConstructL(const TRect& aRect)
-    {
-    RWindowGroup& wg = CCoeEnv::Static()->RootWin();
-    CreateWindowL( wg );
-    SetComponentsToInheritVisibility();
-    Window().SetRequiredDisplayMode( EColor16MA );
-    TInt err = Window().SetTransparencyAlphaChannel();
-    iSupportTransparent = ( KErrNone == err );
-    Window().SetBackgroundColor( TRgb(0,0,0,0) );
-
-    //create bitmaps
-    for(TInt i = 0; i<ELastItem; i++)
-        {
-        CFbsBitmap* bitmap = new (ELeave) CFbsBitmap(); // Bitmap
-        CleanupStack::PushL(bitmap);
-        iBitmap.AppendL(bitmap); //take ownership
-        CleanupStack::Pop(bitmap);
-        iBitmap[i]->Create(aRect.Size(), EColor16MA);
-        
-        CFbsBitmapDevice* device = CFbsBitmapDevice::NewL(iBitmap[i]); //BitmapDevice
-        CleanupStack::PushL(device);
-        iDevice.AppendL(device); //take ownership
-        CleanupStack::Pop(device);
-        
-        CFbsBitGc* bitgc = CFbsBitGc::NewL(); // GraphicsContext
-        CleanupStack::PushL(bitgc);
-        iBitGc.AppendL(bitgc); //take ownership
-        CleanupStack::Pop(bitgc);
-        }
-    
-    MakeVisible( ETrue );    
-    SetRect(aRect);
-    ActivateL();
-    }
-
-// ---------------------------------------------------------------------------
-// Draw this control
-// ---------------------------------------------------------------------------
-//
-void CPopupBubbleWnd::Draw(const TRect& aRect) const
-    {    
-    if ( !iParent.AbleToDraw() )
-        {
-        return;
-        }
-    
-    CWindowGc& gc = SystemGc();
-
-    if ( !SupportTransparent() )
-        {
-        gc.Clear( aRect ); 
-        }    
-    
-    DrawTransparentBackground( aRect );
-
-    if ( iParent.iForgroundBmp )
-        {
-        TRect innerRect = aRect;
-        innerRect.Shrink( KShrinkSize, 0 );
-        
-        TRect iconRect;
-        iconRect.iTl = TPoint( innerRect.iTl.iX + iParent.iIconOffset.iWidth, 
-                innerRect.iTl.iY + iParent.iIconOffset.iHeight );
-        iconRect.SetWidth( iParent.iIconSize.iWidth );
-        iconRect.SetHeight( iParent.iIconSize.iHeight );
-        
-        if( iParent.iForgroundBmp->SizeInPixels() != iconRect.Size() )
-            {
-            AknIconUtils::SetSize( iParent.iForgroundBmp, iconRect.Size(), EAspectRatioNotPreserved );
-            }
-            
-        TRect srcRect( TPoint( 0, 0 ), iParent.iForgroundBmp->SizeInPixels() );
-        
-        if( iParent.iForgroundBmpMask )
-            {
-            if( iParent.iForgroundBmpMask->SizeInPixels() != iconRect.Size() )
-                {
-                AknIconUtils::SetSize( iParent.iForgroundBmpMask, iconRect.Size(), EAspectRatioNotPreserved);
-                }
-                        
-            gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-            gc.BitBltMasked( iconRect.iTl, 
-                              iParent.iForgroundBmp, 
-                              srcRect,
-                              iParent.iForgroundBmpMask,
-                              EFalse);
-            }
-        else
-            {
-            gc.BitBlt( iconRect.iTl,
-                        iParent.iForgroundBmp,
-                        srcRect );
-            }            
-        }
-    
-    if ( iParent.iText && iParent.iText->Length() > 0 )
-        {
-        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-        TAknLayoutText textLayout;
-        textLayout.LayoutText(Rect(), iParent.iTextFormat);
-        TRgb color( KRgbBlack );  // sane default for nonskinned case
-        if ( AknsUtils::AvkonSkinEnabled() )
-            {
-            AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
-                                   color, KAknsIIDQsnTextColors, iParent.iTextColorIndex );
-            }
-         textLayout.DrawText(gc, *(iParent.iText), ETrue, color);
-        }    
-    }
-
-// ---------------------------------------------------------------------------
-// Resize this control
-// ---------------------------------------------------------------------------
-//
-void CPopupBubbleWnd::SizeChanged()
-    {
-    TRect rect = Rect();        
-    
-    iRect[EMiddleItem] = rect;    
-    
-    iRect[EMiddleItem].Shrink( KShrinkSize, 0 );
-      
-    // horizon
-    if( rect.iTl.iY == iRect[EMiddleItem].iTl.iY && rect.iBr.iY == iRect[EMiddleItem].iBr.iY )
-        {
-        iRect[ELeftItem] = TRect( rect.iTl, TPoint( iRect[EMiddleItem].iTl.iX, iRect[EMiddleItem].iBr.iY ) );
-        iRect[ERightItem] = TRect( TPoint( iRect[EMiddleItem].iBr.iX, iRect[EMiddleItem].iTl.iY), rect.iBr );    
-        }
-    else if( rect.iTl.iX == iRect[EMiddleItem].iTl.iX &&  rect.iBr.iX == iRect[EMiddleItem].iBr.iX )
-        {
-        iRect[ELeftItem] = TRect( rect.iTl, TPoint( iRect[EMiddleItem].iBr.iX, iRect[EMiddleItem].iTl.iY ) );
-        iRect[ERightItem] = TRect( TPoint( iRect[EMiddleItem].iTl.iX, iRect[EMiddleItem].iBr.iY), rect.iBr );            
-        }     
-    
-    SizeImage( iParent.iFirstBmpId, iRect[ELeftItem], iBitmap[ELeftItem], iDevice[ELeftItem], iBitGc[ELeftItem] );
-    SizeImage( iParent.iMiddleBmpId, iRect[EMiddleItem], iBitmap[EMiddleItem], iDevice[EMiddleItem], iBitGc[EMiddleItem] );
-    SizeImage( iParent.iLastBmpId, iRect[ERightItem], iBitmap[ERightItem], iDevice[ERightItem], iBitGc[ERightItem] );
-    }
-
-// ---------------------------------------------------------------------------
-// Handle resource change
-// ---------------------------------------------------------------------------
-//
-void CPopupBubbleWnd::HandleResourceChange( TInt aType )
-    {
-    if ( aType == KAknsMessageSkinChange )
-        {
-        // When skin changes, we need to update local bitmaps
-        SizeChanged();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Size images used for drawing
-// ---------------------------------------------------------------------------
-//
-void CPopupBubbleWnd::SizeImage( TAknsItemID aId, TRect aRect, CFbsBitmap* aBitmap, CFbsBitmapDevice* aDevice, CFbsBitGc* aBitGc )
-    {     
-    MAknsSkinInstance* instance = AknsUtils::SkinInstance();
-    TAknsItemType type = instance->GetCachedItemData( aId )->Type();
-    if ( type == EAknsITMaskedBitmap )
-        {
-        CAknsMaskedBitmapItemData* itemData =
-                static_cast<CAknsMaskedBitmapItemData*> ( instance->GetCachedItemData( aId ) );
-
-        AknIconUtils::SetSize( itemData->Bitmap(), aRect.Size(), EAspectRatioNotPreserved );
-        AknIconUtils::SetSize( itemData->Mask(), aRect.Size(), EAspectRatioNotPreserved );
-
-        TDisplayMode bitmapmode = itemData->Bitmap()->DisplayMode();
-        TDisplayMode maskmode = itemData->Mask()->DisplayMode();
-
-        aBitmap->Resize( aRect.Size() );
-        aDevice->Resize( aRect.Size() );
-        aBitGc->Activate( aDevice );
-
-        TRect entireImage( TPoint(0, 0), itemData->Bitmap()->SizeInPixels() );
-        if (itemData->Mask())
-            {
-            aBitGc->BitBltMasked( TPoint(0, 0), itemData->Bitmap(), entireImage,
-                    itemData->Mask(), ETrue );
-            }
-        else
-            {
-            aBitGc->BitBlt( TPoint(0, 0), itemData->Bitmap() );
-            }
-
-        TInt size = aBitmap->DataSize();
-        TUint32* data = aBitmap->DataAddress();
-        TDisplayMode mode = aBitmap->DisplayMode();
-
-        iBitmap[ETempItem]->Resize( aRect.Size() );
-        iDevice[ETempItem]->Resize( aRect.Size() );
-        iBitGc[ETempItem]->Activate( iDevice[ETempItem] );
-        iBitGc[ETempItem]->BitBlt( TPoint(0, 0), itemData->Mask() );
-        
-        TUint32* mask_data = iBitmap[ETempItem]->DataAddress(); 
-         
-         if (mode == EColor16MA)
-             {
-             for (TInt i = 0; i < size/sizeof( TUint32 ); i++)
-                 {
-                 TRgb colour;
-                 colour.SetInternal( *(mask_data + i) );
-                 if (colour != TRgb( 0x00, 0x00, 0x00, 0xFF ))
-                     {
-                     colour.SetInternal( *(data + i) );
-                     colour.SetAlpha( KAlpha ); //semi transparent
-                     *(data + i) = colour.Internal();
-                     }
-                 else
-                     {
-                     colour.SetInternal( *(data + i) );
-                     colour.SetAlpha( 0x00 ); //fully transparent
-                     *(data + i) = colour.Internal();                   
-                     }
-                 }           
-             }
-        }
-    } 
-
-// ---------------------------------------------------------------------------
-// Draw transparent background
-// ---------------------------------------------------------------------------
-//
-
-void CPopupBubbleWnd::DrawTransparentBackground( const TRect& aRect ) const
-{
-    CWindowGc& gc = SystemGc();
-
-    for( TInt i=0; i<ELastItem; i++ )
-        {
-        if ( i == ETempItem )//skip temporary bitmap
-            {
-            continue;
-            }
-        if ( iBitmap[i] )//draw other bitmaps
-            {
-            gc.BitBlt( iRect[i].iTl, iBitmap[i] );
-            }
-        }
-}
-
-/*****************************************************************************/
-// Implementation of Class CPopupBubbleCtrl
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::NewL
-// Symbian constructor
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//               
-EXPORT_C CPopupBubbleCtrl* CPopupBubbleCtrl::NewL( const TRect& aRect,
-                               CFepUiLayout* aUiLayout,
-                               TInt aCtrlId )
-    {
-    CPopupBubbleCtrl* ctrl = new (ELeave)CPopupBubbleCtrl( aRect,aUiLayout,aCtrlId );
-    CleanupStack::PushL( ctrl );
-    ctrl->BaseConstructL();
-    
-    CleanupStack::Pop( ctrl );
-    return ctrl;
-    }
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::CPopupBubbleCtrl
-// C++  constructor
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPopupBubbleCtrl::CPopupBubbleCtrl( const TRect& aRect,
-                         CFepUiLayout* aUiLayout,
-                         TInt aCtrlId )
-    :CFepUiBaseCtrl( aRect,aUiLayout,aCtrlId ),
-     iTextColorIndex( KDefaultTextColorIndex )
-    {
-    SetControlType( ECtrlButton );
-    SetHidenFlag( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::CPopupBubbleCtrl
-// C++  destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPopupBubbleCtrl::~CPopupBubbleCtrl()
-    {
-    if ( iText )
-        {
-        delete iText;
-        iText = NULL;
-        }      
-    if( iForgroundBmp )
-        {
-        delete iForgroundBmp;
-        iForgroundBmp = NULL;
-        }
-    if( iForgroundBmpMask )
-        {
-        delete iForgroundBmpMask;
-        iForgroundBmpMask = NULL;
-        }        
-    }
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::SetBitmapParamL
-// Set bitmap parameters used fot this bubble
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPopupBubbleCtrl::SetBitmapParamL(
-                                    CFbsBitmap* aBmpId,
-                                    CFbsBitmap* aMaskBmpId,     
-                                 TAknsItemID aFirstBmpId,
-                                 TAknsItemID aMiddleBmpId,
-                                 TAknsItemID aLastBmpId)
-    {
-    if( iForgroundBmp )
-        {
-        delete iForgroundBmp;
-        iForgroundBmp = NULL;
-        }
-    if( iForgroundBmpMask )
-        {
-        delete iForgroundBmpMask;
-        iForgroundBmpMask = NULL;
-        }    
-        
-    iForgroundBmp = aBmpId;
-    iForgroundBmpMask = aMaskBmpId;
-    
-    iFirstBmpId = aFirstBmpId;
-    iMiddleBmpId =  aMiddleBmpId;
-    iLastBmpId = aLastBmpId;
-    
-    delete iWndControl;
-    iWndControl = NULL;
-    iWndControl = CPopupBubbleWnd::NewL( Rect(), *this );
-    }
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::Hide
-// Hide bubble control
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPopupBubbleCtrl::Hide( TBool aFlag )
-    {
-    if ( iWndControl )
-        {
-        iWndControl->MakeVisible( !aFlag );
-        }
-    CFepUiBaseCtrl::Hide( aFlag );    
-    }
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::Draw
-// Draw bubble control
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPopupBubbleCtrl::Draw()
-    {
-    if( !AbleToDraw() )
-        {
-        return;
-        }    
-    
-    if( iWndControl )
-        {
-        iWndControl->DrawDeferred();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::Move
-// Move bubble control
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPopupBubbleCtrl::Move( const TPoint& aOffset )
-    {
-    //leave empty
-    }
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::SetTextFormat
-// Set text format used for text drawing
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPopupBubbleCtrl::SetTextFormat( TAknTextLineLayout aTextFormat )
-    {
-    iTextFormat = aTextFormat;                
-    }
-
-// ---------------------------------------------------------------------------
-// CPopupBubbleCtrl::SetTextL
-// Set bubble text
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPopupBubbleCtrl::SetTextL( const TDesC& aText )
-    {
-    delete iText;
-    iText = NULL;
-    iText = aText.AllocL();
-    }