--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/menufw/hierarchynavigator/hnpresentationmodel/inc/hnitemmodel.h Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,392 @@
+/*
+* 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: item presentation model
+*
+*/
+
+
+#ifndef HNITEMMODEL_H_
+#define HNITEMMODEL_H_
+
+#include <e32base.h>
+#include <e32hashtab.h>
+
+class CHnMenuItemModel;
+class MHnMenuItemModelIterator;
+class CHnActionModel;
+class CHnToolbarModel;
+class CHnEventHandler;
+class CHnAttributeBase;
+class CLiwGenericParamList;
+class CHnButtonModel;
+
+/**
+ * Item flag. Used to indicate if item is move locked,
+ * remove locked or runs.
+ */
+enum TItemFlag
+ {
+ EItemFlagDefault = 0,
+ EItemFlagRemoveLocked = 1,
+ EItemFlagMoveLocked = 2,
+ EItemFlagRunning = 4,
+ EItemFlagDrmExpired = 8
+ };
+
+/**
+ * Service item type. Type of the item in service.
+ */
+enum TMcsItemType
+ {
+ EItemTypeUnknown = 0,
+ EItemTypeFolder,
+ EItemTypeSuite,
+ EItemTypeApplication,
+ EItemTypeParentFolder,
+ };
+
+/**
+ * Item presentation model class.
+ *
+ * Instance of this class represents item visible
+ * on the screen. A single CHnMdItem may lead to
+ * creation of multiple CHnItemModel instances.
+ *
+ * @see CHnMdItem
+ * @lib hnpresentationmodel
+ * @since S60 5.0
+ * @ingroup group_hnpresentationmodel
+ */
+NONSHARABLE_CLASS( CHnItemModel ) : public CBase
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ *
+ * @since S60 5.0
+ * @return Fully constructed object.
+ */
+ IMPORT_C static CHnItemModel* NewL();
+
+ /**
+ * Virtual Destructor.
+ *
+ * @since S60 5.0
+ */
+ ~CHnItemModel();
+
+ /**
+ * Sets menu item model.
+ *
+ * @since S60 5.0
+ * @param aMenu visual model for menu item, transfers ownership.
+ */
+ IMPORT_C void SetMenuItemModel( CHnMenuItemModel* aMenu );
+
+ /**
+ * Gets menu item model.
+ *
+ * @since S60 5.0
+ * @return menu item structure
+ */
+ MHnMenuItemModelIterator* GetMenuStructure();
+
+ /**
+ * Gets actions models.
+ *
+ * @param aId Event id
+ * @return Array of actions models corresponding to event id
+ */
+ IMPORT_C CArrayPtr<CHnActionModel>* GetActions( TInt aId );
+
+ /**
+ * Gets actions models.
+ *
+ * @return List of all actions for every event.
+ */
+ IMPORT_C RHashMap< TInt, CArrayPtr<CHnActionModel>* >& GetActions();
+
+ /**
+ * Gets toolbar model.
+ *
+ * @since S60 5.0
+ * @return Toolbar model for item, NULL if not exist
+ */
+ IMPORT_C const CHnToolbarModel* GetToolbarModel() const;
+
+ /**
+ * Sets toolbar model.
+ *
+ * @since S60 5.0
+ * @param aToolbar Toolbar model for item, transfers ownership
+ */
+ IMPORT_C void SetToolbarModel( CHnToolbarModel* aToolbar );
+
+ /**
+ * event handling
+ *
+ * @since S60 5.0
+ * @param aEventHandler An instance of event handler.
+ * @param aEventId Event id.
+ * @param aEventParameters Parameters of that event
+ * @return Error code
+ */
+ TInt OfferHnEventL( CHnEventHandler & aEventHandler,
+ const TInt aEventId, CLiwGenericParamList* aEventParameters );
+
+ /**
+ * Sets attribute.
+ *
+ * @since S60 5.0
+ * @param aAttr Attribute name
+ */
+ IMPORT_C void SetAttributeL( CHnAttributeBase* aAttr );
+
+ /**
+ * Gets attribute.
+ *
+ * @since S60 5.0
+ * @param aAttribute Attribute name.
+ * @return Attribute instance.
+ */
+ IMPORT_C CHnAttributeBase* GetAttribute( const TDesC8 & aAttribute );
+
+ /**
+ * Clears attributes.
+ *
+ * @since S60 5.0
+ */
+ IMPORT_C void ClearAttributesL();
+
+ /**
+ * Gets template name.
+ *
+ * @since S60 5.0
+ * @return Template name
+ */
+ IMPORT_C const TDesC8& GetTemplate();
+
+ /**
+ * Sets middle soft key.
+ *
+ * @since S60 5.0
+ * @param aMsk Msk model for item.
+ */
+ IMPORT_C void SetMiddleSoftKey( CHnButtonModel* aMsk );
+
+ /**
+ * Gets middle soft key.
+ *
+ * @since S60 5.0
+ * @return Msk model for item.
+ */
+ IMPORT_C CHnButtonModel* GetMiddleSoftKey();
+
+ /**
+ * Sets template.
+ *
+ * @since S60 5.0
+ * @param aTemplate Template name.
+ */
+ IMPORT_C void SetTemplateL( const TDesC8& aTemplate );
+
+ /**
+ * Sets item's flag.
+ *
+ * @since S60 5.0
+ * @param aFlag A flag to be set.
+ */
+ IMPORT_C void SetFlag( TInt aFlag );
+
+ /**
+ * Removes all flags of the item.
+ *
+ * @since S60 5.0
+ */
+ IMPORT_C void ClearFlags();
+
+ /**
+ * Returns true if deleting the item is locked.
+ *
+ * @since S60 5.0
+ * @return True if deleting the item is forbidden, otherwise - false
+ */
+ IMPORT_C TBool IsDeleteLocked();
+
+ /**
+ * Returns true if moving the item is locked.
+ *
+ * @since S60 5.0
+ * @return True if moving the item is forbidden, otherwise - false
+ */
+ IMPORT_C TBool IsMoveLocked();
+
+ /**
+ * Returns true if the item is running.
+ *
+ * @since S60 5.0
+ * @return True if the item is running, otherwise - false.
+ */
+ IMPORT_C TBool IsRunning();
+
+ /**
+ * Returns true if the item drm rights are expired.
+ *
+ * @since S60 5.0
+ * @return True if the item drm rights are expired, otherwise - false.
+ */
+ IMPORT_C TBool IsDrmExpired();
+
+ /**
+ * Sets type of the item.
+ *
+ * @since S60 5.0
+ * @param aType type
+ */
+ IMPORT_C void SetType( const TDesC8& aType );
+
+ /**
+ * Sets custom id.
+ *
+ * @since S60 5.0
+ * @param aCustomId Custom id.
+ */
+ IMPORT_C void SetCustomId( TInt64 aCustomId );
+
+ /**
+ * Returns custom id.
+ *
+ * @since S60 5.0
+ * @return Custom id.
+ */
+ IMPORT_C TInt64 CustomId();
+
+ /**
+ * Returns the type of the item.
+ *
+ * @since S60 5.0
+ * @return Item type.
+ */
+ IMPORT_C TMcsItemType GetItemType();
+
+ /**
+ * Returns the uid of the item.
+ *
+ * @since S60 5.0
+ * @return Item uid.
+ */
+ IMPORT_C TUid GetItemUid();
+
+ /**
+ * Sets uid of the item.
+ *
+ * @since S60 5.0
+ * @param Item uid.
+ */
+ IMPORT_C void SetItemUidL( const TDesC8& aUid );
+
+ /**
+ * Deletes all action models.
+ *
+ * @since S60 5.0
+ */
+ IMPORT_C void DeleteAllActionModels();
+
+ /**
+ * Removes all LIW objects owned by this object.
+ *
+ * LIW objects owned by non-LIW objects that are owned by
+ * this object are also removed.
+ * @since S60 5.0
+ */
+ void RemoveLiwObjects();
+
+private:
+
+ /**
+ * Default constructor.
+ */
+ CHnItemModel();
+
+ /**
+ * Second phase constructor.
+ */
+ void ConstructL();
+
+private: // data
+
+ /**
+ * Template.
+ */
+ RBuf8 iTemplate;
+
+ /**
+ * Menu item structure
+ * Own
+ */
+ CHnMenuItemModel* iMenuModel;
+
+ /**
+ * Model for toolbar
+ * Own
+ */
+ CHnToolbarModel* iToolbarModel;
+
+ /**
+ * Actions corresponding to events
+ * event id <=> array of actions models
+ */
+ RHashMap< TInt, CArrayPtr<CHnActionModel>* > iActions;
+
+ /**
+ * Visual item model (Aakash)
+ */
+ TBool iEditable;
+
+ /**
+ * Attributes.
+ */
+ RPointerArray<CHnAttributeBase> iAttrs;
+
+ /**
+ * Flags.
+ */
+ TInt iFlags;
+
+ /**
+ * Type of an item.
+ */
+ TMcsItemType iType;
+
+ /**
+ * Uid of the item.
+ */
+ TUid iUid;
+
+ /**
+ * Custom Id.
+ */
+ TInt64 iCustomId;
+
+ /**
+ * Middel soft key model
+ * Own
+ */
+ CHnButtonModel* iMskModel;
+
+ };
+
+#endif // HNITEMMODEL_H_