williamr@2: /*
williamr@2: * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
williamr@2: * All rights reserved.
williamr@2: * This component and the accompanying materials are made available
williamr@4: * under the terms of "Eclipse Public License v1.0"
williamr@2: * which accompanies this distribution, and is available
williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2: *
williamr@2: * Initial Contributors:
williamr@2: * Nokia Corporation - initial contribution.
williamr@2: *
williamr@2: * Contributors:
williamr@2: *
williamr@2: * Description: 
williamr@2: *
williamr@2: */
williamr@2: 
williamr@2: 
williamr@2: #ifndef CONTENTLISTINGFACTORY_H
williamr@2: #define CONTENTLISTINGFACTORY_H
williamr@2: 
williamr@2: //  INCLUDES
williamr@2: #include <e32def.h>
williamr@2: 
williamr@2: // FORWARD DECLARATIONS
williamr@2: class MCLFContentListingEngine;
williamr@2: class MCLFModifiableItem;
williamr@2: class MCLFSortingStyle;
williamr@2: class TResourceReader;
williamr@2: 
williamr@2: // CLASS DECLARATION
williamr@2: 
williamr@2: /**
williamr@2: *  Factory for Content Listing Framework.
williamr@2: *  You can create new instances of Content Listing Engines, Modifiable items
williamr@2: *  and Sorting Styles by using this factory.<br><br>
williamr@2: *  Example:
williamr@2: *  @code
williamr@2: *  // Create a new instance of Content Listing Engine
williamr@2: *  MCLFContentListingEngine* engine =
williamr@2: *      ContentListingFactory::NewContentListingEngineLC();
williamr@2: *
williamr@2: *  // Create a new instance of Sorting style
williamr@2: *  MCLFSortingStyle* sortingStyle =
williamr@2: *      ContentListingFactory::NewSortingStyleLC();
williamr@2: *
williamr@2: *  // Create a new instance of Modifiable item
williamr@2: *  MCLFModifiableItem* modItem =
williamr@2: *      ContentListingFactory::NewModifiableItemLC();
williamr@2: *  @endcode
williamr@2: *
williamr@2: *  @lib ContentListingFramework.lib
williamr@2: *  @since S60 3.1
williamr@2: */
williamr@2: class ContentListingFactory
williamr@2:     {
williamr@2:     public: // New functions
williamr@2: 
williamr@2:         /**
williamr@2:         * Create new instance of Content Listing Engine.
williamr@2:         * @since S60 3.1
williamr@2:         * @return New instance of Content Listing Engine.
williamr@2:         *         Ownership is transferred to the client application.
williamr@2:         */
williamr@2:         IMPORT_C static MCLFContentListingEngine* NewContentListingEngineLC();
williamr@2: 
williamr@2:         /**
williamr@2:         * Create new instance of Modifiable Item.
williamr@2:         * @since S60 3.1
williamr@2:         * @return New instance of Modifiable Item.
williamr@2:         *         Ownership is transferred to the client application.
williamr@2:         */
williamr@2:         IMPORT_C static MCLFModifiableItem* NewModifiableItemLC();
williamr@2: 
williamr@2:         /**
williamr@2:         * Create new instance of Sorting Style.
williamr@2:         * @since S60 3.1
williamr@2:         * @return New instance of the Sorting Style.
williamr@2:         *         Ownership is transferred to the client application.
williamr@2:         */
williamr@2:         IMPORT_C static MCLFSortingStyle* NewSortingStyleLC();
williamr@2: 
williamr@2:         /**
williamr@2:         * Create new instance of Sorting Style from resource of the
williamr@2:         * application by using TResourceReader.
williamr@2:         * @since S60 3.1
williamr@2:         * @param aResource Resource reader to sorting style resource.
williamr@2:         *                  Use resource struct CLF_SORTING_STYLE. See
williamr@2:         *                  CLFContentListing.rh
williamr@2:         * @return New instance of the Sorting Style.
williamr@2:         *         Ownership is transferred to the client application.
williamr@2:         */
williamr@2:         IMPORT_C static MCLFSortingStyle* NewSortingStyleLC(
williamr@2:                                                 TResourceReader& aResource );
williamr@2: 
williamr@2:     private:
williamr@2:         // Prohibit C++ default constructor.
williamr@2:         ContentListingFactory();
williamr@2:         // Prohibit Destructor.
williamr@2:         ~ContentListingFactory();
williamr@2: 
williamr@2:     };
williamr@2: 
williamr@2: #endif      // CONTENTLISTINGFACTORY_H
williamr@2: 
williamr@2: // End of File