--- 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 <featmgr.h>
#include <apgwgnam.h>
-
+// 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