diff -r 7be2816dbabd -r 137ebc85284b taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp --- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp Tue May 11 16:02:39 2010 +0300 +++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp Tue May 25 12:29:32 2010 +0300 @@ -28,7 +28,8 @@ #include #include - +// Special case: ovi store secure widget UID +const TUid KTsOviStoreSecureWidgetUid = { 0x2001A93E }; // ================= MEMBER FUNCTIONS ======================= @@ -113,7 +114,8 @@ if ( iTaskListDirty ) { CollectTasksL(); - // dirty flag is cleared in the above call + // clear dirty flag + SetDirty(EFalse); } // Get app icon for entries without screenshot, @@ -153,8 +155,7 @@ TBool CTsFswDataList::CollectTasksL() { // clear dirty flag - iTaskListDirty = EFalse; - TBool changed = EFalse; + TBool changed = iTaskListDirty; RTsFswArray newAppsList; RTsFswArray newWidgetsList; @@ -206,9 +207,9 @@ // CTsFswDataList::SetDirty() // -------------------------------------------------------------------------- // -void CTsFswDataList::SetDirty() +void CTsFswDataList::SetDirty(TBool aDirty) { - iTaskListDirty = ETrue; + iTaskListDirty = aDirty; } // -------------------------------------------------------------------------- @@ -252,15 +253,19 @@ { TBool changed = EFalse; CFbsBitmap** bmp = iScreenshots.Find( aId ); + if ( bmp ) { + changed |= AssignScreenshotHandle( aId, 0 ); + changed |= RemoveScreenshotFromParent( (*bmp)->Handle()); delete *bmp; iScreenshots.Remove( aId ); - changed = AssignScreenshotHandle( aId, 0 ); } return changed; } + + // -------------------------------------------------------------------------- // CTsFswDataList::FindScreenshotByWgId // -------------------------------------------------------------------------- @@ -276,10 +281,11 @@ // CTsFswDataList::MoveEntryAtStart // -------------------------------------------------------------------------- // -void CTsFswDataList::MoveEntryAtStart(TInt aAppId, TBool aWidget) +TBool CTsFswDataList::MoveEntryAtStart(TInt aAppId, TBool aWidget) { TSLOG_CONTEXT( MoveEntryAtStart, TSLOG_LOCAL ); + TBool wasMoved(EFalse); TInt appId(0); //check embeded case if( !aWidget ) @@ -302,15 +308,19 @@ for ( TInt i = 0; i < iData.Count(); ++i ) { - if( iData[i]->AppUid().iUid == appId && iData[i]->Widget() == aWidget) + if( iData[i]->AppUid().iUid == appId && + ((iData[i]->Widget() == aWidget) || (iData[i]->AppUid() == KTsOviStoreSecureWidgetUid ))) { CTsFswEntry* entry = iData[i]; iData.Remove(i); iData.Insert(entry, 0); + SetDirty(ETrue); + wasMoved = ETrue; break; } } TSLOG_OUT(); + return wasMoved; } // -------------------------------------------------------------------------- @@ -629,13 +639,14 @@ aAsigned = EFalse; for (TInt i = 0, ie = iData.Count(); i != ie; ++i) { - if (iData[i]->Widget()) + if (iData[i]->Widget() || iData[i]->AppUid() == KTsOviStoreSecureWidgetUid ) { TInt widgetId = iData[i]->AppUid().iUid; if (widgetId == aWgIdForScreenshot) { iData[i]->SetScreenshotHandle(aBitmapHandle); aAsigned = ETrue; + SetDirty(ETrue); break; } continue; @@ -645,6 +656,7 @@ { iData[i]->SetScreenshotHandle(aBitmapHandle); aAsigned = ETrue; + SetDirty(ETrue); break; } } @@ -800,4 +812,24 @@ return appUid; } +// -------------------------------------------------------------------------- +// CTsFswDataList::RemoveScreenshotFromParent +// -------------------------------------------------------------------------- +// +TBool CTsFswDataList::RemoveScreenshotFromParent( TInt aBmpHandle ) + { + TBool changed(EFalse); + for( TInt i = 0; i < iData.Count(); ++i) + { + if ( !iData[i]->Widget() && iData[i]->ScreenshotHandle() == aBmpHandle ) + { + changed = ETrue; + iData[i]->SetScreenshotHandle( + LookupScreenshotHandle( iData[i]->WgId()) ); + } + } + return changed; + } + + // end of file