idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp
branchRCL_3
changeset 28 d721605b30d0
parent 26 1b758917cafc
--- a/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp	Wed Jun 09 09:29:04 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp	Mon Jun 21 15:27:11 2010 +0300
@@ -114,6 +114,10 @@
     DoLoadWidgetsL();
     Cleanup();
     CloseSession();
+    if ( iObserver )
+        {
+        iObserver->LoadDoneL( iWidgetListChanged );
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -141,8 +145,9 @@
 //
 void CWmWidgetLoaderAo::DoLoadWidgetsL()
     {
+    iWidgetListChanged = EFalse;
     // Check if unistallation is ongoing for for some widget
-	// iUninstallUid is null no uninstallation is ongoing
+    // iUninstallUid is null no uninstallation is ongoing
     iUninstallUid = iWmPlugin.WmInstaller().UninstallUid();
     
     // connect to widget registry
@@ -162,8 +167,8 @@
     // 3. prepare the widget data array & sort order array
     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
         {
-        iWidgetsList.WidgetData(i).SetPersistentWidgetOrder( iWidgetOrder );
-        iWidgetsList.WidgetData(i).SetValid( EFalse );
+        iWidgetsList.WidgetData(i, ETrue ).SetPersistentWidgetOrder( iWidgetOrder );
+        iWidgetsList.WidgetData(i, ETrue ).SetValid( EFalse );
         }
     for( TInt i = 0; i < iWidgetsList.OrderDataArray().Count(); ++i )
         {
@@ -216,15 +221,15 @@
     TInt widgetsRemoved = 0;
     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); i++ )
         {
-        if( !iWidgetsList.WidgetData(i).IsValid() )
+        if( !iWidgetsList.WidgetData(i, ETrue ).IsValid() )
             {
-            iWidgetsList.RemoveWidgetData( i );
+            iWidgetsList.RemoveWidgetData( i, ETrue );
             ++widgetsRemoved;
             }
         }
     
     // update listbox
-    if ( widgetsAdded > 0 )
+    if ( widgetsAdded > 0 && !iWidgetsList.IsFindPaneIsVisible() )
         {
         iWidgetsList.HandleItemAdditionL();
         }
@@ -232,9 +237,12 @@
     if ( widgetsRemoved > 0 || widgetsAdded > 0 ||
         widgetsChanged > 0 )
         {
-        iWidgetsList.DrawDeferred();
+        if ( !iWidgetsList.IsFindPaneIsVisible() )
+            {
+            iWidgetsList.DrawDeferred();
+            }
+        iWidgetListChanged = ETrue;
         }
-
     // 6: cleanup
     CleanupStack::PopAndDestroy( contentInfoArray );
 
@@ -267,9 +275,9 @@
     CWmWidgetData* data = NULL;
     for( TInt i=0; i<iWidgetsList.WidgetDataCount() && !data; ++i )
         {
-        if ( iWidgetsList.WidgetData(i).EqualsTo( aContentInfo ) )
+        if ( iWidgetsList.WidgetData(i, ETrue ).EqualsTo( aContentInfo ) )
             {
-            data = &iWidgetsList.WidgetData(i);
+            data = &iWidgetsList.WidgetData(i, ETrue );
             }
         }
     return data;
@@ -359,7 +367,7 @@
         // add to visible data
         iWidgetsList.AddWidgetDataL( widgetData, EFalse );
         CleanupStack::Pop( widgetData );
-		aCount++;
+        aCount++;
         }
     else
         {
@@ -379,7 +387,7 @@
     // delete widget order and references to it
     for( TInt i=0; i<iWidgetsList.WidgetDataCount(); ++i )
         {
-        iWidgetsList.WidgetData(i).SetPersistentWidgetOrder( NULL );
+        iWidgetsList.WidgetData(i, ETrue ).SetPersistentWidgetOrder( NULL );
         }
     delete iWidgetOrder;
     iWidgetOrder = NULL;
@@ -414,5 +422,14 @@
     return iLoading;
     }
 
+// ----------------------------------------------------
+// CWmWidgetData::SetObserver
+// ----------------------------------------------------
+//
+void CWmWidgetLoaderAo::SetObserver( MWmWidgetloaderObserver* aObserver )
+    {
+    iObserver = aObserver;
+    }
+
 // end of file