/*
* Copyright (c) 2002-2004 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: 
*     Draws expanded conference call
*
*/


#ifndef BUBBLEOUTLOOKCONFERENCE_H
#define BUBBLEOUTLOOKCONFERENCE_H

// INCLUDES
#include    <calslbs.h>
   
#include    "BMBubbleOutlook.h"
#include    "BMCallHeader.h"
#include    "BMConfPane.h"

// FORWARD DECLARATIONS
class CEikLabel;       
class CEikImage;
class CBubbleImageManager;
class CConfHeader;


// CLASS DECLARATION

/**
*  CBubbleOutlookConference container class
*
*  Object handles expanded conference call.
*
*  @lib bubblemanager 
*  @since 1.0
*/
class CBubbleOutlookConference : public CBubbleOutlook
{

    public: // Constructors and destructor
       
        /**
        * Symbian OS default constructor.
        * @param aBubbleManager Main container
        */
        CBubbleOutlookConference( CBubbleManager& aBubbleManager );

        /**
        * Symbian OS 2nd phase constructor.
        * @param aCallAmount Amount of panes allocated.
        */
        void ConstructL( const TUint8& aCallAmount );

        /**
        * Destructor.
        */
        virtual ~CBubbleOutlookConference();

    public: // New functions
    
        /**
        * Draws given row
        * @param aRow Row number to be drawn.
        */
        void DrawRowNow( CBubbleManager::TRowNumber aRow );


    public:// Functions from base classes

        /**
        * From CBubbleOutlook 
        */
        void Reset();

        /**
        * From CBubbleOutlook 
        */
        void ReadBubbleHeader( CBubbleHeader& aHeader );

        /**
        * From CBubbleOutlook 
        */
        virtual void DrawTimerCostNow();

        /**
        * From CBubbleOutlook
        */
        virtual void DrawCLINow();

        /**
        * From CBubbleOutlook
        */
        void DrawBitmaps( CBitmapContext& aGc ) const;

        /**
        * From CBubbleOutlook.
        */
        virtual void HandleAnimationStartL() const;

        /**
        * From CBubbleOutlook.
        */
        virtual void DrawCallHeaderText();

    private: // Functions from base classes

       /**
        * From CCoeControl Called when rect changes
        */
        void SizeChanged();

       /**
        * From CCoeControl
        */
        TInt CountComponentControls() const;

       /**
        * From CCoeControl
        */
        CCoeControl* ComponentControl( TInt aIndex ) const;

       /**
        * From CCoeControl
        */
        void Draw( const TRect& aRect ) const;

       /**
        * From CCoeControl
        */ 
        void CBubbleOutlookConference::HandlePointerEventL
            ( const TPointerEvent& aPointerEvent );

    private:
    
        /**
        * DoCall1Layout
        */
        void DoCall1Layout();

        /**
        * DoCall2LayoutL
        */            
        void DoCall2LayoutL();
        
        /**
        * DoCall4Layout
        */            
        void DoCall4LayoutL();
        
        /**
        * GetCall1BubbleBitmaps
        */
        void GetCall1BubbleBitmaps();

    private: //data

        // call amount in conference
        TUint8 iPaneAmount; 

        // all the information
        CBubbleConfHeader* iHeader; 

        // speech bubble image
        CEikImage* iBubble; 
        // Timer control
        CEikLabel* iTimerCost; 

        // for drawing
        CArrayPtrFlat<CBubbleConfPane>* iConfPanes; 
        // for fetching info
        CArrayPtrFlat<CBubbleCallHeader>* iCalls; 
        
    private:

        friend class CT_CBubbleOutlookConference;
    
};

#endif // BUBBLEOUTLOOKCONFERENCE_H

// End of File
