menucontentsrv/engsrc/menuengobject.cpp
branchRCL_3
changeset 78 1b207dd38b72
parent 0 79c6a41cd166
equal deleted inserted replaced
74:edd621764147 78:1b207dd38b72
    79 
    79 
    80 // ---------------------------------------------------------
    80 // ---------------------------------------------------------
    81 // CMenuEngObject::CMenuEngObject
    81 // CMenuEngObject::CMenuEngObject
    82 // ---------------------------------------------------------
    82 // ---------------------------------------------------------
    83 //
    83 //
    84 CMenuEngObject::CMenuEngObject( CMenuEng& aEng ): iEng( aEng ), iNative( ETrue )
    84 CMenuEngObject::CMenuEngObject( CMenuEng& aEng ): iEng( aEng ),
       
    85         iAppType( ENoTypeApp )
    85     {
    86     {
    86     }
    87     }
    87 
    88 
    88 // ---------------------------------------------------------
    89 // ---------------------------------------------------------
    89 // CMenuEngObject::ConstructL
    90 // CMenuEngObject::ConstructL
   141 
   142 
   142 // ---------------------------------------------------------
   143 // ---------------------------------------------------------
   143 // CMenuEngObject::ParseHiddenFoldersL
   144 // CMenuEngObject::ParseHiddenFoldersL
   144 // ---------------------------------------------------------
   145 // ---------------------------------------------------------
   145 //
   146 //
   146 void CMenuEngObject::ParseHiddenFoldersL( 
   147 void CMenuEngObject::ParseHiddenFoldersL(
   147             const TDesC& aHiddenFolders, 
   148             const TDesC& aHiddenFolders,
   148             RArray<TPtrC>& aHiddenFoldersArray ) const
   149             RArray<TPtrC>& aHiddenFoldersArray ) const
   149     {
   150     {
   150     TLex input( aHiddenFolders );
   151     TLex input( aHiddenFolders );
   151     TLexMark startMark;
   152     TLexMark startMark;
   152     input.Mark( startMark ); 
   153     input.Mark( startMark );
   153     TBool notEmpty = EFalse;
   154     TBool notEmpty = EFalse;
   154     while ( !input.Eos() )
   155     while ( !input.Eos() )
   155         {
   156         {
   156         if( input.Peek() == ',')
   157         if( input.Peek() == ',')
   157             {
   158             {
   158             User::LeaveIfError( aHiddenFoldersArray.
   159             User::LeaveIfError( aHiddenFoldersArray.
   159                             Append( input.MarkedToken( startMark )  ) );            
   160                             Append( input.MarkedToken( startMark )  ) );
   160             input.Inc();
   161             input.Inc();
   161             input.Mark( startMark );
   162             input.Mark( startMark );
   162             }
   163             }
   163         input.Inc();     
   164         input.Inc();
   164         notEmpty = ETrue;       
   165         notEmpty = ETrue;
   165         }
   166         }
   166 	if ( notEmpty )
   167 	if ( notEmpty )
   167 		{
   168 		{
   168 		User::LeaveIfError( aHiddenFoldersArray.
   169 		User::LeaveIfError( aHiddenFoldersArray.
   169 						Append( input.MarkedToken( startMark )  ) );            
   170 						Append( input.MarkedToken( startMark )  ) );
   170 		}
   171 		}
   171    }
   172    }
   172 
   173 
   173 // ---------------------------------------------------------
   174 // ---------------------------------------------------------
   174 // CMenuEngObject::IsInCrL
   175 // CMenuEngObject::IsInCrL
   177 TBool CMenuEngObject::IsInCrL( const TDesC& aFolderName ) const
   178 TBool CMenuEngObject::IsInCrL( const TDesC& aFolderName ) const
   178     {
   179     {
   179 	RBuf hiddenCRFolders;
   180 	RBuf hiddenCRFolders;
   180 	CleanupClosePushL( hiddenCRFolders );
   181 	CleanupClosePushL( hiddenCRFolders );
   181 	hiddenCRFolders.CreateL( KCenRepBufferSize );
   182 	hiddenCRFolders.CreateL( KCenRepBufferSize );
   182     
   183 
   183     CRepository* cenRepSession = CRepository::NewLC( KCRUidMenu );
   184     CRepository* cenRepSession = CRepository::NewLC( KCRUidMenu );
   184     cenRepSession->Get( KMenuHideCPFolder, hiddenCRFolders );
   185     cenRepSession->Get( KMenuHideCPFolder, hiddenCRFolders );
   185 	CleanupStack::PopAndDestroy( cenRepSession );
   186 	CleanupStack::PopAndDestroy( cenRepSession );
   186 	
   187 
   187 	RArray<TPtrC> hiddenFoldersArray;
   188 	RArray<TPtrC> hiddenFoldersArray;
   188     CleanupClosePushL( hiddenFoldersArray );
   189     CleanupClosePushL( hiddenFoldersArray );
   189 	ParseHiddenFoldersL( hiddenCRFolders, hiddenFoldersArray );
   190 	ParseHiddenFoldersL( hiddenCRFolders, hiddenFoldersArray );
   190     
   191 
   191     TBool result(EFalse);
   192     TBool result(EFalse);
   192     TInt id = hiddenFoldersArray.Find(aFolderName);
   193     TInt id = hiddenFoldersArray.Find(aFolderName);
   193     if (KErrNotFound != id )
   194     if (KErrNotFound != id )
   194         {
   195         {
   195         TPtrC folderName(KNullDesC);
   196         TPtrC folderName(KNullDesC);
   197         if (folderName == aFolderName)
   198         if (folderName == aFolderName)
   198             {
   199             {
   199             result = ETrue;
   200             result = ETrue;
   200             }
   201             }
   201         }
   202         }
   202     
   203 
   203 	CleanupStack::PopAndDestroy( &hiddenFoldersArray );
   204 	CleanupStack::PopAndDestroy( &hiddenFoldersArray );
   204 	CleanupStack::PopAndDestroy( &hiddenCRFolders );
   205 	CleanupStack::PopAndDestroy( &hiddenCRFolders );
   205 
   206 
   206     return result;
   207     return result;
   207     }
   208     }
   276         }
   277         }
   277     }
   278     }
   278 
   279 
   279 // ----------------------------------------------------------------------------
   280 // ----------------------------------------------------------------------------
   280 // CMenuEngObject::SetAttributeL
   281 // CMenuEngObject::SetAttributeL
   281 // Menu item lock flags are checked (e.g. can rename), but only when the 
   282 // Menu item lock flags are checked (e.g. can rename), but only when the
   282 // current SetAttributeL call is not made from the object factories.
   283 // current SetAttributeL call is not made from the object factories.
   283 // If it is called from there, no flags checking is made.
   284 // If it is called from there, no flags checking is made.
   284 // This method is called from object factories when the engine is in 
   285 // This method is called from object factories when the engine is in
   285 // ELoadRamFile or ELoadRomFile states.
   286 // ELoadRamFile or ELoadRomFile states.
   286 // ----------------------------------------------------------------------------
   287 // ----------------------------------------------------------------------------
   287 //
   288 //
   288 EXPORT_C void CMenuEngObject::SetAttributeL
   289 EXPORT_C void CMenuEngObject::SetAttributeL
   289 ( const TDesC& aAttrName, const TDesC& aAttrValue, TBool aLocalized )
   290 ( const TDesC& aAttrName, const TDesC& aAttrValue, TBool aLocalized )
   295 
   296 
   296 void CMenuEngObject::SetInitialAttributeL
   297 void CMenuEngObject::SetInitialAttributeL
   297 ( const TDesC& aAttrName, const TDesC& aAttrValue, TBool aLocalized )
   298 ( const TDesC& aAttrName, const TDesC& aAttrValue, TBool aLocalized )
   298     {
   299     {
   299     CheckAttrNameL( aAttrName );
   300     CheckAttrNameL( aAttrName );
   300     
   301 
   301     if ( iEng.State() != CMenuEng::ELoadRamFile && 
   302     if ( iEng.State() != CMenuEng::ELoadRamFile &&
   302          iEng.State() != CMenuEng::ELoadRomFile &&
   303          iEng.State() != CMenuEng::ELoadRomFile &&
   303          Flags() & TMenuItem::ELockName && 
   304          Flags() & TMenuItem::ELockName &&
   304          ( 0 == aAttrName.Compare( KMenuAttrShortName ) || 
   305          ( 0 == aAttrName.Compare( KMenuAttrShortName ) ||
   305            0 == aAttrName.Compare( KMenuAttrLongName ) || 
   306            0 == aAttrName.Compare( KMenuAttrLongName ) ||
   306            0 == aAttrName.Compare( KMenuAttrTitleName ) ) )
   307            0 == aAttrName.Compare( KMenuAttrTitleName ) ) )
   307         {
   308         {
   308         User::Leave( KErrAccessDenied );
   309         User::Leave( KErrAccessDenied );
   309         }
   310         }
   310 
   311 
   327 
   328 
   328 // ---------------------------------------------------------
   329 // ---------------------------------------------------------
   329 // CMenuEngObject::SetNative
   330 // CMenuEngObject::SetNative
   330 // ---------------------------------------------------------
   331 // ---------------------------------------------------------
   331 //
   332 //
   332 EXPORT_C void CMenuEngObject::SetNative( TBool aNative )
   333 EXPORT_C void CMenuEngObject::SetAppType( TAppType aAppType )
   333     {
   334     {
   334     iNative = aNative;
   335     iAppType = aAppType;
   335     }
   336     }
   336 
   337 
   337 // ---------------------------------------------------------
   338 // ---------------------------------------------------------
   338 // CMenuEngObject::GetNative
   339 // CMenuEngObject::GetNative
   339 // ---------------------------------------------------------
   340 // ---------------------------------------------------------
   340 //
   341 //
   341 EXPORT_C TBool CMenuEngObject::GetNative() const
   342 EXPORT_C CMenuEngObject::TAppType CMenuEngObject::GetAppType() const
   342     {
   343     {
   343     return iNative;
   344     return iAppType;
   344     }
   345     }
   345 
   346 
   346 // ---------------------------------------------------------
   347 // ---------------------------------------------------------
   347 // CMenuEngObject::RemoveAttribute
   348 // CMenuEngObject::RemoveAttribute
   348 // ---------------------------------------------------------
   349 // ---------------------------------------------------------
   393 const TDesC& CMenuEngObject::TypeIdentifier()
   394 const TDesC& CMenuEngObject::TypeIdentifier()
   394     {
   395     {
   395     return iType;
   396     return iType;
   396     }
   397     }
   397 
   398 
   398 //  End of File  
   399 //  End of File