diff -r 57d4cdd99204 -r edfc90759b9f imageeditorengine/ImageEditorUtils/src/PluginInfo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imageeditorengine/ImageEditorUtils/src/PluginInfo.cpp Fri Jan 29 13:53:17 2010 +0200 @@ -0,0 +1,698 @@ +/* +* 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: +* Utils class handling the information about the plugins. +* +*/ + + + +#include + +#include "PluginInfo.h" +#include "EditorVersion.h" + +//============================================================================= +EXPORT_C TInt CPluginInfo::ComparePluginInfo ( + const CPluginInfo & aItem1, + const CPluginInfo & aItem2 + ) +{ + if (aItem1.iPluginRID < aItem2.iPluginRID) + { + return -1; + } + else if (aItem1.iPluginRID > aItem2.iPluginRID) + { + return 1; + } + else + { + return 0; + } +} + +//============================================================================= +EXPORT_C TInt CPluginInfo::ComparePluginOrder( + const CPluginInfo & aItem1, + const CPluginInfo & aItem2 + ) +{ + if (aItem1.iPluginDisplayOrder < aItem2.iPluginDisplayOrder) + { + return -1; + } + else if (aItem1.iPluginDisplayOrder > aItem2.iPluginDisplayOrder) + { + return 1; + } + else + { + return 0; + } +} + +//============================================================================= +EXPORT_C CPluginInfo * CPluginInfo::NewL () +{ + CPluginInfo * self = CPluginInfo::NewLC(); + CleanupStack::Pop(); // self + return self; +} + +//============================================================================= +EXPORT_C CPluginInfo * CPluginInfo::NewLC () +{ + CPluginInfo * self = new (ELeave) CPluginInfo; + CleanupStack::PushL(self); + self->ConstructL(); + return self; +} + +//============================================================================= +EXPORT_C CPluginInfo::~CPluginInfo () +{ + delete iPluginDllName; + delete iPluginName; + delete iIconFileName; + delete iIcon; + delete iMask; + + if (iParams) + { + iParams->Reset(); + } + delete iParams; + + 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; +} + +//============================================================================= +EXPORT_C HBufC *& CPluginInfo::PluginDll () +{ + return iPluginDllName; +} + +//============================================================================= +EXPORT_C const TDesC & CPluginInfo::PluginDll () const +{ + return *iPluginDllName; +} + +//============================================================================= +EXPORT_C TUid & CPluginInfo::Uid2 () +{ + return iUID2; +} + +//============================================================================= +EXPORT_C const TUid & CPluginInfo::Uid2 () const +{ + return iUID2; +} + +//============================================================================= +EXPORT_C TUid & CPluginInfo::Uid3 () +{ + return iUID3; +} + +//============================================================================= +EXPORT_C const TUid & CPluginInfo::Uid3 () const +{ + return iUID3; +} + +//============================================================================= +EXPORT_C TInt & CPluginInfo::PluginUiType() +{ + return iPluginUiType; +} + +//============================================================================= +EXPORT_C const TInt & CPluginInfo::PluginUiType() const +{ + return iPluginUiType; +} + +//============================================================================= +EXPORT_C TInt & CPluginInfo::PluginFilterType() +{ + return iPluginFilterType; +} + +//============================================================================= +EXPORT_C const TInt & CPluginInfo::PluginFilterType() const +{ + return iPluginFilterType; +} + +//============================================================================= +EXPORT_C TInt & CPluginInfo::PluginScope() +{ + return iScope; +} + +//============================================================================= +EXPORT_C const TInt & CPluginInfo::PluginScope() const +{ + return iScope; +} + +//============================================================================= +EXPORT_C TInt & CPluginInfo::PluginDisplayOrder() +{ + return iPluginDisplayOrder; +} + +//============================================================================= +EXPORT_C const TInt & CPluginInfo::PluginDisplayOrder() const +{ + return iPluginDisplayOrder; +} + +//============================================================================= +EXPORT_C TInt & CPluginInfo::PluginRID() +{ + return iPluginRID; +} + +//============================================================================= +EXPORT_C const TInt & CPluginInfo::PluginRID() const +{ + return iPluginRID; +} + +//============================================================================= +EXPORT_C HBufC *& CPluginInfo::PluginName() +{ + return iPluginName; +} + +//============================================================================= +EXPORT_C const TDesC & CPluginInfo::PluginName() const +{ + return *iPluginName; +} +//============================================================================= +EXPORT_C HBufC *& CPluginInfo::IconFile() +{ + return iIconFileName; +} + +//============================================================================= +EXPORT_C const TDesC & CPluginInfo::IconFile() const +{ + return *iIconFileName; +} + +//============================================================================= +EXPORT_C CFbsBitmap *& CPluginInfo::Icon() +{ + return iIcon; +} + +//============================================================================= +EXPORT_C const CFbsBitmap * CPluginInfo::Icon() const +{ + return iIcon; +} + +//============================================================================= +EXPORT_C CFbsBitmap *& CPluginInfo::Mask() +{ + return iMask; +} + +//============================================================================= +EXPORT_C const CFbsBitmap * CPluginInfo::Mask() const +{ + return iMask; +} + +//============================================================================= +EXPORT_C CDesCArray & CPluginInfo::Parameters() +{ + return *iParams; +} + +//============================================================================= +EXPORT_C const CDesCArray & CPluginInfo::Parameters() const +{ + return *iParams; +} + +//============================================================================= +EXPORT_C CArrayFix & CPluginInfo::Sk1Cmds() +{ + return *iSk1Cmds; +} + +//============================================================================= +EXPORT_C const CArrayFix & CPluginInfo::Sk1Cmds() const +{ + return *iSk1Cmds; +} + +//============================================================================= +EXPORT_C CDesCArray & CPluginInfo::Sk1Texts() +{ + return *iSk1Texts; +} + +//============================================================================= +EXPORT_C const CDesCArray & CPluginInfo::Sk1Texts() const +{ + return *iSk1Texts; +} + +//============================================================================= +EXPORT_C CArrayFix & CPluginInfo::Sk2Cmds() +{ + return *iSk2Cmds; +} + +//============================================================================= +EXPORT_C const CArrayFix & CPluginInfo::Sk2Cmds() const +{ + return *iSk2Cmds; +} + +//============================================================================= +EXPORT_C CDesCArray & CPluginInfo::Sk2Texts() +{ + return *iSk2Texts; +} + +//============================================================================= +EXPORT_C const CDesCArray & CPluginInfo::Sk2Texts() const +{ + return *iSk2Texts; +} + +//============================================================================= +EXPORT_C CArrayFix & CPluginInfo::MSKCmds() +{ + return *iMSKCmds; +} + +//============================================================================= +EXPORT_C const CArrayFix & CPluginInfo::MSKCmds() const +{ + return *iMSKCmds; +} + +//============================================================================= +EXPORT_C CDesCArray & CPluginInfo::MSKTexts() +{ + return *iMSKTexts; +} + +//============================================================================= +EXPORT_C const CDesCArray & CPluginInfo::MSKTexts() const +{ + return *iMSKTexts; +} +//============================================================================= +EXPORT_C CMenuItemArray & CPluginInfo::MenuItems() +{ + return *iMenuItems; +} + +//============================================================================= +EXPORT_C const CMenuItemArray & CPluginInfo::MenuItems() const +{ + return *iMenuItems; +} + +//============================================================================= +EXPORT_C void CPluginInfo::ExternalizeL ( RWriteStream& aStream ) const +{ + TInt i = 0; + + // Current UI language + TLanguage lang = User::Language(); + aStream.WriteInt32L (lang); + + // Editor version (from EditorVersion.h) + aStream.WriteInt32L (my_version_major); + aStream.WriteInt32L (my_version_minor); + aStream.WriteInt32L (my_version_build); + + // HBufC * iPluginDllName + if ( iPluginDllName ) + { + TPtr pluginDllNamePtr = iPluginDllName->Des(); + aStream.WriteInt32L (pluginDllNamePtr.Length()); + aStream << pluginDllNamePtr; + } + + // TUid iUID2 + aStream << iUID2; + + // TUid iUID3 + aStream << iUID3; + + // TInt iPluginUiType + aStream.WriteInt32L( iPluginUiType ); + + // TInt iPluginFilterType + aStream.WriteInt32L( iPluginFilterType ); + + // TInt iScope + aStream.WriteInt32L( iScope ); + + //TInt iPluginDisplayOrder + aStream.WriteInt32L( iPluginDisplayOrder ); + + // TInt iPluginRID + aStream.WriteInt32L( iPluginRID ); + + // HBufC * iPluginName + if ( iPluginName ) + { + TPtr pluginNamePtr = iPluginName->Des(); + aStream.WriteInt32L (pluginNamePtr.Length()); + aStream << pluginNamePtr; + } + + // HBufC * iIconFileName + if ( iIconFileName ) + { + TPtr iconFileNamePtr = iIconFileName->Des(); + aStream.WriteInt32L (iconFileNamePtr.Length()); + aStream << iconFileNamePtr; + } + + // CDesCArray * iParams + TInt paramCount = iParams->MdcaCount(); + aStream.WriteInt32L( paramCount ); + for ( i=0; iMdcaPoint(i); + aStream.WriteInt32L( des.Length() ); + aStream << des; + } + + // CArrayFix * iSk1Cmds + TInt sk1CmdCount = iSk1Cmds->Count(); + aStream.WriteInt32L( sk1CmdCount ); + for ( i=0; iAt(i) ); + } + + // CDesCArray * iSk1Texts + TInt sk1TextCount = iSk1Texts->MdcaCount(); + aStream.WriteInt32L( sk1TextCount ); + for ( i=0; iMdcaPoint(i); + aStream.WriteInt32L( des.Length() ); + aStream << des; + } + + // CArrayFix * iSk2Cmds + TInt sk2CmdCount = iSk2Cmds->Count(); + aStream.WriteInt32L( sk2CmdCount ); + for ( i=0; iAt(i) ); + } + + // CDesCArray * iSk2Texts + TInt sk2TextCount = iSk2Texts->MdcaCount(); + aStream.WriteInt32L( sk2TextCount ); + for ( i=0; iMdcaPoint(i); + aStream.WriteInt32L( des.Length() ); + aStream << des; + } + + // CArrayFix * iMSKCmds + TInt mskCmdCount = iMSKCmds->Count(); + aStream.WriteInt32L( mskCmdCount ); + for ( i=0; iAt(i) ); + } + + // CDesCArray * iMSKTexts + TInt mskTextCount = iMSKTexts->MdcaCount(); + aStream.WriteInt32L( mskTextCount ); + for ( i=0; iMdcaPoint(i); + aStream.WriteInt32L( des.Length() ); + aStream << des; + } + + // CMenuItemArray * iMenuItems + TInt menuItemCount = iMenuItems->Count(); + aStream.WriteInt32L( menuItemCount ); + for ( i=0; iAt(i); + + // TInt iCommandId; + aStream.WriteInt32L( item.iCommandId ); + // TInt iCascadeId; + aStream.WriteInt32L( item.iCascadeId ); + // TInt iFlags; + aStream.WriteInt32L( item.iFlags ); + // TBuf iText; + aStream << item.iText; + // TBuf<1> iExtraText; + aStream << item.iText; + } +} + +//============================================================================= +EXPORT_C void CPluginInfo::InternalizeL ( RReadStream& aStream ) +{ + TInt i = 0; + + // Check that the current UI language is the same as stored + // in the ini file. If not, reject the stored information. + TLanguage storedLang = (TLanguage) aStream.ReadInt32L(); + if (storedLang != User::Language()) + { + User::Leave (KErrCorrupt); + } + + // If the editor version has changed, also reject the stored data. + TInt major = aStream.ReadInt32L(); + TInt minor = aStream.ReadInt32L(); + TInt build = aStream.ReadInt32L(); + if (major != my_version_major || + minor != my_version_minor || + build != my_version_build + ) + { + User::Leave (KErrCorrupt); + } + + // HBufC * iPluginDllName + TInt pluginDllNameLength = aStream.ReadInt32L(); + iPluginDllName = HBufC::NewL(pluginDllNameLength); + TPtr pluginDllNamePtr = iPluginDllName->Des(); + aStream >> pluginDllNamePtr; + + // TUid iUID2 + aStream >> iUID2; + + // TUid iUID3 + aStream >> iUID3; + + // TInt iPluginUiType + iPluginUiType = aStream.ReadInt32L(); + + // TInt iPluginFilterType + iPluginFilterType = aStream.ReadInt32L(); + + // TInt iScope + iScope = aStream.ReadInt32L(); + + // TInt iPluginDisplayOrder + iPluginDisplayOrder = aStream.ReadInt32L(); + + // TInt iPluginRID + iPluginRID = aStream.ReadInt32L(); + + // HBufC * iPluginName + TInt pluginNameLength = aStream.ReadInt32L(); + iPluginName = HBufC::NewL(pluginNameLength); + TPtr pluginNamePtr = iPluginName->Des(); + aStream >> pluginNamePtr; + + // HBufC * iIconFileName + TInt iconFileNameLength = aStream.ReadInt32L(); + iIconFileName = HBufC::NewL(iconFileNameLength); + TPtr iconFileNamePtr = iIconFileName->Des(); + aStream >> iconFileNamePtr; + + // CDesCArray * iParams + TInt paramCount = aStream.ReadInt32L(); + for ( i=0; iDes(); + aStream >> paramPtr; + iParams->AppendL( paramPtr ); + CleanupStack::PopAndDestroy( paramBuf ); + } + + // CArrayFix * iSk1Cmds; + TInt sk1CmdCount = aStream.ReadInt32L(); + for ( i=0; iAppendL( cmd ); + } + + // CDesCArray * iSk1Texts; + TInt sk1TextCount = aStream.ReadInt32L(); + for ( i=0; iDes(); + aStream >> sk1TextPtr; + iSk1Texts->AppendL( sk1TextPtr ); + CleanupStack::PopAndDestroy( sk1TextBuf ); + } + + // CArrayFix * iSk2Cmds; + TInt sk2CmdCount = aStream.ReadInt32L(); + for ( i=0; iAppendL( cmd ); + } + + // CDesCArray * iSk2Texts; + TInt sk2TextCount = aStream.ReadInt32L(); + for ( i=0; iDes(); + aStream >> sk2TextPtr; + iSk2Texts->AppendL( sk2TextPtr ); + CleanupStack::PopAndDestroy( sk2TextBuf ); + } + + // CArrayFix * iMSKCmds; + TInt mskCmdCount = aStream.ReadInt32L(); + for ( i=0; iAppendL( cmd ); + } + + // CDesCArray * iMSKTexts; + TInt mskTextCount = aStream.ReadInt32L(); + for ( i=0; iDes(); + aStream >> mskTextPtr; + iMSKTexts->AppendL( mskTextPtr ); + CleanupStack::PopAndDestroy( mskTextBuf ); + } + + // CMenuItemArray * iMenuItems; + TInt menuItemCount = aStream.ReadInt32L(); + for ( i=0; i iText; + aStream >> item.iText; + // TBuf<1> iExtraText; + aStream >> item.iText; + + iMenuItems->AppendL( item ); + } +} + +//============================================================================= +void CPluginInfo::ConstructL() +{ + iParams = new (ELeave) CDesCArraySeg(16); + iSk1Cmds= new (ELeave) CArrayFixSeg(4); + iSk1Texts = new (ELeave) CDesCArraySeg(4); + iSk2Cmds= new (ELeave) CArrayFixSeg(4); + iSk2Texts = new (ELeave) CDesCArraySeg(4); + iMSKCmds= new (ELeave) CArrayFixSeg(4); + iMSKTexts = new (ELeave) CDesCArraySeg(4); + iMenuItems = new (ELeave) CMenuItemArray (8); +} + +//============================================================================= +CPluginInfo::CPluginInfo () +{ + +} + +// End of File