camerauis/activepalette/Inc/ActivePalette2Item.h
branchRCL_3
changeset 54 bac7acad7cb3
parent 0 1ddebce53859
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/activepalette/Inc/ActivePalette2Item.h	Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,250 @@
+/*
+* Copyright (c) 2007 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:  Active Palette item*
+*/
+
+
+/**
+ * @file ActivePalette2Item.h
+ * Active Palette item
+ */
+
+#ifndef _ACTIVE_PALETTE_2_ITEM_H
+#define _ACTIVE_PALETTE_2_ITEM_H
+
+//  INCLUDES
+#include <e32std.h>
+
+#include "CActivePalettePluginBase.h"
+
+
+// FORWARD DECLARATIONS
+class CActivePalettePluginBase;
+class CActivePalette2Model;
+class CGulIcon;
+class CFbsBitmap;
+
+// CONSTANTS
+/// The print plugin UID
+const TInt KPrintPluginUid = 0x200009E2;
+/// The print plugin DLL filename
+_LIT(KPrintPluginDLLName,"PrintActivePalette.dll");
+
+/// The print intent plugin UID
+const TInt KPrintIntentPluginUid = 0x200009CE;
+/// The print intent plugin DLL filename
+_LIT(KPrintIntentPluginDLLName,"PrintIntentActivePalette.dll");
+
+/// The online sharing  plugin UID
+const TInt KOnlineSharingPluginUid = 0x20007189;
+/// The print intent plugin DLL filename
+_LIT(KOnlineSharingPluginDLLName,"OnlineSharingActivePalette.dll");
+
+
+#ifdef ACTIVEPALETTE_SUPPORT_PLUGIN_CAM
+/// The cam plugin UID
+const TInt KCamAPPluginUid = static_cast<TInt>(0x8000FFFF);
+/// The cam plugin DLL filename
+_LIT(KCamAPluginDLLName,"CamAPPlugin.dll");
+#endif // ACTIVEPALETTE_SUPPORT_PLUGIN_CAM
+
+
+// CLASS DECLARATIONS
+
+/**
+ * Stores the Item ID
+ */
+class CActivePalette2IDHolder : public CBase
+    {
+public:
+
+	/**
+    * Constructor
+    * @param aItemId item ID
+    */
+	CActivePalette2IDHolder(TInt aItemId);
+
+	/**
+    * Constructor
+    */
+	CActivePalette2IDHolder();
+
+	/**
+    * Returns the item ID
+    * @return The item ID
+    */
+	inline TInt ItemId(void) const;
+	
+    /** 
+    * Sets the item ID
+    * @param aItemId The item ID
+    */
+	void SetItemId(TInt aItemId);
+
+private: // Data
+    /// The item ID
+	TInt	iItemId;
+    };
+
+/**
+ * Item for use in the AP
+ */
+class CActivePalette2Item : public CActivePalette2IDHolder, 
+                            private MActivePalettePluginObserver
+    {
+public:
+
+    /** 
+    * Public constructor
+    * @param aItemId The item ID
+    * @param aPluginUid The plugin UID
+    * @param aModel The model being used
+    * @return Newly constructed object
+    */
+	static CActivePalette2Item * NewLC(TInt aItemId, 
+									  const TUid& aPluginUid,
+									  CActivePalette2Model& aModel);
+
+    /** 
+    * Destructor
+    */
+	virtual ~CActivePalette2Item();
+	
+    /** 
+    * Returns the UID of the plugin handling this item
+    * @return The UID of the plugin handling this item
+    */
+	TUid PluginUid(void) const;
+	
+    /** 
+    * Returns a reference to the plugin handling this item
+    * @return A reference to the plugin handling this item
+    */
+	CActivePalettePluginBase& Plugin(void) const;
+	
+    /** 
+    * Returns a reference to the item's icon as a bitmap
+    * @return A reference to the item's icon as a bitmap
+    */
+	CFbsBitmap& Icon(void) const;
+
+    /** 
+    * Returns a pointer to the item's mask as a bitmap
+    * @return A pointer to the item's mask as a bitmap
+    */
+	CFbsBitmap* Mask(void) const;
+
+    /** 
+    * Returns a pointer to the item's tooltip text
+    * @return A pointer to the item's tooltip text
+    */
+	HBufC*	Tooltip(void) const;
+	
+    /** 
+    * Sets the item position
+    * @param aItemPosition The new position
+    */
+	void SetItemPosition(TInt aItemPosition);
+
+    /** 
+    * Sets the visibility of the item
+    * @param aIsVisible The new visibility
+    */
+	void SetItemVisible(TBool aIsVisible);
+
+    /** 
+    * Initialise the plugin handling this item
+    * @param aCustomDataDes Custom data descriptor
+    * @param aCustomDataInt Custom data integer
+    */
+	void InitPluginL(const TDesC8& aCustomDataDes, TInt aCustomDataInt);
+
+private:
+
+    /** 
+    * Constructor
+    * @param aItemId The item's ID
+    * @param aPluginUid The UID of the plugin to handle this item
+    * @param aModel A reference to the active palette model
+    */
+	CActivePalette2Item(TInt aItemId,
+	                   const TUid& aPluginUid,
+	                   CActivePalette2Model& aModel);
+	
+    /** 
+    * 2 phase construction
+    */
+	void ConstructL(void);
+	
+    /** 
+    * Returns a plugin factory from a given UID
+    * @param aUid The UID of the plugin
+    * @return A pointer to the plugin instantiation method
+    */
+	NActivePalettePluginFactory::TInstantiatePluginLFunc FindPluginFactoryL(const TUid aUid);
+
+    /** 
+    * Returns the plugin creation parameters
+    * @return The plugin creation parameters
+    */
+	NActivePalettePluginFactory::TPluginCreationParams GetPluginCreationParams(void);
+
+    /** 
+    * Performs the setting of an icon to this item
+    * @param aIcon A pointer to the icon
+    * @param aOnwershipTransfer Whether to transfer ownership of the icon
+    */
+	void DoSetItemIcon(CGulIcon* aIcon, TBool aOnwershipTransfer);
+	
+private:
+/// @name From MActivePalettePluginObserver
+//@{
+	void SetItemIconAndTooltipL(CGulIcon* aIcon, 
+								TBool aOnwershipTransfer,
+								const TDesC& aTooltipText);
+	void SetItemIcon(CGulIcon* aIcon, TBool aOnwershipTransfer);
+	void SetItemTooltipL(const TDesC& aTooltipText);
+	void NotifyItemComplete(const TDesC8& aDataDes);
+	void NotifyItemComplete(TInt aDataInt);
+	void NotifyPluginDestroyed(CActivePalettePluginBase* aPlugin);
+	void NotifyPluginCreated(CActivePalettePluginBase* aPlugin);
+	void SendMessage(TInt aMessageID, const TDesC8& aDataDes);
+	void SendMessage(TInt aMessageID, TInt aDataInt);
+//@}
+
+private:
+	/// The plugin UID used for the item
+	TUid		    iPluginUid;
+    /// The model
+	CActivePalette2Model& iModel;
+
+    /// Plug-in instance. Owned.
+	CActivePalettePluginBase*	iPlugin;
+	/// The plugin library
+	RLibrary		iDLL;
+
+    /// Current icon information. @see iOwnsIcon
+	CGulIcon* 		iIcon;
+	/// Whether this instance owns the icon data
+	TBool			iOwnsIcon;
+
+    /// The current tooltip. Owned.
+	HBufC* 			iTooltip;				// owned
+    };
+
+#include "ActivePalette2Item.inl"
+
+#endif // _ACTIVE_PALETTE_2_ITEM_H
+
+// End of File