cbs/cbsui/UiInc/CCbsUiTopicListViewContainer.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:15:03 +0100
branchRCL_3
changeset 20 987c9837762f
parent 0 ff3b6d0fd310
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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: 
*       TopicListViewContainer owns the list box which shows
*       topics.
*
*
*/



#ifndef __CCBSUITOPICLISTVIEWCONTAINER_H
#define __CCBSUITOPICLISTVIEWCONTAINER_H

//  INCLUDES
#include <coeccntx.h>
#include <CbsCommon.h>
#include <AknIconArray.h>  // CAknIconArray

//  CONSTANTS  
const TInt KTopicNumberLength = 3;

 
//  FORWARD DECLARATIONS

class CCbsUiTopicListView;
class CEikColumnListBox;



// CLASS DECLARATION

/**
*  TopicListView container class
* 
*/
class CCbsUiTopicListViewContainer : public CCoeControl,
									 public MEikListBoxObserver
	{

    public: // Constructors and destructor    

        /**
        * Two-phased constructor.
        *
        * @param aListView to update view
        * @param aRect rectangle for which container can use
        */
        static CCbsUiTopicListViewContainer* NewL( 
            CCbsUiTopicListView& aListView, 
            const TRect& aRect );
        
        /**
        * Destructor.
        */
        virtual ~CCbsUiTopicListViewContainer();

    public: // New functions
        
        /**
        * Resests the array of list box. This should be called when 
        * before ReloadOfferTopic.
        */  
        void ReloadStarts() const;

        /**
        * Adds topic information to the topic.
        *
        * @param aTopic for setting name and topic number to the list box
        */  
        void ReloadOfferTopicL( const TCbsTopic& aTopic ) const;

        /**
        * Handles a list box item addition. This should be called
        * when reload is done. 
        */
        void ReloadEndsL();

        /**
        * Returns current position, i.e. Current listbox item.
        *
        * @return currentposition
        */ 
        TInt CurrentPosition() const;

        /**
        * Sets the current item index in the list box.
        *
        * @param aItemIndex new focused item index
        */
        void SetCurrentItemIndex( TInt aItemIndex ) const;

    public: // From CCoeControl 

        /**
        * Returns the count of components.
        * 
        * @return number of components
        */    	   
        TInt CountComponentControls() const;

        /**
        * Returns a component. 
        *
        * @param aIndex component index to return
        * @return requested component
        */    	   
	    CCoeControl* ComponentControl( TInt aIndex ) const;

        /**
        * Sets a new size to the list box.
        */    	   
	    void SizeChanged();

        /**
        * Informs that the focus is changed.
        * @param aDrawNow Contains the value that was passed to it by SetFocus()
        */
		void FocusChanged( TDrawNow aDrawNow );

        /**
        * Handles a needed key events.
        *
        * @param aKeyEvent what kind of key produced this event
        * @param aType Which kind of action produced this event
        * @return EKeyWasConsumed or EKeyWasNotConsumed 
        */    	   
	    TKeyResponse OfferKeyEventL(
            const TKeyEvent& aKeyEvent, 
            TEventCode aType );	        	      

        /**
        * Gets the control's help context.
        * 
        * @param aContext The control's help context
        */
        void GetHelpContext( TCoeHelpContext& aContext ) const;

    public: 
        /**
        * 
        */
        void HandleResourceChange( TInt aType );
        
    public: // From MEikListBoxObserver
    	
    	/**
        * Handles list box events,
        * 
        * @param aEventType The event identifier.
        */
        void HandleListBoxEventL( CEikListBox* /*aListBox*/,
        						  TListBoxEvent aEventType );

    private: // New functions

        /**
        * Indicates, which icon to use:
        * '0' = subscribed and there are no messages
        * '1' = subscribed and there are messages
        * '2' = not subscribed and there are no messages
        * '3' = not subscribed, but are messages
        *
        * @param aTopic to check the topic status
        * @return char which indicates, which icon to use.
        */ 
	    TChar GetStatus( const TCbsTopic& aTopic ) const;

        /**
        * Sets topic index to given buffer.
        *
        * @param aTopic a topic, from which will be used topic number
        * @param aIndexNumber buffer to be filled with topic number
        */
	    void GetIndexNumber( 
            const TCbsTopic& aTopic, TBuf<KTopicNumberLength>& aIndexNumber ) const;

    private: 

        /**
        * Constructor.
        *
        * @param aListView to update view
        */
        CCbsUiTopicListViewContainer(CCbsUiTopicListView& aListView);
        
        /**
        * Symbian OS constructor.
        *
        * @param aRect size of client area
        */
        void ConstructL(const TRect& aRect);
        
        /**
        * LoadIconsL
        *
        * Loads icons to CAknIconArray and set this iconarray 
        * to list iListBox(CEikColumnListBox)
        */
        void LoadIconsL();

        /**
         *  Append icon to icon array.
         *
         *  @param aId                    Icon id
         *  @param aIcons                 Icon array
         *  @param aIconFileWithPath      Icon file name with path
         *  @param aIconGraphicsIndex     Picture index.
         *  @param aIconGraphicsMaskIndex Mask index.
         *  @param aColorIcon             Is icon colored
         */
        void AddIconL( TAknsItemID aId, CAknIconArray* aIcons,
                       const TDesC& aIconFileWithPath,
                       TInt aIconGraphicsIndex,
                       TInt aIconGraphicsMaskIndex,
                       TBool aColorIcon = EFalse );


        /**
         * Change bitmaps when skin changes.
         */
        void SkinBitmapChangesL( );
        
        /**
        * Construct icon
        *
        * @param aColourIcon    Is icon a colour icon
        * @param aInstance      Current skin instance
        * @param aID            Icon ID
        * @param aFilename      Icon file name with path
        * @param aFileBitmapId  ID of the bitmap in the file   
        * @param aFileMaskId    ID of the mask in the file
        *
        * @return   The constructed icon
        */
        CGulIcon* ConstructIconL( TBool& aColourIcon, 
                            MAknsSkinInstance* aInstance, 
                            const TAknsItemID& aID,                            
                            const TDesC& aFilename,
                            const TInt aFileBitmapId, 
                            const TInt aFileMaskId );

    private: // Data

        // Reference to TopicListView.
        CCbsUiTopicListView& iListView;

        // For data to be shown in the view.
        CEikColumnListBox* iListBox;

	};


#endif // __CCBSUITOPICLISTVIEWCONTAINER_H


// End of File