homescreenpluginsrv/hspsmanager/src/hspsclientrequesthandler.cpp
branchRCL_3
changeset 8 d0529222e3f0
parent 3 ff572005ac23
equal deleted inserted replaced
4:1a2a00e78665 8:d0529222e3f0
   701         // Initial settings
   701         // Initial settings
   702         if ( name == KInitialSettingsElement )
   702         if ( name == KInitialSettingsElement )
   703             {
   703             {
   704             // Check parent element
   704             // Check parent element
   705             parentNode = node->Parent();
   705             parentNode = node->Parent();
   706             const TDesC8& parentName = parentNode->Name();
   706             const TDesC8& parentName = parentNode->Name();            
   707             
       
   708             if( parentName == KPluginElement )
   707             if( parentName == KPluginElement )
   709                 { 
   708                 { 
   710                 ChspsDomList& initial_settings_childList = node->ChildNodes(); 
   709                 ChspsDomList& initial_settings_childList = node->ChildNodes();                                              
   711                                              
   710                 ChspsDomNode* initialSettingsNode = 
   712                 ChspsDomNode* initialSettingsNode = static_cast<ChspsDomNode*>(initial_settings_childList.FindByName( KSettingsElement ));
   711                         static_cast<ChspsDomNode*>(initial_settings_childList.FindByName( KSettingsElement ));
   713                 
   712                 if( initialSettingsNode )
   714                 ChspsDomList& initial_items = initialSettingsNode->ChildNodes();
       
   715                                 
       
   716                 ChspsDomNode* controlNode = hspsServerUtil::FindNodeByTagL(KControlElement, *parentNode ); 
       
   717                       
       
   718                 if( controlNode )
       
   719                     {
   713                     {
   720                     ChspsDomList& controlNode_childList = controlNode->ChildNodes();
   714                         
   721                 
   715                     ChspsDomList& initial_items = initialSettingsNode->ChildNodes();                                    
   722                     ChspsDomNode* settingsNode = static_cast<ChspsDomNode*>(controlNode_childList.FindByName( KSettingsElement ));
   716                     ChspsDomNode* controlNode = hspsServerUtil::FindNodeByTagL(KControlElement, *parentNode ); 
   723                 
   717                           
   724                     if( settingsNode )
   718                     if( controlNode )
   725                         {
   719                         {
   726                         ChspsDomList& items = settingsNode->ChildNodes();
   720                         ChspsDomList& controlNode_childList = controlNode->ChildNodes();
   727                                 
   721                     
   728                         if( items.Length() == initial_items.Length() )                    
   722                         ChspsDomNode* settingsNode = static_cast<ChspsDomNode*>(controlNode_childList.FindByName( KSettingsElement ));
       
   723                     
       
   724                         if( settingsNode )
   729                             {
   725                             {
   730                             TInt index = controlNode->ItemIndex( *settingsNode );
   726                             ChspsDomList& items = settingsNode->ChildNodes();
   731                             controlNode->DeleteChild(settingsNode);    
   727                                     
   732                             ChspsDomNode* clone = initialSettingsNode->CloneL( aAppODT.DomDocument().StringPool() );
   728                             if( items.Length() == initial_items.Length() )                    
   733                             CleanupStack::PushL( clone  );
   729                                 {
   734                             controlNode->AddChildL( clone, index );
   730                                 TInt index = controlNode->ItemIndex( *settingsNode );
   735                             clone->SetParent( controlNode );             
   731                                 controlNode->DeleteChild(settingsNode);    
   736                             CleanupStack::Pop( clone );
   732                                 ChspsDomNode* clone = initialSettingsNode->CloneL( aAppODT.DomDocument().StringPool() );
   737                             }
   733                                 CleanupStack::PushL( clone  );
   738                         else if( items.Length() > initial_items.Length() )
   734                                 controlNode->AddChildL( clone, index );
   739                             {
   735                                 clone->SetParent( controlNode );             
   740                             error = ParseInitialSettingsItemsL(*initialSettingsNode,*settingsNode);        
   736                                 CleanupStack::Pop( clone );
       
   737                                 }
       
   738                             else if( items.Length() > initial_items.Length() )
       
   739                                 {
       
   740                                 error = ParseInitialSettingsItemsL(*initialSettingsNode,*settingsNode);        
       
   741                                 }
       
   742                             else
       
   743                                 {
       
   744                                 error = KErrCorrupt;
       
   745                                 }
   741                             }
   746                             }
   742                         else
   747                         else
   743                             {
   748                             {
   744                             error = KErrCorrupt;
   749                             error = KErrNotFound;
   745                             }
   750                             }
   746                         }
   751                         }
   747                     else
   752                     else
   748                         {
   753                         {
   749                         error = KErrNotFound;
   754                         error = KErrCorrupt;
   750                         }
   755                         }
   751                     }
   756                         
       
   757                     // clean settings under initialsettings
       
   758                     node->ChildNodes().RemoveItem( initialSettingsNode );
       
   759                     delete initialSettingsNode;
       
   760                     initialSettingsNode = NULL;                    
       
   761                         
       
   762                     } 
   752                 else
   763                 else
   753                     {
   764                     {
       
   765                     // initialSettingsNode (KSettingsElement) not found
   754                     error = KErrCorrupt;
   766                     error = KErrCorrupt;
   755                     }
   767                     }
   756                 // clean settings under initialsettings
   768                    
   757                 node->ChildNodes().RemoveItem( initialSettingsNode );
   769                 }                   
   758                 delete initialSettingsNode;
       
   759                 initialSettingsNode = NULL; 
       
   760                 }
       
   761             }
   770             }
   762         
   771         
   763         prevNode = node;    
   772         prevNode = node;    
   764         node = iter->NextL();   
   773         node = iter->NextL();   
   765         }
   774         }
   953             {
   962             {
   954             ChspsDomList& attrList = node->AttributeList();
   963             ChspsDomList& attrList = node->AttributeList();
   955             
   964             
   956             ChspsDomAttribute* attr = static_cast<ChspsDomAttribute*>( 
   965             ChspsDomAttribute* attr = static_cast<ChspsDomAttribute*>( 
   957                                           attrList.FindByName( KItemAttrId ));
   966                                           attrList.FindByName( KItemAttrId ));
   958             const TDesC8& value = attr->Value();
   967             if( attr )
   959             if( value.Compare( aNodeIdentifier ) == 0 )
   968                 {                                          
   960                 {
   969                 const TDesC8& value = attr->Value();
   961                 found = ETrue;
   970                 if( value.CompareF( aNodeIdentifier ) == 0 )
   962                 targetNode = node;
   971                     {
       
   972                     found = ETrue;
       
   973                     targetNode = node;
       
   974                     }
   963                 }
   975                 }
   964             }
   976             }
   965         node = iter->NextL();
   977         node = iter->NextL();
   966         }   
   978         }   
   967     CleanupStack::PopAndDestroy( iter );
   979     CleanupStack::PopAndDestroy( iter );