diff -r 000000000000 -r f72a12da539e menufw/hierarchynavigator/hnpresentationmodel/inc/hnitemsorder.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menufw/hierarchynavigator/hnpresentationmodel/inc/hnitemsorder.h Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,275 @@ +/* +* Copyright (c) 2007-2008 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: items order manager class +* +*/ + + +#ifndef HNITEMSORDER_H_ +#define HNITEMSORDER_H_ + +#include +#include + +/** + * Items order manager. + * + * Instances of this class control order of the items + * displayed within a suite. The keep and manage the + * complex relation between CHnMdItem, and consequenltly + * created CHnItemModels. + * + * @lib hnpresentationmodel + * @since S60 5.0 + * @ingroup group_hnpresentationmodel + */ +NONSHARABLE_CLASS( CHnItemsOrder ) : public CBase + { + +public: + + /** + * Two-phased constructor. + * + * @since S60 5.0 + * @return Fully constructed object. + */ + IMPORT_C static CHnItemsOrder* NewL(); + + /** + * Two-phased constructor. + * + * @since S60 5.0 + * @return Fully constructed object. + */ + IMPORT_C static CHnItemsOrder* NewLC(); + + /** + * Standard destructor. + * + * @since S60 5.0 + */ + ~CHnItemsOrder(); + + /** + * @since S60 5.0 + * @param aId Suite id, should be generated by IdGenrator + */ + IMPORT_C void SetSuiteId( TInt aId ); + + /** + * @since S60 5.0 + * @return id of the associated suite + */ + IMPORT_C TInt GetSuiteId() const; + + /** + * Removes item with given id. + * + * @since S60 5.0 + * @param aId id of the item to be removed + */ + IMPORT_C void RemoveItemId( TInt aId ); + + /** + * Insert an item referred to by an aId, to a suite. + * It is indicated that this item has been produced from + * CHnMdItem at index aDataModelItem. Evaluation indicates also + * that this item is produced on the index aIndex in that particular + * CHnMdItem. + * + * @since S60 5.0 + * @param aDataModelItem Index of CHnMdItem instance in the CHnMdSuite. + * @param aIndex Position in that CHnMdItem instance + * @param aId Id of the item model. + */ + IMPORT_C void InsertItemIdToL( TInt aDataModelItem, TInt aIndex, TInt aId ); + + /** + * Gets the item id at position aIndex, relative to the beginning + * of the items generated from CHnMdItem at index aDataModelItem + * + * @since S60 5.0 + * @param aDataModelItem Index of CHnMdItem instance in the CHnMdSuite. + * @param aIndex Position in that CHnMdItem instance. + */ + IMPORT_C TInt GetItemIdAt( TInt aDataModelItem, TInt aIndex ); + + /** + * Gets item id at specified position. + * + * @since S60 5.0 + * @param aPosition Position in the suite model. + * @return Item id + */ + IMPORT_C TInt GetItemIdAt( TInt aPosition ); + + /** + * Sets item id at given position. + * + * @since S60 5.0 + * @param aPosition Position in the suite model + * @param aId Item id + */ + IMPORT_C void SetItemIdAtL( TInt aPosition, TInt aId ); + + /** + * Gets item position. + * + * @since S60 5.0 + * @param aId Item id + * @return Item position. + */ + IMPORT_C TInt GetItemPosition( TInt aId ); + + /** + * Count property getter. + * + * @since S60 5.0 + * @return Count + */ + IMPORT_C TInt Count(); + + /** + * Informs the class of the count of CHnMdItem instances + * in the suite. + * + * @since S60 5.0 + * @param aItemCounts Number of CHnMdItems in the suite. + */ + IMPORT_C void DefineModelItemCountL( TInt aItemCounts ); + + /** + * Gets the count of CHnMdItem instances + * in the suite. + * + * @since S60 5.0 + */ + IMPORT_C TInt GetModelItemCount(); + + /** + * Gets the ids for a particular CHnMdItem instance. + * + * @since S60 5.0 + * @param aDataModelItem Index of the CHnMdItem instance + * @param aIds Array of ids. + */ + IMPORT_C void GetIdsForL( TInt aDataModelItem, + RArray< TInt >& aIds ); + + /** + * Operator to access id at a particular position in the suite. + * + * @since S60 5.0 + * @param aPosition Position in the suite. + */ + IMPORT_C TInt operator[]( TInt aPosition ); + + /** + * Informs the instance of the class that the associated suite + * has been evaluated. + * + * @since S60 5.0 + */ + IMPORT_C void SuiteEvaluated(); + + /** + * Informs the instance of the class that the associated item + * has been evaluated. + * + * @since S60 5.0 + * @param aIndex Item of the model that has been evaluated. + */ + IMPORT_C void ItemEvaluated( TInt aIndex ); + + /** + * Determined if the suite is ready to be shown. + * + * @since S60 5.0 + * @return Value determinig if associated suite is ready to show. + */ + IMPORT_C TBool IsSuiteReadyToShow(); + + /** + * Marks suite as uninitialized. + * + */ + IMPORT_C void MarkSuiteUninitialized(); + +private: + + /** + * Default constructor. + * + * @since S60 5.0 + */ + CHnItemsOrder(); + + /** + * Stnadard 2nd stage symbian constructor. + * + * @since S60 5.0 + */ + void ConstructL(); + + /** + * @since S60 5.0 + * @param aDataModelItem data model item + * @return start index + */ + TInt CountStartIndexFor( TInt aDataModelItem ); + + /** + * @since S60 5.0 + * @param aIndex index + * @return model number + */ + TInt CountModelNumberFor( TInt aIndex ); + +private: // data + + /** + * Unique id for the associated suite. + * Should be generated via IdGenerator mechanism. + */ + TInt iSuiteId; + + /** + * Indicates if the associated suite has been initialized + * with the first evaluation. + */ + TBool iSuiteEvaluated; + + /** + * Array of values indication if each of associated CHnMdItems + * has been initialized with first evaluation. + */ + RArray iItemsEvaluated; + + /** + * Items order counts + * Holds the counts of CHnItemModels, for each of CHnMdItems + */ + RArray iItemsOrderCounts; + + /** + * Complex items order. + * Hold the order of CHnItemModels in a suite associated with the + * instance of this class. + */ + RArray iComplexItemsOrder; + + }; + +#endif // HNITEMSORDER_H_