menucontentsrv/srvsrc/menusrveng.cpp
branchRCL_3
changeset 78 1b207dd38b72
parent 0 79c6a41cd166
child 82 ace62b58f4b2
equal deleted inserted replaced
74:edd621764147 78:1b207dd38b72
    92 // ---------------------------------------------------------
    92 // ---------------------------------------------------------
    93 //
    93 //
    94 CMenuSrvEng::~CMenuSrvEng()
    94 CMenuSrvEng::~CMenuSrvEng()
    95     {
    95     {
    96     __ASSERT_DEBUG( !iSessions.Count(), User::Invariant() );
    96     __ASSERT_DEBUG( !iSessions.Count(), User::Invariant() );
       
    97     //TODO iCMenuSrvEngUtils
    97     delete iGetlistHandler;
    98     delete iGetlistHandler;
    98     delete iDrmHander;
    99     delete iDrmHander;
    99     delete iChildrenHandler;
   100     delete iChildrenHandler;
   100     delete iTimedClose;
   101     delete iTimedClose;
       
   102     delete iCacheHandler;
   101     delete iCMenuSrvEngUtils;
   103     delete iCMenuSrvEngUtils;
   102     iSessions.Close();
   104     iSessions.Close();
   103     iContentName.Close();
   105     iContentName.Close();
   104     delete iAppScanner;
   106     delete iAppScanner;
   105     delete iFolderNotifier;
   107     delete iFolderNotifier;
   106     delete iMcsSatMonitor;
   108     delete iMcsSatMonitor;
   107     delete iRunningAppsHandler;
   109     delete iRunningAppsHandler;
   108     delete iCacheHandler;
       
   109     delete iSuiteHandler;
   110     delete iSuiteHandler;
   110     delete iEng;
   111     delete iEng;
   111     iMenuSrv.EngineDeleted();
   112     iMenuSrv.EngineDeleted();
   112     }
   113     }
   113 
   114 
   128     if ( !aContentName.Length() )
   129     if ( !aContentName.Length() )
   129         {
   130         {
   130         // A name is required - only dead engines have empty name.
   131         // A name is required - only dead engines have empty name.
   131         User::Leave( KErrArgument );
   132         User::Leave( KErrArgument );
   132         }
   133         }
   133     
   134 
   134     iContentName.CreateL( aContentName );
   135     iContentName.CreateL( aContentName );
   135     iTimedClose = CTimeout::NewL
   136     iTimedClose = CTimeout::NewL
   136         ( CActive::EPriorityStandard, TCallBack( CloseSrvEng, (TAny*)this ) );
   137         ( CActive::EPriorityStandard, TCallBack( CloseSrvEng, (TAny*)this ) );
   137     iEng = CMenuEng::NewL( iContentName, *this );
   138     iEng = CMenuEng::NewL( iContentName, *this );
   138     if (iContentName.Length())
   139     if ( iContentName.Length() )
   139         {
   140         {
       
   141         iCMenuSrvEngUtils = CMenuSrvEngUtils::NewL( *iEng );
       
   142 
   140         iCacheHandler = CMcsCacheHandler::NewL( *iEng, *iCMenuSrvEngUtils );
   143         iCacheHandler = CMcsCacheHandler::NewL( *iEng, *iCMenuSrvEngUtils );
   141         
   144 
   142         iMcsSatMonitor = CMcsSatMonitor::NewL( *iEng );
   145         iMcsSatMonitor = CMcsSatMonitor::NewL( *iEng );
   143         
       
   144         iCMenuSrvEngUtils = CMenuSrvEngUtils::NewL( *iEng );
       
   145     #ifndef __TEST_DISABLE_APPSCAN
   146     #ifndef __TEST_DISABLE_APPSCAN
   146         iAppScanner = CMenuSrvAppScanner::NewL( *iEng ); // Start automatic update.
   147         // Start automatic update.
   147         iFolderNotifier =  CMenuSrvFolderCrNotifier::NewL( *iEng ); // Start automatic update.
   148         iAppScanner = CMenuSrvAppScanner::NewL( *iEng, *iCMenuSrvEngUtils );
       
   149         // Start automatic update.
       
   150         iFolderNotifier =  CMenuSrvFolderCrNotifier::NewL( *iEng );
   148     #endif
   151     #endif
   149         
   152         iRunningAppsHandler = CMcsRunningAppsHandler::NewL(
   150         iRunningAppsHandler = CMcsRunningAppsHandler::NewL( *iEng, 
   153                 *iEng, *iCacheHandler );
   151         		*iCacheHandler );
   154 
   152         
   155         iDrmHander = CMcsDrmHandler::NewL(
   153         iDrmHander = CMcsDrmHandler::NewL( 
   156                 *this, *iCMenuSrvEngUtils, *iCacheHandler );
   154             *this,
   157 
   155             *iCMenuSrvEngUtils, 
   158         iChildrenHandler = CMcsChildrenHandler::NewL( *this, *iCacheHandler);
   156             *iCacheHandler );
       
   157         iChildrenHandler = CMcsChildrenHandler::NewL(
       
   158             *this,
       
   159             *iCacheHandler);
       
   160         iSuiteHandler = CMcsSuiteHandler::NewL(*iEng, iContentName);
   159         iSuiteHandler = CMcsSuiteHandler::NewL(*iEng, iContentName);
   161         
   160 
   162         iTimedClose->Cancel();
   161         iTimedClose->Cancel();
   163         iTimedClose->After( TTimeIntervalMicroSeconds32( KMenuSrvExitDelay ) );
   162         iTimedClose->After( TTimeIntervalMicroSeconds32( KMenuSrvExitDelay ) );
   164         }
   163         }
   165     }
   164     }
   166 
   165 
   221     // expect any session to remove itself during this.
   220     // expect any session to remove itself during this.
   222     for ( TInt i = 0; i < iSessions.Count(); i++ )
   221     for ( TInt i = 0; i < iSessions.Count(); i++ )
   223         {
   222         {
   224         iSessions[i]->EngineEvents( aFolder, aEvents );
   223         iSessions[i]->EngineEvents( aFolder, aEvents );
   225         }
   224         }
   226     if (iDrmHander) 
   225     if (iDrmHander)
   227         {
   226         {
   228         iDrmHander->EngineEvents( aFolder, aEvents );    
   227         iDrmHander->EngineEvents( aFolder, aEvents );
   229         }
   228         }
   230     if (iChildrenHandler)
   229     if (iChildrenHandler)
   231     	{
   230     	{
   232     	iChildrenHandler->EngineEvents( aFolder, aEvents );
   231     	iChildrenHandler->EngineEvents( aFolder, aEvents );
   233     	}
   232     	}
   234     if (iRunningAppsHandler)
   233     if (iRunningAppsHandler)
   235     	{
   234     	{
   236     	iRunningAppsHandler->EngineEvents( aFolder, aEvents );
   235     	iRunningAppsHandler->EngineEvents( aFolder, aEvents );
   237     	}    
   236     	}
   238     if( iCacheHandler && iCacheHandler->iAttrCache.Count() > 0 )
   237     if( iCacheHandler && iCacheHandler->iAttrCache.Count() > 0 )
   239         {
   238         {
   240         iCacheHandler->EngineEvents( aEvents );
   239         iCacheHandler->EngineEvents( aEvents );
   241         }
   240         }
   242     }
   241     }
   266     delete iRunningAppsHandler; iRunningAppsHandler = NULL;
   265     delete iRunningAppsHandler; iRunningAppsHandler = NULL;
   267     delete iAppScanner; iAppScanner = NULL;
   266     delete iAppScanner; iAppScanner = NULL;
   268     delete iFolderNotifier; iFolderNotifier = NULL;
   267     delete iFolderNotifier; iFolderNotifier = NULL;
   269     delete iSuiteHandler; iSuiteHandler = NULL;
   268     delete iSuiteHandler; iSuiteHandler = NULL;
   270     delete iEng; iEng = NULL;
   269     delete iEng; iEng = NULL;
   271     
   270 
   272     iContentName.Close();
   271     iContentName.Close();
   273     iTimedClose->Cancel();
   272     iTimedClose->Cancel();
   274     iTimedClose->After( TTimeIntervalMicroSeconds32( KMenuSrvExitDelay ) );
   273     iTimedClose->After( TTimeIntervalMicroSeconds32( KMenuSrvExitDelay ) );
   275     }
   274     }
   276 
   275 
   286 	}
   285 	}
   287 void CMenuSrvEng::GetAttributeListL(
   286 void CMenuSrvEng::GetAttributeListL(
   288 		  TInt aId,
   287 		  TInt aId,
   289 		  RArray<TPtrC>& aList )
   288 		  RArray<TPtrC>& aList )
   290     {
   289     {
   291 	  
   290 
   292     const CMenuEngObject& obj = iEng->ObjectL(aId);
   291     const CMenuEngObject& obj = iEng->ObjectL(aId);
   293     
   292 
   294     TPtrC name, value;
   293     TPtrC name, value;
   295     TBool localized;
   294     TBool localized;
   296     for ( TInt ndx = 0; obj.GetAttribute( ndx, name, value, localized ); ndx++ )
   295     for ( TInt ndx = 0; obj.GetAttribute( ndx, name, value, localized ); ndx++ )
   297         {
   296         {
   298         if( !( name.Compare( KMenuAttrIconFile ) == KErrNone
   297         if( !( name.Compare( KMenuAttrIconFile ) == KErrNone
   300             || name.Compare( KMenuAttrMaskId ) == KErrNone
   299             || name.Compare( KMenuAttrMaskId ) == KErrNone
   301             || name.Compare( KMenuAttrIconSkinMajorId ) == KErrNone
   300             || name.Compare( KMenuAttrIconSkinMajorId ) == KErrNone
   302             || name.Compare( KMenuAttrIconSkinMinorId ) == KErrNone ))
   301             || name.Compare( KMenuAttrIconSkinMinorId ) == KErrNone ))
   303             {
   302             {
   304             aList.AppendL(name);
   303             aList.AppendL(name);
   305             }  
   304             }
   306         }      
   305         }
   307 
   306 
   308     AppendExtendedAttrributesL( obj.Type() , aList );
   307     AppendExtendedAttrributesL( obj.Type() , aList );
   309     }
   308     }
   310 
   309 
   311 // ---------------------------------------------------------
   310 // ---------------------------------------------------------
   319 		 TBool& aAttrExists,
   318 		 TBool& aAttrExists,
   320 		 TDes& aAttrVal )
   319 		 TDes& aAttrVal )
   321     {
   320     {
   322     TBool dummy;
   321     TBool dummy;
   323     TPtrC val(KNullDesC);
   322     TPtrC val(KNullDesC);
   324     
   323 
   325     aAttrExists = iEng->ObjectL(aId).FindAttribute( aAttrName, val, dummy);
   324     aAttrExists = iEng->ObjectL(aId).FindAttribute( aAttrName, val, dummy);
   326     
   325 
   327     if( !aAttrExists )
   326     if( !aAttrExists )
   328         {
   327         {
   329         aAttrExists = iCacheHandler->iAttrCache.Find( aId, aAttrName, aAttrVal );
   328         aAttrExists = iCacheHandler->iAttrCache.Find( aId, aAttrName, aAttrVal );
   330         }
   329         }
   331     
   330 
   332     if ( aAttrExists && val!=KNullDesC() )
   331     if ( aAttrExists && val!=KNullDesC() )
   333         {
   332         {
   334         aAttrVal = val;
   333         aAttrVal = val;
   335         }
   334         }
   336     else if( !aAttrExists )
   335     else if( !aAttrExists )
   340     }
   339     }
   341 
   340 
   342 // ---------------------------------------------------------
   341 // ---------------------------------------------------------
   343 // CMenuSrvEng::InstalledSuiteExist
   342 // CMenuSrvEng::InstalledSuiteExist
   344 // ---------------------------------------------------------
   343 // ---------------------------------------------------------
   345 // 
   344 //
   346 TBool CMenuSrvEng::InstalledSuiteExist(const TDesC& aSuiteName)
   345 TBool CMenuSrvEng::InstalledSuiteExist(const TDesC& aSuiteName)
   347 	{
   346 	{
   348 	return iSuiteHandler->HaveSuite(aSuiteName);
   347 	return iSuiteHandler->HaveSuite(aSuiteName);
   349 	}
   348 	}
   350 
   349 
   351 // ---------------------------------------------------------
   350 // ---------------------------------------------------------
   352 // CMenuSrvEng::GetSuiteAttributeL
   351 // CMenuSrvEng::GetSuiteAttributeL
   353 // ---------------------------------------------------------
   352 // ---------------------------------------------------------
   354 // 
   353 //
   355 void CMenuSrvEng::GetSuiteAttribute( const TDesC& aSuiteName, const TDesC& aAttrName, 
   354 void CMenuSrvEng::GetSuiteAttribute( const TDesC& aSuiteName, const TDesC& aAttrName,
   356            TBool& aAttrExists, TDes& aAttrVal )
   355            TBool& aAttrExists, TDes& aAttrVal )
   357 	{
   356 	{
   358 	iSuiteHandler->GetAttribute(aSuiteName, aAttrName, 
   357 	iSuiteHandler->GetAttribute(aSuiteName, aAttrName,
   359 			aAttrExists, aAttrVal);
   358 			aAttrExists, aAttrVal);
   360 	}
   359 	}
   361 
   360 
   362 // ---------------------------------------------------------
   361 // ---------------------------------------------------------
   363 // CMenuSrvEng::GetRunningAppsL()
   362 // CMenuSrvEng::GetRunningAppsL()
   364 // ---------------------------------------------------------
   363 // ---------------------------------------------------------
   365 // 
   364 //
   366 void CMenuSrvEng::GetRunningAppsL( RArray<TUid>& aArray )
   365 void CMenuSrvEng::GetRunningAppsL( RArray<TUid>& aArray )
   367     {
   366     {
   368 	iRunningAppsHandler->GetRunningAppsL( aArray );
   367 	iRunningAppsHandler->GetRunningAppsL( aArray );
   369 	}
   368 	}
   370 
   369 
   371 // ---------------------------------------------------------
   370 // ---------------------------------------------------------
   372 // CMenuSrvEng::GetRunningAppsL()
   371 // CMenuSrvEng::GetRunningAppsL()
   373 // ---------------------------------------------------------
   372 // ---------------------------------------------------------
   374 // 
   373 //
   375 void CMenuSrvEng::GetExtendedAttributesL(TInt aId, 
   374 void CMenuSrvEng::GetExtendedAttributesL(TInt aId,
   376     const TDesC& aAttrName, TBool& aAttrExists,
   375     const TDesC& aAttrName, TBool& aAttrExists,
   377     TDes& aAttrVal )
   376     TDes& aAttrVal )
   378     {
   377     {
   379     TBool captionInfo(aAttrName.Compare( KMenuAttrShortName ) == KErrNone ||
   378     TBool captionInfo(aAttrName.Compare( KMenuAttrShortName ) == KErrNone ||
   380     aAttrName.Compare( KMenuAttrLongName ) == KErrNone ||
   379     aAttrName.Compare( KMenuAttrLongName ) == KErrNone ||
   381     aAttrName.Compare( KMenuAttrTitleName ) == KErrNone );
   380     aAttrName.Compare( KMenuAttrTitleName ) == KErrNone );
   382     
   381 
   383     TBool addToCache( ETrue );
   382     TBool addToCache( ETrue );
   384     if ( captionInfo )
   383     if ( captionInfo )
   385         {
   384         {
   386         CaptionInfoL( aId, aAttrName, aAttrExists, aAttrVal );
   385         CaptionInfoL( aId, aAttrName, aAttrExists, aAttrVal );
   387         addToCache = EFalse;
   386         addToCache = EFalse;
   418 // ---------------------------------------------------------
   417 // ---------------------------------------------------------
   419 //
   418 //
   420 void CMenuSrvEng::ApplicationNativeAttributeL(
   419 void CMenuSrvEng::ApplicationNativeAttributeL(
   421 		TInt aId, TBool & aAttrExists, TDes & aAttrVal )
   420 		TInt aId, TBool & aAttrExists, TDes & aAttrVal )
   422 	{
   421 	{
   423 	const CMenuEngObject & obj = iEng->ObjectL(aId);
   422 	const CMenuEngObject & aEngObj = iEng->ObjectL(aId);
   424 	iCMenuSrvEngUtils->IsNative(obj, aAttrExists, aAttrVal);
   423 
       
   424     aAttrExists = EFalse;
       
   425     if( aEngObj.Type().CompareF( KMenuTypeApp ) == KErrNone )
       
   426         {
       
   427         TInt err;
       
   428         TUid uid;
       
   429         err = iCMenuSrvEngUtils->GetAppUid( aEngObj, uid );
       
   430         if( err == KErrNone )
       
   431             {
       
   432             TBool native(EFalse);
       
   433             err = iCMenuSrvEngUtils->IsNativeL( uid, native );
       
   434             if( !err )
       
   435                 {
       
   436                 aAttrExists = ETrue;
       
   437                 if( native )
       
   438                     {
       
   439                     aAttrVal = KMenuTrue();
       
   440                     }
       
   441                 else
       
   442                     {
       
   443                     aAttrVal = KMenuFalse();
       
   444                     }
       
   445                 }
       
   446             }
       
   447         }
       
   448     if( !aAttrExists )
       
   449         {
       
   450         aAttrVal = KNullDesC();
       
   451         }
   425 	}
   452 	}
   426 
   453 
   427 // ---------------------------------------------------------
   454 // ---------------------------------------------------------
   428 // CMenuSrvEng::AddToCacheL
   455 // CMenuSrvEng::AddToCacheL
   429 // ---------------------------------------------------------
   456 // ---------------------------------------------------------
   435     attr->SetValueL( aAttrVal ); // Takes ownership.
   462     attr->SetValueL( aAttrVal ); // Takes ownership.
   436     attr->SetId( aId ); // New in cache -> not changed.
   463     attr->SetId( aId ); // New in cache -> not changed.
   437     iCacheHandler->iAttrCache.AppendL( attr );
   464     iCacheHandler->iAttrCache.AppendL( attr );
   438     CleanupStack::Pop( attr );
   465     CleanupStack::Pop( attr );
   439     }
   466     }
   440  
   467 
   441 // ---------------------------------------------------------
   468 // ---------------------------------------------------------
   442 // CMenuSrvEng::CaptionInfoL
   469 // CMenuSrvEng::CaptionInfoL
   443 // Functions only for KMenuTypeApp type.
   470 // Functions only for KMenuTypeApp type.
   444 // ---------------------------------------------------------
   471 // ---------------------------------------------------------
   445 //
   472 //
   446 void CMenuSrvEng::CaptionInfoL( TInt aId, const TDesC& aAttrName, 
   473 void CMenuSrvEng::CaptionInfoL( TInt aId, const TDesC& aAttrName,
   447     TBool& aExists, TDes& aAttrVal )
   474     TBool& aExists, TDes& aAttrVal )
   448     {
   475     {
   449     const CMenuEngObject& obj = iEng->ObjectL(aId);
   476     const CMenuEngObject& obj = iEng->ObjectL(aId);
   450     if ( obj.Type().Compare( KMenuTypeFolder ) == KErrNone )
   477     if ( obj.Type().Compare( KMenuTypeFolder ) == KErrNone )
   451         {
   478         {
   452         TBool localized;
   479         TBool localized;
   453         TPtrC attrvalue; 
   480         TPtrC attrvalue;
   454         TBool attrExists = obj.FindAttribute( KMenuAttrAppGroupName, attrvalue, localized );
   481         TBool attrExists = obj.FindAttribute( KMenuAttrAppGroupName, attrvalue, localized );
   455         if ( attrExists )
   482         if ( attrExists )
   456             {
   483             {
   457             aExists = ETrue;
   484             aExists = ETrue;
   458             aAttrVal = attrvalue;
   485             aAttrVal = attrvalue;
   527  // ---------------------------------------------------------
   554  // ---------------------------------------------------------
   528  //
   555  //
   529  TPtrC CMenuSrvEng::AppCaptionInfoL( const CMenuEngObject& aEngObj,
   556  TPtrC CMenuSrvEng::AppCaptionInfoL( const CMenuEngObject& aEngObj,
   530      const TDesC& aAttrName, TBool& aExists )
   557      const TDesC& aAttrName, TBool& aExists )
   531      {
   558      {
   532      TApaAppInfo info; 
   559      TApaAppInfo info;
   533      TPtrC val( KNullDesC );
   560      TPtrC val( KNullDesC );
   534      if( KErrNone == iCMenuSrvEngUtils->GetAppInfo( aEngObj, info ) )
   561      if( KErrNone == iCMenuSrvEngUtils->GetAppInfoL( aEngObj, info ) )
   535          {
   562          {
   536          aExists = ETrue;
   563          aExists = ETrue;
   537          if( aAttrName.Compare( KMenuAttrTitleName ) == KErrNone ||
   564          if( aAttrName.Compare( KMenuAttrTitleName ) == KErrNone ||
   538              aAttrName.Compare( KMenuAttrShortName ) == KErrNone )
   565              aAttrName.Compare( KMenuAttrShortName ) == KErrNone )
   539              {
   566              {
   552          {
   579          {
   553          aExists = EFalse;
   580          aExists = EFalse;
   554          }
   581          }
   555      return val;
   582      return val;
   556      }
   583      }
   557  
   584 
   558  // ---------------------------------------------------------
   585  // ---------------------------------------------------------
   559  // CMenuSrvEng::FolderChildrenCountL
   586  // CMenuSrvEng::FolderChildrenCountL
   560  // ---------------------------------------------------------
   587  // ---------------------------------------------------------
   561  //
   588  //
   562  void CMenuSrvEng::FolderChildrenCountL( TInt aId, TBool& aExists, TDes& aAttrVal )
   589  void CMenuSrvEng::FolderChildrenCountL( TInt aId, TBool& aExists, TDes& aAttrVal )
   563 	 {
   590 	 {
   564 	 const CMenuEngObject& obj = iEng->ObjectL(aId);
   591 	 const CMenuEngObject& obj = iEng->ObjectL(aId);
   565 	 
   592 
   566 	 if( obj.Type().CompareF( KMenuTypeFolder ) == KErrNone )
   593 	 if( obj.Type().CompareF( KMenuTypeFolder ) == KErrNone )
   567 	     {
   594 	     {
   568 	     TUint32 childrenCount (0);
   595 	     TUint32 childrenCount (0);
   569 		 RArray<TMenuItem> childrenArray;
   596 		 RArray<TMenuItem> childrenArray;
   570 		 CleanupClosePushL( childrenArray );
   597 		 CleanupClosePushL( childrenArray );
   571 	     
   598 
   572 		 CMenuFilter* appFilter = CMenuFilter::NewLC();
   599 		 CMenuFilter* appFilter = CMenuFilter::NewLC();
   573 		 appFilter->SetFlags(0, TMenuItem::EMissing | TMenuItem::EHidden);
   600 		 appFilter->SetFlags(0, TMenuItem::EMissing | TMenuItem::EHidden);
   574 		 TMenuSrvObjectFilter engFilter( *appFilter );
   601 		 TMenuSrvObjectFilter engFilter( *appFilter );
   575 		 iEng->GetItemsL(childrenArray, aId, &engFilter, EFalse);
   602 		 iEng->GetItemsL(childrenArray, aId, &engFilter, EFalse);
   576 		 childrenCount = childrenArray.Count();
   603 		 childrenCount = childrenArray.Count();
   577 		 
   604 
   578 		 CleanupStack::PopAndDestroy( appFilter );
   605 		 CleanupStack::PopAndDestroy( appFilter );
   579 		 CleanupStack::PopAndDestroy( &childrenArray );
   606 		 CleanupStack::PopAndDestroy( &childrenArray );
   580 	     
   607 
   581          aAttrVal.Num(childrenCount, EDecimal);
   608          aAttrVal.Num(childrenCount, EDecimal);
   582          aExists = ETrue;
   609          aExists = ETrue;
   583 	     }
   610 	     }
   584 	 else
   611 	 else
   585 	     {
   612 	     {
   586 	     aAttrVal.Append(KNullDesC());
   613 	     aAttrVal.Append(KNullDesC());
   587 	     aExists = EFalse;
   614 	     aExists = EFalse;
   588 	     }
   615 	     }
   589 	 }
   616 	 }
   590  
   617 
   591  // ---------------------------------------------------------
   618  // ---------------------------------------------------------
   592  // CMenuSrvEngUtils::GetAppRunningL
   619  // CMenuSrvEngUtils::GetAppRunningL
   593  // ---------------------------------------------------------
   620  // ---------------------------------------------------------
   594  //
   621  //
   595  void CMenuSrvEng::GetAppRunningL( TInt aId, TBool& aExists, TDes& aAttrVal )
   622  void CMenuSrvEng::GetAppRunningL( TInt aId, TBool& aExists, TDes& aAttrVal )
   602 	 else
   629 	 else
   603 		 {
   630 		 {
   604 		 aAttrVal.Append(KNullDesC());
   631 		 aAttrVal.Append(KNullDesC());
   605 		 }
   632 		 }
   606 	 }
   633 	 }
   607  
   634 
   608  // ---------------------------------------------------------
   635  // ---------------------------------------------------------
   609  // CMenuSrvEng::GetChildrenCount
   636  // CMenuSrvEng::GetChildrenCount
   610  // ---------------------------------------------------------
   637  // ---------------------------------------------------------
   611  //
   638  //
   612  TUint CMenuSrvEng::GetChildrenCountL( TInt aId )
   639  TUint CMenuSrvEng::GetChildrenCountL( TInt aId )
   614 	 TBool attrExists (EFalse);
   641 	 TBool attrExists (EFalse);
   615 	 TUint count (0);
   642 	 TUint count (0);
   616 	 RBuf attrVal;
   643 	 RBuf attrVal;
   617 	 attrVal.CleanupClosePushL();
   644 	 attrVal.CleanupClosePushL();
   618 	 attrVal.CreateL(KMenuMaxAttrValueLen);
   645 	 attrVal.CreateL(KMenuMaxAttrValueLen);
   619 	 
   646 
   620 	 // Get folder children count
   647 	 // Get folder children count
   621 	 FolderChildrenCountL(aId, attrExists, attrVal);
   648 	 FolderChildrenCountL(aId, attrExists, attrVal);
   622 	 
   649 
   623 	 if (attrExists)
   650 	 if (attrExists)
   624 		 {
   651 		 {
   625 		 TLex lex(attrVal);
   652 		 TLex lex(attrVal);
   626 		 User::LeaveIfError( lex.Val(count) );
   653 		 User::LeaveIfError( lex.Val(count) );
   627 		 }
   654 		 }
   628 	 CleanupStack::PopAndDestroy( &attrVal );
   655 	 CleanupStack::PopAndDestroy( &attrVal );
   629 	 
   656 
   630 	 return count;
   657 	 return count;
   631 	 }
   658 	 }
   632  
   659 
   633  // ---------------------------------------------------------
   660  // ---------------------------------------------------------
   634  // CMenuSrvEng::GetlistSizeL
   661  // CMenuSrvEng::GetlistSizeL
   635  // ---------------------------------------------------------
   662  // ---------------------------------------------------------
   636  //
   663  //
   637  TInt CMenuSrvEng::GetListSizeL( const TDesC8& aSerializedInput )
   664  TInt CMenuSrvEng::GetListSizeL( const TDesC8& aSerializedInput )
   638 	 {
   665 	 {
   639 	 delete iGetlistHandler;
   666 	 delete iGetlistHandler;
   640 	 iGetlistHandler = NULL;
   667 	 iGetlistHandler = NULL;
   641 	 
   668 
   642 	 iGetlistHandler = CMcsGetlistHandler::NewL( *this );
   669 	 iGetlistHandler = CMcsGetlistHandler::NewL( *this );
   643 	 return iGetlistHandler->GetListSizeL( aSerializedInput );
   670 	 return iGetlistHandler->GetListSizeL( aSerializedInput );
   644 	 }
   671 	 }
   645  
   672 
   646  // ---------------------------------------------------------
   673  // ---------------------------------------------------------
   647  // CMenuSrvEng::CloseOutputBuffer
   674  // CMenuSrvEng::CloseOutputBuffer
   648  // ---------------------------------------------------------
   675  // ---------------------------------------------------------
   649  //
   676  //
   650  void CMenuSrvEng::CloseOutputBuffer()
   677  void CMenuSrvEng::CloseOutputBuffer()
   658  //
   685  //
   659  void CMenuSrvEng::CleanAttributeCache()
   686  void CMenuSrvEng::CleanAttributeCache()
   660 	 {
   687 	 {
   661 	 iCacheHandler->iAttrCache.ResetAndDestroy();
   688 	 iCacheHandler->iAttrCache.ResetAndDestroy();
   662 	 }
   689 	 }
   663  
   690 
   664  // ---------------------------------------------------------
   691  // ---------------------------------------------------------
   665  // CMenuSrvEng::GetlistSizeL
   692  // CMenuSrvEng::GetlistSizeL
   666  // ---------------------------------------------------------
   693  // ---------------------------------------------------------
   667  //
   694  //
   668  TPtrC8 CMenuSrvEng::GetListDataL( )
   695  TPtrC8 CMenuSrvEng::GetListDataL( )
   669 	 {
   696 	 {
   670 	 return iGetlistHandler->GetListDataL( );
   697 	 return iGetlistHandler->GetListDataL( );
   671 	 }
   698 	 }
   672  
   699 
   673  // ---------------------------------------------------------
   700  // ---------------------------------------------------------
   674  // CMenuSrvEng::AppendExtendedAttrributesL
   701  // CMenuSrvEng::AppendExtendedAttrributesL
   675  // ---------------------------------------------------------
   702  // ---------------------------------------------------------
   676  //
   703  //
   677  void CMenuSrvEng::AppendExtendedAttrributesL(
   704  void CMenuSrvEng::AppendExtendedAttrributesL(
   678  		const TDesC& aType,  
   705  		const TDesC& aType,
   679  		RArray<TPtrC>& aList )
   706  		RArray<TPtrC>& aList )
   680 	 {
   707 	 {
   681 	 
   708 
   682     if ( KErrNone == aType.Compare( KMenuTypeApp ) )
   709     if ( KErrNone == aType.Compare( KMenuTypeApp ) )
   683         {
   710         {
   684         if( KErrNotFound == aList.Find( KMenuAttrTitleName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   711         if( KErrNotFound == aList.Find( KMenuAttrTitleName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   685         	{
   712         	{
   686         	aList.AppendL( TPtrC( KMenuAttrTitleName ) );	
   713         	aList.AppendL( TPtrC( KMenuAttrTitleName ) );
   687         	}
   714         	}
   688         if( KErrNotFound == aList.Find( KMenuAttrShortName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   715         if( KErrNotFound == aList.Find( KMenuAttrShortName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   689         	{
   716         	{
   690         	aList.AppendL( TPtrC( KMenuAttrShortName ) );	
   717         	aList.AppendL( TPtrC( KMenuAttrShortName ) );
   691         	}
   718         	}
   692         if( KErrNotFound == aList.Find( KMenuAttrLongName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   719         if( KErrNotFound == aList.Find( KMenuAttrLongName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   693         	{
   720         	{
   694         	aList.AppendL( TPtrC( KMenuAttrLongName ) );	
   721         	aList.AppendL( TPtrC( KMenuAttrLongName ) );
   695         	}
   722         	}
   696         if( KErrNotFound == aList.Find( KMenuAttrDrmProtection(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   723         if( KErrNotFound == aList.Find( KMenuAttrDrmProtection(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   697         	{
   724         	{
   698         	aList.AppendL( TPtrC( KMenuAttrDrmProtection ) );	
   725         	aList.AppendL( TPtrC( KMenuAttrDrmProtection ) );
   699         	}
   726         	}
   700         }
   727         }
   701     else if ( KErrNone == aType.Compare( KMenuTypeFolder ) )
   728     else if ( KErrNone == aType.Compare( KMenuTypeFolder ) )
   702         {
   729         {
   703         if( KErrNotFound == aList.Find( KMenuAttrTitleName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   730         if( KErrNotFound == aList.Find( KMenuAttrTitleName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   704         	{
   731         	{
   705         	aList.AppendL( TPtrC( KMenuAttrTitleName ) );	
   732         	aList.AppendL( TPtrC( KMenuAttrTitleName ) );
   706         	}
   733         	}
   707         if( KErrNotFound == aList.Find( KMenuAttrShortName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   734         if( KErrNotFound == aList.Find( KMenuAttrShortName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   708         	{
   735         	{
   709         	aList.AppendL( TPtrC( KMenuAttrShortName ) );	
   736         	aList.AppendL( TPtrC( KMenuAttrShortName ) );
   710         	}
   737         	}
   711         if( KErrNotFound == aList.Find( KMenuAttrLongName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   738         if( KErrNotFound == aList.Find( KMenuAttrLongName(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   712         	{
   739         	{
   713         	aList.AppendL( TPtrC( KMenuAttrLongName ) );	
   740         	aList.AppendL( TPtrC( KMenuAttrLongName ) );
   714         	}
   741         	}
   715         if( KErrNotFound == aList.Find( KChildrenCount(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   742         if( KErrNotFound == aList.Find( KChildrenCount(), TIdentityRelation<TPtrC>( CmpAttrName )) )
   716         	{
   743         	{
   717         	aList.AppendL( TPtrC( KChildrenCount ) );	
   744         	aList.AppendL( TPtrC( KChildrenCount ) );
   718         	}
   745         	}
   719         }
   746         }
   720 	 }
   747 	 }
   721 
   748 
   722  
   749 
   723 //  End of File  
   750 //  End of File