phoneuis/BubbleManager/Src/BMBubblePlace.cpp
changeset 0 5f000ab63145
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/BubbleManager/Src/BMBubblePlace.cpp	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,431 @@
+/*
+* Copyright (c) 2002 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:  Header place on the screen.
+*
+*/
+
+
+// INCLUDE FILES
+#include    "BMBubbleManager.h"  
+#include    "BMBubblePlace.h"
+#include    "BMBubbleOutlookBottom.h"
+#include    "BMBubbleOutlookMiddle.h"
+#include    "BMBubbleOutlookBottomRight.h"
+#include    "BMBubbleOutlook.h"
+#include    "BMBubbleOutlookTopLeft.h"
+#include    "BMBubbleOutlookTopRight.h"
+#include    "BMBubbleOutlookHide.h"
+#include    "BMBubbleOutlookConference.h"
+#include    "BMPanic.h"
+
+#include    "BMBubbleOutlookBottomCnap.h"
+#include    "BMBubbleOutlookMiddleCnap.h"
+#include    "BMBubbleOutlookBottomText.h"
+#include    "BMBubbleOutlookBottomImage.h"
+#include    "BMBubbleOutlookVideo.h"
+#include    "BMBubbleOutlookVideoCnap.h"
+#include    "BMBubbleOutlookBottomRiCnap.h"
+#include    "BMBubbleOutlookBottomImCnap.h"
+
+#include    <AknsUtils.h>
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::ConstructL
+// 
+// ---------------------------------------------------------------------------
+//
+void CBubblePlace::ConstructL( 
+                              const TPhoneBubblePlace& aBubblePlace,
+                              CBubbleManager& aBubbleManager )
+    {
+    
+    iBubblePlace = aBubblePlace;
+    iBubbleOutlook = NULL;
+    iIsUsed  = EFalse; // By default.
+    
+    // Create corresponding BubbleOutlook:
+    switch( iBubblePlace )
+        {
+        case EBottom:
+            {
+            CBubbleOutlookBottom* BOBottom = 
+                new( ELeave ) CBubbleOutlookBottom( aBubbleManager );
+            CleanupStack::PushL( BOBottom );
+            BOBottom->SetContainerWindowL( *this );
+            BOBottom->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottom;
+            }
+            break;
+        case EBottomRightActive:
+        case EBottomRightHeld:
+            {
+            CBubbleOutlookBottomRight* BOBottomR = 
+                new( ELeave ) CBubbleOutlookBottomRight( aBubbleManager );
+            CleanupStack::PushL( BOBottomR );
+            BOBottomR->SetContainerWindowL( *this );
+            BOBottomR->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottomR;
+            }
+            break;
+        case EMiddleActive:
+        case EMiddleHeld:
+            {
+            CBubbleOutlookMiddle* BOMiddle = 
+                new( ELeave ) CBubbleOutlookMiddle( aBubbleManager );
+            CleanupStack::PushL( BOMiddle );
+            BOMiddle->SetContainerWindowL( *this );
+            BOMiddle->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOMiddle;
+            }
+            break;
+        case ETopLeft:
+            {
+            CBubbleOutlookTopLeft* BOTL = 
+                new( ELeave ) CBubbleOutlookTopLeft( aBubbleManager );
+            CleanupStack::PushL( BOTL );
+            BOTL->SetContainerWindowL( *this );
+            BOTL->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOTL;
+            }
+            break;
+        case ETopRight:
+            {
+            CBubbleOutlookTopRight* BOTR = 
+                new( ELeave ) CBubbleOutlookTopRight( aBubbleManager );
+            CleanupStack::PushL( BOTR );
+            BOTR->SetContainerWindowL( *this );
+            BOTR->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOTR;
+            }
+            break;
+        case EHide:
+            {
+            CBubbleOutlookHide* BOH = 
+                new( ELeave ) CBubbleOutlookHide( aBubbleManager );
+            CleanupStack::PushL( BOH );
+            BOH->SetContainerWindowL( *this );
+            BOH->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOH;
+            }
+            break;
+        case E2InConf:
+            {
+            CBubbleOutlookConference* BOConf = 
+                new( ELeave ) CBubbleOutlookConference( aBubbleManager );
+            CleanupStack::PushL( BOConf );
+            BOConf->SetContainerWindowL( *this );
+            BOConf->ConstructL( 2 );
+            CleanupStack::Pop();
+            iBubbleOutlook = BOConf;
+            }
+            break;
+        case E3InConf:
+            {
+            CBubbleOutlookConference* BOConf = 
+                new( ELeave ) CBubbleOutlookConference( aBubbleManager );
+            CleanupStack::PushL( BOConf );
+            BOConf->SetContainerWindowL( *this );
+            BOConf->ConstructL( 3 );
+            CleanupStack::Pop();
+            iBubbleOutlook = BOConf;
+            }
+            break;
+        case E4InConf:
+            {
+            CBubbleOutlookConference* BOConf = 
+                new( ELeave ) CBubbleOutlookConference( aBubbleManager );
+            CleanupStack::PushL( BOConf );
+            BOConf->SetContainerWindowL( *this );
+            BOConf->ConstructL( 4 );
+            CleanupStack::Pop();
+            iBubbleOutlook = BOConf;
+            }
+            break;
+        case E5InConf:
+            {
+            CBubbleOutlookConference* BOConf = 
+                new( ELeave ) CBubbleOutlookConference( aBubbleManager );
+            CleanupStack::PushL( BOConf );
+            BOConf->SetContainerWindowL( *this );
+            BOConf->ConstructL(  5 );
+            CleanupStack::Pop();
+            iBubbleOutlook = BOConf;
+            }
+            break;
+        case EBottomText:
+            {
+            CBubbleOutlookBottomText* BOBottomText = 
+                new( ELeave ) CBubbleOutlookBottomText( aBubbleManager );
+            CleanupStack::PushL( BOBottomText );
+            BOBottomText->SetContainerWindowL( *this );
+            BOBottomText->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottomText;
+            }
+            break;
+        case EBottomImage:
+            {
+            CBubbleOutlookBottomImage* BOBottomImage = 
+                new( ELeave ) CBubbleOutlookBottomImage( aBubbleManager );
+            CleanupStack::PushL( BOBottomImage );
+            BOBottomImage->SetContainerWindowL( *this );
+            BOBottomImage->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottomImage;
+            }
+            break;                        
+        case EVideo:
+            {
+            CBubbleOutlookVideo* BOVideo = 
+                new( ELeave ) CBubbleOutlookVideo( aBubbleManager );
+            CleanupStack::PushL( BOVideo );
+            BOVideo->SetContainerWindowL( *this );
+            BOVideo->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOVideo;
+            }
+            break;                                    
+        case EBottomCnap:
+            {
+            CBubbleOutlookBottomCnap* BOBottomCnap = 
+                new( ELeave ) CBubbleOutlookBottomCnap( aBubbleManager );
+            CleanupStack::PushL( BOBottomCnap );
+            BOBottomCnap->SetContainerWindowL( *this );
+            BOBottomCnap->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottomCnap;
+            }
+            break;
+        case EMiddleCnap:
+            {
+            CBubbleOutlookMiddleCnap* BOMiddleCnap = 
+                new( ELeave ) CBubbleOutlookMiddleCnap( aBubbleManager );
+            CleanupStack::PushL( BOMiddleCnap );
+            BOMiddleCnap->SetContainerWindowL( *this );
+            BOMiddleCnap->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOMiddleCnap;
+            }
+            break;
+        case EVideoCnap:
+            {
+            CBubbleOutlookVideoCnap* BOVideoCnap = 
+                new( ELeave ) CBubbleOutlookVideoCnap( aBubbleManager );
+            CleanupStack::PushL( BOVideoCnap );
+            BOVideoCnap->SetContainerWindowL( *this );
+            BOVideoCnap->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOVideoCnap;
+            }
+            break;
+        case EBottomRightCnap:
+            {
+            CBubbleOutlookBottomRightCnap* BOBottomRightCnap = 
+                new( ELeave ) CBubbleOutlookBottomRightCnap( aBubbleManager );
+            CleanupStack::PushL( BOBottomRightCnap );
+            BOBottomRightCnap->SetContainerWindowL( *this );
+            BOBottomRightCnap->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottomRightCnap;
+            }
+            break;
+        case EBottomImageCnap:
+            {
+            CBubbleOutlookBottomImageCnap* BOBottomImageCnap = 
+                new( ELeave ) CBubbleOutlookBottomImageCnap( aBubbleManager );
+            CleanupStack::PushL( BOBottomImageCnap );
+            BOBottomImageCnap->SetContainerWindowL( *this );
+            BOBottomImageCnap->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottomImageCnap;
+            }
+            break;
+        case EBottomRightActiveTouch:
+            {
+            CBubbleOutlookBottomRight* BOBottomR = 
+                new( ELeave ) CBubbleOutlookBottomRight( aBubbleManager );
+            CleanupStack::PushL( BOBottomR );
+            BOBottomR->SetContainerWindowL( *this );
+            BOBottomR->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottomR;    
+            }
+            break;
+        case EBottomRightActiveCnapTouch:
+            {
+            CBubbleOutlookBottomRightCnap* BOBottomRightCnap = 
+                new( ELeave ) CBubbleOutlookBottomRightCnap( aBubbleManager );
+            CleanupStack::PushL( BOBottomRightCnap );
+            BOBottomRightCnap->SetContainerWindowL( *this );
+            BOBottomRightCnap->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOBottomRightCnap;    
+            }
+            break;
+        case EMiddleHeldTouch:
+            {
+            CBubbleOutlookTopLeft* BOTL = 
+                new( ELeave ) CBubbleOutlookTopLeft( aBubbleManager );
+            CleanupStack::PushL( BOTL );
+            BOTL->SetContainerWindowL( *this );
+            BOTL->ConstructL();
+            CleanupStack::Pop();
+            iBubbleOutlook = BOTL;    
+            }
+            break;
+        default:
+            Panic( EBMPanicUnhandledSwitchCase );
+            break;
+        } 
+
+
+    iBubbleOutlook->SetParent( this );
+        
+    ActivateL();
+    }
+    
+// ---------------------------------------------------------------------------
+// CBubblePlace::~CBubblePlace
+// Destructor.
+//  
+// ---------------------------------------------------------------------------
+//
+CBubblePlace::~CBubblePlace()
+    {
+    AknsUtils::DeregisterControlPosition( this );
+    delete iBubbleOutlook;   
+    }
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::SizeChanged
+// called by framwork when the view size is changed
+//  
+// ---------------------------------------------------------------------------
+//
+void CBubblePlace::SizeChanged()
+    {  
+    AknsUtils::RegisterControlPosition( this );
+    iBubbleOutlook->SetRect ( Rect() );
+    }
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::PositionChanged
+// ---------------------------------------------------------------------------
+//
+void CBubblePlace::PositionChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::CountComponentControls
+//
+//  
+// ---------------------------------------------------------------------------
+//
+TInt CBubblePlace::CountComponentControls() const
+    { 
+    if ( iIsUsed )
+        {
+        return 1; // bubble outlook
+        }
+    return 0;
+    }
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::ComponentControl
+//
+//  
+// ---------------------------------------------------------------------------
+//
+CCoeControl* CBubblePlace::ComponentControl( TInt aIndex ) const
+    {
+    if ( !iIsUsed ) 
+        {
+        return NULL;
+        }
+    
+    switch ( aIndex )
+        {
+        case 0:
+            return iBubbleOutlook;
+        default:
+            return NULL;
+        }
+    }
+
+
+
+
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::SetIsUsed
+//  
+//  
+// ---------------------------------------------------------------------------
+//
+void CBubblePlace::SetIsUsed( const TBool& aIsUsed )
+    {
+    iIsUsed = aIsUsed;
+    if ( !iIsUsed )
+        {
+        iBubbleOutlook->Reset( );
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::IsUsed
+//  
+//  
+// ---------------------------------------------------------------------------
+//
+TBool CBubblePlace::IsUsed( ) const
+    {
+    return iIsUsed;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::GetBubblePlace
+//  
+//  
+// ---------------------------------------------------------------------------
+//
+CBubblePlace::TPhoneBubblePlace CBubblePlace::GetBubblePlace( ) const
+    {
+    return iBubblePlace;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CBubblePlace::GetBubbleOutlook
+//  
+//  
+// ---------------------------------------------------------------------------
+//
+CBubbleOutlook& CBubblePlace::GetBubbleOutlook( ) const
+    {
+    return *iBubbleOutlook;
+    }
+    
+// End of File