menucontentsrv/engsrc/menueng.cpp
branchRCL_3
changeset 82 ace62b58f4b2
parent 0 79c6a41cd166
child 101 9e077f9a342c
equal deleted inserted replaced
78:1b207dd38b72 82:ace62b58f4b2
   565     // something else to allow item data update.
   565     // something else to allow item data update.
   566     return object;
   566     return object;
   567     }
   567     }
   568 
   568 
   569 
   569 
   570 	
   570 
   571 // ---------------------------------------------------------
   571 // ---------------------------------------------------------
   572 // CMenuEng::AppendNotifyL
   572 // CMenuEng::AppendNotifyL
   573 // ---------------------------------------------------------
   573 // ---------------------------------------------------------
   574 //
   574 //
   575 EXPORT_C void CMenuEng::AppendNotifyL( TInt aFolder, TInt aEvents )
   575 EXPORT_C void CMenuEng::AppendNotifyL( TInt aFolder, TInt aEvents )
   589 // CMenuEng::NodeL
   589 // CMenuEng::NodeL
   590 // ---------------------------------------------------------
   590 // ---------------------------------------------------------
   591 //
   591 //
   592 EXPORT_C TBool CMenuEng::Exist( TInt aId ) const
   592 EXPORT_C TBool CMenuEng::Exist( TInt aId ) const
   593     {
   593     {
   594     MXCFWNode* node = NULL;
   594     TBool exists(EFalse);
   595     const RNodeArray& nodes = iTree->Nodes();
   595     const RNodeArray& nodes = iTree->Nodes();
   596     for ( TInt i = 0; i < nodes.Count(); i++ )
   596     for ( TInt i = 0; i < nodes.Count(); i++ )
   597         {
   597         {
   598         node = nodes[i];
   598         CMenuEngObject& object = Object( *nodes[i] );
   599         if ( aId == Object( *node ).Id() )
   599         if ( aId == object.Id()
   600             {
   600                 && !( ( object.Flags() & TMenuItem::EHidden )
   601             return ETrue;
   601                         || ( object.Flags() & TMenuItem::EMissing ) ) )
   602             }
   602             {
   603         }
   603             exists = ETrue;
   604     return EFalse;
   604             }
       
   605         }
       
   606     return exists;
   605     }
   607     }
   606 // ---------------------------------------------------------
   608 // ---------------------------------------------------------
   607 // CMenuEng::RunL
   609 // CMenuEng::RunL
   608 // ---------------------------------------------------------
   610 // ---------------------------------------------------------
   609 //
   611 //
   716             // Error loading ROM tree is fatal. Nothing we can do.
   718             // Error loading ROM tree is fatal. Nothing we can do.
   717             // stop nested active scheduler loop if error in parsing
   719             // stop nested active scheduler loop if error in parsing
   718             if ( iActiveWait->IsStarted() )
   720             if ( iActiveWait->IsStarted() )
   719                 {
   721                 {
   720                 iActiveWait->AsyncStop();
   722                 iActiveWait->AsyncStop();
   721                 }  
   723                 }
   722                 
   724 
   723             iState = EDead;
   725             iState = EDead;
   724             iObserver.EngineError( aError );
   726             iObserver.EngineError( aError );
   725             // Can't delete the tree now, XCFW Engine keeps a pointer to it
   727             // Can't delete the tree now, XCFW Engine keeps a pointer to it
   726             // and still uses it even after reporting the error. :(
   728             // and still uses it even after reporting the error. :(
   727          
   729 
   728             break;
   730             break;
   729             }
   731             }
   730 
   732 
   731         case ESaveFile:
   733         case ESaveFile:
   732             {
   734             {
   783             // parsing operation complete
   785             // parsing operation complete
   784             // we can stop nested active scheduler loop
   786             // we can stop nested active scheduler loop
   785             if ( iActiveWait->IsStarted() )
   787             if ( iActiveWait->IsStarted() )
   786                 {
   788                 {
   787                 iActiveWait->AsyncStop();
   789                 iActiveWait->AsyncStop();
   788                 }         
   790                 }
   789             
   791 
   790             TBool legacyFormat = iObjectFactory->IsLegacyFormat();                        
   792             TBool legacyFormat = iObjectFactory->IsLegacyFormat();
   791             // Reset object factory in all cases.
   793             // Reset object factory in all cases.
   792             iObjectFactory->Reset();
   794             iObjectFactory->Reset();
   793             // Tree is up (maybe unsaved yet).
   795             // Tree is up (maybe unsaved yet).
   794             // Check the structure and get the root folder node.
   796             // Check the structure and get the root folder node.
   795             MXCFWNode& rootNode = CheckTreeL( *iTree );
   797             MXCFWNode& rootNode = CheckTreeL( *iTree );
  1128     // Read ID-s to ID manager.
  1130     // Read ID-s to ID manager.
  1129     TMenuEngIdManagerInit idManagerInit( *iIdManager );
  1131     TMenuEngIdManagerInit idManagerInit( *iIdManager );
  1130     TraverseNodeL( aRootNode, idManagerInit );
  1132     TraverseNodeL( aRootNode, idManagerInit );
  1131     // Make sure all nodes have ID.
  1133     // Make sure all nodes have ID.
  1132     TMenuEngIdSetter idSetter( *iIdManager );
  1134     TMenuEngIdSetter idSetter( *iIdManager );
  1133     TraverseNodeL( aRootNode, idSetter ); 
  1135     TraverseNodeL( aRootNode, idSetter );
  1134     }
  1136     }
  1135 
  1137 
  1136 // ---------------------------------------------------------
  1138 // ---------------------------------------------------------
  1137 // CMenuEng::GetIdSeedL
  1139 // CMenuEng::GetIdSeedL
  1138 // ---------------------------------------------------------
  1140 // ---------------------------------------------------------
  1218     {
  1220     {
  1219     __ASSERT_DEBUG( ELoadRamFile == iState, User::Invariant() );
  1221     __ASSERT_DEBUG( ELoadRamFile == iState, User::Invariant() );
  1220     __ASSERT_DEBUG( !iTree, User::Invariant() );
  1222     __ASSERT_DEBUG( !iTree, User::Invariant() );
  1221     iTree = CXCFWTree::NewL();
  1223     iTree = CXCFWTree::NewL();
  1222     // Legacy xml format supported only if the xml is from rom:
  1224     // Legacy xml format supported only if the xml is from rom:
  1223     iObjectFactory->SupportLegacyFormat( EFalse ); 
  1225     iObjectFactory->SupportLegacyFormat( EFalse );
  1224     iEngine->LoadL( *iTree, iRamFileName );
  1226     iEngine->LoadL( *iTree, iRamFileName );
  1225     }
  1227     }
  1226 
  1228 
  1227 // ---------------------------------------------------------
  1229 // ---------------------------------------------------------
  1228 // CMenuEng::LoadRomFileL
  1230 // CMenuEng::LoadRomFileL
  1236     GetFileNameL( fname, ERomFile );
  1238     GetFileNameL( fname, ERomFile );
  1237 	delete iIdManager; iIdManager = NULL;
  1239 	delete iIdManager; iIdManager = NULL;
  1238     delete iTree; iTree = NULL;
  1240     delete iTree; iTree = NULL;
  1239     iTree = CXCFWTree::NewL();
  1241     iTree = CXCFWTree::NewL();
  1240     // Legacy xml format supported only if the xml is from rom:
  1242     // Legacy xml format supported only if the xml is from rom:
  1241     iObjectFactory->SupportLegacyFormat( ETrue ); 
  1243     iObjectFactory->SupportLegacyFormat( ETrue );
  1242     iEngine->LoadL( *iTree, fname );
  1244     iEngine->LoadL( *iTree, fname );
  1243     }
  1245     }
  1244 
  1246 
  1245 // ---------------------------------------------------------
  1247 // ---------------------------------------------------------
  1246 // CMenuEng::SaveTempFileL
  1248 // CMenuEng::SaveTempFileL
  1376             iState = EReady;
  1378             iState = EReady;
  1377             }
  1379             }
  1378         }
  1380         }
  1379     }
  1381     }
  1380 
  1382 
  1381 //  End of File  
  1383 //  End of File