idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp
branchRCL_3
changeset 28 d721605b30d0
parent 26 1b758917cafc
equal deleted inserted replaced
26:1b758917cafc 28:d721605b30d0
   112 void CWmWidgetLoaderAo::RunL()
   112 void CWmWidgetLoaderAo::RunL()
   113     {
   113     {
   114     DoLoadWidgetsL();
   114     DoLoadWidgetsL();
   115     Cleanup();
   115     Cleanup();
   116     CloseSession();
   116     CloseSession();
       
   117     if ( iObserver )
       
   118         {
       
   119         iObserver->LoadDoneL( iWidgetListChanged );
       
   120         }
   117     }
   121     }
   118 
   122 
   119 // ---------------------------------------------------------------------------
   123 // ---------------------------------------------------------------------------
   120 // CWmWidgetLoaderAo::RunError
   124 // CWmWidgetLoaderAo::RunError
   121 // ---------------------------------------------------------------------------
   125 // ---------------------------------------------------------------------------
   139 // CWmWidgetLoaderAo::DoLoadWidgetsL
   143 // CWmWidgetLoaderAo::DoLoadWidgetsL
   140 // ---------------------------------------------------------
   144 // ---------------------------------------------------------
   141 //
   145 //
   142 void CWmWidgetLoaderAo::DoLoadWidgetsL()
   146 void CWmWidgetLoaderAo::DoLoadWidgetsL()
   143     {
   147     {
       
   148     iWidgetListChanged = EFalse;
   144     // Check if unistallation is ongoing for for some widget
   149     // Check if unistallation is ongoing for for some widget
   145 	// iUninstallUid is null no uninstallation is ongoing
   150     // iUninstallUid is null no uninstallation is ongoing
   146     iUninstallUid = iWmPlugin.WmInstaller().UninstallUid();
   151     iUninstallUid = iWmPlugin.WmInstaller().UninstallUid();
   147     
   152     
   148     // connect to widget registry
   153     // connect to widget registry
   149     OpenSessionL();
   154     OpenSessionL();
   150     
   155     
   160     TRAPD( loadError, iWidgetOrder->LoadL() );
   165     TRAPD( loadError, iWidgetOrder->LoadL() );
   161     
   166     
   162     // 3. prepare the widget data array & sort order array
   167     // 3. prepare the widget data array & sort order array
   163     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
   168     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
   164         {
   169         {
   165         iWidgetsList.WidgetData(i).SetPersistentWidgetOrder( iWidgetOrder );
   170         iWidgetsList.WidgetData(i, ETrue ).SetPersistentWidgetOrder( iWidgetOrder );
   166         iWidgetsList.WidgetData(i).SetValid( EFalse );
   171         iWidgetsList.WidgetData(i, ETrue ).SetValid( EFalse );
   167         }
   172         }
   168     for( TInt i = 0; i < iWidgetsList.OrderDataArray().Count(); ++i )
   173     for( TInt i = 0; i < iWidgetsList.OrderDataArray().Count(); ++i )
   169         {
   174         {
   170         iWidgetsList.OrderData(i)->SetPersistentWidgetOrder( iWidgetOrder );
   175         iWidgetsList.OrderData(i)->SetPersistentWidgetOrder( iWidgetOrder );
   171         }
   176         }
   214     // 5: finally, remove all UI widgets that during the loading process were
   219     // 5: finally, remove all UI widgets that during the loading process were
   215     // NOT marked as VALID. those widgets do not exist anymore.
   220     // NOT marked as VALID. those widgets do not exist anymore.
   216     TInt widgetsRemoved = 0;
   221     TInt widgetsRemoved = 0;
   217     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); i++ )
   222     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); i++ )
   218         {
   223         {
   219         if( !iWidgetsList.WidgetData(i).IsValid() )
   224         if( !iWidgetsList.WidgetData(i, ETrue ).IsValid() )
   220             {
   225             {
   221             iWidgetsList.RemoveWidgetData( i );
   226             iWidgetsList.RemoveWidgetData( i, ETrue );
   222             ++widgetsRemoved;
   227             ++widgetsRemoved;
   223             }
   228             }
   224         }
   229         }
   225     
   230     
   226     // update listbox
   231     // update listbox
   227     if ( widgetsAdded > 0 )
   232     if ( widgetsAdded > 0 && !iWidgetsList.IsFindPaneIsVisible() )
   228         {
   233         {
   229         iWidgetsList.HandleItemAdditionL();
   234         iWidgetsList.HandleItemAdditionL();
   230         }
   235         }
   231     
   236     
   232     if ( widgetsRemoved > 0 || widgetsAdded > 0 ||
   237     if ( widgetsRemoved > 0 || widgetsAdded > 0 ||
   233         widgetsChanged > 0 )
   238         widgetsChanged > 0 )
   234         {
   239         {
   235         iWidgetsList.DrawDeferred();
   240         if ( !iWidgetsList.IsFindPaneIsVisible() )
   236         }
   241             {
   237 
   242             iWidgetsList.DrawDeferred();
       
   243             }
       
   244         iWidgetListChanged = ETrue;
       
   245         }
   238     // 6: cleanup
   246     // 6: cleanup
   239     CleanupStack::PopAndDestroy( contentInfoArray );
   247     CleanupStack::PopAndDestroy( contentInfoArray );
   240 
   248 
   241     // 7. check list empty condition
   249     // 7. check list empty condition
   242     if ( iWidgetsList.WidgetDataCount() == 0 )
   250     if ( iWidgetsList.WidgetDataCount() == 0 )
   265         CHsContentInfo& aContentInfo )
   273         CHsContentInfo& aContentInfo )
   266     {
   274     {
   267     CWmWidgetData* data = NULL;
   275     CWmWidgetData* data = NULL;
   268     for( TInt i=0; i<iWidgetsList.WidgetDataCount() && !data; ++i )
   276     for( TInt i=0; i<iWidgetsList.WidgetDataCount() && !data; ++i )
   269         {
   277         {
   270         if ( iWidgetsList.WidgetData(i).EqualsTo( aContentInfo ) )
   278         if ( iWidgetsList.WidgetData(i, ETrue ).EqualsTo( aContentInfo ) )
   271             {
   279             {
   272             data = &iWidgetsList.WidgetData(i);
   280             data = &iWidgetsList.WidgetData(i, ETrue );
   273             }
   281             }
   274         }
   282         }
   275     return data;
   283     return data;
   276     }
   284     }
   277 
   285 
   357             widgetData->VisualizeUninstallL();
   365             widgetData->VisualizeUninstallL();
   358             }
   366             }
   359         // add to visible data
   367         // add to visible data
   360         iWidgetsList.AddWidgetDataL( widgetData, EFalse );
   368         iWidgetsList.AddWidgetDataL( widgetData, EFalse );
   361         CleanupStack::Pop( widgetData );
   369         CleanupStack::Pop( widgetData );
   362 		aCount++;
   370         aCount++;
   363         }
   371         }
   364     else
   372     else
   365         {
   373         {
   366         //delete aContentInfo when it's not added to iVisibleWidgetArray
   374         //delete aContentInfo when it's not added to iVisibleWidgetArray
   367         CleanupStack::PopAndDestroy( aContentInfo );
   375         CleanupStack::PopAndDestroy( aContentInfo );
   377     iLoading = EFalse;
   385     iLoading = EFalse;
   378     
   386     
   379     // delete widget order and references to it
   387     // delete widget order and references to it
   380     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
   388     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
   381         {
   389         {
   382         iWidgetsList.WidgetData(i).SetPersistentWidgetOrder( NULL );
   390         iWidgetsList.WidgetData(i, ETrue ).SetPersistentWidgetOrder( NULL );
   383         }
   391         }
   384     delete iWidgetOrder;
   392     delete iWidgetOrder;
   385     iWidgetOrder = NULL;
   393     iWidgetOrder = NULL;
   386     }
   394     }
   387 
   395 
   412 TBool CWmWidgetLoaderAo::IsLoading()
   420 TBool CWmWidgetLoaderAo::IsLoading()
   413     {
   421     {
   414     return iLoading;
   422     return iLoading;
   415     }
   423     }
   416 
   424 
       
   425 // ----------------------------------------------------
       
   426 // CWmWidgetData::SetObserver
       
   427 // ----------------------------------------------------
       
   428 //
       
   429 void CWmWidgetLoaderAo::SetObserver( MWmWidgetloaderObserver* aObserver )
       
   430     {
       
   431     iObserver = aObserver;
       
   432     }
       
   433 
   417 // end of file
   434 // end of file
   418 
   435