camerauis/activepalette/Src/ActivePalette2GenericPlugin.cpp
branchRCL_3
changeset 24 bac7acad7cb3
parent 0 1ddebce53859
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/activepalette/Src/ActivePalette2GenericPlugin.cpp	Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,244 @@
+/*
+* 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 2 Generic Plugin*
+*/
+
+
+/**
+ * @file ActivePalette2GenericPlugin.cpp
+ * Active Palette 2 Generic Plugin
+ */
+
+// INCLUDE FILES
+#include "ActivePalette2GenericPlugin.h"
+#include "ActivePalette2Const.h"
+#include "ActivePalette2Cfg.h"
+
+#include <gulicon.h>
+#include <AknIconUtils.h>
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// TAPGenericPluginParams::TAPGenericPluginParams()
+// C++ Constructor
+// -----------------------------------------------------------------------------
+//
+TAP2GenericPluginParams::TAP2GenericPluginParams() :
+	iResFileType(EGenericStdResFile),
+	iGraphicsFileName(KNullDesC),
+	iIconId(0),
+	iMaskId(0),
+	iTooltipText(KNullDesC),
+	iMessageId(KActivePaletteNoDataInt),
+	iMsgCustomParam(KActivePaletteNoDataInt)	
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// TAPGenericPluginParams::TAPGenericPluginParams()
+// C++ Constructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAP2GenericPluginParams::TAP2GenericPluginParams(const TInt aResFileType,
+														const TDesC& aGraphicsFileName,
+														const TInt aIconId,
+														const TInt aMaskId,
+														const TDesC& aTooltipText,
+														const TInt aMessageId,
+														const TInt aMsgCustomParam):
+	iResFileType(aResFileType),
+	iGraphicsFileName(aGraphicsFileName),
+	iIconId(aIconId),
+	iMaskId(aMaskId),
+	iTooltipText(aTooltipText),
+	iMessageId(aMessageId),
+	iMsgCustomParam(aMsgCustomParam)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// TAPGenericPluginIcon::TAPGenericPluginIcon()
+// C++ Constructor
+// -----------------------------------------------------------------------------
+//
+TAP2GenericPluginIcon::TAP2GenericPluginIcon() :
+	iIconId(0),
+	iMaskId(0)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// TAPGenericPluginIcon::TAPGenericPluginIcon()
+// C++ Constructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TAP2GenericPluginIcon::TAP2GenericPluginIcon(const TInt aIconId,
+													const TInt aMaskId):
+	iIconId(aIconId),
+	iMaskId(aMaskId)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CAP2GenericPlugin::CAP2GenericPlugin()
+// C++ Constructor
+// -----------------------------------------------------------------------------
+//
+CAP2GenericPlugin::CAP2GenericPlugin(const NActivePalettePluginFactory::TPluginCreationParams& aCreationParams):
+CActivePalettePluginBase(aCreationParams)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CAP2GenericPlugin::CAP2GenericPlugin()
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CAP2GenericPlugin::~CAP2GenericPlugin()
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CAP2GenericPlugin::HandleItemSelectedL()
+// -----------------------------------------------------------------------------
+//
+void CAP2GenericPlugin::HandleItemSelectedL(void)
+	{
+	PluginObserver().SendMessage(iMessageId,iMsgCustomParam);	
+	PluginObserver().NotifyItemComplete(KActivePaletteNoDataInt);
+	}
+
+// -----------------------------------------------------------------------------
+// CAP2GenericPlugin::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CAP2GenericPlugin::ConstructL(const NActivePalettePluginFactory::TPluginCreationParams& aCreationParams, 
+								  const TDesC8& aCustomDataDes, const TInt aCustomDataInt)
+	{
+	CActivePalettePluginBase::ConstructL(aCreationParams, aCustomDataDes, aCustomDataInt);
+	
+	iDimensions = aCreationParams.Dimensions();
+
+	// unpack creation params
+	TAP2GenericPluginParams params;
+	TPckg<TAP2GenericPluginParams> paramsPckg(params);
+	if (aCustomDataDes.Length())
+		{
+		paramsPckg.Copy(aCustomDataDes);
+		SetIconAndTooltipL(params);
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// CAP2GenericPlugin::SetIconAndTooltipL()
+// -----------------------------------------------------------------------------
+//
+void CAP2GenericPlugin::SetIconAndTooltipL(TAP2GenericPluginParams& aParams)
+	{
+	iMessageId 		= aParams.iMessageId;
+	iMsgCustomParam = aParams.iMsgCustomParam;
+
+	iGraphicsFileName = aParams.iGraphicsFileName;		
+
+	CGulIcon* icon = CreateIconL(aParams.iIconId, aParams.iMaskId);
+	CleanupStack::PushL(icon);
+	
+	// Don't need to worry about the CGulIcon object from now on
+	// as we are transferring ownership of it to the active palette.
+	PluginObserver().SetItemIconAndTooltipL(icon, ETrue, aParams.iTooltipText);	
+	
+	CleanupStack::Pop(icon);
+	}
+	
+// -----------------------------------------------------------------------------
+// CAP2GenericPlugin::CreateIconL()
+// -----------------------------------------------------------------------------
+//
+CGulIcon* CAP2GenericPlugin::CreateIconL(TInt aIconId, TInt aMaskId)
+	{
+	CFbsBitmap* picture;
+	CFbsBitmap* mask;
+
+	AknIconUtils::CreateIconLC(picture, mask, iGraphicsFileName, aIconId, aMaskId);
+	AknIconUtils::SetSize(picture, iDimensions);
+	AknIconUtils::SetSize(mask, iDimensions);
+	
+	CGulIcon* icon = CGulIcon::NewL(picture,mask);
+
+	// Can now take the bitmaps off the cleanup stack as we have
+	// transferred ownership to the CGulIcon object
+	CleanupStack::Pop(mask);
+	CleanupStack::Pop(picture);
+	
+	return icon;
+	}
+
+// -----------------------------------------------------------------------------
+// CAP2GenericPlugin::HandleMessageL()
+// -----------------------------------------------------------------------------
+//
+void CAP2GenericPlugin::HandleMessageL(const TInt aMessageID, const TDesC8& aDataDes, const TInt /* aDataInt */)
+	{
+	switch (aMessageID)
+		{
+		case EAPGenericPluginChangeIcon:
+			{
+			TAP2GenericPluginIcon iconParams;
+			TPckg<TAP2GenericPluginIcon> iconParamsPckg(iconParams);
+			if (aDataDes.Length())
+				{
+				iconParamsPckg.Copy(aDataDes);
+				CGulIcon* icon = CreateIconL(iconParams.iIconId, iconParams.iMaskId);
+				// Ownership of icon is transferred to the Active Palette
+				PluginObserver().SetItemIcon(icon, ETrue);
+				}
+			}
+			break;
+			
+		case EAPGenericPluginChangeParams:
+			{
+			TAP2GenericPluginParams params;
+			TPckg<TAP2GenericPluginParams> paramsPckg(params);
+			if (aDataDes.Length())
+				{
+				paramsPckg.Copy(aDataDes);
+				SetIconAndTooltipL(params);
+				}
+			break;
+			}
+
+		default:
+			break;
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// InstantiateGenericPluginL()
+// -----------------------------------------------------------------------------
+//
+CActivePalettePluginBase* InstantiateGenericPluginL(
+    const TUid& aPluginUid, 
+    const NActivePalettePluginFactory::TPluginCreationParams& aCreationParams)
+	{
+	if (TUid::Uid(KActivePalette2GenericPluginUID) != aPluginUid)
+		{
+		User::Leave(KErrNotSupported);
+		}
+	
+	CActivePalettePluginBase* self = new (ELeave) CAP2GenericPlugin(aCreationParams);
+	return self;
+	}
+
+// End of File