--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmditem.h Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,635 @@
+/*
+* 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:
+*
+*/
+
+
+
+#ifndef C_HNMDITEM_H
+#define C_HNMDITEM_H
+
+#include <e32base.h>
+
+#include "hnmdmodel.h"
+#include "hnmdeventmapping.h"
+#include "hnqueryresultcollector.h"
+
+class CHnMdQuery;
+class CHnMdButton;
+class CHnMdQueries;
+class CHnMdNotifyRequests;
+class CHnSuiteModel;
+class CLiwGenericParamList;
+class CLiwDefaultMap;
+class THnIdGenerator;
+class CHnFilter;
+class CHnMdUiMapping;
+class CHnMdMenuItem;
+class CHnItemId;
+class CHnMdSuite;
+class CHnXmlModelProvider;
+class CHnItemModel;
+class CHnMenuItemModel;
+class CHnActionModel;
+class CHnMdToolbar;
+struct THnMdCommonPointers;
+class CHnConditionInterface;
+
+/**
+ * Item.
+ *
+ * This is the item's class. Each item (or items' group -
+ * the count attribute has a value greater then 1) is represented
+ * by an object of the CHnMdItem class.
+ *
+ * This class comprises different classes which are responsible for
+ * conditions, queries, notifications (refreshing), etc.
+ *
+ * @lib hnmetadatamodel
+ * @since S60 v5.0
+ * @ingroup group_hnmetadatamodel
+ */
+NONSHARABLE_CLASS(CHnMdItem) : public CBase,
+ public MHnQueryResultCollectorNotification
+ {
+public:
+
+ /**
+ * Standard factory method.
+ *
+ * since S60 v5.0
+ * @param aElement Xml element.
+ * @param aCmnPtrs Common pointers container.
+ * @return Fully constructed object.
+ */
+ static CHnMdItem* NewL( TXmlEngElement aElement,
+ THnMdCommonPointers* aCmnPtrs );
+
+ /**
+ * Standard factory method.
+ *
+ * since S60 v5.0
+ * @param aElement Xml element.
+ * @param aCmnPtrs Common pointers container.
+ * @return Fully constructed object.
+ */
+ static CHnMdItem* NewLC( TXmlEngElement aElement,
+ THnMdCommonPointers* aCmnPtrs );
+
+ /**
+ * Default destructor.
+ */
+ virtual ~CHnMdItem();
+
+ /**
+ * Updates an item.
+ *
+ * @param aGraphicalList A graphical list.
+ * @param aId Item's identifier.
+ * @param aResultMap A results map.
+ * @return An error code.
+ */
+ void UpdateItemL( CHnSuiteModel* aGraphicalList, TInt aId,
+ RHashMap< HBufC*, CLiwGenericParamList*>& aResultMap );
+ /**
+ * Compares entries.
+ *
+ * @param aSearchCriteria Search critieria item id.
+ * @return True if this item matches aSearchCriteria.
+ */
+ TBool CompareItems( CHnItemId* aSearchCriteria );
+
+ /**
+ * Evaluates an item.
+ *
+ * @since S60 v3.2
+ * @param aSuiteModel A suite's model.
+ * @param aParamList Paramters of the evaluation.
+ * @param aItemPosition A position of an item in the aParamList.
+ */
+ void EvaluateItemL( CHnSuiteModel & aSuiteModel,
+ CLiwGenericParamList& aParamList,
+ TInt aItemPosition );
+
+ /**
+ * Marks according to filter which item should be evaluated.
+ *
+ * @since S60 5.0
+ * @param aFilter Filter.
+ */
+ void MarkEvaluationL( CHnFilter& aFilter );
+
+ /**
+ * Sets template.
+ *
+ * @param aOption Option - an identifier of alternative template bo be set.
+ */
+ void SetAlternativeTemplateL( TInt aOption );
+
+ /**
+ * Sets edit mode version of the item.
+ *
+ * @param aEditModeItem Edit mode item.
+ * @return Meta data model of the edit mode version.
+ */
+ void SetAlternativeModeItem(CHnMdItem* aEditModeItem);
+
+ /**
+ * Sets edit mode version of the item.
+ * Transfers ownership.
+ *
+ * @return Meta data model of the edit mode version.
+ */
+ CHnMdItem* TakeAlternativeModeItem();
+
+ /**
+ * Checks if mode version of the item is present.
+ *
+ * @return True if an item has an alternative model to be set.
+ */
+ TBool HasAlternativeModeItem() const;
+
+ /**
+ * Template property getter.
+ *
+ * @return The name of the template.
+ */
+ IMPORT_C TDesC8& Template();
+
+ /**
+ * Type property getter.
+ *
+ * @return Type of an item.
+ */
+ IMPORT_C TDesC8& Type();
+
+ /**
+ * Type property getter.
+ *
+ * @return Type of an item.
+ */
+ IMPORT_C TDesC8& Uid();
+
+ // from queries collector
+ /**
+ * Triggered when results have been collected.
+ *
+ * @param aResults Results.
+ */
+ virtual void ResultsCollectedL( CLiwGenericParamList* aResults );
+
+private:
+
+ /**
+ * Sets edit mode item.
+ *
+ * @param aElement Xml element.
+ */
+ void SetEditModeItemL( TXmlEngElement aElement );
+
+ /**
+ * Sets count.
+ *
+ * @param aElement Xml element.
+ */
+ void SetCountL( TXmlEngElement aElement );
+
+ /**
+ * Sets template.
+ *
+ * @param aAttr Xml attribute.
+ */
+ void SetTemplateL( TXmlEngAttr aAttr );
+
+ /**
+ * Sets queries.
+ *
+ * @param aElement Xml element.
+ */
+ void SetQueriesL( TXmlEngElement aElement );
+
+ /**
+ * Sets item id.
+ *
+ * @param aItemElement Xml element.
+ */
+ void SetItemIdL( TXmlEngElement aItemElement );
+
+ /**
+ * Sets item id.
+ *
+ * @param aAttrFileName Xml attribute - file name.
+ * @param aId Xml attribute - item's identifier.
+ */
+ void SetItemId2L( TXmlEngAttr aAttrFileName, TXmlEngAttr aId );
+
+ /**
+ * Evaluates item.
+ *
+ * @param aSuiteModel A model of the suite.
+ * @param aItemId Item's id.
+ * @param aParamList Parameters of the evaluation in the form of the CLiwGenericParamList.
+ * @param aItemPosition A position of the record of the parameters list.
+ * @return Error code.
+ */
+ TInt EvaluateItemL( CHnSuiteModel & aSuiteModel,
+ const CHnItemId* aItemId, CLiwGenericParamList& aParamList,
+ TInt aItemPosition );
+
+ /**
+ * Evaluates item.
+ *
+ * @param aSuiteModel A model of the suite.
+ * @param aParamList Parameters of the evaluation in the form of the CLiwGenericParamList.
+ * @param aItemPosition A position of the record of the parameters list.
+ */
+ void EvaluateItemItselfL( CHnSuiteModel & aSuiteModel,
+ CLiwGenericParamList& aParamList, TInt aItemPosition );
+
+ /**
+ * Sets template attribute on item model.
+ *
+ * @param aItemModel Item's model.
+ */
+ void SetTemplateL( CHnItemModel* aItemModel );
+
+ /**
+ * Mode.
+ *
+ * @returns Mode of an item, e.g. normal / edit mode.
+ */
+ TMdMode Mode();
+
+ /**
+ * Retrieves values from outputs containing the [$index] string.
+ *
+ * @param aValues Array containing found strings.
+ * @param aElement The xml element.
+ * @return Number of found strings.
+ */
+ TInt GetIndexValuesFromOutputsL( RPointerArray<HBufC8> &aValues, TXmlEngElement aElement );
+
+private:
+
+ /**
+ * Standard constructor.
+ */
+ CHnMdItem();
+
+ /**
+ * EPOC default constructor for performing 2nd stage construction.
+ *
+ * @param aElement Xml element.
+ * @param aCmnPtrs Common pointers containter.
+ */
+ void ConstructL( TXmlEngElement aElement,THnMdCommonPointers* aCmnPtrs );
+
+ /**
+ * Fills item model with data.
+ *
+ * @param aItemModel Model to be filled.
+ * @param aQueriesResultsList Parameters of in the form of the CLiwGenericParamList.
+ * @param aPosition A position of the record in the parameters list.
+ * @return True if filling finihed with success.
+ */
+ TBool FillItemModelL( CHnItemModel* aItemModel,
+ const CLiwGenericParamList& aQueriesResultsList,
+ TInt aPosition );
+
+ /**
+ * Fills item model with menu items created from meta data model.
+ *
+ * @param aItemModel Model to be filled.
+ * @param aQueriesResultsList Parameters of in the form of the CLiwGenericParamList.
+ * @param aPos A position of the record in the parameters list.
+ */
+ void FillItemModelWithMenuItemsL( CHnItemModel* aItemModel,
+ const CLiwGenericParamList& aQueriesResultsList, TInt aPos = 0 );
+
+ /**
+ * Fills item model with toolbar created from meta data model.
+ *
+ * @param aItemModel Model to be filled.
+ * @param aQueriesResultsList Parameters of in the form of the CLiwGenericParamList.
+ * @param aPos A position of the record in the parameters list.
+ */
+ void FillItemModelWithToolbarL( CHnItemModel* aItemModel,
+ const CLiwGenericParamList& aQueriesResultsList, TInt aPos = 0 );
+
+ /**
+ * Fills item model with MSK created from meta data model.
+ *
+ * @param aItemModel Model to be filled.
+ * @param aQueriesResultsList Parameters of in the form of the CLiwGenericParamList.
+ * @param aPos A position of the record in the parameters list.
+ */
+ void FillItemModelWithMiddleSoftKeyL( CHnItemModel* aItemModel,
+ const CLiwGenericParamList& aQueriesResultsList, TInt aPos = 0 );
+
+ /**
+ * Fills menu model with data from mdmenuitem.
+ *
+ * @param aSuiteModel Suite's model.
+ * @param aItemId Item's identifier.
+ * @param aQueriesResultsList Queries results in form of the CLiwGenericParamList.
+ * @param aItemModelNumber Item's model number.
+ * @param aItemPos Position of an item in the queries results list.
+ * @return KErrNone if an item was successfully added.
+ */
+ TInt AddItemL( CHnSuiteModel & aSuiteModel, TInt aItemId,
+ const CLiwGenericParamList& aQueriesResultsList,
+ TInt aItemModelNumber,
+ TInt aItemPos );
+
+ /**
+ * Fills menu model with data from mdmenuitem.
+ *
+ * @param aSuiteModel Suite's model.
+ * @param aItemId Item's identifier.
+ * @param aQueriesResultsList Queries results in form of the CLiwGenericParamList.
+ * @param aItemPos Position of an item in the queries results list.
+ * @return KErrNone if an item was successfully updated.
+ */
+ TInt UpdateItemL( CHnSuiteModel & aSuiteModel, TInt aItemId,
+ const CLiwGenericParamList& aQueriesResultsList, TInt aItemPos );
+
+ /**
+ * Fills menu model with data from mdmenuitem.
+ *
+ * @param aSuiteModel Suite's model.
+ * @param aId Items identifier.
+ */
+ void RemoveItemL( CHnSuiteModel & aSuiteModel, TInt aId );
+
+ /**
+ * Sets move/remove locked attribute.
+ *
+ * @param aElement Xml item element.
+ */
+ void SetAttributesL( TXmlEngElement aElement );
+
+ /**
+ * Sets item type string.
+ *
+ * @param aElement Xml item element.
+ */
+ void SetTypeL( TXmlEngElement aElement );
+
+ /**
+ * Sets uid string.
+ *
+ * @param aElement Xml item element.
+ */
+ void SetUidL( TXmlEngElement aElement );
+
+ /**
+ * Sets delete / move locked attributes.
+ *
+ * @param aItemModel Model to be filled.
+ * @param aQueriesResultsList Parameters of in the form of the CLiwGenericParamList.
+ * @param aPos A position of the record in the parameters list.
+ */
+ void SetDeleteMoveAttributesL( CHnItemModel* aItemModel,
+ const CLiwGenericParamList& aQueriesResultsList, TInt aPos );
+
+
+ /**
+ * Sets custom id.
+ *
+ * @param aElement Xml item element.
+ */
+ void SetCustomIdL( TXmlEngElement aElement );
+
+ /**
+ * Sets middle soft key.
+ *
+ * @param aElement Xml item element.
+ * @param aCmnPtrs Common pointers.
+ */
+ void SetMiddleSoftKeyL( TXmlEngElement aElement,
+ THnMdCommonPointers* aCmnPtrs );
+
+ /**
+ * Checks if an item is valid (the condition returns true).
+ *
+ * @param aQueryResults Query results.
+ * @param aPos Position of the item in the results list.
+ * @return ETrue or EFalse dependeing on whether the item is valid.
+ */
+ TBool IsValidL( const CLiwGenericParamList& aQueryResults, TInt aPos );
+
+ /**
+ * Sets the evaluated remove lock to the item model.
+ *
+ * @param aQueryResults Query results.
+ * @param aPos Position of the item in the results list.
+ * @param aItemModel Item model to set custom id on.
+ */
+ void SetRemoveLockedL( const CLiwGenericParamList& aQueryResults,
+ TInt aPos, CHnItemModel* aItemModel );
+
+ /**
+ * Sets the evaluated move lock to the item model.
+ *
+ * @param aQueryResults Query results.
+ * @param aPos Position of the item in the results list.
+ * @param aItemModel Item model to set custom id on.
+ */
+ void SetMoveLockedL( const CLiwGenericParamList& aQueryResults,
+ TInt aPos, CHnItemModel* aItemModel );
+
+ /**
+ * Sets the evaluated type to the item model.
+ *
+ * @param aQueryResults Query results.
+ * @param aPos Position of the item in the results list.
+ * @param aItemModel Item model to set custom id on.
+ */
+ void SetTypeL( CHnItemModel* aItemModel,
+ const CLiwGenericParamList& aQueryResults, TInt aPos );
+
+ /**
+ * Sets the uid to the item model.
+ *
+ * @param aQueryResults Query results.
+ * @param aPos Position of the item in the results list.
+ * @param aItemModel Item model to set custom id on.
+ */
+ void SetUidL( CHnItemModel* aItemModel,
+ const CLiwGenericParamList& aQueryResults, TInt aPos );
+
+ /**
+ * Sets custom id.
+ *
+ * @param aItemModel Model to be filled.
+ * @param aParams Parameters of in the form of the CLiwGenericParamList.
+ * @param aPos A position of the record in the parameters list.
+ */
+ void SetCustomIdL( CHnItemModel* aItemModel,
+ const CLiwGenericParamList& aParams, TInt aPos );
+
+ /**
+ * Returns the maximum possible number of items.
+ *
+ * @return Maximum number of items.
+ */
+ TInt GetItemsMaxCountL();
+
+private: // data
+
+ /**
+ * Own - edit mode version of the item.
+ * However TakeAlternativeModeItem transfers ownership.
+ */
+ CHnMdItem *iAlternativeModeItem;
+
+ /**
+ * Count.
+ */
+ RBuf8 iCount8;
+
+ /**
+ * Template.
+ */
+ RBuf8 iTemplate;
+
+ /**
+ * Own - List of allowable widget types.
+ */
+ CDesC8Array * iAllowableTemplate;
+
+ /**
+ * Item id.
+ */
+ CHnItemId* iItemId;
+
+ /**
+ * Queries.
+ */
+ CHnMdQueries* iQueries;
+
+ /**
+ * Notify Requests.
+ */
+ CHnMdNotifyRequests* iNotifyRequests;
+
+ /**
+ * Event mapping.
+ */
+ CHnMdEventMapping* iEventMapping;
+
+ /**
+ * UI mapping.
+ */
+ CHnMdUiMapping* iUiMapping;
+
+ /**
+ * Menu item.
+ */
+ CHnMdMenuItem* iMenu;
+
+ /**
+ * Toolbar.
+ */
+ CHnMdToolbar* iToolbar;
+
+ /**
+ * Middle soft key button.
+ */
+ CHnMdButton* iMsk;
+
+ /**
+ * Delete locked indicator
+ */
+ RBuf8 iRemoveLocked8;
+
+ /**
+ * MoveLocked indicator.
+ */
+ RBuf8 iMoveLocked8;
+
+ /**
+ * Type of an item.
+ */
+ RBuf8 iType8;
+
+ /**
+ * Uid of the item.
+ */
+ RBuf8 iUid8;
+
+ /**
+ * Custom identifier.
+ */
+ RBuf8 iCustomId8;
+
+ /**
+ * Common pointers.
+ */
+ THnMdCommonPointers* iCmnPtrs;
+
+ /**
+ * Mode.
+ */
+ TMdMode iMode;
+
+ /**
+ * Query results list.
+ * Own - queries results.
+ */
+ CLiwGenericParamList* iQueriesResultsList;
+
+ /**
+ * Query collector.
+ * Own.
+ */
+ CHnQueryResultCollector* iQc;
+
+ /**
+ * Suite model.
+ * Not own - suite model.
+ */
+ CHnSuiteModel* iSuiteModel;
+
+ /**
+ * Position of item.
+ * Own - item's positions.
+ */
+ TInt iItemPosition;
+
+ /**
+ * Own - condition.
+ */
+ CHnConditionInterface* iCondition;
+
+ /**
+ * Running indicator.
+ */
+ RBuf8 iRunning8;
+
+ /**
+ * DRM protection indicator.
+ */
+ RBuf8 iDrmProtection8;
+
+public:
+ /**
+ * Marks if evaulation should take place.
+ */
+ TBool iEvaluationNeeded;
+
+ };
+
+#endif // C_HNMMITEM_H