Revision: 201037
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 00:38:31 +0300
changeset 124 e36b2f4799c0
parent 121 0b3699f6c654
Revision: 201037 Kit: 201039
activityfw/activityfw.pro
activityfw/activityserviceplugin/activityserviceplugin.pro
activityfw/activityserviceplugin/inc/afmanager.h
activityfw/activityserviceplugin/inc/afstorageproxy.h
activityfw/activityserviceplugin/s60/inc/afstorageproxy_p.h
activityfw/activityserviceplugin/s60/src/afstorageproxy_p.cpp
activityfw/activityserviceplugin/src/afactivitystorage_p.cpp
activityfw/activityserviceplugin/src/afmanager.cpp
activityfw/activityserviceplugin/src/afstorageproxy.cpp
activityfw/activityserviceplugin/symbianinstaller/activityserviceinstaller/activityserviceinstaller.cpp
activityfw/activityserviceplugin/symbianinstaller/activityserviceinstaller/activityserviceinstaller.pro
activityfw/activityserviceplugin/symbianinstaller/activityserviceinstaller/activityserviceinstaller.qrc
activityfw/activityserviceplugin/symbianinstaller/symbianinstaller.pro
activityfw/afactivitylauncher/afactivitylauncher.pro
activityfw/afactivitylauncher/bwins/afactivitylauncheru.def
activityfw/afactivitylauncher/eabi/afactivitylauncheru.def
activityfw/afactivitylauncher/group/afactivitylauncher.mmp
activityfw/afactivitylauncher/group/bld.inf
activityfw/afactivitylauncher/inc/afactivitylauncher_p.h
activityfw/afactivitylauncher/inc/afapplicationlauncher.h
activityfw/afactivitylauncher/src/afactivitylauncher.cpp
activityfw/afactivitylauncher/src/afactivitylauncher_p.cpp
activityfw/afactivitylauncher/src/afapplicationlauncher.cpp
activityfw/storage/client/bwins/afstorageclientu.def
activityfw/storage/client/eabi/afstorageclientu.def
activityfw/storage/client/inc/afstorageclient.h
activityfw/storage/client/inc/afstorageclient_p.h
activityfw/storage/client/inc/afstorageclientimp.h
activityfw/storage/client/inc/afthumbnailrequest_p.h
activityfw/storage/client/src/afstorageclient.cpp
activityfw/storage/client/src/afstorageclient_p.cpp
activityfw/storage/client/src/afstorageclientimp.cpp
activityfw/storage/client/src/afthumbnailrequest_p.cpp
activityfw/storage/common/inc/afcmd.h
activityfw/storage/common/inc/afentry.h
activityfw/storage/common/src/afentry.cpp
activityfw/storage/server/group/server.mmp
activityfw/storage/server/inc/afapplicationsengine.h
activityfw/storage/server/inc/afapplicationsstorage.h
activityfw/storage/server/inc/afobservertask.h
activityfw/storage/server/inc/afstorage.h
activityfw/storage/server/inc/afstorageasynctask.h
activityfw/storage/server/inc/afstoragesynctask.h
activityfw/storage/server/inc/aftask.h
activityfw/storage/server/inc/afthumbnailtask.h
activityfw/storage/server/src/afapplicationsengine.cpp
activityfw/storage/server/src/afapplicationsstorage.cpp
activityfw/storage/server/src/afobservertask.cpp
activityfw/storage/server/src/afserver.cpp
activityfw/storage/server/src/afsession.cpp
activityfw/storage/server/src/afstorage.cpp
activityfw/storage/server/src/afstorageasynctask.cpp
activityfw/storage/server/src/afstoragesynctask.cpp
activityfw/storage/server/src/afthumbnailtask.cpp
contentstorage/bwins/casathandleru.def
contentstorage/bwins/cautilsu.def
contentstorage/caclient/caclient.pro
contentstorage/caclient/s60/inc/cabitmapadapter.h
contentstorage/caclient/s60/src/cabitmapadapter.cpp
contentstorage/caclient/s60/src/camenuiconutility.cpp
contentstorage/caclient/src/caitemmodel.cpp
contentstorage/caclient/stub/src/hswidgetregistryservice.cpp
contentstorage/cahandler/app/inc/caapphandler.h
contentstorage/cahandler/app/src/caapphandler.cpp
contentstorage/camificonengine/src/cambmiconengine.cpp
contentstorage/casoftwareregistry/casoftwareregistry.pro
contentstorage/casoftwareregistry/s60/src/caprogresscanner.cpp
contentstorage/casoftwareregistry/s60/src/casoftwareregistry_p.cpp
contentstorage/casrv/caappscanner/src/casrvappscanner.cpp
contentstorage/casrv/calocalizerscanner/calocalizerscanner.pro
contentstorage/casrv/calocalizerscanner/src/calocalizerscannerproxy.cpp
contentstorage/casrv/casatmonitor/src/casatmonitor.cpp
contentstorage/casrv/causifscanner/inc/causifscanner.h
contentstorage/casrv/causifscanner/src/causifscanner.cpp
contentstorage/casrv/cawidgetscanner/group/cawidgetscanner.mmp
contentstorage/casrv/cawidgetscanner/inc/cawidgetscannerinstallnotifier.h
contentstorage/casrv/cawidgetscanner/inc/cawidgetscannerplugin.h
contentstorage/casrv/cawidgetscanner/src/cawidgetdescription.cpp
contentstorage/casrv/cawidgetscanner/src/cawidgetscannerinstallnotifier.cpp
contentstorage/casrv/cawidgetscanner/src/cawidgetscannerplugin.cpp
contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp
contentstorage/castorage/conf/CI_castoragedb.confml
contentstorage/castorage/conf/castoragedb.confml
contentstorage/castorage/conf/castoragedb.implml
contentstorage/castorage/conf/castoragedb_templates/castoragedb_variant.sql
contentstorage/castorage/data/castorage.db
contentstorage/castorage/data/castoragedb_create.sql
contentstorage/castorage/inc/casqlcommands.h
contentstorage/castorage/src/casqlquery.cpp
contentstorage/cautils/cautils.pro
contentstorage/cautils/inc/cautils.h
contentstorage/cautils/src/cautils.cpp
contentstorage/eabi/casathandleru.def
contentstorage/eabi/cautilsu.def
contentstorage/extinc/casathandler.h
contentstorage/extsrc/casathandler.cpp
contentstorage/group/camenu.mmp
contentstorage/group/casathandler.mmp
contentstorage/group/group.pro
contentstorage/inc/cadef.h
contentstorage/srvinc/cainstallnotifier.h
contentstorage/srvinc/cainstallstrategy.h
contentstorage/srvsrc/cainstallnotifier.cpp
contentstorage/srvsrc/cainstallstrategy.cpp
contentstorage/srvsrc/cammcwatcher.cpp
homescreensrv.pro
homescreensrv_plat/activity_framework_api/activity_framework_api.pro
homescreensrv_plat/activity_framework_api/afstorageglobals.h
homescreensrv_plat/contentstorage_api/caitemmodel.h
homescreensrv_plat/contentstorage_api/camenuiconutility.h
homescreensrv_plat/contentstorage_api/contentstorage_api.pro
homescreensrv_plat/homescreen_information_api/homescreen_information_api.pro
homescreensrv_plat/hswidgetmodel_api/hswidgetmodel_api.pro
homescreensrv_plat/menu_sat_interface_api/menu_sat_interface_api.pro
homescreensrv_plat/taskswitcher_api/taskswitcher_api.pro
package_definition.xml
package_map.xml
rom/bld.inf
rom/homescreensrv_core.iby
sis/homescreensrv.pkg
sis/homescreensrv_sisx.bat
sis/homescreensrv_ut_applib.pkg
sis/homescreensrv_ut_applib_sisx.bat
sis/rd-key.pem
sis/rd.cer
taskswitcher/activitytsplugin/activitytsplugin.pro
taskswitcher/activitytsplugin/data/activitytsplugin.xml
taskswitcher/activitytsplugin/inc/activitytsentry.h
taskswitcher/activitytsplugin/inc/activitytsmodel.h
taskswitcher/activitytsplugin/inc/activitytsplugin.h
taskswitcher/activitytsplugin/src/activitytsentry.cpp
taskswitcher/activitytsplugin/src/activitytsmodel.cpp
taskswitcher/activitytsplugin/src/activitytsplugin.cpp
taskswitcher/backstepping/group/tsbackstepping.mmp
taskswitcher/backstepping/inc/tsbackstepping.h
taskswitcher/backstepping/inc/tsbacksteppingfilter.h
taskswitcher/backstepping/src/tsbackstepping.cpp
taskswitcher/backstepping/src/tsbacksteppingfilter.cpp
taskswitcher/client/client.pri
taskswitcher/client/s60/src/tssession.cpp
taskswitcher/inc/tstaskmonitorglobals.h
taskswitcher/rom/bld.inf
taskswitcher/rom/tstaskmonitor_core.iby
taskswitcher/screenshotplugin/group/tsscreenshotplugin.mmp
taskswitcher/screenshotplugin/inc/tsnotifier.h
taskswitcher/screenshotplugin/inc/tsorientationmonitor.h
taskswitcher/screenshotplugin/inc/tsorientationobserver.h
taskswitcher/screenshotplugin/inc/tsscreenshotnotifier.h
taskswitcher/screenshotplugin/inc/tsscreenshotplugin.h
taskswitcher/screenshotplugin/src/tsorientationmonitor.cpp
taskswitcher/screenshotplugin/src/tsscreenshotnotifier.cpp
taskswitcher/screenshotplugin/src/tsscreenshotplugin.cpp
taskswitcher/server/inc/tsdatalist.h
taskswitcher/server/inc/tsenv.h
taskswitcher/server/inc/tsmodel.h
taskswitcher/server/inc/tsmodelitem.h
taskswitcher/server/inc/tsrunningapp.h
taskswitcher/server/inc/tsrunningappmodel.h
taskswitcher/server/inc/tsrunningappserver.h
taskswitcher/server/inc/tsrunningappstorage.h
taskswitcher/server/inc/tsscreenshotprovider.h
taskswitcher/server/inc/tsservice.h
taskswitcher/server/inc/tsservicesproviderconfig.h
taskswitcher/server/inc/tsstorage.h
taskswitcher/server/inc/tswindowgroupsmonitor.h
taskswitcher/server/server.pro
taskswitcher/server/src/main.cpp
taskswitcher/server/src/tsdatalist.cpp
taskswitcher/server/src/tsenv.cpp
taskswitcher/server/src/tsmodelitem.cpp
taskswitcher/server/src/tsrunningapp.cpp
taskswitcher/server/src/tsrunningappmodel.cpp
taskswitcher/server/src/tsrunningappserver.cpp
taskswitcher/server/src/tsrunningappstorage.cpp
taskswitcher/server/src/tsscreenshotprovider.cpp
taskswitcher/server/src/tsservice.cpp
taskswitcher/server/src/tsservicesproviderconfig.cpp
taskswitcher/server/src/tsstorage.cpp
taskswitcher/server/src/tswindowgroupsmonitor.cpp
taskswitcher/sis/stubs/taskmonitor_stub.pkg
taskswitcher/sis/stubs/taskmonitor_stub.sis
taskswitcher/sis/taskmonitor.pkg
taskswitcher/taskswitcher.pro
taskswitcher/utils/inc/tsentry.h
taskswitcher/utils/inc/tsentrykeygenerator.h
taskswitcher/utils/inc/tsidlist.h
taskswitcher/utils/inc/tsthumbnailobserver.h
taskswitcher/utils/inc/tsthumbnailprovider.h
taskswitcher/utils/inc/tswindowgroupsobserver.h
taskswitcher/utils/src/tsentry.cpp
taskswitcher/utils/src/tsentrykeygenerator.cpp
taskswitcher/utils/src/tsidlist.cpp
taskswitcher/utils/src/tsthumbnailprovider.cpp
taskswitcher/utils/src/tswindowgroupsmonitor.cpp
tsdevicedialog/rom.pri
tsdevicedialog/rom/tsapplication_core.iby
tsdevicedialog/rom/tsapplication_resources.iby
tsdevicedialog/rom/tsdevicedialog_core.iby
tsdevicedialog/rom/tsdevicedialog_resources.iby
tsdevicedialog/tsdevicedialog.pro
tsdevicedialog/tsdevicedialogplugin/inc/tsactivitymodelitem.h
tsdevicedialog/tsdevicedialogplugin/inc/tsmodel.h
tsdevicedialog/tsdevicedialogplugin/inc/tsmodelitem.h
tsdevicedialog/tsdevicedialogplugin/resource/layout.docml
tsdevicedialog/tsdevicedialogplugin/src/tsactivitymodelitem.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsentrymodelitem.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsmodelitem.cpp
tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.pro
tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.qrc
utils/tsimageutils/group/bld.inf
utils/tsimageutils/group/tsimageutils.mmp
utils/tsimageutils/inc/tsgraphicfilescalinghandler.h
utils/tsimageutils/src/tsgraphicfilescalinghandler.cpp
utils/tsimageutils/tsimageutils.pro
utils/utils.pro
--- a/activityfw/activityfw.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityfw.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -28,6 +28,4 @@
     SUBDIRS +=  activityserviceplugin/tsrc \
 }
 
-symbian:SUBDIRS += activityserviceplugin/symbianinstaller
-
 symbian:include(rom.pri)
\ No newline at end of file
--- a/activityfw/activityserviceplugin/activityserviceplugin.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityserviceplugin/activityserviceplugin.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -20,6 +20,9 @@
 CONFIG += plugin 
 include(activityserviceplugin.pri)
 
+CONFIG += qtservice 
+QTSERVICE.DESCRIPTOR = data/afservice.xml
+
 DEFINES += AFACTIVITIES_LIB
 
 INCLUDEPATH += ./inc \
@@ -90,7 +93,7 @@
     xml.sources = ./data/afservice.xml
     xml.path = $$RESOURCE_FILES_DIR/activity
     
-    DEPLOYMENT += xml
+    DEPLOYMENT += xml plugin
 
     #temporary workaround
     BLD_INF_RULES.prj_exports += "data/afservice.xml z:/resource/activity/afservice.xml"
--- a/activityfw/activityserviceplugin/inc/afmanager.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityserviceplugin/inc/afmanager.h	Mon Oct 04 00:38:31 2010 +0300
@@ -39,7 +39,7 @@
     void launchActivity(const QString &uri);
     void launchActivity(const QUrl &uri);
     void launchActivity(int applicationId, const QString &activityId, const QVariantHash& parameters = QVariantHash());
-    void getThumbnail(QSize resolution,const QString &thumbnailPath, void *data =0);
+    void getThumbnail(const QString &thumbnailPath, void *data =0);
 
 signals:
     void thumbnailReady(QPixmap, void *);
--- a/activityfw/activityserviceplugin/inc/afstorageproxy.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityserviceplugin/inc/afstorageproxy.h	Mon Oct 04 00:38:31 2010 +0300
@@ -33,8 +33,6 @@
     virtual ~AfStorageProxy();
 
 public:    
-    bool addActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot);
-    bool updateActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot);
     bool saveActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot);
     bool removeActivity(int applicationId, const QString &activityId);   
     bool removeApplicationActivities(int applicationId);
@@ -44,7 +42,7 @@
     bool activityMetaData(QVariantHash &metadata, int applicationId, const QString &activityId);
     bool waitActivity();    
     bool launchActivity(int applicationId, const QString &activityUri);
-    bool getThumbnail(const QSize &size, const QString &imagePath, void *userData);
+    bool getThumbnail(const QString &imagePath, void *userData);
     bool notifyDataChange();
 
 signals:
--- a/activityfw/activityserviceplugin/s60/inc/afstorageproxy_p.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityserviceplugin/s60/inc/afstorageproxy_p.h	Mon Oct 04 00:38:31 2010 +0300
@@ -36,8 +36,6 @@
     ~AfStorageProxyPrivate();
 
 public:    
-    bool addActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot);
-    bool updateActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot);
     bool saveActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot);
     bool removeActivity(int applicationId, const QString &activityId);   
     bool removeApplicationActivities(int applicationId);
@@ -47,7 +45,7 @@
     bool activityMetaData(QVariantHash &metadata, int applicationId, const QString &activityId);
     bool waitActivity();    
     bool launchActivity(int applicationId, const QString &activityUri);
-    bool getThumbnail(const QSize &size, const QString &imagePath, void *userData);
+    bool getThumbnail(const QString &imagePath, void *userData);
     bool notifyDataChange();
 
 public: // from MAfAsyncRequestObserver
@@ -62,6 +60,9 @@
     QVariantHash extractMetadata(CAfEntry *entry, bool includePublicData);
     QString activityDisplayText(CAfEntry *entry);
     
+    TTime convertQDateTimeToTTime(const QDateTime &timestamp) const;
+    QDateTime convertTTimeToQDateTime(const TTime &s60Time) const;
+    
 private:
     CAfStorageClient *mClient;
     AfStorageProxy *q_ptr;
--- a/activityfw/activityserviceplugin/s60/src/afstorageproxy_p.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityserviceplugin/s60/src/afstorageproxy_p.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -21,6 +21,7 @@
 
 #include <QSize>
 #include <QPixmap>
+#include <QDateTime>
 
 #include <XQConversions>
 
@@ -45,38 +46,6 @@
     mAppArcSession.Close();
 }
 
-bool AfStorageProxyPrivate::addActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
-{    
-    int screenshotHandle(-1);
-    CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
-    if (bitmap) {
-        screenshotHandle = bitmap->Handle();
-    }
-    
-    CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata);
-    int result = mClient->addActivity(*entry, screenshotHandle);    
-    delete entry;
-    delete bitmap;
-    
-    return KErrNone == result;
-}
-
-bool AfStorageProxyPrivate::updateActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
-{
-    int screenshotHandle(-1);
-    CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
-    if (bitmap) {
-        screenshotHandle = bitmap->Handle();
-    }
-    
-    CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata);
-    int result = mClient->updateActivity(*entry, screenshotHandle);    
-    delete entry;
-    delete bitmap;
-    
-    return KErrNone == result;
-}
-
 bool AfStorageProxyPrivate::saveActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
 {
     int screenshotHandle(-1);
@@ -181,10 +150,10 @@
     return KErrNone == result;
 }
 
-bool AfStorageProxyPrivate::getThumbnail(const QSize &size, const QString &imagePath, void *userData)
+bool AfStorageProxyPrivate::getThumbnail(const QString &imagePath, void *userData)
 {
     HBufC *source = XQConversions::qStringToS60Desc(imagePath);
-    int result = mClient->getThumbnail(TSize(size.width(), size.height()), *source, userData);
+    int result = mClient->getThumbnail(*source, userData);
     delete source;
     return KErrNone == result;
 }
@@ -229,7 +198,7 @@
 CAfEntry *AfStorageProxyPrivate::createFilterEntry(int applicationId, const QString &activityId)
 {   
     CAfEntry *entry(0); 
-    QT_TRAP_THROWING(entry = CAfEntry::NewL(0, applicationId, TPtrC(static_cast<const TUint16*>(activityId.utf16())), KNullDesC(), KNullDesC(), KNullDesC8(), KNullDesC8()));
+    QT_TRAP_THROWING(entry = CAfEntry::NewL(0, applicationId, TPtrC(static_cast<const TUint16*>(activityId.utf16())), KNullDesC(), KNullDesC(), KNullDesC8(), KNullDesC8(), TTime()));
     return entry;
 }
 
@@ -268,7 +237,8 @@
                                *customNameBuff,
                                KNullDesC, 
                                privateBuff, 
-                               publicBuff);
+                               publicBuff,
+                               convertQDateTimeToTTime(metadata[ActivityTimestamp].toDateTime()));
         CleanupStack::PopAndDestroy(customNameBuff);
         CleanupStack::PopAndDestroy(actBuff);
         CleanupStack::PopAndDestroy(&publicBuff);
@@ -304,6 +274,7 @@
     metadata.insert(ActivityScreenshotKeyword, XQConversions::s60DescToQString(entry->ImageSrc()));
     metadata.insert(ActivityPersistence, (entry->Flags() & CAfEntry::Persistent) ? true : false);
     metadata.insert(ActivityVisibility, (entry->Flags() & CAfEntry::Invisible) ? false : true); 
+    metadata.insert(ActivityTimestamp, convertTTimeToQDateTime(entry->Timestamp())); 
     return metadata;
 }
 
@@ -317,3 +288,23 @@
         return XQConversions::s60DescToQString(entry->CustomActivityName());
     }
 }
+
+// -----------------------------------------------------------------------------
+TTime AfStorageProxyPrivate::convertQDateTimeToTTime(const QDateTime &timestamp) const
+{
+    return TTime( _L( "19700000:" ) ) + TTimeIntervalSeconds( timestamp.toTime_t() ) +
+                         TTimeIntervalMicroSeconds( timestamp.time().msec() * 1000 );
+}
+
+// -----------------------------------------------------------------------------
+QDateTime AfStorageProxyPrivate::convertTTimeToQDateTime(const TTime &s60Time) const
+{
+    TTime posixEpoch(_L("19700000:"));
+    TTimeIntervalSeconds secondsFrom;
+    TTimeIntervalMicroSeconds microSecondsFrom;
+    s60Time.SecondsFrom(posixEpoch, secondsFrom);
+    microSecondsFrom = s60Time.MicroSecondsFrom(posixEpoch);
+    QDateTime retVal = QDateTime::fromTime_t(secondsFrom.Int());
+    retVal = retVal.addMSecs((microSecondsFrom.Int64() % TInt64(1000000) ) / TInt64(1000));
+    return retVal;    
+}
--- a/activityfw/activityserviceplugin/src/afactivitystorage_p.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityserviceplugin/src/afactivitystorage_p.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -18,6 +18,7 @@
 #include "afactivitystorage_p.h"
 
 #include <QPixmap>
+#include <QDateTime>
 
 #include <afstorageglobals.h>
 
@@ -34,6 +35,7 @@
     
     publicData.insert(ActivityApplicationKeyword, applicationId());
     publicData.insert(ActivityActivityKeyword, activityId);
+    publicData.insert(ActivityTimestamp, QDateTime::currentDateTime());
 
     return mConnection->saveActivity(applicationId(), activityId, publicData[ActivityApplicationName].toString(), activityData, publicData, screenshot);
 }
--- a/activityfw/activityserviceplugin/src/afmanager.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityserviceplugin/src/afmanager.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -97,9 +97,9 @@
     launchActivity(activity);
 }
 
-void AfManager::getThumbnail(QSize resolution,const QString &thumbnailPath, void *data)
+void AfManager::getThumbnail(const QString &thumbnailPath, void *data)
 {
-    mServiceProvider->getThumbnail(resolution, thumbnailPath, data);
+    mServiceProvider->getThumbnail(thumbnailPath, data);
 }
 
 void AfManager::launchActivity(const QVariantHash& activity)
--- a/activityfw/activityserviceplugin/src/afstorageproxy.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/activityserviceplugin/src/afstorageproxy.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -27,16 +27,6 @@
     delete d_ptr;
 }
 
-bool AfStorageProxy::addActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
-{
-    return d_ptr->addActivity(applicationId, activityId, customActivityName, activityData, metadata, screenshot);
-}
-
-bool AfStorageProxy::updateActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
-{
-    return d_ptr->updateActivity(applicationId, activityId, customActivityName, activityData, metadata, screenshot);
-}
-
 bool AfStorageProxy::saveActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
 {
     return d_ptr->saveActivity(applicationId, activityId, customActivityName, activityData, metadata, screenshot);
@@ -82,9 +72,9 @@
     return d_ptr->launchActivity(applicationId, activityUri);
 }
 
-bool AfStorageProxy::getThumbnail(const QSize &size, const QString &imagePath, void *userData)
+bool AfStorageProxy::getThumbnail(const QString &imagePath, void *userData)
 {
-    return d_ptr->getThumbnail(size, imagePath, userData);
+    return d_ptr->getThumbnail(imagePath, userData);
 }
 
 bool AfStorageProxy::notifyDataChange()
--- a/activityfw/activityserviceplugin/symbianinstaller/activityserviceinstaller/activityserviceinstaller.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <qservicemanager.h>
-#include <QCoreApplication>
-
-QTM_USE_NAMESPACE
-
-int main(int argc, char *argv[])
-{
-    QCoreApplication app(argc, argv);
-
-    QServiceManager manager;
-    bool ok = manager.addService(":/activityserviceplugin.xml");
-    if (!ok) {
-        int err = manager.error();
-        qFatal("%d ini", err);
-    }
-}
--- a/activityfw/activityserviceplugin/symbianinstaller/activityserviceinstaller/activityserviceinstaller.pro	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-
-TEMPLATE = app
-
-QT = core
-#CONFIG += no_icon
-
-CONFIG += mobility
-MOBILITY = serviceframework
-
-SOURCES += activityserviceinstaller.cpp
-
-RESOURCES += activityserviceinstaller.qrc
-
-symbian {
-    TARGET.CAPABILITY = ALL -TCB
-}
--- a/activityfw/activityserviceplugin/symbianinstaller/activityserviceinstaller/activityserviceinstaller.qrc	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<RCC>
-    <qresource prefix="/" >
-        <file alias="activityserviceplugin.xml">../../data/afservice.xml</file>
-    </qresource>
-</RCC>
--- a/activityfw/activityserviceplugin/symbianinstaller/symbianinstaller.pro	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-
-TEMPLATE = subdirs
-SUBDIRS = activityserviceinstaller
-
-symbian {
-    load(data_caging_paths) 
-
-    plugin.sources = afservice.dll
-    plugin.path = $$QT_PLUGINS_BASE_DIR 
-    
-    installer.pkg_postrules += "\"$${EPOCROOT}epoc32/release/$(PLATFORM)/$(TARGET)/activityserviceinstaller.exe\" \  
-                                         - \"!:\\sys\\bin\\activityserviceinstaller.exe\",FR,RB,RW"
-    
-    DEPLOYMENT += plugin installer
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/afactivitylauncher.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+symbian {
+    BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include \"group/bld.inf\""
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/bwins/afactivitylauncheru.def	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,7 @@
+EXPORTS
+	?NewLC@CAfActivityLauncher@@SAPAV1@AAVRApaLsSession@@AAVRWsSession@@@Z @ 1 NONAME ; class CAfActivityLauncher * CAfActivityLauncher::NewLC(class RApaLsSession &, class RWsSession &)
+	?launchActivityL@CAfActivityLauncherPrivate@@QAEXABVTDesC16@@@Z @ 2 NONAME ABSENT ; void CAfActivityLauncherPrivate::launchActivityL(class TDesC16 const &)
+	?launchActivityL@CAfActivityLauncher@@QAEXABVTDesC16@@@Z @ 3 NONAME ; void CAfActivityLauncher::launchActivityL(class TDesC16 const &)
+	?NewL@CAfActivityLauncher@@SAPAV1@AAVRApaLsSession@@AAVRWsSession@@@Z @ 4 NONAME ; class CAfActivityLauncher * CAfActivityLauncher::NewL(class RApaLsSession &, class RWsSession &)
+	??1CAfActivityLauncher@@UAE@XZ @ 5 NONAME ; CAfActivityLauncher::~CAfActivityLauncher(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/eabi/afactivitylauncheru.def	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,14 @@
+EXPORTS
+	_ZN19CAfActivityLauncher15launchActivityLERK7TDesC16 @ 1 NONAME
+	_ZN19CAfActivityLauncher4NewLER13RApaLsSessionR10RWsSession @ 2 NONAME
+	_ZN19CAfActivityLauncher5NewLCER13RApaLsSessionR10RWsSession @ 3 NONAME
+	_ZN19CAfActivityLauncherD0Ev @ 4 NONAME
+	_ZN19CAfActivityLauncherD1Ev @ 5 NONAME
+	_ZN19CAfActivityLauncherD2Ev @ 6 NONAME
+	_ZTI19CAfActivityLauncher @ 7 NONAME
+	_ZTI26CAfActivityLauncherPrivate @ 8 NONAME
+	_ZTI8CAfEntry @ 9 NONAME
+	_ZTV19CAfActivityLauncher @ 10 NONAME
+	_ZTV26CAfActivityLauncherPrivate @ 11 NONAME
+	_ZTV8CAfEntry @ 12 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/group/afactivitylauncher.mmp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+TARGET         afactivitylauncher.dll
+TARGETTYPE     dll
+UID            0x1000008d  0x20026784
+SECUREID       0x20026784
+
+CAPABILITY     ALL -TCB
+
+
+EPOCHEAPSIZE   0x100000 0x600000 // 1MB - 6MB
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE    ../inc
+SYSTEMINCLUDE  ../../inc
+
+SOURCEPATH     ../src
+SOURCE         afactivitylauncher.cpp
+SOURCE         afactivitylauncher_p.cpp
+SOURCE         afapplicationlauncher.cpp
+
+LIBRARY        euser.lib 
+LIBRARY        inetprotutil.lib
+LIBRARY        apgrfx.lib
+LIBRARY        cone.lib
+LIBRARY        apparc.lib
+LIBRARY        estor.lib
+LIBRARY        afstorageclient.lib
+STATICLIBRARY  afstoragecommon.lib
+
+DEBUGLIBRARY    flogger.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/group/bld.inf	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,21 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_MMPFILES
+afactivitylauncher.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/inc/afactivitylauncher_p.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef AFACTIVITYLAUNCHERPRIVATE_H
+#define AFACTIVITYLAUNCHERPRIVATE_H
+
+#include <e32base.h>
+
+#include <afasyncrequestobserver.h>
+#include "afapplicationlauncher.h"
+
+class CAfStorageClient;
+
+class CAfActivityLauncherPrivate : public CBase, public MAfAsyncRequestObserver
+{
+
+public:
+    static CAfActivityLauncherPrivate *NewL(RApaLsSession &apaLsSession, RWsSession &wsSession);
+    ~CAfActivityLauncherPrivate();
+
+private:
+    CAfActivityLauncherPrivate(RApaLsSession &apaLsSession, RWsSession &wsSession);
+    void ConstructL();
+    
+public: // from MAfAsyncRequestObserver
+    virtual void waitActivityRequestCompleted(int result, const TDesC8 &data);
+    virtual void getThumbnailRequestCompleted(int result, int bitmapHandle, void *userData);
+    virtual void dataChangeNotificationCompleted(int result);    
+    
+public:
+    void launchActivityL(const TDesC &uriDesc);
+    
+private:
+    CAfStorageClient *mActivitiesClient;
+    TAfApplicationLauncher mApplicationLauncher;
+    
+};
+
+#endif // AFACTIVITYLAUNCHERPRIVATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/inc/afapplicationlauncher.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef AFAPPLICATIONLAUNCHER_H
+#define AFAPPLICATIONLAUNCHER_H
+
+#include <e32base.h>
+#include <apgcli.h>
+#include <w32std.h>
+
+class TAfApplicationLauncher
+{
+public:
+    TAfApplicationLauncher(RApaLsSession &apaLsSession, RWsSession &wsSession);
+
+public:
+    TBool isRunning(TUid applicationId);
+    void startApplicationL(TUid applicationId, const TDesC &uri);
+
+private:
+    RApaLsSession &mApaLsSession;
+    RWsSession &mWsSession;
+
+};
+
+#endif // AFAPPLICATIONLAUNCHER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/src/afactivitylauncher.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "afactivitylauncher.h"
+#include "afactivitylauncher_p.h"
+
+// -----------------------------------------------------------------------------
+//  Public part of construction, destructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CAfActivityLauncher *CAfActivityLauncher::NewL(RApaLsSession &apaLsSession, RWsSession &wsSession)
+{
+    CAfActivityLauncher *self = CAfActivityLauncher::NewLC(apaLsSession, wsSession);
+    CleanupStack::Pop(self);
+    return self;
+}
+
+EXPORT_C CAfActivityLauncher *CAfActivityLauncher::NewLC(RApaLsSession &apaLsSession, RWsSession &wsSession)
+{
+    CAfActivityLauncher *self = new (ELeave) CAfActivityLauncher();
+    CleanupStack::PushL(self);
+    self->ConstructL(apaLsSession, wsSession);
+    return self;
+}
+
+EXPORT_C CAfActivityLauncher::~CAfActivityLauncher()
+{
+    delete mImplementation;
+}
+
+// -----------------------------------------------------------------------------
+//  Private part of construction
+// -----------------------------------------------------------------------------
+//
+CAfActivityLauncher::CAfActivityLauncher()
+{
+}
+
+void CAfActivityLauncher::ConstructL(RApaLsSession &apaLsSession, RWsSession &wsSession)
+{
+    mImplementation = CAfActivityLauncherPrivate::NewL(apaLsSession, wsSession);
+}
+
+// -----------------------------------------------------------------------------
+//  Actual activity launching
+// -----------------------------------------------------------------------------
+//
+
+EXPORT_C void CAfActivityLauncher::launchActivityL(const TDesC &uriDesc)
+{
+    mImplementation->launchActivityL(uriDesc);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/src/afactivitylauncher_p.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "afactivitylauncher_p.h"
+
+#include <uri16.h>
+#include <delimitedquery16.h>
+
+#include <afstorageclient.h>
+#include <afentry.h>
+
+// -----------------------------------------------------------------------------
+//  Public part of construction, destructor
+// -----------------------------------------------------------------------------
+//
+CAfActivityLauncherPrivate *CAfActivityLauncherPrivate::NewL(RApaLsSession &apaLsSession, RWsSession &wsSession)
+{
+    CAfActivityLauncherPrivate *self = new (ELeave)CAfActivityLauncherPrivate(apaLsSession, wsSession);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+}
+
+CAfActivityLauncherPrivate::~CAfActivityLauncherPrivate()
+{
+    delete mActivitiesClient;
+}
+
+// -----------------------------------------------------------------------------
+//  Private part of construction
+// -----------------------------------------------------------------------------
+//
+CAfActivityLauncherPrivate::CAfActivityLauncherPrivate(RApaLsSession &apaLsSession, RWsSession &wsSession) : mApplicationLauncher(apaLsSession, wsSession)
+{
+}
+
+void CAfActivityLauncherPrivate::ConstructL()
+{
+    mActivitiesClient = CAfStorageClient::NewL(*this);
+}
+
+// -----------------------------------------------------------------------------
+//  Implementation of MAfAsyncRequestObserver interface. We don't need any
+//  notifications, but we have to pass an instance of this interface to
+//  CAfStorageClient constructor.
+// -----------------------------------------------------------------------------
+//
+void CAfActivityLauncherPrivate::waitActivityRequestCompleted(int /*result*/, const TDesC8 &/*data*/)
+{
+}
+
+void CAfActivityLauncherPrivate::getThumbnailRequestCompleted(int /*result*/, int /*bitmapHandle*/, void */*userData*/)
+{
+}
+
+void CAfActivityLauncherPrivate::dataChangeNotificationCompleted(int /*result*/)
+{
+} 
+
+// -----------------------------------------------------------------------------
+//  Actual activity launching
+// -----------------------------------------------------------------------------
+//
+
+void CAfActivityLauncherPrivate::launchActivityL(const TDesC &uriDesc)
+{
+    TUriParser16 parser;
+    parser.Parse(uriDesc);
+
+    if (parser.Extract(EUriScheme).Compare(_L("appto")) == 0) {
+        TLex16 uidParser(parser.Extract(EUriHost));        
+        TUint uid;
+        User::LeaveIfError(uidParser.Val(uid, EHex));
+        
+        if (mApplicationLauncher.isRunning(TUid::Uid(uid))) {        
+            CAfEntry *launchRequest = CAfEntry::NewLC(0, uid, uriDesc, KNullDesC(), KNullDesC(), KNullDesC8(), KNullDesC8(), TTime());
+            User::LeaveIfError(mActivitiesClient->launchActivity(*launchRequest));
+            CleanupStack::PopAndDestroy(launchRequest);
+        } else {
+            mApplicationLauncher.startApplicationL(TUid::Uid(uid), uriDesc);
+        }        
+    } else {
+        User::Leave(KErrArgument);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/afactivitylauncher/src/afapplicationlauncher.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include "afapplicationlauncher.h"
+
+#include <apacmdln.h>
+#include <eikenv.h>
+#include <apgtask.h>
+
+// -----------------------------------------------------------------------------
+//  Construction
+// -----------------------------------------------------------------------------
+//
+TAfApplicationLauncher::TAfApplicationLauncher(RApaLsSession &apaLsSession, RWsSession &wsSession) : mApaLsSession(apaLsSession), mWsSession(wsSession)
+{
+}
+
+// -----------------------------------------------------------------------------
+//  
+// -----------------------------------------------------------------------------
+//
+TBool TAfApplicationLauncher::isRunning(TUid applicationId)
+{
+    TApaTaskList taskList(mWsSession);
+    TApaTask task = taskList.FindApp(applicationId);
+    return task.Exists();
+}
+
+void TAfApplicationLauncher::startApplicationL(TUid applicationId, const TDesC &uri)
+{
+    _LIT(KActivityMarker, "-activity ");
+    RBuf commandLine;
+    CleanupClosePushL(commandLine);    
+    commandLine.ReAllocL(KActivityMarker().Length() + uri.Length());
+    commandLine.Append(KActivityMarker());
+    commandLine.Append(uri);
+    
+    TApaAppInfo appInfo;
+    User::LeaveIfError(mApaLsSession.GetAppInfo(appInfo, applicationId));
+
+    RProcess application;
+    CleanupClosePushL(application);
+    User::LeaveIfError(application.Create(appInfo.iFullName, commandLine));
+    application.Resume();
+
+    CleanupStack::PopAndDestroy(&application);
+    CleanupStack::PopAndDestroy(&commandLine);
+}
--- a/activityfw/storage/client/bwins/afstorageclientu.def	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/bwins/afstorageclientu.def	Mon Oct 04 00:38:31 2010 +0300
@@ -1,18 +1,17 @@
 EXPORTS
 	?launchActivity@CAfStorageClient@@QAEHABVCAfEntry@@@Z @ 1 NONAME ; int CAfStorageClient::launchActivity(class CAfEntry const &)
-	?updateActivity@CAfStorageClient@@QAEHABVCAfEntry@@H@Z @ 2 NONAME ; int CAfStorageClient::updateActivity(class CAfEntry const &, int)
+	?updateActivity@CAfStorageClient@@QAEHABVCAfEntry@@H@Z @ 2 NONAME ABSENT ; int CAfStorageClient::updateActivity(class CAfEntry const &, int)
 	?saveActivity@CAfStorageClient@@QAEHABVCAfEntry@@H@Z @ 3 NONAME ; int CAfStorageClient::saveActivity(class CAfEntry const &, int)
-	?addActivity@CAfStorageClient@@QAEHABVCAfEntry@@H@Z @ 4 NONAME ; int CAfStorageClient::addActivity(class CAfEntry const &, int)
+	?addActivity@CAfStorageClient@@QAEHABVCAfEntry@@H@Z @ 4 NONAME ABSENT ; int CAfStorageClient::addActivity(class CAfEntry const &, int)
 	??1CAfStorageClient@@UAE@XZ @ 5 NONAME ; CAfStorageClient::~CAfStorageClient(void)
 	?notifyDataChange@CAfStorageClient@@QAEHXZ @ 6 NONAME ; int CAfStorageClient::notifyDataChange(void)
 	?waitActivity@CAfStorageClient@@QAEHXZ @ 7 NONAME ; int CAfStorageClient::waitActivity(void)
 	?applicationActivities@CAfStorageClient@@QAEHAAV?$RPointerArray@VCAfEntry@@@@ABVCAfEntry@@@Z @ 8 NONAME ; int CAfStorageClient::applicationActivities(class RPointerArray<class CAfEntry> &, class CAfEntry const &)
 	?NewL@CAfStorageClient@@SAPAV1@AAVMAfAsyncRequestObserver@@@Z @ 9 NONAME ; class CAfStorageClient * CAfStorageClient::NewL(class MAfAsyncRequestObserver &)
-	?NewLC@CAfStorageClient@@SAPAV1@AAVMAfAsyncRequestObserver@@@Z @ 10 NONAME ; class CAfStorageClient * CAfStorageClient::NewLC(class MAfAsyncRequestObserver &)
-	?getThumbnail@CAfStorageClient@@QAEHABVTSize@@ABVTDesC16@@PAX@Z @ 11 NONAME ; int CAfStorageClient::getThumbnail(class TSize const &, class TDesC16 const &, void *)
-	?removeActivity@CAfStorageClient@@QAEHABVCAfEntry@@@Z @ 12 NONAME ; int CAfStorageClient::removeActivity(class CAfEntry const &)
-	?removeApplicationActivities@CAfStorageClient@@QAEHABVCAfEntry@@@Z @ 13 NONAME ; int CAfStorageClient::removeApplicationActivities(class CAfEntry const &)
-	?activities@CAfStorageClient@@QAEHAAV?$RPointerArray@VCAfEntry@@@@@Z @ 14 NONAME ABSENT ; int CAfStorageClient::activities(class RPointerArray<class CAfEntry> &)
+	?activities@CAfStorageClient@@QAEHAAV?$RPointerArray@VCAfEntry@@@@H@Z @ 10 NONAME ; int CAfStorageClient::activities(class RPointerArray<class CAfEntry> &, int)
+	?NewLC@CAfStorageClient@@SAPAV1@AAVMAfAsyncRequestObserver@@@Z @ 11 NONAME ; class CAfStorageClient * CAfStorageClient::NewLC(class MAfAsyncRequestObserver &)
+	?getThumbnail@CAfStorageClient@@QAEHABVTDesC16@@PAX@Z @ 12 NONAME ; int CAfStorageClient::getThumbnail(class TDesC16 const &, void *)
+	?removeActivity@CAfStorageClient@@QAEHABVCAfEntry@@@Z @ 13 NONAME ; int CAfStorageClient::removeActivity(class CAfEntry const &)
+	?removeApplicationActivities@CAfStorageClient@@QAEHABVCAfEntry@@@Z @ 14 NONAME ; int CAfStorageClient::removeApplicationActivities(class CAfEntry const &)
 	?activityData@CAfStorageClient@@QAEHAAPAVCAfEntry@@ABV2@@Z @ 15 NONAME ; int CAfStorageClient::activityData(class CAfEntry * &, class CAfEntry const &)
-	?activities@CAfStorageClient@@QAEHAAV?$RPointerArray@VCAfEntry@@@@H@Z @ 16 NONAME ; int CAfStorageClient::activities(class RPointerArray<class CAfEntry> &, int)
 
--- a/activityfw/storage/client/eabi/afstorageclientu.def	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/eabi/afstorageclientu.def	Mon Oct 04 00:38:31 2010 +0300
@@ -1,13 +1,13 @@
 EXPORTS
-	_ZN16CAfStorageClient10activitiesER13RPointerArrayI8CAfEntryE @ 1 NONAME ABSENT
-	_ZN16CAfStorageClient11addActivityERK8CAfEntryi @ 2 NONAME
+	_ZN16CAfStorageClient10activitiesER13RPointerArrayI8CAfEntryEi @ 1 NONAME
+	_ZN16CAfStorageClient11addActivityERK8CAfEntryi @ 2 NONAME ABSENT
 	_ZN16CAfStorageClient12activityDataERP8CAfEntryRKS0_ @ 3 NONAME
-	_ZN16CAfStorageClient12getThumbnailERK5TSizeRK7TDesC16Pv @ 4 NONAME
+	_ZN16CAfStorageClient12getThumbnailERK7TDesC16Pv @ 4 NONAME
 	_ZN16CAfStorageClient12saveActivityERK8CAfEntryi @ 5 NONAME
 	_ZN16CAfStorageClient12waitActivityEv @ 6 NONAME
 	_ZN16CAfStorageClient14launchActivityERK8CAfEntry @ 7 NONAME
 	_ZN16CAfStorageClient14removeActivityERK8CAfEntry @ 8 NONAME
-	_ZN16CAfStorageClient14updateActivityERK8CAfEntryi @ 9 NONAME
+	_ZN16CAfStorageClient14updateActivityERK8CAfEntryi @ 9 NONAME ABSENT
 	_ZN16CAfStorageClient16notifyDataChangeEv @ 10 NONAME
 	_ZN16CAfStorageClient21applicationActivitiesER13RPointerArrayI8CAfEntryERKS1_ @ 11 NONAME
 	_ZN16CAfStorageClient27removeApplicationActivitiesERK8CAfEntry @ 12 NONAME
@@ -26,5 +26,4 @@
 	_ZTV26CAfThumbnailRequestPrivate @ 25 NONAME
 	_ZTV30RAfStorageClientImplementation @ 26 NONAME
 	_ZTV8CAfEntry @ 27 NONAME
-	_ZN16CAfStorageClient10activitiesER13RPointerArrayI8CAfEntryEi @ 28 NONAME
 
--- a/activityfw/storage/client/inc/afstorageclient.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/inc/afstorageclient.h	Mon Oct 04 00:38:31 2010 +0300
@@ -35,8 +35,6 @@
     void ConstructL(MAfAsyncRequestObserver &observer);
     
 public:    
-    IMPORT_C int addActivity(const CAfEntry &entry, TInt imageHandle);
-    IMPORT_C int updateActivity(const CAfEntry &entry, TInt imageHandle);
     IMPORT_C int saveActivity(const CAfEntry &entry, TInt imageHandle);
     IMPORT_C int removeActivity(const CAfEntry &entry);
     IMPORT_C int removeApplicationActivities(const CAfEntry &entry);
@@ -45,7 +43,7 @@
     IMPORT_C int activityData(CAfEntry *&dst, const CAfEntry &entry);
     IMPORT_C int waitActivity();
     IMPORT_C int launchActivity(const CAfEntry &entry);
-    IMPORT_C int getThumbnail(const TSize &size, const TDesC &imagePath, void *userData);
+    IMPORT_C int getThumbnail(const TDesC &imagePath, void *userData);
     IMPORT_C int notifyDataChange();
 
 private: 
--- a/activityfw/storage/client/inc/afstorageclient_p.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/inc/afstorageclient_p.h	Mon Oct 04 00:38:31 2010 +0300
@@ -36,8 +36,6 @@
 
 public:
     int connect();
-    int addActivity(const CAfEntry &sourceEntry, TInt imageHandle);
-    int updateActivity(const CAfEntry &sourceEntry, TInt imageHandle);
     int saveActivity(const CAfEntry &entry, TInt imageHandle);
     int removeActivity(const CAfEntry &templateEntry);
     int removeApplicationActivities(const CAfEntry &templateEntry);
@@ -45,7 +43,7 @@
     int applicationActivities(RPointerArray<CAfEntry> &dst, const CAfEntry &entry);
     int activityData(CAfEntry *&resultEntry, const CAfEntry &templateEntry);
     int waitActivity();
-    int getThumbnail(const TSize &size, const TDesC &imagePath, void *userData);
+    int getThumbnail(const TDesC &imagePath, void *userData);
     int notifyDataChange();
     int launchActivity(const CAfEntry &templateEntry);
 
--- a/activityfw/storage/client/inc/afstorageclientimp.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/inc/afstorageclientimp.h	Mon Oct 04 00:38:31 2010 +0300
@@ -42,9 +42,8 @@
                   const CAfEntry& templateEntry,
                   TInt limit);
     
-    void getThumbnailL(TSize size, 
-                      const TDesC& source,
-                      TAny *userData );
+    void getThumbnailL(const TDesC& source,
+                       TAny *userData );
 
     void connectL();
 
--- a/activityfw/storage/client/inc/afthumbnailrequest_p.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/inc/afthumbnailrequest_p.h	Mon Oct 04 00:38:31 2010 +0300
@@ -28,7 +28,6 @@
 public:
     static void NewLD(MAfAsyncRequestObserver &observer, 
                       MAfAsyncSession & session,
-                      TSize resolution,
                       const TDesC& source,
                       TAny* userData);
 
@@ -46,7 +45,7 @@
                                MAfAsyncSession &, 
                                TAny*);
 
-    void ConstructL(TSize resolution, const TDesC& source);
+    void ConstructL(const TDesC& source);
 
 private:
     MAfAsyncRequestObserver &mObserver;
--- a/activityfw/storage/client/src/afstorageclient.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/src/afstorageclient.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -74,32 +74,6 @@
 
 // -----------------------------------------------------------------------------
 /**
- * Function add new activity
- * @param entry - activity entry data structure
- * @param imageHandle - handle for activity thumbnail
- * @return 0 on success, error code otherwise
- */
-EXPORT_C int CAfStorageClient::addActivity(const CAfEntry &entry, TInt imageHandle)
-{
-    RDebug::Print(_L("This method is deprecated, please use CAfStorageClient::saveActivity instead"));
-    return d_ptr->addActivity(entry, imageHandle);
-}
-
-// -----------------------------------------------------------------------------
-/**
- * Function update existing activity
- * @param entry - activity entry data structure
- * @param imageHandle - handle for activity thumbnail
- * @return 0 on success, error code otherwise
- */
-EXPORT_C int CAfStorageClient::updateActivity(const CAfEntry &entry, TInt imageHandle)
-{
-    RDebug::Print(_L("This method is deprecated, please use CAfStorageClient::saveActivity instead"));
-    return d_ptr->updateActivity(entry, imageHandle);
-}
-
-// -----------------------------------------------------------------------------
-/**
  * Function save an activity (add new one or update existing one)
  * @param entry - activity entry data structure
  * @param imageHandle - handle for activity thumbnail
@@ -189,9 +163,9 @@
 }
 
 // -----------------------------------------------------------------------------
-EXPORT_C int CAfStorageClient::getThumbnail(const TSize &size, const TDesC &imagePath, void *userData)
+EXPORT_C int CAfStorageClient::getThumbnail(const TDesC &imagePath, void *userData)
 {
-    return d_ptr->getThumbnail(size, imagePath, userData);
+    return d_ptr->getThumbnail(imagePath, userData);
 }
 
 // -----------------------------------------------------------------------------
--- a/activityfw/storage/client/src/afstorageclient_p.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/src/afstorageclient_p.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -77,26 +77,6 @@
 // -----------------------------------------------------------------------------
 /**
  * Function implementation
- * @see AfStorageClient::addActivity(const CAfEntry &,const QPixmap&)
- */
-int CAfStorageClientPrivate::addActivity(const CAfEntry &entry, TInt imageHandle)
-{
-    return execute(AddActivity, entry, imageHandle);
-}
-
-// -----------------------------------------------------------------------------
-/**
- * Function implementation
- * @see AfStorageClient::updateActivity(const CAfEntry &,const QPixmap&)
- */
-int CAfStorageClientPrivate::updateActivity(const CAfEntry &entry, TInt imageHandle)
-{
-    return execute(UpdateActivity, entry, imageHandle);
-}
-
-// -----------------------------------------------------------------------------
-/**
- * Function implementation
  * @see AfStorageClient::saveActivity(const CAfEntry &,const QPixmap&)
  */
 int CAfStorageClientPrivate::saveActivity(const CAfEntry &entry, TInt imageHandle)
@@ -180,11 +160,11 @@
 // -----------------------------------------------------------------------------
 /**
  * Function implementation
- * @see AfStorageClient::getThumbnail(const TSize &size, const TDesC &imagePath, void *userData)
+ * @see AfStorageClient::getThumbnail(const TDesC &imagePath, void *userData)
  */
-int CAfStorageClientPrivate::getThumbnail(const TSize &size, const TDesC &imagePath, void *userData)
+int CAfStorageClientPrivate::getThumbnail(const TDesC &imagePath, void *userData)
 {
-    TRAPD(errNo, mImplementation.getThumbnailL(size, imagePath, userData);)
+    TRAPD(errNo, mImplementation.getThumbnailL(imagePath, userData);)
     return errNo;
 }
 
@@ -219,8 +199,6 @@
 {
     TRAPD(errNo,
         switch (function) {
-        case AddActivity:
-        case UpdateActivity:
         case SaveActivity:
         case RemoveActivity:
         case RemoveApplicationActivities:
--- a/activityfw/storage/client/src/afstorageclientimp.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/src/afstorageclientimp.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -153,11 +153,10 @@
 }
 
 // -----------------------------------------------------------------------------
-void RAfStorageClientImplementation::getThumbnailL(TSize size, 
-                                                   const TDesC& source, 
+void RAfStorageClientImplementation::getThumbnailL(const TDesC& source, 
                                                    TAny *userData )
 {
-    CAfThumbnailRequestPrivate::NewLD(mObserver, *this, size, source, userData);
+    CAfThumbnailRequestPrivate::NewLD(mObserver, *this, source, userData);
 }
 
 // -----------------------------------------------------------------------------
--- a/activityfw/storage/client/src/afthumbnailrequest_p.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/client/src/afthumbnailrequest_p.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -33,13 +33,12 @@
  */
 void CAfThumbnailRequestPrivate::NewLD(MAfAsyncRequestObserver &observer, 
                                        MAfAsyncSession & session,
-                                       TSize resolution, 
                                        const TDesC& source,
                                        TAny* userData)
 {
     CAfThumbnailRequestPrivate* self = new(ELeave)CAfThumbnailRequestPrivate(observer, session, userData);
     CleanupStack::PushL(self);
-    self->ConstructL(resolution, source);
+    self->ConstructL(source);
     session.PushL(self);
     CleanupStack::Pop(self);
 }
@@ -66,13 +65,12 @@
 // -----------------------------------------------------------------------------
 /**
  * Second phase constructor
- * @param resolution - requested thumbnail resolution
  * @param source - thumbnail source location
  */
-void CAfThumbnailRequestPrivate::ConstructL(TSize resolution, const TDesC& source)
+void CAfThumbnailRequestPrivate::ConstructL(const TDesC& source)
 {
-    mIds[0] = resolution.iWidth;
-    mIds[1] = resolution.iHeight;
+    mIds[0] = 0;
+    mIds[1] = 0;
     CAfEntry::CopyL(mImgSrc, source);
     mSession.sendAsync(GetThumbnail, 
                        TIpcArgs(&mIds[0],&mIds[1], &mImgSrc),
--- a/activityfw/storage/common/inc/afcmd.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/common/inc/afcmd.h	Mon Oct 04 00:38:31 2010 +0300
@@ -28,9 +28,7 @@
 
 
 enum ActivityCmd {
-    AddActivity =0,
-    UpdateActivity,
-    RemoveActivity,
+    RemoveActivity=0,
     RemoveApplicationActivities,
     Activities,
     ApplicationActivities,
--- a/activityfw/storage/common/inc/afentry.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/common/inc/afentry.h	Mon Oct 04 00:38:31 2010 +0300
@@ -52,7 +52,8 @@
                           const TDesC &customActivityName,
                           const TDesC &imgSrc,
                           const TDesC8 &privateData,
-                          const TDesC8 &publicData);
+                          const TDesC8 &publicData,
+                          const TTime &timestamp);
 
     static CAfEntry* NewLC(TInt flags,
                            TInt applicationId,
@@ -60,7 +61,8 @@
                            const TDesC &customActivityName,
                            const TDesC &imgSrc,
                            const TDesC8 &privateData,
-                           const TDesC8 &publicData);
+                           const TDesC8 &publicData,
+                           const TTime &timestamp);
     
     static CAfEntry* NewLC(const RMessage2& msg,
                            int offset =0);
@@ -86,6 +88,8 @@
     const TDesC& ActivityId() const;
     
     const TDesC& CustomActivityName() const;
+    
+    TTime Timestamp() const;
 
     const TDesC& ImageSrc() const;
 
@@ -112,7 +116,8 @@
                     const TDesC &customActivityName,
                     const TDesC &imgSrc,
                     const TDesC8 &privateData,
-                    const TDesC8 &publicData);
+                    const TDesC8 &publicData,
+                    const TTime &timestamp);
 
     static void InternalizeL(RBuf8 &dst, RReadStream &src);
 
@@ -129,6 +134,7 @@
     RBuf mImgSrc;
     RBuf8 mPrivateData;
     RBuf8 mPublicData;
+    TTime mTimestamp;
 
 };
 
--- a/activityfw/storage/common/src/afentry.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/common/src/afentry.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -58,7 +58,8 @@
                          const TDesC &customActivityName,
                          const TDesC &imgSrc,
                          const TDesC8 &privateData,
-                         const TDesC8 &publicData)
+                         const TDesC8 &publicData,
+                         const TTime &timestamp)
 {
     CAfEntry* self = CAfEntry::NewLC(flags, 
                                      applicationId, 
@@ -66,7 +67,8 @@
                                      customActivityName,
                                      imgSrc, 
                                      privateData, 
-                                     publicData);
+                                     publicData,
+                                     timestamp);
     CleanupStack::Pop(self);
     return self;
 }
@@ -88,7 +90,8 @@
                           const TDesC &customActivityName,
                           const TDesC &imgSrc,
                           const TDesC8 &privateData,
-                          const TDesC8 &publicData)
+                          const TDesC8 &publicData,
+                          const TTime &timestamp)
 {
     CAfEntry *self = CAfEntry::NewLC();
     self->ConstructL(flags, 
@@ -97,7 +100,8 @@
                      customActivityName,
                      imgSrc, 
                      privateData, 
-                     publicData);
+                     publicData,
+                     timestamp);
     return self;
 }
 
@@ -140,7 +144,8 @@
                           const TDesC &customActivityName,
                           const TDesC &imgSrc,
                           const TDesC8 &privateData,
-                          const TDesC8 &publicData)
+                          const TDesC8 &publicData,
+                          const TTime &timestamp)
 {
     mFlags = flags;
     mAppId = applicationId;
@@ -149,6 +154,7 @@
     CopyL(mImgSrc, imgSrc);
     CopyL(mPrivateData, privateData);
     CopyL(mPublicData, publicData);
+    mTimestamp = timestamp;
 }
 
 // -----------------------------------------------------------------------------
@@ -174,6 +180,7 @@
     return (sizeof(TInt) * 4) + //flags + appId + actId size info + customActivityName size info
            mActivityId.Size() + //actId content size
            mCustomActivityName.Size() + // customActivityName content size
+           TPckgBuf<TTime>().Size() + // timestamp size
            DataSize(); //data size
            
 }
@@ -201,6 +208,7 @@
     stream.WriteInt32L(mAppId);
     ExternalizeL(stream, mActivityId);
     ExternalizeL(stream, mCustomActivityName);
+    stream.WriteL(TPckgBuf<TTime>(mTimestamp));
     ExternalizeDataOnlyL(stream);
 }
 
@@ -215,6 +223,9 @@
     mAppId = stream.ReadInt32L();
     InternalizeL(mActivityId, stream);
     InternalizeL(mCustomActivityName, stream);
+    TPckgBuf<TTime> timestampBuf;
+    stream.ReadL(timestampBuf);
+    mTimestamp = timestampBuf();
     InternalizeDataOnlyL(stream);
 }
 
@@ -308,6 +319,16 @@
 
 // -----------------------------------------------------------------------------
 /**
+ * Provide access to activity timestamp
+ * @return activity timestamp 
+ */
+TTime CAfEntry::Timestamp() const
+{
+    return mTimestamp;
+}
+
+// -----------------------------------------------------------------------------
+/**
  * Provide access to activity thumbail path
  * @return path to activity thumbnail 
  */
--- a/activityfw/storage/server/group/server.mmp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/group/server.mmp	Mon Oct 04 00:38:31 2010 +0300
@@ -49,9 +49,6 @@
 LIBRARY        bafl.lib
 LIBRARY        fbscli.lib
 LIBRARY        hash.lib 
-LIBRARY        bitmaptransforms.lib
-LIBRARY        imageconversion.lib
-STATICLIBRARY        tsimageutils.lib
 STATICLIBRARY        afstoragecommon.lib
 
 CAPABILITY     ALL -TCB
--- a/activityfw/storage/server/inc/afapplicationsengine.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/inc/afapplicationsengine.h	Mon Oct 04 00:38:31 2010 +0300
@@ -19,26 +19,32 @@
 
 #include <e32base.h>
 #include "afstorage.h"
+#include "afapplicationsobserver.h"
 
 class RApaLsSession;
 class CAfApplicationsCollection;
 class CAfApplicationsStorage;
 class CAfApplicationsMonitor;
+class MAfTaskStorage;
 
-class CAfApplicationsEngine: public CBase
+class CAfApplicationsEngine: public CBase, public MAfApplicationsObserver
 {
 public:
-    static CAfApplicationsEngine* NewL(RApaLsSession& serviceProvider, CAfStorage& storage);
+    static CAfApplicationsEngine* NewL(RApaLsSession& serviceProvider, CAfStorage& storage, MAfTaskStorage& taskStorage);
     ~CAfApplicationsEngine();
 
 private:
-    CAfApplicationsEngine();
-    void ConstructL(CAfStorage& storage, RApaLsSession& serviceProvider);
+    CAfApplicationsEngine(MAfTaskStorage& taskStorage);
+    void ConstructL(RApaLsSession& serviceProvider, CAfStorage& storage);
+
+public: // from MAfApplicationsObserver
+    virtual void applicationsChanged();	
 
 private:
     CAfApplicationsCollection *mCollection;
     CAfApplicationsMonitor *mMonitor;
     CAfApplicationsStorage *mStorage;
+    MAfTaskStorage& mTaskStorage;
 };
 
 #endif //AFAPPLICATIONSENGINE_H
--- a/activityfw/storage/server/inc/afapplicationsstorage.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/inc/afapplicationsstorage.h	Mon Oct 04 00:38:31 2010 +0300
@@ -27,16 +27,17 @@
                                public MAfApplicationsObserver
 {
 public:
-    static CAfApplicationsStorage* NewL(CAfStorage& storage, const MAfApplicationsRegistry& provider);
+    static CAfApplicationsStorage* NewL(CAfStorage& storage, const MAfApplicationsRegistry& provider, MAfApplicationsObserver &observer);
     ~CAfApplicationsStorage();
     void applicationsChanged();
     
 private:
-    CAfApplicationsStorage(CAfStorage& storage, const MAfApplicationsRegistry& provider);
+    CAfApplicationsStorage(CAfStorage& storage, const MAfApplicationsRegistry& provider, MAfApplicationsObserver &observer);
     void deleteActivityL(TUid appId);
 private:
     CAfStorage& mStorage;
     const MAfApplicationsRegistry &mProvider;
+    MAfApplicationsObserver &mObserver;
 };
 
 #endif // AFAPPLICATIONSSTORAGE_H
--- a/activityfw/storage/server/inc/afobservertask.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/inc/afobservertask.h	Mon Oct 04 00:38:31 2010 +0300
@@ -35,7 +35,7 @@
 
     const TDesC8& Data() const;
 
-    void BroadcastReceivedL(const RMessage2& );
+    void BroadcastReceivedL(const RMessage2&, TBool applicationUninstalled = EFalse);
 
 private:
     CAfObserverTask(MAfTaskStorage& globalStorage, 
--- a/activityfw/storage/server/inc/afstorage.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/inc/afstorage.h	Mon Oct 04 00:38:31 2010 +0300
@@ -34,10 +34,6 @@
 
     static CAfStorage* NewL(RFs& aSession);
 
-    void AddActivityL(CAfEntry &aEntry);
-
-    void UpdateActivityL(CAfEntry &aEntry);
-
     void SaveActivityL(CAfEntry &aEntry);
 
     void DeleteActivityL(CAfEntry &aEntry);
--- a/activityfw/storage/server/inc/afstorageasynctask.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/inc/afstorageasynctask.h	Mon Oct 04 00:38:31 2010 +0300
@@ -36,7 +36,7 @@
 
     const TDesC8& Data() const;
 
-    void BroadcastReceivedL(const RMessage2 &);
+    void BroadcastReceivedL(const RMessage2 &, TBool applicationUninstalled = EFalse);
 
 private:
     CAfStorageAsyncTask();
--- a/activityfw/storage/server/inc/afstoragesynctask.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/inc/afstoragesynctask.h	Mon Oct 04 00:38:31 2010 +0300
@@ -38,12 +38,6 @@
                          const RMessage2& msg);
 
 private:
-    static void AddActivityL(CAfStorage& dataStorage, 
-                             const RMessage2& msg);
-
-    static void UpdateActivityL(CAfStorage& dataStorage, 
-                                const RMessage2& msg);
-
     static void SaveActivityL(CAfStorage& dataStorage, 
                                 const RMessage2& msg);
                                 
--- a/activityfw/storage/server/inc/aftask.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/inc/aftask.h	Mon Oct 04 00:38:31 2010 +0300
@@ -31,7 +31,7 @@
      * Notify instance about incoming broadcast message.
      * @param msg - broadcast message
      */
-    virtual void BroadcastReceivedL(const RMessage2& msg) =0;
+    virtual void BroadcastReceivedL(const RMessage2& msg, TBool applicationUninstalled = EFalse) =0;
     
     /**
      * Returns ETrue if task is related with session argument
--- a/activityfw/storage/server/inc/afthumbnailtask.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/inc/afthumbnailtask.h	Mon Oct 04 00:38:31 2010 +0300
@@ -27,12 +27,10 @@
 
 #include "aftask.h"
 #include "aftaskstorage.h"
-#include "tsgraphicfilescalinghandler.h"
 
 class CFbsBitmap;
 
-class CAfThumbnailTask : public CAfTask,
-                         public MImageReadyCallBack
+class CAfThumbnailTask : public CAfTask
 {
 public:
     ~CAfThumbnailTask();
@@ -45,18 +43,16 @@
 
     void ConstructL();
 
-    void ImageReadyCallBack(TInt error, const CFbsBitmap *bitmap );
-
     const TDesC8& Data()const;
 
-    void BroadcastReceivedL(const RMessage2& );
+    void BroadcastReceivedL(const RMessage2&, TBool applicationUninstalled = EFalse);
 
     TBool IsSessionTask(const CSession2* session);
 
 private:
     MAfTaskStorage& mStorage; 
     const RMessage2 mMsg;
-    CBase* mService;
+    CFbsBitmap* mBitmap;
 };
 
 #endif // AFTHUMBNAILTASK_H
--- a/activityfw/storage/server/src/afapplicationsengine.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afapplicationsengine.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -18,29 +18,34 @@
 #include "afapplicationsstorage.h"
 #include "afapplicationscollection.h"
 #include "afapplicationsmonitor.h"
+#include "aftaskstorage.h"
+#include "aftask.h"
 
 //------------------------------------------------------------------------------
 CAfApplicationsEngine* CAfApplicationsEngine::NewL(RApaLsSession& serviceProvider, 
-                                                   CAfStorage& storage)
+                                                   CAfStorage& storage, 
+                                                   MAfTaskStorage& taskStorage)
 {
-    CAfApplicationsEngine *self = new(ELeave)CAfApplicationsEngine();
+    CAfApplicationsEngine *self = new(ELeave)CAfApplicationsEngine(taskStorage);
     CleanupStack::PushL(self);
-    self->ConstructL(storage, serviceProvider);
+    self->ConstructL(serviceProvider, storage);
     CleanupStack::Pop(self);
     return self;
 }
 
 //------------------------------------------------------------------------------
-CAfApplicationsEngine::CAfApplicationsEngine()
-{}
+CAfApplicationsEngine::CAfApplicationsEngine(MAfTaskStorage& taskStorage) :
+    mTaskStorage(taskStorage)
+{
+}
 
 //------------------------------------------------------------------------------
-void CAfApplicationsEngine::ConstructL(CAfStorage& storage, 
-                                       RApaLsSession& serviceProvider)
+void CAfApplicationsEngine::ConstructL(RApaLsSession& serviceProvider,
+                                       CAfStorage& storage)
 {
     mCollection = CAfApplicationsCollection::NewL(serviceProvider);
     mMonitor = CAfApplicationsMonitor::NewL(serviceProvider, *mCollection);
-    mStorage = CAfApplicationsStorage::NewL(storage, *mCollection);
+    mStorage = CAfApplicationsStorage::NewL(storage, *mCollection, *this);
     
     mCollection->setObserver(*mStorage);
 }
@@ -52,3 +57,12 @@
     delete mStorage;
     delete mCollection;
 }
+
+//------------------------------------------------------------------------------
+void CAfApplicationsEngine::applicationsChanged()
+{
+    const RPointerArray<CAfTask> &table(mTaskStorage.StorageData());
+    for (TInt iter(table.Count() - 1); 0 <= iter; --iter) {
+        table[iter]->BroadcastReceivedL(RMessage2(), ETrue);
+    }
+}
--- a/activityfw/storage/server/src/afapplicationsstorage.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afapplicationsstorage.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -17,19 +17,22 @@
 #include "afapplicationsstorage.h"
 //------------------------------------------------------------------------------
 CAfApplicationsStorage* CAfApplicationsStorage::NewL(CAfStorage& storage, 
-                                                     const MAfApplicationsRegistry& provider)
+                                                     const MAfApplicationsRegistry& provider, 
+                                                     MAfApplicationsObserver &observer)
 {
-    CAfApplicationsStorage *self = new (ELeave)CAfApplicationsStorage(storage, provider);
+    CAfApplicationsStorage *self = new (ELeave)CAfApplicationsStorage(storage, provider, observer);
     return self;
     
 }
 
 //------------------------------------------------------------------------------
 CAfApplicationsStorage::CAfApplicationsStorage(CAfStorage& storage, 
-                                               const MAfApplicationsRegistry& provider)
+                                               const MAfApplicationsRegistry& provider, 
+                                               MAfApplicationsObserver &observer)
 :
     mStorage(storage),
-    mProvider(provider)
+    mProvider(provider),
+    mObserver(observer)
 {
 }
 
@@ -44,6 +47,10 @@
     for (TInt iter(0); iter < removedApp.Count(); ++iter) {
         TRAP_IGNORE(deleteActivityL(removedApp[iter]));
     }
+
+    if ( removedApp.Count() > 0 ) {
+        mObserver.applicationsChanged();
+    }
 }
 
 //------------------------------------------------------------------------------
@@ -55,7 +62,8 @@
                                     KNullDesC,
                                     KNullDesC,
                                     KNullDesC8,
-                                    KNullDesC8));
+                                    KNullDesC8,
+                                    TTime()));
     mStorage.DeleteActivitiesL(*entry);
     CleanupStack::PopAndDestroy(entry);
 }
--- a/activityfw/storage/server/src/afobservertask.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afobservertask.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -79,12 +79,20 @@
  * Interface implementation
  * @see CActivityTask::BroadcastReceivedL(const RMessage2&)
  */
-void CAfObserverTask::BroadcastReceivedL(const RMessage2& msg)
+void CAfObserverTask::BroadcastReceivedL(const RMessage2& msg, TBool applicationUninstalled)
 {
-    if(EFalse != mMsg.IsNull()) {
+    if (!applicationUninstalled && mMsg.IsNull()) {
         mGlobalStorage.Pop(this);//
         mLocalStorage.Pop(this);
         delete this;
+    } else if(NotifyChange == mMsg.Function() &&
+              (applicationUninstalled ||
+               SaveActivity == msg.Function() ||
+               RemoveActivity == msg.Function() ||
+               RemoveApplicationActivities == msg.Function())){
+        mMsg.Complete(KErrNone);
+        mGlobalStorage.Pop(this);
+        delete this;
     } else if (WaitActivity == mMsg.Function() &&
                LaunchActivity == msg.Function()) {
                
@@ -113,15 +121,6 @@
         mGlobalStorage.Pop(this);
         mMsg.Complete(KErrCancel);
         delete this;
-    } else if(NotifyChange == mMsg.Function() &&
-              (AddActivity == msg.Function() ||
-               UpdateActivity == msg.Function() ||
-               SaveActivity == msg.Function() ||
-               RemoveActivity == msg.Function() ||
-               RemoveApplicationActivities == msg.Function())){
-        mMsg.Complete(KErrNone);
-        mGlobalStorage.Pop(this);
-        delete this;
     }
 }
 
--- a/activityfw/storage/server/src/afserver.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afserver.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -73,7 +73,7 @@
     User::LeaveIfError(mFsSession.Connect());
     User::LeaveIfError(RFbsSession::Connect(mFsSession));
     mStorage = CAfStorage::NewL(mFsSession);
-    mAppEngine = CAfApplicationsEngine::NewL(mApaSession, *mStorage);
+    mAppEngine = CAfApplicationsEngine::NewL(mApaSession, *mStorage, *this);
 }
 
 // -----------------------------------------------------------------------------
--- a/activityfw/storage/server/src/afsession.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afsession.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -92,8 +92,6 @@
 void CAfSession::ServiceL(const RMessage2& message)
 {
     switch (message.Function()) {
-    case AddActivity:
-    case UpdateActivity:
     case SaveActivity:
     case RemoveActivity:
     case RemoveApplicationActivities:
--- a/activityfw/storage/server/src/afstorage.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afstorage.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -242,98 +242,11 @@
 
 // -----------------------------------------------------------------------------
 /**
- * Register new activity
- * @param appId - application id
- * @param actId - activity id
- * @param flags - activity flags
- * @param imgSrc - activity thumbnail source
- * @param privateData - activity private data
- * @param publicData - activity public data
- */
-void CAfStorage::AddActivityL(CAfEntry& entry)
-    {
-    //verify if row already exists
-    TInt errNo(KErrNone);
-    RDbView view;
-    CleanupClosePushL(view);
-    TRAP( errNo, GetActivityForUpdateL(view, entry.ApplicationId(), entry.ActivityId()));
-    if( KErrNone == errNo ) 
-        {
-        User::Leave(KErrAlreadyExists);
-        }
-    CleanupStack::PopAndDestroy(&view);
-
-    //write table
-    RDbTable table;
-    CleanupClosePushL(table);
-    User::LeaveIfError(table.Open(iActDb, KActivityTableName, table.EUpdatable));
-    CDbColSet *row = table.ColSetL();
-    CleanupStack::PushL(row);
-    
-    TTime time;
-    time.UniversalTime();
-    
-    table.InsertL();
-    TRAP(errNo,
-    table.SetColL(row->ColNo(KApplicationColumnName), TInt64(entry.ApplicationId()));
-    table.SetColL(row->ColNo(KActivityColumnName), entry.ActivityId());
-    table.SetColL(row->ColNo(KCustomNameColumnName), entry.CustomActivityName());    
-    table.SetColL(row->ColNo(KFlagsColumnName), entry.Flags());
-    table.SetColL(row->ColNo(KTimestampColumnName), time.DateTime());
-    ExternalizeDataL(table, entry, row->ColNo(KDataColumnName) );
-    
-    table.PutL();)
-    if( KErrNone != errNo )
-        {
-        table.Cancel();
-        User::Leave(errNo);
-        }
-    CleanupStack::PopAndDestroy(row);
-    CleanupStack::PopAndDestroy(&table);
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Update activity
- * @param entry - activity data
- */
-void CAfStorage::UpdateActivityL(CAfEntry& entry)
-    {
-    TTime time;
-    time.UniversalTime();
-    RDbView view;
-    CleanupClosePushL(view);
-    GetActivityForUpdateL(view, entry.ApplicationId(), entry.ActivityId());
-    view.UpdateL();
-    TRAPD(errNo,
-    CDbColSet* colSet = view.ColSetL();
-    CleanupStack::PushL(colSet);
-
-    view.SetColL(colSet->ColNo(KFlagsColumnName), entry.Flags());
-    view.SetColL(colSet->ColNo(KTimestampColumnName), time.DateTime());
-    view.SetColL(colSet->ColNo(KCustomNameColumnName), entry.CustomActivityName());    
-    ExternalizeDataL(view, entry, colSet->ColNo(KDataColumnName));
-
-    view.PutL();
-    CleanupStack::PopAndDestroy(colSet);)
-
-    if(KErrNone != errNo)
-        {
-        view.Cancel();
-        User::Leave(errNo);
-        }
-    CleanupStack::PopAndDestroy(&view);
-    }
-
-// -----------------------------------------------------------------------------
-/**
  * Save activity
  * @param entry - activity data
  */
 void CAfStorage::SaveActivityL(CAfEntry &entry)
 {
-    TTime time;
-    time.UniversalTime();
     // @todo check if this can be tidied up
     //verify if row already exists
     TInt errNo(KErrNone);
@@ -349,7 +262,7 @@
         CleanupStack::PushL(colSet);
 
         view.SetColL(colSet->ColNo(KFlagsColumnName), entry.Flags());
-        view.SetColL(colSet->ColNo(KTimestampColumnName), time.DateTime());
+        view.SetColL(colSet->ColNo(KTimestampColumnName), entry.Timestamp());
         view.SetColL(colSet->ColNo(KCustomNameColumnName), entry.CustomActivityName());
         ExternalizeDataL(view, entry, colSet->ColNo(KDataColumnName));
 
@@ -365,7 +278,7 @@
     else
         {
         // insert
-
+        
         //write table
         RDbTable table;
         CleanupClosePushL(table);
@@ -379,7 +292,7 @@
         table.SetColL(row->ColNo(KActivityColumnName), entry.ActivityId());
         table.SetColL(row->ColNo(KCustomNameColumnName), entry.CustomActivityName());
         table.SetColL(row->ColNo(KFlagsColumnName), entry.Flags());
-        table.SetColL(row->ColNo(KTimestampColumnName), time.DateTime());
+        table.SetColL(row->ColNo(KTimestampColumnName), entry.Timestamp());
         ExternalizeDataL(table, entry, row->ColNo(KDataColumnName));
         table.PutL();)
         if (KErrNone != errNo) {
@@ -586,7 +499,8 @@
                applicationOffset(row->ColNo(KApplicationColumnName)),
                activityOffset(row->ColNo(KActivityColumnName)),
                customNameOffset(row->ColNo(KCustomNameColumnName)),
-               dataOffset(row->ColNo(KDataColumnName));
+               dataOffset(row->ColNo(KDataColumnName)),
+               timestampOffset(row->ColNo(KTimestampColumnName));
 
     RBuf activityName;
     CleanupClosePushL(activityName);
@@ -611,7 +525,8 @@
                                           customName,
                                           KNullDesC,
                                           KNullDesC8,
-                                          KNullDesC8);
+                                          KNullDesC8,
+                                          src.ColTime(timestampOffset));
         if( CAfEntry::Public == rights && 
             (entry->Flags() & CAfEntry::Invisible) )
             {
--- a/activityfw/storage/server/src/afstorageasynctask.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afstorageasynctask.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -72,7 +72,7 @@
  * Interface implementation
  * @see CActivityTask::BroadcastReceivedL(const RMessage2 &)
  */
-void CAfStorageAsyncTask::BroadcastReceivedL(const RMessage2& )
+void CAfStorageAsyncTask::BroadcastReceivedL(const RMessage2&, TBool)
 {
     // No implementation required
 }
--- a/activityfw/storage/server/src/afstoragesynctask.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afstoragesynctask.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -35,12 +35,6 @@
                                  const RMessage2& msg)
 {
     switch (msg.Function()) {
-    case AddActivity: 
-        AddActivityL(dataStorage, msg);
-        break;
-    case UpdateActivity:
-        UpdateActivityL(dataStorage, msg);
-        break;
     case SaveActivity:
         SaveActivityL(dataStorage, msg);
         break;        
@@ -63,64 +57,6 @@
 
 // -----------------------------------------------------------------------------
 /**
- * Handle adding new activity.
- * @param dataStorage - data storage
- * @param msg - request message
- */
-void AfStorageSyncTask::AddActivityL(CAfStorage& dataStorage, 
-                                     const RMessage2& msg)
-{
-    //Read message and bitmap handle
-    TPckgBuf<TInt> bitmapHdl(0);
-    CAfEntry *entry = CAfEntry::NewLC(msg);
-    msg.ReadL(1, bitmapHdl);
-    
-    RBuf thumbnailPath;
-    CleanupClosePushL(thumbnailPath);
-    dataStorage.ThumbnailPathL(thumbnailPath, 
-                   dataStorage.Fs(), 
-                   entry->ApplicationId(), 
-                   entry->ActivityId(),
-                   entry->Flags() & CAfEntry::Persistent);
-    CreateThumbnailL(thumbnailPath, bitmapHdl());
-    entry->SetImageSrcL(thumbnailPath);
-    dataStorage.AddActivityL(*entry);
-    CleanupStack::PopAndDestroy(&thumbnailPath);
-    CleanupStack::PopAndDestroy(entry);
-}
-
-// -----------------------------------------------------------------------------
-/**
- * Handle updating existing activiy
- * @param dataStorage - data storage
- * @param msg - request message
- */
-void AfStorageSyncTask::UpdateActivityL(CAfStorage& dataStorage, 
-                                        const RMessage2& msg)
-{
-    TPckgBuf<TInt> bitmapHdl(0);
-    CAfEntry *entry = CAfEntry::NewLC(msg);
-    msg.ReadL(1, bitmapHdl);
-        
-    RBuf thumbnailPath;
-    CleanupClosePushL(thumbnailPath);
-    DeleteActivityScreenshotL(dataStorage, 
-                    entry->ApplicationId(), 
-                    entry->ActivityId());
-    dataStorage.ThumbnailPathL(thumbnailPath, 
-                   dataStorage.Fs(), 
-                   entry->ApplicationId(), 
-                   entry->ActivityId(),
-                   entry->Flags() & CAfEntry::Persistent);
-    CreateThumbnailL(thumbnailPath, bitmapHdl());
-    entry->SetImageSrcL(thumbnailPath);
-    dataStorage.UpdateActivityL(*entry);
-    CleanupStack::PopAndDestroy(&thumbnailPath);
-    CleanupStack::PopAndDestroy(entry);
-}
-
-// -----------------------------------------------------------------------------
-/**
  * Handle saving activiy
  * @param dataStorage - data storage
  * @param msg - request message
--- a/activityfw/storage/server/src/afthumbnailtask.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/activityfw/storage/server/src/afthumbnailtask.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -39,7 +39,7 @@
  */
 CAfThumbnailTask::~CAfThumbnailTask()
 {
-    delete mService;
+    delete mBitmap;
 }
 
 // -----------------------------------------------------------------------------
@@ -49,12 +49,12 @@
 void CAfThumbnailTask::ExecuteLD(MAfTaskStorage& taskStorage,
                                  const RMessage2& message)
 {
-    CAfThumbnailTask *self = new (ELeave)CAfThumbnailTask(taskStorage, 
-                                                                      message);
+    CAfThumbnailTask *self = new (ELeave)CAfThumbnailTask(taskStorage, message);
     CleanupStack::PushL(self);
     self->ConstructL();
     taskStorage.PushL(self);
     CleanupStack::Pop(self);
+    message.Complete(KErrNone);
 }
 
 // -----------------------------------------------------------------------------
@@ -63,43 +63,20 @@
  */
 void CAfThumbnailTask::ConstructL()
 {
-    TPckgBuf<int> width(0), height(0);
     RBuf path;
     CleanupClosePushL(path);
-    mMsg.ReadL(0, width);
-    mMsg.ReadL(1, height);
     path.CreateL(mMsg.GetDesLengthL(2));
     mMsg.ReadL(2, path);
     
-    CFbsBitmap *bitmap = new (ELeave) CFbsBitmap();
-    CleanupStack::PushL(bitmap);
-    User::LeaveIfError(bitmap->Load(path));
-    mService = CTsGraphicFileScalingHandler::NewL(*this, 
-                                                  *bitmap, 
-                                                  TSize(width(), height()), 
-                                                  CTsGraphicFileScalingHandler::EKeepAspectRatioByExpanding);
-    CleanupStack::PopAndDestroy(bitmap);
+    mBitmap = new (ELeave) CFbsBitmap;
+    User::LeaveIfError(mBitmap->Load(path));
+
     CleanupStack::PopAndDestroy(&path);
-}
 
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CAfThumbnailTask::ImageReadyCallBack(TInt error,const CFbsBitmap *bitmap)
-{
-    if (EFalse == mMsg.IsNull() &&
-        KErrNone == error) {
-        mMsg.Write(0, TPckgBuf<int>(const_cast<CFbsBitmap*>(bitmap)->Handle()));
-        mMsg.Write(1, TPckgBuf<void *>(this));
-        mMsg.Complete(error);
-    } else {
-        if (EFalse == mMsg.IsNull()) {
-         mMsg.Complete(error);
-        }
-        mStorage.Pop(this);
-        delete this;
-    }
+
+    mMsg.Write(0, TPckgBuf<int>(mBitmap->Handle()));
+    mMsg.Write(1, TPckgBuf<void *>(this));    
+
 }
 
 // -----------------------------------------------------------------------------
@@ -115,7 +92,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CAfThumbnailTask::BroadcastReceivedL(const RMessage2&)
+void CAfThumbnailTask::BroadcastReceivedL(const RMessage2&, TBool)
 {
 }
 
--- a/contentstorage/bwins/casathandleru.def	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-EXPORTS
-	?CheckVisibility@CCaSatHandler@@SAHXZ @ 1 NONAME ; int CCaSatHandler::CheckVisibility(void)
-	?GetName@CCaSatHandler@@QAEHAAVTDes16@@@Z @ 2 NONAME ; int CCaSatHandler::GetName(class TDes16 &)
-	?LoadIconL@CCaSatHandler@@QAEPAVCAknIcon@@XZ @ 3 NONAME ; class CAknIcon * CCaSatHandler::LoadIconL(void)
-	?NewL@CCaSatHandler@@SAPAV1@XZ @ 4 NONAME ; class CCaSatHandler * CCaSatHandler::NewL(void)
-
--- a/contentstorage/bwins/cautilsu.def	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/bwins/cautilsu.def	Mon Oct 04 00:38:31 2010 +0300
@@ -99,6 +99,7 @@
 	?SetParentId@CCaInnerQuery@@QAEXH@Z @ 98 NONAME ; void CCaInnerQuery::SetParentId(int)
 	?GetIds@CCaInnerNotifierFilter@@QBE?AV?$RArray@H@@XZ @ 99 NONAME ; class RArray<int> CCaInnerNotifierFilter::GetIds(void) const
 	?SetStringIdL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 100 NONAME ; void CCaLocalizationEntry::SetStringIdL(class TDesC16 const &)
-	?SetTextId@CCaLocalizationEntry@@QAEXI@Z @ 101 NONAME ; void CCaLocalizationEntry::SetTextId(unsigned int)
-	?RemoveAttribute@RCaEntryAttrArray@@QAEXABVTDesC16@@@Z @ 102 NONAME ; void RCaEntryAttrArray::RemoveAttribute(class TDesC16 const &)
+	?InitTextResolverSymbianL@MenuUtils@@SAXABVTDesC16@@@Z @ 101 NONAME ; void MenuUtils::InitTextResolverSymbianL(class TDesC16 const &)
+	?SetTextId@CCaLocalizationEntry@@QAEXI@Z @ 102 NONAME ; void CCaLocalizationEntry::SetTextId(unsigned int)
+	?RemoveAttribute@RCaEntryAttrArray@@QAEXABVTDesC16@@@Z @ 103 NONAME ; void RCaEntryAttrArray::RemoveAttribute(class TDesC16 const &)
 
--- a/contentstorage/caclient/caclient.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/caclient/caclient.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -55,8 +55,11 @@
         -lscrclient \
         -laknicon \
         -lapgrfx \
-        -lapparc
+        -lapparc \
+        -lSatClient
+		
 
+		
 include(caclient_s60.pri)
 }
 
--- a/contentstorage/caclient/s60/inc/cabitmapadapter.h	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:
- *
- */
-
-#ifndef BITMAPADAPTER_H
-#define BITMAPADAPTER_H
-
-// INCLUDES
-
-// CLASS DECLARATION
-#include <QList>
-
-class CFbsBitmap;
-
-/**
- *  CaBitmapAdapter
- *
- */
-class CaBitmapAdapter
-{
-public:
-    
-    /**
-     * Convert from bitmap and mask to qpixmap
-     * @param input bitmap.
-     * @param pixmap to prepare.
-     * @return void.
-     */
-    static void fromBitmapAndMaskToPixmapL(CFbsBitmap* fbsBitmap, CFbsBitmap* fbsMask, QPixmap& pixmap);
-
-};
-
-#endif // BITMAPADAPTER_H
--- a/contentstorage/caclient/s60/src/cabitmapadapter.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c)2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#include <e32std.h>
-#include <exception>
-#include <e32base.h>
-#include <badesca.h>
-
-#include <fbs.h>
-#include <bitdev.h>
-#include <QPixmap>
-#include <HbIcon>
-#include <QBitmap>
-#include <QDebug>
-#include <XQConversions>
-
-#include "cadef.h"
-#include "cabitmapadapter.h"
-
-void CaBitmapAdapter::fromBitmapAndMaskToPixmapL(CFbsBitmap* fbsBitmap,
-        CFbsBitmap* fbsMask, QPixmap& pixmap)
-{
-    pixmap = pixmap.fromSymbianCFbsBitmap(fbsBitmap);
-    QPixmap mask;
-    mask = mask.fromSymbianCFbsBitmap(fbsMask);
-    pixmap.setAlphaChannel(mask);
-}
--- a/contentstorage/caclient/s60/src/camenuiconutility.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/caclient/s60/src/camenuiconutility.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -28,10 +28,20 @@
 // cfbsbitmap
 #include <apgicnfl.h>
 
+#include <rsatsession.h>
+#include <tsaticoninfo.h>
+#include <rsatservice.h>// MCL
+
+#include <e32property.h>
+#include <bitdev.h>
+
+#include <AknIconUtils.h>
+
+
 #include <HbIcon>
 
+#include "ca2internalCRkeys.h"
 #include "camenuiconutility.h"
-#include "cabitmapadapter.h"
 #include "caentry.h"
 #include "caquery.h"
 #include "caservice.h"
@@ -39,6 +49,32 @@
 
 const char appUidAttributeName[] = "application:uid";
 
+LOCAL_C void getIconFromFile(HbIcon& icon, const QSizeF &size)
+{
+    if ((icon.iconName().contains(QChar('.')) ||
+        (icon.iconName().contains(QChar('/'))) ||
+        (icon.iconName().contains(QChar('\\'))) )
+        && !icon.isNull() && icon.size().isValid()) {
+        icon.setSize(size);
+        icon = HbIcon(QIcon(icon.pixmap()));
+    }    
+}
+
+/*!
+ Convert from bitmap and mask to qpixmap
+ \param input bitmap.
+ \param pixmap to prepare.
+ \retval void.
+ */
+LOCAL_C void fromBitmapAndMaskToPixmap(CFbsBitmap* fbsBitmap,
+        CFbsBitmap* fbsMask, QPixmap& pixmap)
+{
+    pixmap = pixmap.fromSymbianCFbsBitmap(fbsBitmap);
+    QPixmap mask;
+    mask = mask.fromSymbianCFbsBitmap(fbsMask);
+    pixmap.setAlphaChannel(mask);
+}
+
 /*!
  Get icon from entry.
  \param entry const reference to CaEntry.
@@ -50,17 +86,14 @@
     QString skinId(entry.iconDescription().skinId());
     if (!skinId.isEmpty()) {
         icon = HbIcon(skinId);
+        getIconFromFile(icon, size);
     }
     
     if (icon.isNull() || !(icon.size().isValid())) {
         QString fileName(entry.iconDescription().filename());
         if (!fileName.isEmpty()) {
             icon = HbIcon(fileName);
-            if (fileName.contains(QChar('.'))
-                    && !icon.isNull() && icon.size().isValid()) {
-                icon.setSize(size);
-                icon = HbIcon(QIcon(icon.pixmap()));
-            }
+            getIconFromFile(icon, size);
         }
     }
     return icon;
@@ -105,7 +138,7 @@
         
         QPixmap pixmap;
         if ((err == KErrNone) && (iconsCount > 0)) {
-            CaBitmapAdapter::fromBitmapAndMaskToPixmapL(apaMaskedBitmap,
+            fromBitmapAndMaskToPixmap(apaMaskedBitmap,
                     apaMaskedBitmap->Mask(), pixmap);
     
             pixmap = pixmap.scaled(size.toSize(), 
@@ -215,18 +248,161 @@
     return icon;
 }
 
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT (Icon can be created only from SIM)
+/*!
+ Get bitmap.
+ \param aIconEF icon information array
+ \retval bitmap.
+ */
+LOCAL_C CFbsBitmap* getSatBitmapL()
+    {
+    RSatSession satSession;
+    CleanupClosePushL(satSession);
+    RSatService satIcon;
+    CleanupClosePushL(satIcon);
+
+    satSession.ConnectL();
+    satIcon.OpenL(satSession);
+
+    
+    TInt iconId(KErrNone);
+    RProperty::Get(KCRUidCa, KCaSatUIIconId, iconId);
+    
+    CFbsBitmap* bitmap(NULL);
+
+    if (iconId != KErrNone) {
+        RIconEf iconEf;
+        satIcon.GetIconInfoL(TUint8(iconId), iconEf);
+        CleanupClosePushL(iconEf);
+
+        TInt selectedIconIndex(KErrNotFound);
+        TSize selectedIconSize(0, 0);
+        
+        for (TInt i = 0; i < iconEf.Count(); ++i) {
+            if ((iconEf[i].IconSize().iHeight * iconEf[i].IconSize().iWidth)
+                >= (selectedIconSize.iHeight * selectedIconSize.iWidth))
+                if (bitmap) {
+                    delete bitmap;
+                    bitmap = NULL;
+                }
+            // test and select index of icon which is not too big
+            bitmap = satIcon.GetIconL( iconEf[ i ] );
+            if (bitmap) //!bitmap if iIcon is too big
+            {
+                selectedIconSize = iconEf[i].IconSize();
+                selectedIconIndex = i;
+            }
+        }
+        if (selectedIconIndex != KErrNotFound) {
+            if (bitmap) {
+                delete bitmap;
+                bitmap = NULL;
+            }
+            bitmap = satIcon.GetIconL( iconEf[ selectedIconIndex ] );
+        }
+        CleanupStack::PopAndDestroy(&iconEf);
+    }
+    
+    CleanupStack::PopAndDestroy(&satIcon);
+    CleanupStack::PopAndDestroy(&satSession);
+    
+    return bitmap;
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT (Icon can be created only from SIM)
+/*!
+ Get bitmap.
+ \param aIconEF icon information array
+ \retval bitmap.
+ */
+LOCAL_C CFbsBitmap* getSatMaskL(CFbsBitmap* aBitmap)
+    {
+    CFbsBitmap* mask(new (ELeave) CFbsBitmap);
+    CleanupStack::PushL(mask);
+
+    User::LeaveIfError(mask->Create(aBitmap->SizeInPixels(), EGray256));
+
+    CFbsBitmapDevice* maskDevice = CFbsBitmapDevice::NewL(mask);
+    CleanupStack::PushL(maskDevice);
+    CFbsBitGc* maskGc;
+    User::LeaveIfError(maskDevice->CreateContext(maskGc));
+    CleanupStack::PushL(maskGc);
+    maskGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
+    maskGc->SetDrawMode(CGraphicsContext::EDrawModePEN);
+    maskGc->SetBrushColor(KRgbBlack);
+    maskGc->Clear();
+    maskGc->SetBrushColor(KRgbWhite);
+    maskGc->DrawRect(TRect(TPoint(), aBitmap->SizeInPixels()));
+    CleanupStack::PopAndDestroy(maskGc);
+    CleanupStack::PopAndDestroy(maskDevice);
+    CleanupStack::Pop(mask);
+    return mask;
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT (Icon can be created only from SIM)
+/*!
+ Get icon from entry.
+ \param entry const reference to CaEntry.
+ \retval icon.
+ */
+LOCAL_C HbIcon getSatIconL()
+{
+    HbIcon icon;
+    QPixmap pixmap;
+    CFbsBitmap* bitmap(NULL);
+    CFbsBitmap* mask(NULL);
+    bitmap = getSatBitmapL();
+    if(bitmap)
+    {
+        mask = getSatMaskL(bitmap);
+        fromBitmapAndMaskToPixmap(bitmap, mask, pixmap);
+        icon = HbIcon(QIcon(pixmap));
+    }
+   
+
+    delete mask;
+    delete bitmap;
+    return icon;
+
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+
 /*!
  Get icon.
  \param entry const reference to CaEntry.
  \param sie const reference to icon size.
  \retval icon.
  */
-HbIcon CaMenuIconUtility::getEntryIcon(const CaEntry& entry,
-        const QSizeF &size)
+HbIcon CaMenuIconUtility::getEntryIcon(const CaEntry& entry, const QSizeF &size)
 {
     HbIcon icon;
+
     icon = getIconFromEntry(entry, size);
- 
+    
+    if ((icon.isNull() || !(icon.size().isValid())) &&
+        entry.attribute(appUidAttributeName).toInt() == KSatUid.iUid) {
+        TRAP_IGNORE(icon = getSatIconL());
+    }
+    
     if (icon.isNull() || !(icon.size().isValid())) {
         QString uidString(entry.attribute(appUidAttributeName));
         bool uidOk(false);
@@ -239,16 +415,18 @@
             TRAP_IGNORE(icon = getIconFromApparcL(uidValue, size));
         }
     }
- 
+
     if (icon.isNull() || !(icon.size().isValid())) {
         icon = getDefaultIcon(entry);
     }
- 
+
     if (entry.entryTypeName() == XQConversions::s60DescToQString(
-            KCaTypeWidget)) {
+        KCaTypeWidget)) {
         icon.addProportionalBadge(Qt::AlignBottom | Qt::AlignRight,
-		    HbIcon("qtg_small_homescreen"), QSizeF(0.5, 0.5));
+            HbIcon("qtg_small_homescreen"), QSizeF(0.5, 0.5));
     }
     return icon;
 }
 
+
+
--- a/contentstorage/caclient/src/caitemmodel.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/caclient/src/caitemmodel.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -477,6 +477,9 @@
         case CaItemModel::TextRole:
             variant = QVariant(pEntry->text());
             break;
+        case CaItemModel::DescriptionRole:
+            variant = QVariant(pEntry->description());
+            break;            
         case CaItemModel::FullTextRole:
             variant = QVariant(pEntry->text() + QString(" ") + pEntry->description());
             break;
--- a/contentstorage/caclient/stub/src/hswidgetregistryservice.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/caclient/stub/src/hswidgetregistryservice.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -169,10 +169,10 @@
             
             HsWidgetComponentDescriptor widgetDescriptor = componentParser.widgetComponentDescriptor();            
             widgetDescriptor.library = manifestFilePath + "/" + widgetDescriptor.uri + ".dll";
-            if (widgetDescriptor.iconUri.length() > 0 ) {
+            if (widgetDescriptor.iconUri.length() > 0 && widgetDescriptor.iconUri.contains('.')) {
                 widgetDescriptor.iconUri = manifestFilePath + "/" + widgetDescriptor.iconUri;
             }            
-            if (widgetDescriptor.previewImage.length() > 0 ) {
+            if (widgetDescriptor.previewImage.length() > 0 && widgetDescriptor.previewImage.contains('.')) {
                 widgetDescriptor.previewImage = manifestFilePath + "/" + widgetDescriptor.previewImage;
             }            
 
--- a/contentstorage/cahandler/app/inc/caapphandler.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/cahandler/app/inc/caapphandler.h	Mon Oct 04 00:38:31 2010 +0300
@@ -53,8 +53,6 @@
 
     void launchApplicationL(const TUid uid, TInt viewId);
 
-    int closeApplication(const EntryFlags &flags, TInt windowGroupId);
-
     int handleRemove(const EntryFlags &flags,
         const QString &typeName,
         const QString &componentId);
--- a/contentstorage/cahandler/app/src/caapphandler.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/cahandler/app/src/caapphandler.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -22,7 +22,6 @@
 #include <apgcli.h>
 #include <eikenv.h>
 #include <eikappui.h>
-#include <vwsdef.h>
 #include <AknDef.h>
 #include <AknTaskList.h>
 
@@ -47,8 +46,6 @@
 static const char caTypePackage[] = "package";
 static const char caTypeWidget[] = "widget";
 static const char caAttrView[] = "view";
-static const char caCmdClose[] = "close";
-static const char caAttrWindowGroupId[] = "window_group_id";
 static const char caAttrComponentId[] = "component_id";
 
 /*!
@@ -104,11 +101,6 @@
             int uid = uidValue.toInt();
             TRAP(result, launchApplicationL(TUid::Uid(uid), viewId));
         }
-    } else if (command == caCmdClose && entry.entryTypeName() == caTypeApp ) {
-        QString windowGroupId = entry.attribute(caAttrWindowGroupId);
-        if (!windowGroupId.isNull()) {
-            result = closeApplication(entry.flags(), windowGroupId.toInt());
-        }
     } else if (command == caCmdRemove) {
         QString componentId(entry.attribute(caAttrComponentId));
         result = handleRemove(entry.flags(),
@@ -178,28 +170,6 @@
     }
 }
 
-/*!
- * Closes application.
- * \param flags an entry flags.
- * \param windowGroupId window group id.
- * \retval an error code.
- */
-int CaAppHandler::closeApplication(const EntryFlags &flags, int windowGroupId)
-{
-    int result(KErrNone);
-    if (windowGroupId > 0) {
-        RWsSession wsSession;
-        result = wsSession.Connect();
-        if (result==KErrNone) {
-            TWsEvent event;
-            event.SetTimeNow();
-            event.SetType(KAknShutOrHideApp);
-            wsSession.SendEventToWindowGroup(windowGroupId, event);
-        }
-        wsSession.Close();
-    }
-    return result;
-}
 
 /*!
  * Uninstall application.
--- a/contentstorage/camificonengine/src/cambmiconengine.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/camificonengine/src/cambmiconengine.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -86,7 +86,7 @@
         QPixmap mask;
         mask = mask.fromSymbianCFbsBitmap(maskBitmap);
         pixmap.setAlphaChannel(mask);
-        pixmap = pixmap.scaled(size, Qt::KeepAspectRatioByExpanding);
+        pixmap = pixmap.scaled(size, Qt::IgnoreAspectRatio);
     }
 }
 
--- a/contentstorage/casoftwareregistry/casoftwareregistry.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casoftwareregistry/casoftwareregistry.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -44,7 +44,8 @@
         -lsifnotification \
         -lxqutils \
         -lPlatformEnv \
-        -lefsrv
+        -lefsrv \
+        -lcautils
         
 include(casoftwareregistry_s60.pri)
 }
--- a/contentstorage/casoftwareregistry/s60/src/caprogresscanner.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casoftwareregistry/s60/src/caprogresscanner.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -83,7 +83,8 @@
                 iComponentId = iSoftwareRegistry.GetComponentIdL(
                         aStartData.GlobalComponentId(), 
                         aStartData.SoftwareType() );
-                SubscribeL( aKey ) );
+                SubscribeL( aKey ); 
+                );
         }
     }
 
@@ -141,7 +142,7 @@
     else
         {
         //information for observer that uninstallation was failed
-        iObserver->progressChange( iComponentId, aError ); 
+        iObserver->progressChange( iComponentId, KErrGeneral ); 
         }
     CancelSubscribeL();
     }
--- a/contentstorage/casoftwareregistry/s60/src/casoftwareregistry_p.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casoftwareregistry/s60/src/casoftwareregistry_p.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -25,6 +25,7 @@
 #include <usif/scr/scr.h>
 #include <xqconversions.h>
 #include <driveinfo.h>
+#include <hbtextresolversymbian.h>
 
 #include "cauninstallnotifier.h"
 #include "cauninstallnotifier_p.h"
@@ -32,6 +33,7 @@
 #include "casoftwareregistry_p.h"
 #include "cadefs.h"
 #include "caarraycleanup.inl"
+#include "cautils.h"
 
 using namespace Usif;
 _LIT(KConfirmMessageKey, "MIDlet-Delete-Confirm");
@@ -231,10 +233,22 @@
                     if (domainProperty &&
                         domainProperty->PropertyType() ==
                             CPropertyEntry::ELocalizedProperty) {
+                        const TDesC& domainPropertyValue = static_cast<CLocalizablePropertyEntry*>(
+                                domainProperty)->StrValue();
+                        TInt splitIndex = domainPropertyValue.Locate(',');
+                        RBuf qmFileName;
+                        qmFileName.CleanupClosePushL();
+                        qmFileName.CreateL(domainPropertyValue.Right(
+                                domainPropertyValue.Length() - splitIndex - 1),
+                                domainPropertyValue.Length() - splitIndex);
+                        qmFileName.Append('_');
+                        MenuUtils::InitTextResolverSymbianL(qmFileName);
+                        HBufC* translatedProtectionDomain = HbTextResolverSymbian::LoadLC(
+                                domainPropertyValue.Left(splitIndex));
                         result[CaSoftwareRegistry::componentProtectionDomainKey()] =
-                            XQConversions::s60DescToQString(
-                                static_cast<CLocalizablePropertyEntry*>(
-                                    domainProperty)->StrValue());
+                                XQConversions::s60DescToQString(*translatedProtectionDomain);
+                        CleanupStack::PopAndDestroy(translatedProtectionDomain);
+                        CleanupStack::PopAndDestroy(&qmFileName);
                     }
 
                     CPropertyEntry *midletDescryption =
--- a/contentstorage/casrv/caappscanner/src/casrvappscanner.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/caappscanner/src/casrvappscanner.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -876,7 +876,26 @@
                 changed = SetCWRTAppL( aEntry ) || changed;
                 }
             }
+        
+        TApaAppCapabilityBuf appCap;
+        TInt screenNumber = 0;
+        
+        User::LeaveIfError( iApaLsSession.GetAppCapability
+            ( appCap, info->iUid ) );
+        User::LeaveIfError( iApaLsSession.GetDefaultScreenNumber
+            ( screenNumber, info->iUid ) );
+        
+        const TBool hidden = appCap().iAppIsHidden || screenNumber != 0;
+        
+        const TBool visible = aEntry->GetFlags() & EVisible;
+        
+        if ( hidden && visible ) 
+            {
+            changed = ETrue;
+            aEntry->SetFlags(aEntry->GetFlags() & ~EVisible);
+            }
         }
+    
     CleanupStack::PopAndDestroy( info );
     return changed;
     }
@@ -1259,3 +1278,4 @@
         }
     return updated;
     }
+
--- a/contentstorage/casrv/calocalizerscanner/calocalizerscanner.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/calocalizerscanner/calocalizerscanner.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -50,7 +50,8 @@
         -lecom \
         -lcautils \
         -lcamenu \
-        -lefsrv
+        -lefsrv \
+        -lcautils
 }
 
 exportResources(./*.qm, resource/qt/translations)
--- a/contentstorage/casrv/calocalizerscanner/src/calocalizerscannerproxy.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/calocalizerscanner/src/calocalizerscannerproxy.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -29,6 +29,7 @@
 #include "cainnerquery.h"
 #include "cainnerentry.h"
 #include "casqlcommands.h"
+#include "cautils.h"
 
 
 
@@ -174,45 +175,10 @@
     {
 	if( iRecentQmFile.Compare( aLocEntry->GetQmFilename() ) )
 		{
-	    
-	       if( !HbTextResolverSymbian::Init( aLocEntry->GetQmFilename(), KLocalizationFilepathC ) )
-	          {
-	          if( !HbTextResolverSymbian::Init( aLocEntry->GetQmFilename(), KLocalizationFilepathZ ) )
-	              {
-	              // this should not be called too often 
-	              TChar currentDriveLetter;
-	              TDriveList driveList;
-	              RFs fs;
-	              User::LeaveIfError( fs.Connect() );
-	              User::LeaveIfError( fs.DriveList( driveList ) );
-
-	              RBuf path;
-	              path.Create( KLocalizationFilepath().Length() + 1 );
-	              CleanupClosePushL( path );
-	              
-	              for ( TInt driveNr=EDriveY; driveNr >= EDriveA; driveNr-- )
-	                  {
-	                  if ( driveList[driveNr] )
-	                      {
-	                      User::LeaveIfError( fs.DriveToChar( driveNr,
-	                              currentDriveLetter ) );
-	                      path.Append( currentDriveLetter );
-	                      path.Append( KLocalizationFilepath );
-	                      if( HbTextResolverSymbian::Init( aLocEntry->GetQmFilename(), path ) )
-	                          {
-	                          break;
-	                          }
-	                      }
-	                  path.Zero();
-	                  }
-	              CleanupStack::PopAndDestroy( &path );
-	              fs.Close();
-	              }
-	           }
-	    
+		MenuUtils::InitTextResolverSymbianL(aLocEntry->GetQmFilename());
         // keeping last qm filename to avoid another initialization
 	    iRecentQmFile.Close();
-	    iRecentQmFile.Create( aLocEntry->GetQmFilename().Length() );
+	    iRecentQmFile.CreateL( aLocEntry->GetQmFilename().Length() );
 	    iRecentQmFile.Copy( aLocEntry->GetQmFilename() );
 		}
 	return HbTextResolverSymbian::LoadLC( aLocEntry->GetStringId() );
--- a/contentstorage/casrv/casatmonitor/src/casatmonitor.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/casatmonitor/src/casatmonitor.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -100,7 +100,7 @@
         {
         RBuf satName;
         satName.CleanupClosePushL();
-        satName.Create( KCenRepBufferSize );
+        satName.CreateL( KCenRepBufferSize );
         User::LeaveIfError( GetSatName( satName ) );
 
         if( !resultArray.Count() )
--- a/contentstorage/casrv/causifscanner/inc/causifscanner.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/causifscanner/inc/causifscanner.h	Mon Oct 04 00:38:31 2010 +0300
@@ -28,7 +28,6 @@
 
 class CCaStorageProxy;
 class CCaInnerEntry;
-class CCaInstallNotifier;
 class CCaMmcWatcher;
 class TPluginParams;
 
@@ -70,7 +69,7 @@
      * @since S60 v5.0
      * @param aUid installed uid.
      */
-    void HandleInstallNotifyL( TInt aUid );
+    void HandleInstallNotifyL();
 
 public:
     // From MMmcWatcherCallback.
@@ -163,17 +162,7 @@
     /**
      * Install notifier. Own.
      */
-    CCaInstallNotifier *iSystemInstallNotifier;
-
-    /**
-     * Uninstall notifier. Own.
-     */
-    CCaInstallNotifier *iUsifUninstallNotifier;
-
-    /**
-     * Install and uninstall notifier. Own.
-     */
-    CCaInstallNotifier *iJavaInstallNotifier;
+    CCaInstallNotifier *iInstallNotifier;
 
     /**
      * File session. Own
--- a/contentstorage/casrv/causifscanner/src/causifscanner.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/causifscanner/src/causifscanner.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -58,14 +58,7 @@
 //
 void CCaUsifScanner::ConstructL()
     {
-    iSystemInstallNotifier = CCaInstallNotifier::NewL( *this,
-            CCaInstallNotifier::ESisInstallNotification );
-
-    iUsifUninstallNotifier = CCaInstallNotifier::NewL( *this,
-            CCaInstallNotifier::EUsifUninstallNotification );
-
-    iJavaInstallNotifier = CCaInstallNotifier::NewL( *this,
-                CCaInstallNotifier::EJavaInstallNotification );
+    iInstallNotifier = CCaInstallNotifier::NewL( *this );
 
     User::LeaveIfError( iFs.Connect() );
     iMmcWatcher = CCaMmcWatcher::NewL( iFs, this );
@@ -81,9 +74,7 @@
     {
     delete iMmcWatcher;
     iFs.Close();
-    delete iJavaInstallNotifier;
-    delete iUsifUninstallNotifier;
-    delete iSystemInstallNotifier;
+    delete iInstallNotifier;
     }
 
 // ---------------------------------------------------------------------------
@@ -110,7 +101,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CCaUsifScanner::HandleInstallNotifyL( TInt /*aUid*/)
+void CCaUsifScanner::HandleInstallNotifyL()
     {
     UpdateUsifListL();
     }
@@ -159,7 +150,7 @@
     else if( !aEntry->SoftwareType().Compare( KSoftwareTypeWidget ) )
         {
         aCaEntry->AddAttributeL( KCaAttrAppType, KCaAttrAppTypeValueCWRT );
-        } 
+        }
     if( aEntry->Name().Compare( KNullDesC ) )
         {
         aCaEntry->SetTextL( aEntry->Name() );
@@ -205,32 +196,32 @@
             CCaInnerEntry *caEntry = CCaInnerEntry::NewLC();
             CreateCaEntryFromEntryL( resultUsifArray[i], caEntry );
             // in case we rebuild our db mark as missing
-            if( !(iSoftwareRegistry.IsComponentPresentL( 
+            if( !(iSoftwareRegistry.IsComponentPresentL(
                     resultUsifArray[i]->ComponentId())) )
                 {
                 caEntry->SetFlags( caEntry->GetFlags() | EMissing );
                 }
             iStorageProxy.AddL( caEntry );
             CleanupStack::PopAndDestroy( caEntry );
-            } 
+            }
         // found in the CaStorage, mark is as missing
-        else if( !(iSoftwareRegistry.IsComponentPresentL( 
-                resultUsifArray[i]->ComponentId() ))  ) 
+        else if( !(iSoftwareRegistry.IsComponentPresentL(
+                resultUsifArray[i]->ComponentId() ))  )
             {
             if( !( entries[entryIndex]->GetFlags() & EMissing ) )
                 {
-                entries[entryIndex]->SetFlags( 
+                entries[entryIndex]->SetFlags(
                         ( entries[entryIndex]->GetFlags() | EMissing ) );
-                iStorageProxy.AddL( 
+                iStorageProxy.AddL(
                         entries[entryIndex], EFalse, EItemDisappeared );
                 }
             }
         // found in the storage remove missing flag as this is Present in scr
         else if (entries[entryIndex]->GetFlags() & EMissing)
             {
-            entries[entryIndex]->SetFlags( 
+            entries[entryIndex]->SetFlags(
                     entries[entryIndex]->GetFlags() & ~EMissing );
-            iStorageProxy.AddL( entries[entryIndex]);            
+            iStorageProxy.AddL( entries[entryIndex]);
             }
         }
 
--- a/contentstorage/casrv/cawidgetscanner/group/cawidgetscanner.mmp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/cawidgetscanner/group/cawidgetscanner.mmp	Mon Oct 04 00:38:31 2010 +0300
@@ -35,7 +35,6 @@
 
 SOURCEPATH      ../src
 SOURCE          cawidgetscannerplugin.cpp
-SOURCE          cawidgetscannerinstallnotifier.cpp
 SOURCE          cawidgetscannerparser.cpp
 SOURCE          cawidgetdescription.cpp
 SOURCE          cawidgetstoragehandler.cpp
--- a/contentstorage/casrv/cawidgetscanner/inc/cawidgetscannerinstallnotifier.h	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Sis package installation event listener
- *
- */
-
-#ifndef C_CAWIDGETSCANNERINSTALLNOTIFIER_H
-#define C_CAWIDGETSCANNERINSTALLNOTIFIER_H
-
-#include <e32base.h>
-#include <e32property.h>
-
-class CCaWidgetScannerPlugin;
-
-/**
- *  Central Repository notifier.
- *
- *  @since S60 S60 v5.x
- */
-class CCaWidgetScannerInstallNotifier : public CActive
-    {
-    /**
-     * Enum defining the purpouse of the installation event.
-     */
-    enum TInstOp
-        {
-        EInstOpNone = 0x00000000,
-        EInstOpInstall = 0x00000001,
-        EInstOpUninstall = 0x00000002,
-        EInstOpRestore = 0x00000004
-        };
-
-    /**
-     * Enum defining the exit status of the installation event.
-     */
-    enum TInstOpStatus
-        {
-        EInstOpStatusNone = 0x00000000,
-        EInstOpStatusSuccess = 0x00000100,
-        EInstOpStatusAborted = 0x00000200
-        };
-
-public:
-
-    /**
-     * Creates an instance of CCaWidetScannerInstallNotifier implementation.
-     * @param aCallBack Reference to notifier interface.
-     * @param aCategory Package uid.
-     * @param aKey Key for central repository.
-     */
-    static CCaWidgetScannerInstallNotifier* NewL(
-            CCaWidgetScannerPlugin* aCallback, TUid aCategory, TUint aKey );
-
-    /**
-     * Destructor.
-     */
-    virtual ~CCaWidgetScannerInstallNotifier();
-
-private:
-    /**
-     * Constructor.
-     * @param aCallBack Reference to notifier interface.
-     * @param aCategory Package uid.
-     * @param aKey Key for central repository.
-     */
-    CCaWidgetScannerInstallNotifier( CCaWidgetScannerPlugin* aCallback,
-            TUid aCategory, TUint aKey );
-
-    /**
-     * Symbian 2nd phase constructor.
-     */
-    void ConstructL();
-
-    /**
-     * From CActive.
-     */
-    void DoCancel();
-
-    /**
-     * From CActive.
-     */
-    void RunL();
-
-    /**
-     * From CActive.
-     */
-    TInt RunError( TInt aError );
-
-private:
-    /**
-     * User side interface to Publish & Subscribe.
-     * Own.
-     */
-    RProperty iProperty;
-
-    /**
-     * Interface for notifying changes in SWI.
-     * Not own.
-     */
-    CCaWidgetScannerPlugin* iCallback;
-
-    /**
-     * Category uid.
-     * Own.
-     */
-    TUid iCategory;
-
-    /**
-     * Key identifier.
-     * Own.
-     */
-    TUint iKey;
-
-    /**
-     * flag provides workaround for a problem with missing notifications after install
-     *  
-     */
-    TBool iHackFlag; // TODO find another solution
-
-    };
-
-#endif // C_CAWIDGETSCANNERINSTALLNOTIFIER_H
-// End of File
--- a/contentstorage/casrv/cawidgetscanner/inc/cawidgetscannerplugin.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/cawidgetscanner/inc/cawidgetscannerplugin.h	Mon Oct 04 00:38:31 2010 +0300
@@ -21,12 +21,13 @@
 #include <casrvplugin.h>
 #include <f32file.h>
 #include "cammcwatcher.h"
+#include "cainstallnotifier.h"
 
 class TPluginParams;
-class CCaWidgetScannerInstallNotifier;
 class CCaWidgetStorageHandler;
 
-class CCaWidgetScannerPlugin : public CCaSrvPlugin, MMmcWatcherCallback
+class CCaWidgetScannerPlugin :
+            public CCaSrvPlugin, MMmcWatcherCallback, MCaInstallListener
     {
 
 public:
@@ -48,6 +49,8 @@
      */
     void SynchronizeL();
 
+    void HandleInstallNotifyL();
+
 private:
     //from MWidgetMmcWatcherCallback
 
@@ -78,7 +81,7 @@
     /**
      * Sis installation notifier. Own
      */
-    CCaWidgetScannerInstallNotifier* iInstallNotifier;
+    CCaInstallNotifier* iInstallNotifier;
 
     /**
      * Content Storage Handler. Own.
--- a/contentstorage/casrv/cawidgetscanner/src/cawidgetdescription.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/cawidgetscanner/src/cawidgetdescription.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -671,46 +671,45 @@
     if( iTranslationFileName.Length() )
         {
         RBuf translationFileName;
-        translationFileName.Create( iTranslationFileName.Length() + 1 );
         CleanupClosePushL( translationFileName );
+        translationFileName.CreateL( iTranslationFileName.Length() + 1 );
         translationFileName.Copy( iTranslationFileName );
         translationFileName.Append( KWidgetScannerUnderline );
-           
-        
+
         if( !HbTextResolverSymbian::Init( translationFileName, KLocalizationFilepathC ) )
-          {
-          if( !HbTextResolverSymbian::Init( translationFileName, KLocalizationFilepathZ ) )
-              {
-              // this should not be called too often 
-              TChar currentDriveLetter;
-              TDriveList driveList;
-              RFs fs;
-              User::LeaveIfError( fs.Connect() );
-              User::LeaveIfError( fs.DriveList( driveList ) );
+            {
+            if( !HbTextResolverSymbian::Init( translationFileName, KLocalizationFilepathZ ) )
+                {
+                // this should not be called too often 
+                TChar currentDriveLetter;
+                TDriveList driveList;
+                RFs fs;
+                User::LeaveIfError( fs.Connect() );
+                User::LeaveIfError( fs.DriveList( driveList ) );
+
+                RBuf path;
+                CleanupClosePushL( path );
+                path.CreateL( KLocalizationFilepath().Length() + 1 );
 
-              RBuf path;
-              path.Create( KLocalizationFilepath().Length() + 1 );
-              CleanupClosePushL( path );
-              
-              for( TInt driveNr=EDriveY; driveNr >= EDriveA; driveNr-- )
-                  {
-                  if( driveList[driveNr] )
-                      {
-                      User::LeaveIfError( fs.DriveToChar( driveNr,
-                              currentDriveLetter ) );
-                      path.Append( currentDriveLetter );
-                      path.Append( KLocalizationFilepath );
-                      if( HbTextResolverSymbian::Init( translationFileName, path ) )
-                          {
-                          break;
-                          }
-                      }
-                  path.Zero();
-                  }
-              CleanupStack::PopAndDestroy( &path );
-              fs.Close();
-              }
-           }
+                for( TInt driveNr=EDriveY; driveNr >= EDriveA; driveNr-- )
+                    {
+                    if( driveList[driveNr] )
+                        {
+                        User::LeaveIfError( fs.DriveToChar( driveNr,
+                            currentDriveLetter ) );
+                        path.Append( currentDriveLetter );
+                        path.Append( KLocalizationFilepath );
+                        if( HbTextResolverSymbian::Init( translationFileName, path ) )
+                            {
+                            break;
+                            }
+                        }
+                    path.Zero();
+                    }
+                CleanupStack::PopAndDestroy( &path );
+                fs.Close();
+                }
+            }
         
         HBufC* tmp;
         
--- a/contentstorage/casrv/cawidgetscanner/src/cawidgetscannerinstallnotifier.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Sis package installation event listener
- *
- */
-
-#include <sacls.h>
-#include "cawidgetscannerinstallnotifier.h"
-#include "cawidgetscannerplugin.h"
-
-// ============================ MEMBER FUNCTIONS =============================
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CCaWidgetScannerInstallNotifier::CCaWidgetScannerInstallNotifier(
-        CCaWidgetScannerPlugin* aCallback, TUid aCategory, TUint aKey ) :
-    CActive( EPriorityNormal )
-    {
-    CActiveScheduler::Add( this );
-
-    iCallback = aCallback;
-    iCategory = aCategory;
-    iKey = aKey;
-    iProperty.Attach( iCategory, iKey );
-    SetActive();
-    iProperty.Subscribe( iStatus );
-    iHackFlag = EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CCaWidgetScannerInstallNotifier::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaWidgetScannerInstallNotifier* CCaWidgetScannerInstallNotifier::NewL(
-        CCaWidgetScannerPlugin* aCallback, TUid aCategory, TUint aKey )
-    {
-    CCaWidgetScannerInstallNotifier* self =
-            new ( ELeave ) CCaWidgetScannerInstallNotifier( aCallback,
-                    aCategory, aKey );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaWidgetScannerInstallNotifier::~CCaWidgetScannerInstallNotifier()
-    {
-    Cancel();
-    iProperty.Close();
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaWidgetScannerInstallNotifier::DoCancel()
-    {
-    iProperty.Cancel();
-    }
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT (error is ignored)
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CCaWidgetScannerInstallNotifier::RunError( TInt /*aError*/)
-    {
-    // No need to do anything      
-    return KErrNone;
-    }
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaWidgetScannerInstallNotifier::RunL()
-    {
-    // Re-issue request before notifying
-    SetActive();
-    iProperty.Subscribe( iStatus );
-
-    TInt status;
-    User::LeaveIfError( iProperty.Get( KUidSystemCategory,
-            KSAUidSoftwareInstallKeyValue, status ) );
-
-    if( iHackFlag )
-        {
-        iHackFlag = EFalse;
-        iCallback->SynchronizeL();
-        }
-    else if( ( status & EInstOpStatusSuccess ) && (
-            ( status & EInstOpInstall ) || 
-            ( status & EInstOpUninstall ) ) )
-        {
-        iHackFlag = ETrue;
-        }
-    }
-// End of File
--- a/contentstorage/casrv/cawidgetscanner/src/cawidgetscannerplugin.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/cawidgetscanner/src/cawidgetscannerplugin.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -1,4 +1,4 @@
-/*
+    /*
  * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
  * All rights reserved.
  * This component and the accompanying materials are made available
@@ -22,7 +22,6 @@
 
 #include "cawidgetscannerplugin.h"
 #include "cawidgetstoragehandler.h"
-#include "cawidgetscannerinstallnotifier.h"
 
 // Function used to return an instance of the proxy table.
 const TImplementationProxy ImplementationTable[] =
@@ -34,11 +33,11 @@
 #pragma CTC SKIP
 #endif //COVERAGE_MEASUREMENT (proxy for instantiation)
 // ----------------------------------------------------------------------------
-// 
+//
 // ----------------------------------------------------------------------------
 //
-EXPORT_C const TImplementationProxy*
-ImplementationGroupProxy( TInt& aTableCount )
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+            TInt& aTableCount )
     {
     aTableCount = sizeof( ImplementationTable ) / sizeof(TImplementationProxy);
     return ImplementationTable;
@@ -50,7 +49,7 @@
 // ============================ MEMBER FUNCTIONS ===============================
 
 // ----------------------------------------------------------------------------
-// 
+//
 // ----------------------------------------------------------------------------
 //
 CCaWidgetScannerPlugin::CCaWidgetScannerPlugin()
@@ -58,23 +57,23 @@
     }
 
 // ----------------------------------------------------------------------------
-// 
+//
 // ----------------------------------------------------------------------------
 //
 void CCaWidgetScannerPlugin::ConstructL( TPluginParams* aPluginParams )
     {
     User::LeaveIfError( iFs.Connect() );
     iMmcWatcher = CCaMmcWatcher::NewL( iFs, this );
-    iInstallNotifier = CCaWidgetScannerInstallNotifier::NewL( this,
-            KUidSystemCategory, KSAUidSoftwareInstallKeyValue );
+    iInstallNotifier = CCaInstallNotifier::NewL( *this, 
+            CCaInstallNotifier::ESisInstallNotification );
     iStorageHandler = CCaWidgetStorageHandler::NewL(
             aPluginParams->storageProxy,
-			*aPluginParams->softwareRegistry, iFs );
+            *aPluginParams->softwareRegistry, iFs );
     SynchronizeL();
     }
 
 // ----------------------------------------------------------------------------
-// 
+//
 // ----------------------------------------------------------------------------
 //
 CCaWidgetScannerPlugin * CCaWidgetScannerPlugin::NewL(
@@ -86,7 +85,7 @@
     }
 
 // ----------------------------------------------------------------------------
-// 
+//
 // ----------------------------------------------------------------------------
 //
 CCaWidgetScannerPlugin * CCaWidgetScannerPlugin::NewLC(
@@ -99,14 +98,14 @@
     }
 
 // ----------------------------------------------------------------------------
-// 
+//
 // ----------------------------------------------------------------------------
 //
 CCaWidgetScannerPlugin::~CCaWidgetScannerPlugin()
     {
-    delete iMmcWatcher;
+    delete iStorageHandler;
     delete iInstallNotifier;
-    delete iStorageHandler;
+    delete iMmcWatcher;
     iFs.Close();
     }
 
@@ -119,6 +118,15 @@
     iStorageHandler->SynchronizeL();
     }
 
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+void CCaWidgetScannerPlugin::HandleInstallNotifyL()
+    {
+    SynchronizeL();
+    }
 // ----------------------------------------------------------------------------
 //
 // ----------------------------------------------------------------------------
--- a/contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -353,12 +353,11 @@
     {
     TBool massStorageNotInUse( ETrue );
     TInt drive;
-    if( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, drive ) ==
-        KErrNone )
+    if( DriveInfo::GetDefaultDrive( 
+            DriveInfo::EDefaultMassStorage, drive ) == KErrNone )
         {
-        TUint status;
-        if( DriveInfo::GetDriveStatus( iFs, drive, status ) == KErrNone &&
-            ( status & DriveInfo::EDriveInUse ) )
+        TVolumeInfo volumeInfo;
+        if( iFs.Volume( volumeInfo, drive ) == KErrNotReady )
             {
             massStorageNotInUse = EFalse;
             }
--- a/contentstorage/castorage/conf/CI_castoragedb.confml	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/castorage/conf/CI_castoragedb.confml	Mon Oct 04 00:38:31 2010 +0300
@@ -58,7 +58,7 @@
 			</setting>
 			<setting ref="Application" name="Application" type="string" relevant="Type='1'" required="true">
 				<desc>Application item for Operator collection.</desc>
-				<xs:pattern value="^[-+]?[0-9]{1,10}"/>
+				<xs:pattern value="^0x[0-9a-fA-F]{1,8}$"/>
 				<!-- option map="DFSFeatures/Application"/>
 				<option map="CIA_PreinstalledContent/PreInstalledJavaRom"/>
 				<option map="CIA_PreinstalledContent/PreInstalledSymbianROM"/>
@@ -139,7 +139,7 @@
 			</setting>
 			<setting ref="Application" name="Application" type="string" relevant="Type='1'" required="true">
 				<desc>Application item for Operator collection.</desc>
-				<xs:pattern value="^[-+]?[0-9]{1,10}"/>
+				<xs:pattern value="^0x[0-9a-fA-F]{1,8}$"/>
 				<!-- option map="DFSFeatures/Application"/>
 				<option map="CIA_PreinstalledContent/PreInstalledJavaRom"/>
 				<option map="CIA_PreinstalledContent/PreInstalledSymbianROM"/>
--- a/contentstorage/castorage/conf/castoragedb.confml	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/castorage/conf/castoragedb.confml	Mon Oct 04 00:38:31 2010 +0300
@@ -22,35 +22,35 @@
             </OperatorURLs>
             
             <Collections extensionPolicy="append"><LocalizeNames>true</LocalizeNames><TranslationFile>contentstorage</TranslationFile><Name>txt_applib_dblist_essentials</Name>
-                <ShortName/><TitleName>txt_applib_subtitle_essentials</TitleName><GroupName>Favorites</GroupName><Locked>false</Locked>
-                <Icon><localPath>dummy</localPath></Icon><IconSkinId/>
+                <ShortName>txt_applib_dblist_essentials</ShortName><TitleName>txt_applib_subtitle_essentials</TitleName><GroupName>Favorites</GroupName><Locked>false</Locked>
+                <Icon><localPath>dummy</localPath></Icon><IconSkinId>qtg_large_applications_essential</IconSkinId>
             </Collections>
             
-            <confml:Items extensionPolicy="append"><confml:Type>1</confml:Type><confml:Application>268458241</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items extensionPolicy="append"><confml:Type>1</confml:Type><confml:Application>10005901</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Calendar</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>270501242</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>101F857A</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Camera</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>537014009</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>20022EF9</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Contacts</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>537026521</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>20025FD9</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Control panel</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>537023930</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>200255BA</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Email</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>537067342</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>2002FF4E</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>FM Radio</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>536878947</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>20001F63</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Maps</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>537001593</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>2001FE79</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Messaging</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>270564450</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>10207C62</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Music</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>536873492</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>20000A14</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Photos</Comments></confml:Items>                
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>537006590</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>200211FE</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>Videos</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>268471609</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>10008D39</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>NokiaBrowser</Comments></confml:Items>
-            <confml:Items><confml:Type>1</confml:Type><confml:Application>537055359</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
+            <confml:Items><confml:Type>1</confml:Type><confml:Application>2002D07F</confml:Application><ColName map="CaStorageDbSetting/Collections[@key='txt_applib_dblist_essentials']"></ColName>
                 <Comments>OVI</Comments></confml:Items>
         </confml:CaStorageDbSetting>
     </confml:data>
--- a/contentstorage/castorage/conf/castoragedb.implml	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/castorage/conf/castoragedb.implml	Mon Oct 04 00:38:31 2010 +0300
@@ -24,6 +24,8 @@
         </output>
         <output dir="temp/castoragedb/" file="castoragedb_variant.sql" encoding="UTF-8">
             <template file="castoragedb_templates/castoragedb_variant.sql"/>
+            <!-- lambda a: int((int(a,16)+2**31)%2**32-2**31) -->
+            <filter name="hex2dec">lambda a: int((int(a,16)+2147483648)%4294967296-2147483648)</filter>
         </output>
     </templateml>
     
--- a/contentstorage/castorage/conf/castoragedb_templates/castoragedb_variant.sql	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/castorage/conf/castoragedb_templates/castoragedb_variant.sql	Mon Oct 04 00:38:31 2010 +0300
@@ -12,7 +12,10 @@
             {%- set Icon = c ~ Icon %}
         {%- endif %}
         {%- if loop.last -%}
-            {{ "z:\\private\\20022F35\\customsvg\\" ~ Icon }}
+            {%- if Icon == "dummy" %}
+            {% else -%}
+                {{ "z:\\private\\20022F35\\customsvg\\" ~ Icon }}
+            {%- endif -%}
         {%- endif %}
     {%- endfor %}
 {%- endmacro %}
@@ -24,7 +27,7 @@
         {%- set URL = feat_tree.CaStorageDbSetting[URLs].URL._value[i] or '' -%}
         {%- set URLIcon = feat_tree.CaStorageDbSetting[URLs].URLIcon.localPath._value[i] or '' -%}
         {%- set IconSkinId = feat_tree.CaStorageDbSetting[URLs].IconSkinId._value[i] or '' -%}
-        {%- if IconSkinId == "" and URLIcon != "" and URLIcon != "dummy" -%}
+        {%- if URLIcon != "" -%}
             {%- set URLIcon = stripPath(URLIcon) -%}
         {%- endif %}
         INSERT INTO URL ( URL_TITLE, URL_SHORT_TITLE, URL_DEST, ICON_FILENAME, ICON_SKIN_ID ) 
@@ -46,9 +49,18 @@
         {%- endif %}
         {%- set IconFileName = feat_tree.CaStorageDbSetting[Collections].Icon.localPath._value[col] or '' -%}
         {%- set IconSkinId = feat_tree.CaStorageDbSetting[Collections].IconSkinId._value[col] or '' -%}
-        {%- if IconSkinId == "" and IconFileName != "" and IconFileName != "dummy" -%}
+        {%- if IconFileName != "" -%}
             {%- set IconFileName = stripPath(IconFileName) -%}
         {%- endif %}
+        {%- if ShortName == "" -%}
+            {%- set ShortName = Name -%}
+        {%- endif %}
+        {%- if TitleName == "" -%}
+            {%- set TitleName = Name -%}
+        {%- endif %}
+        {%- if GroupName == "" -%}
+            {%- set GroupName = Name -%}
+        {%- endif %}        
     INSERT INTO COLLECTION (COLLECTION_NAME, COL_APP_GROUP_NAME, FLAGS,  COL_TITLE_NAME {% if LocalizeNames -%}, TRANSLATION_FILE{%- endif %}, COL_SHORT_NAME, ICON_FILENAME, ICON_SKIN_ID) 
     VALUES ( '{{Name}}', '{{GroupName}}', {% if Locked -%} 0 {% else %} 4 {%- endif %}, "{{TitleName}}"{% if LocalizeNames -%}, "{{TranslationFile}}"{%- endif %}, "{{ShortName}}", "{{IconFileName}}", "{{IconSkinId}}");
     {% endfor %}
@@ -70,7 +82,7 @@
         {%- endif %}
         
         {% if Type == "1" -%} INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE, ITEM_NAME, ITEM_DEST, COLLECTION_NAME) 
-          VALUES ("application", '', {{Application}},  '{{Collection}}' );{%- endif %}
+          VALUES ("application", '', {{Application|hex2dec}},  '{{Collection}}' );{%- endif %}
           
         {% if Type == "2" -%} INSERT INTO WIDGET_TO_COLLECTION (ITEM_TYPE, ITEM_NAME, URI, COLLECTION_NAME ) 
           VALUES ("widget", '{{HomescreenWidget}}', "{{HomescreenWidget}}", '{{Collection}}' ); {%- endif %}
Binary file contentstorage/castorage/data/castorage.db has changed
--- a/contentstorage/castorage/data/castoragedb_create.sql	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/castorage/data/castoragedb_create.sql	Mon Oct 04 00:38:31 2010 +0300
@@ -179,6 +179,10 @@
   VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME) , 
           (SELECT ENTRY_ID FROM CA_ENTRY WHERE (EN_TEXT = new.ITEM_NAME AND EN_TYPE_NAME = new.ITEM_TYPE )),
           (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME)) );
+  -- UPDATE FLAGS IN A COLLECTION TO WHICH THE URL IS INSERTED
+  UPDATE CA_ENTRY
+        SET EN_FLAGS=EN_FLAGS|8
+        WHERE EN_TEXT=new.COLLECTION_NAME;
 END;
 
 
--- a/contentstorage/castorage/inc/casqlcommands.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/castorage/inc/casqlcommands.h	Mon Oct 04 00:38:31 2010 +0300
@@ -196,7 +196,7 @@
 _LIT( KSQLGetListByLaunchDataPart3,") ON ENTRY_ID = LA_ENTRY_ID \
 ORDER BY USAGE_DATA");
 
-_LIT( KSQLGetParentIds,"SELECT GE_GROUP_ID FROM CA_GROUP_ENTRY \
+_LIT( KSQLGetParentIds,"SELECT DISTINCT GE_GROUP_ID FROM CA_GROUP_ENTRY \
 WHERE GE_ENTRY_ID IN ( %S )" );
 
 _LIT( KSQLNotINIds," AND GE_GROUP_ID NOT IN( %S )" );
--- a/contentstorage/castorage/src/casqlquery.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/castorage/src/casqlquery.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -314,8 +314,15 @@
 void CCaSqlQuery::BindTextL( TInt aParameterIndex,
         const TDesC& aParameterValue )
     {
-    User::LeaveIfError( iStatement.BindText( aParameterIndex,
-            aParameterValue ) );
+    if( aParameterValue.Length() )
+        {
+        User::LeaveIfError( iStatement.BindText( aParameterIndex, 
+                aParameterValue ) );
+        }
+    else
+        {
+        User::LeaveIfError( iStatement.BindNull( aParameterIndex) );
+        }
     }
 
 // ---------------------------------------------------------------------------
--- a/contentstorage/cautils/cautils.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/cautils/cautils.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -14,6 +14,8 @@
 # Description:
 #
 
+CONFIG += hb
+
 TEMPLATE = lib
 symbian:{
 defFilePath = ./..
@@ -32,7 +34,8 @@
 
 LIBS += -leuser \
         -lbafl \
-        -lestor
+        -lestor \
+        -lefsrv
         
 CONFIG -= stl
 include(cautils.pri)
--- a/contentstorage/cautils/inc/cautils.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/cautils/inc/cautils.h	Mon Oct 04 00:38:31 2010 +0300
@@ -34,6 +34,11 @@
      * @return error code
      */
     IMPORT_C static TInt GetTUint( const TDesC& aStr, TUint& aInt );
+    
+    /**
+     * Gets TUint from a aStr - HEX or Decimal
+     */
+    IMPORT_C static void InitTextResolverSymbianL( const TDesC& aFilename );
 
     /**
      * Template method for marshaling data.
--- a/contentstorage/cautils/src/cautils.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/cautils/src/cautils.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -15,7 +15,12 @@
  *
  */
 
+#include <hbtextresolversymbian.h>
+#include <f32file.h>
+
 #include "cautils.h"
+#include "cadef.h"
+
 _LIT(KHexPrefix, "0x");
 
 // ---------------------------------------------------------
@@ -37,3 +42,46 @@
     return TLex( string ).Val( aInt, radix );
     }
 
+// ---------------------------------------------------------
+// MenuUtils::InitTextResolverSymbian
+// ---------------------------------------------------------
+//
+EXPORT_C void MenuUtils::InitTextResolverSymbianL( const TDesC& aFilename )
+    {
+    if( !HbTextResolverSymbian::Init( aFilename, KLocalizationFilepathC ) )
+       {
+       if( !HbTextResolverSymbian::Init( aFilename, KLocalizationFilepathZ ) )
+           {
+           // this should not be called too often 
+           TChar currentDriveLetter;
+           TDriveList driveList;
+           RFs fs;
+           CleanupClosePushL( fs );
+           User::LeaveIfError( fs.Connect() );
+           User::LeaveIfError( fs.DriveList( driveList ) );
+
+           RBuf path;
+           CleanupClosePushL( path );
+           path.CreateL( KLocalizationFilepath().Length() + 1 );
+           
+           for( TInt driveNr=EDriveY; driveNr >= EDriveA; driveNr-- )
+               {
+               if( driveList[driveNr] )
+                   {
+                   User::LeaveIfError( fs.DriveToChar( driveNr,
+                           currentDriveLetter ) );
+                   path.Append( currentDriveLetter );
+                   path.Append( KLocalizationFilepath );
+                   if( HbTextResolverSymbian::Init( aFilename, path ) )
+                       {
+                       break;
+                       }
+                   }
+               path.Zero();
+               }
+           CleanupStack::PopAndDestroy( &path );
+           CleanupStack::PopAndDestroy( &fs );
+           }
+        }
+    }
+
--- a/contentstorage/eabi/casathandleru.def	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-EXPORTS
-	_ZN13CCaSatHandler15CheckVisibilityEv @ 1 NONAME
-	_ZN13CCaSatHandler4NewLEv @ 2 NONAME
-	_ZN13CCaSatHandler7GetNameER6TDes16 @ 3 NONAME
-	_ZN13CCaSatHandler9LoadIconLEv @ 4 NONAME
-
--- a/contentstorage/eabi/cautilsu.def	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/eabi/cautilsu.def	Mon Oct 04 00:38:31 2010 +0300
@@ -57,48 +57,49 @@
 	_ZN23CCaInnerIconDescription4NewLEv @ 56 NONAME
 	_ZN23CCaInnerIconDescription5NewLCEv @ 57 NONAME
 	_ZN23CCaInnerIconDescription5SetIdEi @ 58 NONAME
-	_ZN9MenuUtils8GetTUintERK7TDesC16Rj @ 59 NONAME
-	_ZNK11RCaIdsArray12ExternalizeLER12RWriteStream @ 60 NONAME
-	_ZNK11RCaIdsArray13MarshalDataLCEv @ 61 NONAME
-	_ZNK13CCaInnerEntry11isLocalizedENS_14TLocalizedTypeE @ 62 NONAME
-	_ZNK13CCaInnerEntry12ExternalizeLER12RWriteStream @ 63 NONAME
-	_ZNK13CCaInnerEntry13GetAttributesEv @ 64 NONAME
-	_ZNK13CCaInnerEntry14GetDescriptionEv @ 65 NONAME
-	_ZNK13CCaInnerEntry16GetEntryTypeNameEv @ 66 NONAME
-	_ZNK13CCaInnerEntry4IconEv @ 67 NONAME
-	_ZNK13CCaInnerEntry5GetIdEv @ 68 NONAME
-	_ZNK13CCaInnerEntry6GetUidEv @ 69 NONAME
-	_ZNK13CCaInnerEntry7GetRoleEv @ 70 NONAME
-	_ZNK13CCaInnerEntry7GetTextEv @ 71 NONAME
-	_ZNK13CCaInnerEntry8GetFlagsEv @ 72 NONAME
-	_ZNK13CCaInnerEntry9GetIconIdEv @ 73 NONAME
-	_ZNK13CCaInnerQuery10GetChildIdEv @ 74 NONAME
-	_ZNK13CCaInnerQuery10GetFlagsOnEv @ 75 NONAME
-	_ZNK13CCaInnerQuery11GetFlagsOffEv @ 76 NONAME
-	_ZNK13CCaInnerQuery11GetParentIdEv @ 77 NONAME
-	_ZNK13CCaInnerQuery12ExternalizeLER12RWriteStream @ 78 NONAME
-	_ZNK13CCaInnerQuery13GetAttributesEv @ 79 NONAME
-	_ZNK13CCaInnerQuery17GetEntryTypeNamesEv @ 80 NONAME
-	_ZNK13CCaInnerQuery6GetIdsEv @ 81 NONAME
-	_ZNK13CCaInnerQuery6GetUidEv @ 82 NONAME
-	_ZNK13CCaInnerQuery7GetRoleEv @ 83 NONAME
-	_ZNK13CCaInnerQuery7GetSortEv @ 84 NONAME
-	_ZNK13CCaInnerQuery8GetCountEv @ 85 NONAME
-	_ZNK15RCaEntriesArray12ExternalizeLER12RWriteStream @ 86 NONAME
-	_ZNK17RCaEntryAttrArray4FindERK7TDesC16R6TDes16 @ 87 NONAME
-	_ZNK17RCaEntryAttrArray4FindERK7TDesC16R7TPtrC16 @ 88 NONAME
-	_ZNK17RCaEntryAttrArray5ExistERK7TDesC16 @ 89 NONAME
-	_ZNK20CCaLocalizationEntry11GetStringIdEv @ 90 NONAME
-	_ZNK20CCaLocalizationEntry12GetTableNameEv @ 91 NONAME
-	_ZNK20CCaLocalizationEntry13GetQmFilenameEv @ 92 NONAME
-	_ZNK20CCaLocalizationEntry16GetAttributeNameEv @ 93 NONAME
-	_ZNK20CCaLocalizationEntry18GetLocalizedStringEv @ 94 NONAME
-	_ZNK20CCaLocalizationEntry8GetRowIdEv @ 95 NONAME
-	_ZNK20CCaLocalizationEntry9GetTextIdEv @ 96 NONAME
-	_ZNK22CCaInnerNotifierFilter11GetParentIdEv @ 97 NONAME
-	_ZNK22CCaInnerNotifierFilter12ExternalizeLER12RWriteStream @ 98 NONAME
-	_ZNK22CCaInnerNotifierFilter12GetEntryRoleEv @ 99 NONAME
-	_ZNK22CCaInnerNotifierFilter12GetTypeNamesEv @ 100 NONAME
-	_ZNK22CCaInnerNotifierFilter15GetNotifierTypeEv @ 101 NONAME
-	_ZNK22CCaInnerNotifierFilter6GetIdsEv @ 102 NONAME
+	_ZN9MenuUtils24InitTextResolverSymbianLERK7TDesC16 @ 59 NONAME
+	_ZN9MenuUtils8GetTUintERK7TDesC16Rj @ 60 NONAME
+	_ZNK11RCaIdsArray12ExternalizeLER12RWriteStream @ 61 NONAME
+	_ZNK11RCaIdsArray13MarshalDataLCEv @ 62 NONAME
+	_ZNK13CCaInnerEntry11isLocalizedENS_14TLocalizedTypeE @ 63 NONAME
+	_ZNK13CCaInnerEntry12ExternalizeLER12RWriteStream @ 64 NONAME
+	_ZNK13CCaInnerEntry13GetAttributesEv @ 65 NONAME
+	_ZNK13CCaInnerEntry14GetDescriptionEv @ 66 NONAME
+	_ZNK13CCaInnerEntry16GetEntryTypeNameEv @ 67 NONAME
+	_ZNK13CCaInnerEntry4IconEv @ 68 NONAME
+	_ZNK13CCaInnerEntry5GetIdEv @ 69 NONAME
+	_ZNK13CCaInnerEntry6GetUidEv @ 70 NONAME
+	_ZNK13CCaInnerEntry7GetRoleEv @ 71 NONAME
+	_ZNK13CCaInnerEntry7GetTextEv @ 72 NONAME
+	_ZNK13CCaInnerEntry8GetFlagsEv @ 73 NONAME
+	_ZNK13CCaInnerEntry9GetIconIdEv @ 74 NONAME
+	_ZNK13CCaInnerQuery10GetChildIdEv @ 75 NONAME
+	_ZNK13CCaInnerQuery10GetFlagsOnEv @ 76 NONAME
+	_ZNK13CCaInnerQuery11GetFlagsOffEv @ 77 NONAME
+	_ZNK13CCaInnerQuery11GetParentIdEv @ 78 NONAME
+	_ZNK13CCaInnerQuery12ExternalizeLER12RWriteStream @ 79 NONAME
+	_ZNK13CCaInnerQuery13GetAttributesEv @ 80 NONAME
+	_ZNK13CCaInnerQuery17GetEntryTypeNamesEv @ 81 NONAME
+	_ZNK13CCaInnerQuery6GetIdsEv @ 82 NONAME
+	_ZNK13CCaInnerQuery6GetUidEv @ 83 NONAME
+	_ZNK13CCaInnerQuery7GetRoleEv @ 84 NONAME
+	_ZNK13CCaInnerQuery7GetSortEv @ 85 NONAME
+	_ZNK13CCaInnerQuery8GetCountEv @ 86 NONAME
+	_ZNK15RCaEntriesArray12ExternalizeLER12RWriteStream @ 87 NONAME
+	_ZNK17RCaEntryAttrArray4FindERK7TDesC16R6TDes16 @ 88 NONAME
+	_ZNK17RCaEntryAttrArray4FindERK7TDesC16R7TPtrC16 @ 89 NONAME
+	_ZNK17RCaEntryAttrArray5ExistERK7TDesC16 @ 90 NONAME
+	_ZNK20CCaLocalizationEntry11GetStringIdEv @ 91 NONAME
+	_ZNK20CCaLocalizationEntry12GetTableNameEv @ 92 NONAME
+	_ZNK20CCaLocalizationEntry13GetQmFilenameEv @ 93 NONAME
+	_ZNK20CCaLocalizationEntry16GetAttributeNameEv @ 94 NONAME
+	_ZNK20CCaLocalizationEntry18GetLocalizedStringEv @ 95 NONAME
+	_ZNK20CCaLocalizationEntry8GetRowIdEv @ 96 NONAME
+	_ZNK20CCaLocalizationEntry9GetTextIdEv @ 97 NONAME
+	_ZNK22CCaInnerNotifierFilter11GetParentIdEv @ 98 NONAME
+	_ZNK22CCaInnerNotifierFilter12ExternalizeLER12RWriteStream @ 99 NONAME
+	_ZNK22CCaInnerNotifierFilter12GetEntryRoleEv @ 100 NONAME
+	_ZNK22CCaInnerNotifierFilter12GetTypeNamesEv @ 101 NONAME
+	_ZNK22CCaInnerNotifierFilter15GetNotifierTypeEv @ 102 NONAME
+	_ZNK22CCaInnerNotifierFilter6GetIdsEv @ 103 NONAME
 
--- a/contentstorage/extinc/casathandler.h	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: The API supports attributes not present in MCS from SAT Api
- *
- */
-
-#ifndef __CASATHANDLER_H__
-#define __CASATHANDLER_H__
-
-#include <AknIconUtils.h>
-
-#include <rsatsession.h>
-#include <tsaticoninfo.h>
-#ifdef SIM_ATK_SERVICE_API_V1
-#include <rsatservice.h>// MCL
-#else
-#include <RSatIcon.h> // 5.0 
-#endif
-
-/**
- *  SAT Handler.
- *  @lib mcssathandler.lib
- *  @since S60 v5.0
- */
-NONSHARABLE_CLASS( CCaSatHandler ): public CBase
-    {
-public:
-    /**
-     * Two-phased constructor. Leaves on failure.
-     * @return The constructed object.
-     */
-    IMPORT_C static CCaSatHandler* NewL();
-
-    /**
-     * Destructor.
-     * @since S60 v5.0
-     * @capability None.
-     * @throws None.
-     * @panic None.
-     */
-    virtual ~CCaSatHandler();
-
-    IMPORT_C CAknIcon* LoadIconL();
-
-    IMPORT_C TInt GetName( TDes& aName );
-
-    IMPORT_C static TBool CheckVisibility();
-
-private:
-
-    /**
-     * Constructor.
-     */
-    CCaSatHandler();
-
-    /**
-     * 2nd phase constructor.
-     */
-    void ConstructL();
-
-    /**
-     * Gets best icon from aIconEF.
-     */
-    CFbsBitmap* GetBitmapL( const RIconEf& aIconEF );
-
-private:
-    // data
-
-    RSatSession iSatSession;
-
-#ifdef SIM_ATK_SERVICE_API_V1
-    RSatService iSatIcon;
-#else
-    RSatIcon iSatIcon;
-#endif
-    };
-
-#endif // __CASATHANDLER_H__
--- a/contentstorage/extsrc/casathandler.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Used for receive SIM Application name, icon or visibility information.
- *
- */
-
-// INCLUDE FILES
-
-#include <e32property.h>
-#include <bitdev.h>
-
-#include "ca2internalCRkeys.h"
-#include "casathandler.h"
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-// -----------------------------------------------------------------------------
-// CCaSatHandler::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CCaSatHandler* CCaSatHandler::NewL()
-    {
-    CCaSatHandler* self = new ( ELeave ) CCaSatHandler();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-CCaSatHandler::~CCaSatHandler()
-    {
-    iSatIcon.Close();
-    iSatSession.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// LoadIconL
-// -----------------------------------------------------------------------------
-EXPORT_C CAknIcon* CCaSatHandler::LoadIconL()
-    {
-    TInt iconId( KErrNone );
-    User::LeaveIfError( RProperty::Get( KCRUidCa, KCaSatUIIconId, iconId ) );
-    CAknIcon* icon = CAknIcon::NewL();
-    CleanupStack::PushL( icon );
-    if( iconId != KErrNone )
-        {
-        RIconEf iIconEf;
-        iSatIcon.GetIconInfoL( TUint8( iconId ), iIconEf );
-        CleanupClosePushL( iIconEf );
-        CFbsBitmap* bitmap = GetBitmapL( iIconEf );
-        if( bitmap )
-            {
-            CFbsBitmap* mask(  new (ELeave) CFbsBitmap );
-            CleanupStack::PushL( mask );
-
-            icon->SetBitmap( bitmap );
-            // create and set mask
-            User::LeaveIfError( mask->Create( bitmap->SizeInPixels(),
-                    EGray256 ) );
-
-            CFbsBitmapDevice* maskDevice = CFbsBitmapDevice::NewL( mask );
-            CleanupStack::PushL( maskDevice );
-            CFbsBitGc* maskGc;
-            User::LeaveIfError( maskDevice->CreateContext( maskGc ) );
-            CleanupStack::PushL( maskGc );
-            maskGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
-            maskGc->SetDrawMode( CGraphicsContext::EDrawModePEN );
-            maskGc->SetBrushColor( KRgbBlack );
-            maskGc->Clear();
-            maskGc->SetBrushColor( KRgbWhite );
-            maskGc->DrawRect( TRect( TPoint(), bitmap->SizeInPixels() ) );
-            icon->SetMask( mask );
-
-            CleanupStack::PopAndDestroy( maskGc );
-            CleanupStack::PopAndDestroy( maskDevice );
-            CleanupStack::Pop( mask );
-            }
-        CleanupStack::PopAndDestroy( &iIconEf ); // iIconEf
-        CleanupStack::Pop( icon );
-        }
-    else
-        {
-        CleanupStack::PopAndDestroy( icon );
-        icon = NULL;
-        }
-    return icon;
-    }
-
-// ---------------------------------------------------------------------------
-// CCaSatHandler::GetName
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCaSatHandler::GetName( TDes& aName )
-    {
-    return RProperty::Get( KCRUidCa, KCaSatUIName, aName );
-    }
-
-// ---------------------------------------------------------------------------
-// CCaSatHandler::GetVisibility
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCaSatHandler::CheckVisibility()
-    {
-    TInt visibility( KErrNone );
-    TInt err = RProperty::Get( KCRUidCa, KCaShowSatUI, visibility );
-    if( err == KErrNone && visibility )
-        return ETrue;
-    else
-        return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CCaSatHandler::CMcsSatHandler
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CCaSatHandler::CCaSatHandler()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCaSatHandler::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CCaSatHandler::ConstructL()
-    {
-    iSatSession.ConnectL();
-    iSatIcon.OpenL( iSatSession );
-    }
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT (Icon can be created only from SIM)
-// ---------------------------------------------------------------------------
-// CCaSatHandler::GetVisibility
-// ---------------------------------------------------------------------------
-//
-CFbsBitmap* CCaSatHandler::GetBitmapL( const RIconEf& aIconEF )
-    {
-    TInt selectedIconIndex( KErrNotFound );
-    TSize selectedIconSize( 0, 0 );
-    CFbsBitmap* bitmap( NULL );
-    for( TInt i = 0; i < aIconEF.Count(); ++i )
-        {
-        if( ( aIconEF[i].IconSize().iHeight * aIconEF[i].IconSize().iWidth )
-                >= ( selectedIconSize.iHeight * selectedIconSize.iWidth ) )
-            if( bitmap )
-                {
-                delete bitmap;
-                bitmap = NULL;
-                }
-        // test and select index of iIcon which is not too big
-        TRAPD( bitmapErr, bitmap = iSatIcon.GetIconL( aIconEF[ i ] ) );
-        if( !bitmapErr && bitmap ) //!iBitmap if iIcon is too big
-            {
-            selectedIconSize = aIconEF[i].IconSize();
-            selectedIconIndex = i;
-            }
-        else if( bitmapErr )
-            {
-            User::Leave( bitmapErr );
-            }
-        }
-    if( selectedIconIndex != KErrNotFound )
-        {
-        if( bitmap )
-            {
-            delete bitmap;
-            bitmap = NULL;
-            }
-        TRAPD( bitmapErr, bitmap = 
-                iSatIcon.GetIconL( aIconEF[ selectedIconIndex ] ) );
-        User::LeaveIfError( bitmapErr );
-        return bitmap;
-        }
-    else
-        {
-        return NULL;
-        }
-    }
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
-//  End of File
--- a/contentstorage/group/camenu.mmp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/group/camenu.mmp	Mon Oct 04 00:38:31 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: 19.1.11 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 19.1.12 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -34,7 +34,6 @@
 SOURCE          casrv.cpp
 SOURCE          casrvmmchistory.cpp
 SOURCE          cainstallnotifier.cpp
-SOURCE          cainstallstrategy.cpp
 SOURCE          cammcwatcher.cpp
 SOURCE          casrvengutils.cpp
 SOURCE	        casrvnotifier.cpp
@@ -66,6 +65,7 @@
 LIBRARY         casrvmanager.lib
 
 LIBRARY         scrclient.lib
+LIBRARY         sifnotification.lib
 
 // HB LIBRARIES
 SYSTEMINCLUDE		/epoc32/include/mw/hb/hbcore
--- a/contentstorage/group/casathandler.mmp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-// To get the MW_LAYER_SYSTEMINCLUDE-definition
-#include <platform_paths.hrh>
-
-TARGET          casathandler.dll
-TARGETTYPE      dll
-UID             0x1000008D 0x2001CB7B
-CAPABILITY      CAP_GENERAL_DLL
-VENDORID        VID_DEFAULT
-
-SOURCEPATH      ../extsrc
-SOURCE          casathandler.cpp
-
-USERINCLUDE     ../extinc 
-USERINCLUDE     ../inc 
-
-
-MW_LAYER_SYSTEMINCLUDE
-
-LIBRARY         euser.lib
-LIBRARY         aknicon.lib
-LIBRARY         SatClient.lib
-LIBRARY         fbscli.lib
-LIBRARY         bitgdi.lib
-
-
--- a/contentstorage/group/group.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/group/group.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -30,8 +30,7 @@
      "$${LITERAL_HASH}endif" \
      "../data/backup_registration.xml z:/private/20022F90/backup_registration.xml"
 
-BLD_INF_RULES.prj_mmpfiles += "casathandler.mmp" \
-    "../castorage/group/castorage.mmp" \
+BLD_INF_RULES.prj_mmpfiles += "../castorage/group/castorage.mmp" \
     "../casatinterface/group/MenuInterface.mmp" \
     "../casrv/casrvmgr/group/casrvmanager.mmp" \
     "camenu.mmp" \
@@ -45,7 +44,6 @@
         BLD_INF_RULES.prj_mmpfiles += \
 #        "$${LITERAL_HASH}include \"../castorage/internal/tsrc/castoragetester/group/bld.inf\" " \  # disabled, needs CONTENT_ARSENAL_STORAGE_UT flag
 #        "$${LITERAL_HASH}include \"../internal/MT_casrv/group/bld.inf\" " \ # disabled, needs CONTENT_ARSENAL_STORAGE_UT flag
-        "$${LITERAL_HASH}include \"../internal/MT_sathandler/group/bld.inf\" " \
         "$${LITERAL_HASH}include \"../internal/MT_handler/group/bld.inf\" " \
 #        "$${LITERAL_HASH}include \"../casrv/caappscanner/internal/MT_cappscanner/group/bld.inf\" " \ # disabled, needs CONTENT_ARSENAL_STORAGE_UT flag
         "$${LITERAL_HASH}include \"../casrv/casatmonitor/internal/MT_satmonitor/group/bld.inf\" " \
--- a/contentstorage/inc/cadef.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/inc/cadef.h	Mon Oct 04 00:38:31 2010 +0300
@@ -12,7 +12,7 @@
  * Contributors:
  *
  * Description:  Definition of different constants
- *  Version     : %version: 10.1.27 % << Don't touch! Updated by Synergy at check-out.
+ *  Version     : %version: 10.1.28 % << Don't touch! Updated by Synergy at check-out.
  *
  */
 
@@ -76,7 +76,6 @@
 _LIT( KCaTypePackage, "package" );
 _LIT( KCaAttrView, "view" ); ///< View.
 _LIT( KCaAttrUrl, "url" );
-_LIT( KCaAttrWindowGroupId, "window_group_id" );
 _LIT( KCaTypeCollectionDownload, "collection::downloaded" );
 _LIT( KCaPackageUid,"packageuid");
 _LIT( KCaAttrInstallationTime, "installationTime");
@@ -171,7 +170,6 @@
 
 _LIT8( KCaCmdOpen, "open" ); ///< Open item.
 _LIT8( KCaCmdRemove, "remove" ); ///< Remove item.
-_LIT8( KCaCmdClose, "close" ); ///< Close item.
 
 
 //Properties in database
--- a/contentstorage/srvinc/cainstallnotifier.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/srvinc/cainstallnotifier.h	Mon Oct 04 00:38:31 2010 +0300
@@ -18,12 +18,8 @@
 #ifndef CAINSTALLNOTIFIER_H
 #define CAINSTALLNOTIFIER_H
 
-#include <sacls.h>
 #include <e32base.h>
-#include <e32property.h>
-#include "castorage_global.h"
-
-class CNotifierStrategy;
+#include <usif/sif/sifnotification.h>
 
 /**
  * Interface for updating after installer events.
@@ -39,7 +35,7 @@
      * Pure virtual method.
      * @param aEvent event type.
      */
-    virtual void HandleInstallNotifyL(TInt aEvent) = 0;
+    virtual void HandleInstallNotifyL() = 0;
     };
 
 /**
@@ -47,7 +43,8 @@
  *
  *  @since S60 v5.0
  */
-NONSHARABLE_CLASS( CCaInstallNotifier ) : public CActive
+NONSHARABLE_CLASS( CCaInstallNotifier ) : public CBase,
+        public Usif::MSifOperationsHandler
     {
 
 public:
@@ -59,8 +56,7 @@
         {
         ENoNotification,            ///< No notification.
         ESisInstallNotification,    ///< System installation notification.
-        EJavaInstallNotification,   ///< Java instalation and uninstallation notification.
-        EUsifUninstallNotification, ///< Usif's uninstalation notification.
+        EAllTypesNotification,    ///< System installation notification.
         };
 
     /**
@@ -69,7 +65,39 @@
      * @param aNotificationType Notification type.
      */
 IMPORT_C static CCaInstallNotifier* NewL( MCaInstallListener& aListener,
-            TNotificationType aNotificationType );
+            TNotificationType aNotificationType = EAllTypesNotification );
+
+    /**
+     * Called when a new operation is started. The client should use the S
+     * ubscribeL() method (@see CSifOperationsNotifier) to register for progress
+     * and end notification for this operation. This function should return
+     * quickly as this is run as part of an active object request completion
+     * handler.
+
+     * @param aKey The Start End key of the operation.
+     * @param aStartData Start operation related information.
+     */
+    void StartOperationHandler(
+            TUint aKey, const Usif::CSifOperationStartData& aStartData);
+
+    /**
+     * Called when an operation completes.
+     * This function should return quickly as this is run as part of an active
+     * object request completion handler.
+
+     * @param aEndData End operation related information.
+     */
+    void EndOperationHandler(const Usif::CSifOperationEndData& aEndData);
+
+    /**
+     * Called whenever a progress update is available.
+     * This function should return quickly as this is run as part of an active
+     * object request completion handler.
+
+     * @param aProgressData Progress operation related information.
+     */
+    void ProgressOperationHandler(
+            const Usif::CSifOperationProgressData& aProgressData);
 
     /**
      * Destructor.
@@ -90,39 +118,23 @@
      */
     void ConstructL( TNotificationType aNotificationType );
 
-    /**
-     * From CActive.
-     */
-    void DoCancel();
-
-    /**
-     * From CActive.
-     */
-    void RunL();
-
-    /**
-     * From CActive.
-     */
-    TInt RunError( TInt aError );
-
 private:
 
     /**
-     * RProperty.
-     * Own.
-     */
-    RProperty iProperty;
-
-    /**
      * Interface for notifying changes in folder.
      * Not Own.
      */
     MCaInstallListener& iListener;
 
-    /*
-     * Notification strategy.
+    /**
+     * USIF notifier
+     * Own.
      */
-    CNotifierStrategy* iNotifierStrategy;
+    Usif::CSifOperationsNotifier* iNotifier;
+
+    TUint iKey;
+
+    TNotificationType iNotificationType;
 
     };
 
--- a/contentstorage/srvinc/cainstallstrategy.h	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#ifndef CAINSTALLSTRATEGY_H
-#define CAINSTALLSTRATEGY_H
-
-#include "cainstallnotifier.h"
-#include <e32base.h>
-#include <SWInstallerInternalPSKeys.h>
-
-/**
- * Strategy interface.
- *
- * @since S60 v5.0
- */
-class CNotifierStrategy: public CBase
-    {
-public:
-
-    /**
-     * Notifies listener with changes in property.
-     * @param aProperty to read values from.
-     * @param aListener listener to notify.
-     */
-    virtual void NotifyListenerL( RProperty& aProperty,
-            MCaInstallListener& aListener ) = 0;
-
-    };
-
-/**
- *  CA Install strategy.
- *
- *  @since S60 v5.0
- */
-NONSHARABLE_CLASS( CCaSwiInstallStrategy ): public CNotifierStrategy
-    {
-public:
-
-    /**
-     * Creates an instance of CCaInstallStrategy.
-     * @param aProperty property to handle.
-     */
-    static CCaSwiInstallStrategy* NewL( RProperty& aProperty );
-
-    /**
-     * Notifies listener with changes in property.
-     * @param aProperty to read values from.
-     * @param aListener listener to notify.
-     */
-    void NotifyListenerL( RProperty& aProperty,
-            MCaInstallListener& aListener );
-
-private:
-
-    /**
-     * Constructor.
-     * @param aProperty property to handle.
-     */
-    CCaSwiInstallStrategy( RProperty& aProperty );
-
-    /**
-     * Symbian 2nd phase constructor.
-     */
-    void ConstructL();
-
-    };
-
-/**
- *  CA Java install strategy.
- *
- *  @since S60 v5.0
- */
-NONSHARABLE_CLASS( CCaJavaInstallStrategy ): public CNotifierStrategy
-    {
-public:
-
-    /**
-     * Creates an instance of CCaInstallStrategy.
-     * @param aProperty property to handle.
-     */
-    static CCaJavaInstallStrategy* NewL( RProperty& aProperty );
-
-    /**
-     * Notifies listener with changes in property.
-     * @param aProperty to read values from.
-     * @param aListener listener to notify.
-     */
-    void NotifyListenerL( RProperty& aProperty,
-            MCaInstallListener& aListener );
-
-private:
-
-    /**
-     * Constructor.
-     * @param aProperty property to handle.
-     */
-    CCaJavaInstallStrategy( RProperty& aProperty );
-
-    /**
-     * Symbian 2nd phase constructor.
-     */
-    void ConstructL();
-
-    };
-
-/**
- *  CA Unninstal with USIF strategy.
- *
- *  @since S60 v5.0
- */
-NONSHARABLE_CLASS( CCaUsifUninstallStrategy ): public CNotifierStrategy
-    {
-public:
-
-    /**
-     * Creates an instance of CCaInstallStrategy.
-     * @param aProperty property to handle.
-     */
-    static CCaUsifUninstallStrategy* NewL( RProperty& aProperty );
-
-    /**
-     * Notifies listener with changes in property.
-     * @param aProperty to read values from.
-     * @param aListener listener to notify.
-     */
-    void NotifyListenerL( RProperty& aProperty,
-            MCaInstallListener& aListener );
-
-private:
-
-    /**
-     * Constructor.
-     * @param aProperty property to handle.
-     */
-    CCaUsifUninstallStrategy( RProperty& aProperty );
-
-    /**
-     * Symbian 2nd phase constructor.
-     */
-    void ConstructL();
-
-private:
-
-    /**
-     * Contains uninstallation status of application 
-     * that was started to uninstall.
-     */
-    TInt iUninstallStatus;
-
-    };
-
-#endif /* CAINSTALLSTRATEGY_H */
-
-// End of File
-
--- a/contentstorage/srvsrc/cainstallnotifier.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/srvsrc/cainstallnotifier.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -16,7 +16,9 @@
  */
 
 #include "cainstallnotifier.h"
-#include "cainstallstrategy.h"
+#include "cadef.h"
+
+using namespace Usif;
 
 EXPORT_C CCaInstallNotifier* CCaInstallNotifier::NewL(
         MCaInstallListener& aListener, TNotificationType aNotificationType )
@@ -30,53 +32,53 @@
 
 CCaInstallNotifier::~CCaInstallNotifier()
     {
-    Cancel();
-    iProperty.Close();
-    delete iNotifierStrategy;
+    delete iNotifier;
     }
 
 CCaInstallNotifier::CCaInstallNotifier( MCaInstallListener& aListener ) :
-    CActive( EPriorityNormal ), iListener( aListener )
-    {
-    CActiveScheduler::Add( this );
-    SetActive();
-    }
+        iListener( aListener )
+{
+}
 
 void CCaInstallNotifier::ConstructL( TNotificationType aNotificationType )
-    {
-    switch( aNotificationType )
-		{
-        case ESisInstallNotification:
-        	iNotifierStrategy = CCaSwiInstallStrategy::NewL( iProperty );
-            break;
-        case EUsifUninstallNotification:
-        	iNotifierStrategy = CCaUsifUninstallStrategy::NewL( iProperty );
-            break;
-        case EJavaInstallNotification:
-        	iNotifierStrategy = CCaJavaInstallStrategy::NewL( iProperty );
-            break;
-        default:
-        	User::Leave( KErrNotSupported );
-            break;
-		}
-    iProperty.Subscribe( iStatus );
-    }
+{
+    iNotifier = CSifOperationsNotifier::NewL( *this );
+    iNotificationType = aNotificationType;
+}
+
+void CCaInstallNotifier::EndOperationHandler(const CSifOperationEndData& aEndData)
+{
+    TRAP_IGNORE
+        (
+        if( aEndData.ErrorCode() == KErrNone )
+            {
+            iListener.HandleInstallNotifyL();
+            }
+        iNotifier->CancelSubscribeL( iKey );
+        )
+}
 
-void CCaInstallNotifier::DoCancel()
-    {
-    iProperty.Cancel();
-    }
+void CCaInstallNotifier::ProgressOperationHandler(
+        const CSifOperationProgressData& /*aProgressData*/)
+{
+}
 
-void CCaInstallNotifier::RunL()
-    {
-    SetActive();
-    iProperty.Subscribe( iStatus );
-    iNotifierStrategy->NotifyListenerL( iProperty, iListener );
-    }
-
-TInt CCaInstallNotifier::RunError( TInt /*aError*/)
-    {
-    // No need to do anything
-    return KErrNone;
-    }
-
+void CCaInstallNotifier::StartOperationHandler(
+        TUint aKey, const CSifOperationStartData& aStartData)
+{
+    TRAP_IGNORE
+        (
+        if( iNotificationType == EAllTypesNotification )
+            {
+            iKey = aKey;
+            iNotifier->SubscribeL( aKey, ETrue );
+            }
+        else if ( iNotificationType == ESisInstallNotification
+                && aStartData.SoftwareType().Compare(
+                        KCaAttrAppTypeValueNative ) == KErrNone )
+            {
+            iKey = aKey;
+            iNotifier->SubscribeL( aKey, ETrue );
+            }
+        )
+}
--- a/contentstorage/srvsrc/cainstallstrategy.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-#include <e32property.h>
-#include <SWInstallerInternalPSKeys.h>
-#include <app/javadomainpskeys.h>
-#include <swi/swispubsubdefs.h>
-
-#include "cainstallstrategy.h"
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaSwiInstallStrategy* CCaSwiInstallStrategy::NewL( RProperty& aProperty )
-    {
-    CCaSwiInstallStrategy* self = new ( ELeave ) CCaSwiInstallStrategy(
-            aProperty );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaSwiInstallStrategy::NotifyListenerL(
-		RProperty& aProperty, MCaInstallListener& aListener )
-    {
-    TInt appUid;
-    User::LeaveIfError( aProperty.Get( KUidSystemCategory,
-            KUidSwiLatestInstallation, appUid ) );
-    if( appUid )
-        {
-        aListener.HandleInstallNotifyL(appUid );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaSwiInstallStrategy::CCaSwiInstallStrategy( RProperty& aProperty )
-    {
-    aProperty.Attach( KUidSystemCategory, KUidSwiLatestInstallation );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaSwiInstallStrategy::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaJavaInstallStrategy* CCaJavaInstallStrategy::NewL( RProperty& aProperty )
-    {
-    CCaJavaInstallStrategy* self =
-            new ( ELeave ) CCaJavaInstallStrategy( aProperty );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaJavaInstallStrategy::NotifyListenerL(
-		RProperty& aProperty, MCaInstallListener& aListener )
-    {
-//TODO: temporary sollution until new notification mechanism from usif in wk14
-//    TInt state;
-//    User::LeaveIfError( aProperty.Get( KUidSystemCategory,
-//            KPSUidJavaLatestInstallationState, state ) );
-//	if( ( ( state & ESASwisInstall ) || ( state & ESASwisUninstall ) )
-//            && ( state & ESASwisStatusSuccess ) )
-//        {
-        TInt appUid;
-        User::LeaveIfError( aProperty.Get( KUidSystemCategory,
-                KPSUidJavaLatestInstallation, appUid ) );
-        aListener.HandleInstallNotifyL(appUid );
-//        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaJavaInstallStrategy::CCaJavaInstallStrategy( RProperty& aProperty )
-    {
-    aProperty.Attach( KUidSystemCategory, KPSUidJavaLatestInstallationState );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaJavaInstallStrategy::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaUsifUninstallStrategy* CCaUsifUninstallStrategy::NewL(
-        RProperty& aProperty )
-    {
-    CCaUsifUninstallStrategy* self =
-            new ( ELeave ) CCaUsifUninstallStrategy( aProperty );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaUsifUninstallStrategy::NotifyListenerL(
-		RProperty& aProperty, MCaInstallListener& aListener )
-    {
-    TInt status;
-    // TODO: Temporary solution for incorrect USIF notifications     
-    User::LeaveIfError( aProperty.Get( KUidSystemCategory,
-            Swi::KUidSoftwareInstallKey, status ) );
-    //if( status == ( Swi::ESwisStatusSuccess | Swi::ESwisUninstall ) )
-    // notify subscribers on begenning and at the end of uninstallation
-    if( status == Swi::ESwisUninstall || iUninstallStatus == Swi::ESwisUninstall /*&& !status*/ )
-        {
-        aListener.HandleInstallNotifyL( status );
-        }    
-    iUninstallStatus = status;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaUsifUninstallStrategy::CCaUsifUninstallStrategy( RProperty& aProperty )
-    {
-	aProperty.Attach( KUidSystemCategory, Swi::KUidSoftwareInstallKey );
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaUsifUninstallStrategy::ConstructL()
-    {
-    }
-
--- a/contentstorage/srvsrc/cammcwatcher.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/contentstorage/srvsrc/cammcwatcher.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -21,10 +21,9 @@
 
 // ================= MEMBER FUNCTIONS =======================
 
-// ---------------------------------------------------------
-// CCaWidgetMmcWatcher::NewL
-// Second phase constructor
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// 
+// ----------------------------------------------------------------------------
 //
 EXPORT_C CCaMmcWatcher* CCaMmcWatcher::NewL( RFs& aFs,
         MMmcWatcherCallback* aObserver )
@@ -34,10 +33,9 @@
     return self;
     }
 
-// ---------------------------------------------------------
-// CCaWidgetMmcWatcher::NewLC
-// Second phase constructor
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// 
+// ----------------------------------------------------------------------------
 //
 EXPORT_C CCaMmcWatcher* CCaMmcWatcher::NewLC( RFs& aFs,
         MMmcWatcherCallback* aObserver )
@@ -49,20 +47,18 @@
     return self;
     }
 
-// ---------------------------------------------------------
-// CCaWidgetMmcWatcher::~CCaWidgetMmcWatcher
-// Destructor
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// 
+// ----------------------------------------------------------------------------
 //
 CCaMmcWatcher::~CCaMmcWatcher()
     {
     Cancel();
     }
 
-// ---------------------------------------------------------
-// CCaWidgetMmcWatcher::CCaWidgetMmcWatcher
-// Default constructor
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// 
+// ----------------------------------------------------------------------------
 //
 CCaMmcWatcher::CCaMmcWatcher( RFs& aFs,
         MMmcWatcherCallback* aObserver )
@@ -73,20 +69,18 @@
     CActiveScheduler::Add(this);
     }
 
-// ---------------------------------------------------------
-// CCaWidgetMmcWatcher::ConstructL
-// default Symbian OS constructor
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// 
+// ----------------------------------------------------------------------------
 //
 void CCaMmcWatcher::ConstructL()
     {
     WaitForChangeL();
     }
 
-// ---------------------------------------------------------
-// CCaWidgetMmcWatcher::WaitForChangeL
-// Request notification for disk change
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// 
+// ----------------------------------------------------------------------------
 //
 void CCaMmcWatcher::WaitForChangeL()
     {
@@ -98,9 +92,9 @@
     SetActive();
     }
 
-// ---------------------------------------------------------
-// CCaWidgetMmcWatcher::DoCancel
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// 
+// ----------------------------------------------------------------------------
 //
 void CCaMmcWatcher::DoCancel()
     {
@@ -111,7 +105,7 @@
 #pragma CTC SKIP
 #endif //COVERAGE_MEASUREMENT (error is ignored)
 // ---------------------------------------------------------------------------
-// CCaWidgetMmcWatcher::RunError
+// 
 // ---------------------------------------------------------------------------
 //
 TInt CCaMmcWatcher::RunError( TInt /*aError*/ )
@@ -126,9 +120,9 @@
 #ifdef COVERAGE_MEASUREMENT
 #pragma CTC SKIP
 #endif //COVERAGE_MEASUREMENT (memory card removal)
-// ---------------------------------------------------------
-// CCaWidgetMmcWatcher::RunL
-// ---------------------------------------------------------
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
 //
 void CCaMmcWatcher::RunL()
     {
--- a/homescreensrv.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/homescreensrv.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -20,7 +20,6 @@
             hswidgetmodel \
             contentstorage
                        
-symbian:SUBDIRS += utils
 symbian:SUBDIRS += activityfw
 symbian:SUBDIRS += taskswitcher
 symbian:SUBDIRS += hsappkeyhandler
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/activity_framework_api/activity_framework_api.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+
+include(activity_framework_api.pri)
+
+for(filename,PLATFORM_HEADERS){
+    BLD_INF_RULES.prj_exports *= "../$$filename MW_LAYER_PLATFORM_EXPORT_PATH($$basename(filename))"
+  }
--- a/homescreensrv_plat/activity_framework_api/afstorageglobals.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/homescreensrv_plat/activity_framework_api/afstorageglobals.h	Mon Oct 04 00:38:31 2010 +0300
@@ -29,5 +29,6 @@
 const char ActivityScreenshotKeyword [] = "screenshot";
 const char ActivityDataKeyword [] = ":ActivityData";
 const char ActivityApplicationName[] = ":ApplicationName";
+const char ActivityTimestamp[] = ":ActivityTimestamp";
 
 #endif //AFSTORAGEGLOBALS_H
--- a/homescreensrv_plat/contentstorage_api/caitemmodel.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/homescreensrv_plat/contentstorage_api/caitemmodel.h	Mon Oct 04 00:38:31 2010 +0300
@@ -48,6 +48,7 @@
         TypeRole,
         FlagsRole,
         TextRole,//contains title represented as QString,
+        DescriptionRole, // contains item description
         FullTextRole, //'title description' convinient for operations such as search
         UninstalRole,  //contains progress status as decimal number in QString
         CollectionTitleRole //contains title represented as QString,
--- a/homescreensrv_plat/contentstorage_api/camenuiconutility.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/homescreensrv_plat/contentstorage_api/camenuiconutility.h	Mon Oct 04 00:38:31 2010 +0300
@@ -32,6 +32,11 @@
     
     static HbIcon getEntryIcon(const CaEntry& entry,
             const QSizeF &size = QSizeF(50,80));
+    
+
+    
+    
+    
 };
 
 #endif // __CAMENUICONUTILITY_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/contentstorage_api/contentstorage_api.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+
+include(contentstorage_api.pri)
+
+for(filename,PLATFORM_HEADERS){
+    BLD_INF_RULES.prj_exports *= "../$$filename MW_LAYER_PLATFORM_EXPORT_PATH($$basename(filename))"
+  }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/homescreen_information_api/homescreen_information_api.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+
+
+PLATFORM_HEADERS += \
+                    inc/homescreendomainpskeys.h
+symbian {    
+    #qcrml export
+    BLD_INF_RULES.prj_exports += \
+         "inc/homescreeninformation.qcrml  c:/resource/qt/crml/homescreeninformation.qcrml "
+}
+
+
+for(filename,PLATFORM_HEADERS){
+    BLD_INF_RULES.prj_exports *= "$$filename MW_LAYER_PLATFORM_EXPORT_PATH($$basename(filename))"
+  }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/hswidgetmodel_api/hswidgetmodel_api.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+
+include(hswidgetmodel_api.pri)
+
+for(filename,PLATFORM_HEADERS){
+    BLD_INF_RULES.prj_exports *= "../$$filename MW_LAYER_PLATFORM_EXPORT_PATH($$basename(filename))"
+  }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/menu_sat_interface_api/menu_sat_interface_api.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+
+include(menu_sat_interface_api.pri)
+
+for(filename,PLATFORM_HEADERS){
+    BLD_INF_RULES.prj_exports *= "../$$filename MW_LAYER_PLATFORM_EXPORT_PATH($$basename(filename))"
+  }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/taskswitcher_api/taskswitcher_api.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+
+include(taskswitcher_api.pri)
+
+for(filename,PLATFORM_HEADERS){
+    BLD_INF_RULES.prj_exports *= "../$$filename MW_LAYER_PLATFORM_EXPORT_PATH($$basename(filename))"
+  }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_definition.xml	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SystemDefinition xmlns:qt="http://www.nokia.com/qt" schema="3.0.0">
+ <package id="homescreensrv" name="Home Screen Services" levels="plugin framework server generic specific">
+  <collection id="homescreensrv_plat" name="Home Screen Services Platform Interfaces" level="specific">
+   <component id="menu_sat_interface_api" name="Menu SAT Interface API" class="api" filter="s60">
+    <meta rel="Api" href="homescreensrv_plat/menu_sat_interface_api/menu_sat_interface_api.metaxml"/>
+    <unit bldFile="homescreensrv_plat/menu_sat_interface_api" qt:proFile="menu_sat_interface_api.pro"/>
+   </component>
+   <component id="contentstorage_api" name="Content Storage API" class="api" filter="s60" introduced="^4">
+    <unit bldFile="homescreensrv_plat/contentstorage_api" qt:proFile="contentstorage_api.pro"/>
+   </component>
+   <component id="hswidgetmodel_api" name="HS Widget Model API" class="api" filter="s60" introduced="^4">
+    <unit bldFile="homescreensrv_plat/hswidgetmodel_api" qt:proFile="hswidgetmodel_api.pro"/>
+   </component>
+   <component id="homescreen_information_api" name="Homescreen Information API" class="api" filter="s60" introduced="^4">
+    <unit bldFile="homescreensrv_plat/homescreen_information_api" qt:proFile="homescreen_information_api.pro"/>
+   </component>
+   <component id="taskswitcher_api" name="Task Switcher API" class="api" filter="s60" introduced="^4">
+    <unit bldFile="homescreensrv_plat/taskswitcher_api" qt:proFile="taskswitcher_api.pro"/>
+   </component>
+   <component id="activity_framework_api" name="Activity Framework API" class="api" filter="s60" introduced="^4">
+    <unit bldFile="homescreensrv_plat/activity_framework_api" qt:proFile="activity_framework_api.pro"/>
+   </component>
+  </collection>
+  <collection id="hswidgetmodel" name="Home Screen Widget Model" level="framework">
+     <component id="hswidgetmodel_build" name="Home Screen Widget Model Build" introduced="^4" filter="s60">
+      <unit bldFile="hswidgetmodel" qt:proFile="hswidgetmodel.pro"/>
+     </component>
+  </collection>
+    <collection id="contentstorage" name="Content Storage" level="framework">
+     <component id="cautils" name="Content Arsenal Utils" introduced="^4" filter="s60">
+      <unit bldFile="contentstorage/cautils" qt:proFile="cautils.pro"/>
+     </component>
+     <component id="contentstorage_build" name="Content Storage Build" introduced="^4" filter="s60">
+      <unit bldFile="contentstorage/group" qt:proFile="group.pro"/>
+     </component>
+     <component id="casrv/calocalizerscanner" name="Content Arsenal Server Localizer Scanner" introduced="^4" filter="s60">
+      <unit bldFile="contentstorage/casrv/calocalizerscanner" qt:proFile="calocalizerscanner.pro"/>
+     </component>
+     <component id="cahandler" name="Content Arsenal Handler" introduced="^4" filter="s60">
+      <unit bldFile="contentstorage/cahandler" qt:proFile="cahandler.pro"/>
+     </component>
+     <component id="camificonengine" name="Content Arsenal MIF Icon Engine" introduced="^4" filter="s60">
+      <unit bldFile="contentstorage/camificonengine" qt:proFile="camificonengine.pro"/>
+     </component>
+     <component id="caclient" name="Content Arsenal Client" introduced="^4" filter="s60">
+      <unit bldFile="contentstorage/caclient" qt:proFile="caclient.pro"/>
+     </component>
+     <component id="casoftwareregistry" name="Content Arsenal Software Registry" introduced="^4" filter="s60">
+      <unit bldFile="contentstorage/casoftwareregistry" qt:proFile="casoftwareregistry.pro"/>
+     </component>
+  </collection>
+  <collection id="hsactivityfw" name="Activity Framework" level="fw">
+     <component id="hsactivityfw_build" name="Activity Framework Build" introduced="^4" filter="s60">
+      <unit bldFile="activityfw" qt:proFile="activityfw.pro"/>
+     </component>
+  </collection>
+  <collection id="hsappkeyhandler" name="HS Appplication Key Handler" level="server">
+     <component id="hsappkeyhandler_build" name="Appplication Key Handler Build" introduced="^4" filter="s60">
+      <unit bldFile="hsappkeyhandler" qt:proFile="hsappkeyhandler.pro"/>
+     </component>
+  </collection> 
+   <collection id="taskswitcher" name="Task Switcher" level="framework">
+     <component id="ts_client" name="Task Switcher Client" introduced="^4" filter="s60">
+      <unit bldFile="taskswitcher/client" qt:proFile="client.pro"/>
+     </component>
+     <component id="ts_backstepping" name="Task Switcher Backstepping" introduced="^4" filter="s60">
+      <unit bldFile="taskswitcher/backstepping" qt:proFile="backstepping.pro"/>
+     </component>
+     <component id="ts_server" name="Task Switcher Server" introduced="^4" filter="s60">
+      <unit bldFile="taskswitcher/server" qt:proFile="server.pro"/>
+     </component>
+     <component id="ts_screenshotplugin" name="Task Switcher Screenshot Plugin" introduced="^4" filter="s60" class="plugin">
+      <unit bldFile="taskswitcher/screenshotplugin" qt:proFile="screenshotplugin.pro"/>
+     </component>
+     <component id="ts_activitytsplugin" name="Task Switcher Activity Plugin" introduced="^4" filter="s60" class="plugin">
+      <unit bldFile="taskswitcher/activitytsplugin" qt:proFile="activitytsplugin.pro"/>
+     </component>
+     <component id="taskswitcher_rom" name="Task Switcher ROM" introduced="^4" filter="s60" class="config">
+      <unit bldFile="taskswitcher/rom"/>
+     </component>
+    </collection>
+   <collection id="tsdevicedialog" name="Task Switcher Device Dialog" level="plugin">
+     <component id="tsdevicedialog_build" name="Task Switcher Device Dialog Build" introduced="^4" filter="s60">
+      <unit bldFile="tsdevicedialog" qt:proFile="tsdevicedialog.pro"/>
+     </component>
+  </collection>
+    <collection id="homescreensrv_info" name="Home Screen Services Info" level="specific">
+     <component id="homescreensrv_rom" name="Home Screen Services ROM" class="config" introduced="^4" filter="s60">
+      <unit bldFile="rom"/>
+     </component>
+     <component id="homescreensrv_config" name="Home Screen Services config" class="config" introduced="^4" filter="s60">
+      <unit bldFile="group"/>
+     </component>
+     <component id="homescreensrv_test" name="Home Screen Services Test" filter="s60,test,unit_test" introduced="^4">
+      <unit bldFile="tsrc" qt:qmakeArgs="-r MMP_RULES+=EXPORTUNFROZEN" qt:proFile="tsrc.pro"/>
+     </component>
+    </collection>
+ </package>
+</SystemDefinition>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_map.xml	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,1 @@
+<PackageMap root="sf" layer="mw"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rom/bld.inf	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Build information file
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+// iby exports to core
+homescreensrv_core.iby  CORE_MW_LAYER_IBY_EXPORT_PATH(homescreensrv_core.iby)
+
+// iby exports to language
+homescreensrv_language.iby  LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(homescreensrv_language.iby)
\ No newline at end of file
--- a/rom/homescreensrv_core.iby	Fri Sep 17 08:32:18 2010 +0300
+++ b/rom/homescreensrv_core.iby	Mon Oct 04 00:38:31 2010 +0300
@@ -41,7 +41,6 @@
 file=ABI_DIR\BUILD_DIR\cautils.dll     SHARED_LIB_DIR\cautils.dll
 file=ABI_DIR\BUILD_DIR\camenu.dll     SHARED_LIB_DIR\camenu.dll
 file=ABI_DIR\BUILD_DIR\camenuserver.exe     PROGRAMS_DIR\camenuserver.exe
-file=ABI_DIR\BUILD_DIR\casathandler.dll     SHARED_LIB_DIR\casathandler.dll
 file=ABI_DIR\BUILD_DIR\castorage.dll     SHARED_LIB_DIR\castorage.dll
 file=ABI_DIR\BUILD_DIR\MenuInterface.dll     SHARED_LIB_DIR\MenuInterface.dll
 file=ABI_DIR\BUILD_DIR\casrvmanager.dll     SHARED_LIB_DIR\casrvmanager.dll
@@ -53,6 +52,7 @@
 ECOM_PLUGIN( causifscanner.dll, causifscanner.rsc )
 
 data=ZPRIVATE\20022F90\castorage.db          private\20022F90\castorage.db
+data=ZPRIVATE\20022F90\backup_registration.xml          private\20022F90\backup_registration.xml
 
 // ----  hswidgetmodel --------------------------------------------
 file=ABI_DIR\BUILD_DIR\hswidgetmodel.dll    SHARED_LIB_DIR\hswidgetmodel.dll
--- a/sis/homescreensrv.pkg	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description:
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"homescreensrv"},(0x20022F66),1,0,0
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-; Supports S60 5th Edition
-[0x1028315F], 0, 0, 0, {"S60ProductID"}
-
-; ---- qt --------------------------------------------
-
-"/epoc32/data/z/resource/apps/s60main.rsc"    - "c:/resource/apps/s60main.rsc"
-"/epoc32/release/armv5/urel/QtCore.dll"    - "c:/sys/bin/QtCore.dll"
-"/epoc32/release/armv5/urel/QtXml.dll"    - "c:/sys/bin/QtXml.dll"
-"/epoc32/release/armv5/urel/QtGui.dll"    - "c:/sys/bin/QtGui.dll"
-"/epoc32/release/armv5/urel/QtNetwork.dll"    - "c:/sys/bin/QtNetwork.dll"
-;"/epoc32/release/armv5/urel/QtScript.dll"    - "c:/sys/bin/QtScript.dll"
-"/epoc32/release/armv5/urel/QtTest.dll"    - "c:/sys/bin/QtTest.dll"
-"/epoc32/release/armv5/urel/QtSql.dll"    - "c:/sys/bin/QtSql.dll"
-"/epoc32/release/armv5/urel/qts60plugin_3_1.dll"    - "c:/sys/bin/qts60plugin_3_1.dll"
-"/epoc32/release/armv5/urel/qts60plugin_3_2.dll"    - "c:/sys/bin/qts60plugin_3_2.dll"
-"/epoc32/release/armv5/urel/qts60plugin_5_0.dll"    - "c:/sys/bin/qts60plugin_5_0.dll"
-"/epoc32/release/armv5/urel/sqlite3.dll"    - "c:/sys/bin/sqlite3.dll"
-"/epoc32/release/armv5/urel/QtSvg.dll"    - "c:/sys/bin/QtSvg.dll"
-;"/epoc32/release/armv5/urel/Phonon.dll"    - "c:/sys/bin/Phonon.dll"
-"/epoc32/release/armv5/urel/qjpeg.dll"    - "c:/sys/bin/qjpeg.dll"
-"/epoc32/winscw/c/resource/qt/plugins/imageformats/qjpeg.qtplugin"    - "c:/resource/qt/plugins/imageformats/qjpeg.qtplugin"
-"/epoc32/release/armv5/urel/qgif.dll"    - "c:/sys/bin/qgif.dll"
-"/epoc32/winscw/c/resource/qt/plugins/imageformats/qgif.qtplugin"    - "c:/resource/qt/plugins/imageformats/qgif.qtplugin"
-"/epoc32/release/armv5/urel/qmng.dll"    - "c:/sys/bin/qmng.dll"
-"/epoc32/winscw/c/resource/qt/plugins/imageformats/qmng.qtplugin"    - "c:/resource/qt/plugins/imageformats/qmng.qtplugin"
-"/epoc32/release/armv5/urel/qtiff.dll"    - "c:/sys/bin/qtiff.dll"
-"/epoc32/winscw/c/resource/qt/plugins/imageformats/qtiff.qtplugin"    - "c:/resource/qt/plugins/imageformats/qtiff.qtplugin"
-"/epoc32/release/armv5/urel/qico.dll"    - "c:/sys/bin/qico.dll"
-"/epoc32/winscw/c/resource/qt/plugins/imageformats/qico.qtplugin"    - "c:/resource/qt/plugins/imageformats/qico.qtplugin"
-"/epoc32/release/armv5/urel/qsvg.dll"    - "c:/sys/bin/qsvg.dll"
-"/epoc32/winscw/c/resource/qt/plugins/imageformats/qsvg.qtplugin"    - "c:/resource/qt/plugins/imageformats/qsvg.qtplugin"
-"/epoc32/release/armv5/urel/qcncodecs.dll"    - "c:/sys/bin/qcncodecs.dll"
-"/epoc32/winscw/c/resource/qt/plugins/codecs/qcncodecs.qtplugin"    - "c:/resource/qt/plugins/codecs/qcncodecs.qtplugin"
-"/epoc32/release/armv5/urel/qjpcodecs.dll"    - "c:/sys/bin/qjpcodecs.dll"
-"/epoc32/winscw/c/resource/qt/plugins/codecs/qjpcodecs.qtplugin"    - "c:/resource/qt/plugins/codecs/qjpcodecs.qtplugin"
-"/epoc32/release/armv5/urel/qtwcodecs.dll"    - "c:/sys/bin/qtwcodecs.dll"
-"/epoc32/winscw/c/resource/qt/plugins/codecs/qtwcodecs.qtplugin"    - "c:/resource/qt/plugins/codecs/qtwcodecs.qtplugin"
-"/epoc32/release/armv5/urel/qkrcodecs.dll"    - "c:/sys/bin/qkrcodecs.dll"
-"/epoc32/winscw/c/resource/qt/plugins/codecs/qkrcodecs.qtplugin"    - "c:/resource/qt/plugins/codecs/qkrcodecs.qtplugin"
-"/epoc32/release/armv5/urel/qsvgicon.dll"    - "c:/sys/bin/qsvgicon.dll"
-"/epoc32/winscw/c/resource/qt/plugins/iconengines/qsvgicon.qtplugin"    - "c:/resource/qt/plugins/iconengines/qsvgicon.qtplugin"
-
-; ---- hb --------------------------------------------
-
-"/epoc32/release/armv5/urel/HbCore.dll" - "c:/sys/bin/HbCore.dll"
-"/epoc32/release/armv5/urel/HbWidgets.dll" - "c:/sys/bin/HbWidgets.dll"
-"/epoc32/release/armv5/urel/HbTools.dll" - "c:/sys/bin/HbTools.dll"
-"/epoc32/release/armv5/urel/HbInput.dll" - "c:/sys/bin/HbInput.dll"
-"/epoc32/release/armv5/urel/HbFeedback.dll" - "c:/sys/bin/HbFeedback.dll"
-"/epoc32/release/armv5/urel/HbFeedbackEffectPlugin.dll" - "c:/sys/bin/HbFeedbackEffectPlugin.dll"
-"/epoc32/winscw/c/resource/qt/plugins/hb/feedback/HbFeedbackEffectPlugin.qtplugin" - "c:/resource/qt/plugins/hb/feedback/HbFeedbackEffectPlugin.qtplugin"
-"/epoc32/release/armv5/urel/HbDeviceNotificationDialogPlugin.dll"    - "!:\sys\bin\HbDeviceNotificationDialogPlugin.dll"
-"/epoc32/winscw/c/resource/plugins/devicedialogs/HbDeviceNotificationDialogPlugin.qtplugin" - "!:\resource\plugins\devicedialogs\HbDeviceNotificationDialogPlugin.qtplugin"
-"/epoc32/release/armv5/urel/HbIndicatorPopupPlugin.dll"    - "!:\sys\bin\HbIndicatorPopupPlugin.dll"
-"/epoc32/winscw/c/resource/plugins/devicedialogs/HbIndicatorPopupPlugin.qtplugin" - "!:\resource\plugins\devicedialogs\HbIndicatorPopupPlugin.qtplugin"
-"/epoc32/release/armv5/urel/HbDeviceProgressDialogPlugin.dll"    - "!:\sys\bin\HbDeviceProgressDialogPlugin.dll"
-"/epoc32/winscw/c/resource/plugins/devicedialogs/HbDeviceProgressDialogPlugin.qtplugin" - "!:\resource\plugins\devicedialogs\HbDeviceProgressDialogPlugin.qtplugin"
-"/epoc32/release/armv5/urel/HbAutoComplete.dll"    - "!:\sys\bin\HbAutoComplete.dll"
-"/epoc32/winscw/c/resource/hbinputs/engines/HbAutoComplete.qtplugin"    - "!:\resource\hbinputs\engines\HbAutoComplete.qtplugin"
-"/epoc32/release/armv5/urel/HbTouchInput.dll"    - "!:\sys\bin\HbTouchInput.dll"
-"/epoc32/winscw/c/resource/hbinputs/inputmethods/HbTouchInput.qtplugin"    - "!:\resource\hbinputs\inputmethods\HbTouchInput.qtplugin"
-
-;"/epoc32/release/armv5/urel/HbKeymappings_1.dll"    - "!:\sys\bin\HbKeymappings_1.dll"
-;"/epoc32/winscw/c/resource/hbinputs/keymappings/HbKeymappings_1.qtplugin"    - "!:\resource\hbinputs\keymappings\HbKeymappings_1.qtplugin"
-;"/epoc32/release/armv5/urel/HbKeymappings_2.dll"    - "!:\sys\bin\HbKeymappings_2.dll"
-;"/epoc32/winscw/c/resource/hbinputs/keymappings/HbKeymappings_2.qtplugin"    - "!:\resource\hbinputs\keymappings\HbKeymappings_2.qtplugin"
-;"/epoc32/release/armv5/urel/HbKeymappings_3.dll"    - "!:\sys\bin\HbKeymappings_3.dll"
-;"/epoc32/winscw/c/resource/hbinputs/keymappings/HbKeymappings_3.qtplugin"    - "!:\resource\hbinputs\keymappings\HbKeymappings_3.qtplugin"
-;"/epoc32/release/armv5/urel/HbKeymappings_4.dll"    - "!:\sys\bin\HbKeymappings_4.dll"
-;"/epoc32/winscw/c/resource/hbinputs/keymappings/HbKeymappings_4.qtplugin"    - "!:\resource\hbinputs\keymappings\HbKeymappings_4.qtplugin"
-
-"/epoc32/release/armv5/urel/hbdevicedialogappserver.exe"    - "!:\sys\bin\hbdevicedialogappserver.exe"
-"/epoc32/data/z/resource/apps/hbdevicedialogappserver.rsc"    - "!:\resource\apps\hbdevicedialogappserver.rsc"
-"/epoc32/data/z/private/10003a3f/import/apps/hbdevicedialogappserver_reg.rsc"    - "!:\private\10003a3f\import\apps\hbdevicedialogappserver_reg.rsc"
-
-"/epoc32/release/armv5/urel/hbthemeserver.exe"    - "!:\sys\bin\hbthemeserver.exe"
-"/epoc32/data/z/resource/apps/hbthemeserver.rsc"    - "!:\resource\apps\hbthemeserver.rsc"
-"/epoc32/data/z/private/10003a3f/import/apps/hbthemeserver_reg.rsc"    - "!:\private\10003a3f\import\apps\hbthemeserver_reg.rsc"
-
-"/epoc32/release/armv5/urel/hbiconpreloader.exe"    - "!:\sys\bin\hbiconpreloader.exe"
-"/epoc32/data/z/resource/apps/hbiconpreloader.rsc"    - "!:\resource\apps\hbiconpreloader.rsc"
-"/epoc32/data/z/private/10003a3f/import/apps/hbiconpreloader_reg.rsc"    - "!:\private\10003a3f\import\apps\hbiconpreloader_reg.rsc"
-
-
-; ---- db localizations ------------------------------------------
-"/epoc32/data/z/resource/qt/translations/contentstorage.qm" - "c:/resource/qt/translations/contentstorage.qm"
-
-; ---- contentstorage --------------------------------------------
-
-"/epoc32/release/armv5/urel/caclient.dll" - "c:/sys/bin/caclient.dll"
-"/epoc32/release/armv5/urel/cautils.dll" - "c:/sys/bin/cautils.dll"
-"/epoc32/release/armv5/urel/camenu.dll" - "c:/sys/bin/camenu.dll"
-
-"/epoc32/release/armv5/urel/casrvmanager.dll" - "c:/sys/bin/casrvmanager.dll"
-"/epoc32/release/armv5/urel/casatmonitor.dll" - "c:/sys/bin/casatmonitor.dll"
-"/epoc32/data/z/resource/plugins/casatmonitor.rsc"-"c:/resource/plugins/casatmonitor.rsc"
-"/epoc32/release/armv5/urel/caappscanner.dll" - "c:/sys/bin/caappscanner.dll"
-"/epoc32/data/z/resource/plugins/caappscanner.rsc"-"c:/resource/plugins/caappscanner.rsc"
-"/epoc32/release/armv5/urel/cawidgetscanner.dll" - "c:/sys/bin/cawidgetscanner.dll"
-"/epoc32/data/z/resource/plugins/cawidgetscanner.rsc"-"c:/resource/plugins/cawidgetscanner.rsc"
-"/epoc32/release/armv5/urel/calocalizerscanner.dll" - "c:/sys/bin/calocalizerscanner.dll"
-"/epoc32/data/z/resource/plugins/calocalizerscanner.rsc"-"c:/resource/plugins/calocalizerscanner.rsc"
-"/epoc32/release/armv5/urel/causifscanner.dll" - "c:/sys/bin/causifscanner.dll"
-"/epoc32/data/z/resource/plugins/causifscanner.rsc" - "c:/resource/plugins/causifscanner.rsc"
-"/epoc32/release/armv5/urel/camificon.dll" - "c:/sys/bin/camificon.dll"
-"/epoc32/data/z/resource/qt/plugins/iconengines/camificon.qtplugin" - "c:/resource/qt/plugins/iconengines/camificon.qtplugin"
-
-"/epoc32/release/armv5/urel/camenuserver.exe" - "c:/sys/bin/camenuserver.exe"
-"/epoc32/release/armv5/urel/caextendedmenu.dll" - "c:/sys/bin/caextendedmenu.dll"
-"/epoc32/release/armv5/urel/casathandler.dll" - "c:/sys/bin/casathandler.dll"
-"/epoc32/release/armv5/urel/castorage.dll" - "c:/sys/bin/castorage.dll"
-"/epoc32/release/armv5/urel/casoftwareregistry.dll" - "c:/sys/bin/casoftwareregistry.dll"
-"/epoc32/release/armv5/urel/castockhandlerplugins.dll" - "c:/sys/bin/castockhandlerplugins.dll"
-"/epoc32/data/z/private/20022F90/castorage.db" - "c:/private/20022F90/castorage.db"
-"/epoc32/data/z/resource/plugins/castockhandlerplugins.rsc"-"c:/resource/plugins/castockhandlerplugins.rsc"
-
-; ----  hswidgetmodel --------------------------------------------
-"/epoc32/release/armv5/urel/hswidgetmodel.dll" - "c:/sys/bin/hswidgetmodel.dll"
-
-; ---- screensavermodel --------------------------------------------
-"/epoc32/release/armv5/urel/screensavermodel.dll" - "c:/sys/bin/screensavermodel.dll"
--- a/sis/homescreensrv_sisx.bat	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-@rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-@rem All rights reserved.
-@rem This component and the accompanying materials are made available
-@rem under the terms of "Eclipse Public License v1.0"
-@rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-@rem
-@rem Initial Contributors:
-@rem Nokia Corporation - initial contribution.
-@rem
-@rem Contributors:
-@rem
-@rem Description:
-@rem
-@echo off
-
-if exist homescreensrv.sisx del homescreensrv.sisx
-
-makesis homescreensrv.pkg
-signsis homescreensrv.sis homescreensrv.sisx rd.cer rd-key.pem
-
-if exist homescreensrv.sisx (
-echo homescreensrv.sisx creation SUCCEEDED
-del homescreensrv.sis
-)
-
-if not exist homescreensrv.sisx (
-echo homescreensrv.sisx creation FAILED
-)
\ No newline at end of file
--- a/sis/homescreensrv_ut_applib.pkg	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description:
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"hssrv ut applib"},(0xEAEAEA01),1,0,0
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-; Supports S60 5th Edition
-[0x1028315F], 0, 0, 0, {"S60ProductID"}
-
-;--------------- contentstorage ---------------
-
-
--- a/sis/homescreensrv_ut_applib_sisx.bat	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-@rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-@rem All rights reserved.
-@rem This component and the accompanying materials are made available
-@rem under the terms of "Eclipse Public License v1.0"
-@rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-@rem
-@rem Initial Contributors:
-@rem Nokia Corporation - initial contribution.
-@rem
-@rem Contributors:
-@rem
-@rem Description:
-@rem
-@echo off
-
-if exist homescreensrv_ut_applib.sisx del homescreensrv_ut_applib.sisx
-
-makesis homescreensrv_ut_applib.pkg
-signsis homescreensrv_ut_applib.sis homescreensrv_ut_applib.sisx rd.cer rd-key.pem
-
-if exist homescreensrv_ut_applib.sisx (
-echo homescreensrv_ut_applib.sisx creation SUCCEEDED
-del homescreensrv_ut_applib.sis
-)
-
-if not exist homescreensrv_ut_applib.sisx (
-echo homescreensrv_ut_applib.sisx creation FAILED
-)
\ No newline at end of file
--- a/sis/rd-key.pem	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDLRF+r1FGGkCwTrb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW4
-6Y+LWaA8HMlDdoHRB0FgASisYcFagwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh
-7W7Dt9F5FZij8F7/9Pi6+FhhxZFIf1DD+yry9D7+Sp+BgdNALe4XOpf25QIBAwKB
-gQCHgupyjYuvCsgNHn7PNtnvVxInrB5MQNoPli+O+uNJWUK/Q+57Rl+yO8AoEzDX
-pFaLWiuVVhsdloDnAgabT/FXzYncs6uOHyEUV+dSXb78vtLPJqAX+Fg2i3hOXreB
-yskcZ13/OsKVOu5wgrJkx2baZufkqMwOSytf5y9nwjEIKwJBAP+inobagVNrN62j
-KQva3cC+UN/6XnKdTc0CA6bHyLOaJoH1xiMwG/VS2PGjHI0tiSMNtLn/QPpHJ003
-iabGhdUCQQDLjp/9UjFT6K6CF66Chqf30pZXhx+GTSQZmv/gvZiMly7X9fX9BGX3
-2MbJohBC4yI21XKTbisWywkF73Hwh+TRAkEAqmxprzxWN5zPyRdwspHpKymLP/w+
-9xOJM1atGdqFzRFvAU6EF3Vn+OHl9my9s3OwwgkjJqorUYTE3iUGby8D4wJBAIe0
-aqjhdjfwdFa6dFcEb/qMZDpaFQQzbWZnVUB+ZbMPdI/5TqitmU/l2dvBYCyXbCSO
-TGJJcg8yBgP09qBamIsCQFL7j1tM0XPVQJQ89WpKCld7O9ORxRGVj1eG0tWijrH8
-mGbYh8SGCVoWV3vrKSS8GBrFVgQnqUaHuEdtM7tpCAQ=
------END RSA PRIVATE KEY-----
--- a/sis/rd.cer	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICzDCCAjWgAwIBAgIBADANBgkqhkiG9w0BAQUFADArMRAwDgYDVQQKEwdSRCBD
-ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZTAeFw0wNDExMTUxMjQyMDZaFw0z
-NzA5MjMxMjQyMDZaMCsxEDAOBgNVBAoTB1JEIENlcnQxFzAVBgNVBAMTDlJEIENl
-cnRpZmljYXRlMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDLRF+r1FGGkCwT
-rb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW46Y+LWaA8HMlDdoHRB0FgASisYcFa
-gwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh7W7Dt9F5FZij8F7/9Pi6+FhhxZFI
-f1DD+yry9D7+Sp+BgdNALe4XOpf25QIBA6OCAQAwgf0wDAYDVR0TBAUwAwEB/zAL
-BgNVHQ8EBAMCAoQwHQYDVR0OBBYEFFi/kuGzxhVpjGxe9ZwlxC3fH9jFMFMGA1Ud
-IwRMMEqAFFi/kuGzxhVpjGxe9ZwlxC3fH9jFoS+kLTArMRAwDgYDVQQKEwdSRCBD
-ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZYIBADBsBgNVHSAEZTBjMGEGBFUd
-IAAwWTATBggrBgEFBQcCARYHaHR0cDovLzBCBggrBgEFBQcCAjA2GjRGb3IgUiZE
-IHVzYWdlIG9ubHkuIFRoaXMgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuMA0G
-CSqGSIb3DQEBBQUAA4GBAHGB4RQMAgBdeT2hxfOr6f2nA/dZm+M5yX5daUtZnET9
-Ed0A9sazLawfN2G1KFQT9kxEParAyoAkpbMAsRrnRz/9cM3OHgFm/NiKRnf50DpT
-7oCx0I/65mVD2kt+xXE62/Ii5KPnTufIkPi2uLvURCia1tTS8JmJ8dtxDGyQt8BR
------END CERTIFICATE-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/activitytsplugin/activitytsplugin.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,59 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = lib
+TARGET = activitytsplugin
+
+CONFIG += plugin 
+
+CONFIG += mobility
+MOBILITY = serviceframework
+
+CONFIG += qtservice 
+QTSERVICE.DESCRIPTOR = data/activitytsplugin.xml
+
+INCLUDEPATH +=  inc \
+                ../../../inc \
+
+HEADERS +=  inc/activitytsplugin.h \
+            inc/activitytsmodel.h \
+            inc/activitytsentry.h \
+            
+SOURCES +=  src/activitytsplugin.cpp \
+            src/activitytsmodel.cpp \
+            src/activitytsentry.cpp \
+
+symbian {
+    load(data_caging_paths)
+    pluginDep.sources = activitytsplugin.dll
+    pluginDep.path = $$QT_PLUGINS_BASE_DIR    
+    DEPLOYMENT += pluginDep
+    
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = ALL -TCB
+    
+    LIBS += -lfbscli
+    LIBS += -lxqsettingsmanager
+
+    # service framework XML deployment/export
+    xml.sources = ./data/activitytsplugin.xml
+    xml.path = $$RESOURCE_FILES_DIR/taskswitcher
+    
+    DEPLOYMENT += xml
+
+    #temporary workaround
+    BLD_INF_RULES.prj_exports += "data/activitytsplugin.xml z:/resource/taskswitcher/activitytsplugin.xml"
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/activitytsplugin/data/activitytsplugin.xml	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<service>
+    <name>activitytsplugin</name>
+    <filepath>activitytsplugin</filepath>
+    <description>Activity model plugin for Task Switcher</description>
+    <interface>
+        <name>com.nokia.qt.taskswitcher.dataprovider</name>
+        <version>1.0</version>
+        <description></description>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/activitytsplugin/inc/activitytsentry.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ACTIVITYTSENTRY_H
+#define ACTIVITYTSENTRY_H
+
+#include <QVariantHash>
+
+class CFbsBitmap;
+
+class ActivityTsEntry
+{
+
+public:
+    ActivityTsEntry(const QVariantHash &activityData);
+    ~ActivityTsEntry();
+
+    void setThumbnail(const CFbsBitmap *bitmap);
+    QVariantHash data() const;
+    
+private:
+    QVariantHash mData;
+    mutable const CFbsBitmap *mBitmap;
+    
+};
+
+#endif // ACTIVITYTSENTRY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/activitytsplugin/inc/activitytsmodel.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ACTIVITYTSMODEL_H
+#define ACTIVITYTSMODEL_H
+
+#include <QObject>
+#include <QVariantHash>
+
+#include "activitytsentry.h"
+
+class ActivityTsModel : public QObject
+{
+    Q_OBJECT
+
+public:
+    ActivityTsModel(QObject *parent = 0);
+    virtual ~ActivityTsModel();
+
+public slots:
+    QList<QVariantHash> taskList() const;
+    QList<QVariantHash> taskList(int limit) const;
+    
+    bool openTask(const QVariant &id);
+    bool closeTask(const QVariant &id);
+    
+signals:
+    void dataChanged();
+    
+private slots:
+    void getActivities();    
+    
+public slots:    
+    void convertScreenshotToThumbnail(const QPixmap &thumbnail, void *userData);
+    void thumbnailCreated(const QPixmap &thumbnail, const void *userData);
+    
+signals:
+    void createThumbnail(const QPixmap &source, int angle, const void *userData);
+    
+private:
+    QObject *mAfManager;
+    int mMaxItems;
+    
+    QList<ActivityTsEntry*> mData;
+    
+};
+
+#endif // ACTIVITYTSMODEL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/activitytsplugin/inc/activitytsplugin.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ACTIVITYTSPLUGIN_H
+#define ACTIVITYTSPLUGIN_H
+
+#include <QObject>
+#include <QServicePluginInterface>
+
+QTM_USE_NAMESPACE
+
+class ActivityTsPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor, QServiceContext *context, QAbstractSecuritySession *session);
+
+};
+
+#endif // ACTIVITYTSPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/activitytsplugin/src/activitytsentry.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "activitytsentry.h"
+
+#include <fbs.h>
+
+#include <QDateTime>
+#include <QUrl>
+
+#include "afactivities_global.h"
+#include "afstorageglobals.h"
+
+ActivityTsEntry::ActivityTsEntry(const QVariantHash &activityData) : mBitmap(0)
+{
+    mData.insert("TaskTimestamp", activityData.value(ActivityTimestamp));
+    mData.insert("TaskUpdateTimestamp", QDateTime::currentDateTime());
+    mData.insert("TaskIsRunning", false);
+    mData.insert("TaskCanBeClosed", false);
+    mData.insert("TaskIsMandatory", 0);
+    
+    {
+        QUrl uri;
+        uri.setScheme(Af::KActivityScheme);
+        uri.setHost(QString("%1").arg(activityData.value(ActivityApplicationKeyword).toUInt(), 8, 16, QChar('0')));
+        
+        if (activityData.contains(ActivityActivityKeyword))
+            uri.addQueryItem(Af::KActivityUriNameKey, activityData.value(ActivityActivityKeyword).toString());
+        mData.insert("Uri", uri);
+        mData.insert("TaskId", qHash(uri.toString()));
+    }
+
+    mData.insert("TaskName", activityData.value(ActivityApplicationName));
+    mData.insert("TaskScreenshot", -1);
+}
+
+ActivityTsEntry::~ActivityTsEntry()
+{
+    delete mBitmap;
+}
+
+void ActivityTsEntry::setThumbnail(const CFbsBitmap *bitmap)
+{
+    mBitmap = bitmap;
+    mData.insert("TaskScreenshot", mBitmap->Handle());
+    mData.insert("TaskUpdateTimestamp", QDateTime::currentDateTime());
+}
+
+QVariantHash ActivityTsEntry::data() const
+{
+    return mData;
+}    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/activitytsplugin/src/activitytsmodel.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,145 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "activitytsmodel.h"
+
+#include <stdexcept>
+
+#include <QPixmap>
+#include <QUrl>
+
+#include <QServiceManager>
+#include <XQSettingsManager>
+
+#include "afstorageglobals.h"
+
+QTM_USE_NAMESPACE
+
+namespace {
+    const char KActivityManager[] = "com.nokia.qt.activities.ActivityManager";
+    
+    const int KTsDeviceDialogUid = 0x2002677F;
+    const int KItemsLimit = 0x00000001;
+}
+
+ActivityTsModel::ActivityTsModel(QObject *parent) : QObject(parent), mAfManager(0) , mMaxItems(10)
+{
+    {
+        QServiceManager serviceManager;
+        mAfManager = serviceManager.loadInterface(KActivityManager);
+        if (mAfManager) {
+            mAfManager->setParent(this);
+        } else {
+            throw std::runtime_error("Cannot create critical com.nokia.qt.activities.ActivityManager service");
+        }
+    }
+    
+    {
+        XQSettingsManager crManager;
+        QVariant itemsNumberVariant = crManager.readItemValue(XQCentralRepositorySettingsKey(KTsDeviceDialogUid, KItemsLimit), XQSettingsManager::TypeInt);
+        if (!itemsNumberVariant.isNull()) {
+            int number = itemsNumberVariant.toInt();
+            if (number > 0) {
+                mMaxItems = number;
+            }
+        }
+    }
+    
+    connect(mAfManager, SIGNAL(dataChanged()), SLOT(getActivities()));
+    connect(mAfManager, SIGNAL(thumbnailReady(QPixmap,void*)), SLOT(convertScreenshotToThumbnail(QPixmap,void*)));
+    
+    getActivities();
+}
+
+ActivityTsModel::~ActivityTsModel()
+{
+    qDeleteAll(mData);
+}
+
+QList<QVariantHash> ActivityTsModel::taskList() const
+{
+    return taskList(mData.count());
+}
+
+QList<QVariantHash> ActivityTsModel::taskList(int limit) const
+{
+    QList<QVariantHash> result;
+    for (int i(0); i < limit && i < mData.count(); ++i) {
+        result.append(mData[i]->data());
+    }
+    return result;
+}
+    
+bool ActivityTsModel::openTask(const QVariant &id)
+{
+    foreach (const ActivityTsEntry *entry, mData) {
+        if (entry->data().value("TaskId") == id) {
+            QMetaObject::invokeMethod(mAfManager,
+                                  "launchActivity",
+                                  Q_ARG(QUrl, entry->data().value("Uri").toUrl()));
+            return true;
+        }
+    }
+    return false;
+}
+
+bool ActivityTsModel::closeTask(const QVariant &id)
+{
+    // it's impossible to "close" activity
+    Q_UNUSED(id);
+    return false;
+}
+
+void ActivityTsModel::getActivities()
+{
+    qDeleteAll(mData);
+    mData.clear();
+    
+    QList<QVariantHash> activities;
+    QMetaObject::invokeMethod(mAfManager,
+                              "activitiesList",
+                              Q_RETURN_ARG(QList<QVariantHash>, activities),
+                              Q_ARG(int, mMaxItems));
+                              
+    foreach (const QVariantHash &activityEntry, activities) {
+        mData.append(new ActivityTsEntry(activityEntry));
+        
+        QMetaObject::invokeMethod(
+                mAfManager,
+                "getThumbnail",
+                Q_ARG(QString, activityEntry.value(ActivityScreenshotKeyword).toString()),
+                Q_ARG(void *, mData.last()));
+    }
+    
+    emit dataChanged();
+}
+
+void ActivityTsModel::convertScreenshotToThumbnail(const QPixmap &thumbnail, void *userData)
+{
+    emit createThumbnail(thumbnail, 0, userData);
+}
+
+void ActivityTsModel::thumbnailCreated(const QPixmap &thumbnail, const void *userData)
+{    
+    foreach (ActivityTsEntry *activity, mData) {
+        if (activity == userData) {
+            activity->setThumbnail(thumbnail.toSymbianCFbsBitmap());
+            emit dataChanged();
+            break;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/activitytsplugin/src/activitytsplugin.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "activitytsplugin.h"
+
+#include <QServiceInterfaceDescriptor>
+#include <QAbstractSecuritySession>
+#include <QServiceContext>
+
+#include "activitytsmodel.h"
+
+QObject *ActivityTsPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor, QServiceContext *context, QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == "com.nokia.qt.taskswitcher.dataprovider") {
+        return new ActivityTsModel();
+    } else {
+        return NULL;
+    }
+}
+
+Q_EXPORT_PLUGIN2(activitytsplugin, ActivityTsPlugin)
--- a/taskswitcher/backstepping/group/tsbackstepping.mmp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/backstepping/group/tsbackstepping.mmp	Mon Oct 04 00:38:31 2010 +0300
@@ -35,13 +35,14 @@
 SOURCE         tsbacksteppingactivation.cpp
 
 SOURCEPATH     ../../utils/src
-SOURCE        tswindowgroupsmonitor.cpp
 SOURCE        tswindowgroupsobserver.cpp
 SOURCE        tsresourcemanager.cpp
+SOURCE        tsidlist.cpp
 
 LIBRARY        euser.lib 
 LIBRARY        ws32.lib // for RWsSession
 LIBRARY        apgrfx.lib // for TApaTask / TApaTasksList
 LIBRARY        afactivitylauncher.lib
+LIBRARY        estor.lib
 
 DEBUGLIBRARY    flogger.lib
--- a/taskswitcher/backstepping/inc/tsbackstepping.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/backstepping/inc/tsbackstepping.h	Mon Oct 04 00:38:31 2010 +0300
@@ -33,22 +33,16 @@
 private:
     CTsBackstepping( MTsWindowGroupsMonitor& );
     void ConstructL();
-    void HandleWindowGroupChanged( 
-                            MTsResourceManager&, 
-                            const TArray<RWsSession::TWindowGroupChainInfo>& );
-    void HandleWindowGroupChangedL( 
-                        MTsResourceManager&, 
-                        const TArray<RWsSession::TWindowGroupChainInfo>& );
-    TInt HomescreenOffsetL( 
-                        MTsResourceManager&, 
-                        const TArray<RWsSession::TWindowGroupChainInfo>& )const;
-    TInt ParentOffsetL( TInt, 
-                        const TArray<RWsSession::TWindowGroupChainInfo>& )const;
-    inline TBool IsEmbededApp( const RWsSession::TWindowGroupChainInfo& ) const;
-    TUid GetUidFromWindowGroupL(MTsResourceManager &aResources, TInt aWindowGroupId) const;
+    void HandleWindowGroupChanged( MTsResourceManager &rsc, 
+                                   const MTsRunningApplicationStorage& aStorage );
+    void HandleWindowGroupChangedL( MTsResourceManager &rsc, 
+                                    const MTsRunningApplicationStorage& aStorage );
+    TInt HomescreenOffsetL( const MTsRunningApplicationStorage& aStorage )const;
+    void SwitchToIdleStateL( MTsResourceManager& aResources, TBool aIsFirst );
 
 private:
     CTsBacksteppingFilter *iFilter;
+    TBool iHsWasFirst;
 
 };
 
--- a/taskswitcher/backstepping/inc/tsbacksteppingfilter.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/backstepping/inc/tsbacksteppingfilter.h	Mon Oct 04 00:38:31 2010 +0300
@@ -17,11 +17,8 @@
 
 #ifndef TSBACKSTEPPINGFILTER_H
 #define TSBACKSTEPPINGFILTER_H
-
-#include <w32std.h>
-#include <tswindowgroupsobserver.h>
-
-
+#include <e32base.h>
+class CTsIdList;
 NONSHARABLE_CLASS(CTsBacksteppingFilter) : public CBase
     {
 public:
@@ -34,7 +31,7 @@
     void ConstructL();
 
 private:
-    RArray<TUid> iBlockedApps;
+    CTsIdList* iBlockedApps;
 
     };
 
--- a/taskswitcher/backstepping/src/tsbackstepping.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/backstepping/src/tsbackstepping.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -29,12 +29,17 @@
 
 #include "tsbacksteppingfilter.h"
 
+/**
+ * String to switch hsapplication to IDLE state using activity framework
+ */
 _LIT(KHsActivactionUri, "appto://20022F35?activityname=HsIdleView&activityinbackground=true");
 
 // -----------------------------------------------------------------------------
 /** 
- *  CTsBackstepping::NewL
- *  two phase constructor
+ *  Symbian two-phases constructor. Allocate create and initialize backstepping engine
+ *  Instance is pushed int cleanup stack.
+ *  @param aMonitor - window group changes monitor
+ *  @return address to backstepping engine
  */
 CTsBackstepping* CTsBackstepping::NewL( MTsWindowGroupsMonitor& aMonitor )
     {
@@ -45,8 +50,9 @@
 
 // -----------------------------------------------------------------------------
 /** 
- *  CTsBackstepping::NewLC
- *  two phase constructor
+ *  Symbian two-phases constructor. Allocate create and initialize backstepping engine
+ *  @param aMonitor - window group changes monitor
+ *  @return address to backstepping engine
  */
 CTsBackstepping* CTsBackstepping::NewLC( MTsWindowGroupsMonitor& aMonitor )
     { 
@@ -58,12 +64,12 @@
 
 // -----------------------------------------------------------------------------
 /** 
- * CTsBackstepping::CTsBackstepping
- * constructor
+ * Constructor.
+ * @param aMonitor - window group changes monitor
  */
 CTsBackstepping::CTsBackstepping( MTsWindowGroupsMonitor &aMonitor )
 :
-CTsWindowGroupsObserver( aMonitor )
+CTsWindowGroupsObserver( aMonitor ), iHsWasFirst(ETrue)
     {
     }
 
@@ -79,8 +85,9 @@
 
 // -----------------------------------------------------------------------------
 /** 
- *  CTsBackstepping::ConstructL
- *  two phase constructor
+ *  Symbian second-phase constructor. 
+ *  Subscribe to window group monitor events (using BaseConstructL) and allocate
+ *  filtering list
  */
 void CTsBackstepping::ConstructL ()
     {
@@ -89,48 +96,50 @@
     }
 
 // -----------------------------------------------------------------------------
-/** 
- * CTsBackstepping::AnalyseWindowStackL
- * Analyzes window stack and move homescreen to proper position
+/**
+ * Analyzes window stack and move homescreen to proper position 
+ * Interface implementation.
+ * @see MTsWindowGroupsObserver::HandleWindowGroupChanged
  */
 void CTsBackstepping::HandleWindowGroupChanged( 
-               MTsResourceManager &aResource, 
-               const TArray<RWsSession::TWindowGroupChainInfo> &aWindowGroups )
+                                MTsResourceManager &aResources, 
+                                const MTsRunningApplicationStorage& aStorage )
+
     {
     RDebug::Print(_L("[Backstepping] started"));
-    TRAP_IGNORE( HandleWindowGroupChangedL( aResource, aWindowGroups ) );
+    TRAP_IGNORE( HandleWindowGroupChangedL( aResources, aStorage ) );
     RDebug::Print(_L("[Backstepping] finished"));
     }
 
 // -----------------------------------------------------------------------------
 /** 
- * CTsBackstepping::AnalyseWindowStackL
  * Analyzes window stack and move homescreen to proper position
+ * @see MTsWindowGroupsObserver::HandleWindowGroupChanged from param info
  */
 void CTsBackstepping::HandleWindowGroupChangedL( 
-                MTsResourceManager& aResource,
-                const TArray<RWsSession::TWindowGroupChainInfo>& aWindowGroups )
+                                 MTsResourceManager &aResources, 
+                                 const MTsRunningApplicationStorage& aStorage )
     {
     // calculate the desired position of Homescreen
-    const TInt currentHsOffset( HomescreenOffsetL( aResource, aWindowGroups ) );
+    const TInt currentHsOffset( HomescreenOffsetL( aStorage ) );
     TInt optimalOffset(1);
     TInt targetHsOffset(currentHsOffset);
+    TBool isFirst(ETrue);
     for( TInt offset(0); offset < currentHsOffset; ++offset ) 
         {
-        TUid uid = GetUidFromWindowGroupL( aResource, 
-                                           aWindowGroups[offset].iId );
-        RDebug::Print(_L("[Backstepping] application: %d"), uid.iUid);
-                                           
-        if( TUid::Null() != uid )
+        RDebug::Print( _L("[Backstepping] application: %08x"), 
+                       aStorage[offset].UidL().iUid );
+        if( TUid::Null() != aStorage[offset].UidL() )
             {
-            if( IsEmbededApp( aWindowGroups[offset] ) )
+            isFirst = EFalse;
+            if( aStorage[offset].IsEmbeded())
                 {
-                targetHsOffset = ParentOffsetL( offset, aWindowGroups ) + 1;
+                targetHsOffset = aStorage.ParentIndex(aStorage[offset])+ 1;
                 } 
-            else if (!iFilter->isBlocked(uid))
+            else if (!iFilter->isBlocked( aStorage[offset].UidL() ))
                 {
                 if(offset + 1 < currentHsOffset && 
-                   GetUidFromWindowGroupL( aResource, aWindowGroups[offset+1].iId) == TUid::Null() ) 
+                   aStorage[offset+1].UidL() == TUid::Null() ) 
                     {
                     ++optimalOffset;
                     }
@@ -143,48 +152,30 @@
             ++optimalOffset;
             }
         }
-
-    // switch Homescreen to Idle state if Homescreen is not in foreground and is in different state
-    if( 0 != targetHsOffset)
-        {
-        TInt hsState( EHomeScreenIdleState );
-        User::LeaveIfError(RProperty::Get( KHsCategoryUid, 
-                                           KHsCategoryStateKey, 
-                                           hsState ) );
-        if(!(hsState & EHomeScreenWidgetViewActive ) )
-            {
-            RDebug::Print(_L("[Backstepping] about to switch HS activity"));
-            
-            CAfActivityLauncher *activityEnabler = 
-                CAfActivityLauncher::NewLC( aResource.ApaSession(), 
-                                            aResource.WsSession() );
-            activityEnabler->launchActivityL( KHsActivactionUri );
-            CleanupStack::PopAndDestroy( activityEnabler );
-            }
-        }
+    SwitchToIdleStateL(aResources, isFirst);
     // change windows order if necessary
     if(targetHsOffset != currentHsOffset)
         {
         RDebug::Print(_L("[Backstepping] about to change window groups order"));
-        
-        const TInt hsWindowGroup( aWindowGroups[currentHsOffset].iId );
-        aResource.WsSession().SetWindowGroupOrdinalPosition( hsWindowGroup, 
-                                                             targetHsOffset );
+        aResources.WsSession().SetWindowGroupOrdinalPosition( 
+                                    aStorage[currentHsOffset].WindowGroupId(), 
+                                    targetHsOffset );
         }
     }
 
 // -----------------------------------------------------------------------------
 /** 
- * CTsBackstepping::HomescreenOffsetL
+ * Find and return current position of hsapplication on window server stack
+ * @param aStorage - storage with running app info
+ * @return position of hsapplication on window server stack
  */
 TInt CTsBackstepping::HomescreenOffsetL( 
-        MTsResourceManager& aResource,
-        const TArray<RWsSession::TWindowGroupChainInfo>& aWindowGroups ) const 
+                        const MTsRunningApplicationStorage& aStorage ) const 
     {
     TInt offset( KErrNotFound );
-    for( TInt iter(0); KErrNotFound == offset && iter < aWindowGroups.Count(); ++iter )
+    for( TInt iter(0); KErrNotFound == offset && iter < aStorage.Count(); ++iter )
         {
-        if( KHsCategoryUid == GetUidFromWindowGroupL( aResource, aWindowGroups[iter].iId ) )
+        if( KHsCategoryUid == aStorage[iter].UidL() )
             {
             offset = iter;
             }
@@ -194,49 +185,32 @@
     }
 
 // -----------------------------------------------------------------------------
-/** 
- * CTsBackstepping::ParentOffsetL
+/**
+ * Change hsapplication state to IDLE if moves to background
+ * @param aResources - OS resources manager
+ * @param aIsFrst - flag to inform if hsapplication is in foreground
  */
-TInt CTsBackstepping::ParentOffsetL( 
-        TInt aOffset,
-        const TArray<RWsSession::TWindowGroupChainInfo>& aWindowGroups )const 
+void CTsBackstepping::SwitchToIdleStateL(MTsResourceManager& aResources, 
+                                         TBool aIsFirst)
     {
-    for( TInt iter(aOffset + 1); iter < aWindowGroups.Count(); ++iter )
+    // switch Homescreen to Idle state if Homescreen is not in foreground and is in different state
+    if( iHsWasFirst && !aIsFirst )
         {
-        if(aWindowGroups[iter].iId == aWindowGroups[aOffset].iParentId)
+        TInt hsState( EHomeScreenIdleState );
+        User::LeaveIfError(RProperty::Get( KHsCategoryUid, 
+                                           KHsCategoryStateKey, 
+                                           hsState ) );
+        if(!(hsState & EHomeScreenWidgetViewActive ) )
             {
-            return IsEmbededApp( aWindowGroups[iter] ) ? 
-                   ParentOffsetL( iter, aWindowGroups ) : iter; 
+            RDebug::Print(_L("[Backstepping] about to switch HS activity"));
+            CAfActivityLauncher *activityEnabler = 
+                CAfActivityLauncher::NewLC( aResources.ApaSession(), 
+                                            aResources.WsSession() );
+            activityEnabler->launchActivityL( KHsActivactionUri );
+            CleanupStack::PopAndDestroy( activityEnabler );
             }
         }
-    User::Leave( KErrNotFound) ;
-    return KErrNotFound;
-    }
-
-// -----------------------------------------------------------------------------
-/** 
- * CTsBackstepping::IsEmbededApp
- */
-TBool CTsBackstepping::IsEmbededApp( 
-            const RWsSession::TWindowGroupChainInfo &aWindowGroupInfo ) const 
-    {
-    return 0 < aWindowGroupInfo.iParentId;
-    }
-
-// -----------------------------------------------------------------------------
-/** 
- * CTsBackstepping::GetUidFromWindowGroupL
- */
-TUid CTsBackstepping::GetUidFromWindowGroupL( MTsResourceManager &aResource, 
-                                              TInt aWindowGroupId ) const
-    {
-    TUid retVal(TUid::Null());
-    CApaWindowGroupName *windowGroupName = 
-            CApaWindowGroupName::NewLC( aResource.WsSession() );
-    windowGroupName->ConstructFromWgIdL( aWindowGroupId );
-    retVal = windowGroupName->AppUid();
-    CleanupStack::PopAndDestroy( windowGroupName );
-    return retVal;
+    iHsWasFirst = aIsFirst;
     }
 
 // end of file
--- a/taskswitcher/backstepping/src/tsbacksteppingfilter.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/backstepping/src/tsbacksteppingfilter.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -15,13 +15,16 @@
 *
 */
 #include "tsbacksteppingfilter.h"
+#include "tsidlist.h"
 
-const TInt KBlockedApps [] = {0x100058b3/* <-- phoneui.exe */,
-                              0x2001843A/* <-- javainstaller */};
+const TInt KBlockedApps [] = {0x100058b3/* <-- phoneui */,
+                              0x2001843A/* <-- javainstaller */,
+                              0x200267D2/* <-- widgetinstallerapp */};
 
 // -----------------------------------------------------------------------------
 /** 
- * CTsBacksteppingFilter::NewL
+ * Symbian two-phase constructor. Allocate and initialize list blocked applications
+ * @return backstepping filtering
  */
 CTsBacksteppingFilter* CTsBacksteppingFilter::NewL()
     {
@@ -34,25 +37,27 @@
 
 // -----------------------------------------------------------------------------
 /** 
- * CTsBacksteppingFilter::~CTsBacksteppingFilter
+ * Destructor
  */
 CTsBacksteppingFilter::~CTsBacksteppingFilter()
     {
-    iBlockedApps.Close();
+    delete iBlockedApps;
     }
 
 // -----------------------------------------------------------------------------
 /** 
- * CTsBacksteppingFilter::isBlocked
+ * Inform if application is blocked for backstepping engine
+ * @param aApplicationUid - tested application UID
+ * @return EFalse if application is not blocked for backstepping engine, other value in other cases
  */
 TBool CTsBacksteppingFilter::isBlocked( TUid aApplicationUid ) const
     {
-    return KErrNotFound != iBlockedApps.Find( aApplicationUid );
+    return iBlockedApps->IsPresent( aApplicationUid.iUid );
     }
 
 // -----------------------------------------------------------------------------
 /** 
- * CTsBacksteppingFilter::CTsBacksteppingFilter
+ * Constructor
  */
 CTsBacksteppingFilter::CTsBacksteppingFilter()
     {
@@ -61,13 +66,11 @@
 
 // -----------------------------------------------------------------------------
 /** 
- * CTsBacksteppingFilter::ConstructL
+ * Symbian second-phase constructor. Initilaize blocked applications list
  */
 void CTsBacksteppingFilter::ConstructL()
     {
-    const TInt count(sizeof( KBlockedApps ) / sizeof(TInt)); 
-    for( TInt offset(0);offset < count; ++offset )
-        {
-        iBlockedApps.AppendL(TUid::Uid(KBlockedApps[offset]));
-        }
+    const TInt count( sizeof( KBlockedApps ) / sizeof( TInt ) );
+    iBlockedApps = CTsIdList::NewL();
+    iBlockedApps->AppendL( KBlockedApps, count );
     }
--- a/taskswitcher/client/client.pri	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/client/client.pri	Mon Oct 04 00:38:31 2010 +0300
@@ -36,7 +36,6 @@
                 $$PWD/s60/inc/tstaskmonitorclient.h \
                 $$PWD/s60/inc/tstaskmonitorclientimpl.h \
                 $$PWD/s60/inc/tssession.h \
-                $$PWD/../utils/inc/tsentry.h \
                 $$PWD/../utils/inc/tsentrykey.h \
                 $$PWD/../utils/inc/tsutils.h \
                 $$PWD/../utils/inc/tsscreenshotmsg.h \
@@ -52,7 +51,6 @@
     SOURCES +=  $$PWD/s60/src/tstaskmonitorclient.cpp \
                 $$PWD/s60/src/tstaskmonitorclientimpl.cpp \
                 $$PWD/s60/src/tssession.cpp \
-                $$PWD/../utils/src/tsentry.cpp \
                 $$PWD/../utils/src/tsentrykey.cpp \
                 $$PWD/../utils/src/tsscreenshotmsg.cpp \
                 $$PWD/../utils/src/tsunregscreenshotmsg.cpp \
@@ -68,12 +66,6 @@
                 -lestor \
                 -lfbscli \
                 
-    # tsimageutils and its dependencies
-    LIBS    +=  -ltsimageutils.lib \
-                -lbitmaptransforms \
-                -limageconversion \
-                -lefsrv \
-
 } else {
     INCLUDEPATH +=  $$PWD/stub/inc \
 
--- a/taskswitcher/client/s60/src/tssession.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/client/s60/src/tssession.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -42,42 +42,43 @@
 }
 
 TInt RTsSession::StartServer()
-{
-    TInt error;
-
+    {
     RSemaphore semaphore;
-    error = semaphore.CreateGlobal(KTsServerReadySemaphore, 0);
-    
-    if (KErrNone == error || KErrAlreadyExists == error) {
+    CleanupClosePushL(semaphore);
+    TInt error = semaphore.OpenGlobal(KTsServerReadySemaphore);
+    if (KErrNone != error) {
         RProcess server;
+        CleanupClosePushL(server);
         error = server.Create(KRunningAppServerName, KNullDesC, TUidType(KNullUid, KNullUid, KRunningAppServerUid));
-        if (KErrNone == error) {
+        if (KErrNone == error) 
+            {
             TRequestStatus status;
             server.Rendezvous(status);
-            
-            if (status != KRequestPending) {
+            if (status != KRequestPending) 
+                {
                 server.Kill(0);
                 User::WaitForRequest(status);
-            } else {
+                }
+            else
+                {
                 server.Resume();
                 User::WaitForRequest(status);
-
-                // wait for server
-                semaphore.Wait();
-            }
-
-            if (KErrCancel == status.Int()) {
+                }
+            
+            if(KErrCancel == status.Int())
+                {
                 error = KErrNone;
-            } else {
+                }
+            else
+                {
                 error = (EExitPanic == server.ExitType()) ? KErrGeneral : status.Int();
+                }
             }
+        CleanupStack::PopAndDestroy(&server);
         }
-        server.Close();
+    CleanupStack::PopAndDestroy(&semaphore);
+    return error;
     }
-    semaphore.Close();
-
-    return error;
-}
 
 
 HBufC8* RTsSession::TasksContentLC()
--- a/taskswitcher/inc/tstaskmonitorglobals.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/inc/tstaskmonitorglobals.h	Mon Oct 04 00:38:31 2010 +0300
@@ -37,6 +37,7 @@
     OpenTaskMessage,
     CloseTaskMessage,
     WindowGroupToBackgroundMessage,
+    IgnoreWindowGroups
 };
 
 enum UpdatePriority {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/rom/bld.inf	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Build information file
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+
+tstaskmonitor_core.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(tstaskmonitor_core.iby)
+../sis/stubs/taskmonitor_stub.sis  /epoc32/release/winscw/udeb/z/system/install/taskmonitor_stub.sis
+../sis/stubs/taskmonitor_stub.sis  /epoc32/data/z/system/install/taskmonitor_stub.sis
+
+../inc/tstaskmonitorglobals.h    MW_LAYER_PUBLIC_EXPORT_PATH(tstaskmonitorglobals.rh)
+
+
--- a/taskswitcher/rom/tstaskmonitor_core.iby	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/rom/tstaskmonitor_core.iby	Mon Oct 04 00:38:31 2010 +0300
@@ -22,6 +22,10 @@
 data=\epoc32\data\z\resource\apps\hsrunningappmonitor.rsc      resource\apps\hsrunningappmonitor.rsc
 data=ZPRIVATE\10003a3f\import\apps\hsrunningappmonitor_reg.rsc      private\10003a3f\import\apps\hsrunningappmonitor_reg.rsc
 
+// activities plugin
+file=ABI_DIR\BUILD_DIR\activitytsplugin.dll					       SHARED_LIB_DIR\activitytsplugin.dll
+data=\epoc32\data\z\resource\qt\plugins\activitytsplugin.qtplugin    resource\qt\plugins\activitytsplugin.qtplugin
+data=\epoc32\data\z\resource\taskswitcher\activitytsplugin.xml    resource\taskswitcher\activitytsplugin.xml
 
 file=ABI_DIR\BUILD_DIR\tsbackstepping.dll                   SHARED_LIB_DIR\tsbackstepping.dll
 
--- a/taskswitcher/screenshotplugin/group/tsscreenshotplugin.mmp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/screenshotplugin/group/tsscreenshotplugin.mmp	Mon Oct 04 00:38:31 2010 +0300
@@ -33,8 +33,9 @@
 SOURCEPATH      ../src
 SOURCE          tsscreenshotmain.cpp
 SOURCE          tsscreenshotplugin.cpp
-SOURCE          tsorientationmonitor.cpp
+SOURCE          tsscreenshotnotifier.cpp
 SOURCE          ../../utils/src/tsscreenshotmsg.cpp
+SOURCE          ../../utils/src/tsidlist.cpp
 
 RESOURCE        tsscreenshotplugin.rss
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/screenshotplugin/inc/tsnotifier.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef TSNOTIFIER_H
+#define TSNOTIFIER_H
+
+class MTsNotifier
+    {
+public:
+    virtual void SendMessageL( const TDesC8& aMessage ) =0;
+
+    };
+
+#endif //TSNOTIFIER_H
--- a/taskswitcher/screenshotplugin/inc/tsorientationmonitor.h	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-#ifndef TSORIENTATIONMONITOR_H
-#define TSORIENTATIONMONITOR_H
-#include <e32base.h>
-#include <sensrvdatalistener.h>
-#include "tsorientationobserver.h"
-
-class CRepository;
-
-class CTsOrientationMonitor: public CActive,
-                             public MSensrvDataListener
-    {
-public:
-    static CTsOrientationMonitor* NewL( MTsOrientationObserver& aObserver );
-    ~CTsOrientationMonitor();
-
-private:
-    CTsOrientationMonitor( MTsOrientationObserver& aObserver );
-    void ConstructL();
-    void SubscribeL();
-    void StartSensorMonitoringL();
-    void StopSensorMonitoring();
-
-private://from CActive
-    void DoCancel();
-    void RunL();
-    TInt RunError(TInt aError);
-    
-public:
-    void DataReceived( CSensrvChannel& aChannel, 
-                       TInt aCount, 
-                       TInt aDataLost );
-    
-    void DataError( CSensrvChannel& aChannel, 
-                    TSensrvErrorSeverity aError );
-    
-    void GetDataListenerInterfaceL( TUid aInterfaceUid, TAny*& aInterface );
-
-private:
-    MTsOrientationObserver& iObserver;
-    CRepository* iRepository;
-    CSensrvChannel* iChannel;
-
-    };
-#endif //TSORIENTATIONMONITOR_H
--- a/taskswitcher/screenshotplugin/inc/tsorientationobserver.h	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-#ifndef TSORIENTATIONOBSERVER_H
-#define TSORIENTATIONOBSERVER_H
-
-class MTsOrientationObserver
-    {
-public:
-    virtual void OrientationChanged( TInt aAngle ) =0; 
-    };
-
-#endif //TSORIENTATIONOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/screenshotplugin/inc/tsscreenshotnotifier.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef TSSCREENSHOTNOTIFIER_H
+#define TSSCREENSHOTNOTIFIER_H
+
+#include "tsnotifier.h"
+class CFbsBitmap;
+
+class CTsScreenshotNotifier: public CActive
+    {
+public:
+    static CTsScreenshotNotifier* NewL( MTsNotifier& aNotifier,
+                                        TInt aId,
+                                        CFbsBitmap* aBitmap,
+                                        TInt aAngle );
+    ~CTsScreenshotNotifier();
+
+    TInt Handle() const;
+private:
+    CTsScreenshotNotifier( MTsNotifier& aNotifier, 
+                           TInt aId,
+                           CFbsBitmap* aBitmap,
+                           TInt aAngle );
+
+protected://from CActive
+    void DoCancel();
+    void RunL();
+    TInt RunError(TInt aError);
+
+private:
+    MTsNotifier& iNotifier;
+    const TInt iId;
+    const CFbsBitmap* iBitmap;
+    const TInt iAngle;
+
+    };
+
+#endif //SSCREENSHOTNOTIFIER_H
--- a/taskswitcher/screenshotplugin/inc/tsscreenshotplugin.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/screenshotplugin/inc/tsscreenshotplugin.h	Mon Oct 04 00:38:31 2010 +0300
@@ -21,13 +21,16 @@
 #include <graphics/wsgraphicdrawerinterface.h>
 #include <graphics/wsgraphicdrawer.h>
 
-#include "tsorientationobserver.h"
+#include "tsnotifier.h"
 
 class CTsOrientationMonitor;
+class CTsScreenshotNotifier;
+class CTsIdList;
 
 class CTsScreenshotPlugin: public CWsGraphicDrawer, 
                            public MWsEventHandler,
-                           public MTsOrientationObserver
+                           public MTsNotifier
+                           
 {
 public:
     static CTsScreenshotPlugin* NewL();
@@ -41,7 +44,6 @@
                     const TGraphicDrawerId& aId, 
                     MWsClient& aOwner, 
                     const TDesC8& aData);
-    void ConstructL();
     void DoHandleEvent(const TWservCrEvent& aEvent);
     void TakeScreenshot(TInt);
     void TakeScreenshotL(TInt);
@@ -49,14 +51,13 @@
     void NotifyWindowGroupToBackgroundL(TInt aWindowGroupId);
     TInt OrientationToAngle();
     
-private://from MTsOrientationObserver
-    void OrientationChanged( TInt aAngle );
-    
+public:
+    void SendMessageL( const TDesC8& aMessage );
+
 private:
-    RPointerArray<CFbsBitmap> iCache;
-    CTsOrientationMonitor* iMonitor;
+    CTsIdList* iBlockedList;
+    RPointerArray<CTsScreenshotNotifier> iCache;
     TInt iWindowGroupId;
-    TInt iAngle;
 };
 
 #endif //TSSCREENSHOTPLUGIN_H
--- a/taskswitcher/screenshotplugin/src/tsorientationmonitor.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-#include <centralrepository.h>
-#include <sensrvchannelfinder.h>
-#include <sensrvchannel.h>
-#include <sensrvorientationsensor.h>
-
-#include "tsorientationmonitor.h"
-const TUid KSensorCenrepUid  = {0x2002C384};
-const TUint32 KSensorCenrepKey  = 0x1;
-//------------------------------------------------------------------------------
-CTsOrientationMonitor* CTsOrientationMonitor::NewL( MTsOrientationObserver& aObserver )
-    {
-    CTsOrientationMonitor* self = new (ELeave) CTsOrientationMonitor(aObserver);
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-//------------------------------------------------------------------------------
-CTsOrientationMonitor::CTsOrientationMonitor( MTsOrientationObserver& aObserver )
-:
-    CActive(EPriorityStandard),
-    iObserver(aObserver)
-    {
-    CActiveScheduler::Add(this);
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::ConstructL()
-    {
-    iRepository = CRepository::NewL( KSensorCenrepUid );
-    SetActive();
-    TRequestStatus* status( &iStatus );
-    User::RequestComplete( status, KErrNone );
-    }
-
-//------------------------------------------------------------------------------
-CTsOrientationMonitor::~CTsOrientationMonitor()
-    {
-    Cancel();
-    delete iChannel;
-    delete iRepository;
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::SubscribeL()
-    {
-    User::LeaveIfError( iRepository->NotifyRequest(KSensorCenrepKey, iStatus) );
-    SetActive();
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::StartSensorMonitoringL()
-    {
-    CSensrvChannelFinder *sensrvChannelFinder = CSensrvChannelFinder::NewLC();
-
-    RSensrvChannelInfoList channelInfoList;
-    CleanupClosePushL(channelInfoList);
-
-    TSensrvChannelInfo mySearchConditions;
-
-    //Search only Orientation events.
-    mySearchConditions.iChannelType = KSensrvChannelTypeIdOrientationData;
-
-    sensrvChannelFinder->FindChannelsL(channelInfoList, mySearchConditions);
-    
-    if( channelInfoList.Count() )
-        {
-        iChannel = CSensrvChannel::NewL(channelInfoList[0]);
-        iChannel->OpenChannelL();
-        iChannel->StartDataListeningL(this, 1, 1, 0);
-        }
-
-    CleanupStack::Pop(&channelInfoList);
-    CleanupStack::PopAndDestroy(sensrvChannelFinder);
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::StopSensorMonitoring()
-    {
-    if(0 != iChannel)
-        {
-        iChannel->StopDataListening();
-        }
-    delete iChannel;
-    iChannel = 0;
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::DoCancel()
-    {
-    iRepository->NotifyCancel(KSensorCenrepKey);
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::RunL()
-    {
-    User::LeaveIfError( iStatus.Int() );
-    TInt sensorStatus;
-    User::LeaveIfError(iRepository->Get(KSensorCenrepKey, sensorStatus));
-    (0 != sensorStatus ) ? StartSensorMonitoringL() : StopSensorMonitoring();
-    SubscribeL();
-    }
-
-//------------------------------------------------------------------------------
-TInt CTsOrientationMonitor::RunError(TInt aError)
-    {
-    if( KErrCancel != aError )
-        {
-        TRAP_IGNORE(SubscribeL());
-        }
-    return KErrNone;
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::DataReceived( CSensrvChannel& aChannel, 
-                                          TInt aCount, 
-                                          TInt /*aDataLost*/ )
-    {
-    if (aChannel.GetChannelInfo().iChannelType == KSensrvChannelTypeIdOrientationData)
-        {
-        TPckgBuf<TSensrvOrientationData> dataBuf;
-        for(TInt i = 0; i < aCount; ++i) 
-            {
-            aChannel.GetData(dataBuf);
-            iObserver.OrientationChanged( TSensrvOrientationData::EOrientationDisplayRightUp == dataBuf().iDeviceOrientation ? 270 : 0);
-            }
-        }
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::DataError( CSensrvChannel& /*aChannel*/, 
-                                       TSensrvErrorSeverity /*aError*/ )
-    {
-    //No implementation required
-    }
-
-//------------------------------------------------------------------------------
-void CTsOrientationMonitor::GetDataListenerInterfaceL( TUid /*aInterfaceUid*/, 
-                                                       TAny*& /*aInterface*/ )
-    {
-    //No implementation required
-    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/screenshotplugin/src/tsscreenshotnotifier.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#include <fbs.h>
+#include <s32mem.h>
+
+#include "tsscreenshotnotifier.h"
+#include "tsscreenshotmsg.h"
+
+//------------------------------------------------------------------------------
+CTsScreenshotNotifier* CTsScreenshotNotifier::NewL( MTsNotifier& aNotifier, 
+                                                    TInt aId,
+                                                    CFbsBitmap* aBitmap,
+                                                    TInt aAngle )
+    {
+    User::LeaveIfNull(aBitmap);
+    CTsScreenshotNotifier* self = 
+        new(ELeave)CTsScreenshotNotifier( aNotifier, aId, aBitmap, aAngle );
+    return self;
+    }
+
+//------------------------------------------------------------------------------
+CTsScreenshotNotifier::CTsScreenshotNotifier( MTsNotifier& aNotifier, 
+                                              TInt aId,
+                                              CFbsBitmap* aBitmap,
+                                              TInt aAngle )
+:
+    CActive( EPriorityIdle ),
+    iNotifier( aNotifier ),
+    iId( aId ),
+    iBitmap( aBitmap ),
+    iAngle( aAngle )
+    {
+    CActiveScheduler::Add(this);
+    SetActive();
+    TRequestStatus *status( &iStatus );
+    User::RequestComplete( status, KErrNone );
+    }
+
+//------------------------------------------------------------------------------
+CTsScreenshotNotifier::~CTsScreenshotNotifier()
+    {
+    Cancel();
+    delete iBitmap;
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsScreenshotNotifier::Handle() const
+    {
+    return iBitmap->Handle();
+    }
+
+//------------------------------------------------------------------------------
+void CTsScreenshotNotifier::DoCancel()
+    {
+    //No implementation required
+    }
+
+//------------------------------------------------------------------------------
+void CTsScreenshotNotifier::RunL()
+    {
+    RBuf8 message;
+    CleanupClosePushL(message);
+    message.CreateL(CTsScreenshotMsg::Size() + sizeof(TInt));
+    RDesWriteStream stream(message);
+    CleanupClosePushL(stream);
+    stream.WriteInt32L(RegisterScreenshotMessage);
+    CTsScreenshotMsg * screenshotMsg = 
+        CTsScreenshotMsg::NewLC(iId, 
+                                *iBitmap, 
+                                Low, 
+                                iAngle);
+    stream << (*screenshotMsg);
+    CleanupStack::PopAndDestroy(screenshotMsg);
+    CleanupStack::PopAndDestroy(&stream);
+    iNotifier.SendMessageL(message);
+    CleanupStack::PopAndDestroy(&message);
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsScreenshotNotifier::RunError(TInt /*aError*/)
+    {
+    delete iBitmap;
+    iBitmap = 0;
+    return KErrNone;
+    }
--- a/taskswitcher/screenshotplugin/src/tsscreenshotplugin.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/screenshotplugin/src/tsscreenshotplugin.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -23,8 +23,9 @@
 #include <qnamespace.h>
 
 #include "tsscreenshotplugin.h"
-#include "tsorientationmonitor.h"
+#include "tsscreenshotnotifier.h"
 #include "tsscreenshotmsg.h"
+#include "tsidlist.h"
 
 const TInt KInvalidGroupId(~0);
 const TUid KHbPsHardwareCoarseOrientationCategoryUid = {0x20022E82};
@@ -57,14 +58,9 @@
                              TWservCrEvent::EWindowGroupChanged |
                              TWservCrEvent::EDeviceOrientationChanged);
     iWindowGroupId = KInvalidGroupId;
-    TRAP_IGNORE( ConstructL() );
+    iBlockedList = CTsIdList::NewL(); 
     }
 
-// -----------------------------------------------------------------------------
-void CTsScreenshotPlugin::ConstructL()
-    {
-    iMonitor = CTsOrientationMonitor::NewL( *this );
-    }
 
 // -----------------------------------------------------------------------------
 /**
@@ -72,7 +68,7 @@
  */
 CTsScreenshotPlugin::~CTsScreenshotPlugin()
     {
-    delete iMonitor;
+    delete iBlockedList;
     Env().UnregisterEventHandler(this);
     iCache.ResetAndDestroy();
     }
@@ -122,6 +118,13 @@
             }
         CleanupStack::PopAndDestroy( screenshotMsg );
         }
+    else if( IgnoreWindowGroups == function )
+        {
+        CTsIdList* list = CTsIdList::NewLC( msgStream );
+        delete iBlockedList;
+        iBlockedList = list;
+        CleanupStack::Pop( list );
+        }
     CleanupStack::PopAndDestroy( &msgStream );
     }
 
@@ -142,7 +145,10 @@
         iWindowGroupId = aEvent.WindowGroupIdentifier();
         break;
     case TWservCrEvent::EDeviceOrientationChanged:
-        TakeScreenshot( iWindowGroupId );
+        if( !iBlockedList->IsPresent( iWindowGroupId ) )
+            {
+            TakeScreenshot( iWindowGroupId );
+            }
         break;
         }
     }
@@ -182,34 +188,19 @@
     CFbsBitmap *bitmap = new (ELeave) CFbsBitmap();
     CleanupStack::PushL(bitmap);
     
-    
     User::LeaveIfError(bitmap->Create(screenConfig->SizeInPixels(), 
                                 screenConfig->DisplayMode()));
     
     screenDevice->CopyScreenToBitmapL(bitmap, 
                                       screenConfig->SizeInPixels());
     
-    
     //prepare and send message
-    RBuf8 message;
-    CleanupClosePushL(message);
-    message.CreateL(CTsScreenshotMsg::Size() + sizeof(TInt));
-    RDesWriteStream stream(message);
-    CleanupClosePushL(stream);
-    stream.WriteInt32L(RegisterScreenshotMessage);
-    
-    CTsScreenshotMsg * screenshotMsg = 
-        CTsScreenshotMsg::NewLC(aId, 
-                                *bitmap, 
-                                Low, 
-                                OrientationToAngle());
-    stream << (*screenshotMsg);
-    CleanupStack::PopAndDestroy(screenshotMsg);
-    CleanupStack::PopAndDestroy(&stream);
-    User::LeaveIfError(SendMessage(message));
-    CleanupStack::PopAndDestroy(&message);
-    iCache.AppendL(bitmap);
+    CTsScreenshotNotifier* notifier = 
+        CTsScreenshotNotifier::NewL(*this, aId, bitmap, OrientationToAngle());
     CleanupStack::Pop(bitmap);
+    CleanupStack::PushL(notifier);
+    iCache.AppendL(notifier);
+    CleanupStack::Pop(notifier);
     }
 
 // -----------------------------------------------------------------------------
@@ -226,7 +217,6 @@
         case EDisplayOrientation90CW: retVal = 270;break;
         case EDisplayOrientation180: retVal = 180;break;
         case EDisplayOrientation270CW: retVal = 90;break;
-        case EDisplayOrientationNormal:retVal = iAngle; break;
         case EDisplayOrientationAuto:
             {
             RProperty::Get( KHbPsHardwareCoarseOrientationCategoryUid, 
@@ -240,9 +230,9 @@
     }
 
 // -----------------------------------------------------------------------------
-void CTsScreenshotPlugin::OrientationChanged( TInt aAngle )
+void CTsScreenshotPlugin::SendMessageL( const TDesC8& aMessage )
     {
-    iAngle = aAngle;
+    User::LeaveIfError( SendMessage( aMessage ) );
     }
 
 // -----------------------------------------------------------------------------
@@ -267,6 +257,6 @@
         stream.WriteInt32L(windowGroupId);
         CleanupStack::PopAndDestroy(&stream);
         }
-    User::LeaveIfError(SendMessage(message));
+    SendMessageL(message);
     CleanupStack::PopAndDestroy(&message);
     }
--- a/taskswitcher/server/inc/tsdatalist.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsdatalist.h	Mon Oct 04 00:38:31 2010 +0300
@@ -27,6 +27,7 @@
 #include "tsentry.h"
 #include "tsdatastorage.h"
 #include "tsdataobserver.h"
+#include "tsenv.h"
 
 class CApaWindowGroupName;
 class CFbsBitmap;
@@ -37,35 +38,34 @@
 public:
     static CTsDataList* NewL( MTsResourceManager& aResources, 
                               MTsWindowGroupsMonitor& aMonitor, 
-                              MTsDataObserver& aObserver );
+                              MTsDataObserver& aObserver,
+                              TsEnv& aEnv );
 
     ~CTsDataList();
 
 private:
     CTsDataList( MTsResourceManager& aResources,
                  MTsWindowGroupsMonitor& aMonitor, 
-                 MTsDataObserver& aObserver );
+                 MTsDataObserver& aObserver,
+                 TsEnv& aEnv);
 
     void ConstructL();
 
 public:
     const RTsFswArray& Data() const;
-    void HandleWindowGroupChanged( MTsResourceManager &,
-                                   const TArray<RWsSession::TWindowGroupChainInfo> & );
+    void HandleWindowGroupChanged( MTsResourceManager &aResources, 
+                                   const MTsRunningApplicationStorage& aStorage );
     TBool IsHiddenUid( TUid aUid );
     TBool IsSupported(TInt aFunction) const;
     void HandleDataL(TInt aFunction,RReadStream& aDataStream);
 
 private:
     void CollectAppsL( RTsFswArray& aAppsList,
-                       const TArray<RWsSession::TWindowGroupChainInfo> &aWgList );
+                       const MTsRunningApplicationStorage& aStorage );
     void AddEntryL( const TTsEntryKey& aKey, 
-                    const TUid& aAppUid,
-                    CApaWindowGroupName* aWgName,
+                    const MTsRunningApplication& aRunningApp,
                     RTsFswArray& aNewList );
-    HBufC* FindAppNameLC( CApaWindowGroupName* aWindowName,
-                          const TUid& aAppUid,
-                          TInt aWgId );
+    HBufC* FindAppNameLC( const MTsRunningApplication& aRunningApp );
     TBool CheckIfExists( const CTsEntry& aEntry,
                          const RTsFswArray& aNewList ) const;
     void RegisterScreenshotL( RReadStream& aDataStream );
@@ -90,6 +90,7 @@
     RTsFswArray iVisibleData;
     RArray<TUid> iHiddenUids/** list of hidden uids */;
     CFbsBitmap* iDefaultIcon /** default icon*/;
+    TsEnv& iEnv;
     };
 
 #endif //TSDATALIST_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/inc/tsenv.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef TSENV_H
+#define TSENV_H
+
+#include <QObject>
+#include <QPixmap>
+
+class TsEnv: public QObject
+{
+    Q_OBJECT
+public slots:
+    void createThumbnail(const QPixmap& source, 
+                         int angle =0, 
+                         const void* userData =0);
+
+signals:
+    void thumbnailCreated(QPixmap thumbnail, const void *userData);
+
+};
+
+#endif //TSENV_H
--- a/taskswitcher/server/inc/tsmodel.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsmodel.h	Mon Oct 04 00:38:31 2010 +0300
@@ -36,6 +36,7 @@
     virtual TTsModelItemKey KeyL( TInt aOffset ) const = 0;
     virtual TBool IsActiveL( TInt aOffset ) const = 0;
     virtual TBool IsClosableL( TInt aOffset ) const = 0;
+    virtual TBool IsMandatoryL( TInt aOffset ) const = 0;
 
 protected: //operations execution
     virtual TBool CloseL( TTsModelItemKey aKey ) const = 0;
--- a/taskswitcher/server/inc/tsmodelitem.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsmodelitem.h	Mon Oct 04 00:38:31 2010 +0300
@@ -35,6 +35,7 @@
     TBool IsClosableL() const;
     TBool CloseL() const;
     TBool LaunchL() const;
+    TBool IsMandatoryL() const;
     
 public:
     void ExternalizeL( RWriteStream& aStream ) const;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/inc/tsrunningapp.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description :
+ *
+ */
+#ifndef TSRUNNINGAPP_H
+#define TSRUNNINGAPP_H
+
+#include <e32base.h>
+
+#include "tswindowgroupsobserver.h"
+
+class CApaWindowGroupName;
+
+class CTsRunningApp: public CBase,
+                     public MTsRunningApplication
+{
+public:
+    static CTsRunningApp* NewLC( MTsResourceManager& aResources,
+                                 const RWsSession::TWindowGroupChainInfo& aInfo );
+    ~CTsRunningApp();
+
+private:
+    CTsRunningApp( MTsResourceManager& aResources,
+                   const RWsSession::TWindowGroupChainInfo& aInfo );
+    const CApaWindowGroupName& WindowGroupNameL() const;
+
+public://from MTsRunningApplication
+    TUid UidL()const;
+    const TDesC& CaptionL() const;
+    TBool IsHiddenL() const;
+    TBool IsSystemL() const;
+    TInt WindowGroupId() const;
+    TInt ParentWindowGroupId() const;
+    TBool IsEmbeded() const;
+    
+
+private:
+    MTsResourceManager& iResources;
+    const RWsSession::TWindowGroupChainInfo iWindowGroupInfo;
+    mutable CApaWindowGroupName* iWindowGroupName;
+    mutable TPtrC iCaption;
+};
+
+#endif//TSRUNNINGAPP_H
--- a/taskswitcher/server/inc/tsrunningappmodel.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsrunningappmodel.h	Mon Oct 04 00:38:31 2010 +0300
@@ -25,6 +25,7 @@
 
 class CTsDataList;
 class CTsScreenshotProvider;
+class TsEnv;
 
 NONSHARABLE_CLASS(CTsRunningAppModel) : public CBase, 
                                         public MTsModel, 
@@ -34,15 +35,18 @@
 
 public:
     static CTsRunningAppModel *NewL( MTsResourceManager &aResources, 
-                                     MTsWindowGroupsMonitor &aMonitor );
+                                     MTsWindowGroupsMonitor &aMonitor,
+                                     TsEnv& aEnv );
     static CTsRunningAppModel *NewLC( MTsResourceManager &aResources, 
-                                      MTsWindowGroupsMonitor &aMonitor );
+                                      MTsWindowGroupsMonitor &aMonitor,
+                                      TsEnv& aEnv );
     ~CTsRunningAppModel();
     
 private:
     CTsRunningAppModel( MTsResourceManager &aResources );
     void ConstructL( MTsResourceManager &aResources, 
-                     MTsWindowGroupsMonitor &aMonitor );
+                     MTsWindowGroupsMonitor &aMonitor,
+                     TsEnv& aEnv);
 
 // MHsDataObserver interface implementation
 public:
@@ -65,6 +69,7 @@
     virtual TTsModelItemKey KeyL( TInt aOffset ) const;
     virtual TBool IsActiveL( TInt aOffset ) const;
     virtual TBool IsClosableL( TInt aOffset ) const;
+    virtual TBool IsMandatoryL( TInt aOffset ) const;
 
 public:
     virtual TBool CloseL( TTsModelItemKey aKey ) const;
--- a/taskswitcher/server/inc/tsrunningappserver.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsrunningappserver.h	Mon Oct 04 00:38:31 2010 +0300
@@ -22,6 +22,7 @@
 #include <e32base.h>
 #include <w32std.h>
 #include "tsdataobserver.h"
+#include "tsenv.h"
 
 class CTsResourceManager;
 class CTsWindowGroupsMonitor;
@@ -54,6 +55,7 @@
                        const CTsServiceProvider& aServiceProvider);
 
 private:
+    TsEnv iEnv;
     CTsResourceManager* iResources;
     CTsWindowGroupsMonitor* iMonitor;
     CTsSerializedDataProvider* iSerializer;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/inc/tsrunningappstorage.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description :
+ *
+ */
+#ifndef TSREUNNINGAPPSTORAGE_H
+#define TSREUNNINGAPPSTORAGE_H
+
+#include "tswindowgroupsobserver.h"
+
+class CTsRunningApp;
+
+class CTsRunningAppStorage: public CBase,
+                            public MTsRunningApplicationStorage
+{
+public:
+    static CTsRunningAppStorage* NewLC();
+    ~CTsRunningAppStorage();
+    void HandleWindowGroupChanged( 
+           MTsResourceManager &aResources, 
+           const TArray<RWsSession::TWindowGroupChainInfo> & aWindowGroups );
+    void HandleWindowGroupChanged( 
+           MTsResourceManager &aResources, 
+           const TArray<RWsSession::TWindowGroupChainInfo>& aWindowGroups,
+           const TArray<RWsSession::TWindowGroupChainInfo>& aFilteredWindowGroups);
+public:
+    const MTsRunningApplication& operator[] (TInt aOffset) const;
+    TInt Count() const;
+    TInt ParentIndex( const MTsRunningApplication& aRunningApp ) const;
+    TArray<TInt> BlockedWindowGroups() const;
+    
+private:
+    TInt ParentIndex( TInt aOffset ) const;
+    TInt Find(TInt aWindowGroupId, TInt aOffset =0) const;
+
+private:
+    CTsRunningAppStorage();
+
+private:
+    RPointerArray<CTsRunningApp> iRunningApps;
+    RArray<TInt> iBlockedWindowGroups;
+};
+#endif//TSREUNNINGAPPSTORAGE_H
--- a/taskswitcher/server/inc/tsscreenshotprovider.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsscreenshotprovider.h	Mon Oct 04 00:38:31 2010 +0300
@@ -17,19 +17,33 @@
 #ifndef TSSCREENSHOTPROVIDER_H
 #define TSSCREENSHOTPROVIDER_H
 #include "tsdatastorage.h"
+#include "tswindowgroupsobserver.h"
 #include <w32std.h>
 
-class CTsScreenshotProvider: public CWsGraphic
+class CTsScreenshotProvider: public CWsGraphic,
+                             public MTsWindowGroupsObserver
 {
 public:
-    static CTsScreenshotProvider* NewL(MTsDataStorage&);
+    static CTsScreenshotProvider* NewL(MTsDataStorage&, MTsWindowGroupsMonitor&);
+    ~CTsScreenshotProvider();
+
+public://from MTsWindowGroupsObserver
+    void HandleWindowGroupChanged( MTsResourceManager &aResources, 
+                                   const MTsRunningApplicationStorage& aStorage );
+
+public://from CWsGraphic
+    void HandleMessage(const TDesC8&);
+
 private:
-    CTsScreenshotProvider(MTsDataStorage&);
-    void HandleMessage(const TDesC8&);
+    CTsScreenshotProvider(MTsDataStorage&, MTsWindowGroupsMonitor&);
     void HandleMessageL(const TDesC8&);
+    void HandleWindowGroupChangedL( MTsResourceManager &aResources, 
+                                    const MTsRunningApplicationStorage& aStorage );
     void OnReplace();
+
 private:
     MTsDataStorage& iStorage;
+    MTsWindowGroupsMonitor& iMonitor;
 };
 
 #endif //TSSCREENSHOTTASK_H
--- a/taskswitcher/server/inc/tsservice.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsservice.h	Mon Oct 04 00:38:31 2010 +0300
@@ -48,6 +48,7 @@
     TTsModelItemKey KeyL( TInt aOffset ) const;
     TBool IsActiveL( TInt aOffset ) const;
     TBool IsClosableL( TInt aOffset ) const;
+    TBool IsMandatoryL( TInt aOffset ) const;
     TBool CloseL( TTsModelItemKey aKey ) const;
     TBool LaunchL( TTsModelItemKey aKey ) const;
     
--- a/taskswitcher/server/inc/tsservicesproviderconfig.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsservicesproviderconfig.h	Mon Oct 04 00:38:31 2010 +0300
@@ -22,16 +22,17 @@
 class CTsServiceProviderConfig: public CBase
 {
 public:
-    static CTsServiceProviderConfig* NewLC();
+    static CTsServiceProviderConfig* NewLC(QObject *aEnv);
     ~CTsServiceProviderConfig();
 
     TInt Count() const;
     QObject* LoadL(TInt aOffset)const;
 private:
-    CTsServiceProviderConfig();
+    CTsServiceProviderConfig(QObject* aEnv);
     void ConstructL();
 
 private:
+    QObject* iEnv;
     RPointerArray<TAny> iServices;
 };
 
--- a/taskswitcher/server/inc/tsstorage.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/inc/tsstorage.h	Mon Oct 04 00:38:31 2010 +0300
@@ -40,6 +40,7 @@
     void ResetModelL();
     void PullDataL(const MTsModel& aSrc);
     void ReorderDataL();
+    void TrimDataL();
 
 public://from MTsModelObserver
     void DataChanged(MTsModel& aModel);
@@ -56,6 +57,7 @@
     TTsModelItemKey KeyL( TInt aOffset ) const;
     TBool IsActiveL( TInt aOffset ) const;
     TBool IsClosableL( TInt aOffset ) const;
+    TBool IsMandatoryL( TInt aOffset ) const;
     TBool CloseL( TTsModelItemKey aKey ) const;
     TBool LaunchL( TTsModelItemKey aKey ) const;
     TTsModelItem FindL( TTsModelItemKey aKey ) const;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/inc/tswindowgroupsmonitor.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description :
+ *
+ */
+#ifndef TSWINDOWGROUPMONITOR_H
+#define TSWINDOWGROUPMONITOR_H
+
+#include "tswindowgroupsobserver.h"
+
+/**
+ * Window server monitor implementation.
+ */
+class CTsWindowGroupsMonitor: public CActive, 
+                              public MTsWindowGroupsMonitor
+                              
+{
+public:
+    /**
+     * Two phase constructor
+     */
+    static CTsWindowGroupsMonitor* NewL(MTsResourceManager &);
+    
+    /**
+     * Destructor
+     */
+    ~CTsWindowGroupsMonitor();
+    
+    /**
+     * @see MTsWindowGroupsMonitor::SubscribeL
+     */
+    void SubscribeL(MTsWindowGroupsObserver &);
+    
+    /**
+     * @see MTsWindowGroupsMonitor::Cancel
+     */
+    void Cancel(MTsWindowGroupsObserver &);
+
+protected:
+    /**
+     * @see CActive::RunL
+     */
+    void RunL();
+    
+    /**
+     * @see CActive::DoCancel
+     */
+    void DoCancel();
+    
+    /**
+     * @see CActive::RunError
+     */
+    TInt RunError(TInt error);
+
+private:
+    /**
+     * First phase constructor
+     */
+    CTsWindowGroupsMonitor(MTsResourceManager &);
+    
+    /**
+     * Second phase constructor
+     */
+    void ConstructL();
+    
+    /**
+     * Function subscribe for event to window server and activate object
+     */
+    void Subscribe();
+    
+    /**
+     * Function provide window server event to observers
+     */
+    void ProvideEventL();
+    
+private:
+    /**
+     * Registry of subscribed observers
+     */
+    RPointerArray<MTsWindowGroupsObserver> iObservers;
+    
+    /**
+     * Resources manager
+     */
+    MTsResourceManager &iResources;
+    
+    /**
+     * Monitor window group
+     */
+    RWindowGroup iWg;
+};
+#endif//TSWINDOWGROUPMONITOR_H
--- a/taskswitcher/server/server.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/server.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -29,7 +29,8 @@
                 ../utils/inc \
                 ../backstepping/inc \
                 
-SOURCES +=  src/tsdataobservertask.cpp \
+SOURCES +=  src/tsenv.cpp \
+            src/tsdataobservertask.cpp \
             src/tsdataprovidertask.cpp \
             src/tsrunningappserver.cpp \
             src/tsrunningappsession.cpp \
@@ -48,17 +49,22 @@
             src/tsservicesproviderconfig.cpp \
             src/tsserviceobserver.cpp \
             src/tsmodelitemkeymsg.cpp \
+            src/tswindowgroupsmonitor.cpp \
+            src/tsrunningapp.cpp \
+            src/tsrunningappstorage.cpp \
             ../utils/src/tsentrykey.cpp \
             ../utils/src/tsentrykeygenerator.cpp \
             ../utils/src/tsentry.cpp \
             ../utils/src/tsscreenshotmsg.cpp \
             ../utils/src/tsunregscreenshotmsg.cpp \
             ../utils/src/tsvisibilitymsg.cpp \
-            ../utils/src/tswindowgroupsmonitor.cpp \
             ../utils/src/tswindowgroupsobserver.cpp \
             ../utils/src/tsresourcemanager.cpp \
+            ../utils/src/tsthumbnailprovider.cpp \
+            ../utils/src/tsidlist.cpp \
             
-HEADERS +=  inc/tsdataobservertask.h \
+HEADERS +=  inc/tsenv.h \
+            inc/tsdataobservertask.h \
             inc/tsdataprovider.h \
             inc/tsdataprovidertask.h \
             inc/tsrunningappserver.h \
@@ -79,6 +85,9 @@
             inc/tsservicesproviderconfig.h \
             inc/tsserviceobserver.h \
             inc/tsmodelitemkeymsg.h \
+            inc/tswindowgroupsmonitor.h \
+            inc/tsrunningapp.h \
+            inc/tsrunningappstorage.h \
             ../utils/inc/tsdataobserver.h \
             ../utils/inc/tsentry.h \
             ../utils/inc/tsentrykey.h \
@@ -89,6 +98,9 @@
             ../utils/inc/tsvisibilitymsg.h \
             ../utils/inc/tsresourcemanager.h \
             ../utils/inc/tswindowgroupsobserver.h \
+            ../utils/inc/tsthumbnailprovider.h \
+            ../utils/inc/tsthumbnailobserver.h \
+            ../utils/inc/tsidlist.h \
 
 LIBS += -lxqutils \
         -ltsbackstepping \
@@ -102,13 +114,6 @@
         -lcaclient \        #for getApplicationIcon
         -lcone
 
-# tsimageutils and its dependencies
-LIBS += -ltsimageutils.lib \
-        -lbitmaptransforms \
-        -limageconversion \
-        -lefsrv \
-        
-        
 symbian {
     TARGET.UID3 = 0x200267B0
     TARGET.CAPABILITY = All -TCB
--- a/taskswitcher/server/src/main.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/main.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -26,35 +26,30 @@
 
 int main(int argc, char *argv[]) 
 {
-    QApplication app(argc, argv);
-    
-    // hide server from TaskSwitcher
-    CEikonEnv * env = CEikonEnv::Static();
-    if(env) {
+    RSemaphore semaphore;
+    int errNo( semaphore.CreateGlobal(KTsServerReadySemaphore, 0) );
+    if (KErrNone == errNo) {
+        QApplication app(argc, argv);
+        // maintain instance of caservice (needed for getting application icons)
+        QSharedPointer<CaService> service = CaService::instance();
+        TRAP(errNo,
+        // hide server from TaskSwitcher
+        CEikonEnv * env = CEikonEnv::Static();
+        User::LeaveIfNull( env );
         env->RootWin().SetOrdinalPosition(0, ECoeWinPriorityNeverAtFront);
-
-        CApaWindowGroupName *wgName = CApaWindowGroupName::NewLC(env->WsSession());    
+        CApaWindowGroupName *wgName = CApaWindowGroupName::NewLC(env->WsSession());
         wgName->SetHidden(ETrue); // hides us from FSW and protects us from OOM FW etc.
-        wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down    
-        wgName->SetCaptionL(KRunningAppServerName);    
+        wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down
+        wgName->SetCaptionL(KRunningAppServerName);
         wgName->SetWindowGroupName(env->RootWin());
         CleanupStack::PopAndDestroy(wgName);
+        CServer2* serverObject = CTsRunningAppServer::NewLC();
+        semaphore.Signal();
+        QT_TRYCATCH_LEAVING(errNo = app.exec());
+        User::LeaveIfError(errNo);
+        CleanupStack::PopAndDestroy(serverObject);
+        )//TRAP
+        semaphore.Close();
     }
-    
-    // maintain instance of caservice (needed for getting application icons)
-    QSharedPointer<CaService> service = CaService::instance();    
-    
-    CServer2* serverObject = CTsRunningAppServer::NewLC();    
-    CleanupStack::Pop(serverObject);
-    
-    RSemaphore semaphore;
-    if (KErrNone == semaphore.OpenGlobal(KTsServerReadySemaphore)) {
-        semaphore.Signal();
-    }
-    semaphore.Close();
-    
-    int result = app.exec();
-    
-    delete serverObject;
-    return result;
+    return errNo;
 }
--- a/taskswitcher/server/src/tsdatalist.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/tsdatalist.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -49,11 +49,13 @@
  */
 CTsDataList* CTsDataList::NewL( MTsResourceManager& aResources,
                                 MTsWindowGroupsMonitor& aMonitor, 
-                                MTsDataObserver& aObserver )
+                                MTsDataObserver& aObserver,
+                                TsEnv& aEnv )
     {
     CTsDataList* self = new (ELeave) CTsDataList( aResources, 
                                                   aMonitor, 
-                                                  aObserver );
+                                                  aObserver,
+                                                  aEnv);
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop( self );
@@ -66,11 +68,13 @@
  */
 CTsDataList::CTsDataList(MTsResourceManager& aResources,
                          MTsWindowGroupsMonitor &aMonitor, 
-                         MTsDataObserver& aObserver ) 
+                         MTsDataObserver& aObserver,
+                         TsEnv& aEnv) 
 :
     CTsWindowGroupsObserver( aMonitor ),
     iResources( aResources ),
-    iObserver( aObserver )
+    iObserver( aObserver ),
+    iEnv( aEnv )
     {
     }
 
@@ -120,13 +124,13 @@
  * @see MTsWindowGroupsObserver HandleWindowGroupChanged
  */
 void CTsDataList::HandleWindowGroupChanged(
-                      MTsResourceManager &, 
-                      const TArray<RWsSession::TWindowGroupChainInfo>& aWgList)
+                      MTsResourceManager &/*aResources*/, 
+                      const MTsRunningApplicationStorage& aStorage)
     {
     TRAP_IGNORE(RDebug::Print(_L("[TaskSwitcher] processing started"));
                 RTsFswArray newAppsList;
                 CleanupResetAndDestroyPushL(newAppsList);
-                CollectAppsL(newAppsList, aWgList);
+                CollectAppsL(newAppsList, aStorage);
                 RDebug::Print(_L("[TaskSwitcher] gathered app info"));
                 FitDataToListL(newAppsList);
                 CleanupStack::PopAndDestroy(&newAppsList);
@@ -140,39 +144,33 @@
  * @param aAppsList array to add to
  */
 void CTsDataList::CollectAppsL(RTsFswArray& aAppsList, 
-                               const TArray<RWsSession::TWindowGroupChainInfo> &aWgList)
+                               const MTsRunningApplicationStorage& aStorage)
     {
-    for( TInt i(0); i < aWgList.Count(); ++i )
+    for( TInt i(0); i < aStorage.Count(); ++i )
         {
         TTsEntryKey key;
-        TInt err = TsEntryKeyGeneraror::Generate(key, aWgList[i].iId, aWgList);
+        TInt err = TsEntryKeyGeneraror::Generate( key, 
+                                                  aStorage[i].WindowGroupId(), 
+                                                  aStorage );
         //skip this entry if it is already on list or generate key failed
         if( err!=KErrNone || FindEntry( aAppsList, key ) >= 0 ) 
             {
             continue;
             }
 
-        // get window group name
-        CApaWindowGroupName* windowName = 
-            CApaWindowGroupName::NewLC( iResources.WsSession(), 
-                                        key.WindowGroupId() );
-        TUid appUid = windowName->AppUid();
-        
-         // get screen number (-1=console, 0=main screen, 1=cover ui)
+        // get screen number (-1=console, 0=main screen, 1=cover ui)
         TInt appScreen = 0;
         TInt scrNumErr = 
             iResources.ApaSession().GetDefaultScreenNumber( appScreen, 
-                                                            appUid );
+                                                            aStorage[i].UidL() );
         
-        if( appUid.iUid && 
-            !windowName->Hidden() && 
+        if( aStorage[i].UidL().iUid && 
+            !aStorage[i].IsHiddenL() && 
             (appScreen == 0 || appScreen == -1) && 
             scrNumErr == KErrNone )
             {
-            AddEntryL( key, appUid, windowName, aAppsList );
+            AddEntryL( key, aStorage[i], aAppsList );
             }
-
-        CleanupStack::PopAndDestroy( windowName );
         }
     }
 
@@ -180,33 +178,28 @@
 /**
  * Called from CollectTasksL for each entry in the task list.
  * @param   aKey       entry key
- * @param   aAppUid    application uid
- * @param   aWgName    window group name or NULL
+ * @param   aRunningApp  running application entry
  * @param   aNewList   list to add to
  */
 void CTsDataList::AddEntryL( const TTsEntryKey& aKey, 
-                             const TUid& aAppUid,
-                             CApaWindowGroupName* aWgName, 
+                             const MTsRunningApplication& aRunningApp, 
                              RTsFswArray& aNewList )
     {
-    CTsEntry* entry = CTsEntry::NewLC( aKey, iObserver );
+    CTsEntry* entry = CTsEntry::NewLC( aKey, iObserver, &iEnv );
     // check if present in old list and if yes then take some of the old data
     TBool found = ConsiderOldDataL( aKey );
     // if not present previously then find out app name
     // and check if screenshot is already available
     if( !found )
         {
-        entry->SetAppUid(aAppUid);
-        HBufC* name = FindAppNameLC( aWgName, aAppUid, aKey.WindowGroupId() );
+        entry->SetAppUid(aRunningApp.UidL());
+        HBufC* name = FindAppNameLC( aRunningApp );
         entry->SetAppNameL(*name);
         CleanupStack::PopAndDestroy( name );
         //transfer ownership to entry
-        entry->SetAppIcon( GetAppIconL( aAppUid ) );
+        entry->SetAppIcon( GetAppIconL( aRunningApp.UidL() ) );
         }
-    if(aWgName)
-        {
-        entry->SetCloseableApp( !aWgName->IsSystem() );
-        }
+    entry->SetCloseableApp( !aRunningApp.IsSystemL());
     // add to new list, ownership is transferred
     aNewList.AppendL( entry );
     CleanupStack::Pop( entry );
@@ -240,26 +233,24 @@
  * @param   aWgId       window group id
  * @return  application name, ownership transferred to caller
  */
-HBufC* CTsDataList::FindAppNameLC( CApaWindowGroupName* aWindowName, 
-                                   const TUid& aAppUid, 
-                                   TInt aWgId )
+HBufC* CTsDataList::FindAppNameLC( const MTsRunningApplication& aRunningApp )
     {
     //Retrieve the app name
     TApaAppInfo info;
-    iResources.ApaSession().GetAppInfo( info, aAppUid );
+    iResources.ApaSession().GetAppInfo( info, aRunningApp.UidL() );
     TPtrC caption = info.iShortCaption;
 
     HBufC* tempName( 0 );
-    if (!caption.Length() && aWindowName) // if not set - use thread name instead
+    if (!caption.Length() ) // if not set - use thread name instead
         {
-        if (aWindowName->Caption().Length()) 
+        if( aRunningApp.CaptionL().Length() )
             {
-            tempName = aWindowName->Caption().AllocLC();
+            tempName = aRunningApp.CaptionL().AllocLC();
             }
         else
             {
             TThreadId threadId;
-            if(KErrNone == iResources.WsSession().GetWindowGroupClientThreadId( aWgId, threadId ) ) 
+            if(KErrNone == iResources.WsSession().GetWindowGroupClientThreadId( aRunningApp.WindowGroupId(), threadId ) ) 
                 {
                 RThread thread;
                 CleanupClosePushL( thread );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/src/tsenv.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include "tsenv.h"
+
+const int thumbnailWidth(128);
+const int thumbnailHeight(128);
+
+void TsEnv::createThumbnail(const QPixmap& source, 
+                            int angle, 
+                            const void* userData)
+{
+    try {
+    QPixmap thumbnailSource;
+    const Qt::Axis rotationAxis(Qt::ZAxis); 
+    if ( 270 <= angle ) {
+        thumbnailSource = source.transformed(QTransform().rotate(270.0f, 
+                                                                 rotationAxis),
+                                             Qt::SmoothTransformation);
+    } else if( 180 <= angle ) {
+        thumbnailSource = source.transformed(QTransform().rotate(180.0f, 
+                                                                 rotationAxis),
+                                             Qt::SmoothTransformation);
+    } else if( 90 <= angle ) {
+        thumbnailSource = source.transformed(QTransform().rotate(90.0f, 
+                                                                 rotationAxis),
+                                             Qt::SmoothTransformation);
+    } else {
+        thumbnailSource = source;
+    }
+    const QRect expectedRect(0, 0, thumbnailWidth, thumbnailHeight);
+    const QPixmap thumbanail(thumbnailSource.scaled(expectedRect.size(), 
+                                                    Qt::KeepAspectRatioByExpanding,
+                                                    Qt::SmoothTransformation));
+    emit thumbnailCreated(thumbanail.copy(expectedRect), userData);
+    } catch (...) {
+    }
+}
--- a/taskswitcher/server/src/tsmodelitem.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/tsmodelitem.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -145,6 +145,16 @@
 
 // -----------------------------------------------------------------------------
 /**
+ * @return EFalse if entry is not mandatory, other value in other cases  
+ */
+TBool TTsModelItem::IsMandatoryL() const
+    {
+    ValidateL();
+    return iModel.IsMandatoryL( iIndex );
+    }
+
+// -----------------------------------------------------------------------------
+/**
  * Validate item instance 
  */
 void TTsModelItem::ValidateL() const
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/src/tsrunningapp.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description :
+ *
+ */
+
+#include <apgwgnam.h>
+#include "tsrunningapp.h"
+
+//------------------------------------------------------------------------------
+CTsRunningApp* CTsRunningApp::NewLC( 
+                             MTsResourceManager& aResources,
+                             const RWsSession::TWindowGroupChainInfo& aInfo )
+    {
+    CTsRunningApp* self = new(ELeave) CTsRunningApp(aResources, aInfo);
+    CleanupStack::PushL( self );
+    return self;
+    }
+
+//------------------------------------------------------------------------------
+CTsRunningApp::~CTsRunningApp()
+    {
+    delete iWindowGroupName;
+    }
+
+//------------------------------------------------------------------------------
+CTsRunningApp::CTsRunningApp( MTsResourceManager& aResources,
+               const RWsSession::TWindowGroupChainInfo& aInfo )
+:
+iResources(aResources),
+iWindowGroupInfo(aInfo)
+    {
+    //No implementation required
+    }
+
+//------------------------------------------------------------------------------
+const CApaWindowGroupName& CTsRunningApp::WindowGroupNameL() const
+    {
+    if( 0 == iWindowGroupName )
+        {
+        iWindowGroupName = CApaWindowGroupName::NewL( iResources.WsSession(), 
+                                                      WindowGroupId() );
+        }
+    return *iWindowGroupName;
+    }
+
+//------------------------------------------------------------------------------
+TUid CTsRunningApp::UidL()const
+    {
+    return WindowGroupNameL().AppUid();
+    }
+
+//------------------------------------------------------------------------------
+const TDesC& CTsRunningApp::CaptionL() const
+    {
+    iCaption.Set(WindowGroupNameL().Caption());
+    return iCaption;
+    
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsRunningApp::WindowGroupId() const
+    {
+    return iWindowGroupInfo.iId;
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsRunningApp::ParentWindowGroupId() const
+    {
+    return iWindowGroupInfo.iParentId;
+    }
+
+//------------------------------------------------------------------------------
+TBool CTsRunningApp::IsEmbeded() const
+    {
+    return 0 < iWindowGroupInfo.iParentId;
+    }
+
+//------------------------------------------------------------------------------
+TBool CTsRunningApp::IsHiddenL() const
+    {
+    return WindowGroupNameL().Hidden();
+    }
+
+//------------------------------------------------------------------------------
+TBool CTsRunningApp::IsSystemL() const
+    {
+    return  WindowGroupNameL().IsSystem();
+    }
--- a/taskswitcher/server/src/tsrunningappmodel.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/tsrunningappmodel.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -15,30 +15,34 @@
 *
 */
 
-#include "tsrunningappmodel.h"
-
 #include <AknDef.h>
 #include <apgwgnam.h>
 #include <apgtask.h>
 
+#include "tsrunningappmodel.h"
+
+#include "tsrunningappstorage.h"
+
 #include "tsdatalist.h"
 #include "tsmodelobserver.h"
 #include "tsscreenshotprovider.h"
 
 CTsRunningAppModel *CTsRunningAppModel::NewL( MTsResourceManager& aResources, 
-                                              MTsWindowGroupsMonitor& aMonitor )
+                                              MTsWindowGroupsMonitor& aMonitor,
+                                              TsEnv& aEnv )
     {
-    CTsRunningAppModel *self = CTsRunningAppModel::NewLC( aResources, aMonitor );
+    CTsRunningAppModel *self = CTsRunningAppModel::NewLC( aResources, aMonitor, aEnv );
     CleanupStack::Pop( self );
     return self;
     }
 
 CTsRunningAppModel *CTsRunningAppModel::NewLC( MTsResourceManager& aResources, 
-                                               MTsWindowGroupsMonitor& aMonitor )
+                                               MTsWindowGroupsMonitor& aMonitor,
+                                               TsEnv& aEnv )
     {
     CTsRunningAppModel *self = new (ELeave) CTsRunningAppModel( aResources );
     CleanupStack::PushL( self );
-    self->ConstructL( aResources, aMonitor );
+    self->ConstructL( aResources, aMonitor, aEnv );
     return self;
     }
 
@@ -55,15 +59,19 @@
     }
 
 void CTsRunningAppModel::ConstructL( MTsResourceManager& aResources, 
-                                     MTsWindowGroupsMonitor& aMonitor )
+                                     MTsWindowGroupsMonitor& aMonitor,
+                                     TsEnv& aEnv)
     {
-    iDataList = CTsDataList::NewL( aResources, aMonitor, *this );
-    iScreenshotProvider = CTsScreenshotProvider::NewL( *iDataList );
-
+    iDataList = CTsDataList::NewL( aResources, aMonitor, *this, aEnv );
+    iScreenshotProvider = CTsScreenshotProvider::NewL(*iDataList, aMonitor );
+    
     RArray<RWsSession::TWindowGroupChainInfo> wgList;
     CleanupClosePushL( wgList );
     User::LeaveIfError( aResources.WsSession().WindowGroupList( 0, &wgList ) );
-    iDataList->HandleWindowGroupChanged( aResources, wgList.Array() );
+    CTsRunningAppStorage* storage = CTsRunningAppStorage::NewLC();
+    storage->HandleWindowGroupChanged(aResources, wgList.Array());
+    iDataList->HandleWindowGroupChanged( aResources, *storage );
+    CleanupStack::PopAndDestroy(storage);
     CleanupStack::PopAndDestroy( &wgList );
     }
 
@@ -148,6 +156,11 @@
     return iDataList->Data()[aOffset]->CloseableApp();
     }
 
+TBool CTsRunningAppModel::IsMandatoryL( TInt /*aOffset*/ ) const
+    {
+    return ETrue;
+    }
+
 TBool CTsRunningAppModel::CloseL( TTsModelItemKey aKey ) const
     {
     TApaTask task( iResources.WsSession() );
--- a/taskswitcher/server/src/tsrunningappserver.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/tsrunningappserver.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -19,7 +19,7 @@
 #include "tsrunningappserver.h"
 #include "tsrunningappsession.h"
 #include "tsbacksteppingactivation.h"
-
+#include "tswindowgroupsmonitor.h"
 #include "tsmodel.h"
 #include "tsstorage.h"
 #include "tsservicesprovider.h"
@@ -78,10 +78,10 @@
     RPointerArray<MTsModel> providers;
     CleanupClosePushL(providers);
     
-    iAppsModel = CTsRunningAppModel::NewL(*iResources, *iMonitor);
+    iAppsModel = CTsRunningAppModel::NewL(*iResources, *iMonitor, iEnv);
     providers.AppendL(iAppsModel);
     
-    CTsServiceProviderConfig *cfg = CTsServiceProviderConfig::NewLC();
+    CTsServiceProviderConfig *cfg = CTsServiceProviderConfig::NewLC(&iEnv);
     iServiceProvider = CTsServiceProvider::NewL(*cfg);
     CleanupStack::PopAndDestroy(cfg);
     addProviders(providers, *iServiceProvider);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/src/tsrunningappstorage.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description :
+ *
+ */
+#include "tsrunningappstorage.h"
+#include "tsrunningapp.h"
+//------------------------------------------------------------------------------
+CTsRunningAppStorage* CTsRunningAppStorage::NewLC()
+    {
+    CTsRunningAppStorage* self = new(ELeave) CTsRunningAppStorage();
+    CleanupStack::PushL( self );
+    return self;
+    }
+
+//------------------------------------------------------------------------------
+CTsRunningAppStorage::CTsRunningAppStorage()
+    {
+    //No implementation required
+    }
+
+//------------------------------------------------------------------------------
+CTsRunningAppStorage::~CTsRunningAppStorage()
+{
+    iRunningApps.ResetAndDestroy();
+}
+
+//------------------------------------------------------------------------------
+void CTsRunningAppStorage::HandleWindowGroupChanged( 
+               MTsResourceManager &aResources, 
+               const TArray<RWsSession::TWindowGroupChainInfo> & aWindowGroups )
+    {
+    CTsRunningApp* app(0);
+    iRunningApps.ResetAndDestroy();
+    iBlockedWindowGroups.Reset();
+    TRAP_IGNORE(
+    for( TInt iter(0); iter < aWindowGroups.Count(); ++iter )
+        {
+        app = CTsRunningApp::NewLC(aResources, aWindowGroups[iter]);
+        iRunningApps.AppendL(app);
+        CleanupStack::Pop(app);
+        }
+    )//TRAP_IGNORE
+    }
+
+//------------------------------------------------------------------------------
+void CTsRunningAppStorage::HandleWindowGroupChanged( 
+           MTsResourceManager &aResources, 
+           const TArray<RWsSession::TWindowGroupChainInfo>& aFull,
+           const TArray<RWsSession::TWindowGroupChainInfo>& aFiltered)
+    {
+    TInt filtered(0);
+    HandleWindowGroupChanged(aResources, aFiltered);
+    for(TInt full(0); full < aFull.Count(); ++full)
+        {
+        for(filtered = 0; filtered < aFiltered.Count(); ++filtered)
+            {
+            if(aFull[full].iId == aFiltered[ filtered].iId)
+                {
+                break;
+                }
+            }
+        if(aFiltered.Count() == filtered)
+            {
+            iBlockedWindowGroups.Append(aFull[full].iId);
+            }
+        }
+    }
+//------------------------------------------------------------------------------
+const MTsRunningApplication& CTsRunningAppStorage::operator[] (TInt aOffset) const
+    {
+    return *iRunningApps[aOffset];
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsRunningAppStorage::Count() const
+    {
+    return iRunningApps.Count();
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsRunningAppStorage::ParentIndex( const MTsRunningApplication& aRunningApp ) const
+    {
+    const TInt applicationIndex(Find(aRunningApp.WindowGroupId()));
+    return KErrNotFound == applicationIndex ? 
+           applicationIndex : ParentIndex(applicationIndex);
+    }
+
+//------------------------------------------------------------------------------
+TArray<TInt> CTsRunningAppStorage::BlockedWindowGroups() const
+    {
+    return iBlockedWindowGroups.Array();
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsRunningAppStorage::ParentIndex( TInt aOffset ) const
+    {
+    TInt retval(aOffset);
+    if(iRunningApps[aOffset]->IsEmbeded())
+        {
+        const TInt parentIndex( Find(iRunningApps[aOffset]->ParentWindowGroupId(), 
+                                aOffset + 1) );
+        if( KErrNotFound != parentIndex )
+            {
+            retval = ParentIndex( parentIndex );
+            }
+        }
+    return retval;
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsRunningAppStorage::Find(TInt aWindowGroupId, TInt aOffset) const
+    {
+    TInt retVal(KErrNotFound);
+    for( TInt iter(aOffset); 
+         KErrNotFound == retVal && iter < iRunningApps.Count(); 
+         ++iter )
+        {
+        if( iRunningApps[iter]->WindowGroupId() == aWindowGroupId )
+            {
+            retVal = iter;
+            }
+        }
+    return retVal;
+    }
+
+
--- a/taskswitcher/server/src/tsscreenshotprovider.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/tsscreenshotprovider.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -19,46 +19,104 @@
 #include "tsscreenshotprovider.h"
 #include "tstaskmonitorglobals.h"
 #include "tsscreenshotmsg.h"
+#include "tsidlist.h"
 
 
 const TUid KPluginUID = {0x200267AE};
+const TInt KSkippedApp [] = {0x20022F35 /* <-- hsapplication */};
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-CTsScreenshotProvider* CTsScreenshotProvider::NewL( MTsDataStorage& aStorage )
+CTsScreenshotProvider* CTsScreenshotProvider::NewL( MTsDataStorage& aStorage,
+                                                    MTsWindowGroupsMonitor& aMonitor)
     {
-    CTsScreenshotProvider *self = new (ELeave)CTsScreenshotProvider( aStorage );
+    CTsScreenshotProvider *self = new (ELeave)CTsScreenshotProvider(aStorage, aMonitor);
     CleanupStack::PushL( self );
     self->BaseConstructL(KPluginUID, KNullDesC8);
+    aMonitor.SubscribeL(*self);
     CleanupStack::Pop( self );
     return self;
     }
 
 // -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CTsScreenshotProvider::CTsScreenshotProvider( MTsDataStorage& aStorage )
+CTsScreenshotProvider::CTsScreenshotProvider( MTsDataStorage& aStorage,
+                                              MTsWindowGroupsMonitor& aMonitor)
 :
-    iStorage(aStorage)
+    iStorage(aStorage),
+    iMonitor(aMonitor)
     {
     //No implementation required
     }
 
+CTsScreenshotProvider::~CTsScreenshotProvider()
+    {
+    iMonitor.Cancel(*this);
+    }
+
 // -----------------------------------------------------------------------------
-//
+void CTsScreenshotProvider::HandleWindowGroupChanged(
+                                  MTsResourceManager &aResources, 
+                                  const MTsRunningApplicationStorage& aStorage)
+    {
+    TRAP_IGNORE(HandleWindowGroupChangedL(aResources, aStorage);)
+    }
+
 // -----------------------------------------------------------------------------
-//
+/**
+ * Retrieve list of applications that shouldn't be displayed in taskswitcher 
+ * and send it to module responsible for screenshot taking.  
+ * Interface implementation.
+ * @see MTsWindowGroupsObserver::HandleWindowGroupChangedL
+ */
+void CTsScreenshotProvider::HandleWindowGroupChangedL(
+                                   MTsResourceManager& /*aResources*/, 
+                                   const MTsRunningApplicationStorage& aStorage)
+    {
+    const TInt count(sizeof( KSkippedApp ) / sizeof(TInt));
+    CTsIdList* list = CTsIdList::NewLC();
+    list->AppendL(aStorage.BlockedWindowGroups());//filtered servers
+    for( TInt iter(0); iter < aStorage.Count(); ++iter )
+        {
+        if(aStorage[iter].IsHiddenL())
+            {
+            list->AppendL(aStorage[iter].WindowGroupId());
+            }
+        else
+            {
+            for(TInt blocked(0); blocked < count; ++blocked)
+                {
+                if(aStorage[iter].UidL().iUid == KSkippedApp[blocked])
+                    {
+                    list->AppendL(aStorage[iter].WindowGroupId());
+                    }
+                }
+            }
+        }
+    
+    RBuf8 message;
+    CleanupClosePushL(message);
+    message.CreateL(list->Size() + sizeof(TInt));
+    
+    RDesWriteStream stream;
+    CleanupClosePushL(stream);
+    stream.Open(message);
+    stream.WriteInt32L(IgnoreWindowGroups);
+    stream << (*list);
+    CleanupStack::PopAndDestroy(&stream);
+    
+    SendMessage(message);
+    CleanupStack::PopAndDestroy(&message);
+    CleanupStack::PopAndDestroy(list);
+    }
+
+// -----------------------------------------------------------------------------
 void CTsScreenshotProvider::HandleMessage( const TDesC8& aMsg )
     {
     TRAP_IGNORE( HandleMessageL( aMsg ) );
     }
 
 // -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
 void CTsScreenshotProvider::HandleMessageL( const TDesC8& aMsg )
     {
     RDesReadStream msgStream( aMsg );
@@ -78,7 +136,7 @@
             //forward stream to storage
             iStorage.HandleDataL(msgStream.ReadInt32L(), msgStream);
             
-            CleanupStack::PopAndDestroy(screenshotMsg);            
+            CleanupStack::PopAndDestroy(screenshotMsg);
             break;
             }
             
@@ -93,9 +151,8 @@
             break;
             }
             
-        default: User::Leave(KErrNotSupported);        
+        default: User::Leave(KErrNotSupported);
         }
-
     CleanupStack::PopAndDestroy(&msgStream);
     }
 
--- a/taskswitcher/server/src/tsservice.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/tsservice.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -144,6 +144,12 @@
     }
 
 // -----------------------------------------------------------------------------
+TBool CTsService::IsMandatoryL( TInt aOffset ) const
+    {
+    return IntValueL(aOffset, "TaskIsMandatory" );
+    }
+
+// -----------------------------------------------------------------------------
 TBool CTsService::CloseL( TTsModelItemKey aKey ) const
     {
     bool result(false);
--- a/taskswitcher/server/src/tsservicesproviderconfig.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/tsservicesproviderconfig.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -20,16 +20,18 @@
 
 const char ServicesInterface [] = "com.nokia.qt.taskswitcher.dataprovider";
 // -----------------------------------------------------------------------------
-CTsServiceProviderConfig* CTsServiceProviderConfig::NewLC()
+CTsServiceProviderConfig* CTsServiceProviderConfig::NewLC(QObject* aEnv)
     {
-    CTsServiceProviderConfig *self = new (ELeave)CTsServiceProviderConfig();
+    CTsServiceProviderConfig *self = new (ELeave)CTsServiceProviderConfig(aEnv);
     CleanupStack::PushL(self);
     self->ConstructL();
     return self;
     }
 
 // -----------------------------------------------------------------------------
-CTsServiceProviderConfig::CTsServiceProviderConfig()
+CTsServiceProviderConfig::CTsServiceProviderConfig(QObject* aEnv)
+:
+        iEnv(aEnv)
 {
     //No implementation required
 }
@@ -81,5 +83,15 @@
     QTM_NAMESPACE::QServiceManager serviceManager;
     retVal = serviceManager.loadInterface(*service); )
     User::LeaveIfNull( retVal );
+    QObject::connect(retVal, 
+                     SIGNAL(createThumbnail(QPixmap,int,const void*)),
+                     iEnv,
+                     SLOT(createThumbnail(QPixmap,int,const void*)));
+    
+    QObject::connect(iEnv, 
+                     SIGNAL(thumbnailCreated(QPixmap, const void*)),
+                     retVal,
+                     SLOT(thumbnailCreated(QPixmap, const void*)));
+
     return retVal;
     }
--- a/taskswitcher/server/src/tsstorage.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/tsstorage.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -17,6 +17,8 @@
 #include <tstaskmonitorglobals.h>
 #include "tsstorage.h"
 #include "tsmodelitemkeymsg.h"
+
+const TInt KTsDataLimit(10);
 // -----------------------------------------------------------------------------
 /**
  * Two phase construction. Create and initialize storage instance.
@@ -199,6 +201,16 @@
 // -----------------------------------------------------------------------------
 /**
  * Interface implementation
+ * @see MTsModel::IsMandatoryL(TInt) const
+ */
+TBool CTsStorage::IsMandatoryL( TInt aOffset ) const
+    {
+    return iData[aOffset].IsMandatoryL();
+    }
+
+// -----------------------------------------------------------------------------
+/**
+ * Interface implementation
  * @see MTsModel::CloseL(TTsModelItemKey)
  */
 TBool CTsStorage::CloseL( TTsModelItemKey aKey ) const 
@@ -282,7 +294,8 @@
         for( TInt next(prev + 1); next < iData.Count(); ++next )
             {
             const TTsModelItem prevItem(iData[prev]), nextItem(iData[next]);
-            if( prevItem.TimestampL() < nextItem.TimestampL() )
+            if( ( !prevItem.IsMandatoryL() && nextItem.IsMandatoryL() ) ||
+                ( prevItem.TimestampL() < nextItem.TimestampL() && prevItem.IsMandatoryL() == nextItem.IsMandatoryL() ) )
                 {
                 iData.Remove(prev);
                 iData.InsertL(nextItem, prev);
@@ -292,4 +305,16 @@
                 }
             }
         }
+    TrimDataL();
     }
+
+// -----------------------------------------------------------------------------
+void CTsStorage::TrimDataL()
+    {
+    const TInt lastItemOffset(iData.Count() -1);
+    if(KTsDataLimit <= lastItemOffset && !iData[lastItemOffset].IsMandatoryL())
+        {
+        iData.Remove(lastItemOffset);
+        TrimDataL();
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/src/tswindowgroupsmonitor.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description :
+ *
+ */
+#include <apgwgnam.h>
+#include "tswindowgroupsobserver.h"
+#include "tswindowgroupsmonitor.h"
+#include "tsrunningappstorage.h"
+
+
+const int KOrdinalPositionNoZOrder(-1);
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CTsWindowGroupsMonitor* CTsWindowGroupsMonitor::NewL(MTsResourceManager &resources)
+{
+    CTsWindowGroupsMonitor* self = new (ELeave) CTsWindowGroupsMonitor(resources);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CTsWindowGroupsMonitor::CTsWindowGroupsMonitor(MTsResourceManager &resources)
+:
+    CActive(EPriorityStandard),
+    iResources(resources)
+{
+    CActiveScheduler::Add(this);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CTsWindowGroupsMonitor::ConstructL()
+{
+    
+    // Initial window group
+    iWg = RWindowGroup (iResources.WsSession());
+    User::LeaveIfError (iWg.Construct ((TUint32)&iWg, EFalse));
+    iWg.SetOrdinalPosition (KOrdinalPositionNoZOrder);
+    iWg.EnableReceiptOfFocus (EFalse);
+    
+    // Hide window
+    CApaWindowGroupName* wn = CApaWindowGroupName::NewLC(iResources.WsSession());
+    wn->SetHidden (ETrue);
+    wn->SetWindowGroupName (iWg);
+    CleanupStack::PopAndDestroy (wn);
+    
+    // Window group change event
+    User::LeaveIfError (iWg.EnableGroupListChangeEvents());
+    Subscribe();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CTsWindowGroupsMonitor::~CTsWindowGroupsMonitor()
+{
+    CActive::Cancel();
+    iWg.Close();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CTsWindowGroupsMonitor::SubscribeL(MTsWindowGroupsObserver &observer)
+{
+    const TInt offset(iObservers.Find(&observer));
+    KErrNotFound == offset ? iObservers.InsertL(&observer, 0) : 
+                             User::Leave(KErrAlreadyExists);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CTsWindowGroupsMonitor::Cancel(MTsWindowGroupsObserver & observer)
+{
+    const TInt offset(iObservers.Find(&observer));
+    if (KErrNotFound != offset) {
+        iObservers.Remove(offset);
+    }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CTsWindowGroupsMonitor::RunL()
+{
+    User::LeaveIfError(iStatus.Int());
+    ProvideEventL();
+    Subscribe();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CTsWindowGroupsMonitor::DoCancel()
+{
+    if (IsActive()) {
+        iResources.WsSession().EventReadyCancel();
+    }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CTsWindowGroupsMonitor::RunError(TInt error)
+{
+    if (!IsActive() && KErrCancel != error) {
+        Subscribe();
+    }
+    return KErrNone;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CTsWindowGroupsMonitor::Subscribe()
+{
+    iResources.WsSession().EventReady( &iStatus );
+    SetActive();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CTsWindowGroupsMonitor::ProvideEventL()
+{
+    TWsEvent wsEvent;
+    iResources.WsSession().GetEvent(wsEvent);
+    if( EEventWindowGroupListChanged == wsEvent.Type() )
+        {
+        
+        CTsRunningAppStorage *storage = CTsRunningAppStorage::NewLC();
+        
+        RArray<RWsSession::TWindowGroupChainInfo> filteredWgInfo, fullWgInfo;
+        CleanupClosePushL(filteredWgInfo);
+        CleanupClosePushL(fullWgInfo);
+        User::LeaveIfError(iResources.WsSession().WindowGroupList(0, &filteredWgInfo));
+        User::LeaveIfError(iResources.WsSession().WindowGroupList(&fullWgInfo));
+        storage->HandleWindowGroupChanged(iResources, 
+                                          fullWgInfo.Array(), 
+                                          filteredWgInfo.Array());
+        CleanupStack::PopAndDestroy( &fullWgInfo );
+        CleanupStack::PopAndDestroy( &filteredWgInfo );
+                
+        for( TInt iter(0); iter < iObservers.Count(); ++iter ) 
+            {
+            iObservers[iter]->HandleWindowGroupChanged( iResources, *storage );
+            }
+        CleanupStack::PopAndDestroy( storage );
+        
+        }
+}
--- a/taskswitcher/sis/stubs/taskmonitor_stub.pkg	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/sis/stubs/taskmonitor_stub.pkg	Mon Oct 04 00:38:31 2010 +0300
@@ -36,4 +36,8 @@
 "" - "Z:\sys\bin\hsrunningappmonitor.exe"
 "" - "Z:\sys\bin\tsscreenshotplugin.dll"
 "" - "Z:\resource\plugins\tsscreenshotplugin.rsc"
-"" - "Z:\sys\bin\tsbackstepping.dll"
\ No newline at end of file
+"" - "Z:\sys\bin\tsbackstepping.dll"
+
+"" - "Z:\sys\bin\activitytsplugin.dll"
+"" - "Z:\resource\qt\plugins\activitytsplugin.qtplugin"
+"" - "Z:\resource\taskswitcher\activitytsplugin.xml"
Binary file taskswitcher/sis/stubs/taskmonitor_stub.sis has changed
--- a/taskswitcher/sis/taskmonitor.pkg	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/sis/taskmonitor.pkg	Mon Oct 04 00:38:31 2010 +0300
@@ -32,3 +32,7 @@
 "/epoc32/release/armv5/urel/tsscreenshotplugin.dll"-"!:\sys\bin\tsscreenshotplugin.dll"
 "/epoc32/data/z/resource/plugins/tsscreenshotplugin.rsc"-"!:\resource\plugins\tsscreenshotplugin.rsc"
 "/epoc32/release/armv5/urel/tsbackstepping.dll"-"!:\sys\bin\tsbackstepping.dll"
+
+"/epoc32/release/armv5/urel/activitytsplugin.dll" - "!:\sys\bin\activitytsplugin.dll"
+"/epoc32/data/z/resource/qt/plugins/activitytsplugin.qtplugin" - "!:\resource\qt\plugins\activitytsplugin.qtplugin"
+"/epoc32/data/z/resource/taskswitcher/activitytsplugin.xml" - "!:\resource\taskswitcher\activitytsplugin.xml"
--- a/taskswitcher/taskswitcher.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/taskswitcher.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -21,7 +21,8 @@
 symbian {
     SUBDIRS += backstepping \
                server \
-               screenshotplugin
+               screenshotplugin \
+               activitytsplugin \
                
     BLD_INF_RULES.prj_exports +=    "inc/tstaskmonitorglobals.h |../inc/tstaskmonitorglobals.h"
     
--- a/taskswitcher/utils/inc/tsentry.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/utils/inc/tsentry.h	Mon Oct 04 00:38:31 2010 +0300
@@ -20,14 +20,18 @@
 
 #include <e32base.h>
 #include <e32cmn.h>
-#include <tsgraphicfilescalinghandler.h>
 
 #include "tsentrykey.h"
 #include "tstaskmonitorglobals.h"
+#include "tsthumbnailobserver.h"
 
 class CTsEntry;
 class CFbsBitmap;
+class QObject;
 class MTsDataObserver;
+class TsThumbnailProvider;
+
+
 
 typedef RPointerArray<CTsEntry> RTsFswArray;
 
@@ -35,11 +39,11 @@
  * An entry in the task list.
  */
 NONSHARABLE_CLASS( CTsEntry ) : public CBase,
-                                private MImageReadyCallBack
+                                private MTsThumbnailObserver
 {
 public:
-    static CTsEntry *NewL(const TTsEntryKey &key, MTsDataObserver &observer);
-    static CTsEntry *NewLC(const TTsEntryKey &key, MTsDataObserver &observer);
+    static CTsEntry *NewL(const TTsEntryKey &key, MTsDataObserver &observer, QObject* obj);
+    static CTsEntry *NewLC(const TTsEntryKey &key, MTsDataObserver &observer, QObject* obj);
     ~CTsEntry();
 
 public:
@@ -64,10 +68,10 @@
     void RefreshUpdateTimestamp();
 
 private:
-    CTsEntry(const TTsEntryKey &aKey, MTsDataObserver &observer);    
-    
-public: // from MImageReadyCallBack
-    void ImageReadyCallBack(TInt error, const CFbsBitmap *bitmap);
+    CTsEntry(const TTsEntryKey &aKey, MTsDataObserver &observer);
+    void ConstructL(QObject* object);
+public:
+    void thumbnailCreated(const CFbsBitmap& aThumbnail);
 
 private:
     TUid mAppUid;
@@ -80,13 +84,10 @@
     UpdatePriority mPriority;
     TTime mTimestamp;
     TTime mUpdateTimestamp;
-    
-private:     
-    CTsGraphicFileScalingHandler *mImgTool;
+    TsThumbnailProvider* iProvider;
+private:
+    MTsDataObserver &mObserver;
 
-private:    
-    MTsDataObserver &mObserver;
-    
 };
 
 #endif
--- a/taskswitcher/utils/inc/tsentrykeygenerator.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/utils/inc/tsentrykeygenerator.h	Mon Oct 04 00:38:31 2010 +0300
@@ -24,13 +24,18 @@
 #include <w32std.h>
 
 #include "tsentrykey.h"
+#include "tswindowgroupsobserver.h"
 
 
 class TsEntryKeyGeneraror
 {
 public:
-    static TInt Generate(TTsEntryKey& returnKey, TInt windowGroupId, 
-                                 const TArray<RWsSession::TWindowGroupChainInfo>& groupChain);
+    static TInt Generate( TTsEntryKey& aReturnKey, 
+                          TInt aWindowGroupId, 
+                          const MTsRunningApplicationStorage& aStorage );
+    static TInt Generate(TTsEntryKey& returnKey, 
+                TInt windowGroupId, 
+                const TArray<RWsSession::TWindowGroupChainInfo>& groupChain);
 };
 
 #endif //TSENTRYKEYGENERATOR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/utils/inc/tsidlist.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef TSIDLIST_H
+#define TSIDLIST_H
+#include <e32base.h>
+#include <s32strm.h>
+NONSHARABLE_CLASS(CTsIdList) : public CBase
+    {
+public:
+    static CTsIdList* NewLC();
+    static CTsIdList* NewL();
+    static CTsIdList* NewLC(RReadStream& aStream);
+    ~CTsIdList();
+    TBool IsPresent( TInt aId ) const;
+    void AppendL(const TInt aArray[], TInt aSize );
+    void AppendL(const TArray<TInt>& aArray);
+    void AppendL(TInt aId);
+    void Reset();
+    TInt Size() const;
+    void ExternalizeL(RWriteStream &aStream) const;
+    void InternalizeL(RReadStream &aStream);
+
+private:
+    CTsIdList();
+    
+
+private:
+    RArray<TInt> iIds;
+
+    };
+#endif // TSIDLIST_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/utils/inc/tsthumbnailobserver.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Task list entry
+*
+*/
+
+#ifndef TSTHUMBNAILOBSERVER_H
+#define TSTHUMBNAILOBSERVER_H
+
+class CFbsBitmap;
+class MTsThumbnailObserver
+{
+public:
+    virtual void thumbnailCreated(const CFbsBitmap& aThumbnail) =0;
+    
+};
+#endif //TSTHUMBNAILOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/utils/inc/tsthumbnailprovider.h	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Task list entry
+*
+*/
+
+#ifndef TSTHUMBNAILPROVIDER_H
+#define TSTHUMBNAILPROVIDER_H
+#include <QObject>
+#include <QPixmap>
+#include "tsthumbnailobserver.h"
+
+class TsThumbnailProvider: public QObject
+{
+    Q_OBJECT
+
+public:
+    TsThumbnailProvider(MTsThumbnailObserver& observer, QObject* obj);
+    void createThumbnail(CFbsBitmap& source, 
+                         int angle =0);
+signals:
+    void createThumbnail(QPixmap source, 
+                         int angle, 
+                         const void* userData);
+public slots:
+    void thumbnailCreated(const QPixmap& thumbnail,
+                          const void *userData);
+private:
+    MTsThumbnailObserver& mObserver;
+
+};
+
+#endif //TSTHUMBNAILPROVIDER_H
--- a/taskswitcher/utils/inc/tswindowgroupsobserver.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/utils/inc/tswindowgroupsobserver.h	Mon Oct 04 00:38:31 2010 +0300
@@ -19,6 +19,30 @@
 
 #include "tsresourcemanager.h"
 
+class MTsRunningApplication
+    {
+public:
+    virtual TUid UidL()const =0;
+    virtual const TDesC& CaptionL() const =0;
+    virtual TBool IsHiddenL() const =0;
+    virtual TBool IsSystemL() const =0;
+    virtual TInt WindowGroupId() const =0;
+    virtual TInt ParentWindowGroupId() const =0;
+    virtual TBool IsEmbeded() const =0;
+    
+
+    };
+
+class MTsRunningApplicationStorage
+    {
+public:
+    virtual const MTsRunningApplication& operator[] (TInt aOffset) const=0;
+    virtual TInt Count() const =0;
+    virtual TInt ParentIndex( const MTsRunningApplication& aRaunningApp ) const =0;
+    virtual TArray<TInt> BlockedWindowGroups() const =0;
+
+    };
+
 /**
  * Interface declare mathods to notify about window server events
  */
@@ -26,12 +50,12 @@
 {
 public:
     /**
-     * Method notidy about window group changes.
-     * @param rsc - resource manager
-     * @param wgs - list of window groups associated with running applications
+     * Method notify about window group changes.
+     * @param aResources - resource manager
+     * @param aStorage - list of running applications
      */
-    virtual void HandleWindowGroupChanged(MTsResourceManager &rsc, 
-                                          const TArray<RWsSession::TWindowGroupChainInfo> & wgs) =0;
+    virtual void HandleWindowGroupChanged(MTsResourceManager &aResources, 
+                                          const MTsRunningApplicationStorage& aStorage) =0;
 };
 
 /**
@@ -84,90 +108,4 @@
     MTsWindowGroupsMonitor & mMonitor;
 };
 
-/**
- * Window server monitor implementation.
- */
-class CTsWindowGroupsMonitor: public CActive, 
-                              public MTsWindowGroupsMonitor
-                              
-{
-public:
-    /**
-     * Two phase constructor
-     */
-    static CTsWindowGroupsMonitor* NewL(MTsResourceManager &);
-    
-    /**
-     * Destructor
-     */
-    ~CTsWindowGroupsMonitor();
-    
-    /**
-     * @see MTsWindowGroupsMonitor::SubscribeL
-     */
-    void SubscribeL(MTsWindowGroupsObserver &);
-    
-    /**
-     * @see MTsWindowGroupsMonitor::Cancel
-     */
-    void Cancel(MTsWindowGroupsObserver &);
-
-protected:
-    /**
-     * @see CActive::RunL
-     */
-    void RunL();
-    
-    /**
-     * @see CActive::DoCancel
-     */
-    void DoCancel();
-    
-    /**
-     * @see CActive::RunError
-     */
-    TInt RunError(TInt error);
-
-private:
-    /**
-     * First phase constructor
-     */
-    CTsWindowGroupsMonitor(MTsResourceManager &);
-    
-    /**
-     * Second phase constructor
-     */
-    void ConstructL();
-    
-    /**
-     * Function subscribe for event to window server and activate object
-     */
-    void Subscribe();
-    
-    /**
-     * Function provide window server event to observers
-     */
-    void ProvideEventL();
-    
-    /**
-     * Function provide window server event to observer
-     */
-    void ProvideEventL(TWsEvent, MTsWindowGroupsObserver &);
-
-private:
-    /**
-     * Registry of subscribed observers
-     */
-    RPointerArray<MTsWindowGroupsObserver> mObservers;
-    
-    /**
-     * Resources manager
-     */
-    MTsResourceManager &mResources;
-    
-    /**
-     * Monitor window group
-     */
-    RWindowGroup mWg;
-};
 #endif //TSWINDOWGROUPSOBSERVER_H
--- a/taskswitcher/utils/src/tsentry.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/utils/src/tsentry.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -16,18 +16,21 @@
  */
 
 #define __E32SVR_H__
+
 #include <s32strm.h>
 #include <fbs.h>
+
 #include "tsentry.h"
 #include "tsdataobserver.h"
+#include "tsthumbnailprovider.h"
 
 // --------------------------------------------------------------------------
 // CTsFswEntry::NewL
 // --------------------------------------------------------------------------
 //
-CTsEntry* CTsEntry::NewL(const TTsEntryKey &key, MTsDataObserver &observer)
+CTsEntry* CTsEntry::NewL(const TTsEntryKey &key, MTsDataObserver &observer, QObject* obj)
 {
-    CTsEntry* self = NewLC(key, observer);
+    CTsEntry* self = NewLC(key, observer, obj);
     CleanupStack::Pop(self);
     return self;
 }
@@ -36,10 +39,11 @@
 // CTsFswEntry::NewLC
 // --------------------------------------------------------------------------
 //
-CTsEntry* CTsEntry::NewLC(const TTsEntryKey &key, MTsDataObserver &observer)
+CTsEntry* CTsEntry::NewLC(const TTsEntryKey &key, MTsDataObserver &observer, QObject* obj)
 {
     CTsEntry* self = new (ELeave) CTsEntry(key, observer);
     CleanupStack::PushL(self);
+    self->ConstructL(obj);
     return self;
 }
 
@@ -52,7 +56,7 @@
     delete mAppName;
     delete mAppIconBitmap;
     delete mScreenshot;
-    delete mImgTool;
+    delete iProvider;
 }
 
 // --------------------------------------------------------------------------
@@ -70,6 +74,15 @@
 }
 
 // --------------------------------------------------------------------------
+void CTsEntry::ConstructL(QObject* object)
+{
+    QT_TRYCATCH_LEAVING(
+       iProvider = new TsThumbnailProvider(*this, object);
+    )
+    
+}
+
+// --------------------------------------------------------------------------
 // CTsFswEntry::SetAppUid
 // --------------------------------------------------------------------------
 //
@@ -222,11 +235,7 @@
     mScreenshot = bitmap;
     RefreshUpdateTimestamp();
 
-    delete mImgTool;
-    mImgTool = 0;
-
-    mImgTool = CTsGraphicFileScalingHandler::NewL(*this, *mScreenshot, TSize(128, 128),
-    CTsGraphicFileScalingHandler::EKeepAspectRatioByExpanding, angle);
+    iProvider->createThumbnail( *mScreenshot, angle);
 }
 
 // --------------------------------------------------------------------------
@@ -256,17 +265,15 @@
 }
 
 // --------------------------------------------------------------------------
-// CTsFswEntry::Priority
+// CTsFswEntry::thumbnailCreated
 // --------------------------------------------------------------------------
 //
-void CTsEntry::ImageReadyCallBack(TInt error, const CFbsBitmap *bitmap)
+void CTsEntry::thumbnailCreated(const CFbsBitmap& aThumbnail)
 {
-    if (KErrNone == error && 0 != bitmap) {
-        mScreenshot->Reset();
-        mScreenshot->Duplicate(bitmap->Handle());
-        RefreshUpdateTimestamp();
-        mObserver.DataChanged();
-    }
+    mScreenshot->Reset();
+    mScreenshot->Duplicate(aThumbnail.Handle());
+    RefreshUpdateTimestamp();
+    mObserver.DataChanged();
 }
 
 // end of file
--- a/taskswitcher/utils/src/tsentrykeygenerator.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/utils/src/tsentrykeygenerator.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -20,6 +20,32 @@
 //
 // -----------------------------------------------------------------------------
 //
+TInt TsEntryKeyGeneraror::Generate( TTsEntryKey& aReturnKey, 
+                                    TInt aWindowGroupId, 
+                                    const MTsRunningApplicationStorage& aStorage)
+{
+    for (TInt iter(0); iter < aStorage.Count(); ++iter) {
+        if (aStorage[iter].WindowGroupId() == aWindowGroupId) {
+            aReturnKey = TTsEntryKey( aWindowGroupId );
+            if (aStorage[iter].WindowGroupId() == aStorage[iter].ParentWindowGroupId()) 
+                {
+                return KErrBadHandle;
+                }
+            else if ( aStorage[iter].IsEmbeded() ) 
+                {
+                return TsEntryKeyGeneraror::Generate(aReturnKey, aStorage[iter].ParentWindowGroupId(), aStorage);
+                
+                }
+            else 
+                {
+                return KErrNone;
+                }
+        }
+    }
+    return KErrNotFound;
+}
+
+// -----------------------------------------------------------------------------
 TInt TsEntryKeyGeneraror::Generate(TTsEntryKey& returnKey, TInt windowGroupId, 
     const TArray<RWsSession::TWindowGroupChainInfo>& groupChain)
 {
@@ -39,4 +65,3 @@
     }
     return KErrNotFound;
 }
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/utils/src/tsidlist.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,120 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#include "tsidlist.h"
+
+//------------------------------------------------------------------------------
+CTsIdList* CTsIdList::NewLC()
+    {
+    CTsIdList* self = new(ELeave)CTsIdList();
+    CleanupStack::PushL( self );
+    return self;
+    }
+
+//------------------------------------------------------------------------------
+CTsIdList* CTsIdList::NewL()
+    {
+    CTsIdList* self = CTsIdList::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+//------------------------------------------------------------------------------
+CTsIdList* CTsIdList::NewLC(RReadStream& aStream)
+    {
+    CTsIdList* self = CTsIdList::NewLC();
+    aStream >> (*self);
+    return self;
+    }
+
+//------------------------------------------------------------------------------
+CTsIdList::CTsIdList()
+    {
+    //No implementation required
+    }
+
+//------------------------------------------------------------------------------
+CTsIdList::~CTsIdList()
+    {
+    iIds.Reset();
+    }
+
+//------------------------------------------------------------------------------
+TBool CTsIdList::IsPresent( TInt aId ) const
+    {
+    return KErrNotFound != iIds.Find(aId);
+    }
+
+//------------------------------------------------------------------------------
+void CTsIdList::AppendL(const TInt aArray[], TInt aSize )
+    {
+    for( TInt iter(0); iter < aSize; ++iter )
+        {
+        AppendL( aArray[iter] );
+        }
+    }
+
+//------------------------------------------------------------------------------
+void CTsIdList::AppendL(const TArray<TInt>& aArray)
+    {
+    for( TInt iter(0); iter < aArray.Count(); ++iter )
+        {
+        AppendL( aArray[iter] );
+        }
+    }
+
+//------------------------------------------------------------------------------
+void CTsIdList::AppendL(TInt aId)
+    {
+    if( !IsPresent( aId ) )
+        {
+        iIds.AppendL( aId );
+        }
+    }
+
+//------------------------------------------------------------------------------
+void CTsIdList::Reset()
+    {
+    iIds.Reset();
+    }
+
+//------------------------------------------------------------------------------
+TInt CTsIdList::Size() const
+    {
+    return ( iIds.Count() + 1 ) * sizeof( TInt );
+    }
+
+//------------------------------------------------------------------------------
+void CTsIdList::ExternalizeL(RWriteStream &aStream) const
+    {
+    aStream.WriteInt32L(iIds.Count());
+    for( TInt iter(0); iter < iIds.Count(); ++iter )
+        {
+        aStream.WriteInt32L(iIds[iter]);
+        }
+    }
+
+//------------------------------------------------------------------------------
+void CTsIdList::InternalizeL(RReadStream &aStream)
+    {
+    Reset();
+    const TInt count( aStream.ReadInt32L());
+    for( TInt iter(0); iter < count; ++iter )
+        {
+        AppendL( aStream.ReadInt32L() );
+        }
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/utils/src/tsthumbnailprovider.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Task list entry
+*
+*/
+#include <fbs.h>
+#include "tsthumbnailprovider.h"
+//------------------------------------------------------------------------------
+TsThumbnailProvider::TsThumbnailProvider(MTsThumbnailObserver& observer, QObject* obj)
+:
+    mObserver(observer)
+{
+    connect(this, 
+            SIGNAL(createThumbnail(QPixmap,int,const void*)),
+            obj,
+            SLOT(createThumbnail(QPixmap,int,const void*)));
+    
+    connect(obj, 
+            SIGNAL(thumbnailCreated(QPixmap, const void*)),
+            this,
+            SLOT(thumbnailCreated(QPixmap, const void*)));
+}
+//------------------------------------------------------------------------------
+void TsThumbnailProvider::createThumbnail(CFbsBitmap& source, int angle)
+{
+    emit createThumbnail(QPixmap::fromSymbianCFbsBitmap(&source), 
+                         angle, 
+                         this);
+}
+
+//------------------------------------------------------------------------------
+void TsThumbnailProvider::thumbnailCreated(const QPixmap& thumbnail,
+                                           const void *userData)
+{
+    if (this != userData) {
+        return;
+    }
+    CFbsBitmap *bitmap(thumbnail.toSymbianCFbsBitmap());
+    if(0 != bitmap) {
+        mObserver.thumbnailCreated(*bitmap);
+    }
+    delete bitmap;
+}
--- a/taskswitcher/utils/src/tswindowgroupsmonitor.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description :
- *
- */
-#include "tswindowgroupsobserver.h"
-#include <apgwgnam.h>
-
-const int KOrdinalPositionNoZOrder(-1);
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CTsWindowGroupsMonitor* CTsWindowGroupsMonitor::NewL(MTsResourceManager &resources)
-{
-    CTsWindowGroupsMonitor* self = new (ELeave) CTsWindowGroupsMonitor(resources);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CTsWindowGroupsMonitor::CTsWindowGroupsMonitor(MTsResourceManager &resources)
-:
-    CActive(EPriorityStandard),
-    mResources(resources)
-{
-    CActiveScheduler::Add(this);
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CTsWindowGroupsMonitor::ConstructL()
-{
-    
-    // Initial window group
-    mWg = RWindowGroup (mResources.WsSession());
-    User::LeaveIfError (mWg.Construct ((TUint32)&mWg, EFalse));
-    mWg.SetOrdinalPosition (KOrdinalPositionNoZOrder);
-    mWg.EnableReceiptOfFocus (EFalse);
-    
-    // Hide window
-    CApaWindowGroupName* wn = CApaWindowGroupName::NewLC(mResources.WsSession());
-    wn->SetHidden (ETrue);
-    wn->SetWindowGroupName (mWg);
-    CleanupStack::PopAndDestroy (wn);
-    
-    // Window group change event
-    User::LeaveIfError (mWg.EnableGroupListChangeEvents());
-    Subscribe();
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CTsWindowGroupsMonitor::~CTsWindowGroupsMonitor()
-{
-    CActive::Cancel();
-    mWg.Close();
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CTsWindowGroupsMonitor::SubscribeL(MTsWindowGroupsObserver &observer)
-{
-    const TInt offset(mObservers.Find(&observer));
-    KErrNotFound == offset ? mObservers.InsertL(&observer, 0) : 
-                             User::Leave(KErrAlreadyExists);
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CTsWindowGroupsMonitor::Cancel(MTsWindowGroupsObserver & observer)
-{
-    const TInt offset(mObservers.Find(&observer));
-    if (KErrNotFound != offset) {
-        mObservers.Remove(offset);
-    }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CTsWindowGroupsMonitor::RunL()
-{
-    User::LeaveIfError(iStatus.Int());
-    ProvideEventL();
-    Subscribe();
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CTsWindowGroupsMonitor::DoCancel()
-{
-    if (IsActive()) {
-        mResources.WsSession().EventReadyCancel();
-    }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CTsWindowGroupsMonitor::RunError(TInt error)
-{
-    if (!IsActive() && KErrCancel != error) {
-        Subscribe();
-    }
-    return KErrNone;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CTsWindowGroupsMonitor::Subscribe()
-{
-    mResources.WsSession().EventReady( &iStatus );
-    SetActive();
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CTsWindowGroupsMonitor::ProvideEventL()
-{
-    TWsEvent wsEvent;
-    mResources.WsSession().GetEvent(wsEvent);
-    for (TInt iter(0); iter < mObservers.Count(); ++iter) {
-        ProvideEventL(wsEvent, *mObservers[iter]);
-    }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CTsWindowGroupsMonitor::ProvideEventL(TWsEvent event, 
-                                          MTsWindowGroupsObserver &observer)
-{
-    RArray<RWsSession::TWindowGroupChainInfo> wgInfo;
-    CleanupClosePushL(wgInfo);
-    switch(event.Type()) {
-    case EEventWindowGroupListChanged:
-        User::LeaveIfError(mResources.WsSession().WindowGroupList(0, &wgInfo));
-        observer.HandleWindowGroupChanged(mResources, wgInfo.Array());
-        break;
-    }
-    CleanupStack::PopAndDestroy(&wgInfo);
-}
--- a/tsdevicedialog/rom.pri	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/rom.pri	Mon Oct 04 00:38:31 2010 +0300
@@ -15,7 +15,7 @@
 #
 
 BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
-BLD_INF_RULES.prj_exports += "rom/tsapplication_core.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(tsapplication_core.iby)"
-BLD_INF_RULES.prj_exports += "rom/tsapplication_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(tsapplication_resources.iby)"
+BLD_INF_RULES.prj_exports += "rom/tsdevicedialog_core.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(tsdevicedialog_core.iby)"
+BLD_INF_RULES.prj_exports += "rom/tsdevicedialog_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(tsdevicedialog_resources.iby)"
 BLD_INF_RULES.prj_exports += "./sis/stubs/taskswitcher_stub.sis  /epoc32/release/winscw/udeb/z/system/install/taskswitcher_stub.sis"
 BLD_INF_RULES.prj_exports += "./sis/stubs/taskswitcher_stub.sis  /epoc32/data/z/system/install/taskswitcher_stub.sis"
\ No newline at end of file
--- a/tsdevicedialog/rom/tsapplication_core.iby	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef __TSAPP_CORE_IBY__
-#define __TSAPP_CORE_IBY__
-
-file=ABI_DIR\BUILD_DIR\tsdevicedialogplugin.dll					       SHARED_LIB_DIR\tsdevicedialogplugin.dll
-data=\epoc32\data\z\resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin    resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin
-
-// stub sis
-data=ZSYSTEM/install/taskswitcher_stub.sis                  system/install/taskswitcher_stub.sis
-
-// qcrml
-data=\epoc32\data\z\resource\qt\crml\tsdevicedialog.qcrml   resource\qt\crml\tsdevicedialog.qcrml
-
-#endif //__TSAPP_CORE_IBY__
--- a/tsdevicedialog/rom/tsapplication_resources.iby	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef __TSAPP_LANGUAGE_IBY__
-#define __TSAPP_LANGUAGE_IBY__
-
-// -------- hsapplication
-data=DATAZ_\resource\qt\translations\taskswitcher.qm resource\qt\translations\taskswitcher.qm 
-
-#endif //__TSAPP_LANGUAGE_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsdevicedialog/rom/tsdevicedialog_core.iby	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef __TSDEVICEDIALOG_CORE_IBY__
+#define __TSDEVICEDIALOG_CORE_IBY__
+
+file=ABI_DIR\BUILD_DIR\tsdevicedialogplugin.dll					       SHARED_LIB_DIR\tsdevicedialogplugin.dll
+data=\epoc32\data\z\resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin    resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin
+
+// stub sis
+data=ZSYSTEM/install/taskswitcher_stub.sis                  system/install/taskswitcher_stub.sis
+
+// qcrml
+data=\epoc32\data\z\resource\qt\crml\tsdevicedialog.qcrml   resource\qt\crml\tsdevicedialog.qcrml
+
+#endif //__TSAPP_CORE_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsdevicedialog/rom/tsdevicedialog_resources.iby	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef __TSDEVICEDIALOG_LANGUAGE_IBY__
+#define __TSDEVICEDIALOG_LANGUAGE_IBY__
+
+// -------- hsapplication
+data=DATAZ_\resource\qt\translations\taskswitcher.qm resource\qt\translations\taskswitcher.qm 
+
+#endif //__TSAPP_LANGUAGE_IBY__
--- a/tsdevicedialog/tsdevicedialog.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/tsdevicedialog.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -18,7 +18,6 @@
 
 coverage {
     SUBDIRS += ../homescreensrv_plat
-    SUBDIRS += ../utils
     SUBDIRS += ../activityfw
     SUBDIRS += ../hsappkeyhandler
     SUBDIRS += ../taskswitcher
@@ -38,7 +37,6 @@
     SUBDIRS += ../taskswitcher/client/tsrc
     SUBDIRS += ../taskswitcher/server/tsrc
     SUBDIRS += ../taskswitcher/screenshotplugin/tsrc
-    SUBDIRS += ../utils/tsimageutils/tsrc
     SUBDIRS += ../taskswitcher/utils/tsrc
     SUBDIRS += ../taskswitcher/backstepping/tsrc
 }
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsactivitymodelitem.h	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: tsactivitymodelitem.h
-*
-*/
-
-#ifndef TSACTIVITYMODELITEM_H
-#define TSACTIVITYMODELITEM_H
-
-#include <QVariant>
-#include <QIcon>
-
-#include "tsmodelitem.h"
-
-class QAbstractListModel;
-
-/*!
-    Implements model item which represents Activity entry
-*/
-class TsActivityModelItem : public TsModelItem
-{
-    Q_OBJECT
-public:
-    TsActivityModelItem(QAbstractListModel &model,
-                        QObject &service,
-                        const QVariantHash &activity);
-    ~TsActivityModelItem();
-    QVariant data(int role) const;
-    void close();
-    void open();
-    static QString applicationKeyword();
-    static QString screenshotKeyword();
-
-private:
-    QVariant decorationRole() const;
-    QVariant displayRole() const;
-    QVariant visibilityRole() const;
-
-private slots:
-    void thumbnailReady(QPixmap, void *);
-signals:
-    void entryChanged(TsModelItem *);
-
-private:
-    QObject &mService;
-    const QVariantHash mActivity;
-    QIcon mIcon;
-    mutable bool mRequestPending;
-
-    Q_DISABLE_COPY(TsActivityModelItem)
-
-};
-
-#endif // TSACTIVITYMODELITEM_H
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsmodel.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsmodel.h	Mon Oct 04 00:38:31 2010 +0300
@@ -34,14 +34,12 @@
 
 public:
     TsModel(TsTaskMonitor &applicationSrv,
-            QObject &activitySrv,
             QObject *parent = 0);
     ~TsModel();
 
     int rowCount(const QModelIndex &parent = QModelIndex()) const;
     QVariant data(const QModelIndex &index,
                   int role = Qt::DisplayRole) const;
-    int maxRowCount()const;
     // from QAbstractModel
     virtual bool insertRows(int row, int count, TsModelItem *item,
                             const QModelIndex &parent = QModelIndex());
@@ -58,12 +56,10 @@
     void openApplication(const QModelIndex &index);
     void closeApplication(const QModelIndex &index);
     void updateApplications();
-    void updateActivities();
-    void entryChanged(TsModelItem *);
+    
 private:
     TsModelItem *entry(const QModelIndex &index) const;
     void getApplications();
-    void getActivities(bool fullUpdate = true);
 
 private:
     /*
@@ -73,17 +69,6 @@
 
     TsTaskMonitor &mApplicationService;
 
-    /*
-     * Activity Service
-     */
-    QObject &mActivityService;
-
-    /*
-     * Maximum number of items (only for running apps + activities)
-     */
-    int mMaxItems;
-    int mActivitiesCount;
-
     Q_DISABLE_COPY(TsModel)
 };
 
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsmodelitem.h	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsmodelitem.h	Mon Oct 04 00:38:31 2010 +0300
@@ -17,20 +17,30 @@
 #ifndef TSMODELITEM_H
 #define TSMODELITEM_H
 
-#include <QObject>
 #include <QVariant>
+#include <QSharedPointer>
+
+#include "tsmodelitem.h"
+
+class TsTask;
 
 /*!
     Abstract class which define model item for taskswitcher
 */
-class TsModelItem: public QObject
+class TsModelItem
 {
-    Q_OBJECT
 
 public:
-    virtual QVariant data(int role) const =0;
-    virtual void close() =0;
-    virtual void open() =0;
+    TsModelItem(QSharedPointer<TsTask> entry);
+    ~TsModelItem();
+    QVariant data(int role) const;
+    void close();
+    void open();
+
+private:
+    const QSharedPointer<TsTask> mEntry;
+    Q_DISABLE_COPY(TsModelItem)
+    
 };
 
 #endif // TSMODELITEM_H
--- a/tsdevicedialog/tsdevicedialogplugin/resource/layout.docml	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/resource/layout.docml	Mon Oct 04 00:38:31 2010 +0300
@@ -12,6 +12,9 @@
                 <bool name="itemRecycling" value="TRUE"/>
                 <enums name="horizontalScrollBarPolicy" value="ScrollBarAlwaysOff"/>
                 <bool name="swapDimensionsOnOrientationChange" value="FALSE"/>
+                <string name="scrollDirections" value="Horizontal"/>
+                <integer name="rowCount" value="1"/>
+                <integer name="columnCount" value="2"/>                
             </widget>            
             <widget name="noitemswidget" type="HbWidget">
                 <widget name="noitemslabel" type="TsNoItemsLabel">
@@ -43,20 +46,10 @@
         <widget name="tsdevicedialog">
             <sizehint type="PREFERRED" width="48un" height="40un"/>
         </widget>
-        <widget name="taskgrid">
-            <string name="scrollDirections" value="Horizontal"/>
-            <integer name="rowCount" value="1"/>
-            <integer name="columnCount" value="2"/>
-        </widget>
     </section>
     <section name="landscape">
         <widget name="tsdevicedialog">
             <sizehint type="PREFERRED" width="60un" height="40un"/>
         </widget>
-        <widget name="taskgrid">
-            <string name="scrollDirections" value="Horizontal"/>
-            <integer name="rowCount" value="1"/>
-            <integer name="columnCount" value="2"/>
-        </widget>
     </section>
 </hbdocument>
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsactivitymodelitem.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: tsactivitymodelitem.cpp
-*
-*/
-#include "tsactivitymodelitem.h"
-
-#include <QAbstractListModel>
-
-#include <HbIcon>
-
-#include <afstorageglobals.h>
-
-#include "tsdataroles.h"
-
-/*!
-    \class TsActivityModelItem
-    \ingroup group_tsdevicedialogplugin
-    \brief Item presenting activity in the grid.
-*/
-
-/*!
-    Standard C++ constructor
-    /param model - reference to parent model
-    /param service - reference to initialized ActivityManager instance
-    /param entry - Activity data
-*/
-TsActivityModelItem::TsActivityModelItem(QAbstractListModel &model,
-                                         QObject &service,
-                                         const QVariantHash &activity)
-    :
-    mService(service),
-    mActivity(activity),
-    mIcon(),
-    mRequestPending(false)
-{
-    connect(this,
-            SIGNAL(entryChanged(TsModelItem *)),
-            &model,
-            SLOT(entryChanged(TsModelItem *)));
-    connect(&mService,
-            SIGNAL(thumbnailReady(QPixmap, void *)),
-            this,
-            SLOT(thumbnailReady(QPixmap, void *)));
-}
-
-/*!
-    Standard C++ destructor
-    /param service - reference to initialized ActivityManager instance
-    /param entry - Activity data
-*/
-TsActivityModelItem::~TsActivityModelItem()
-{
-}
-
-/*!
-    Returns the data stored under the given role.
-    /param role - requested data role
-    /return data encapulated by QVariant
-*/
-QVariant TsActivityModelItem::data(int role) const
-{
-    switch (role) {
-        case Qt::DisplayRole:
-            return displayRole();
-        case Qt::DecorationRole:
-            return decorationRole();
-        case TsDataRoles::Closable:
-            return QVariant(false);
-        case TsDataRoles::Active:
-            return QVariant(false);
-        default:
-            return QVariant(QVariant::Invalid);
-    }
-}
-
-/*!
-    Empty interface implementation
-*/
-void TsActivityModelItem::close()
-{
-    //no implementation required
-}
-
-/*!
-    Open or move to foreground activity repesented by entry
-*/
-void TsActivityModelItem::open()
-{
-    QVariant application(mActivity.value(ActivityApplicationKeyword));
-    QVariant activity(mActivity.value(ActivityActivityKeyword));
-
-    if (application.isValid() && activity.isValid()) {
-        QMetaObject::invokeMethod(&mService,
-                                  "launchActivity",
-                                  Q_ARG(int, application.toInt()),
-                                  Q_ARG(QString, activity.toString()));
-    }
-}
-
-/*!
-    Return application name keyword
-*/
-QString TsActivityModelItem::applicationKeyword()
-{
-    static QString applicationName(ActivityApplicationName);
-    return applicationName;
-}
-
-/*!
-    Return activity screenshot keyword
-*/
-QString TsActivityModelItem::screenshotKeyword()
-{
-    static QString screenshot(ActivityScreenshotKeyword);
-    return screenshot;
-}
-
-/*!
-    Returns the data stored under decoration role.
-    /return data encapulated by QVariant
-*/
-QVariant TsActivityModelItem::decorationRole() const
-{
-    if (!mRequestPending) {
-        mRequestPending = true;
-        QVariant screenshot = mActivity.value(screenshotKeyword());
-        if (screenshot.isValid()) {
-            QMetaObject::invokeMethod(
-                &mService,
-                "getThumbnail",
-                Q_ARG(QSize, QSize(128, 128)),
-                Q_ARG(QString, screenshot.toString()),
-                Q_ARG(void *, const_cast<TsActivityModelItem *>(this)));
-        }
-    }
-    return QVariant::fromValue<HbIcon>(HbIcon(mIcon));
-}
-
-/*!
-    Returns the data stored under display role.
-    /return data encapulated by QVariant
-*/
-QVariant TsActivityModelItem::displayRole() const
-{
-    return mActivity.value(applicationKeyword());
-}
-
-/*!
-    Slot retrieve thumbnail form TM, update content and notify observers
-    /param pixmap - thumbnail content
-    /ptr - user data provided to request
-*/
-void TsActivityModelItem::thumbnailReady(QPixmap pixmap, void *ptr)
-{
-    if (ptr == this) {
-        mIcon = pixmap;
-        emit entryChanged(this);
-    }
-}
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -23,7 +23,6 @@
 #include <QtPlugin>
 
 #include <QValueSpacePublisher>
-#include <QServiceManager>
 
 #include <HbDeviceDialog>
 #include <HbMainWindow>
@@ -48,7 +47,6 @@
 {
     const char KTranslationPath[] = "resource/qt/translations";
     const char KTsDialogType[] = "com.nokia.taskswitcher.tsdevicedialogplugin/1.0";
-    const char KActivityManaged [] = "com.nokia.qt.activities.ActivityManager";
 }
 
 /*!
@@ -60,11 +58,15 @@
     mStorage(0),
     mTriedToLoadTranslation(false)
 {
+    // ensure the visibility property is set to false, so the TaskSwitcher
+    // in case when hbdevicedialogappserver crashes when TS is visible.
+    QValueSpacePublisher visibilityPublisher(TsProperty::KTsPath);
+    visibilityPublisher.setValue(TsProperty::KVisibilityPath, static_cast<int>(false));
+    visibilityPublisher.sync();
 }
 
 TsDeviceDialogPlugin::~TsDeviceDialogPlugin()
 {
-    delete mModel;
 }
 /*!
     \reimp
@@ -123,16 +125,7 @@
         // lazy loading of model
         if (!mModel) {
             mStorage = new TsTaskMonitor(this);
-
-            QServiceManager serviceManager;
-            QObject *activityManager(serviceManager.loadInterface(KActivityManaged));
-            if (activityManager) {
-                activityManager->setParent(this); //make it autodestructed
-            } else {
-                activityManager = this; //activity plugin is not present. provide invalid instance because its not critical functionality.
-                //QMetaObject::invokeMethod is safe to use in such a case.
-            }
-            mModel = new TsModel(*mStorage, *activityManager);
+            mModel = new TsModel(*mStorage, this);
         }
 
         // ensure the dismiss request property is set to false
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsentrymodelitem.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: tsentrymodelitem.cpp
-*
-*/
-
-#include "tsentrymodelitem.h"
-
-#include <HbIcon>
-
-#include <tstask.h>
-
-#include "tsdataroles.h"
-
-/*!
-    \class TsEntryModelItem
-    \ingroup group_tsdevicedialogplugin
-    \brief Item presenting running apps in the grid.
-*/
-
-/*!
-    Standard C++ constructor
-    /param entry - Task Monitor data
-*/
-TsEntryModelItem::TsEntryModelItem(QSharedPointer<TsTask> entry)
-    :
-    mEntry(entry)
-{
-    //no implementation required
-}
-
-/*!
-    Standard C++ destructor
-*/
-TsEntryModelItem::~TsEntryModelItem()
-{
-}
-
-/*!
-    Returns the data stored under the given role.
-    /param role - requested data role
-    /return data encapulated by QVariant
-*/
-QVariant TsEntryModelItem::data(int role) const
-{
-    switch (role) {
-        case Qt::DisplayRole:
-            return QVariant(mEntry->name());
-        case Qt::DecorationRole:
-            return QVariant::fromValue<HbIcon>(HbIcon(mEntry->screenshot()));
-        case TsDataRoles::Closable:
-            return QVariant(mEntry->isClosable());
-        case TsDataRoles::Active:
-            return QVariant(mEntry->isActive());
-        default:
-            return QVariant(QVariant::Invalid);
-    }
-}
-
-/*!
-    Close running application repesented by entry
-*/
-void TsEntryModelItem::close()
-{
-    mEntry->close();
-}
-
-/*!
-    Open or move to foreground application repesented by entry
-*/
-void TsEntryModelItem::open()
-{
-    mEntry->open();
-}
-
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -23,25 +23,14 @@
 
 #include <afstorageglobals.h>
 
-#ifdef Q_OS_SYMBIAN
-#include <XQSettingsManager>
-#include <apaid.h>
-
-const int TSDeviceDialogUid = 0x2002677F;
-const int ItemsLimit = 0x00000001;
-#endif
-
 #include "tsmodelitem.h"
-#include "tsentrymodelitem.h"
-#include "tsactivitymodelitem.h"
 #include "tsdataroles.h"
 #include "tstaskchangeinfo.h"
 
-const int maxItems(10);
 /*!
     \class TsModel
     \ingroup group_tsdevicedialogplugin
-    \brief Model storing running application and activieties.
+    \brief Model storing running tasks.
 */
 
 /*!
@@ -49,33 +38,11 @@
     \param query used to create model
     \param pointer to parent object
 */
-TsModel::TsModel(TsTaskMonitor &applicationSrv,
-                 QObject &activitySrv,
-                 QObject *parent) :
+TsModel::TsModel(TsTaskMonitor &applicationSrv, QObject *parent) :
     QAbstractListModel(parent),
     mEntries(),
-    mApplicationService(applicationSrv),
-    mActivityService(activitySrv),
-    mMaxItems(maxItems)
+    mApplicationService(applicationSrv)
 {
-
-#ifdef Q_OS_SYMBIAN
-    XQSettingsManager *crManager = new XQSettingsManager;
-    XQCentralRepositorySettingsKey itemsNumberKey(TSDeviceDialogUid, ItemsLimit);
-    QVariant itemsNumberVariant =
-        crManager->readItemValue(itemsNumberKey, XQSettingsManager::TypeInt);
-    if (!itemsNumberVariant.isNull()) {
-        int number = itemsNumberVariant.toInt();
-        if (number > 0) {
-            mMaxItems = number;
-        }
-    }
-#endif
-
-    connect(&activitySrv,
-            SIGNAL(dataChanged()),
-            this,
-            SLOT(updateActivities()));
     connect(&applicationSrv,
             SIGNAL(taskListChanged()),
             this,
@@ -96,8 +63,7 @@
     Returns count of rows in model
     \retval number of rows
 */
-int TsModel::rowCount(
-    const QModelIndex &parent) const
+int TsModel::rowCount(const QModelIndex &parent) const
 {
     Q_UNUSED(parent);
     return mEntries.count();
@@ -147,23 +113,12 @@
     \param role which data role to return
     \retval models data
 */
-QVariant TsModel::data(const QModelIndex &index,
-                       int role) const
+QVariant TsModel::data(const QModelIndex &index, int role) const
 {
     return index.isValid() ? entry(index)->data(role) : QVariant();
 }
 
 /*!
-    Returns maximum anount of data allowed for model
-    \retval maximum data count
-*/
-
-int TsModel::maxRowCount()const
-{
-    return mMaxItems;
-}
-
-/*!
     Activate one of model entries
 */
 void TsModel::openApplication(const QModelIndex &index)
@@ -191,10 +146,9 @@
 */
 void TsModel::updateApplications()
 {
-    QList<TsTaskChange>  changes(mApplicationService.changeList());
+    QList<TsTaskChange> changes(mApplicationService.changeList());
 
     if (changes.count() == 0) {
-        //no applications - only activities on list
         return;
     }
     //check 1st item whether we have cancel change - if so reset model
@@ -206,59 +160,33 @@
         switch (changes[iter].first.changeType()) {
             case TsTaskChangeInfo::EChangeDelete :
                 removeRows(changes[iter].first.oldOffset(), 1);
-                //we had max rows before delete - so there is possibility to add 
-                //one activity
-                if(mEntries.count() + 1 == maxRowCount()) {
-                    beginInsertRows(QModelIndex(), mEntries.count(), mEntries.count());
-                    getActivities(false);
-                    endInsertRows();
-                }
                 break;
             case TsTaskChangeInfo::EChangeInsert :
                 insertRows(changes[iter].first.newOffset(), 1,
-                           new TsEntryModelItem(changes[iter].second));
-                //we have too many items - delete some activities if we can
-                while(mEntries.count() > maxRowCount() && mActivitiesCount > 0) {
-                    removeRows(mEntries.count()-1, 1);
-                    mActivitiesCount--;
-                }
+                           new TsModelItem(changes[iter].second));
                 break;
             case TsTaskChangeInfo::EChangeMove :
                 moveRows(changes[iter].first.oldOffset(), changes[iter].first.newOffset());
                 break;
             case TsTaskChangeInfo::EChangeUpdate :
                 updateRows(changes[iter].first.oldOffset(),
-                           new TsEntryModelItem(changes[iter].second));
+                           new TsModelItem(changes[iter].second));
                 break;
             default:
                 break;
         }
     }
-
-    //because delete entries are at end of changelist - iterate backwards
-
 }
 
 /*!
-    Updates model with fresh entries
-*/
-void TsModel::updateActivities()
-{
-    //as for now we need full update when activities change
-    fullUpdate();
-}
-
-/*!
-    reset model using full application and activities lists
+    reset model
 */
 void TsModel::fullUpdate()
 {
     beginResetModel();
     qDeleteAll(mEntries);
     mEntries.clear();
-    mActivitiesCount = 0;
     getApplications();
-    getActivities();
     endResetModel();
 
 }
@@ -269,52 +197,15 @@
 void TsModel::getApplications()
 {
     //get all running applications and append to entries list
-    TsModelItem *entry(0);
-    QList< TsTaskChange> tasks(mApplicationService.changeList(true));
+    QList<TsTaskChange> tasks(mApplicationService.changeList(true));
     foreach(TsTaskChange taskData, tasks) {
         if (!taskData.second.isNull()) {
-            entry = new TsEntryModelItem(taskData.second);
-            if (entry) {
-                mEntries.append(entry);
-            }
+            mEntries.append(new TsModelItem(taskData.second));
         }
     }
 }
 
 /*!
-    Read current activities
-*/
-void TsModel::getActivities(bool fullUpdate)
-{
-    //get activities
-    int maxActivitiesCount = maxRowCount() - mEntries.count() + mActivitiesCount;
-    if (maxActivitiesCount > 0) {
-        QList<QVariantHash> activities;
-        QMetaObject::invokeMethod(&mActivityService,
-                                  "activitiesList",
-                                  Q_RETURN_ARG(QList<QVariantHash>, activities),
-                                  Q_ARG(int, maxActivitiesCount));
-        int iterPos = fullUpdate ? 0 : mActivitiesCount;
-        for(int iter(iterPos); iter< activities.count(); iter++) {
-            mEntries.append(new TsActivityModelItem(*this, mActivityService, activities[iter]));
-            mActivitiesCount++;
-        }
-    }
-}
-
-/*!
-    Called when some item was changed
-    \param itemPtr - address of updated item
-*/
-void TsModel::entryChanged(TsModelItem *itemPtr)
-{
-    const int itemIndex = mEntries.indexOf(itemPtr);
-    if (itemIndex != -1) {
-        emit dataChanged(index(itemIndex, 0), index(itemIndex, 0));
-    }
-}
-
-/*!
     Returns an entry from model
     \param index of entry in model
     \retval pointer to an entry
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsmodelitem.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: tsmodelitem.cpp
+*
+*/
+
+#include "tsmodelitem.h"
+
+#include <HbIcon>
+
+#include <tstask.h>
+
+#include "tsdataroles.h"
+
+/*!
+    \class TsModelItem
+    \ingroup group_tsdevicedialogplugin
+    \brief Item presenting running apps in the grid.
+*/
+
+/*!
+    Standard C++ constructor
+    /param entry - Task Monitor data
+*/
+TsModelItem::TsModelItem(QSharedPointer<TsTask> entry)
+    : mEntry(entry)
+{
+    //no implementation required
+}
+
+/*!
+    Standard C++ destructor
+*/
+TsModelItem::~TsModelItem()
+{
+}
+
+/*!
+    Returns the data stored under the given role.
+    /param role - requested data role
+    /return data encapulated by QVariant
+*/
+QVariant TsModelItem::data(int role) const
+{
+    switch (role) {
+        case Qt::DisplayRole:
+            return QVariant(mEntry->name());
+        case Qt::DecorationRole:
+            return QVariant::fromValue<HbIcon>(HbIcon(mEntry->screenshot()));
+        case TsDataRoles::Closable:
+            return QVariant(mEntry->isClosable());
+        case TsDataRoles::Active:
+            return QVariant(mEntry->isActive());
+        default:
+            return QVariant(QVariant::Invalid);
+    }
+}
+
+/*!
+    Close running application repesented by entry
+*/
+void TsModelItem::close()
+{
+    mEntry->close();
+}
+
+/*!
+    Open or move to foreground application repesented by entry
+*/
+void TsModelItem::open()
+{
+    mEntry->open();
+}
--- a/tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.pro	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.pro	Mon Oct 04 00:38:31 2010 +0300
@@ -16,7 +16,7 @@
 
 TEMPLATE = lib
 CONFIG += hb plugin mobility
-MOBILITY = serviceframework publishsubscribe
+MOBILITY = publishsubscribe
 
 include (../common.pri)
 
@@ -24,8 +24,6 @@
             inc/tsdevicedialogplugin.h \
             inc/tsmodel.h \
             inc/tsmodelitem.h \
-            inc/tsentrymodelitem.h \
-            inc/tsactivitymodelitem.h \
             inc/tstasksgrid.h \
             inc/tstasksgriditem.h \
             inc/tsdocumentloader.h \
@@ -35,8 +33,7 @@
 SOURCES +=  src/tsdevicedialogcontainer.cpp \
             src/tsdevicedialogplugin.cpp \
             src/tsmodel.cpp \
-            src/tsentrymodelitem.cpp \
-            src/tsactivitymodelitem.cpp \
+            src/tsmodelitem.cpp \
             src/tstasksgrid.cpp \
             src/tstasksgriditem.cpp \
             src/tsdocumentloader.cpp \
@@ -52,6 +49,8 @@
 
 RESOURCES += tsdevicedialogplugin.qrc
                
+DOCML += resource/layout.docml
+               
 symbian {
     TARGET.CAPABILITY = CAP_ECOM_PLUGIN
     TARGET.UID3 = 0x2002677F
@@ -59,8 +58,6 @@
     pluginstub.path = /resource/plugins/devicedialogs
     DEPLOYMENT += pluginstub
     
-    LIBS += -lxqsettingsmanager
-    
     BLD_INF_RULES.prj_exports += \
     "$${LITERAL_HASH}include <platform_paths.hrh>" \
     "conf/tsdevicedialog.confml APP_LAYER_CONFML(tsdevicedialog.confml)" \
--- a/tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.qrc	Fri Sep 17 08:32:18 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.qrc	Mon Oct 04 00:38:31 2010 +0300
@@ -1,6 +1,6 @@
 <RCC>
     <qresource prefix="/">
-        <file>resource/layout.docml</file>
+        <file alias="resource/layout.docml">resource/layout.docml.bin</file>
         <file>resource/tstasksgriditem.widgetml</file>
         <file>resource/tstasksgriditem.css</file>        
         <file>resource/hbdialog.css</file>        
--- a/utils/tsimageutils/group/bld.inf	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-../inc/tsgraphicfilescalinghandler.h |../../../inc/tsgraphicfilescalinghandler.h
-
-PRJ_MMPFILES
-tsimageutils.mmp
--- a/utils/tsimageutils/group/tsimageutils.mmp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-TARGET        tsimageutils.lib
-TARGETTYPE    LIB
-
-MW_LAYER_SYSTEMINCLUDE
-
-USERINCLUDE   ../inc
-
-SOURCEPATH    ../src
-SOURCE        tsgraphicfilescalinghandler.cpp
-
-#ifdef ENABLE_ABIV2_MODE
-DEBUGGABLE_UDEBONLY
-#endif
--- a/utils/tsimageutils/inc/tsgraphicfilescalinghandler.h	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description :
- *
- */
-#ifndef TSGRAPHICFILESCALINGHANDLER_H
-#define TSGRAPHICFILESCALINGHANDLER_H
-
-#include <e32base.h>
-
-class RFs;
-class CImageDecoder;
-class CFbsBitmap;
-class CBitmapRotator;
-class CBitmapScaler;
-
-/**
- * Interface to observer contain
- * ImageReadyCallBack function return error code and scaled/resized bitmap.
- */
-class MImageReadyCallBack
-    {
-public:
-    virtual void ImageReadyCallBack( TInt aError, const CFbsBitmap* aBitmap ) = 0;
-    };
-
-/**
- * Class to scaling graphic file/s.
- */
-class CTsGraphicFileScalingHandler : public CActive
-    {
-public:
-    /**
-     * Kind of graphic file scaling.
-     * EIgnoreAspectRatio          - the file is scaled to size, aspect ratio isn't preserving.
-     * EKeepAspectRatio            - the file is scaled to a rectangle as large as possible inside size
-     *                               preserving the aspect ratio.
-     * EKeepAspectRatioByExpanding - the file is scaled to a rectangle as small as possible outside size
-     *                               preserving the aspect ratio.
-     */
-    enum TKindOfScaling
-        {
-        EIgnoreAspectRatio = 0,
-        EKeepAspectRatio = 1,
-        EKeepAspectRatioByExpanding = 2,
-        };
-
-private:
-    /**
-     * Active object current operation.
-     */
-    enum TCurrentOperation{
-        ENone = 0,
-        EConvertBitmapFromFile,
-        ERotate,
-        EScale
-    };
-
-public:
-    ~CTsGraphicFileScalingHandler();
-
-    static CTsGraphicFileScalingHandler* NewL(MImageReadyCallBack &aNotify,
-        RFs &aFs,
-        const TDesC &aFileName,
-        const TDesC8& aMimeType,
-        const TSize &aNewSize,
-        TKindOfScaling aKindOfScaling = CTsGraphicFileScalingHandler::EIgnoreAspectRatio,
-        TInt aRotation = 0);
-    
-    static CTsGraphicFileScalingHandler* NewLC(MImageReadyCallBack &aNotify,
-        RFs &aFs,
-        const TDesC &aFileName,
-        const TDesC8& aMimeType,
-        const TSize &aNewSize,
-        TKindOfScaling aKindOfScaling = CTsGraphicFileScalingHandler::EIgnoreAspectRatio,
-        TInt aRotation = 0);
-
-    
-    static CTsGraphicFileScalingHandler* NewL(MImageReadyCallBack &aNotify,
-        const CFbsBitmap &aInputFbsBitmap,
-        const TSize &aNewSize,
-        TKindOfScaling aKindOfScaling = CTsGraphicFileScalingHandler::EIgnoreAspectRatio,
-        TInt aRotation = 0);
-     static CTsGraphicFileScalingHandler* NewLC(MImageReadyCallBack &aNotify,
-        const CFbsBitmap &aInputFbsBitmap,
-        const TSize &aNewSize,
-        TKindOfScaling aKindOfScaling = CTsGraphicFileScalingHandler::EIgnoreAspectRatio,
-        TInt aRotation = 0);
-
-protected:
-    void DoCancel();
-    void RunL();
-    TInt RunError(TInt);
-
-private:
-    void ConstructL( RFs& aFs, const TDesC& aFileName, const TDesC8& aMimeType );
-    void ConstructL( const CFbsBitmap& aInputFbsBitmap );
-    CTsGraphicFileScalingHandler( MImageReadyCallBack& aNotify,
-                                  const TSize& aNewSize,
-        TKindOfScaling aKindOfScaling = CTsGraphicFileScalingHandler::EIgnoreAspectRatio,
-        TInt aRotation = 0);
-    void DecodingOperationL( RFs& aFs, const TDesC& aFileName, const TDesC8& aMimeType );
-
-    void ScalingOperationL();
-
-    void RotationOperationL();
-    
-    TInt RotationMode()const;
-    
-    TBool IsSupportedRotationMode() const;
-    
-    TSize NewSizeToScalingOperation();
-
-    void FixForDisplayModeNotSupportedByScalingOperation();
-
-private:
-    /**
-     * Reference to observer implementation - return error code and output bitmap.
-     */
-    MImageReadyCallBack& iNotify;
-    /**
-     * Pointer to decoder used by decoding graphic file algorithm.
-     */
-    CImageDecoder* iImageDecoder;
-    /**
-     * Pointer to input bitmap - before decoding/scaling operation/s.
-     */
-    CFbsBitmap* iInputBitmap;
-    /**
-     * Pointer to output bitmap - returned in mNotify object.
-     */
-    CFbsBitmap* iOutputBitmap;
-    /**
-     * Pointer to CBitmapScaler calss used by scaling graphic file algorithm.
-     */
-    CBitmapScaler* iBitmapScaler;
-    
-    CBitmapRotator* iBitmapRotator;
-    /**
-     * New size of output graphic file.
-     */
-    TSize iNewSize;
-    /**
-     * Kind of graphic file scaling described above.
-     */
-    TBool iKindOfScaling;
-    
-    const TInt iRotation;
-    /**
-     * Active object current operation.
-     */
-    TCurrentOperation iCurrentOperation;
-    };
-
-#endif // TSGRAPHICFILESCALINGHANDLER_H
--- a/utils/tsimageutils/src/tsgraphicfilescalinghandler.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,413 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description :
- *
- */
-#include <bitmaptransforms.h>
-#include <imageconversion.h>
-
-#include "tsgraphicfilescalinghandler.h"
-// -----------------------------------------------------------------------------
-/**
- * Private constructor.
- * Parameters - the same meaning as in appropriate NewL/NewLC functions.
- */
-CTsGraphicFileScalingHandler::CTsGraphicFileScalingHandler(
-                                MImageReadyCallBack &aNotify,
-                                const TSize &aNewSize,
-                                TKindOfScaling aKindOfScaling,
-                                TInt aRotation )
-:
-    CActive( EPriorityNormal ),
-    iNotify( aNotify ),
-    iNewSize( aNewSize ),
-    iKindOfScaling( aKindOfScaling ),
-    iRotation( aRotation ),
-    iCurrentOperation( ENone )
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// -----------------------------------------------------------------------------
-/**
-* Destructor.
-*/
-CTsGraphicFileScalingHandler::~CTsGraphicFileScalingHandler()
-    {
-    Cancel();
-    delete iInputBitmap;
-    delete iOutputBitmap;
-    delete iImageDecoder;
-    delete iBitmapScaler;
-    delete iBitmapRotator;
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Constructors for activation graphic file scaling.
- * aNotify        - reference to observer implementation.
- * aFs            - reference to file server session.
- * aFileName      - path to graphic file.
- * aMimeType      - mime type of graphic file.
- * aNewSize       - new size of output graphic file.
- * aKindOfScaling - kind of graphic file scaling described above.
- * aRotation - requested rotation angle
- */
-CTsGraphicFileScalingHandler* CTsGraphicFileScalingHandler::NewL(
-                                                MImageReadyCallBack &aNotify,
-                                                RFs &aFs,
-                                                const TDesC &aFileName,
-                                                const TDesC8& aMimeType,
-                                                const TSize &aNewSize,
-                                                TKindOfScaling aKindOfScaling,
-                                                TInt aRotation
-                                                )
-    {
-    CTsGraphicFileScalingHandler *self = 
-                            CTsGraphicFileScalingHandler::NewLC(aNotify,
-                                                                aFs,
-                                                                aFileName,
-                                                                aMimeType,
-                                                                aNewSize,
-                                                                aKindOfScaling,
-                                                                aRotation );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Constructors for activation graphic file scaling.
- * aNotify        - reference to observer implementation.
- * aFs            - reference to file server session.
- * aFileName      - path to graphic file.
- * aMimeType      - mime type of graphic file.
- * aNewSize       - new size of output graphic file.
- * aKindOfScaling - kind of graphic file scaling described above.
- * aRotation - requested rotation angle
- */
-CTsGraphicFileScalingHandler* CTsGraphicFileScalingHandler::NewLC(
-                                                MImageReadyCallBack &aNotify,
-                                                RFs &aFs,
-                                                const TDesC &aFileName,
-                                                const TDesC8& aMimeType,
-                                                const TSize &aNewSize,
-                                                TKindOfScaling aKindOfScaling,
-                                                TInt aRotation )
-    {
-    CTsGraphicFileScalingHandler *self = 
-                    new (ELeave) CTsGraphicFileScalingHandler( aNotify,
-                                                               aNewSize,
-                                                               aKindOfScaling,
-                                                               aRotation );
-
-    CleanupStack::PushL( self );
-    self->ConstructL( aFs, aFileName, aMimeType );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Functions construct active objest instance and made asynchronous operation/s.
- * Parameters - the same meaning as in appropriate NewL/NewLC functions.
- */
-void CTsGraphicFileScalingHandler::ConstructL( RFs &aFs, 
-                                               const TDesC &aFileName, 
-                                               const TDesC8& aMimeType )
-    {
-    if( 0 == aFileName.Length()
-         || EFalse == aFs.IsValidName( aFileName ) )
-        {
-        User::Leave( KErrPathNotFound );
-        }
-
-    if( 0 == aMimeType.Length() )
-        {
-        User::Leave( KErrBadName );
-        }
-
-    if( 0 >= iNewSize.iWidth || 0 >= iNewSize.iHeight )
-        {
-        User::Leave(KErrCorrupt);
-        }
-    iInputBitmap = new(ELeave)CFbsBitmap();
-    DecodingOperationL( aFs, aFileName, aMimeType );
-    SetActive();
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Exported from dll constructors for activation graphic file scaling.
- * aNotify         - reference to observer implementation.
- * aInputFbsBitmap - reference to pattern CFbsBitmap.
- * aNewSize        - new size of output graphic file.
- * aKindOfScaling  - kind of graphic file scaling described above.
- * aRotation - requested rotation angle
- */
-CTsGraphicFileScalingHandler* CTsGraphicFileScalingHandler::NewL(
-                                        MImageReadyCallBack &aNotify,
-                                        const CFbsBitmap &aInputFbsBitmap,
-                                        const TSize &aNewSize,
-                                        TKindOfScaling aKindOfScaling,
-                                        TInt aRotation)
-
-{
-    CTsGraphicFileScalingHandler *self = 
-                            CTsGraphicFileScalingHandler::NewLC( aNotify,
-                                                                 aInputFbsBitmap,
-                                                                 aNewSize,
-                                                                 aKindOfScaling,
-                                                                aRotation );
-    CleanupStack::Pop( self );
-    return self;
-}
-
-// -----------------------------------------------------------------------------
-/**
- * Exported from dll constructors for activation graphic file scaling.
- * aNotify         - reference to observer implementation.
- * aInputFbsBitmap - reference to pattern CFbsBitmap.
- * aNewSize        - new size of output graphic file.
- * aKindOfScaling  - kind of graphic file scaling described above.
- * aRotation - requested rotation angle
- */
-CTsGraphicFileScalingHandler* CTsGraphicFileScalingHandler::NewLC(
-                                            MImageReadyCallBack &aNotify,
-                                            const CFbsBitmap &aInputFbsBitmap,
-                                            const TSize &aNewSize,
-                                            TKindOfScaling aKindOfScaling,
-                                            TInt aRotation)
-    {
-    CTsGraphicFileScalingHandler *self = 
-                            new (ELeave) CTsGraphicFileScalingHandler(
-                                                               aNotify,
-                                                               aNewSize,
-                                                               aKindOfScaling,
-                                                               aRotation );
-    CleanupStack::PushL( self );
-    self->ConstructL( aInputFbsBitmap );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Functions construct active objest instance and made asynchronous operation/s.
- * Parameters - the same meaning as in appropriate NewL/NewLC functions.
- */
-void CTsGraphicFileScalingHandler::ConstructL( const CFbsBitmap &aInputFbsBitmap )
-    {
-    if( 0 >= iNewSize.iWidth || 0 >= iNewSize.iHeight)
-        {
-        User::Leave( KErrCorrupt );
-        }
-
-    iInputBitmap = new(ELeave)CFbsBitmap();
-    User::LeaveIfError( iInputBitmap->Duplicate( aInputFbsBitmap.Handle() ) );
-
-    IsSupportedRotationMode() ? RotationOperationL() : ScalingOperationL();
-    SetActive();
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Cancels the wait for completion of an outstanding request.
- */
-void CTsGraphicFileScalingHandler::DoCancel()
-    {
-    switch(iCurrentOperation)
-        {
-    case EConvertBitmapFromFile:
-        iImageDecoder->Cancel();
-        break;
-    case EScale:
-        iBitmapScaler->Cancel();
-        break;
-        }
-    iNotify.ImageReadyCallBack( KErrCancel, 0 );
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Handles an active object’s request completion event.
- */
-void CTsGraphicFileScalingHandler::RunL()
-    {
-    User::LeaveIfError(iStatus.Int());
-
-    switch (iCurrentOperation)
-        {
-    case EConvertBitmapFromFile:
-            delete iImageDecoder;
-            iImageDecoder = 0;
-            
-            IsSupportedRotationMode() ? RotationOperationL() : ScalingOperationL();
-            SetActive();
-            break;
-    
-    case ERotate:
-            delete iBitmapRotator;
-            iBitmapRotator = 0;
-            
-            ScalingOperationL();
-            SetActive();
-            break;
-    
-    case EScale:
-            iCurrentOperation = ENone;
-            delete iBitmapScaler;
-            iBitmapScaler = 0;
-            delete iInputBitmap;
-            iInputBitmap = 0;
-            if (iKindOfScaling == CTsGraphicFileScalingHandler::EKeepAspectRatioByExpanding) 
-                {
-                User::LeaveIfError(iOutputBitmap->Resize(iNewSize));
-                }
-            iNotify.ImageReadyCallBack(iStatus.Int(), iOutputBitmap);
-            break;
-        
-        }
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Action to made before decoding graphic file operation.
- * Parameters - the same meaning as in appropriate NewL/NewLC functions.
- */
-void CTsGraphicFileScalingHandler::DecodingOperationL( RFs &aFs, 
-                                                       const TDesC &aFileName, 
-                                                       const TDesC8& aMimeType )
-    {
-    // convert *.png to bitmap
-    iImageDecoder = CImageDecoder::FileNewL( aFs, aFileName, aMimeType );
-    const TFrameInfo frameInfo( iImageDecoder->FrameInfo( 0 ) );
-    iInputBitmap->Reset();
-    User::LeaveIfError( iInputBitmap->Create(frameInfo.iOverallSizeInPixels, 
-                                             frameInfo.iFrameDisplayMode ) );
-    iImageDecoder->Convert( &iStatus, *iInputBitmap, 0 );
-    iCurrentOperation = EConvertBitmapFromFile;
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Action to made before scaling graphic file operation.
- */
-void CTsGraphicFileScalingHandler::ScalingOperationL()
-    {
-    iBitmapScaler = CBitmapScaler::NewL();
-    iBitmapScaler->SetQualityAlgorithm( CBitmapScaler::EMaximumQuality );
-    FixForDisplayModeNotSupportedByScalingOperation();
-    iOutputBitmap = new (ELeave)CFbsBitmap();
-    User::LeaveIfError(iOutputBitmap->Create( NewSizeToScalingOperation(), 
-                                              iInputBitmap->DisplayMode() ) );
-    iBitmapScaler->Scale( &iStatus, *iInputBitmap, *iOutputBitmap, EFalse );
-    iCurrentOperation = EScale;
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CTsGraphicFileScalingHandler::RotationOperationL()
-    {
-    const CBitmapRotator::TRotationAngle rotation =
-        static_cast<CBitmapRotator::TRotationAngle>( RotationMode() );
-    iBitmapRotator = CBitmapRotator::NewL();
-    iBitmapRotator->Rotate( &iStatus, 
-                            *iInputBitmap, 
-                            rotation );
-    iCurrentOperation = ERotate;
-    }
-
-// -----------------------------------------------------------------------------
-//
-TInt CTsGraphicFileScalingHandler::RotationMode()const
-    {
-    const TInt rotation(iRotation%360);
-    TInt retVal(CBitmapRotator::EMirrorHorizontalAxis);
-    if( 270 <= rotation )
-        {
-        retVal = CBitmapRotator::ERotation270DegreesClockwise;
-        }
-    else if( 180 <= rotation )
-        {
-        retVal = CBitmapRotator::ERotation180DegreesClockwise;
-        }
-    else if( 90 <= rotation )
-        {
-        retVal = CBitmapRotator::ERotation90DegreesClockwise;
-        }
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-TBool CTsGraphicFileScalingHandler::IsSupportedRotationMode() const
-    {
-    TBool retVal(EFalse);
-    switch( RotationMode() )
-        {
-        case CBitmapRotator::ERotation90DegreesClockwise:
-        case CBitmapRotator::ERotation180DegreesClockwise:
-        case CBitmapRotator::ERotation270DegreesClockwise:
-            retVal = ETrue;
-            break;
-        }
-    return retVal;
-    }
-// -----------------------------------------------------------------------------
-/**
- * Fix for TDisplayMode == EColor16MAP not supported by scaling operation!
- * ! ! ! ADD OTHER NOT SUPPORTED DISPLAY MODES ! ! !
- */
-void CTsGraphicFileScalingHandler::FixForDisplayModeNotSupportedByScalingOperation()
-    {
-    if (EColor16MAP == iInputBitmap->DisplayMode()) 
-        {
-        iInputBitmap->SetDisplayMode(EColor16MA);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-/**
- * Algorithm to determine output bitmap (returned in ImageReadyCallBack) size
- * after scaling operation.
- */
-TSize CTsGraphicFileScalingHandler::NewSizeToScalingOperation()
-    {
-    TSize originalSize = iInputBitmap->SizeInPixels();
-    float widthFactor = iNewSize.iWidth / (float)originalSize.iWidth;
-    float heightFactor = iNewSize.iHeight / (float)originalSize.iHeight;
-    TSize retSize(iNewSize);
-
-    if(CTsGraphicFileScalingHandler::EKeepAspectRatio == iKindOfScaling) 
-       {
-       retSize = (widthFactor < heightFactor) ?
-                 TSize(iNewSize.iWidth, widthFactor * originalSize.iHeight) :
-                 TSize(heightFactor * originalSize.iWidth, iNewSize.iHeight);
-       } 
-    else if (CTsGraphicFileScalingHandler::EKeepAspectRatioByExpanding == iKindOfScaling) 
-       {
-       retSize = (widthFactor < heightFactor) ?
-                 TSize(heightFactor * originalSize.iWidth, iNewSize.iHeight) :
-                 TSize(iNewSize.iWidth, widthFactor * originalSize.iHeight);
-       }
-    return retSize;
-    }
-// -----------------------------------------------------------------------------
-/**
- * Handles a leave occurring in the request completion event handler RunL().
- */
-TInt CTsGraphicFileScalingHandler::RunError( TInt aError )
-    {
-    iNotify.ImageReadyCallBack( aError, 0 );
-    return KErrNone;
-    }
--- a/utils/tsimageutils/tsimageutils.pro	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-TEMPLATE = subdirs
-
-BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include \"group/bld.inf\""
--- a/utils/utils.pro	Fri Sep 17 08:32:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-
-TEMPLATE = subdirs
-
-CONFIG += ordered
-
-SUBDIRS += tsimageutils