idlefw/inc/utility/caicontentitemarrayiterator.h
author kashif.sayed
Fri, 26 Mar 2010 04:17:01 +0530
branchv5backport
changeset 31 a3e98f9c292b
parent 0 79c6a41cd166
permissions -rw-r--r--
added missing files user: kashif.sayed added dependencies/AknTaskList.h added dependencies/DRMEvent.h added dependencies/DRMEventObserver.h added dependencies/DRMNotifier.h added dependencies/SchemeDefs.hrh added dependencies/SchemeHandler.h added dependencies/SchemeHandler.inl added dependencies/aiwcommon.hrh added dependencies/aiwdialdata.h added dependencies/drmrightsinfo.h added dependencies/drmutilitytypes.h added dependencies/javaattribute.h added dependencies/javadomainpskeys.h added dependencies/javaregistry.h added dependencies/javaregistryapplicationentry.h added dependencies/javaregistryentry.h added dependencies/javaregistryentrytype.h added dependencies/javaregistrypackageentry.h added dependencies/mjavaattribute.h added dependencies/swi/bld.inf added dependencies/swi/sispackagetrust.h added dependencies/swi/sisregistryentry.h added dependencies/swi/sisregistrylog.h added dependencies/swi/sisregistrysession.h changed .cproject changed dependencies/S3libs/bld.inf changed dependencies/bld.inf

/*
* Copyright (c) 2005-2006 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:  
*
*/



#ifndef C_AIARRAYITERATOR_H
#define C_AIARRAYITERATOR_H


#include <e32base.h>
#include <aicontentmodel.h>

/**
 *  @ingroup group_aiutils
 * 
 *  Content item array iterator.
 *
 *  Iterator implementation for content item arrays
 *  Usage example:
 *
 *      const TAiContentItem KExPluginContent[] =
 *          {
 *              { 1, "Counter", "text/plain" },
 *              { 2, "Status",  "text/plain" }
 *          };
 *
 *      CAiContentItemArrayIterator* iContent =
 *          CreateIteratorL( KExPluginContent );
 *
 *      while( iContent->HasNext() )
 *          {
 *          TAiContentItem& myItem = iContent->NextL();
 *          // My ops using myItem
 *          }
 *
 *  @since S60 3.1
 */
NONSHARABLE_CLASS(CAiContentItemArrayIterator) : 
    public CBase, public MAiContentItemIterator
    {
public:
    
    /**
     * Creates a new iterator instance from a TAiContentItem array.
     *
     * @param aArray content item array.
     * @param aCount  number of content items in aArray.
     * @return a new iterator object for aArray.
     * @see CreateIteratorL
     * @since S60 3.2
     */
    static CAiContentItemArrayIterator* NewL
        ( const TAiContentItem* aArray, TInt aCount );
        
    virtual ~CAiContentItemArrayIterator();
    
    void Release();

// from base class MAiContentItemIterator

    TBool HasNext() const;

    const TAiContentItem& NextL();

    const TAiContentItem& ItemL(TInt aId) const;
    
	const TAiContentItem& ItemL( const TDesC& aCid ) const;

    void Reset();

private:

     CAiContentItemArrayIterator( const TAiContentItem* aArray, TInt aCount );

private: // data

    /**
     * Array of items
     * Not Own.
     */
    const TAiContentItem*   iArray;

    /**
     * Total number of items
     */
    TInt                    iCount;

    /**
     * Current iterator index
     */
    TInt                    iIndex;
    };


#endif // C_CAiContentItemArrayIterator_H