imageeditorengine/ImageEditorUtils/src/PluginInfo.cpp
changeset 1 edfc90759b9f
equal deleted inserted replaced
0:57d4cdd99204 1:edfc90759b9f
       
     1 /*
       
     2 * Copyright (c) 2010 Ixonos Plc.
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - Initial contribution
       
    11 *
       
    12 * Contributors:
       
    13 * Ixonos Plc
       
    14 *
       
    15 * Description:  
       
    16 * Utils class handling the information about the plugins.
       
    17 *
       
    18 */
       
    19 
       
    20 
       
    21 
       
    22 #include <fbs.h>
       
    23 
       
    24 #include "PluginInfo.h"
       
    25 #include "EditorVersion.h"
       
    26 
       
    27 //=============================================================================
       
    28 EXPORT_C TInt CPluginInfo::ComparePluginInfo (
       
    29     const CPluginInfo & aItem1,
       
    30     const CPluginInfo & aItem2
       
    31     )
       
    32 {
       
    33     if (aItem1.iPluginRID < aItem2.iPluginRID)
       
    34     {
       
    35         return -1;
       
    36     }
       
    37     else if (aItem1.iPluginRID > aItem2.iPluginRID)
       
    38     {
       
    39         return 1;
       
    40     }
       
    41     else
       
    42     {
       
    43         return 0;
       
    44     }
       
    45 }
       
    46 
       
    47 //=============================================================================
       
    48 EXPORT_C TInt CPluginInfo::ComparePluginOrder(
       
    49     const CPluginInfo & aItem1,
       
    50     const CPluginInfo & aItem2
       
    51     )
       
    52 {
       
    53     if (aItem1.iPluginDisplayOrder < aItem2.iPluginDisplayOrder)
       
    54     {
       
    55         return -1;
       
    56     }
       
    57     else if (aItem1.iPluginDisplayOrder > aItem2.iPluginDisplayOrder)
       
    58     {
       
    59         return 1;
       
    60     }
       
    61     else
       
    62     {
       
    63         return 0;
       
    64     }
       
    65 }
       
    66 
       
    67 //=============================================================================
       
    68 EXPORT_C CPluginInfo * CPluginInfo::NewL ()
       
    69 {
       
    70     CPluginInfo * self = CPluginInfo::NewLC();
       
    71     CleanupStack::Pop(); // self
       
    72     return self;
       
    73 }
       
    74 
       
    75 //=============================================================================
       
    76 EXPORT_C CPluginInfo * CPluginInfo::NewLC ()
       
    77 {
       
    78     CPluginInfo * self = new (ELeave) CPluginInfo;
       
    79     CleanupStack::PushL(self);
       
    80     self->ConstructL();
       
    81     return self;
       
    82 }
       
    83 
       
    84 //=============================================================================
       
    85 EXPORT_C CPluginInfo::~CPluginInfo ()
       
    86 {
       
    87     delete iPluginDllName;
       
    88     delete iPluginName;
       
    89     delete iIconFileName;
       
    90     delete iIcon;
       
    91     delete iMask;
       
    92 
       
    93     if (iParams)
       
    94     {
       
    95         iParams->Reset();
       
    96     }
       
    97     delete iParams;
       
    98 
       
    99     if (iSk1Cmds)
       
   100     {
       
   101         iSk1Cmds->Reset();
       
   102     }
       
   103     delete iSk1Cmds;
       
   104 
       
   105     if (iSk1Texts)
       
   106     {
       
   107         iSk1Texts->Reset();
       
   108     }
       
   109     delete iSk1Texts;
       
   110 
       
   111     if (iSk2Cmds)
       
   112     {
       
   113         iSk2Cmds->Reset();
       
   114     }
       
   115     delete iSk2Cmds;
       
   116 
       
   117     if (iSk2Texts)
       
   118     {
       
   119         iSk2Texts->Reset();
       
   120     }
       
   121     delete iSk2Texts;
       
   122 
       
   123     if (iMSKCmds)
       
   124     {
       
   125         iMSKCmds->Reset();
       
   126     }
       
   127     delete iMSKCmds;
       
   128 
       
   129     if (iMSKTexts)
       
   130     {
       
   131         iMSKTexts->Reset();
       
   132     }
       
   133     delete iMSKTexts;
       
   134     if (iMenuItems)
       
   135     {
       
   136         iMenuItems->Reset();
       
   137     }
       
   138     delete iMenuItems;
       
   139 }
       
   140 
       
   141 //=============================================================================
       
   142 EXPORT_C HBufC *& CPluginInfo::PluginDll ()
       
   143 {
       
   144     return iPluginDllName;
       
   145 }
       
   146 
       
   147 //=============================================================================
       
   148 EXPORT_C const TDesC & CPluginInfo::PluginDll () const
       
   149 {
       
   150     return *iPluginDllName;
       
   151 }
       
   152 
       
   153 //=============================================================================
       
   154 EXPORT_C TUid & CPluginInfo::Uid2 ()
       
   155 {
       
   156     return iUID2;
       
   157 }
       
   158 
       
   159 //=============================================================================
       
   160 EXPORT_C const TUid & CPluginInfo::Uid2 () const
       
   161 {
       
   162     return iUID2;
       
   163 }
       
   164 
       
   165 //=============================================================================
       
   166 EXPORT_C TUid & CPluginInfo::Uid3 ()
       
   167 {
       
   168     return iUID3;
       
   169 }
       
   170 
       
   171 //=============================================================================
       
   172 EXPORT_C const TUid & CPluginInfo::Uid3 () const
       
   173 {
       
   174     return iUID3;
       
   175 }
       
   176 
       
   177 //=============================================================================
       
   178 EXPORT_C TInt & CPluginInfo::PluginUiType()
       
   179 {
       
   180     return iPluginUiType;
       
   181 }
       
   182 
       
   183 //=============================================================================
       
   184 EXPORT_C const TInt & CPluginInfo::PluginUiType() const
       
   185 {
       
   186     return iPluginUiType;
       
   187 }
       
   188 
       
   189 //=============================================================================
       
   190 EXPORT_C TInt & CPluginInfo::PluginFilterType()
       
   191 {
       
   192     return iPluginFilterType;
       
   193 }
       
   194 
       
   195 //=============================================================================
       
   196 EXPORT_C const TInt & CPluginInfo::PluginFilterType() const
       
   197 {
       
   198     return iPluginFilterType;
       
   199 }
       
   200 
       
   201 //=============================================================================
       
   202 EXPORT_C TInt & CPluginInfo::PluginScope()
       
   203 {
       
   204     return iScope;
       
   205 }
       
   206 
       
   207 //=============================================================================
       
   208 EXPORT_C const TInt & CPluginInfo::PluginScope() const
       
   209 {
       
   210     return iScope;
       
   211 }
       
   212 
       
   213 //=============================================================================
       
   214 EXPORT_C TInt & CPluginInfo::PluginDisplayOrder()
       
   215 {
       
   216     return iPluginDisplayOrder;
       
   217 }
       
   218 
       
   219 //=============================================================================
       
   220 EXPORT_C const TInt & CPluginInfo::PluginDisplayOrder() const
       
   221 {
       
   222     return iPluginDisplayOrder;
       
   223 }
       
   224 
       
   225 //=============================================================================
       
   226 EXPORT_C TInt & CPluginInfo::PluginRID()
       
   227 {
       
   228     return iPluginRID;
       
   229 }
       
   230 
       
   231 //=============================================================================
       
   232 EXPORT_C const TInt & CPluginInfo::PluginRID() const
       
   233 {
       
   234     return iPluginRID;
       
   235 }
       
   236 
       
   237 //=============================================================================
       
   238 EXPORT_C HBufC *& CPluginInfo::PluginName()
       
   239 {
       
   240     return iPluginName;
       
   241 }
       
   242 
       
   243 //=============================================================================
       
   244 EXPORT_C const TDesC & CPluginInfo::PluginName() const
       
   245 {
       
   246     return *iPluginName;
       
   247 }
       
   248 //=============================================================================
       
   249 EXPORT_C HBufC *& CPluginInfo::IconFile()
       
   250 {
       
   251     return iIconFileName;
       
   252 }
       
   253 
       
   254 //=============================================================================
       
   255 EXPORT_C const TDesC & CPluginInfo::IconFile() const
       
   256 {
       
   257     return *iIconFileName;
       
   258 }
       
   259 
       
   260 //=============================================================================
       
   261 EXPORT_C CFbsBitmap *& CPluginInfo::Icon()
       
   262 {
       
   263     return iIcon;
       
   264 }
       
   265 
       
   266 //=============================================================================
       
   267 EXPORT_C const CFbsBitmap * CPluginInfo::Icon() const
       
   268 {
       
   269     return iIcon;
       
   270 }
       
   271 
       
   272 //=============================================================================
       
   273 EXPORT_C CFbsBitmap *& CPluginInfo::Mask()
       
   274 {
       
   275     return iMask;
       
   276 }
       
   277 
       
   278 //=============================================================================
       
   279 EXPORT_C const CFbsBitmap * CPluginInfo::Mask() const
       
   280 {
       
   281     return iMask;
       
   282 }
       
   283 
       
   284 //=============================================================================
       
   285 EXPORT_C CDesCArray & CPluginInfo::Parameters()
       
   286 {
       
   287 	return *iParams;
       
   288 }
       
   289 
       
   290 //=============================================================================
       
   291 EXPORT_C const CDesCArray & CPluginInfo::Parameters() const
       
   292 {
       
   293 	return *iParams;
       
   294 }
       
   295 
       
   296 //=============================================================================
       
   297 EXPORT_C CArrayFix<TInt> & CPluginInfo::Sk1Cmds()
       
   298 {
       
   299     return *iSk1Cmds;
       
   300 }
       
   301 
       
   302 //=============================================================================
       
   303 EXPORT_C const CArrayFix<TInt> & CPluginInfo::Sk1Cmds() const
       
   304 {
       
   305     return *iSk1Cmds;
       
   306 }
       
   307 
       
   308 //=============================================================================
       
   309 EXPORT_C CDesCArray & CPluginInfo::Sk1Texts()
       
   310 {
       
   311     return *iSk1Texts;
       
   312 }
       
   313 
       
   314 //=============================================================================
       
   315 EXPORT_C const CDesCArray & CPluginInfo::Sk1Texts() const
       
   316 {
       
   317     return *iSk1Texts;
       
   318 }
       
   319 
       
   320 //=============================================================================
       
   321 EXPORT_C CArrayFix<TInt> & CPluginInfo::Sk2Cmds()
       
   322 {
       
   323     return *iSk2Cmds;
       
   324 }
       
   325 
       
   326 //=============================================================================
       
   327 EXPORT_C const CArrayFix<TInt> & CPluginInfo::Sk2Cmds() const
       
   328 {
       
   329     return *iSk2Cmds;
       
   330 }
       
   331 
       
   332 //=============================================================================
       
   333 EXPORT_C CDesCArray & CPluginInfo::Sk2Texts()
       
   334 {
       
   335     return *iSk2Texts;
       
   336 }
       
   337 
       
   338 //=============================================================================
       
   339 EXPORT_C const CDesCArray & CPluginInfo::Sk2Texts() const
       
   340 {
       
   341     return *iSk2Texts;
       
   342 }
       
   343 
       
   344 //=============================================================================
       
   345 EXPORT_C CArrayFix<TInt> & CPluginInfo::MSKCmds()
       
   346 {
       
   347     return *iMSKCmds;
       
   348 }
       
   349 
       
   350 //=============================================================================
       
   351 EXPORT_C const CArrayFix<TInt> & CPluginInfo::MSKCmds() const
       
   352 {
       
   353     return *iMSKCmds;
       
   354 }
       
   355 
       
   356 //=============================================================================
       
   357 EXPORT_C CDesCArray & CPluginInfo::MSKTexts()
       
   358 {
       
   359     return *iMSKTexts;
       
   360 }
       
   361 
       
   362 //=============================================================================
       
   363 EXPORT_C const CDesCArray & CPluginInfo::MSKTexts() const
       
   364 {
       
   365     return *iMSKTexts;
       
   366 }
       
   367 //=============================================================================
       
   368 EXPORT_C CMenuItemArray & CPluginInfo::MenuItems()
       
   369 {
       
   370     return *iMenuItems;
       
   371 }
       
   372 
       
   373 //=============================================================================
       
   374 EXPORT_C const CMenuItemArray & CPluginInfo::MenuItems() const
       
   375 {
       
   376     return *iMenuItems;
       
   377 }
       
   378 
       
   379 //=============================================================================
       
   380 EXPORT_C void CPluginInfo::ExternalizeL ( RWriteStream& aStream ) const
       
   381 {
       
   382     TInt i = 0;
       
   383 
       
   384     // Current UI language
       
   385     TLanguage lang = User::Language();
       
   386     aStream.WriteInt32L (lang);
       
   387 
       
   388     // Editor version (from EditorVersion.h)
       
   389     aStream.WriteInt32L (my_version_major); 
       
   390     aStream.WriteInt32L (my_version_minor);
       
   391     aStream.WriteInt32L (my_version_build);
       
   392 
       
   393     // HBufC * iPluginDllName
       
   394     if ( iPluginDllName )
       
   395         {
       
   396         TPtr pluginDllNamePtr = iPluginDllName->Des();
       
   397         aStream.WriteInt32L (pluginDllNamePtr.Length());
       
   398         aStream << pluginDllNamePtr;            
       
   399         }
       
   400 	
       
   401     // TUid iUID2
       
   402     aStream << iUID2;
       
   403 
       
   404     // TUid iUID3
       
   405     aStream << iUID3;
       
   406 
       
   407     // TInt iPluginUiType
       
   408     aStream.WriteInt32L( iPluginUiType );
       
   409 
       
   410     // TInt iPluginFilterType
       
   411     aStream.WriteInt32L( iPluginFilterType );
       
   412 
       
   413     // TInt iScope
       
   414     aStream.WriteInt32L( iScope );
       
   415 
       
   416     //TInt iPluginDisplayOrder
       
   417     aStream.WriteInt32L( iPluginDisplayOrder );
       
   418 
       
   419     // TInt iPluginRID
       
   420     aStream.WriteInt32L( iPluginRID );
       
   421 
       
   422     // HBufC * iPluginName
       
   423     if ( iPluginName )
       
   424         {
       
   425         TPtr pluginNamePtr = iPluginName->Des();
       
   426         aStream.WriteInt32L (pluginNamePtr.Length());
       
   427         aStream << pluginNamePtr;            
       
   428         }
       
   429 
       
   430     // HBufC * iIconFileName
       
   431     if ( iIconFileName )
       
   432         {
       
   433         TPtr iconFileNamePtr = iIconFileName->Des();
       
   434         aStream.WriteInt32L (iconFileNamePtr.Length());
       
   435         aStream << iconFileNamePtr;            
       
   436         }
       
   437 	
       
   438     // CDesCArray * iParams
       
   439     TInt paramCount = iParams->MdcaCount();
       
   440     aStream.WriteInt32L( paramCount );
       
   441     for ( i=0; i<paramCount; i++ )
       
   442     {
       
   443         TPtrC des = iParams->MdcaPoint(i);
       
   444         aStream.WriteInt32L( des.Length() );
       
   445         aStream << des;
       
   446     }
       
   447 
       
   448     // CArrayFix<TInt> * iSk1Cmds
       
   449     TInt sk1CmdCount = iSk1Cmds->Count();
       
   450     aStream.WriteInt32L( sk1CmdCount );
       
   451     for ( i=0; i<sk1CmdCount; i++ )
       
   452     {
       
   453         aStream.WriteInt32L( iSk1Cmds->At(i) );
       
   454     }
       
   455 
       
   456     // CDesCArray * iSk1Texts
       
   457     TInt sk1TextCount = iSk1Texts->MdcaCount();
       
   458     aStream.WriteInt32L( sk1TextCount );
       
   459     for ( i=0; i<sk1TextCount; i++ )
       
   460     {
       
   461         TPtrC des = iSk1Texts->MdcaPoint(i);
       
   462         aStream.WriteInt32L( des.Length() );
       
   463         aStream << des;
       
   464     }
       
   465 
       
   466     // CArrayFix<TInt> * iSk2Cmds
       
   467     TInt sk2CmdCount = iSk2Cmds->Count();
       
   468     aStream.WriteInt32L( sk2CmdCount );
       
   469     for ( i=0; i<sk2CmdCount; i++ )
       
   470     {
       
   471         aStream.WriteInt32L( iSk2Cmds->At(i) );
       
   472     }
       
   473 
       
   474     // CDesCArray * iSk2Texts
       
   475     TInt sk2TextCount = iSk2Texts->MdcaCount();
       
   476     aStream.WriteInt32L( sk2TextCount );
       
   477     for ( i=0; i<sk2TextCount; i++ )
       
   478     {
       
   479         TPtrC des = iSk2Texts->MdcaPoint(i);
       
   480         aStream.WriteInt32L( des.Length() );
       
   481         aStream << des;
       
   482     }
       
   483     
       
   484     // CArrayFix<TInt> * iMSKCmds
       
   485     TInt mskCmdCount = iMSKCmds->Count();
       
   486     aStream.WriteInt32L( mskCmdCount );
       
   487     for ( i=0; i<mskCmdCount; i++ )
       
   488     {
       
   489         aStream.WriteInt32L( iMSKCmds->At(i) );
       
   490     }
       
   491 
       
   492     // CDesCArray * iMSKTexts
       
   493     TInt mskTextCount = iMSKTexts->MdcaCount();
       
   494     aStream.WriteInt32L( mskTextCount );
       
   495     for ( i=0; i<mskTextCount; i++ )
       
   496     {
       
   497         TPtrC des = iMSKTexts->MdcaPoint(i);
       
   498         aStream.WriteInt32L( des.Length() );
       
   499         aStream << des;
       
   500     }
       
   501     
       
   502     // CMenuItemArray * iMenuItems
       
   503     TInt menuItemCount = iMenuItems->Count();
       
   504     aStream.WriteInt32L( menuItemCount );
       
   505     for ( i=0; i<menuItemCount; i++ )
       
   506     {
       
   507         CEikMenuPaneItem::SData& item = iMenuItems->At(i);
       
   508 
       
   509         // TInt iCommandId;
       
   510         aStream.WriteInt32L( item.iCommandId );
       
   511         // TInt iCascadeId;
       
   512         aStream.WriteInt32L( item.iCascadeId );
       
   513         // TInt iFlags;
       
   514         aStream.WriteInt32L( item.iFlags );
       
   515         // TBuf<ENominalTextLength> iText;
       
   516         aStream << item.iText;
       
   517         // TBuf<1> iExtraText;
       
   518         aStream << item.iText;
       
   519     }
       
   520 }
       
   521 
       
   522 //=============================================================================
       
   523 EXPORT_C void CPluginInfo::InternalizeL ( RReadStream& aStream )
       
   524 {
       
   525     TInt i = 0;
       
   526 
       
   527     // Check that the current UI language is the same as stored
       
   528     // in the ini file. If not, reject the stored information.
       
   529     TLanguage storedLang = (TLanguage) aStream.ReadInt32L();
       
   530     if (storedLang != User::Language())
       
   531     {
       
   532         User::Leave (KErrCorrupt);
       
   533     }
       
   534 
       
   535     // If the editor version has changed, also reject the stored data.
       
   536     TInt major = aStream.ReadInt32L(); 
       
   537     TInt minor = aStream.ReadInt32L();
       
   538     TInt build = aStream.ReadInt32L();
       
   539     if (major != my_version_major ||
       
   540         minor != my_version_minor ||
       
   541         build != my_version_build 
       
   542         )
       
   543     {
       
   544         User::Leave (KErrCorrupt);
       
   545     }
       
   546 
       
   547     // HBufC * iPluginDllName
       
   548     TInt pluginDllNameLength = aStream.ReadInt32L();
       
   549     iPluginDllName = HBufC::NewL(pluginDllNameLength);
       
   550     TPtr pluginDllNamePtr = iPluginDllName->Des();
       
   551     aStream >> pluginDllNamePtr;
       
   552 
       
   553     // TUid iUID2
       
   554     aStream >> iUID2;
       
   555 
       
   556     // TUid iUID3
       
   557     aStream >> iUID3;
       
   558 
       
   559     // TInt iPluginUiType
       
   560     iPluginUiType = aStream.ReadInt32L();
       
   561 
       
   562     // TInt iPluginFilterType
       
   563     iPluginFilterType = aStream.ReadInt32L();
       
   564 
       
   565     // TInt iScope
       
   566     iScope = aStream.ReadInt32L();
       
   567 
       
   568     // TInt iPluginDisplayOrder
       
   569     iPluginDisplayOrder = aStream.ReadInt32L();
       
   570 
       
   571     // TInt iPluginRID
       
   572     iPluginRID = aStream.ReadInt32L();
       
   573 
       
   574     // HBufC * iPluginName
       
   575     TInt pluginNameLength = aStream.ReadInt32L();
       
   576     iPluginName = HBufC::NewL(pluginNameLength);
       
   577     TPtr pluginNamePtr = iPluginName->Des();
       
   578     aStream >> pluginNamePtr;
       
   579 
       
   580     // HBufC * iIconFileName
       
   581     TInt iconFileNameLength = aStream.ReadInt32L();
       
   582     iIconFileName = HBufC::NewL(iconFileNameLength);
       
   583     TPtr iconFileNamePtr = iIconFileName->Des();
       
   584     aStream >> iconFileNamePtr;
       
   585 
       
   586     // CDesCArray *	iParams
       
   587     TInt paramCount = aStream.ReadInt32L();
       
   588     for ( i=0; i<paramCount; i++ )
       
   589     {
       
   590         TInt paramLength = aStream.ReadInt32L();
       
   591         HBufC* paramBuf = HBufC::NewLC( paramLength );
       
   592         TPtr paramPtr = paramBuf->Des();
       
   593         aStream >> paramPtr;
       
   594         iParams->AppendL( paramPtr );
       
   595         CleanupStack::PopAndDestroy( paramBuf );
       
   596     }
       
   597 
       
   598     // CArrayFix<TInt> * iSk1Cmds;
       
   599     TInt sk1CmdCount = aStream.ReadInt32L();
       
   600     for ( i=0; i<sk1CmdCount; i++ )
       
   601     {
       
   602         TInt cmd = aStream.ReadInt32L();
       
   603         iSk1Cmds->AppendL( cmd );
       
   604     }
       
   605 
       
   606     // CDesCArray * iSk1Texts;
       
   607     TInt sk1TextCount = aStream.ReadInt32L();
       
   608     for ( i=0; i<sk1TextCount; i++ )
       
   609     {
       
   610         TInt sk1TextLength = aStream.ReadInt32L();
       
   611         HBufC* sk1TextBuf = HBufC::NewLC( sk1TextLength );
       
   612         TPtr sk1TextPtr = sk1TextBuf->Des();
       
   613         aStream >> sk1TextPtr;
       
   614         iSk1Texts->AppendL( sk1TextPtr );
       
   615         CleanupStack::PopAndDestroy( sk1TextBuf );
       
   616     }
       
   617 
       
   618     // CArrayFix<TInt> * iSk2Cmds;
       
   619     TInt sk2CmdCount = aStream.ReadInt32L();
       
   620     for ( i=0; i<sk2CmdCount; i++ )
       
   621     {
       
   622         TInt cmd = aStream.ReadInt32L();
       
   623         iSk2Cmds->AppendL( cmd );
       
   624     }
       
   625 
       
   626     // CDesCArray * iSk2Texts;
       
   627     TInt sk2TextCount = aStream.ReadInt32L();
       
   628     for ( i=0; i<sk2TextCount; i++ )
       
   629     {
       
   630         TInt sk2TextLength = aStream.ReadInt32L();
       
   631         HBufC* sk2TextBuf = HBufC::NewLC( sk2TextLength );
       
   632         TPtr sk2TextPtr = sk2TextBuf->Des();
       
   633         aStream >> sk2TextPtr;
       
   634         iSk2Texts->AppendL( sk2TextPtr );
       
   635         CleanupStack::PopAndDestroy( sk2TextBuf );
       
   636     }
       
   637     
       
   638     // CArrayFix<TInt> * iMSKCmds;
       
   639     TInt mskCmdCount = aStream.ReadInt32L();
       
   640     for ( i=0; i<mskCmdCount; i++ )
       
   641     {
       
   642         TInt cmd = aStream.ReadInt32L();
       
   643         iMSKCmds->AppendL( cmd );
       
   644     }
       
   645 
       
   646     // CDesCArray * iMSKTexts;
       
   647     TInt mskTextCount = aStream.ReadInt32L();
       
   648     for ( i=0; i<mskTextCount; i++ )
       
   649     {
       
   650         TInt mskTextLength = aStream.ReadInt32L();
       
   651         HBufC* mskTextBuf = HBufC::NewLC( mskTextLength );
       
   652         TPtr mskTextPtr = mskTextBuf->Des();
       
   653         aStream >> mskTextPtr;
       
   654         iMSKTexts->AppendL( mskTextPtr );
       
   655         CleanupStack::PopAndDestroy( mskTextBuf );
       
   656     }
       
   657     
       
   658     // CMenuItemArray * iMenuItems;
       
   659     TInt menuItemCount = aStream.ReadInt32L();
       
   660     for ( i=0; i<menuItemCount; i++ )
       
   661     {
       
   662         CEikMenuPaneItem::SData item;
       
   663 
       
   664         // TInt iCommandId;
       
   665         item.iCommandId = aStream.ReadInt32L();
       
   666         // TInt iCascadeId;
       
   667         item.iCascadeId = aStream.ReadInt32L();
       
   668         // TInt iFlags;
       
   669         item.iFlags = aStream.ReadInt32L();
       
   670         // TBuf<ENominalTextLength> iText;
       
   671         aStream >> item.iText;
       
   672         // TBuf<1> iExtraText;
       
   673         aStream >> item.iText;
       
   674 
       
   675         iMenuItems->AppendL( item );
       
   676     }
       
   677 }
       
   678 
       
   679 //=============================================================================
       
   680 void CPluginInfo::ConstructL()
       
   681 {
       
   682 	iParams = new (ELeave) CDesCArraySeg(16);
       
   683 	iSk1Cmds= new (ELeave) CArrayFixSeg<TInt>(4);
       
   684 	iSk1Texts = new (ELeave) CDesCArraySeg(4);
       
   685 	iSk2Cmds= new (ELeave) CArrayFixSeg<TInt>(4);
       
   686 	iSk2Texts = new (ELeave) CDesCArraySeg(4);
       
   687 	iMSKCmds= new (ELeave) CArrayFixSeg<TInt>(4);
       
   688 	iMSKTexts = new (ELeave) CDesCArraySeg(4);
       
   689     iMenuItems = new (ELeave) CMenuItemArray (8);
       
   690 }
       
   691 
       
   692 //=============================================================================
       
   693 CPluginInfo::CPluginInfo ()
       
   694 {
       
   695 
       
   696 }
       
   697 
       
   698 // End of File