idlehomescreen/xmluirendering/uiengine/src/xnplugindata.cpp
branchRCL_3
changeset 23 7be2816dbabd
parent 11 ff572dfe6d86
child 31 89165693e770
equal deleted inserted replaced
19:79311d856354 23:7be2816dbabd
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 // System includes
    18 // System includes
    19 #include <utf.h>
    19 #include <utf.h>
       
    20 
       
    21 // User includes
    20 #include <aifwdefs.h>
    22 #include <aifwdefs.h>
    21 #include <StringLoader.h>
       
    22 #include <aknnotewrappers.h>
       
    23 
       
    24 // User includes
       
    25 #include <xnuiengine.rsg>
       
    26 #include "xnappuiadapter.h"
    23 #include "xnappuiadapter.h"
    27 #include "xncomposer.h"
    24 #include "xncomposer.h"
    28 #include "xnodtparser.h"
    25 #include "xnodtparser.h"
    29 #include "xnresource.h"
    26 #include "xnresource.h"
    30 #include "xnodt.h"
    27 #include "xnodt.h"
    31 #include "xnnode.h"
    28 #include "xnnode.h"
    32 #include "xnplugindata.h"
    29 #include "xnplugindata.h"
    33 #include "xnviewdata.h"
    30 #include "xnviewdata.h"
       
    31 #include "xnpublisherdata.h"
    34 #include "xnviewmanager.h"
    32 #include "xnviewmanager.h"
    35 #include "xnoomsyshandler.h"
    33 #include "xnoomsyshandler.h"
    36 #include "xnpanic.h"
    34 #include "xnpanic.h"
    37 
    35 
    38 #include "debug.h"
    36 #include "debug.h"
    96 // C++ default destructor.
    94 // C++ default destructor.
    97 // -----------------------------------------------------------------------------
    95 // -----------------------------------------------------------------------------
    98 //
    96 //
    99 CXnPluginData::~CXnPluginData()
    97 CXnPluginData::~CXnPluginData()
   100     {
    98     {
   101     if ( iLoader )
       
   102         {
       
   103         iLoader->Cancel();
       
   104         }
       
   105 
       
   106     delete iLoader;
       
   107                
       
   108     Flush();
    99     Flush();
   109     }
   100     }
   110 
   101 
   111 // -----------------------------------------------------------------------------
   102 // -----------------------------------------------------------------------------
   112 // CXnPluginData::ConstructL()
   103 // CXnPluginData::ConstructL()
   113 // 2nd phase constructor
   104 // 2nd phase constructor
   114 // -----------------------------------------------------------------------------
   105 // -----------------------------------------------------------------------------
   115 //
   106 //
   116 void CXnPluginData::ConstructL()
   107 void CXnPluginData::ConstructL()
   117     {    
   108     {    
   118     iLoader = CPeriodic::NewL( CActive::EPriorityStandard );    
       
   119     }
   109     }
   120 
   110 
   121 // -----------------------------------------------------------------------------
   111 // -----------------------------------------------------------------------------
   122 // CXnPluginData::Load()
   112 // CXnPluginData::Load()
       
   113 //
   123 // -----------------------------------------------------------------------------
   114 // -----------------------------------------------------------------------------
   124 //
   115 //
   125 TInt CXnPluginData::Load()
   116 TInt CXnPluginData::Load()
   126     {        
   117     {        
   127     if ( Occupied() )
   118     if ( Occupied() )
   144         {
   135         {
   145         TRAP( err, iManager.Parser().LoadWidgetL( *this ) );       
   136         TRAP( err, iManager.Parser().LoadWidgetL( *this ) );       
   146         }
   137         }
   147     
   138     
   148     if ( err == KErrNone )
   139     if ( err == KErrNone )
   149         {
   140         {                     
   150         // Mark publishers as virgin
       
   151         iVirginPublishers = ETrue;
       
   152         
       
   153         // Succesfully composed, try schedule publishers' loading
   141         // Succesfully composed, try schedule publishers' loading
   154         LoadPublishers();                  
   142         LoadPublishers( EAiFwPluginStartup );                  
   155         }    
   143         }    
   156     else if ( err == KXnErrPluginFailure )
   144     else if ( err == KXnErrPluginFailure )
   157         {
   145         {
   158         // Widget's configuration is broken, remove it
   146         // Widget's configuration is broken, remove it
   159         TRAP_IGNORE( iManager.UnloadWidgetFromPluginL( *this, ETrue ) );                        
   147         TRAP_IGNORE( iManager.UnloadWidgetFromPluginL( *this, ETrue ) );                        
   162     return err;
   150     return err;
   163     }
   151     }
   164 
   152 
   165 // -----------------------------------------------------------------------------
   153 // -----------------------------------------------------------------------------
   166 // CXnPluginData::Destroy()
   154 // CXnPluginData::Destroy()
       
   155 //
   167 // -----------------------------------------------------------------------------
   156 // -----------------------------------------------------------------------------
   168 //
   157 //
   169 void CXnPluginData::Destroy()
   158 void CXnPluginData::Destroy()
   170     {       
   159     {       
   171     if ( Occupied() )
   160     if ( Occupied() )
   172         {
   161         {
   173         DestroyPublishers();
   162         DestroyPublishers( EAiFwPluginShutdown );
   174         
   163         
   175         TRAP_IGNORE( iManager.Parser().DestroyWidgetL( *this ) );                                       
   164         TRAP_IGNORE( iManager.Parser().DestroyWidgetL( *this ) );                                       
   176         }
   165         }
   177     
   166     
   178     Flush();
   167     Flush();
   179     }
   168     }
   180 
   169 
   181 // -----------------------------------------------------------------------------
   170 // -----------------------------------------------------------------------------
   182 // CXnPluginData::LoadPublishers
       
   183 // Loads data plugins associated to the plugin
       
   184 // -----------------------------------------------------------------------------
       
   185 //
       
   186 void CXnPluginData::LoadPublishers()
       
   187     {                     
       
   188     if ( !Active() || !Occupied() || iContentSourceNodes.Count() == 0 )
       
   189         {               
       
   190         return;
       
   191         }
       
   192                          
       
   193     iLoader->Cancel();
       
   194                   
       
   195     iLoader->Start( TTimeIntervalMicroSeconds32( 50 ),
       
   196                     TTimeIntervalMicroSeconds32( 50 ),
       
   197                     TCallBack( PeriodicEventL, this ) );
       
   198     }
       
   199 
       
   200 // -----------------------------------------------------------------------------
       
   201 // CXnPluginData::PeriodicEventL()
       
   202 // 
       
   203 // -----------------------------------------------------------------------------
       
   204 //
       
   205 /* static */ TInt CXnPluginData::PeriodicEventL( TAny* aAny )
       
   206     {
       
   207     CXnPluginData* self = static_cast< CXnPluginData* >( aAny );
       
   208     
       
   209     self->iLoader->Cancel();
       
   210     
       
   211     TInt reason( EAiFwPluginStartup );
       
   212     
       
   213     if ( self->LoadPublishers( reason ) != KErrNone )
       
   214         {
       
   215         self->iManager.UnloadWidgetFromPluginL( *self, ETrue );
       
   216         
       
   217         self->ShowContentRemovedError();
       
   218         }
       
   219     
       
   220     return KErrNone;
       
   221     }
       
   222 
       
   223 // -----------------------------------------------------------------------------
       
   224 // CXnPluginData::LoadPublishers()
   171 // CXnPluginData::LoadPublishers()
   225 // 
   172 // 
   226 // -----------------------------------------------------------------------------
   173 // -----------------------------------------------------------------------------
   227 //
   174 //
   228 TInt CXnPluginData::LoadPublishers( TInt aReason )
   175 void CXnPluginData::LoadPublishers( TInt aReason )
   229     {           
   176     {           
   230     __PRINTS( "*** CXnPluginData::LoadPublishers" );
   177     __PRINTS( "*** CXnPluginData::LoadPublishers" );
   231     
   178 
   232     TInt err( KErrNone );
   179     if ( !Active() || !Occupied() )
   233 
   180         {
   234     TRAP( err,
   181         __PRINTS( "*** CXnPluginData::LoadPublishers - done, !Active() || !Occupied()" );
   235         for ( TInt i = 0; i < iContentSourceNodes.Count(); i++ )
   182         
   236             {            
   183         return;
   237             CXnNodeAppIf& plugin( iContentSourceNodes[i]->AppIfL() );
   184         }
   238                         
   185     
   239             TInt retval(
   186     TInt count( iPublishers.Count() );
   240                 iManager.AppUiAdapter().LoadPublisher( plugin, aReason ) );
   187     
   241                             
   188     if ( count == 0 )
   242             if ( !err )
   189         {
   243                 {
   190         TRAP_IGNORE( NotifyPublisherReadyL() );
   244                 err = retval;
   191         }
   245                 }
   192     else
   246             }
   193         {
   247         );
   194         for ( TInt i = 0; i < count; i++ )
   248 
   195             {
   249     iVirginPublishers = EFalse;
   196             iPublishers[i]->Load( aReason );        
   250     
   197             }    
   251     if ( !Removable() )
       
   252         {
       
   253         // Not allowed to remove even it fails
       
   254         return KErrNone;
       
   255         }
   198         }
   256     
   199     
   257     __PRINTS( "*** CXnPluginData::LoadPublishers - done" );
   200     __PRINTS( "*** CXnPluginData::LoadPublishers - done" );
   258     
   201     }
   259     return err;        
   202 
       
   203 // -----------------------------------------------------------------------------
       
   204 // CXnPluginData::NotifyPublisherReadyL()
       
   205 //
       
   206 // -----------------------------------------------------------------------------
       
   207 //
       
   208 void CXnPluginData::NotifyPublisherReadyL()          
       
   209     {       
       
   210     if ( iParent )
       
   211         {
       
   212         // Forward to parent
       
   213         iParent->NotifyPublisherReadyL();
       
   214         }
   260     }
   215     }
   261 
   216 
   262 // -----------------------------------------------------------------------------
   217 // -----------------------------------------------------------------------------
   263 // CXnPluginData::DestroyPublishers
   218 // CXnPluginData::DestroyPublishers
   264 // Remove data plugins associated to the plugin
   219 // 
   265 // -----------------------------------------------------------------------------
   220 // -----------------------------------------------------------------------------
   266 //
   221 //
   267 void CXnPluginData::DestroyPublishers()
   222 void CXnPluginData::DestroyPublishers( TInt aReason )
   268     {    
   223     {    
   269     __PRINTS( "*** CXnPluginData::DestroyPublishers" );
   224     __PRINTS( "*** CXnPluginData::DestroyPublishers" );
   270     
   225     
   271     if ( Occupied() )
   226     if ( !Occupied() )
   272         {
   227         {
   273         // If not all plugins loaded yet               
   228         __PRINTS( "*** CXnPluginData::DestroyPublishers - done, !Occupied()" );
   274         iLoader->Cancel();                                  
       
   275         
   229         
   276         TRAP_IGNORE( DoDestroyPublishersL() );
   230         return;
   277         
       
   278         User::Heap().Compress();
       
   279         }    
   231         }    
   280     
   232     
       
   233     for ( TInt i = 0; i < iPublishers.Count(); i++ )
       
   234         {
       
   235         iPublishers[i]->Destroy( aReason );        
       
   236         }
       
   237                      
   281     __PRINTS( "*** CXnPluginData::DestroyPublishers - done" );
   238     __PRINTS( "*** CXnPluginData::DestroyPublishers - done" );
   282     }
   239     }
   283 
   240 
   284 // -----------------------------------------------------------------------------
   241 // -----------------------------------------------------------------------------
   285 // CXnPluginData::VirginPublishers
       
   286 // 
       
   287 // -----------------------------------------------------------------------------
       
   288 //
       
   289 TBool CXnPluginData::VirginPublishers() const
       
   290     {
       
   291     return iVirginPublishers;
       
   292     }
       
   293 
       
   294 // -----------------------------------------------------------------------------
       
   295 // CXnPluginData::DoDestroyPublishersL
       
   296 // Remove data plugins associated to the plugin
       
   297 // -----------------------------------------------------------------------------
       
   298 //
       
   299 void CXnPluginData::DoDestroyPublishersL()
       
   300     {
       
   301     __TIME_MARK( time );
       
   302     
       
   303     for ( TInt i = 0; i < iContentSourceNodes.Count(); i++ )
       
   304         {
       
   305         CXnNodeAppIf& plugin( iContentSourceNodes[i]->AppIfL() );
       
   306         
       
   307         // Destruction is synchronous
       
   308         iManager.AppUiAdapter().DestroyPublisher( 
       
   309             plugin, EAiFwPluginShutdown );        
       
   310         }
       
   311     
       
   312     __TIME_ENDMARK( "CXnPluginData::DoDestroyPublishersL, done", time );
       
   313     }
       
   314 
       
   315 // -----------------------------------------------------------------------------
       
   316 // CXnPluginData::SetConfigurationIdL()
   242 // CXnPluginData::SetConfigurationIdL()
       
   243 //
   317 // -----------------------------------------------------------------------------
   244 // -----------------------------------------------------------------------------
   318 //
   245 //
   319 void CXnPluginData::SetConfigurationIdL( const TDesC8& aConfigurationId )
   246 void CXnPluginData::SetConfigurationIdL( const TDesC8& aConfigurationId )
   320     {
   247     {
   321     delete iConfigurationId;
   248     delete iConfigurationId;
   324     iConfigurationId = aConfigurationId.AllocL();
   251     iConfigurationId = aConfigurationId.AllocL();
   325     }
   252     }
   326 
   253 
   327 // -----------------------------------------------------------------------------
   254 // -----------------------------------------------------------------------------
   328 // CXnPluginData::SetPluginIdL()
   255 // CXnPluginData::SetPluginIdL()
       
   256 //
   329 // -----------------------------------------------------------------------------
   257 // -----------------------------------------------------------------------------
   330 //
   258 //
   331 void CXnPluginData::SetPluginIdL( const TDesC8& aPluginId )
   259 void CXnPluginData::SetPluginIdL( const TDesC8& aPluginId )
   332     {
   260     {
   333     delete iPluginId;
   261     delete iPluginId;
   336     iPluginId = aPluginId.AllocL();
   264     iPluginId = aPluginId.AllocL();
   337     }
   265     }
   338 
   266 
   339 // -----------------------------------------------------------------------------
   267 // -----------------------------------------------------------------------------
   340 // CXnPluginData::SetPluginUidL()
   268 // CXnPluginData::SetPluginUidL()
       
   269 //
   341 // -----------------------------------------------------------------------------
   270 // -----------------------------------------------------------------------------
   342 //
   271 //
   343 void CXnPluginData::SetPluginUidL( const TDesC8& aPluginUid )
   272 void CXnPluginData::SetPluginUidL( const TDesC8& aPluginUid )
   344     {
   273     {
   345     delete iPluginUid;
   274     delete iPluginUid;
   348     iPluginUid = aPluginUid.AllocL();
   277     iPluginUid = aPluginUid.AllocL();
   349     }
   278     }
   350 
   279 
   351 // -----------------------------------------------------------------------------
   280 // -----------------------------------------------------------------------------
   352 // CXnPluginData::SetPluginNameL()
   281 // CXnPluginData::SetPluginNameL()
       
   282 //
   353 // -----------------------------------------------------------------------------
   283 // -----------------------------------------------------------------------------
   354 //
   284 //
   355 void CXnPluginData::SetPluginNameL( const TDesC8& aPluginName )
   285 void CXnPluginData::SetPluginNameL( const TDesC8& aPluginName )
   356     {
   286     {
   357     delete iPluginName;
   287     delete iPluginName;
   387     iPublisherName = aPublisherName.AllocL();
   317     iPublisherName = aPublisherName.AllocL();
   388     }
   318     }
   389 
   319 
   390 // -----------------------------------------------------------------------------
   320 // -----------------------------------------------------------------------------
   391 // CXnPluginData::SetPluginTypeL()
   321 // CXnPluginData::SetPluginTypeL()
       
   322 //
   392 // -----------------------------------------------------------------------------
   323 // -----------------------------------------------------------------------------
   393 //
   324 //
   394 void CXnPluginData::SetPluginTypeL( const TDesC8& aPluginType )
   325 void CXnPluginData::SetPluginTypeL( const TDesC8& aPluginType )
   395     {
   326     {
   396     delete iPluginType;
   327     delete iPluginType;
   399     iPluginType = aPluginType.AllocL();
   330     iPluginType = aPluginType.AllocL();
   400     }
   331     }
   401 
   332 
   402 // -----------------------------------------------------------------------------
   333 // -----------------------------------------------------------------------------
   403 // CXnPluginData::SetResources()
   334 // CXnPluginData::SetResources()
       
   335 //
   404 // -----------------------------------------------------------------------------
   336 // -----------------------------------------------------------------------------
   405 //
   337 //
   406 void CXnPluginData::SetResources( CArrayPtrSeg< CXnResource >* aResources )
   338 void CXnPluginData::SetResources( CArrayPtrSeg< CXnResource >* aResources )
   407     {    
   339     {    
   408     if ( iResources )
   340     if ( iResources )
   416     iResources = aResources;    
   348     iResources = aResources;    
   417     }
   349     }
   418 
   350 
   419 // -----------------------------------------------------------------------------
   351 // -----------------------------------------------------------------------------
   420 // CXnPluginData::ResourcesL()
   352 // CXnPluginData::ResourcesL()
       
   353 //
   421 // -----------------------------------------------------------------------------
   354 // -----------------------------------------------------------------------------
   422 //
   355 //
   423 void CXnPluginData::ResourcesL( CArrayPtrSeg< CXnResource >& aList ) const
   356 void CXnPluginData::ResourcesL( CArrayPtrSeg< CXnResource >& aList ) const
   424     {    
   357     {    
   425     for ( TInt i = 0; iResources && i < iResources->Count(); i++ )
   358     for ( TInt i = 0; iResources && i < iResources->Count(); i++ )
   428         }
   361         }
   429     }
   362     }
   430 
   363 
   431 // -----------------------------------------------------------------------------
   364 // -----------------------------------------------------------------------------
   432 // CXnPluginData::SetControlL()
   365 // CXnPluginData::SetControlL()
       
   366 //
   433 // -----------------------------------------------------------------------------
   367 // -----------------------------------------------------------------------------
   434 //
   368 //
   435 void CXnPluginData::SetControlL( CXnNode* aNode )
   369 void CXnPluginData::SetControlL( CXnNode* aNode )
   436     {
   370     {
   437     CXnControlAdapter* control( aNode->Control() );
   371     CXnControlAdapter* control( aNode->Control() );
   442         }
   376         }
   443     }
   377     }
   444 
   378 
   445 // -----------------------------------------------------------------------------
   379 // -----------------------------------------------------------------------------
   446 // CXnPluginData::ControlsL()
   380 // CXnPluginData::ControlsL()
       
   381 //
   447 // -----------------------------------------------------------------------------
   382 // -----------------------------------------------------------------------------
   448 //
   383 //
   449 void CXnPluginData::ControlsL( RPointerArray< CXnControlAdapter >& aList ) const
   384 void CXnPluginData::ControlsL( RPointerArray< CXnControlAdapter >& aList ) const
   450     {
   385     {
   451     for ( TInt i = 0; i < iControls.Count(); i++ )
   386     for ( TInt i = 0; i < iControls.Count(); i++ )
   454         }
   389         }
   455     }
   390     }
   456 
   391 
   457 // -----------------------------------------------------------------------------
   392 // -----------------------------------------------------------------------------
   458 // CXnPluginData::SetContentSourceNodeL()
   393 // CXnPluginData::SetContentSourceNodeL()
       
   394 //
   459 // -----------------------------------------------------------------------------
   395 // -----------------------------------------------------------------------------
   460 //
   396 //
   461 void CXnPluginData::SetContentSourceNodeL( CXnNode* aNode )
   397 void CXnPluginData::SetContentSourceNodeL( CXnNode* aNode )
   462     {
   398     {        
   463     User::LeaveIfError( iContentSourceNodes.InsertInAddressOrder( aNode ) );
   399     if ( !aNode )
       
   400         {
       
   401         return;
       
   402         }
       
   403     
       
   404     for ( TInt i = 0; i < iPublishers.Count(); i++ )
       
   405         {        
       
   406         if ( *iPublishers[i] == *aNode )
       
   407             {
       
   408             // Duplicate entries not allowed
       
   409             return;
       
   410             }
       
   411         }
       
   412                  
       
   413     CXnPublisherData* publisher = 
       
   414         CXnPublisherData::NewLC( *this, *aNode );       
       
   415     
       
   416     iPublishers.AppendL( publisher );    
       
   417     CleanupStack::Pop( publisher );   
   464     }
   418     }
   465 
   419 
   466 // -----------------------------------------------------------------------------
   420 // -----------------------------------------------------------------------------
   467 // CXnPluginData::ContentSourceNodesL()
   421 // CXnPluginData::ContentSourceNodesL()
       
   422 //
   468 // -----------------------------------------------------------------------------
   423 // -----------------------------------------------------------------------------
   469 //
   424 //
   470 void CXnPluginData::ContentSourceNodesL( RPointerArray< CXnNode >& aList ) const
   425 void CXnPluginData::ContentSourceNodesL( RPointerArray< CXnNode >& aList ) const
   471     {
   426     {
   472     for ( TInt i = 0; i < iContentSourceNodes.Count(); i++ )
   427     for ( TInt i = 0; i < iPublishers.Count(); i++ )
   473         {
   428         {
   474         aList.AppendL( iContentSourceNodes[i] );
   429         aList.AppendL( iPublishers[i]->ContentSource() );
   475         }
   430         }
   476     }
   431     }
   477 
   432 
       
   433 // -----------------------------------------------------------------------------
       
   434 // CXnPluginData::Publishers()
       
   435 //
       
   436 // -----------------------------------------------------------------------------
       
   437 //
       
   438 void CXnPluginData::PublishersL( RPointerArray< CXnPublisherData >& aList ) const
       
   439     {
       
   440     for ( TInt i = 0; i < iPublishers.Count(); i++ )
       
   441         {
       
   442         aList.AppendL( iPublishers[i] );
       
   443         }
       
   444     }
       
   445     
   478 // -----------------------------------------------------------------------------
   446 // -----------------------------------------------------------------------------
   479 // CXnPluginData::SetAppearanceNodeL()
   447 // CXnPluginData::SetAppearanceNodeL()
       
   448 //
   480 // -----------------------------------------------------------------------------
   449 // -----------------------------------------------------------------------------
   481 //
   450 //
   482 void CXnPluginData::SetAppearanceNodeL( CXnNode* aNode )
   451 void CXnPluginData::SetAppearanceNodeL( CXnNode* aNode )
   483     {
   452     {
   484     User::LeaveIfError( iAppearanceNodes.InsertInAddressOrder( aNode ) );
   453     User::LeaveIfError( iAppearanceNodes.InsertInAddressOrder( aNode ) );
   485     }
   454     }
   486 
   455 
   487 // -----------------------------------------------------------------------------
   456 // -----------------------------------------------------------------------------
   488 // CXnPluginData::AppearanceNodesL()
   457 // CXnPluginData::AppearanceNodesL()
       
   458 //
   489 // -----------------------------------------------------------------------------
   459 // -----------------------------------------------------------------------------
   490 //
   460 //
   491 void CXnPluginData::AppearanceNodesL( RPointerArray< CXnNode >& aList ) const
   461 void CXnPluginData::AppearanceNodesL( RPointerArray< CXnNode >& aList ) const
   492     {
   462     {
   493     for ( TInt i = 0; i < iAppearanceNodes.Count(); i++ )
   463     for ( TInt i = 0; i < iAppearanceNodes.Count(); i++ )
   496         }
   466         }
   497     }
   467     }
   498 
   468 
   499 // -----------------------------------------------------------------------------
   469 // -----------------------------------------------------------------------------
   500 // CXnPluginData::SetInitialFocusNodeL()
   470 // CXnPluginData::SetInitialFocusNodeL()
       
   471 //
   501 // -----------------------------------------------------------------------------
   472 // -----------------------------------------------------------------------------
   502 //
   473 //
   503 void CXnPluginData::SetInitialFocusNodeL( CXnNode* aNode )
   474 void CXnPluginData::SetInitialFocusNodeL( CXnNode* aNode )
   504     {
   475     {
   505     User::LeaveIfError( iInitialFocusNodes.InsertInAddressOrder( aNode ) );
   476     User::LeaveIfError( iInitialFocusNodes.InsertInAddressOrder( aNode ) );
   506     }
   477     }
   507 
   478 
   508 // -----------------------------------------------------------------------------
   479 // -----------------------------------------------------------------------------
   509 // CXnPluginData::InitialFocusNodesL()
   480 // CXnPluginData::InitialFocusNodesL()
       
   481 //
   510 // -----------------------------------------------------------------------------
   482 // -----------------------------------------------------------------------------
   511 //
   483 //
   512 void CXnPluginData::InitialFocusNodesL( RPointerArray< CXnNode >& aList ) const
   484 void CXnPluginData::InitialFocusNodesL( RPointerArray< CXnNode >& aList ) const
   513     {
   485     {
   514     for ( TInt i = 0; i < iInitialFocusNodes.Count(); i++ )
   486     for ( TInt i = 0; i < iInitialFocusNodes.Count(); i++ )
   556         iResources->ResetAndDestroy();
   528         iResources->ResetAndDestroy();
   557         delete iResources;
   529         delete iResources;
   558         iResources = NULL;
   530         iResources = NULL;
   559         }
   531         }
   560         
   532         
   561     iControls.Reset();
   533     iPublishers.ResetAndDestroy();
   562     iContentSourceNodes.Reset();
   534     iControls.Reset();    
   563     iAppearanceNodes.Reset();
   535     iAppearanceNodes.Reset();
   564     iInitialFocusNodes.Reset();
   536     iInitialFocusNodes.Reset();
   565     iPopupNodes.Reset();
   537     iPopupNodes.Reset();    
   566     iPluginsData.ResetAndDestroy();
   538     iPluginsData.ResetAndDestroy();    
   567     
   539     
   568     User::Heap().Compress();
   540     User::Heap().Compress();
   569     }
   541     }
   570 
   542 
   571 // -----------------------------------------------------------------------------
   543 // -----------------------------------------------------------------------------
   632     return ( iPopupNodes.Count() > 0 );
   604     return ( iPopupNodes.Count() > 0 );
   633     }
   605     }
   634 
   606 
   635 // -----------------------------------------------------------------------------
   607 // -----------------------------------------------------------------------------
   636 // CXnPluginData::PopupNodesL()
   608 // CXnPluginData::PopupNodesL()
       
   609 //
   637 // -----------------------------------------------------------------------------
   610 // -----------------------------------------------------------------------------
   638 //
   611 //
   639 void CXnPluginData::PopupNodesL( RPointerArray< CXnNode >& aList ) const
   612 void CXnPluginData::PopupNodesL( RPointerArray< CXnNode >& aList ) const
   640     {
   613     {
   641     for ( TInt i = 0; i < iPopupNodes.Count(); i++ )
   614     for ( TInt i = 0; i < iPopupNodes.Count(); i++ )
   642         {
   615         {
   643         aList.AppendL( iPopupNodes[i] );
   616         aList.AppendL( iPopupNodes[i] );
   644         }
   617         }
   645     }
       
   646 
       
   647 //------------------------------------------------------------------------------
       
   648 // CXnPluginData::ShowContentRemovedError()      
       
   649 //
       
   650 //------------------------------------------------------------------------------
       
   651 //    
       
   652 void CXnPluginData::ShowContentRemovedError()
       
   653     {
       
   654     TRAP_IGNORE( DoShowContentRemovedErrorL() );
       
   655     }
       
   656 
       
   657 //------------------------------------------------------------------------------
       
   658 // CXnPluginData::DoShowContentRemovedErrorL()      
       
   659 //
       
   660 //------------------------------------------------------------------------------
       
   661 //    
       
   662 void CXnPluginData::DoShowContentRemovedErrorL()
       
   663     {
       
   664     HBufC* msg( StringLoader::LoadLC( R_QTN_HS_ERROR_WIDGETS_REMOVED ) );
       
   665         
       
   666     CAknErrorNote* note = new ( ELeave ) CAknErrorNote;
       
   667     CleanupStack::PushL( note );
       
   668     
       
   669     note->ExecuteLD( *msg );
       
   670     
       
   671     CleanupStack::Pop( note );
       
   672     CleanupStack::PopAndDestroy( msg );                                       
       
   673     }
       
   674 
       
   675 //------------------------------------------------------------------------------
       
   676 // CXnPluginData::ShowOutOfMemErrorL()      
       
   677 //
       
   678 //------------------------------------------------------------------------------
       
   679 //    
       
   680 void CXnPluginData::ShowOutOfMemError()
       
   681     {
       
   682     TRAP_IGNORE( ViewManager().OomSysHandler().HandlePotentialOomL() );
       
   683     }
   618     }
   684 
   619 
   685 // -----------------------------------------------------------------------------
   620 // -----------------------------------------------------------------------------
   686 // CXnViewData::SetLockingStatus
   621 // CXnViewData::SetLockingStatus
   687 // 
   622 //