searchui/searchapp/srchuigenui/inc/srchuiresfoldermodel.h
author Simon Howkins <simonh@symbian.org>
Mon, 22 Nov 2010 16:01:09 +0000
branchRCL_3
changeset 93 d216ae5a8733
parent 0 f979ecb2b13e
permissions -rw-r--r--
Adjusted to avoid exports, etc, from a top-level bld.inf

/*
* Copyright (c) 2006-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:     The model of the CSrchUiResFolderContainer. 
*
*/





#ifndef C_SEARCH_RESULT_FOLDER_MODEL_H
#define C_SEARCH_RESULT_FOLDER_MODEL_H

// System Includes
#include <bamdesca.h>

// FORWARD DECLARATIONS
class CSrchUiResFolder;
class CSrchUiGeneral;

// CLASS DECLARATION

/**
* Adapts the model data for CSrchUiResFolderContainer.
*
* Adapter pattern is implemented here to adapt CSrchUiResFolderModel into
* MDesCArray which is needed by all listboxes
* (CSrchUiResFolderContainer owns 1 listbox control).
*
* @lib srchuigenui.lib
*/
NONSHARABLE_CLASS( CSrchUiResFolderModel ) : public CBase,
                               				public MDesCArray
	{
    public: // Symbian Constructors and destructor
    	/** 
    	* Symbian OS 2 phased constructor
    	*
    	* @param    aGeneralsrchUi   Search UI.
    	* @return	A pointer to the created instance of
    	*           CSrchUiResFolderModel.
    	*/
    	static CSrchUiResFolderModel* NewL(CSrchUiGeneral* aGeneralsrchUi);

    	/** 
    	* Symbian OS 2 phased constructor
    	*
    	* @param    aGeneralsrchUi   Search UI.
    	* @return	A pointer to the created instance of
    	*           CSrchUiResFolderModel.
    	*/
    	static CSrchUiResFolderModel* NewLC(CSrchUiGeneral* aGeneralsrchUi);
    	
    	/**
    	* Destructor.
    	*/
    	~CSrchUiResFolderModel();

    public:	// New functions

        /**
        * Setter for iOpenedFolder.
        *
        * @param    aOpenedFolder      Pointer to the subfolder that must
        *                               be displayed on the UI.
        */
        void SetOpenedFolder( CSrchUiResFolder* aOpenedFolder );
        
        /**
        * Returns the icon offset, knowing the search result folder.
        *  Icon offsets (CSearchAppUi, ListBoxIconsArrayL)
        *  From the folder, the content type id can be found.
        *  From the content type id, the CSearchContentType object can be
        *  found (see CDocument, iUsableContentTypeArray).
        *  From the CSearchContentType, the icon offset can be found
        *
        * @param  aFolder  Folder wherefrom the icon offset must be returned.
        *
        * @return   Icon offset for the specified 'folder'
        */
        TInt GetFolderIconIndex( const CSrchUiResFolder& aFolder ) const;

    public:	// Functions from base classes
    	/**
    	* From MDesCArray
    	* Returns the number of descriptor elements in the array.
    	*/
    	TInt MdcaCount() const;

    	/**
    	* From MDesCArray
    	* @param    aIndex   Index of the descriptor element.
    	* Returns a non-modifiable pointer descriptor representing the
    	* descriptor element located at position aIndex within the array.
    	*/
    	TPtrC16 MdcaPoint( TInt aIndex ) const;

    private:    // More constructors
    	/** 
    	* Performs the first phase of two phase construction.
    	*/
    	CSrchUiResFolderModel();

    	/**
    	* Performs the second phase construction.
    	*/
    	void ConstructL(CSrchUiGeneral* aGeneralsrchUi);

    private:    // Data
        /* Buffer used for making correct string format needed by listbox items.
        * mutable because the method is const and member variable must be modifiable.
        *
		* own.
    	*/
    	HBufC*               iBuffer;
    	
    	/* Pointer to the subfolder currently visible on UI.
		* not own.
		*/
    	CSrchUiResFolder*            iOpenedFolder;
    	
    	// Number of results found in the subfolder currently visible on UI
    	mutable TInt                 iOpenedFolderSubFolderCount;
    	
    	/* Pointer to the general search ui
		* not own.
		*/
    	CSrchUiGeneral*              iGeneralsrchUi;
	};

#endif // C_SEARCH_RESULT_FOLDER_MODEL_H

// End of File