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 ); |