imageeditor/IEPB/src/iepbres.cpp
changeset 1 edfc90759b9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditor/IEPB/src/iepbres.cpp	Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,488 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description:  
+*
+*/
+
+
+
+#include <barsread.h> 
+#include <bautils.h>
+#include <eikenv.h> 
+#include <coneresloader.h> 
+
+
+#include <ImageEditorPluginBase.rsg>
+#include "iepbres.h"
+#include "ImageEditorPluginBase.hrh"
+
+//=============================================================================
+CPluginResource * CPluginResource::NewL (
+    const TDesC &   aResourcePath,
+    const TDesC &   aResourceFile
+    )
+{
+    CPluginResource * self = new (ELeave) CPluginResource;
+    CleanupStack::PushL (self);
+    self->ConstructL (aResourcePath, aResourceFile);
+    CleanupStack::Pop (); // self;
+    return self;
+}
+
+//=============================================================================
+CPluginResource::~CPluginResource ()
+{
+	delete iPluginName;
+	delete iPluginIconFileName;
+	delete iPluginFilterDllName;
+	
+    if (iParameters)
+	{
+		iParameters->Reset();
+	}
+	delete iParameters;
+
+    if (iSk1Cmds)
+    {
+        iSk1Cmds->Reset();
+    }
+    delete iSk1Cmds;
+
+    if (iSk1Texts)
+    {
+        iSk1Texts->Reset();
+    }
+    delete iSk1Texts;
+
+    if (iSk2Cmds)
+    {
+        iSk2Cmds->Reset();
+    }
+    delete iSk2Cmds;
+
+    if (iSk2Texts)
+    {
+        iSk2Texts->Reset();
+    }
+    delete iSk2Texts;
+    
+    if (iMSKCmds)
+    {
+        iMSKCmds->Reset();
+    }
+    delete iMSKCmds;
+
+    if (iMSKTexts)
+    {
+        iMSKTexts->Reset();
+    }
+    delete iMSKTexts;
+    
+    if (iMenuItems)
+    {
+        iMenuItems->Reset();
+    }
+    delete iMenuItems;
+}
+
+//=============================================================================
+const TPluginInt & CPluginResource::PluginUID () const
+{
+    return iPluginUID;
+}
+
+//=============================================================================
+const TPluginUiType & CPluginResource::PluginUiType() const
+{
+    return iPluginUIType;
+}
+
+//=============================================================================
+const TPluginFilterType & CPluginResource::PluginFilterType() const
+{
+    return iPluginFilterType;
+}
+
+//=============================================================================
+const TPluginScope & CPluginResource::PluginScope() const
+{
+    return iPluginScope;
+}
+
+//=============================================================================
+const TPluginInt & CPluginResource::PluginDisplayOrder() const
+{
+    return iPluginDisplayOrder;
+}
+
+//=============================================================================
+const TPtrC CPluginResource::PluginName () const
+{
+    return iPluginName->Des();
+}
+
+//=============================================================================
+const TPtrC CPluginResource::IconFileName() const
+{
+    return iPluginIconFileName->Des();
+}
+
+//=============================================================================
+const TPtrC CPluginResource::FilterFileName () const
+{
+    return iPluginFilterDllName->Des();
+}
+
+//=============================================================================
+const CDesCArray * CPluginResource::GetParameters () const
+{
+	return (CDesCArray *)iParameters;
+}
+
+//=============================================================================
+const CDesCArray * CPluginResource::Sk1Texts () const
+{
+    return iSk1Texts;
+}
+
+//=============================================================================
+const CArrayFix<TInt> * CPluginResource::Sk1CommandIds() const
+{
+    return iSk1Cmds;
+}
+
+//=============================================================================
+const CDesCArray * CPluginResource::Sk2Texts () const
+{
+    return iSk2Texts;
+}
+
+//=============================================================================
+const CArrayFix<TInt> * CPluginResource::Sk2CommandIds() const
+{
+    return iSk2Cmds;
+}
+
+//=============================================================================
+const CDesCArray * CPluginResource::MSKTexts () const
+{
+    return iMSKTexts;
+}
+
+//=============================================================================
+const CArrayFix<TInt> * CPluginResource::MSKCommandIds() const
+{
+    return iMSKCmds;
+}
+
+//=============================================================================
+const CMenuItemArray * CPluginResource::MenuItems() const
+{
+    return iMenuItems;
+}
+
+//=============================================================================
+CPluginResource::CPluginResource()
+{
+
+}
+
+//=============================================================================
+void CPluginResource::ConstructL (
+    const TDesC &   aResourcePath,
+    const TDesC &   aResourceFile
+    )
+{
+
+	CEikonEnv* env = CEikonEnv::Static();
+
+    /**
+    *
+    *   PLUG-IN INFO
+    *
+    */
+  
+    //  Create resource utility
+	TFileName file_name;
+	file_name.Copy (aResourcePath);
+	file_name.Append (aResourceFile);
+    BaflUtils::NearestLanguageFile( env->FsSession(), file_name );
+
+    RConeResourceLoader res_loader ( *env );
+    CleanupClosePushL (res_loader);
+	res_loader.OpenL ( file_name );
+
+    //  Construct resource reader
+    HBufC8 * res8 = env->AllocReadResourceAsDes8LC (R_PLUGIN_INFO);
+    TResourceReader resource;
+    resource.SetBuffer (res8);
+
+    //  Read plug-in UID
+    iPluginUID = resource.ReadInt32();    
+
+    //  Read plug-in UID
+    iPluginUIType = (TPluginUiType)resource.ReadInt32();    
+
+    //  Read plug-in UID
+    iPluginFilterType = (TPluginFilterType)resource.ReadInt32();    
+
+    //  Read plug-in UID
+    iPluginScope = (TPluginScope)resource.ReadInt32();
+
+    //  Read plug-in display priority
+    iPluginDisplayOrder = resource.ReadInt32();
+
+    //  Read plug-in name
+    iPluginName = resource.ReadHBufCL();
+    if ( !iPluginName )
+    {
+        User::Leave (KErrGeneral);
+    }
+
+    //  Read icon file name
+    iPluginIconFileName = resource.ReadHBufCL();
+    if ( !iPluginIconFileName )
+    {
+        User::Leave (KErrGeneral);
+    }
+
+    //  Read filter file name
+    iPluginFilterDllName = resource.ReadHBufCL();
+
+    CleanupStack::PopAndDestroy(); // res8
+
+
+    /**
+    *
+    *   PLUG-IN PARAMETERS
+    *
+    */
+
+	//	Read resource to descriptor
+	res8 = env->AllocReadResourceAsDes8LC (R_PLUGIN_PARS);
+
+	//	Set resource reader buffer
+	resource.SetBuffer (res8);
+
+	//	Read extra parameter count
+	TInt16 arraycount = (TInt16)resource.ReadInt16();
+
+	if (arraycount > 0)
+	{
+		//	Construct a new descriptor array
+		if (!iParameters)
+		{
+			iParameters = new (ELeave) CDesCArraySeg(16);
+		}
+
+		//	Read extra parameters to array
+		for (TInt i = 0; i < arraycount; ++i)
+		{
+			//	Construct a flat descriptor array and read all the parameter names 
+			HBufC * parameter = resource.ReadHBufCL();
+            CleanupStack::PushL(parameter);
+			TPtrC ptr = parameter->Des();
+			iParameters->AppendL (ptr);
+            CleanupStack::PopAndDestroy(); // parameter
+		}
+    }
+    CleanupStack::PopAndDestroy(); // res8
+
+
+    /**
+    *
+    *   SOFT KEY 1
+    *
+    */
+
+	//	Read resource to descriptor
+	res8 = env->AllocReadResourceAsDes8LC (R_SK1_ITEMS);
+    
+	//	Set resource reader buffer
+	resource.SetBuffer (res8);
+
+	//	Read menu item 
+	arraycount = (TInt16)resource.ReadInt16();
+
+	if (arraycount > 0)
+	{
+        
+		//	Construct a new descriptor array
+		if (!iSk1Cmds)
+		{
+			iSk1Cmds = new (ELeave) CArrayFixSeg<TInt>(8);
+		}
+		if (!iSk1Texts)
+		{
+			iSk1Texts = new (ELeave) CDesCArraySeg(8);
+		}
+
+		//	Read extra parameters to array
+		for (TInt i = 0; i < arraycount; ++i)
+		{
+            //  Read command ID
+            TInt cmd = resource.ReadInt32();
+            iSk1Cmds->AppendL(cmd);
+
+            //  Read the menu item text
+            HBufC * menutext = resource.ReadHBufCL();
+            CleanupStack::PushL (menutext);
+            TPtrC ptr = menutext->Des();
+            iSk1Texts->AppendL ( ptr );
+            CleanupStack::PopAndDestroy(); // menutext
+		}
+    }
+    CleanupStack::PopAndDestroy(); // res8
+
+    /**
+    *
+    *   SOFT KEY 2
+    *
+    */
+
+	//	Read resource to descriptor
+	res8 = env->AllocReadResourceAsDes8LC (R_SK2_ITEMS);
+    
+	//	Set resource reader buffer
+	resource.SetBuffer (res8);
+
+	//	Read menu item 
+	arraycount = (TInt16)resource.ReadInt16();
+
+	if (arraycount > 0)
+	{
+        
+		//	Construct a new descriptor array
+		if (!iSk2Cmds)
+		{
+			iSk2Cmds = new (ELeave) CArrayFixSeg<TInt>(8);
+		}
+		if (!iSk2Texts)
+		{
+			iSk2Texts = new (ELeave) CDesCArraySeg(8);
+		}
+
+		//	Read extra parameters to array
+		for (TInt i = 0; i < arraycount; ++i)
+		{
+            //  Read command ID
+            TInt cmd = resource.ReadInt32();
+            iSk2Cmds->AppendL(cmd);
+
+            //  Read the menu item text
+            HBufC * menutext = resource.ReadHBufCL();
+            CleanupStack::PushL (menutext);
+            TPtrC ptr = menutext->Des();
+            iSk2Texts->AppendL ( ptr );
+            CleanupStack::PopAndDestroy(); // menutext
+		}
+    }
+    CleanupStack::PopAndDestroy(); // res8
+
+    /**
+    *
+    *   MIDDLE SOFTKEY
+    *
+    */
+    
+	//	Read resource to descriptor
+	res8 = env->AllocReadResourceAsDes8LC (R_MSK_ITEMS);
+    
+	//	Set resource reader buffer
+	resource.SetBuffer (res8);
+
+	//	Read menu item 
+	arraycount = (TInt16)resource.ReadInt16();
+
+	if (arraycount > 0)
+	{
+        
+		//	Construct a new descriptor array
+		if (!iMSKCmds)
+		{
+			iMSKCmds = new (ELeave) CArrayFixSeg<TInt>(8);
+		}
+		if (!iMSKTexts)
+		{
+			iMSKTexts = new (ELeave) CDesCArraySeg(8);
+		}
+
+		//	Read extra parameters to array
+		for (TInt i = 0; i < arraycount; ++i)
+		{
+            //  Read command ID
+            TInt cmd = resource.ReadInt32();
+            iMSKCmds->AppendL(cmd);
+
+            //  Read the menu item text
+            HBufC * menutext = resource.ReadHBufCL();
+            CleanupStack::PushL (menutext);
+            TPtrC ptr = menutext->Des();
+            iMSKTexts->AppendL ( ptr );
+            CleanupStack::PopAndDestroy(); // menutext
+		}
+    }
+    CleanupStack::PopAndDestroy(); // res8
+    
+    /**
+    *
+    *   MENU ITEMS
+    *
+    */
+
+    //	Read resource to descriptor
+	res8 = env->AllocReadResourceAsDes8LC (R_MENU_ITEMS);
+
+	//	Set resource reader buffer
+	resource.SetBuffer (res8);
+
+	//	Read menu item 
+	arraycount = (TInt16)resource.ReadInt16();
+
+	if (arraycount > 0)
+	{
+        
+		//	Construct a new descriptor array
+		if (!iMenuItems)
+		{
+			iMenuItems = new (ELeave) CMenuItemArray(8);
+		}
+
+		//	Read extra parameters to array
+		for (TInt i = 0; i < arraycount; ++i)
+		{
+			//	Construct and initialize a new menu item
+            CEikMenuPaneItem::SData item;
+            item.iFlags = 0;
+            item.iCascadeId = 0;
+
+            //  Read command ID
+            item.iCommandId = resource.ReadInt32();
+
+            //  Read the menu item text
+            HBufC * menutext = resource.ReadHBufCL();
+            CleanupStack::PushL(menutext);
+            item.iText.Copy ( menutext->Des() );
+
+            //  Add menu item to array
+            iMenuItems->AppendL (item);
+            CleanupStack::PopAndDestroy(menutext);
+		}
+
+    }
+
+	CleanupStack::PopAndDestroy (2); // res8, res_loader
+
+}