--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/activepalette/Inc/CActivePalettePluginBase.h Thu Jan 07 16:18:56 2010 +0200
@@ -0,0 +1,350 @@
+/*
+* 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 plugin base class*
+*/
+
+
+/**
+ * @file CActivePalettePluginBase.h
+ * Active Palette plugin base class
+ */
+
+#ifndef CACTIVEPALETTEPLUGINBASE_H
+#define CACTIVEPALETTEPLUGINBASE_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CActivePalettePluginBase;
+class CGulIcon;
+class CFbsBitmap;
+class CFbsBitmapDevice;
+class CBitmapContext;
+
+// CLASS DECLARATIONS
+
+/**
+ * Plugin observer class.
+ * Plugins should use this to communicate with the Active Palette.
+ */
+class MActivePalettePluginObserver
+ {
+ public:
+ /**
+ * Notifies of the creation of the plugin
+ * @param aPlugin A pointer to the plugin
+ */
+ virtual void NotifyPluginCreated(CActivePalettePluginBase* aPlugin) = 0;
+
+ /**
+ * Notifies of the destruction of the plugin
+ * @param aPlugin A pointer to the plugin
+ */
+ virtual void NotifyPluginDestroyed(CActivePalettePluginBase* aPlugin) = 0;
+
+ /**
+ * Assign icon for plugin obect's item
+ * @param aIcon A pointer to the icon
+ * @param aOnwershipTransfer Whether to transfer ownership
+ */
+ virtual void SetItemIcon(CGulIcon* aIcon, TBool aOnwershipTransfer) = 0;
+
+ /**
+ * Assign tool tip for plugin obect's item
+ * @param aTooltipText A descriptor containing the new tooltip text
+ */
+ virtual void SetItemTooltipL(const TDesC& aTooltipText) = 0;
+
+ /**
+ * Assign icon and tooltip for plugin obect's item
+ * @param aIcon The new icon
+ * @param aOnwershipTransfer Whether the AP should take ownership of the icon
+ * @param aTooltipText The new tooltip text
+ */
+ virtual void SetItemIconAndTooltipL(CGulIcon* aIcon,
+ TBool aOnwershipTransfer,
+ const TDesC& aTooltipText) = 0;
+
+ /**
+ * Notify comletion of handling of user's item selection
+ * @param aDataDes Data descriptor
+ */
+ virtual void NotifyItemComplete(const TDesC8& aDataDes) = 0;
+
+ /**
+ * Notify comletion of handling of user's item selection
+ * @param aDataInt Data integer
+ */
+ virtual void NotifyItemComplete(TInt aDataInt) = 0;
+
+ /**
+ * Send message to application
+ * @param aMessageID The message ID
+ * @param aDataDes Data descriptor
+ */
+ virtual void SendMessage(TInt aMessageID, const TDesC8& aDataDes) = 0;
+
+ /**
+ * Send message to application
+ * @param aMessageID The message ID
+ * @param aDataInt Data integer
+ */
+ virtual void SendMessage(TInt aMessageID, TInt aDataInt) = 0;
+ };
+
+/**
+ * Namespace for the plugin factory
+ */
+namespace NActivePalettePluginFactory
+ {
+ /**
+ * Definition for data that PLUGIN gets upon its creation
+ */
+ class TPluginCreationParams
+ {
+ public:
+ /**
+ * Return a reference to the observer
+ * @return A reference to the observer
+ */
+ IMPORT_C MActivePalettePluginObserver& PluginObserver(void) const;
+
+ /**
+ * Return the dimensions
+ * @return The dimensions
+ */
+ IMPORT_C TSize Dimensions(void) const;
+
+ /**
+ * Constructor
+ * @param aObserver A reference to the observer
+ * @param aDimensions The dimensions
+ */
+ IMPORT_C TPluginCreationParams(MActivePalettePluginObserver &aObserver,
+ const TSize& aDimensions);
+
+ private:
+ /// The observer
+ MActivePalettePluginObserver& iObserver;
+ /// Size of the icons used
+ TSize iDimensions;
+ };
+
+ /**
+ * Prototype for plugin DLL factory function
+ */
+ typedef CActivePalettePluginBase * (* TInstantiatePluginLFunc)(const TUid& aPluginUid,
+ const TPluginCreationParams& aCreationParams);
+
+ /// Entry ordinal to use for plugin creation
+ const TInt KFactoryEntryOrdinal = 1;
+ }
+
+
+/**
+ * Animation helper for plugins.
+ * Contains default icon animation (shrinks, then returns to normal)
+ */
+class CAnimationHelper : public CBase
+ {
+ private:
+ /**
+ * Constructor
+ */
+ CAnimationHelper();
+
+ /**
+ * Symbian leaving constructor
+ * @param aSize Size
+ * @param aMaskNeeded Indicates if a mask is needed or not
+ */
+ void ConstructL(const TSize aSize, const TBool aMaskNeeded);
+
+ public:
+ /**
+ * Destructor
+ */
+ ~CAnimationHelper();
+
+ /**
+ * Constructor
+ * @param aSize Size
+ * @param aMaskNeeded Indicates if a mask is needed or not
+ */
+ static CAnimationHelper* NewL(const TSize aSize, const TBool aMaskNeeded);
+
+ public:
+ /// Current frame bitmap.
+ CFbsBitmap* iFrame;
+ /// Current frame device.
+ CFbsBitmapDevice* iFrameDevice;
+ /// Current frame context.
+ CBitmapContext* iFrameGc;
+
+ /// Current frame mask bitmap.
+ CFbsBitmap* iFrameMask;
+ /// Current frame mask device.
+ CFbsBitmapDevice* iFrameMaskDevice;
+ /// Current frame mask context.
+ CBitmapContext* iFrameMaskGc;
+ };
+
+/**
+ * Plugin base class
+ */
+class CActivePalettePluginBase : public CBase
+ {
+ public:
+ /**
+ * Reserved for internal use in this version
+ */
+ class TPluginAnimationInfo
+ {
+ public:
+ /// Number of frames in animation
+ TInt iNofFrames;
+ /// Interval between frames
+ TInt iFrameTimeGapMs;
+ /// Dimensions of icons
+ TSize iFrameSize;
+ };
+
+ /**
+ * The type of animation to perform
+ */
+ enum TPluginAnimationType
+ {
+ EAniInvalid, ///< Invalid animation
+ EAniFocused = 2 ///< Focus animation
+ };
+
+ protected:
+
+ /**
+ * Constructor
+ */
+ IMPORT_C CActivePalettePluginBase(const NActivePalettePluginFactory::TPluginCreationParams& aCreationParams);
+
+ /**
+ * Returns a reference to the plugin observer
+ * @return A reference to the plugin observer
+ */
+ inline MActivePalettePluginObserver& PluginObserver(void) const;
+
+ public:
+
+ /**
+ * Destructor
+ */
+ IMPORT_C virtual ~CActivePalettePluginBase(void);
+
+ /**
+ * Handling of user's item selection
+ * @warning MUST BE IMPLEMENTED BY PLUGIN
+ */
+ IMPORT_C virtual void HandleItemSelectedL(void) = 0;
+
+ /**
+ * Handling of message from application
+ * @warning SHOULD BE IMPLEMENTED BY PLUGIN
+ * @param aMessageID The message ID
+ * @param aDataDes Data descriptor
+ * @param aDataInt Data integer
+ */
+ IMPORT_C virtual void HandleMessageL(TInt aMessageID,
+ const TDesC8& aDataDes,
+ TInt aDataInt);
+
+ /**
+ * 2nd phase constructor
+ * @warning MUST BE IMPLEMENTED BY PLUGIN
+ * @param aCreationParams A reference to the construction parameter class to use
+ * @param aCustomDataDes Data descriptor
+ * @param aCustomDataInt Data integer
+ */
+ IMPORT_C virtual void ConstructL(const NActivePalettePluginFactory::TPluginCreationParams& aCreationParams,
+ const TDesC8& aCustomDataDes,
+ TInt aCustomDataInt);
+
+ /**
+ * Resource destruction
+ * @warning MAY BE IMPLEMENTED BY PLUGIN
+ * (possible to use AP services)
+ */
+ IMPORT_C virtual void Shutdown(void);
+
+ /**
+ * Reserved for internal use in this version
+ * @param aAniType
+ * @param aAniInfo
+ * @param aDefaultAniInfo
+ * @param aItemIcon
+ * @param aItemIconMask
+ */
+ IMPORT_C virtual void PrepareAniFramesL(TInt aAniType,
+ TPluginAnimationInfo& aAniInfo,
+ const TPluginAnimationInfo& aDefaultAniInfo,
+ const CFbsBitmap & aItemIcon,
+ const CFbsBitmap * aItemIconMask);
+
+ /**
+ * Release the frames used in the animation
+ * @param aAniType
+ */
+ IMPORT_C virtual void ReleaseAniFrames(TInt aAniType);
+
+ /**
+ * Produces an animation frame
+ * @param aAniType
+ * @param aFrameNo
+ * @param aAniInfo
+ * @param aItemIcon
+ * @param aItemIconMask
+ * @param aFrame
+ * @param aFrameMask
+ * @param aOwnershipTransferForFrame
+ * @param aOwnershipTransferForMask
+ */
+ IMPORT_C virtual void ProduceAniFrame(TInt aAniType,
+ TInt aFrameNo,
+ const TPluginAnimationInfo& aAniInfo,
+ const CFbsBitmap & aItemIcon,
+ const CFbsBitmap * aItemIconMask,
+ CFbsBitmap** aFrame,
+ CFbsBitmap** aFrameMask,
+ TBool& aOwnershipTransferForFrame,
+ TBool& aOwnershipTransferForMask);
+
+ private:
+ /// The plugin observer
+ MActivePalettePluginObserver& iPluginObserver;
+
+ /// The animation helper
+ CBase* iAnimationHelper;
+ };
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::PluginObserver()
+// -----------------------------------------------------------------------------
+//
+inline MActivePalettePluginObserver & CActivePalettePluginBase::PluginObserver(void) const
+ {
+ return iPluginObserver;
+ };
+
+#endif // CACTIVEPALETTEPLUGINBASE_H
+
+// End of File