Revision: 201033
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 02 Sep 2010 20:45:03 +0300
changeset 115 3ab5c078b490
parent 109 e0aa398e6810
child 117 c63ee96dbe5f
child 121 0b3699f6c654
Revision: 201033 Kit: 201035
activityfw/activityserviceplugin/activityserviceplugin.pro
activityfw/activityserviceplugin/eabi/afserviceu.def
activityfw/activityserviceplugin/s60/src/afserializer.cpp
activityfw/activityserviceplugin/symbianinstaller/symbianinstaller.pro
activityfw/storage/client/bwins/afstorageclientu.def
activityfw/storage/client/eabi/afstorageclientu.def
activityfw/storage/client/group/client.mmp
activityfw/storage/server/group/server.mmp
activityfw/storage/server/inc/afdatabasecleaner.h
activityfw/storage/server/inc/afstorage.h
activityfw/storage/server/src/afdatabasecleaner.cpp
activityfw/storage/server/src/afobservertask.cpp
activityfw/storage/server/src/afsession.cpp
activityfw/storage/server/src/afstorage.cpp
activityfw/storage/server/src/afstoragesynctask.cpp
activityfw/tsutils/group/tsutils.mmp
activityfw/tsutils/src/tswindowgroupsmonitor.cpp
common.pri
contentstorage/caclient/bwins/caclientu.def
contentstorage/caclient/eabi/caclientu.def
contentstorage/caclient/inc/caentry_p.h
contentstorage/caclient/inc/cahandler.h
contentstorage/caclient/inc/caiconcache.h
contentstorage/caclient/inc/caitemmodel_p.h
contentstorage/caclient/s60/inc/camenuiconmifutility.h
contentstorage/caclient/s60/src/camenuiconmifutility.cpp
contentstorage/caclient/s60/src/camenuiconutility.cpp
contentstorage/caclient/src/caentry.cpp
contentstorage/caclient/src/caiconcache.cpp
contentstorage/caclient/src/caitemmodel.cpp
contentstorage/caclient/src/caservice.cpp
contentstorage/caclient/stub/inc/caobjectadapter.h
contentstorage/caclient/stub/src/camenuiconutility.cpp
contentstorage/caclient/stub/src/caobjectadapter.cpp
contentstorage/camificonengine/camificonengine.pri
contentstorage/camificonengine/camificonengine.pro
contentstorage/camificonengine/inc/cambmiconengine.h
contentstorage/camificonengine/inc/camificonengine.h
contentstorage/camificonengine/src/cambmiconengine.cpp
contentstorage/camificonengine/src/camificonengine.cpp
contentstorage/camificonengine/src/main.cpp
contentstorage/casoftwareregistry/bwins/casoftwareregistryu.def
contentstorage/casoftwareregistry/eabi/casoftwareregistryu.def
contentstorage/casoftwareregistry/s60/src/caprogresscanner.cpp
contentstorage/casrv/calocalizerscanner/bwins/calocalizerscanneru.def
contentstorage/casrv/calocalizerscanner/calocalizerscanner.pro
contentstorage/casrv/calocalizerscanner/eabi/calocalizerscanneru.def
contentstorage/casrv/causifscanner/src/causifscanner.cpp
contentstorage/casrv/cawidgetscanner/src/cawidgetscannerparser.cpp
contentstorage/castorage/bwins/castorageu.def
contentstorage/castorage/data/castorage.db
contentstorage/castorage/eabi/castorageu.def
contentstorage/castorage/group/castorage.mmp
contentstorage/contentstorage.pro
contentstorage/extsrc/casathandler.cpp
contentstorage/srvinc/cabackupnotifier.h
homescreensrv_plat/contentstorage_api/caclient_global.h
homescreensrv_plat/contentstorage_api/cadefs.h
homescreensrv_plat/contentstorage_api/caentry.h
homescreensrv_plat/contentstorage_api/caitemmodel.h
homescreensrv_plat/contentstorage_api/camenuiconutility.h
homescreensrv_plat/taskswitcher_api/taskswitcher_api.pri
homescreensrv_plat/taskswitcher_api/tsdevicedialog.qcrml
homescreensrv_plat/taskswitcher_api/tspropertydefs.h
hsappkeyhandler/src/hsappkeyplugin.cpp
hswidgetmodel/bwins/hswidgetmodelu.def
hswidgetmodel/eabi/hswidgetmodelu.def
rom/homescreensrv_core.iby
sis/homescreensrv.pkg
tsdevicedialog/tsdevicedialogplugin/inc/tsactivitymodelitem.h
tsdevicedialog/tsdevicedialogplugin/inc/tsdevicedialogcontainer.h
tsdevicedialog/tsdevicedialogplugin/inc/tsdevicedialogplugin.h
tsdevicedialog/tsdevicedialogplugin/inc/tsdocumentloader.h
tsdevicedialog/tsdevicedialogplugin/inc/tsentrymodelitem.h
tsdevicedialog/tsdevicedialogplugin/inc/tsmodel.h
tsdevicedialog/tsdevicedialogplugin/inc/tsmodelitem.h
tsdevicedialog/tsdevicedialogplugin/inc/tsnoitemslabel.h
tsdevicedialog/tsdevicedialogplugin/inc/tstasksgrid.h
tsdevicedialog/tsdevicedialogplugin/inc/tstasksgriditem.h
tsdevicedialog/tsdevicedialogplugin/resource/layout.docml
tsdevicedialog/tsdevicedialogplugin/resource/tsdevicedialog.qcrml
tsdevicedialog/tsdevicedialogplugin/resource/tstasksgriditem.css
tsdevicedialog/tsdevicedialogplugin/src/tsactivitymodelitem.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogcontainer.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsdocumentloader.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsentrymodelitem.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp
tsdevicedialog/tsdevicedialogplugin/src/tsnoitemslabel.cpp
tsdevicedialog/tsdevicedialogplugin/src/tstasksgriditem.cpp
tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.pro
--- a/activityfw/activityserviceplugin/activityserviceplugin.pro	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/activityserviceplugin/activityserviceplugin.pro	Thu Sep 02 20:45:03 2010 +0300
@@ -97,7 +97,7 @@
     
     #export xml with old name (remove after next release)
     BLD_INF_RULES.prj_exports += "data/afservice.xml z:/resource/activity/activityserviceplugin.xml"
-    BLD_INF_RULES.prj_exports += "data/afservice.xml $$QT_PLUGINS_BASE_DIR/activityserviceplugin.xml"    
+    BLD_INF_RULES.prj_exports += "data/afservice.xml c:/resource/activity/activityserviceplugin.xml"
     
     # we want to export few classes, use standard .def block instead of the one generated by plugin
     defBlock = \
--- a/activityfw/activityserviceplugin/eabi/afserviceu.def	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/activityserviceplugin/eabi/afserviceu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -31,4 +31,6 @@
 	_ZTI17AfActivityStorage @ 30 NONAME
 	_ZTV12AfActivation @ 31 NONAME
 	_ZTV17AfActivityStorage @ 32 NONAME
+	_ZTI8CAfEntry @ 33 NONAME
+	_ZTV8CAfEntry @ 34 NONAME
 
--- a/activityfw/activityserviceplugin/s60/src/afserializer.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/activityserviceplugin/s60/src/afserializer.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -14,8 +14,8 @@
 * Description:
 *
 */
+#include "afserializer.h"
 #include <s32mem.h>
-#include "afserializer.h"
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -45,6 +45,6 @@
                                                src.Length()) );
 
     QDataStream stream(&buffer, QIODevice::ReadOnly);
-    QT_TRYCATCH_LEAVING(stream >> dst);
+    stream >> dst;
     return dst;
 }
--- a/activityfw/activityserviceplugin/symbianinstaller/symbianinstaller.pro	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/activityserviceplugin/symbianinstaller/symbianinstaller.pro	Thu Sep 02 20:45:03 2010 +0300
@@ -24,7 +24,7 @@
     plugin.path = $$QT_PLUGINS_BASE_DIR 
     
     installer.pkg_postrules += "\"$${EPOCROOT}epoc32/release/$(PLATFORM)/$(TARGET)/activityserviceinstaller.exe\" \  
-                                         - \"!:\sys\bin\activityserviceinstaller.exe\",FR,RB,RW"
+                                         - \"!:\\sys\\bin\\activityserviceinstaller.exe\",FR,RB,RW"
     
     DEPLOYMENT += plugin installer
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/storage/client/bwins/afstorageclientu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +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)
+	?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)
+	??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 ; int CAfStorageClient::activities(class RPointerArray<class CAfEntry> &)
+	?activityData@CAfStorageClient@@QAEHAAPAVCAfEntry@@ABV2@@Z @ 15 NONAME ; int CAfStorageClient::activityData(class CAfEntry * &, class CAfEntry const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/storage/client/eabi/afstorageclientu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,29 @@
+EXPORTS
+	_ZN16CAfStorageClient10activitiesER13RPointerArrayI8CAfEntryE @ 1 NONAME
+	_ZN16CAfStorageClient11addActivityERK8CAfEntryi @ 2 NONAME
+	_ZN16CAfStorageClient12activityDataERP8CAfEntryRKS0_ @ 3 NONAME
+	_ZN16CAfStorageClient12getThumbnailERK5TSizeRK7TDesC16Pv @ 4 NONAME
+	_ZN16CAfStorageClient12saveActivityERK8CAfEntryi @ 5 NONAME
+	_ZN16CAfStorageClient12waitActivityEv @ 6 NONAME
+	_ZN16CAfStorageClient14launchActivityERK8CAfEntry @ 7 NONAME
+	_ZN16CAfStorageClient14removeActivityERK8CAfEntry @ 8 NONAME
+	_ZN16CAfStorageClient14updateActivityERK8CAfEntryi @ 9 NONAME
+	_ZN16CAfStorageClient16notifyDataChangeEv @ 10 NONAME
+	_ZN16CAfStorageClient21applicationActivitiesER13RPointerArrayI8CAfEntryERKS1_ @ 11 NONAME
+	_ZN16CAfStorageClient27removeApplicationActivitiesERK8CAfEntry @ 12 NONAME
+	_ZN16CAfStorageClient4NewLER23MAfAsyncRequestObserver @ 13 NONAME
+	_ZN16CAfStorageClient5NewLCER23MAfAsyncRequestObserver @ 14 NONAME
+	_ZN16CAfStorageClientD0Ev @ 15 NONAME
+	_ZN16CAfStorageClientD1Ev @ 16 NONAME
+	_ZN16CAfStorageClientD2Ev @ 17 NONAME
+	_ZTI22CAfAsyncRequestPrivate @ 18 NONAME
+	_ZTI23CAfStorageClientPrivate @ 19 NONAME
+	_ZTI26CAfThumbnailRequestPrivate @ 20 NONAME
+	_ZTI30RAfStorageClientImplementation @ 21 NONAME
+	_ZTI8CAfEntry @ 22 NONAME
+	_ZTV22CAfAsyncRequestPrivate @ 23 NONAME
+	_ZTV23CAfStorageClientPrivate @ 24 NONAME
+	_ZTV26CAfThumbnailRequestPrivate @ 25 NONAME
+	_ZTV30RAfStorageClientImplementation @ 26 NONAME
+	_ZTV8CAfEntry @ 27 NONAME
+
--- a/activityfw/storage/client/group/client.mmp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/storage/client/group/client.mmp	Thu Sep 02 20:45:03 2010 +0300
@@ -38,7 +38,6 @@
 STATICLIBRARY  afstoragecommon.lib
 
 CAPABILITY     ALL -TCB
-EXPORTUNFROZEN 
 
 #ifdef ENABLE_ABIV2_MODE
 DEBUGGABLE_UDEBONLY
--- a/activityfw/storage/server/group/server.mmp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/storage/server/group/server.mmp	Thu Sep 02 20:45:03 2010 +0300
@@ -39,6 +39,7 @@
 SOURCE          afapplicationscollection.cpp
 SOURCE          afapplicationsstorage.cpp
 SOURCE          afapplicationsengine.cpp
+SOURCE          afdatabasecleaner.cpp
 
 LIBRARY        euser.lib 
 LIBRARY        estor.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/storage/server/inc/afdatabasecleaner.h	Thu Sep 02 20:45:03 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 AFDATABASECLEANER_H
+#define AFDATABASECLEANER_H
+
+#include <e32base.h>
+#include <d32dbms.h>
+
+class CAfDatabaseCleaner : public CActive
+{
+
+private:
+    enum CleanupStep {
+        Initial,
+        Continuation,
+    };
+
+public:
+    CAfDatabaseCleaner(RDbStoreDatabase &database);
+    ~CAfDatabaseCleaner();
+
+    void StartCleanup();
+
+private: // from CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+    
+private:
+    void CompleteSelf(TInt completionCode);
+
+private:
+    RDbStoreDatabase &mDatabase;
+    RDbIncremental mIncrementalInterface;
+    TInt mStep;
+    CleanupStep mCleanupStep;
+    
+};
+
+#endif // AFDATABASECLEANER_H
--- a/activityfw/storage/server/inc/afstorage.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/storage/server/inc/afstorage.h	Thu Sep 02 20:45:03 2010 +0300
@@ -25,6 +25,8 @@
 #include <s32file.h>    // CFileStore & CPermanentFileStore
 #include "afentry.h"
 
+class CAfDatabaseCleaner;
+
 class CAfStorage : public CBase
     {
 public:
@@ -109,10 +111,15 @@
 
     void InternalizeDataL(CAfEntry &dst, RDbRowSet& src, TInt offset) const;
 
+public:
+    TBool InterruptCleanup();
+    void RequestCleanup();
+
 private:
     RFs& mFsSession;
     RDbStoreDatabase mActDb;/* For database operations                 */
     CFileStore* mFileStore;  /* For creating and opening database files */
+    CAfDatabaseCleaner *mDatabaseCleaner;
 };
 
 #endif //AFSTORAGE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/storage/server/src/afdatabasecleaner.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* 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 "afdatabasecleaner.h"
+
+CAfDatabaseCleaner::~CAfDatabaseCleaner()
+{
+    Cancel();
+}
+
+CAfDatabaseCleaner::CAfDatabaseCleaner(RDbStoreDatabase &database) : CActive(EPriorityIdle), mDatabase(database), mCleanupStep(Initial)
+{
+    CActiveScheduler::Add(this);
+}
+
+void CAfDatabaseCleaner::StartCleanup()
+{
+    if (!IsActive()) {
+        mCleanupStep = Initial;
+        SetActive();
+        CompleteSelf(KErrNone);
+    }
+}
+
+void CAfDatabaseCleaner::RunL()
+{
+    if (KErrNone == iStatus.Int()) {
+        switch (mCleanupStep) {
+            case Initial:
+            {
+                User::LeaveIfError(mIncrementalInterface.Compact(mDatabase, mStep));
+                mCleanupStep = Continuation;
+                SetActive();
+                CompleteSelf(KErrNone);
+                break;
+            }
+            case Continuation:
+            {
+                User::LeaveIfError(mIncrementalInterface.Next(mStep));
+                if (mStep != 0) {
+                    SetActive();
+                    CompleteSelf(KErrNone);
+                } else {
+                    mIncrementalInterface.Close();
+                }
+                break;
+            }
+            default:
+                User::Leave(KErrArgument);
+        }
+    }
+}
+
+void CAfDatabaseCleaner::DoCancel()
+{
+    mIncrementalInterface.Close();
+}
+
+void CAfDatabaseCleaner::CompleteSelf(TInt completionCode)
+{
+    TRequestStatus* status = &iStatus;
+    User::RequestComplete(status, completionCode);
+}
+
+TInt CAfDatabaseCleaner::RunError(TInt /*aError*/)
+{
+    mIncrementalInterface.Close();
+    return KErrNone;
+}
--- a/activityfw/storage/server/src/afobservertask.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/storage/server/src/afobservertask.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -116,6 +116,7 @@
     } else if(NotifyChange == mMsg.Function() &&
               (AddActivity == msg.Function() ||
                UpdateActivity == msg.Function() ||
+               SaveActivity == msg.Function() ||
                RemoveActivity == msg.Function() ||
                RemoveApplicationActivities == msg.Function())){
         mMsg.Complete(KErrNone);
--- a/activityfw/storage/server/src/afsession.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/storage/server/src/afsession.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -97,14 +97,22 @@
     case SaveActivity:
     case RemoveActivity:
     case RemoveApplicationActivities:
+        {
+        mStorage.InterruptCleanup();
         AfStorageSyncTask::ExecuteL(mTasksStorage, mStorage, message);
+        mStorage.RequestCleanup();
         break;
+        }
     
     case ApplicationActivity:
     case Activities:
     case ApplicationActivities:
+        {
+        TBool cleanupInterrupted = mStorage.InterruptCleanup();
         CAfStorageAsyncTask::ExecuteLD(*this, mStorage, message);
+        if (cleanupInterrupted) mStorage.RequestCleanup();
         break;
+        }
     
     case WaitActivity:
     case NotifyChange:
--- a/activityfw/storage/server/src/afstorage.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/storage/server/src/afstorage.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -19,6 +19,7 @@
 #include <hash.h>
 #include <s32mem.h>
 
+#include "afdatabasecleaner.h"
 #include "afqueries.h"
 #include "afentry.h"
 
@@ -49,6 +50,7 @@
  */
 CAfStorage::~CAfStorage()
 {
+    delete mDatabaseCleaner;
     mActDb.Close();
     delete mFileStore;
 }
@@ -83,7 +85,10 @@
     BaflUtils::FileExists(mFsSession, path) ? OpenDbL(path) : CreateDbL(path);
     CleanupStack::PopAndDestroy(&path);
 
+    mDatabaseCleaner = new (ELeave) CAfDatabaseCleaner(mActDb);
+
     DeleteNonPersistentActivitiesL();
+    RequestCleanup();
 }
 
 // -----------------------------------------------------------------------------
@@ -659,3 +664,27 @@
     CleanupStack::PopAndDestroy(md5);
     return buf;
 }
+
+// -----------------------------------------------------------------------------
+/**
+ * Cancel ongoing cleanup if one is in progress.
+ * @return ETrue if the database cleanup was in progress, EFalse otherwise
+ */
+TBool CAfStorage::InterruptCleanup()
+{    
+    if (mDatabaseCleaner->IsActive()) {
+        mDatabaseCleaner->Cancel();
+        return ETrue;
+    } else {
+        return EFalse;
+    }
+}
+
+// -----------------------------------------------------------------------------
+/**
+ * Start database cleanup
+ */
+void CAfStorage::RequestCleanup()
+{
+    mDatabaseCleaner->StartCleanup();
+}
--- a/activityfw/storage/server/src/afstoragesynctask.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/storage/server/src/afstoragesynctask.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -130,24 +130,39 @@
     TPckgBuf<TInt> bitmapHdl(0);
     CAfEntry *entry = CAfEntry::NewLC(msg);
     msg.ReadL(1, bitmapHdl);
-        
-    RBuf thumbnailPath;
-    CleanupClosePushL(thumbnailPath);
-    DeleteActivityScreenshotL(dataStorage, 
-                    entry->ApplicationId(), 
-                    entry->ActivityId());
+
+    TInt hdl = bitmapHdl();
+    if (0 >= hdl) {
+        User::Leave(KErrCorrupt);
+    }
+    CFbsBitmap *bitmap = new (ELeave) CFbsBitmap;
+    CleanupStack::PushL(bitmap);
+    User::LeaveIfError(bitmap->Duplicate(hdl));
     
-    dataStorage.ThumbnailPathL(thumbnailPath, 
-                   dataStorage.Fs(), 
-                   entry->ApplicationId(), 
-                   entry->ActivityId(),
-                   entry->Flags() & CAfEntry::Persistent);
-    CreateThumbnailL(thumbnailPath, bitmapHdl());
     //all data is retrieved. compleate message to improve response time
     msg.Complete(KErrNone);
-    TRAP_IGNORE(entry->SetImageSrcL(thumbnailPath);
-    dataStorage.SaveActivityL(*entry);)
-    CleanupStack::PopAndDestroy(&thumbnailPath);
+    
+    // trap all other leaving methods to prevent completing message in ServiceError
+    TRAP_IGNORE(
+        RBuf thumbnailPath;
+        CleanupClosePushL(thumbnailPath);
+        DeleteActivityScreenshotL(dataStorage, 
+                        entry->ApplicationId(), 
+                        entry->ActivityId());
+        
+        dataStorage.ThumbnailPathL(thumbnailPath, 
+                       dataStorage.Fs(), 
+                       entry->ApplicationId(), 
+                       entry->ActivityId(),
+                       entry->Flags() & CAfEntry::Persistent);
+                       
+        User::LeaveIfError(bitmap->Save(thumbnailPath));
+
+        entry->SetImageSrcL(thumbnailPath);
+        dataStorage.SaveActivityL(*entry);
+        CleanupStack::PopAndDestroy(&thumbnailPath);
+    )
+    CleanupStack::PopAndDestroy(bitmap);
     CleanupStack::PopAndDestroy(entry);
 }
 
--- a/activityfw/tsutils/group/tsutils.mmp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/tsutils/group/tsutils.mmp	Thu Sep 02 20:45:03 2010 +0300
@@ -38,7 +38,6 @@
 LIBRARY      ws32.lib
 LIBRARY      apgrfx.lib
 
-//EXPORTUNFROZEN
 
 #ifdef ENABLE_ABIV2_MODE
 DEBUGGABLE_UDEBONLY
--- a/activityfw/tsutils/src/tswindowgroupsmonitor.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/activityfw/tsutils/src/tswindowgroupsmonitor.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -84,7 +84,7 @@
 EXPORT_C void CTsWindowGroupsMonitor::SubscribeL(MTsWindowGroupsObserver &observer)
 {
     const TInt offset(mObservers.Find(&observer));
-    KErrNotFound == offset ? mObservers.AppendL(&observer) : 
+    KErrNotFound == offset ? mObservers.InsertL(&observer, 0) : 
                              User::Leave(KErrAlreadyExists);
 }
 
@@ -168,7 +168,7 @@
     CleanupClosePushL(wgInfo);
     switch(event.Type()) {
     case EEventWindowGroupListChanged:
-        User::LeaveIfError(mResources.WsSession().WindowGroupList(&wgInfo));
+        User::LeaveIfError(mResources.WsSession().WindowGroupList(0, &wgInfo));
         observer.HandleWindowGroupChanged(mResources, wgInfo.Array());
         break;
     }
--- a/common.pri	Wed Aug 18 10:05:49 2010 +0300
+++ b/common.pri	Thu Sep 02 20:45:03 2010 +0300
@@ -143,6 +143,4 @@
 
 symbian {
 SYMBIAN_PLATFORMS = WINSCW ARMV5
-# ONLY FOR DEVELOPMENT! REMOVE THIS BEFORE EACH HS_Domain RELEASE!
-MMP_RULES += EXPORTUNFROZEN
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/bwins/caclientu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,200 @@
+EXPORTS
+	?prependEntriesToGroup@CaService@@QBE_NHABV?$QList@H@@@Z @ 1 NONAME ; bool CaService::prependEntriesToGroup(int, class QList<int> const &) const
+	?entry@CaItemModel@@QBE?AV?$QSharedPointer@VCaEntry@@@@ABVQModelIndex@@@Z @ 2 NONAME ; class QSharedPointer<class CaEntry> CaItemModel::entry(class QModelIndex const &) const
+	?getIconSize@CaItemModel@@QBE?AVQSizeF@@XZ @ 3 NONAME ; class QSizeF CaItemModel::getIconSize(void) const
+	?tr@CaService@@SA?AVQString@@PBD0@Z @ 4 NONAME ; class QString CaService::tr(char const *, char const *)
+	?setSort@CaQuery@@QAEXW4SortAttribute@@W4SortOrder@Qt@@@Z @ 5 NONAME ; void CaQuery::setSort(enum SortAttribute, enum Qt::SortOrder)
+	??4CaEntry@@QAEAAV0@ABV0@@Z @ 6 NONAME ; class CaEntry & CaEntry::operator=(class CaEntry const &)
+	??1CaNotifier@@UAE@XZ @ 7 NONAME ; CaNotifier::~CaNotifier(void)
+	??0CaClientNotifierProxy@@QAE@PAVQObject@@@Z @ 8 NONAME ; CaClientNotifierProxy::CaClientNotifierProxy(class QObject *)
+	?flags@CaEntry@@QBE?AV?$QFlags@W4EntryFlag@@@@XZ @ 9 NONAME ; class QFlags<enum EntryFlag> CaEntry::flags(void) const
+	?tr@CaNotifier@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString CaNotifier::tr(char const *, char const *, int)
+	?setParentId@CaNotifierFilter@@QAEXH@Z @ 11 NONAME ; void CaNotifierFilter::setParentId(int)
+	?getParentId@CaNotifierFilter@@QBEHXZ @ 12 NONAME ; int CaNotifierFilter::getParentId(void) const
+	?getEntryIds@CaService@@QBE?AV?$QList@H@@ABVCaQuery@@@Z @ 13 NONAME ; class QList<int> CaService::getEntryIds(class CaQuery const &) const
+	?tr@CaItemModel@@SA?AVQString@@PBD0@Z @ 14 NONAME ; class QString CaItemModel::tr(char const *, char const *)
+	?isLocalized@CaEntry@@ABE_NW4LocalizationType@@@Z @ 15 NONAME ; bool CaEntry::isLocalized(enum LocalizationType) const
+	?getStaticMetaObject@CaNotifier@@SAABUQMetaObject@@XZ @ 16 NONAME ; struct QMetaObject const & CaNotifier::getStaticMetaObject(void)
+	?entryChanged@CaService@@IAEXHW4ChangeType@@@Z @ 17 NONAME ; void CaService::entryChanged(int, enum ChangeType)
+	?setDescription@CaEntry@@QAEXABVQString@@_N@Z @ 18 NONAME ; void CaEntry::setDescription(class QString const &, bool)
+	??0CaQuery@@QAE@XZ @ 19 NONAME ; CaQuery::CaQuery(void)
+	?setIconSize@CaItemModel@@QAEXABVQSizeF@@@Z @ 20 NONAME ; void CaItemModel::setIconSize(class QSizeF const &)
+	?flagsOff@CaQuery@@QBE?AV?$QFlags@W4EntryFlag@@@@XZ @ 21 NONAME ; class QFlags<enum EntryFlag> CaQuery::flagsOff(void) const
+	?skinId@CaIconDescription@@QBE?AVQString@@XZ @ 22 NONAME ; class QString CaIconDescription::skinId(void) const
+	?setParentId@CaQuery@@QAEXH@Z @ 23 NONAME ; void CaQuery::setParentId(int)
+	?removeEntriesFromGroup@CaService@@QBE_NABVCaEntry@@ABV?$QList@V?$QSharedPointer@VCaEntry@@@@@@@Z @ 24 NONAME ; bool CaService::removeEntriesFromGroup(class CaEntry const &, class QList<class QSharedPointer<class CaEntry> > const &) const
+	?qt_metacall@CaClientNotifierProxy@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 25 NONAME ; int CaClientNotifierProxy::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??_ECaItemModel@@UAE@I@Z @ 26 NONAME ; CaItemModel::~CaItemModel(unsigned int)
+	?setSecondLineVisibility@CaItemModel@@QAEX_N@Z @ 27 NONAME ; void CaItemModel::setSecondLineVisibility(bool)
+	?secondLineVisibility@CaItemModel@@QBE_NXZ @ 28 NONAME ; bool CaItemModel::secondLineVisibility(void) const
+	?instance@CaService@@SA?AV?$QSharedPointer@VCaService@@@@XZ @ 29 NONAME ; class QSharedPointer<class CaService> CaService::instance(void)
+	??1CaIconDescription@@QAE@XZ @ 30 NONAME ; CaIconDescription::~CaIconDescription(void)
+	??_ECaNotifier@@UAE@I@Z @ 31 NONAME ; CaNotifier::~CaNotifier(unsigned int)
+	?removeEntriesFromGroup@CaService@@QBE_NHABV?$QList@H@@@Z @ 32 NONAME ; bool CaService::removeEntriesFromGroup(int, class QList<int> const &) const
+	?appendEntriesToGroup@CaService@@QBE_NHABV?$QList@H@@@Z @ 33 NONAME ; bool CaService::appendEntriesToGroup(int, class QList<int> const &) const
+	?createNotifier@CaService@@QBEPAVCaNotifier@@ABVCaNotifierFilter@@@Z @ 34 NONAME ; class CaNotifier * CaService::createNotifier(class CaNotifierFilter const &) const
+	?setSkinId@CaIconDescription@@QAEXABVQString@@@Z @ 35 NONAME ; void CaIconDescription::setSkinId(class QString const &)
+	?metaObject@CaClientNotifierProxy@@UBEPBUQMetaObject@@XZ @ 36 NONAME ; struct QMetaObject const * CaClientNotifierProxy::metaObject(void) const
+	?m_instance@CaService@@0V?$QWeakPointer@VCaService@@@@A @ 37 NONAME ; class QWeakPointer<class CaService> CaService::m_instance
+	?getEntryRole@CaNotifierFilter@@QBE?AV?$QFlags@W4EntryRole@@@@XZ @ 38 NONAME ; class QFlags<enum EntryRole> CaNotifierFilter::getEntryRole(void) const
+	?root@CaItemModel@@QBE?AVQModelIndex@@XZ @ 39 NONAME ; class QModelIndex CaItemModel::root(void) const
+	?prependEntryToGroup@CaService@@QBE_NABVCaEntry@@0@Z @ 40 NONAME ; bool CaService::prependEntryToGroup(class CaEntry const &, class CaEntry const &) const
+	??1CaQuery@@QAE@XZ @ 41 NONAME ; CaQuery::~CaQuery(void)
+	?setCount@CaQuery@@QAEXI@Z @ 42 NONAME ; void CaQuery::setCount(unsigned int)
+	?id@CaIconDescription@@QBEHXZ @ 43 NONAME ; int CaIconDescription::id(void) const
+	?getEntries@CaService@@QBE?AV?$QList@V?$QSharedPointer@VCaEntry@@@@@@ABVCaQuery@@@Z @ 44 NONAME ; class QList<class QSharedPointer<class CaEntry> > CaService::getEntries(class CaQuery const &) const
+	?trUtf8@CaNotifier@@SA?AVQString@@PBD0@Z @ 45 NONAME ; class QString CaNotifier::trUtf8(char const *, char const *)
+	??0CaNotifier@@QAE@PAVCaNotifierPrivate@@@Z @ 46 NONAME ; CaNotifier::CaNotifier(class CaNotifierPrivate *)
+	?trUtf8@CaNotifier@@SA?AVQString@@PBD0H@Z @ 47 NONAME ; class QString CaNotifier::trUtf8(char const *, char const *, int)
+	?getStaticMetaObject@CaItemModel@@SAABUQMetaObject@@XZ @ 48 NONAME ; struct QMetaObject const & CaItemModel::getStaticMetaObject(void)
+	?trUtf8@CaItemModel@@SA?AVQString@@PBD0@Z @ 49 NONAME ; class QString CaItemModel::trUtf8(char const *, char const *)
+	?newSession@CaClientNotifierProxy@@AAEPAVRCaClientNotifierSession@@AAH@Z @ 50 NONAME ; class RCaClientNotifierSession * CaClientNotifierProxy::newSession(int &)
+	?entryChanged@CaNotifier@@IAEXABVCaEntry@@W4ChangeType@@@Z @ 51 NONAME ; void CaNotifier::entryChanged(class CaEntry const &, enum ChangeType)
+	?attribute@CaEntry@@QBE?AVQString@@ABV2@@Z @ 52 NONAME ; class QString CaEntry::attribute(class QString const &) const
+	?metaObject@CaService@@UBEPBUQMetaObject@@XZ @ 53 NONAME ; struct QMetaObject const * CaService::metaObject(void) const
+	?entryChanged@CaNotifier@@IAEXHW4ChangeType@@@Z @ 54 NONAME ; void CaNotifier::entryChanged(int, enum ChangeType)
+	?getStaticMetaObject@CaClientNotifierProxy@@SAABUQMetaObject@@XZ @ 55 NONAME ; struct QMetaObject const & CaClientNotifierProxy::getStaticMetaObject(void)
+	?registerNotifier@CaClientNotifierProxy@@QAEHPBVCaNotifierFilter@@W4NotifierType@CaNotifierPrivate@@PBVIDataObserver@@@Z @ 56 NONAME ; int CaClientNotifierProxy::registerNotifier(class CaNotifierFilter const *, enum CaNotifierPrivate::NotifierType, class IDataObserver const *)
+	??_ECaClientNotifierProxy@@UAE@I@Z @ 57 NONAME ; CaClientNotifierProxy::~CaClientNotifierProxy(unsigned int)
+	??0CaNotifierFilter@@QAE@XZ @ 58 NONAME ; CaNotifierFilter::CaNotifierFilter(void)
+	?childId@CaQuery@@QBEHXZ @ 59 NONAME ; int CaQuery::childId(void) const
+	?removeEntries@CaService@@QBE_NABV?$QList@H@@@Z @ 60 NONAME ; bool CaService::removeEntries(class QList<int> const &) const
+	?entryTouched@CaNotifier@@IAEXH@Z @ 61 NONAME ; void CaNotifier::entryTouched(int)
+	?customSort@CaService@@QBE_NHAAV?$QList@H@@@Z @ 62 NONAME ; bool CaService::customSort(int, class QList<int> &) const
+	?groupContentChanged@CaNotifier@@IAEXH@Z @ 63 NONAME ; void CaNotifier::groupContentChanged(int)
+	?tr@CaNotifier@@SA?AVQString@@PBD0@Z @ 64 NONAME ; class QString CaNotifier::tr(char const *, char const *)
+	?setChildId@CaQuery@@QAEXH@Z @ 65 NONAME ; void CaQuery::setChildId(int)
+	?findSession@CaClientNotifierProxy@@AAEPAVRCaClientNotifierSession@@XZ @ 66 NONAME ; class RCaClientNotifierSession * CaClientNotifierProxy::findSession(void)
+	??1CaItemModel@@UAE@XZ @ 67 NONAME ; CaItemModel::~CaItemModel(void)
+	?attributes@CaEntry@@QBE?AV?$QMap@VQString@@V1@@@XZ @ 68 NONAME ; class QMap<class QString, class QString> CaEntry::attributes(void) const
+	?connectNotify@CaNotifier@@MAEXPBD@Z @ 69 NONAME ; void CaNotifier::connectNotify(char const *)
+	?setEntryRole@CaNotifierFilter@@QAEXV?$QFlags@W4EntryRole@@@@@Z @ 70 NONAME ; void CaNotifierFilter::setEntryRole(class QFlags<enum EntryRole>)
+	??1CaClientNotifierProxy@@UAE@XZ @ 71 NONAME ; CaClientNotifierProxy::~CaClientNotifierProxy(void)
+	?staticMetaObject@CaItemModel@@2UQMetaObject@@B @ 72 NONAME ; struct QMetaObject const CaItemModel::staticMetaObject
+	?role@CaEntry@@QBE?AW4EntryRole@@XZ @ 73 NONAME ; enum EntryRole CaEntry::role(void) const
+	?qt_metacast@CaNotifier@@UAEPAXPBD@Z @ 74 NONAME ; void * CaNotifier::qt_metacast(char const *)
+	?text@CaEntry@@QBE?AVQString@@XZ @ 75 NONAME ; class QString CaEntry::text(void) const
+	?tr@CaClientNotifierProxy@@SA?AVQString@@PBD0@Z @ 76 NONAME ; class QString CaClientNotifierProxy::tr(char const *, char const *)
+	?getUninstallingEntriesIds@CaItemModel@@QAE?AV?$QList@H@@H@Z @ 77 NONAME ; class QList<int> CaItemModel::getUninstallingEntriesIds(int)
+	?columnCount@CaItemModel@@UBEHABVQModelIndex@@@Z @ 78 NONAME ; int CaItemModel::columnCount(class QModelIndex const &) const
+	?entryChanged@CaService@@IAEXABVCaEntry@@W4ChangeType@@@Z @ 79 NONAME ; void CaService::entryChanged(class CaEntry const &, enum ChangeType)
+	?scrollTo@CaItemModel@@IAEXHW4ScrollHint@QAbstractItemView@@@Z @ 80 NONAME ; void CaItemModel::scrollTo(int, enum QAbstractItemView::ScrollHint)
+	??0CaIconDescription@@QAE@XZ @ 81 NONAME ; CaIconDescription::CaIconDescription(void)
+	?attribute@CaQuery@@QBE?AVQString@@ABV2@@Z @ 82 NONAME ; class QString CaQuery::attribute(class QString const &) const
+	?staticMetaObject@CaClientNotifierProxy@@2UQMetaObject@@B @ 83 NONAME ; struct QMetaObject const CaClientNotifierProxy::staticMetaObject
+	??_ECaNotifierFilter@@UAE@I@Z @ 84 NONAME ; CaNotifierFilter::~CaNotifierFilter(unsigned int)
+	?trUtf8@CaClientNotifierProxy@@SA?AVQString@@PBD0@Z @ 85 NONAME ; class QString CaClientNotifierProxy::trUtf8(char const *, char const *)
+	?getStaticMetaObject@CaService@@SAABUQMetaObject@@XZ @ 86 NONAME ; struct QMetaObject const & CaService::getStaticMetaObject(void)
+	?touch@CaService@@QBE_NABVCaEntry@@@Z @ 87 NONAME ; bool CaService::touch(class CaEntry const &) const
+	?getEntries@CaService@@QBE?AV?$QList@V?$QSharedPointer@VCaEntry@@@@@@ABV?$QList@H@@@Z @ 88 NONAME ; class QList<class QSharedPointer<class CaEntry> > CaService::getEntries(class QList<int> const &) const
+	??0CaNotifierFilter@@QAE@ABV0@@Z @ 89 NONAME ; CaNotifierFilter::CaNotifierFilter(class CaNotifierFilter const &)
+	?getTypeNames@CaNotifierFilter@@QBE?AVQStringList@@XZ @ 90 NONAME ; class QStringList CaNotifierFilter::getTypeNames(void) const
+	?entryTouched@CaService@@IAEXH@Z @ 91 NONAME ; void CaService::entryTouched(int)
+	?disconnectNotify@CaNotifier@@MAEXPBD@Z @ 92 NONAME ; void CaNotifier::disconnectNotify(char const *)
+	?removeEntryFromGroup@CaService@@QBE_NABVCaEntry@@0@Z @ 93 NONAME ; bool CaService::removeEntryFromGroup(class CaEntry const &, class CaEntry const &) const
+	?setId@CaIconDescription@@AAEXH@Z @ 94 NONAME ; void CaIconDescription::setId(int)
+	?setFilename@CaIconDescription@@QAEXABVQString@@@Z @ 95 NONAME ; void CaIconDescription::setFilename(class QString const &)
+	?setEntryTypeName@CaEntry@@QAEXABVQString@@@Z @ 96 NONAME ; void CaEntry::setEntryTypeName(class QString const &)
+	??4CaQuery@@QAEAAV0@ABV0@@Z @ 97 NONAME ; class CaQuery & CaQuery::operator=(class CaQuery const &)
+	??1CaNotifierFilter@@UAE@XZ @ 98 NONAME ; CaNotifierFilter::~CaNotifierFilter(void)
+	?entryTypeName@CaEntry@@QBE?AVQString@@XZ @ 99 NONAME ; class QString CaEntry::entryTypeName(void) const
+	?trUtf8@CaService@@SA?AVQString@@PBD0@Z @ 100 NONAME ; class QString CaService::trUtf8(char const *, char const *)
+	?groupContentChanged@CaService@@IAEXH@Z @ 101 NONAME ; void CaService::groupContentChanged(int)
+	?connectSessions@CaClientNotifierProxy@@QAEXXZ @ 102 NONAME ; void CaClientNotifierProxy::connectSessions(void)
+	?insertEntriesIntoGroup@CaService@@QBE_NABVCaEntry@@ABV?$QList@V?$QSharedPointer@VCaEntry@@@@@@H@Z @ 103 NONAME ; bool CaService::insertEntriesIntoGroup(class CaEntry const &, class QList<class QSharedPointer<class CaEntry> > const &, int) const
+	??4CaIconDescription@@QAEAAV0@ABV0@@Z @ 104 NONAME ; class CaIconDescription & CaIconDescription::operator=(class CaIconDescription const &)
+	?count@CaQuery@@QBEIXZ @ 105 NONAME ; unsigned int CaQuery::count(void) const
+	?appendEntriesToGroup@CaService@@QBE_NABVCaEntry@@ABV?$QList@V?$QSharedPointer@VCaEntry@@@@@@@Z @ 106 NONAME ; bool CaService::appendEntriesToGroup(class CaEntry const &, class QList<class QSharedPointer<class CaEntry> > const &) const
+	?id@CaEntry@@QBEHXZ @ 107 NONAME ; int CaEntry::id(void) const
+	?removeEntries@CaService@@QBE_NABV?$QList@V?$QSharedPointer@VCaEntry@@@@@@@Z @ 108 NONAME ; bool CaService::removeEntries(class QList<class QSharedPointer<class CaEntry> > const &) const
+	?updateModel@CaItemModel@@QAEXXZ @ 109 NONAME ; void CaItemModel::updateModel(void)
+	?setFlags@CaEntry@@QAEXV?$QFlags@W4EntryFlag@@@@@Z @ 110 NONAME ; void CaEntry::setFlags(class QFlags<enum EntryFlag>)
+	?insertEntryIntoGroup@CaService@@QBE_NHHH@Z @ 111 NONAME ; bool CaService::insertEntryIntoGroup(int, int, int) const
+	?qt_metacast@CaService@@UAEPAXPBD@Z @ 112 NONAME ; void * CaService::qt_metacast(char const *)
+	?setFlagsOn@CaItemModel@@QAEXABV?$QFlags@W4EntryFlag@@@@@Z @ 113 NONAME ; void CaItemModel::setFlagsOn(class QFlags<enum EntryFlag> const &)
+	??0CaQuery@@QAE@ABV0@@Z @ 114 NONAME ; CaQuery::CaQuery(class CaQuery const &)
+	?iconDescription@CaEntry@@QBE?AVCaIconDescription@@XZ @ 115 NONAME ; class CaIconDescription CaEntry::iconDescription(void) const
+	?trUtf8@CaService@@SA?AVQString@@PBD0H@Z @ 116 NONAME ; class QString CaService::trUtf8(char const *, char const *, int)
+	?createEntry@CaService@@QBE?AV?$QSharedPointer@VCaEntry@@@@ABVCaEntry@@@Z @ 117 NONAME ; class QSharedPointer<class CaEntry> CaService::createEntry(class CaEntry const &) const
+	??0CaNotifierFilter@@QAE@ABVCaQuery@@@Z @ 118 NONAME ; CaNotifierFilter::CaNotifierFilter(class CaQuery const &)
+	?setEntryTypeNames@CaQuery@@QAEXABVQStringList@@@Z @ 119 NONAME ; void CaQuery::setEntryTypeNames(class QStringList const &)
+	?updateProgress@CaItemModel@@QAEXHH@Z @ 120 NONAME ; void CaItemModel::updateProgress(int, int)
+	?qt_metacall@CaItemModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 121 NONAME ; int CaItemModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setText@CaEntry@@QAEXABVQString@@_N@Z @ 122 NONAME ; void CaEntry::setText(class QString const &, bool)
+	?removeAttribute@CaQuery@@QAEXABVQString@@@Z @ 123 NONAME ; void CaQuery::removeAttribute(class QString const &)
+	?insertEntryIntoGroup@CaService@@QBE_NABVCaEntry@@0H@Z @ 124 NONAME ; bool CaService::insertEntryIntoGroup(class CaEntry const &, class CaEntry const &, int) const
+	?setApplicationId@CaIconDescription@@QAEXABVQString@@@Z @ 125 NONAME ; void CaIconDescription::setApplicationId(class QString const &)
+	?appendEntryToGroup@CaService@@QBE_NABVCaEntry@@0@Z @ 126 NONAME ; bool CaService::appendEntryToGroup(class CaEntry const &, class CaEntry const &) const
+	?executeCommand@CaService@@QBEHHABVQString@@@Z @ 127 NONAME ; int CaService::executeCommand(int, class QString const &) const
+	?setAttribute@CaQuery@@QAEXABVQString@@0@Z @ 128 NONAME ; void CaQuery::setAttribute(class QString const &, class QString const &)
+	?attributes@CaQuery@@QBE?AV?$QMap@VQString@@V1@@@XZ @ 129 NONAME ; class QMap<class QString, class QString> CaQuery::attributes(void) const
+	?updateEntry@CaService@@QBE_NABVCaEntry@@@Z @ 130 NONAME ; bool CaService::updateEntry(class CaEntry const &) const
+	?setAttribute@CaEntry@@QAEXABVQString@@0@Z @ 131 NONAME ; void CaEntry::setAttribute(class QString const &, class QString const &)
+	?unregisterNotifier@CaClientNotifierProxy@@QAEXABVCaNotifierFilter@@W4NotifierType@CaNotifierPrivate@@@Z @ 132 NONAME ; void CaClientNotifierProxy::unregisterNotifier(class CaNotifierFilter const &, enum CaNotifierPrivate::NotifierType)
+	?setParentId@CaItemModel@@QAEXH@Z @ 133 NONAME ; void CaItemModel::setParentId(int)
+	?countChange@CaItemModel@@IAEXXZ @ 134 NONAME ; void CaItemModel::countChange(void)
+	?metaObject@CaItemModel@@UBEPBUQMetaObject@@XZ @ 135 NONAME ; struct QMetaObject const * CaItemModel::metaObject(void) const
+	?makeIcon@CaEntry@@QBE?AVHbIcon@@ABVQSizeF@@@Z @ 136 NONAME ; class HbIcon CaEntry::makeIcon(class QSizeF const &) const
+	?tr@CaItemModel@@SA?AVQString@@PBD0H@Z @ 137 NONAME ; class QString CaItemModel::tr(char const *, char const *, int)
+	?setFlagsOff@CaQuery@@QAEXABV?$QFlags@W4EntryFlag@@@@@Z @ 138 NONAME ; void CaQuery::setFlagsOff(class QFlags<enum EntryFlag> const &)
+	?getEntry@CaService@@QBE?AV?$QSharedPointer@VCaEntry@@@@H@Z @ 139 NONAME ; class QSharedPointer<class CaEntry> CaService::getEntry(int) const
+	??0CaEntry@@QAE@ABV0@@Z @ 140 NONAME ; CaEntry::CaEntry(class CaEntry const &)
+	?rowCount@CaItemModel@@UBEHABVQModelIndex@@@Z @ 141 NONAME ; int CaItemModel::rowCount(class QModelIndex const &) const
+	?clear@CaQuery@@QAEXXZ @ 142 NONAME ; void CaQuery::clear(void)
+	?prependEntryToGroup@CaService@@QBE_NHH@Z @ 143 NONAME ; bool CaService::prependEntryToGroup(int, int) const
+	?qt_metacast@CaClientNotifierProxy@@UAEPAXPBD@Z @ 144 NONAME ; void * CaClientNotifierProxy::qt_metacast(char const *)
+	?getEntryIcon@CaMenuIconUtility@@SA?AVHbIcon@@ABVCaEntry@@ABVQSizeF@@@Z @ 145 NONAME ; class HbIcon CaMenuIconUtility::getEntryIcon(class CaEntry const &, class QSizeF const &)
+	?tr@CaService@@SA?AVQString@@PBD0H@Z @ 146 NONAME ; class QString CaService::tr(char const *, char const *, int)
+	?entryRoles@CaQuery@@QBE?AV?$QFlags@W4EntryRole@@@@XZ @ 147 NONAME ; class QFlags<enum EntryRole> CaQuery::entryRoles(void) const
+	?qt_metacall@CaService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 148 NONAME ; int CaService::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??4CaNotifierFilter@@QAEAAV0@ABV0@@Z @ 149 NONAME ; class CaNotifierFilter & CaNotifierFilter::operator=(class CaNotifierFilter const &)
+	??0CaItemModel@@QAE@ABVCaQuery@@PAVQObject@@@Z @ 150 NONAME ; CaItemModel::CaItemModel(class CaQuery const &, class QObject *)
+	?setFlagsOff@CaItemModel@@QAEXABV?$QFlags@W4EntryFlag@@@@@Z @ 151 NONAME ; void CaItemModel::setFlagsOff(class QFlags<enum EntryFlag> const &)
+	?getSort@CaQuery@@QBEXAAW4SortAttribute@@AAW4SortOrder@Qt@@@Z @ 152 NONAME ; void CaQuery::getSort(enum SortAttribute &, enum Qt::SortOrder &) const
+	?parentId@CaQuery@@QBEHXZ @ 153 NONAME ; int CaQuery::parentId(void) const
+	?setEntryRoles@CaQuery@@QAEXV?$QFlags@W4EntryRole@@@@@Z @ 154 NONAME ; void CaQuery::setEntryRoles(class QFlags<enum EntryRole>)
+	??_ECaEntry@@UAE@I@Z @ 155 NONAME ; CaEntry::~CaEntry(unsigned int)
+	??0CaService@@AAE@PAVQObject@@@Z @ 156 NONAME ; CaService::CaService(class QObject *)
+	??1CaService@@EAE@XZ @ 157 NONAME ; CaService::~CaService(void)
+	?flagsOn@CaQuery@@QBE?AV?$QFlags@W4EntryFlag@@@@XZ @ 158 NONAME ; class QFlags<enum EntryFlag> CaQuery::flagsOn(void) const
+	?description@CaEntry@@QBE?AVQString@@XZ @ 159 NONAME ; class QString CaEntry::description(void) const
+	?metaObject@CaNotifier@@UBEPBUQMetaObject@@XZ @ 160 NONAME ; struct QMetaObject const * CaNotifier::metaObject(void) const
+	?data@CaItemModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 161 NONAME ; class QVariant CaItemModel::data(class QModelIndex const &, int) const
+	??0CaIconDescription@@QAE@ABV0@@Z @ 162 NONAME ; CaIconDescription::CaIconDescription(class CaIconDescription const &)
+	?staticMetaObject@CaService@@2UQMetaObject@@B @ 163 NONAME ; struct QMetaObject const CaService::staticMetaObject
+	?removeEntry@CaService@@QBE_NH@Z @ 164 NONAME ; bool CaService::removeEntry(int) const
+	?addEntryTypeName@CaQuery@@QAEXABVQString@@@Z @ 165 NONAME ; void CaQuery::addEntryTypeName(class QString const &)
+	?isAutoUpdate@CaItemModel@@QBE_NXZ @ 166 NONAME ; bool CaItemModel::isAutoUpdate(void) const
+	??1CaEntry@@UAE@XZ @ 167 NONAME ; CaEntry::~CaEntry(void)
+	?prependEntriesToGroup@CaService@@QBE_NABVCaEntry@@ABV?$QList@V?$QSharedPointer@VCaEntry@@@@@@@Z @ 168 NONAME ; bool CaService::prependEntriesToGroup(class CaEntry const &, class QList<class QSharedPointer<class CaEntry> > const &) const
+	?qt_metacall@CaNotifier@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 169 NONAME ; int CaNotifier::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?setSort@CaItemModel@@QAEXW4SortAttribute@@W4SortOrder@Qt@@@Z @ 170 NONAME ; void CaItemModel::setSort(enum SortAttribute, enum Qt::SortOrder)
+	?removeEntry@CaService@@QBE_NABVCaEntry@@@Z @ 171 NONAME ; bool CaService::removeEntry(class CaEntry const &) const
+	?setId@CaEntry@@AAEXH@Z @ 172 NONAME ; void CaEntry::setId(int)
+	?staticMetaObject@CaNotifier@@2UQMetaObject@@B @ 173 NONAME ; struct QMetaObject const CaNotifier::staticMetaObject
+	?applicationId@CaIconDescription@@QBE?AVQString@@XZ @ 174 NONAME ; class QString CaIconDescription::applicationId(void) const
+	?getIds@CaNotifierFilter@@QBE?AV?$QList@H@@XZ @ 175 NONAME ; class QList<int> CaNotifierFilter::getIds(void) const
+	?setIds@CaNotifierFilter@@QAEXABV?$QList@H@@@Z @ 176 NONAME ; void CaNotifierFilter::setIds(class QList<int> const &)
+	??0CaEntry@@QAE@W4EntryRole@@@Z @ 177 NONAME ; CaEntry::CaEntry(enum EntryRole)
+	?executeCommand@CaService@@QBEHABVCaEntry@@ABVQString@@@Z @ 178 NONAME ; int CaService::executeCommand(class CaEntry const &, class QString const &) const
+	?qt_metacast@CaItemModel@@UAEPAXPBD@Z @ 179 NONAME ; void * CaItemModel::qt_metacast(char const *)
+	?trUtf8@CaClientNotifierProxy@@SA?AVQString@@PBD0H@Z @ 180 NONAME ; class QString CaClientNotifierProxy::trUtf8(char const *, char const *, int)
+	?lastError@CaService@@QBE?AW4ErrorCode@@XZ @ 181 NONAME ; enum ErrorCode CaService::lastError(void) const
+	?insertEntriesIntoGroup@CaService@@QBE_NHABV?$QList@H@@H@Z @ 182 NONAME ; bool CaService::insertEntriesIntoGroup(int, class QList<int> const &, int) const
+	?getApplicationIcon@CaMenuIconUtility@@SA?AVHbIcon@@HABVQSizeF@@@Z @ 183 NONAME ; class HbIcon CaMenuIconUtility::getApplicationIcon(int, class QSizeF const &)
+	?trUtf8@CaItemModel@@SA?AVQString@@PBD0H@Z @ 184 NONAME ; class QString CaItemModel::trUtf8(char const *, char const *, int)
+	?setFlagsOn@CaQuery@@QAEXABV?$QFlags@W4EntryFlag@@@@@Z @ 185 NONAME ; void CaQuery::setFlagsOn(class QFlags<enum EntryFlag> const &)
+	?parent@CaItemModel@@UBE?AVQModelIndex@@ABV2@@Z @ 186 NONAME ; class QModelIndex CaItemModel::parent(class QModelIndex const &) const
+	?empty@CaItemModel@@IAEX_N@Z @ 187 NONAME ; void CaItemModel::empty(bool)
+	?filename@CaIconDescription@@QBE?AVQString@@XZ @ 188 NONAME ; class QString CaIconDescription::filename(void) const
+	?setIconDescription@CaEntry@@QAEXABVCaIconDescription@@@Z @ 189 NONAME ; void CaEntry::setIconDescription(class CaIconDescription const &)
+	?appendEntryToGroup@CaService@@QBE_NHH@Z @ 190 NONAME ; bool CaService::appendEntryToGroup(int, int) const
+	?setTypeNames@CaNotifierFilter@@QAEXABVQStringList@@@Z @ 191 NONAME ; void CaNotifierFilter::setTypeNames(class QStringList const &)
+	?entryTypeNames@CaQuery@@QBE?AVQStringList@@XZ @ 192 NONAME ; class QStringList CaQuery::entryTypeNames(void) const
+	?findSession@CaClientNotifierProxy@@ABEHABVCaNotifierFilter@@W4TNotifierType@CCaInnerNotifierFilter@@@Z @ 193 NONAME ; int CaClientNotifierProxy::findSession(class CaNotifierFilter const &, enum CCaInnerNotifierFilter::TNotifierType) const
+	?tr@CaClientNotifierProxy@@SA?AVQString@@PBD0H@Z @ 194 NONAME ; class QString CaClientNotifierProxy::tr(char const *, char const *, int)
+	?setAutoUpdate@CaItemModel@@QAEX_N@Z @ 195 NONAME ; void CaItemModel::setAutoUpdate(bool)
+	??_ECaService@@UAE@I@Z @ 196 NONAME ; CaService::~CaService(unsigned int)
+	?removeEntryFromGroup@CaService@@QBE_NHH@Z @ 197 NONAME ; bool CaService::removeEntryFromGroup(int, int) const
+	?index@CaItemModel@@UBE?AVQModelIndex@@HHABV2@@Z @ 198 NONAME ; class QModelIndex CaItemModel::index(int, int, class QModelIndex const &) const
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/eabi/caclientu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,217 @@
+EXPORTS
+	_ZN10CaNotifier11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN10CaNotifier11qt_metacastEPKc @ 2 NONAME
+	_ZN10CaNotifier12entryChangedERK7CaEntry10ChangeType @ 3 NONAME
+	_ZN10CaNotifier12entryChangedEi10ChangeType @ 4 NONAME
+	_ZN10CaNotifier12entryTouchedEi @ 5 NONAME
+	_ZN10CaNotifier13connectNotifyEPKc @ 6 NONAME
+	_ZN10CaNotifier16disconnectNotifyEPKc @ 7 NONAME
+	_ZN10CaNotifier16staticMetaObjectE @ 8 NONAME DATA 16
+	_ZN10CaNotifier19getStaticMetaObjectEv @ 9 NONAME
+	_ZN10CaNotifier19groupContentChangedEi @ 10 NONAME
+	_ZN10CaNotifierC1EP17CaNotifierPrivate @ 11 NONAME
+	_ZN10CaNotifierC2EP17CaNotifierPrivate @ 12 NONAME
+	_ZN10CaNotifierD0Ev @ 13 NONAME
+	_ZN10CaNotifierD1Ev @ 14 NONAME
+	_ZN10CaNotifierD2Ev @ 15 NONAME
+	_ZN11CaItemModel10setFlagsOnERK6QFlagsI9EntryFlagE @ 16 NONAME
+	_ZN11CaItemModel11countChangeEv @ 17 NONAME
+	_ZN11CaItemModel11qt_metacallEN11QMetaObject4CallEiPPv @ 18 NONAME
+	_ZN11CaItemModel11qt_metacastEPKc @ 19 NONAME
+	_ZN11CaItemModel11setFlagsOffERK6QFlagsI9EntryFlagE @ 20 NONAME
+	_ZN11CaItemModel11setIconSizeERK6QSizeF @ 21 NONAME
+	_ZN11CaItemModel11setParentIdEi @ 22 NONAME
+	_ZN11CaItemModel11updateModelEv @ 23 NONAME
+	_ZN11CaItemModel13setAutoUpdateEb @ 24 NONAME
+	_ZN11CaItemModel14updateProgressEii @ 25 NONAME
+	_ZN11CaItemModel16staticMetaObjectE @ 26 NONAME DATA 16
+	_ZN11CaItemModel19getStaticMetaObjectEv @ 27 NONAME
+	_ZN11CaItemModel23setSecondLineVisibilityEb @ 28 NONAME
+	_ZN11CaItemModel25getUninstallingEntriesIdsEi @ 29 NONAME
+	_ZN11CaItemModel5emptyEb @ 30 NONAME
+	_ZN11CaItemModel7setSortE13SortAttributeN2Qt9SortOrderE @ 31 NONAME
+	_ZN11CaItemModel8scrollToEiN17QAbstractItemView10ScrollHintE @ 32 NONAME
+	_ZN11CaItemModelC1ERK7CaQueryP7QObject @ 33 NONAME
+	_ZN11CaItemModelC2ERK7CaQueryP7QObject @ 34 NONAME
+	_ZN11CaItemModelD0Ev @ 35 NONAME
+	_ZN11CaItemModelD1Ev @ 36 NONAME
+	_ZN11CaItemModelD2Ev @ 37 NONAME
+	_ZN16CaNotifierFilter11setParentIdEi @ 38 NONAME
+	_ZN16CaNotifierFilter12setEntryRoleE6QFlagsI9EntryRoleE @ 39 NONAME
+	_ZN16CaNotifierFilter12setTypeNamesERK11QStringList @ 40 NONAME
+	_ZN16CaNotifierFilter6setIdsERK5QListIiE @ 41 NONAME
+	_ZN16CaNotifierFilterC1ERK7CaQuery @ 42 NONAME
+	_ZN16CaNotifierFilterC1ERKS_ @ 43 NONAME
+	_ZN16CaNotifierFilterC1Ev @ 44 NONAME
+	_ZN16CaNotifierFilterC2ERK7CaQuery @ 45 NONAME
+	_ZN16CaNotifierFilterC2ERKS_ @ 46 NONAME
+	_ZN16CaNotifierFilterC2Ev @ 47 NONAME
+	_ZN16CaNotifierFilterD0Ev @ 48 NONAME
+	_ZN16CaNotifierFilterD1Ev @ 49 NONAME
+	_ZN16CaNotifierFilterD2Ev @ 50 NONAME
+	_ZN16CaNotifierFilteraSERKS_ @ 51 NONAME
+	_ZN17CaIconDescription11setFilenameERK7QString @ 52 NONAME
+	_ZN17CaIconDescription16setApplicationIdERK7QString @ 53 NONAME
+	_ZN17CaIconDescription5setIdEi @ 54 NONAME
+	_ZN17CaIconDescription9setSkinIdERK7QString @ 55 NONAME
+	_ZN17CaIconDescriptionC1ERKS_ @ 56 NONAME
+	_ZN17CaIconDescriptionC1Ev @ 57 NONAME
+	_ZN17CaIconDescriptionC2ERKS_ @ 58 NONAME
+	_ZN17CaIconDescriptionC2Ev @ 59 NONAME
+	_ZN17CaIconDescriptionD1Ev @ 60 NONAME
+	_ZN17CaIconDescriptionD2Ev @ 61 NONAME
+	_ZN17CaIconDescriptionaSERKS_ @ 62 NONAME
+	_ZN17CaMenuIconUtility12getEntryIconERK7CaEntryRK6QSizeF @ 63 NONAME
+	_ZN17CaMenuIconUtility18getApplicationIconEiRK6QSizeF @ 64 NONAME
+	_ZN21CaClientNotifierProxy10newSessionERi @ 65 NONAME
+	_ZN21CaClientNotifierProxy11findSessionEv @ 66 NONAME
+	_ZN21CaClientNotifierProxy11qt_metacallEN11QMetaObject4CallEiPPv @ 67 NONAME
+	_ZN21CaClientNotifierProxy11qt_metacastEPKc @ 68 NONAME
+	_ZN21CaClientNotifierProxy15connectSessionsEv @ 69 NONAME
+	_ZN21CaClientNotifierProxy16registerNotifierEPK16CaNotifierFilterN17CaNotifierPrivate12NotifierTypeEPK13IDataObserver @ 70 NONAME
+	_ZN21CaClientNotifierProxy16staticMetaObjectE @ 71 NONAME DATA 16
+	_ZN21CaClientNotifierProxy18unregisterNotifierERK16CaNotifierFilterN17CaNotifierPrivate12NotifierTypeE @ 72 NONAME
+	_ZN21CaClientNotifierProxy19getStaticMetaObjectEv @ 73 NONAME
+	_ZN21CaClientNotifierProxyC1EP7QObject @ 74 NONAME
+	_ZN21CaClientNotifierProxyC2EP7QObject @ 75 NONAME
+	_ZN21CaClientNotifierProxyD0Ev @ 76 NONAME
+	_ZN21CaClientNotifierProxyD1Ev @ 77 NONAME
+	_ZN21CaClientNotifierProxyD2Ev @ 78 NONAME
+	_ZN7CaEntry12setAttributeERK7QStringS2_ @ 79 NONAME
+	_ZN7CaEntry14setDescriptionERK7QStringb @ 80 NONAME
+	_ZN7CaEntry16setEntryTypeNameERK7QString @ 81 NONAME
+	_ZN7CaEntry18setIconDescriptionERK17CaIconDescription @ 82 NONAME
+	_ZN7CaEntry5setIdEi @ 83 NONAME
+	_ZN7CaEntry7setTextERK7QStringb @ 84 NONAME
+	_ZN7CaEntry8setFlagsE6QFlagsI9EntryFlagE @ 85 NONAME
+	_ZN7CaEntryC1E9EntryRole @ 86 NONAME
+	_ZN7CaEntryC1ERKS_ @ 87 NONAME
+	_ZN7CaEntryC2E9EntryRole @ 88 NONAME
+	_ZN7CaEntryC2ERKS_ @ 89 NONAME
+	_ZN7CaEntryD0Ev @ 90 NONAME
+	_ZN7CaEntryD1Ev @ 91 NONAME
+	_ZN7CaEntryD2Ev @ 92 NONAME
+	_ZN7CaEntryaSERKS_ @ 93 NONAME
+	_ZN7CaQuery10setChildIdEi @ 94 NONAME
+	_ZN7CaQuery10setFlagsOnERK6QFlagsI9EntryFlagE @ 95 NONAME
+	_ZN7CaQuery11setFlagsOffERK6QFlagsI9EntryFlagE @ 96 NONAME
+	_ZN7CaQuery11setParentIdEi @ 97 NONAME
+	_ZN7CaQuery12setAttributeERK7QStringS2_ @ 98 NONAME
+	_ZN7CaQuery13setEntryRolesE6QFlagsI9EntryRoleE @ 99 NONAME
+	_ZN7CaQuery15removeAttributeERK7QString @ 100 NONAME
+	_ZN7CaQuery16addEntryTypeNameERK7QString @ 101 NONAME
+	_ZN7CaQuery17setEntryTypeNamesERK11QStringList @ 102 NONAME
+	_ZN7CaQuery5clearEv @ 103 NONAME
+	_ZN7CaQuery7setSortE13SortAttributeN2Qt9SortOrderE @ 104 NONAME
+	_ZN7CaQuery8setCountEj @ 105 NONAME
+	_ZN7CaQueryC1ERKS_ @ 106 NONAME
+	_ZN7CaQueryC1Ev @ 107 NONAME
+	_ZN7CaQueryC2ERKS_ @ 108 NONAME
+	_ZN7CaQueryC2Ev @ 109 NONAME
+	_ZN7CaQueryD1Ev @ 110 NONAME
+	_ZN7CaQueryD2Ev @ 111 NONAME
+	_ZN7CaQueryaSERKS_ @ 112 NONAME
+	_ZN9CaService10m_instanceE @ 113 NONAME DATA 8
+	_ZN9CaService11qt_metacallEN11QMetaObject4CallEiPPv @ 114 NONAME
+	_ZN9CaService11qt_metacastEPKc @ 115 NONAME
+	_ZN9CaService12entryChangedERK7CaEntry10ChangeType @ 116 NONAME
+	_ZN9CaService12entryChangedEi10ChangeType @ 117 NONAME
+	_ZN9CaService12entryTouchedEi @ 118 NONAME
+	_ZN9CaService16staticMetaObjectE @ 119 NONAME DATA 16
+	_ZN9CaService19getStaticMetaObjectEv @ 120 NONAME
+	_ZN9CaService19groupContentChangedEi @ 121 NONAME
+	_ZN9CaService8instanceEv @ 122 NONAME
+	_ZN9CaServiceC1EP7QObject @ 123 NONAME
+	_ZN9CaServiceC2EP7QObject @ 124 NONAME
+	_ZN9CaServiceD0Ev @ 125 NONAME
+	_ZN9CaServiceD1Ev @ 126 NONAME
+	_ZN9CaServiceD2Ev @ 127 NONAME
+	_ZNK10CaNotifier10metaObjectEv @ 128 NONAME
+	_ZNK11CaItemModel10metaObjectEv @ 129 NONAME
+	_ZNK11CaItemModel11columnCountERK11QModelIndex @ 130 NONAME
+	_ZNK11CaItemModel11getIconSizeEv @ 131 NONAME
+	_ZNK11CaItemModel12isAutoUpdateEv @ 132 NONAME
+	_ZNK11CaItemModel20secondLineVisibilityEv @ 133 NONAME
+	_ZNK11CaItemModel4dataERK11QModelIndexi @ 134 NONAME
+	_ZNK11CaItemModel4rootEv @ 135 NONAME
+	_ZNK11CaItemModel5entryERK11QModelIndex @ 136 NONAME
+	_ZNK11CaItemModel5indexEiiRK11QModelIndex @ 137 NONAME
+	_ZNK11CaItemModel6parentERK11QModelIndex @ 138 NONAME
+	_ZNK11CaItemModel8rowCountERK11QModelIndex @ 139 NONAME
+	_ZNK16CaNotifierFilter11getParentIdEv @ 140 NONAME
+	_ZNK16CaNotifierFilter12getEntryRoleEv @ 141 NONAME
+	_ZNK16CaNotifierFilter12getTypeNamesEv @ 142 NONAME
+	_ZNK16CaNotifierFilter6getIdsEv @ 143 NONAME
+	_ZNK17CaIconDescription13applicationIdEv @ 144 NONAME
+	_ZNK17CaIconDescription2idEv @ 145 NONAME
+	_ZNK17CaIconDescription6skinIdEv @ 146 NONAME
+	_ZNK17CaIconDescription8filenameEv @ 147 NONAME
+	_ZNK21CaClientNotifierProxy10metaObjectEv @ 148 NONAME
+	_ZNK21CaClientNotifierProxy11findSessionERK16CaNotifierFilterN22CCaInnerNotifierFilter13TNotifierTypeE @ 149 NONAME
+	_ZNK7CaEntry10attributesEv @ 150 NONAME
+	_ZNK7CaEntry11descriptionEv @ 151 NONAME
+	_ZNK7CaEntry11isLocalizedE16LocalizationType @ 152 NONAME
+	_ZNK7CaEntry13entryTypeNameEv @ 153 NONAME
+	_ZNK7CaEntry15iconDescriptionEv @ 154 NONAME
+	_ZNK7CaEntry2idEv @ 155 NONAME
+	_ZNK7CaEntry4roleEv @ 156 NONAME
+	_ZNK7CaEntry4textEv @ 157 NONAME
+	_ZNK7CaEntry5flagsEv @ 158 NONAME
+	_ZNK7CaEntry8makeIconERK6QSizeF @ 159 NONAME
+	_ZNK7CaEntry9attributeERK7QString @ 160 NONAME
+	_ZNK7CaQuery10attributesEv @ 161 NONAME
+	_ZNK7CaQuery10entryRolesEv @ 162 NONAME
+	_ZNK7CaQuery14entryTypeNamesEv @ 163 NONAME
+	_ZNK7CaQuery5countEv @ 164 NONAME
+	_ZNK7CaQuery7childIdEv @ 165 NONAME
+	_ZNK7CaQuery7flagsOnEv @ 166 NONAME
+	_ZNK7CaQuery7getSortER13SortAttributeRN2Qt9SortOrderE @ 167 NONAME
+	_ZNK7CaQuery8flagsOffEv @ 168 NONAME
+	_ZNK7CaQuery8parentIdEv @ 169 NONAME
+	_ZNK7CaQuery9attributeERK7QString @ 170 NONAME
+	_ZNK9CaService10customSortEiR5QListIiE @ 171 NONAME
+	_ZNK9CaService10getEntriesERK5QListIiE @ 172 NONAME
+	_ZNK9CaService10getEntriesERK7CaQuery @ 173 NONAME
+	_ZNK9CaService10metaObjectEv @ 174 NONAME
+	_ZNK9CaService11createEntryERK7CaEntry @ 175 NONAME
+	_ZNK9CaService11getEntryIdsERK7CaQuery @ 176 NONAME
+	_ZNK9CaService11removeEntryERK7CaEntry @ 177 NONAME
+	_ZNK9CaService11removeEntryEi @ 178 NONAME
+	_ZNK9CaService11updateEntryERK7CaEntry @ 179 NONAME
+	_ZNK9CaService13removeEntriesERK5QListI14QSharedPointerI7CaEntryEE @ 180 NONAME
+	_ZNK9CaService13removeEntriesERK5QListIiE @ 181 NONAME
+	_ZNK9CaService14createNotifierERK16CaNotifierFilter @ 182 NONAME
+	_ZNK9CaService14executeCommandERK7CaEntryRK7QString @ 183 NONAME
+	_ZNK9CaService14executeCommandEiRK7QString @ 184 NONAME
+	_ZNK9CaService18appendEntryToGroupERK7CaEntryS2_ @ 185 NONAME
+	_ZNK9CaService18appendEntryToGroupEii @ 186 NONAME
+	_ZNK9CaService19prependEntryToGroupERK7CaEntryS2_ @ 187 NONAME
+	_ZNK9CaService19prependEntryToGroupEii @ 188 NONAME
+	_ZNK9CaService20appendEntriesToGroupERK7CaEntryRK5QListI14QSharedPointerIS0_EE @ 189 NONAME
+	_ZNK9CaService20appendEntriesToGroupEiRK5QListIiE @ 190 NONAME
+	_ZNK9CaService20insertEntryIntoGroupERK7CaEntryS2_i @ 191 NONAME
+	_ZNK9CaService20insertEntryIntoGroupEiii @ 192 NONAME
+	_ZNK9CaService20removeEntryFromGroupERK7CaEntryS2_ @ 193 NONAME
+	_ZNK9CaService20removeEntryFromGroupEii @ 194 NONAME
+	_ZNK9CaService21prependEntriesToGroupERK7CaEntryRK5QListI14QSharedPointerIS0_EE @ 195 NONAME
+	_ZNK9CaService21prependEntriesToGroupEiRK5QListIiE @ 196 NONAME
+	_ZNK9CaService22insertEntriesIntoGroupERK7CaEntryRK5QListI14QSharedPointerIS0_EEi @ 197 NONAME
+	_ZNK9CaService22insertEntriesIntoGroupEiRK5QListIiEi @ 198 NONAME
+	_ZNK9CaService22removeEntriesFromGroupERK7CaEntryRK5QListI14QSharedPointerIS0_EE @ 199 NONAME
+	_ZNK9CaService22removeEntriesFromGroupEiRK5QListIiE @ 200 NONAME
+	_ZNK9CaService5touchERK7CaEntry @ 201 NONAME
+	_ZNK9CaService8getEntryEi @ 202 NONAME
+	_ZNK9CaService9lastErrorEv @ 203 NONAME
+	_ZTI10CaNotifier @ 204 NONAME
+	_ZTI11CaItemModel @ 205 NONAME
+	_ZTI16CaNotifierFilter @ 206 NONAME
+	_ZTI21CaClientNotifierProxy @ 207 NONAME
+	_ZTI7CaEntry @ 208 NONAME
+	_ZTI9CaService @ 209 NONAME
+	_ZTV10CaNotifier @ 210 NONAME
+	_ZTV11CaItemModel @ 211 NONAME
+	_ZTV16CaNotifierFilter @ 212 NONAME
+	_ZTV21CaClientNotifierProxy @ 213 NONAME
+	_ZTV7CaEntry @ 214 NONAME
+	_ZTV9CaService @ 215 NONAME
+
--- a/contentstorage/caclient/inc/caentry_p.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/inc/caentry_p.h	Thu Sep 02 20:45:03 2010 +0300
@@ -61,7 +61,7 @@
     QString attribute(const QString &name) const;
     void setAttribute(const QString &name, const QString &value);
 
-    HbIcon makeIcon(const QSize &size) const;
+    HbIcon makeIcon(const QSizeF &size) const;
 
     EntryRole role() const;
     void setRole(const EntryRole &role);
--- a/contentstorage/caclient/inc/cahandler.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/inc/cahandler.h	Thu Sep 02 20:45:03 2010 +0300
@@ -24,7 +24,7 @@
 class QString;
 class CaEntry;
 
-class CaHandler // move this header to caclient/inc
+class CaHandler
 {
 public:
     virtual ~CaHandler() {}
--- a/contentstorage/caclient/inc/caiconcache.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/inc/caiconcache.h	Thu Sep 02 20:45:03 2010 +0300
@@ -36,15 +36,14 @@
 public:
 
     static CaIconCache *cache();
-    bool exist(const CaEntry &entry, const QSize &size);
-    HbIcon icon(const CaEntry &entry, const QSize &size);
-    void insert(const CaEntry &entry, const QSize &size, const HbIcon &icon);
+    HbIcon icon(const CaEntry &entry, const QSizeF &size);
+    void insert(const CaEntry &entry, const QSizeF &size, const HbIcon &icon);
 
 private:
 
     explicit CaIconCache(QObject *parent = 0);
     ~CaIconCache();
-    QString key(const CaEntry &entry, const QSize &size = QSize());
+    QString key(const CaEntry &entry, const QSizeF &size = QSizeF());
 
 private slots:
 
--- a/contentstorage/caclient/inc/caitemmodel_p.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/inc/caitemmodel_p.h	Thu Sep 02 20:45:03 2010 +0300
@@ -52,8 +52,8 @@
     void setAutoUpdate(bool autoUpdate);
     void setSort(SortAttribute sortAttribute, Qt::SortOrder sortOrder =
                      Qt::AscendingOrder);
-    void setIconSize(const QSize &size);
-    QSize getIconSize() const;
+    void setIconSize(const QSizeF &size);
+    QSizeF getIconSize() const;
     QModelIndex root();
     QSharedPointer<CaEntry> entry(const QModelIndex &modelIndex) const;
     void setSecondLineVisibility(bool secondLineVisibility);
@@ -106,7 +106,7 @@
     QSharedPointer<CaService> mService;
     CaItemModelList mEntries;
     CaNotifier *mNotifier;//own
-    QSize mSize;
+    QSizeF mSize;
     bool mSecondLineVisibility;
 
 };
--- a/contentstorage/caclient/s60/inc/camenuiconmifutility.h	Wed Aug 18 10:05:49 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +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 MENUICONMIFUTILITY_H
-#define MENUICONMIFUTILITY_H
-
-// INCLUDES
-
-// CLASS DECLARATION
-#include <cadefs.h>
-
-/**
- *  CaMenuIconMifUtility
- *
- */
-class CaMenuIconMifUtility
-{
-public:
-    
-    /**
-     * Create pixmap from filename
-     * @param fileName icon filename.
-     * @param icon size.
-     * @param pixmap to fill.
-     * @return void.
-     */
-    static void GetPixmapByFilenameL(TDesC& fileName, const QSize &size,
-            QPixmap& pixmap);
-};
-
-#endif // MENUICONMIFUTILITY_H
--- a/contentstorage/caclient/s60/src/camenuiconmifutility.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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 <e32base.h>
-#include <QBitmap>
-#include <QDebug>
-#include <AknIconUtils.h> // avkon
-#include <apgicnfl.h> // fbsbitmap
-
-#include "cabitmapadapter.h"
-#include "camenuiconmifutility.h"
-
-
-void CaMenuIconMifUtility::GetPixmapByFilenameL(TDesC& fileName,
-        const QSize &size, QPixmap& pixmap)
-{
-    CFbsBitmap *bitamp(0);
-    CFbsBitmap *mask(0);
-
-    TInt bitmapIndex = 0;
-    TInt maskIndex = 1;    
-    // it will change bitmap ids if it is mif (checking inside)
-    AknIconUtils::ValidateLogicalAppIconId( fileName,
-                bitmapIndex, maskIndex );
-    AknIconUtils::CreateIconLC( bitamp, mask, fileName,
-            bitmapIndex, maskIndex );
-
-    if (AknIconUtils::IsMifFile(fileName)) {
-        AknIconUtils::DisableCompression(bitamp);
-        AknIconUtils::SetSize(bitamp, TSize(size.width(), size.height()),
-                        EAspectRatioPreservedAndUnusedSpaceRemoved);
-    
-        CaBitmapAdapter::fromBitmapAndMaskToPixmapL(bitamp, mask, pixmap);
-    } else {
-        CaBitmapAdapter::fromBitmapAndMaskToPixmapL(bitamp, mask, pixmap);
-        pixmap.scaled(size);
-    }
-    
-    // bitmap and icon, AknsUtils::CreateIconLC doesn't specify the order
-    CleanupStack::Pop(2);
-}
--- a/contentstorage/caclient/s60/src/camenuiconutility.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/s60/src/camenuiconutility.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -29,22 +29,22 @@
 #include <apgicnfl.h>
 
 #include <HbIcon>
+
 #include "camenuiconutility.h"
-#include "camenuiconmifutility.h"
 #include "cabitmapadapter.h"
 #include "caentry.h"
 #include "caquery.h"
 #include "caservice.h"
 #include "cadef.h"
 
-const QString appUidAttributeName("application:uid");
+const char appUidAttributeName[] = "application:uid";
 
 /*!
  Get icon from entry.
  \param entry const reference to CaEntry.
  \retval icon.
  */
-LOCAL_C HbIcon getIconFromEntry(const CaEntry& entry)
+LOCAL_C HbIcon getIconFromEntry(const CaEntry& entry, const QSizeF &size)
 {
     HbIcon icon;
     QString skinId(entry.iconDescription().skinId());
@@ -56,6 +56,11 @@
         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()));
+            }
         }
     }
     return icon;
@@ -67,7 +72,7 @@
  \param sie const reference to icon size.
  \retval icon.
  */
-LOCAL_C HbIcon getIconFromApparcL(int uidValue, const QSize &size)
+LOCAL_C HbIcon getIconFromApparcL(int uidValue, const QSizeF &size)
 {
     HbIcon icon;
     
@@ -103,7 +108,8 @@
             CaBitmapAdapter::fromBitmapAndMaskToPixmapL(apaMaskedBitmap,
                     apaMaskedBitmap->Mask(), pixmap);
     
-            pixmap = pixmap.scaled(size, Qt::KeepAspectRatioByExpanding);
+            pixmap = pixmap.scaled(size.toSize(), 
+                Qt::KeepAspectRatioByExpanding);
             icon = HbIcon(QIcon(pixmap));
         } else {
             HBufC* fileNameFromApparc = NULL;
@@ -112,11 +118,13 @@
             if (err2 == KErrNone) {
                 QString fileName = XQConversions::s60DescToQString(
                         fileNameFromApparc->Des());
-                if (fileName.contains(QString(".mif")) || fileName.contains(QString(".mbm"))) {
-                    
-                    TPtr ptr(fileNameFromApparc->Des());
-                    CaMenuIconMifUtility::GetPixmapByFilenameL(ptr,size,pixmap);
-                    icon = HbIcon(QIcon(pixmap));
+                if (fileName.endsWith(QLatin1String(".mif"),
+                        Qt::CaseInsensitive) ||
+                    fileName.endsWith(QLatin1String(".mbm"),
+                        Qt::CaseInsensitive)) {
+                    icon = HbIcon(QIcon(fileName));
+                    // Icon should be valid.
+                    icon.setSize(QSizeF(0.0, 0.0));
                 } else {
                     icon = HbIcon(fileName);
                 }
@@ -189,7 +197,7 @@
  \retval icon.
  */
 HbIcon CaMenuIconUtility::getApplicationIcon(int uid,
-        const QSize &size)
+        const QSizeF &size)
 {
     HbIcon icon;
     CaEntry entry;
@@ -205,10 +213,10 @@
  \retval icon.
  */
 HbIcon CaMenuIconUtility::getEntryIcon(const CaEntry& entry,
-        const QSize &size)
+        const QSizeF &size)
 {
     HbIcon icon;
-    icon = getIconFromEntry(entry);
+    icon = getIconFromEntry(entry, size);
  
     if (icon.isNull() || !(icon.size().isValid())) {
         QString uidString(entry.attribute(appUidAttributeName));
@@ -234,3 +242,4 @@
     }
     return icon;
 }
+
--- a/contentstorage/caclient/src/caentry.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/src/caentry.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -418,10 +418,10 @@
  icon.size() == iconSize;
  \endcode
  */
-HbIcon CaEntry::makeIcon(const QSize &size) const
+HbIcon CaEntry::makeIcon(const QSizeF &size) const
 {
     CACLIENTTEST_FUNC_ENTRY("CaEntry::makeIcon");
-    HbIcon icon = CaIconCache::cache()->icon(*this,size);
+    HbIcon icon = CaIconCache::cache()->icon(*this, size);
     if (icon.isNull()) {
         icon = m_d->makeIcon(size);
         CaIconCache::cache()->insert(*this, size, icon);
@@ -645,7 +645,7 @@
  \param  size icon size to display
  \retval created icon (HbIcon).
  */
-HbIcon CaEntryPrivate::makeIcon(const QSize &size) const
+HbIcon CaEntryPrivate::makeIcon(const QSizeF &size) const
 {
     return CaMenuIconUtility::getEntryIcon(*m_q, size);
 }
--- a/contentstorage/caclient/src/caiconcache.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/src/caiconcache.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -90,22 +90,6 @@
 }
 
 /*!
- Checks if icon is already cached
- \param entry an entry
- \param size size of an icon
- \retval true if icon exist in cache
-
- */
-bool CaIconCache::exist(const CaEntry &entry, const QSize &size)
-{
-    CACLIENTTEST_FUNC_ENTRY("CaIconCache::exist");
-    bool result(false);
-    result = mCache.contains(key(entry,size));
-    CACLIENTTEST_FUNC_EXIT("CaIconCache::exist");
-    return result;
-}
-
-/*!
  Returns an icon from a cache
  \param entry an entry
  \param size size of an icon
@@ -113,7 +97,7 @@
 
  */
 
-HbIcon CaIconCache::icon(const CaEntry &entry, const QSize &size)
+HbIcon CaIconCache::icon(const CaEntry &entry, const QSizeF &size)
 {
     CACLIENTTEST_FUNC_ENTRY("CaIconCache::icon");
     HbIcon result;
@@ -131,7 +115,7 @@
  \param icon icon to be cached
 
  */
-void CaIconCache::insert(const CaEntry &entry, const QSize &size,
+void CaIconCache::insert(const CaEntry &entry, const QSizeF &size,
                          const HbIcon &icon)
 {
     CACLIENTTEST_FUNC_ENTRY("CaIconCache::insert");
@@ -166,7 +150,7 @@
  \return key
  */
 
-QString CaIconCache::key(const CaEntry &entry, const QSize &size)
+QString CaIconCache::key(const CaEntry &entry, const QSizeF &size)
 {
     QString key;
     if (!entry.iconDescription().filename().isEmpty()) {
@@ -179,9 +163,9 @@
     }
     if (size.isValid()) {
         key.append(separator);
-        key.append(size.height());
+        key += QString::number(size.height());
         key.append(separator);
-        key.append(size.width());
+        key += QString::number(size.width());
     }
     return key;
 }
--- a/contentstorage/caclient/src/caitemmodel.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/src/caitemmodel.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -25,7 +25,7 @@
 #include "caclienttest_global.h"
 
 // Constants
-const QSize defaultIconSize(30, 30);
+const QSizeF defaultIconSize(30, 30);
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -283,7 +283,7 @@
  \endcode
 
  */
-void CaItemModel::setIconSize(const QSize &size)
+void CaItemModel::setIconSize(const QSizeF &size)
 {
     m_d->setIconSize(size);
 }
@@ -292,7 +292,7 @@
  Method for getting icon size
  \param  size icon size to display
  */
-QSize CaItemModel::getIconSize() const
+QSizeF CaItemModel::getIconSize() const
 {
     return m_d->getIconSize();
 }
@@ -541,7 +541,7 @@
  Method for setting icon size
  \param size icon size to display
  */
-void CaItemModelPrivate::setIconSize(const QSize &size)
+void CaItemModelPrivate::setIconSize(const QSizeF &size)
 {
     if (mSize == size)
         return;
@@ -554,7 +554,7 @@
  Method for getting icon size
  \retval icon size to display
  */
-QSize CaItemModelPrivate::getIconSize() const
+QSizeF CaItemModelPrivate::getIconSize() const
 {
     return mSize;
 }
@@ -708,6 +708,7 @@
     CaQuery* query = new CaQuery(mQuery);
     QString compId(QString().setNum(componentId));
     query->setAttribute(QString("component_id"), compId);
+    query->setFlagsOn(RemovableEntryFlag | VisibleEntryFlag);
     QList<int> ids = mService->getEntryIds(*query);
     delete query;
     return ids;
--- a/contentstorage/caclient/src/caservice.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/src/caservice.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -19,6 +19,7 @@
 #include <QCoreApplication>
 #include <QString>
 #include <QDebug>
+#include <QCoreApplication>
 
 #include "caservice.h"
 #include "caservice_p.h"
@@ -107,6 +108,9 @@
 
         service = QSharedPointer<CaService>(new CaService);
         m_instance = service.toWeakRef();
+        
+        const QString iconEnginesPluginPath("resource/iconengines/plugins");
+        QCoreApplication::addLibraryPath(iconEnginesPluginPath);
     }
     return service;
 }
--- a/contentstorage/caclient/stub/inc/caobjectadapter.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/stub/inc/caobjectadapter.h	Thu Sep 02 20:45:03 2010 +0300
@@ -32,7 +32,7 @@
 {
 public:
 
-    static HbIcon makeIcon(const CaEntry &entry, const QSize &size);
+    static HbIcon makeIcon(const CaEntry &entry, const QSizeF &size);
 
     static void setId(CaEntry &entry, int id);
 
--- a/contentstorage/caclient/stub/src/camenuiconutility.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/stub/src/camenuiconutility.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -30,8 +30,9 @@
  \retval icon.
  */
 HbIcon CaMenuIconUtility::getApplicationIcon(int uid,
-        const QSize &size)
+        const QSizeF &size)
 {
+    Q_UNUSED(size);
     HbIcon icon;
     return icon;
 }
@@ -43,7 +44,7 @@
  \retval icon.
  */
 HbIcon CaMenuIconUtility::getEntryIcon(const CaEntry& entry,
-        const QSize &size)
+        const QSizeF &size)
 {
     HbIcon icon;
     QString filename(entry.iconDescription().filename());
--- a/contentstorage/caclient/stub/src/caobjectadapter.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/caclient/stub/src/caobjectadapter.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -27,11 +27,12 @@
 /*!
  * Create an icon.
  * \param entry a CaEntry instance.
- * \param size a size of the icon
+ * \param size Currently ignored.
  * \retval a HbIcon instance.
  */
-HbIcon CaObjectAdapter::makeIcon(const CaEntry &entry, const QSize &size)
+HbIcon CaObjectAdapter::makeIcon(const CaEntry &entry, const QSizeF &size)
 {
+    Q_UNUSED(size);
     HbIcon icon;
     QString filename(entry.iconDescription().filename());
     if (!filename.isEmpty()) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/camificonengine/camificonengine.pri	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,19 @@
+#
+# 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:
+#
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/camificonengine/camificonengine.pro	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,60 @@
+#
+# 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  = camificon
+
+PLUGIN_SUBDIR = /resource/qt/plugins/iconengines
+
+include (../../common.pri)
+
+QTDIR_build:DESTDIR  = $$QT_BUILD_TREE/plugins/iconengines
+target.path += $$[PLUGIN_SUBDIR]
+INSTALLS += target
+
+CONFIG += qt plugin
+
+TARGET = $$qtLibraryTarget($$TARGET)
+
+symbian: {
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = All -Tcb
+    TARGET = $${TARGET}$${QT_LIBINFIX}
+    load(armcc_warnings)
+
+    # load the environment specific feature definitions
+    exists($${EPOCROOT}epoc32/tools/qt/mkspecs/features/environment.prf) {
+        load($${EPOCROOT}epoc32/tools/qt/mkspecs/features/environment.prf)
+    }
+    LIBS +=  -laknicon
+}
+
+symbian: plugin { # copy qtstub and manifest
+
+    pluginstub.sources = $${TARGET}.dll
+    pluginstub.path = $$PLUGIN_SUBDIR
+
+    DEPLOYMENT += pluginstub
+
+    qtplugins.path = $$PLUGIN_SUBDIR
+    qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin    
+    
+    for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin z:$$qtplugins.path/$$basename(qtplugin)"
+}
+
+symbian:TARGET.UID3=0x2002DCF8
+
+include(camificonengine.pri)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/camificonengine/inc/cambmiconengine.h	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,64 @@
+/*
+ * 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: cambmiconengine.h
+ *
+ */
+
+#ifndef HSMBMICONENGINE_H
+#define HSMBMICONENGINE_H
+
+#include <QIconEngineV2>
+#include <QPixmap>
+#include <QCache>
+
+class CaMbmIconEngine : public QIconEngineV2
+{
+public:
+    CaMbmIconEngine();
+    CaMbmIconEngine(const CaMbmIconEngine &other);
+    ~CaMbmIconEngine();
+    void paint(QPainter *painter, const QRect &rect,
+               QIcon::Mode mode, QIcon::State state);
+    
+    QSize actualSize(const QSize &size,
+        QIcon::Mode mode,
+        QIcon::State state);
+    
+    QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
+
+    void addPixmap(const QPixmap &pixmap,
+        QIcon::Mode mode,
+        QIcon::State state);
+
+    void addFile(const QString &fileName,
+        const QSize &size,
+        QIcon::Mode mode,
+        QIcon::State state);
+
+    QString key() const;
+    QIconEngineV2 *clone() const;
+    
+private:
+    QString pmcKey(const QSize &size);
+    void getPixmapFromBitmap(const QSize &size, QPixmap& pixmap);
+    void cacheBitmapL();
+    
+private:
+    QString mMbmFilename;
+    QCache<QString, QPixmap> mCache;
+    CFbsBitmap *mBitmapCached;
+    CFbsBitmap *mMaskBitmapCached;
+};
+
+#endif // HSMBMICONENGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/camificonengine/inc/camificonengine.h	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,64 @@
+/*
+ * 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: camificonengine.h
+ *
+ */
+
+#ifndef CAMIFICONENGINE_H
+#define CAMIFICONENGINE_H
+
+#include <QIconEngineV2>
+#include <QPixmap>
+#include <QCache>
+
+class CaMifIconEngine : public QIconEngineV2
+{
+public:
+    CaMifIconEngine();
+    CaMifIconEngine(const CaMifIconEngine &other);
+    ~CaMifIconEngine();
+    void paint(QPainter *painter, const QRect &rect,
+               QIcon::Mode mode, QIcon::State state);
+    
+    QSize actualSize(const QSize &size,
+        QIcon::Mode mode,
+        QIcon::State state);
+    
+    QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
+
+    void addPixmap(const QPixmap &pixmap,
+        QIcon::Mode mode,
+        QIcon::State state);
+
+    void addFile(const QString &fileName,
+        const QSize &size,
+        QIcon::Mode mode,
+        QIcon::State state);
+
+    QString key() const;
+    QIconEngineV2 *clone() const;
+    
+private:
+    QString pmcKey(const QSize &size);
+    void getPixmapFromBitmap(const QSize &size, QPixmap& pixmap);
+    void cacheBitmapL();
+    
+private:
+    QString mMifFilename;
+    QCache<QString, QPixmap> mCache;
+    CFbsBitmap *mBitmapCached;
+    CFbsBitmap *mMaskBitmapCached;
+};
+
+#endif // CAMIFICONENGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/camificonengine/src/cambmiconengine.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,186 @@
+/*
+ * 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: cambmiconengine.cpp
+ *
+ */
+
+#include <QPainter>
+#include <QPixmap>
+#include <QFileInfo>
+#include <QDebug>
+
+#include <AknIconUtils.h> // avkon
+#include <apgicnfl.h> // fbsbitmap
+
+#include "cambmiconengine.h"
+
+const int cacheSize = 4;
+
+inline QString CaMbmIconEngine::pmcKey(const QSize &size)
+{ 
+    return QString::number((size.width()<<11)|size.height(), 16);
+}
+
+CaMbmIconEngine::CaMbmIconEngine()
+    : QIconEngineV2(),
+      mMbmFilename(),
+      mCache(cacheSize),
+      mBitmapCached(0),
+      mMaskBitmapCached(0)
+{
+}
+
+CaMbmIconEngine::CaMbmIconEngine(const CaMbmIconEngine &other) :
+    QIconEngineV2(other),
+    mMbmFilename(other.mMbmFilename),
+    mCache(cacheSize),
+    mBitmapCached(0),
+    mMaskBitmapCached(0)
+{
+}
+
+CaMbmIconEngine::~CaMbmIconEngine()
+{
+    mCache.clear();
+    delete mBitmapCached;
+    delete mMaskBitmapCached;
+}
+
+void CaMbmIconEngine::cacheBitmapL()
+{
+    CFbsBitmap *bitmap(0);
+    CFbsBitmap *maskBitmap(0);
+
+    TInt bitmapIndex = 0;
+    TInt maskIndex = 1;
+    TPtrC16 filename(
+        reinterpret_cast<const TUint16*>(mMbmFilename.utf16()));
+    AknIconUtils::CreateIconLC( bitmap, maskBitmap, filename,
+        bitmapIndex, maskIndex );
+    mBitmapCached = bitmap;
+    mMaskBitmapCached = maskBitmap;
+    // bitmap and icon, AknsUtils::CreateIconLC doesn't specify the order
+    CleanupStack::Pop(2);
+}
+void CaMbmIconEngine::getPixmapFromBitmap(const QSize &size, QPixmap& pixmap)
+{
+    if (!mBitmapCached || !mMaskBitmapCached) {
+        TRAP_IGNORE(cacheBitmapL());
+    }
+    if (mBitmapCached && mMaskBitmapCached) {
+        CFbsBitmap *bitmap = mBitmapCached;
+        CFbsBitmap *maskBitmap = mMaskBitmapCached;
+   
+        pixmap = pixmap.fromSymbianCFbsBitmap(bitmap);
+        QPixmap mask;
+        mask = mask.fromSymbianCFbsBitmap(maskBitmap);
+        pixmap.setAlphaChannel(mask);
+        pixmap = pixmap.scaled(size, Qt::KeepAspectRatioByExpanding);
+    }
+}
+
+QSize CaMbmIconEngine::actualSize(const QSize &size,
+    QIcon::Mode mode,
+    QIcon::State state)
+{
+    Q_UNUSED(mode);
+    Q_UNUSED(state);
+    QString key(pmcKey(size));
+    qDebug() << "pmckey: " << key;
+    QSize realSize;
+            
+    if (mCache.contains(key)) {
+        realSize = size;
+    } else {
+        QPixmap pixmap;
+        TPtrC16 filename(
+            reinterpret_cast<const TUint16*>(mMbmFilename.utf16()));
+        getPixmapFromBitmap(size, pixmap);
+        if (!pixmap.isNull()) {
+            QPixmap *cachedPixmap = new QPixmap(pixmap);
+            if (mCache.insert(key, cachedPixmap)) {
+                realSize = size;
+                // mCache has taken ownership of cachedPixmap. 
+                qDebug() << "pmckey INSERT";
+            }
+        }
+    }
+    return realSize;
+}
+
+QPixmap CaMbmIconEngine::pixmap(const QSize &size,
+    QIcon::Mode mode,
+    QIcon::State state)
+{
+    Q_UNUSED(mode);
+    Q_UNUSED(state);
+    QPixmap pixmap;
+    actualSize(size, mode, state);
+    QString key = pmcKey(size);
+    if (mCache.contains(key)) {
+        pixmap = *mCache[key];
+    }
+    return pixmap;
+}
+
+void CaMbmIconEngine::addPixmap(const QPixmap &pixmap,
+    QIcon::Mode mode,
+    QIcon::State state)
+{
+    Q_UNUSED(pixmap);
+    Q_UNUSED(mode);
+    Q_UNUSED(state);
+}
+
+void CaMbmIconEngine::addFile(const QString &fileName,
+    const QSize &size,
+    QIcon::Mode mode,
+    QIcon::State state)
+{
+    Q_UNUSED(size);
+    Q_UNUSED(mode);
+    Q_UNUSED(state);
+    if (mMbmFilename.isEmpty() && !fileName.isEmpty()) {
+        
+        QString abs = fileName;
+        if (fileName.at(0) != QLatin1Char(':')) {
+            abs = QFileInfo(fileName).absoluteFilePath();
+        }
+        if (abs.endsWith(QLatin1String(".mbm"), Qt::CaseInsensitive))
+        {
+            mMbmFilename = abs;
+            mMbmFilename.replace('/', '\\');
+            TRAP_IGNORE(cacheBitmapL());
+        } 
+    }
+}
+
+void CaMbmIconEngine::paint(QPainter *painter, const QRect &rect,
+                           QIcon::Mode mode, QIcon::State state)
+{
+    painter->drawPixmap(rect, pixmap(rect.size(), mode, state));
+}
+
+QString CaMbmIconEngine::key() const
+{
+    return QLatin1String("mbm");
+}
+
+QIconEngineV2 *CaMbmIconEngine::clone() const
+{
+    return new CaMbmIconEngine(*this);
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/camificonengine/src/camificonengine.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,192 @@
+/*
+ * 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: camificonengine.cpp
+ *
+ */
+
+#include <QPainter>
+#include <QPixmap>
+#include <QFileInfo>
+#include <QDebug>
+
+#include <AknIconUtils.h> // avkon
+#include <apgicnfl.h> // fbsbitmap
+
+#include "camificonengine.h"
+
+const int cacheSize = 4;
+
+inline QString CaMifIconEngine::pmcKey(const QSize &size)
+{ 
+    return QString::number((size.width()<<11)|size.height(), 16);
+}
+
+CaMifIconEngine::CaMifIconEngine()
+    : QIconEngineV2(),
+      mMifFilename(),
+      mCache(cacheSize),
+      mBitmapCached(0),
+      mMaskBitmapCached(0)
+{
+}
+
+CaMifIconEngine::CaMifIconEngine(const CaMifIconEngine &other) :
+    QIconEngineV2(other),
+    mMifFilename(other.mMifFilename),
+    mCache(cacheSize),
+    mBitmapCached(0),
+    mMaskBitmapCached(0)
+{
+}
+
+CaMifIconEngine::~CaMifIconEngine()
+{
+    mCache.clear();
+    delete mBitmapCached;
+    delete mMaskBitmapCached;
+}
+
+void CaMifIconEngine::cacheBitmapL()
+{
+    CFbsBitmap *bitmap(0);
+    CFbsBitmap *maskBitmap(0);
+
+    TInt bitmapIndex = 0;
+    TInt maskIndex = 1;
+    TPtrC16 filename(
+        reinterpret_cast<const TUint16*>(mMifFilename.utf16()));
+    // it will change bitmap ids if it is mif (checking inside)
+    AknIconUtils::ValidateLogicalAppIconId( filename,
+        bitmapIndex, maskIndex );
+    AknIconUtils::CreateIconLC( bitmap, maskBitmap, filename,
+        bitmapIndex, maskIndex );
+    mBitmapCached = bitmap;
+    mMaskBitmapCached = maskBitmap;
+    // bitmap and icon, AknsUtils::CreateIconLC doesn't specify the order
+    CleanupStack::Pop(2);
+}
+void CaMifIconEngine::getPixmapFromBitmap(const QSize &size, QPixmap& pixmap)
+{
+    if (!mBitmapCached || !mMaskBitmapCached) {
+        TRAP_IGNORE(cacheBitmapL());
+    }
+    if (mBitmapCached && mMaskBitmapCached) {
+        CFbsBitmap *bitmap = mBitmapCached;
+        CFbsBitmap *maskBitmap = mMaskBitmapCached;
+        AknIconUtils::SetSize(bitmap, TSize(size.width(), size.height()),
+                        EAspectRatioPreservedAndUnusedSpaceRemoved);
+    
+        pixmap = pixmap.fromSymbianCFbsBitmap(bitmap);
+        QPixmap mask;
+        mask = mask.fromSymbianCFbsBitmap(maskBitmap);
+        pixmap.setAlphaChannel(mask);
+    }
+}
+
+QSize CaMifIconEngine::actualSize(const QSize &size,
+    QIcon::Mode mode,
+    QIcon::State state)
+{
+    Q_UNUSED(mode);
+    Q_UNUSED(state);
+    QString key(pmcKey(size));
+    qDebug() << "pmckey: " << key;
+    QSize realSize;
+            
+    if (mCache.contains(key)) {
+        realSize = size;
+    } else {
+        QPixmap pixmap;
+        TPtrC16 filename(
+            reinterpret_cast<const TUint16*>(mMifFilename.utf16()));
+        getPixmapFromBitmap(size, pixmap);
+        if (!pixmap.isNull()) {
+            QPixmap *cachedPixmap = new QPixmap(pixmap);
+            if (mCache.insert(key, cachedPixmap)) {
+                realSize = size;
+                // mCache has taken ownership of cachedPixmap. 
+                qDebug() << "pmckey INSERT";
+            }
+        }
+    }
+    return realSize;
+}
+
+QPixmap CaMifIconEngine::pixmap(const QSize &size,
+    QIcon::Mode mode,
+    QIcon::State state)
+{
+    Q_UNUSED(mode);
+    Q_UNUSED(state);
+    QPixmap pixmap;
+    actualSize(size, mode, state);
+    QString key = pmcKey(size);
+    if (mCache.contains(key)) {
+        pixmap = *mCache[key];
+    }
+    return pixmap;
+}
+
+void CaMifIconEngine::addPixmap(const QPixmap &pixmap,
+    QIcon::Mode mode,
+    QIcon::State state)
+{
+    Q_UNUSED(pixmap);
+    Q_UNUSED(mode);
+    Q_UNUSED(state);
+}
+
+void CaMifIconEngine::addFile(const QString &fileName,
+    const QSize &size,
+    QIcon::Mode mode,
+    QIcon::State state)
+{
+    Q_UNUSED(size);
+    Q_UNUSED(mode);
+    Q_UNUSED(state);
+    // Mif file name is recorded only the first time "addFile" function
+    // is invoked (from QIcon constructor).
+    if (mMifFilename.isEmpty() && !fileName.isEmpty()) {
+        
+        QString abs = fileName;
+        if (fileName.at(0) != QLatin1Char(':')) {
+            abs = QFileInfo(fileName).absoluteFilePath();
+        }
+        if (abs.endsWith(QLatin1String(".mif"), Qt::CaseInsensitive))
+        {
+            mMifFilename = abs;
+            mMifFilename.replace('/', '\\');
+            TRAP_IGNORE(cacheBitmapL());
+        } 
+    }
+}
+
+void CaMifIconEngine::paint(QPainter *painter, const QRect &rect,
+                           QIcon::Mode mode, QIcon::State state)
+{
+    painter->drawPixmap(rect, pixmap(rect.size(), mode, state));
+}
+
+QString CaMifIconEngine::key() const
+{
+    return QLatin1String("mif");
+}
+
+QIconEngineV2 *CaMifIconEngine::clone() const
+{
+    return new CaMifIconEngine(*this);
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/camificonengine/src/main.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,63 @@
+/*
+ * 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:  main.cpp
+ *
+ */
+
+#include <QIconEnginePlugin>
+#include <QStringList>
+#include <QDebug.h>
+
+#include "camificonengine.h"
+#include "cambmiconengine.h"
+
+QT_BEGIN_NAMESPACE
+
+class CaMifIconPlugin : public QIconEnginePluginV2
+{
+public:
+    QStringList keys() const;
+    QIconEngineV2 *create(const QString &filename = QString());
+};
+
+QStringList CaMifIconPlugin::keys() const
+{
+    return QStringList() << QLatin1String("mif") << QLatin1String("mbm");
+}
+
+QIconEngineV2 *CaMifIconPlugin::create(const QString &file)
+{
+    QIconEngineV2 *engine(0);
+    if (file.endsWith(QLatin1String(".mif"), Qt::CaseInsensitive)) {
+        engine  = new CaMifIconEngine;
+    } else if (file.endsWith(QLatin1String(".mbm"), Qt::CaseInsensitive)) {
+        engine  = new CaMbmIconEngine;
+    }
+    return engine;
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT (QT macro)
+
+Q_EXPORT_STATIC_PLUGIN(CaMifIconPlugin)
+Q_EXPORT_PLUGIN2(camificon, CaMifIconPlugin)
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+QT_END_NAMESPACE
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/casoftwareregistry/bwins/casoftwareregistryu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,36 @@
+EXPORTS
+	?componentInstallValue@CaSoftwareRegistry@@SA?AVQString@@XZ @ 1 NONAME ; class QString CaSoftwareRegistry::componentInstallValue(void)
+	??1CaSoftwareRegistry@@EAE@XZ @ 2 NONAME ; CaSoftwareRegistry::~CaSoftwareRegistry(void)
+	?componentTimeKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 3 NONAME ; class QString CaSoftwareRegistry::componentTimeKey(void)
+	?componentHiddenValue@CaSoftwareRegistry@@SA?AVQString@@XZ @ 4 NONAME ; class QString CaSoftwareRegistry::componentHiddenValue(void)
+	?m_instance@CaSoftwareRegistry@@0V?$QWeakPointer@VCaSoftwareRegistry@@@@A @ 5 NONAME ; class QWeakPointer<class CaSoftwareRegistry> CaSoftwareRegistry::m_instance
+	?staticMetaObject@CaSoftwareRegistry@@2UQMetaObject@@B @ 6 NONAME ; struct QMetaObject const CaSoftwareRegistry::staticMetaObject
+	?componentVendorKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 7 NONAME ; class QString CaSoftwareRegistry::componentVendorKey(void)
+	?NewL@CCaProgresScanner@@SAPAV1@PAVIUninstallObserver@@@Z @ 8 NONAME ; class CCaProgresScanner * CCaProgresScanner::NewL(class IUninstallObserver *)
+	?qt_metacall@CaSoftwareRegistry@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 9 NONAME ; int CaSoftwareRegistry::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?componentOperationTypeKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 10 NONAME ; class QString CaSoftwareRegistry::componentOperationTypeKey(void)
+	?metaObject@CaSoftwareRegistry@@UBEPBUQMetaObject@@XZ @ 11 NONAME ; struct QMetaObject const * CaSoftwareRegistry::metaObject(void) const
+	?tr@CaSoftwareRegistry@@SA?AVQString@@PBD0H@Z @ 12 NONAME ; class QString CaSoftwareRegistry::tr(char const *, char const *, int)
+	?tr@CaSoftwareRegistry@@SA?AVQString@@PBD0@Z @ 13 NONAME ; class QString CaSoftwareRegistry::tr(char const *, char const *)
+	?componentTypeKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 14 NONAME ; class QString CaSoftwareRegistry::componentTypeKey(void)
+	?getStaticMetaObject@CaSoftwareRegistry@@SAABUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const & CaSoftwareRegistry::getStaticMetaObject(void)
+	?componentDriveInfoKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 16 NONAME ; class QString CaSoftwareRegistry::componentDriveInfoKey(void)
+	??_ECaSoftwareRegistry@@UAE@I@Z @ 17 NONAME ; CaSoftwareRegistry::~CaSoftwareRegistry(unsigned int)
+	?componentUninstallValue@CaSoftwareRegistry@@SA?AVQString@@XZ @ 18 NONAME ; class QString CaSoftwareRegistry::componentUninstallValue(void)
+	?createUninstallNotifier@CaSoftwareRegistry@@QBEPAVCaUninstallNotifier@@XZ @ 19 NONAME ; class CaUninstallNotifier * CaSoftwareRegistry::createUninstallNotifier(void) const
+	?entryDetails@CaSoftwareRegistry@@QBE?AV?$QHash@VQString@@V1@@@H@Z @ 20 NONAME ; class QHash<class QString, class QString> CaSoftwareRegistry::entryDetails(int) const
+	?componentSizeKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 21 NONAME ; class QString CaSoftwareRegistry::componentSizeKey(void)
+	??0CaSoftwareRegistry@@AAE@PAVQObject@@@Z @ 22 NONAME ; CaSoftwareRegistry::CaSoftwareRegistry(class QObject *)
+	?getApplicationsUids@CaSoftwareRegistry@@QAE_NHAAVQStringList@@@Z @ 23 NONAME ; bool CaSoftwareRegistry::getApplicationsUids(int, class QStringList &)
+	?componentNameKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 24 NONAME ; class QString CaSoftwareRegistry::componentNameKey(void)
+	?trUtf8@CaSoftwareRegistry@@SA?AVQString@@PBD0@Z @ 25 NONAME ; class QString CaSoftwareRegistry::trUtf8(char const *, char const *)
+	?componentProtectionDomainKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 26 NONAME ; class QString CaSoftwareRegistry::componentProtectionDomainKey(void)
+	?trUtf8@CaSoftwareRegistry@@SA?AVQString@@PBD0H@Z @ 27 NONAME ; class QString CaSoftwareRegistry::trUtf8(char const *, char const *, int)
+	?getUninstallDetails@CaSoftwareRegistry@@QAE_NHAAVQString@@AAVQStringList@@0@Z @ 28 NONAME ; bool CaSoftwareRegistry::getUninstallDetails(int, class QString &, class QStringList &, class QString &)
+	?create@CaSoftwareRegistry@@SA?AV?$QSharedPointer@VCaSoftwareRegistry@@@@XZ @ 29 NONAME ; class QSharedPointer<class CaSoftwareRegistry> CaSoftwareRegistry::create(void)
+	?componentUpgradeValue@CaSoftwareRegistry@@SA?AVQString@@XZ @ 30 NONAME ; class QString CaSoftwareRegistry::componentUpgradeValue(void)
+	?componentDescriptionKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 31 NONAME ; class QString CaSoftwareRegistry::componentDescriptionKey(void)
+	?componentVersionKey@CaSoftwareRegistry@@SA?AVQString@@XZ @ 32 NONAME ; class QString CaSoftwareRegistry::componentVersionKey(void)
+	?retrieveLogEntries@CaSoftwareRegistry@@QBE?AV?$QList@V?$QHash@VQString@@V1@@@@@XZ @ 33 NONAME ; class QList<class QHash<class QString, class QString> > CaSoftwareRegistry::retrieveLogEntries(void) const
+	?qt_metacast@CaSoftwareRegistry@@UAEPAXPBD@Z @ 34 NONAME ; void * CaSoftwareRegistry::qt_metacast(char const *)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/casoftwareregistry/eabi/casoftwareregistryu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,36 @@
+EXPORTS
+	_ZN17CCaProgresScanner4NewLEP18IUninstallObserver @ 1 NONAME
+	_ZN18CaSoftwareRegistry10m_instanceE @ 2 NONAME DATA 8
+	_ZN18CaSoftwareRegistry11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
+	_ZN18CaSoftwareRegistry11qt_metacastEPKc @ 4 NONAME
+	_ZN18CaSoftwareRegistry16componentNameKeyEv @ 5 NONAME
+	_ZN18CaSoftwareRegistry16componentSizeKeyEv @ 6 NONAME
+	_ZN18CaSoftwareRegistry16componentTimeKeyEv @ 7 NONAME
+	_ZN18CaSoftwareRegistry16componentTypeKeyEv @ 8 NONAME
+	_ZN18CaSoftwareRegistry16staticMetaObjectE @ 9 NONAME DATA 16
+	_ZN18CaSoftwareRegistry18componentVendorKeyEv @ 10 NONAME
+	_ZN18CaSoftwareRegistry19componentVersionKeyEv @ 11 NONAME
+	_ZN18CaSoftwareRegistry19getApplicationsUidsEiR11QStringList @ 12 NONAME
+	_ZN18CaSoftwareRegistry19getStaticMetaObjectEv @ 13 NONAME
+	_ZN18CaSoftwareRegistry19getUninstallDetailsEiR7QStringR11QStringListS1_ @ 14 NONAME
+	_ZN18CaSoftwareRegistry20componentHiddenValueEv @ 15 NONAME
+	_ZN18CaSoftwareRegistry21componentDriveInfoKeyEv @ 16 NONAME
+	_ZN18CaSoftwareRegistry21componentInstallValueEv @ 17 NONAME
+	_ZN18CaSoftwareRegistry21componentUpgradeValueEv @ 18 NONAME
+	_ZN18CaSoftwareRegistry23componentDescriptionKeyEv @ 19 NONAME
+	_ZN18CaSoftwareRegistry23componentUninstallValueEv @ 20 NONAME
+	_ZN18CaSoftwareRegistry25componentOperationTypeKeyEv @ 21 NONAME
+	_ZN18CaSoftwareRegistry28componentProtectionDomainKeyEv @ 22 NONAME
+	_ZN18CaSoftwareRegistry6createEv @ 23 NONAME
+	_ZN18CaSoftwareRegistryC1EP7QObject @ 24 NONAME
+	_ZN18CaSoftwareRegistryC2EP7QObject @ 25 NONAME
+	_ZN18CaSoftwareRegistryD0Ev @ 26 NONAME
+	_ZN18CaSoftwareRegistryD1Ev @ 27 NONAME
+	_ZN18CaSoftwareRegistryD2Ev @ 28 NONAME
+	_ZNK18CaSoftwareRegistry10metaObjectEv @ 29 NONAME
+	_ZNK18CaSoftwareRegistry12entryDetailsEi @ 30 NONAME
+	_ZNK18CaSoftwareRegistry18retrieveLogEntriesEv @ 31 NONAME
+	_ZNK18CaSoftwareRegistry23createUninstallNotifierEv @ 32 NONAME
+	_ZTI18CaSoftwareRegistry @ 33 NONAME
+	_ZTV18CaSoftwareRegistry @ 34 NONAME
+
--- a/contentstorage/casoftwareregistry/s60/src/caprogresscanner.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/casoftwareregistry/s60/src/caprogresscanner.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -115,7 +115,8 @@
     {
     if( aProgressData.Phase() == EUninstalling )
         {
-        iObserver->progressChange( iComponentId, aProgressData.CurrentProgess() );
+        TInt progress = (aProgressData.CurrentProgess()*100)/aProgressData.Total();
+        iObserver->progressChange( iComponentId, progress );
         }
     else
     	{
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/casrv/calocalizerscanner/bwins/calocalizerscanneru.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &)
+
--- a/contentstorage/casrv/calocalizerscanner/calocalizerscanner.pro	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/casrv/calocalizerscanner/calocalizerscanner.pro	Thu Sep 02 20:45:03 2010 +0300
@@ -33,7 +33,6 @@
     TEMPLATE = lib
     TARGET.UID2 = 0x10009D8D
     TARGET.UID3 = 0x20028708
-    TARGET.EXPORTUNFROZEN = 1
     TARGET.CAPABILITY = ALL \
         -TCB
     TARGET.VENDORID = VID_DEFAULT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/casrv/calocalizerscanner/eabi/calocalizerscanneru.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	_Z24ImplementationGroupProxyRi @ 1 NONAME
+
--- a/contentstorage/casrv/causifscanner/src/causifscanner.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/casrv/causifscanner/src/causifscanner.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -194,12 +194,39 @@
 
     for( TInt i(0); i < resultUsifArray.Count(); i++ )
         {
-        if( PackageExists( entries, resultUsifArray[i] ) == KErrNotFound )
+        TInt entryIndex = PackageExists( entries, resultUsifArray[i]);
+        // entry is not present in CaStorage
+        if( entryIndex == KErrNotFound )
             {
             CCaInnerEntry *caEntry = CCaInnerEntry::NewLC();
             CreateCaEntryFromEntryL( resultUsifArray[i], caEntry );
+            // in case we rebuild our db mark as missing
+            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() ))  ) 
+            {
+            if( !( entries[entryIndex]->GetFlags() & EMissing ) )
+                {
+                entries[entryIndex]->SetFlags( 
+                        ( entries[entryIndex]->GetFlags() | EMissing ) );
+                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]->GetFlags() & ~EMissing );
+            iStorageProxy.AddL( entries[entryIndex]);            
             }
         }
 
@@ -268,15 +295,8 @@
     while( CComponentEntry* entry = scrView.NextComponentL() )
         {
         CleanupStack::PushL( entry );
-        if( iSoftwareRegistry.IsComponentPresentL( entry->ComponentId() ) )
-            {
-            aArray.AppendL( entry );
-            CleanupStack::Pop( entry );
-            }
-        else
-            {
-            CleanupStack::PopAndDestroy( entry );
-            }
+        aArray.AppendL( entry );
+        CleanupStack::Pop( entry );
         }
     CleanupStack::PopAndDestroy( &scrView );
     CleanupStack::PopAndDestroy( filter );
@@ -325,8 +345,7 @@
             //for each usif entry check if entry has to be removed
             for( TInt k( 0 ); k < aUsifArray.Count(); k++ )
                 {
-                if( aUsifArray[k]->ComponentId() == uint
-                        && iSoftwareRegistry.IsComponentPresentL( uint ) )
+                if( aUsifArray[k]->ComponentId() == uint)
                     {
                     delete aCaArray[i];
                     aCaArray.Remove( i );
--- a/contentstorage/casrv/cawidgetscanner/src/cawidgetscannerparser.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/casrv/cawidgetscanner/src/cawidgetscannerparser.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -638,10 +638,12 @@
         const TDesC& aPackageUid, CCaWidgetDescription* aWidgetDescriptor,
         TChar& aDrive )
     {
-    aWidgetDescriptor->SetIconUriL( 
-        *GetThemableGraphicsNameLC(aElement, aPackageUid, aDrive ) );
+    HBufC *const graphicsName = 
+        GetThemableGraphicsNameLC(aElement, aPackageUid, aDrive );   
+    
+    aWidgetDescriptor->SetIconUriL( *graphicsName );
    
-    CleanupStack::PopAndDestroy( );
+    CleanupStack::PopAndDestroy( graphicsName );
     }
 
 // ----------------------------------------------------------------------------
@@ -654,10 +656,12 @@
         CCaWidgetDescription* aWidgetDescriptor,
         TChar& aDrive )
     {
-    aWidgetDescriptor->SetPreviewImageNameL( 
-        *GetThemableGraphicsNameLC(aElement, aPackageUid, aDrive ) );
+    HBufC *const graphicsName = 
+        GetThemableGraphicsNameLC(aElement, aPackageUid, aDrive );
     
-    CleanupStack::PopAndDestroy();
+    aWidgetDescriptor->SetPreviewImageNameL( *graphicsName );
+    
+    CleanupStack::PopAndDestroy( graphicsName );
     }
 
 // ----------------------------------------------------------------------------
@@ -731,47 +735,42 @@
     {
     RBuf graphicsName;
     graphicsName.CleanupClosePushL();
-    HBufC* result; 
+
+    RBuf elementText;
+    elementText.CleanupClosePushL();
+    
+    elementText.Assign( 
+        CnvUtfConverter::ConvertToUnicodeFromUtf8L( aElement.Text() ) );
+    
+    if ( TParsePtrC(elementText).Ext() != KNullDesC )
+        {
+        HBufC* const manifestDirectoryPath( 
+            GetManifestDirectoryPathLC( aPackageUid, aDrive ) );
+        
+        graphicsName.CreateL( manifestDirectoryPath->Length() + 
+            elementText.Length() );
+        graphicsName.Append( *manifestDirectoryPath );
+        
+        CleanupStack::PopAndDestroy( manifestDirectoryPath );
+        }
+    else
+        {   
+        graphicsName.CreateL( elementText.Length() );
+        }
+    
+    graphicsName.Append( elementText );
 
     
-    if ( aElement.Text() != KNullDesC8 )
-        {
-        RBuf elementText;
-        elementText.CleanupClosePushL();
-        
-        elementText.Assign( 
-            CnvUtfConverter::ConvertToUnicodeFromUtf8L( aElement.Text() ) );
-        
-        if ( TParsePtrC(elementText).Ext() != KNullDesC )
-            {
-            HBufC* const manifestDirectoryPath( 
-                GetManifestDirectoryPathLC( aPackageUid, aDrive ) );
-            
-            graphicsName.CreateL( manifestDirectoryPath->Length() + 
-                elementText.Length() );
-            graphicsName.Append( *manifestDirectoryPath );
-            
-            CleanupStack::PopAndDestroy( manifestDirectoryPath );
-            }
-        else
-            {   
-            graphicsName.CreateL( elementText.Length() );
-            }
-        
-        graphicsName.Append( elementText );
-        result = HBufC::NewL( graphicsName.Length() ) ;
-        *result = graphicsName;
-        
-        CleanupStack::PopAndDestroy( &elementText );
-        }
-    else
-    	{
-        result = HBufC::NewL( 1 ) ;
-    	}
-        CleanupStack::PopAndDestroy( &graphicsName );
-        CleanupStack::PushL( result );
-        
-        return result;
+    CleanupStack::PopAndDestroy( &elementText );
+    
+    HBufC *result = HBufC::NewL( graphicsName.Length() ) ;
+    *result = graphicsName;
+    
+    CleanupStack::PopAndDestroy( &graphicsName );
+    
+    CleanupStack::PushL( result );
+    
+    return result;
     }
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/castorage/bwins/castorageu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?NewDatabaseL@CaStorageFactory@@SAPAVCCaStorage@@XZ @ 1 NONAME ; class CCaStorage * CaStorageFactory::NewDatabaseL(void)
+
Binary file contentstorage/castorage/data/castorage.db has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/castorage/eabi/castorageu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	_ZN16CaStorageFactory12NewDatabaseLEv @ 1 NONAME
+
--- a/contentstorage/castorage/group/castorage.mmp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/castorage/group/castorage.mmp	Thu Sep 02 20:45:03 2010 +0300
@@ -44,6 +44,3 @@
 DEBUGLIBRARY    flogger.lib
 
 
-EXPORTUNFROZEN
-
-
--- a/contentstorage/contentstorage.pro	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/contentstorage.pro	Thu Sep 02 20:45:03 2010 +0300
@@ -21,6 +21,7 @@
 SUBDIRS  += group
 SUBDIRS  += casrv/calocalizerscanner
 SUBDIRS  += cahandler
+SUBDIRS  += camificonengine
 }
 SUBDIRS  += caclient
 SUBDIRS  += casoftwareregistry
--- a/contentstorage/extsrc/casathandler.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/extsrc/casathandler.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -49,7 +49,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// Destructor
+// LoadIconL
 // -----------------------------------------------------------------------------
 EXPORT_C CAknIcon* CCaSatHandler::LoadIconL()
     {
@@ -63,9 +63,9 @@
         iSatIcon.GetIconInfoL( TUint8( iconId ), iIconEf );
         CleanupClosePushL( iIconEf );
         CFbsBitmap* bitmap = GetBitmapL( iIconEf );
-        if( !bitmap )
+        if( bitmap )
             {
-            CFbsBitmap* mask( NULL );
+            CFbsBitmap* mask(  new (ELeave) CFbsBitmap );
             CleanupStack::PushL( mask );
 
             icon->SetBitmap( bitmap );
--- a/contentstorage/srvinc/cabackupnotifier.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/contentstorage/srvinc/cabackupnotifier.h	Thu Sep 02 20:45:03 2010 +0300
@@ -19,6 +19,7 @@
 #define CABACKUPNOTIFIER_H
 
 #include <e32property.h>
+#include "caclient_global.h"
 
 class CCaStorageProxy;
 
@@ -39,10 +40,10 @@
 	@released
 	@publishedAll
 	*/
-	{
-	ECaBackup       = 1,
-	ECaRestore      = 2
-	};
+	    {
+	    ECaBackup       = 1,
+	    ECaRestore      = 2
+	    };
 
 public:
 
@@ -101,6 +102,8 @@
      */
     TInt iLastState;
 
+    CA_CLIENT_TEST_FRIEND_CLASS(TestCaClient)
+    
     };
 
 #endif /* CABACKUPNOTIFIER_H */
--- a/homescreensrv_plat/contentstorage_api/caclient_global.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/homescreensrv_plat/contentstorage_api/caclient_global.h	Thu Sep 02 20:45:03 2010 +0300
@@ -18,7 +18,6 @@
 #ifndef CACLIENT_GLOBAL_H
 #define CACLIENT_GLOBAL_H
 
-#include <qglobal.h>
 
 #ifdef CACLIENT_LIB
 #define CACLIENT_EXPORT Q_DECL_EXPORT
--- a/homescreensrv_plat/contentstorage_api/cadefs.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/homescreensrv_plat/contentstorage_api/cadefs.h	Thu Sep 02 20:45:03 2010 +0300
@@ -77,8 +77,8 @@
     UnknownErrorCode
 };
 
-static const QString caCmdOpen("open");
-static const QString caCmdRemove("remove");
+const char caCmdOpen[] = "open";
+const char caCmdRemove[] = "remove";
 
 #ifndef QT_NO_DEBUG_OUTPUT
 #   define USE_QDEBUG_IF(predicate) if (!predicate) {} else qDebug()
--- a/homescreensrv_plat/contentstorage_api/caentry.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/homescreensrv_plat/contentstorage_api/caentry.h	Thu Sep 02 20:45:03 2010 +0300
@@ -66,7 +66,7 @@
     QString attribute(const QString &name) const;
     void setAttribute(const QString &name, const QString &value);
 
-    HbIcon makeIcon(const QSize &size = QSize(70, 70)) const;
+    HbIcon makeIcon(const QSizeF &size = QSizeF(70.0, 70.0)) const;
 
     EntryRole role() const;
 
--- a/homescreensrv_plat/contentstorage_api/caitemmodel.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/homescreensrv_plat/contentstorage_api/caitemmodel.h	Thu Sep 02 20:45:03 2010 +0300
@@ -72,8 +72,8 @@
     bool isAutoUpdate() const;
     void setSort(SortAttribute sortAttribute, Qt::SortOrder sortOrder =
         Qt::AscendingOrder);
-    void setIconSize(const QSize &size);
-    QSize getIconSize() const;
+    void setIconSize(const QSizeF &size);
+    QSizeF getIconSize() const;
     void updateModel();
     void setParentId(int parentId);
     void setFlagsOn(const EntryFlags &onFlags);
--- a/homescreensrv_plat/contentstorage_api/camenuiconutility.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/homescreensrv_plat/contentstorage_api/camenuiconutility.h	Thu Sep 02 20:45:03 2010 +0300
@@ -28,10 +28,10 @@
 {
 public:
     static HbIcon getApplicationIcon(int uid,
-            const QSize &size = QSize(50,80));
+            const QSizeF &size = QSizeF(50,80));
     
     static HbIcon getEntryIcon(const CaEntry& entry,
-            const QSize &size = QSize(50,80));
+            const QSizeF &size = QSizeF(50,80));
 };
 
 #endif // __CAMENUICONUTILITY_H__
--- a/homescreensrv_plat/taskswitcher_api/taskswitcher_api.pri	Wed Aug 18 10:05:49 2010 +0300
+++ b/homescreensrv_plat/taskswitcher_api/taskswitcher_api.pri	Thu Sep 02 20:45:03 2010 +0300
@@ -17,3 +17,9 @@
 PLATFORM_HEADERS += taskswitcher_api/tstasksettings.h \
                     taskswitcher_api/tstaskmonitor_global.h \
                     taskswitcher_api/tspropertydefs.h \
+
+symbian {
+    crml.sources = taskswitcher_api/tsdevicedialog.qcrml
+    crml.path = /resource/qt/crml
+    DEPLOYMENT += crml
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/taskswitcher_api/tsdevicedialog.qcrml	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<repository target="RProperty" uidValue="0x20022fc5">
+    <key int="0x2002677F" ref="/TaskSwitcher/Visibility"/>
+    <key int="0x20026781" ref="/TaskSwitcher/DismissRequest"/>
+</repository>
--- a/homescreensrv_plat/taskswitcher_api/tspropertydefs.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/homescreensrv_plat/taskswitcher_api/tspropertydefs.h	Thu Sep 02 20:45:03 2010 +0300
@@ -22,9 +22,11 @@
 #if defined(__SYMBIAN32__) || defined(SYMBIAN)
     const TUid KCategory = {0x20022fc5};
     const TUint KVisibilityKey = 0x2002677F;
+    const TUint KDismissRequestKey = 0x20026781;
 #endif    
     const char KTsPath[] = "/TaskSwitcher";
     const char KVisibilityPath[] = "Visibility";
+    const char KDismissRequestPath[] = "DismissRequest";
 
 }
 
--- a/hsappkeyhandler/src/hsappkeyplugin.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/hsappkeyhandler/src/hsappkeyplugin.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -89,9 +89,8 @@
 // 
 // ---------------------------------------------------------------------------
 //
-TKeyResponse CHsAppKeyPlugin::HandleKeyEventL( const TKeyEvent&  aKeyEvent , 
-                                              TEventCode  /*aType*/ 
-                                            )
+TKeyResponse CHsAppKeyPlugin::HandleKeyEventL(const TKeyEvent &aKeyEvent, 
+                                              TEventCode /*aType*/)
 {
     TKeyResponse retVal(EKeyWasNotConsumed);
     if (aKeyEvent.iCode == EKeyApplication0) {
@@ -102,7 +101,7 @@
                 HandleShortPressL();
             retVal = EKeyWasConsumed;
         }
-        iSecondEvent =!iSecondEvent; 
+        iSecondEvent = !iSecondEvent; 
     }
     return retVal;
 }
@@ -136,23 +135,39 @@
 //
 void CHsAppKeyPlugin::HandleShortPressL()
 {   
-    RApaLsSession apaLsSession;
-    CleanupClosePushL(apaLsSession);
-    User::LeaveIfError(apaLsSession.Connect());
-    CAfActivityLauncher *activityEnabler = 
-        CAfActivityLauncher::NewLC(apaLsSession, 
-                                   iEikEnv->WsSession());
-    TInt state(0);
-    RProperty::Get(KHsCategoryUid, KHsCategoryStateKey, state);
-    if (state == EHomeScreenIdleState) {
-        activityEnabler->launchActivityL(KAppLibActivactionUri);
+    TInt value(0);
+    RProperty::Get(TsProperty::KCategory, TsProperty::KVisibilityKey, value);
+    if (value) {
+        // when Task Switcher dialog is visible, Appkey is used to dismiss it
+    
+        // @todo: remove notification through property when SharedDialog flag
+        // is implemented in Orbit.
+        if (!mDialog) {
+            // dismiss dialog launched from HomeScreen
+            User::LeaveIfError(RProperty::Set(TsProperty::KCategory, TsProperty::KDismissRequestKey, 1));
+        } else {
+            // dismiss dialog launched by this plugin
+            delete mDialog;
+            mDialog = 0;
+        }
     } else {
-        activityEnabler->launchActivityL(KHsActivactionUri);
-    }    
-    CleanupStack::PopAndDestroy(activityEnabler);
-    CleanupStack::PopAndDestroy(&apaLsSession);
-    delete mDialog;
-    mDialog =0;
+        // when there is no Task Switcher dialog, Appkey is used to switch between Applib and HomeScreen
+        RApaLsSession apaLsSession;
+        CleanupClosePushL(apaLsSession);
+        User::LeaveIfError(apaLsSession.Connect());
+        CAfActivityLauncher *activityEnabler = 
+            CAfActivityLauncher::NewLC(apaLsSession, 
+                                       iEikEnv->WsSession());
+        TInt state(0);
+        RProperty::Get(KHsCategoryUid, KHsCategoryStateKey, state);
+        if (state == EHomeScreenIdleState) {
+            activityEnabler->launchActivityL(KAppLibActivactionUri);
+        } else {
+            activityEnabler->launchActivityL(KHsActivactionUri);
+        }    
+        CleanupStack::PopAndDestroy(activityEnabler);
+        CleanupStack::PopAndDestroy(&apaLsSession);
+    }
 }
 
 // ---------------------------------------------------------------------------
@@ -166,15 +181,14 @@
         RProperty::Get( TsProperty::KCategory, 
                     TsProperty::KVisibilityKey,
                     value );
-        if(!value){
-            mDialog = CHbDeviceDialogSymbian::NewL();
-    
+        if(!value) {
+            mDialog = CHbDeviceDialogSymbian::NewL();    
             CHbSymbianVariantMap* params = CHbSymbianVariantMap::NewL();
-        if(KErrNone != mDialog->Show(KTsPluginName,*params,this)) {
-            delete mDialog;
-            mDialog = 0;
+            if(KErrNone != mDialog->Show(KTsPluginName,*params,this)) {
+                delete mDialog;
+                mDialog = 0;
             }
-        delete params;
+            delete params;
         }
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetmodel/bwins/hswidgetmodelu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,71 @@
+EXPORTS
+	?mouseDoubleClickEvent@HsWidget@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1 NONAME ; void HsWidget::mouseDoubleClickEvent(class QGraphicsSceneMouseEvent *)
+	?qt_metacall@HsWidgetProviderManifest@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2 NONAME ; int HsWidgetProviderManifest::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?mouseReleaseEvent@HsWidget@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 3 NONAME ; void HsWidget::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
+	??1HsPluginUnloader@@UAE@XZ @ 4 NONAME ; HsPluginUnloader::~HsPluginUnloader(void)
+	?setFaulted@HsWidget@@IAEXXZ @ 5 NONAME ; void HsWidget::setFaulted(void)
+	?faulted@HsWidget@@IAEXXZ @ 6 NONAME ; void HsWidget::faulted(void)
+	?tr@HsPluginUnloader@@SA?AVQString@@PBD0@Z @ 7 NONAME ; class QString HsPluginUnloader::tr(char const *, char const *)
+	?getStaticMetaObject@HsPluginUnloader@@SAABUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const & HsPluginUnloader::getStaticMetaObject(void)
+	?onResume@HsWidget@@MAE?AW4ResumeResult@1@XZ @ 9 NONAME ; enum HsWidget::ResumeResult HsWidget::onResume(void)
+	?trUtf8@HsWidgetProviderManifest@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString HsWidgetProviderManifest::trUtf8(char const *, char const *, int)
+	?qt_metacast@HsWidget@@UAEPAXPBD@Z @ 11 NONAME ; void * HsWidget::qt_metacast(char const *)
+	?trUtf8@HsPluginUnloader@@SA?AVQString@@PBD0H@Z @ 12 NONAME ; class QString HsPluginUnloader::trUtf8(char const *, char const *, int)
+	?mousePressEvent@HsWidget@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 13 NONAME ; void HsWidget::mousePressEvent(class QGraphicsSceneMouseEvent *)
+	?getStaticMetaObject@HsWidgetFactory@@SAABUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const & HsWidgetFactory::getStaticMetaObject(void)
+	?qt_metacast@HsPluginUnloader@@UAEPAXPBD@Z @ 15 NONAME ; void * HsPluginUnloader::qt_metacast(char const *)
+	?staticMetaObject@HsPluginUnloader@@2UQMetaObject@@B @ 16 NONAME ; struct QMetaObject const HsPluginUnloader::staticMetaObject
+	?stopped@HsWidget@@IAEXXZ @ 17 NONAME ; void HsWidget::stopped(void)
+	?metaObject@HsWidgetFactory@@UBEPBUQMetaObject@@XZ @ 18 NONAME ; struct QMetaObject const * HsWidgetFactory::metaObject(void) const
+	?metaObject@HsWidget@@UBEPBUQMetaObject@@XZ @ 19 NONAME ; struct QMetaObject const * HsWidget::metaObject(void) const
+	??0HsWidgetProviderManifest@@QAE@PAVQObject@@@Z @ 20 NONAME ; HsWidgetProviderManifest::HsWidgetProviderManifest(class QObject *)
+	?resume@HsWidget@@QAEXXZ @ 21 NONAME ; void HsWidget::resume(void)
+	?qt_metacast@HsWidgetFactory@@UAEPAXPBD@Z @ 22 NONAME ; void * HsWidgetFactory::qt_metacast(char const *)
+	?start@HsWidget@@QAEXXZ @ 23 NONAME ; void HsWidget::start(void)
+	?setFaulting@HsWidget@@IAEXXZ @ 24 NONAME ; void HsWidget::setFaulting(void)
+	?widgets@HsWidgetProviderManifest@@QBE?AV?$QList@VHsWidgetToken@@@@XZ @ 25 NONAME ; class QList<class HsWidgetToken> HsWidgetProviderManifest::widgets(void) const
+	?tr@HsWidgetProviderManifest@@SA?AVQString@@PBD0H@Z @ 26 NONAME ; class QString HsWidgetProviderManifest::tr(char const *, char const *, int)
+	??_EHsWidget@@UAE@I@Z @ 27 NONAME ; HsWidget::~HsWidget(unsigned int)
+	?widgetPreferenceService@HsWidget@@QBEPAVIHsWidgetPreferenceService@@XZ @ 28 NONAME ; class IHsWidgetPreferenceService * HsWidget::widgetPreferenceService(void) const
+	?createWidget@HsWidgetFactory@@QAEPAVHsWidget@@ABVHsWidgetToken@@@Z @ 29 NONAME ; class HsWidget * HsWidgetFactory::createWidget(class HsWidgetToken const &)
+	?trUtf8@HsPluginUnloader@@SA?AVQString@@PBD0@Z @ 30 NONAME ; class QString HsPluginUnloader::trUtf8(char const *, char const *)
+	?staticMetaObject@HsWidgetFactory@@2UQMetaObject@@B @ 31 NONAME ; struct QMetaObject const HsWidgetFactory::staticMetaObject
+	?setFinished@HsWidget@@IAEXXZ @ 32 NONAME ; void HsWidget::setFinished(void)
+	??_EHsWidgetFactory@@UAE@I@Z @ 33 NONAME ; HsWidgetFactory::~HsWidgetFactory(unsigned int)
+	??_EHsWidgetProviderManifest@@UAE@I@Z @ 34 NONAME ; HsWidgetProviderManifest::~HsWidgetProviderManifest(unsigned int)
+	??1HsWidgetProviderManifest@@UAE@XZ @ 35 NONAME ; HsWidgetProviderManifest::~HsWidgetProviderManifest(void)
+	??1HsWidget@@UAE@XZ @ 36 NONAME ; HsWidget::~HsWidget(void)
+	?tr@HsWidgetFactory@@SA?AVQString@@PBD0H@Z @ 37 NONAME ; class QString HsWidgetFactory::tr(char const *, char const *, int)
+	?trUtf8@HsWidget@@SA?AVQString@@PBD0H@Z @ 38 NONAME ; class QString HsWidget::trUtf8(char const *, char const *, int)
+	??0HsWidget@@QAE@PAVQGraphicsItem@@V?$QFlags@W4WindowType@Qt@@@@@Z @ 39 NONAME ; HsWidget::HsWidget(class QGraphicsItem *, class QFlags<enum Qt::WindowType>)
+	?suspend@HsWidget@@QAEXXZ @ 40 NONAME ; void HsWidget::suspend(void)
+	?staticMetaObject@HsWidgetProviderManifest@@2UQMetaObject@@B @ 41 NONAME ; struct QMetaObject const HsWidgetProviderManifest::staticMetaObject
+	??_EHsPluginUnloader@@UAE@I@Z @ 42 NONAME ; HsPluginUnloader::~HsPluginUnloader(unsigned int)
+	?tr@HsWidget@@SA?AVQString@@PBD0H@Z @ 43 NONAME ; class QString HsWidget::tr(char const *, char const *, int)
+	?trUtf8@HsWidgetProviderManifest@@SA?AVQString@@PBD0@Z @ 44 NONAME ; class QString HsWidgetProviderManifest::trUtf8(char const *, char const *)
+	?loadOnQuery@HsWidgetProviderManifest@@QBE_NXZ @ 45 NONAME ; bool HsWidgetProviderManifest::loadOnQuery(void) const
+	?staticMetaObject@HsWidget@@2UQMetaObject@@B @ 46 NONAME ; struct QMetaObject const HsWidget::staticMetaObject
+	?qt_metacast@HsWidgetProviderManifest@@UAEPAXPBD@Z @ 47 NONAME ; void * HsWidgetProviderManifest::qt_metacast(char const *)
+	?mouseMoveEvent@HsWidget@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 48 NONAME ; void HsWidget::mouseMoveEvent(class QGraphicsSceneMouseEvent *)
+	?succeeded@HsWidget@@IAEXXZ @ 49 NONAME ; void HsWidget::succeeded(void)
+	?qt_metacall@HsWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 50 NONAME ; int HsWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?onSuspend@HsWidget@@MAE?AW4SuspendResult@1@XZ @ 51 NONAME ; enum HsWidget::SuspendResult HsWidget::onSuspend(void)
+	??0HsPluginUnloader@@QAE@PAVQPluginLoader@@PAVQObject@@@Z @ 52 NONAME ; HsPluginUnloader::HsPluginUnloader(class QPluginLoader *, class QObject *)
+	?qt_metacall@HsWidgetFactory@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 53 NONAME ; int HsWidgetFactory::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?loadFromXml@HsWidgetProviderManifest@@QAE_NABVQString@@@Z @ 54 NONAME ; bool HsWidgetProviderManifest::loadFromXml(class QString const &)
+	?trUtf8@HsWidget@@SA?AVQString@@PBD0@Z @ 55 NONAME ; class QString HsWidget::trUtf8(char const *, char const *)
+	??0HsWidgetFactory@@QAE@PAVQObject@@@Z @ 56 NONAME ; HsWidgetFactory::HsWidgetFactory(class QObject *)
+	?trUtf8@HsWidgetFactory@@SA?AVQString@@PBD0H@Z @ 57 NONAME ; class QString HsWidgetFactory::trUtf8(char const *, char const *, int)
+	?tr@HsPluginUnloader@@SA?AVQString@@PBD0H@Z @ 58 NONAME ; class QString HsPluginUnloader::tr(char const *, char const *, int)
+	?stop@HsWidget@@QAEXXZ @ 59 NONAME ; void HsWidget::stop(void)
+	?trUtf8@HsWidgetFactory@@SA?AVQString@@PBD0@Z @ 60 NONAME ; class QString HsWidgetFactory::trUtf8(char const *, char const *)
+	?tr@HsWidgetProviderManifest@@SA?AVQString@@PBD0@Z @ 61 NONAME ; class QString HsWidgetProviderManifest::tr(char const *, char const *)
+	?getStaticMetaObject@HsWidgetProviderManifest@@SAABUQMetaObject@@XZ @ 62 NONAME ; struct QMetaObject const & HsWidgetProviderManifest::getStaticMetaObject(void)
+	??1HsWidgetFactory@@UAE@XZ @ 63 NONAME ; HsWidgetFactory::~HsWidgetFactory(void)
+	?tr@HsWidgetFactory@@SA?AVQString@@PBD0@Z @ 64 NONAME ; class QString HsWidgetFactory::tr(char const *, char const *)
+	?qt_metacall@HsPluginUnloader@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 65 NONAME ; int HsPluginUnloader::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?metaObject@HsPluginUnloader@@UBEPBUQMetaObject@@XZ @ 66 NONAME ; struct QMetaObject const * HsPluginUnloader::metaObject(void) const
+	?tr@HsWidget@@SA?AVQString@@PBD0@Z @ 67 NONAME ; class QString HsWidget::tr(char const *, char const *)
+	?getStaticMetaObject@HsWidget@@SAABUQMetaObject@@XZ @ 68 NONAME ; struct QMetaObject const & HsWidget::getStaticMetaObject(void)
+	?metaObject@HsWidgetProviderManifest@@UBEPBUQMetaObject@@XZ @ 69 NONAME ; struct QMetaObject const * HsWidgetProviderManifest::metaObject(void) const
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hswidgetmodel/eabi/hswidgetmodelu.def	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,70 @@
+EXPORTS
+	_ZN15HsWidgetFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN15HsWidgetFactory11qt_metacastEPKc @ 2 NONAME
+	_ZN15HsWidgetFactory12createWidgetERK13HsWidgetToken @ 3 NONAME
+	_ZN15HsWidgetFactory16staticMetaObjectE @ 4 NONAME DATA 16
+	_ZN15HsWidgetFactory19getStaticMetaObjectEv @ 5 NONAME
+	_ZN15HsWidgetFactoryC1EP7QObject @ 6 NONAME
+	_ZN15HsWidgetFactoryC2EP7QObject @ 7 NONAME
+	_ZN15HsWidgetFactoryD0Ev @ 8 NONAME
+	_ZN15HsWidgetFactoryD1Ev @ 9 NONAME
+	_ZN15HsWidgetFactoryD2Ev @ 10 NONAME
+	_ZN16HsPluginUnloader11qt_metacallEN11QMetaObject4CallEiPPv @ 11 NONAME
+	_ZN16HsPluginUnloader11qt_metacastEPKc @ 12 NONAME
+	_ZN16HsPluginUnloader16staticMetaObjectE @ 13 NONAME DATA 16
+	_ZN16HsPluginUnloader19getStaticMetaObjectEv @ 14 NONAME
+	_ZN16HsPluginUnloaderC1EP13QPluginLoaderP7QObject @ 15 NONAME
+	_ZN16HsPluginUnloaderC2EP13QPluginLoaderP7QObject @ 16 NONAME
+	_ZN16HsPluginUnloaderD0Ev @ 17 NONAME
+	_ZN16HsPluginUnloaderD1Ev @ 18 NONAME
+	_ZN16HsPluginUnloaderD2Ev @ 19 NONAME
+	_ZN24HsWidgetProviderManifest11loadFromXmlERK7QString @ 20 NONAME
+	_ZN24HsWidgetProviderManifest11qt_metacallEN11QMetaObject4CallEiPPv @ 21 NONAME
+	_ZN24HsWidgetProviderManifest11qt_metacastEPKc @ 22 NONAME
+	_ZN24HsWidgetProviderManifest16staticMetaObjectE @ 23 NONAME DATA 16
+	_ZN24HsWidgetProviderManifest19getStaticMetaObjectEv @ 24 NONAME
+	_ZN24HsWidgetProviderManifestC1EP7QObject @ 25 NONAME
+	_ZN24HsWidgetProviderManifestC2EP7QObject @ 26 NONAME
+	_ZN24HsWidgetProviderManifestD0Ev @ 27 NONAME
+	_ZN24HsWidgetProviderManifestD1Ev @ 28 NONAME
+	_ZN24HsWidgetProviderManifestD2Ev @ 29 NONAME
+	_ZN8HsWidget10setFaultedEv @ 30 NONAME
+	_ZN8HsWidget11qt_metacallEN11QMetaObject4CallEiPPv @ 31 NONAME
+	_ZN8HsWidget11qt_metacastEPKc @ 32 NONAME
+	_ZN8HsWidget11setFaultingEv @ 33 NONAME
+	_ZN8HsWidget11setFinishedEv @ 34 NONAME
+	_ZN8HsWidget16staticMetaObjectE @ 35 NONAME DATA 16
+	_ZN8HsWidget19getStaticMetaObjectEv @ 36 NONAME
+	_ZN8HsWidget4stopEv @ 37 NONAME
+	_ZN8HsWidget5startEv @ 38 NONAME
+	_ZN8HsWidget6resumeEv @ 39 NONAME
+	_ZN8HsWidget7faultedEv @ 40 NONAME
+	_ZN8HsWidget7stoppedEv @ 41 NONAME
+	_ZN8HsWidget7suspendEv @ 42 NONAME
+	_ZN8HsWidget8onResumeEv @ 43 NONAME
+	_ZN8HsWidget9onSuspendEv @ 44 NONAME
+	_ZN8HsWidget9succeededEv @ 45 NONAME
+	_ZN8HsWidgetC2EP13QGraphicsItem6QFlagsIN2Qt10WindowTypeEE @ 46 NONAME
+	_ZN8HsWidgetD0Ev @ 47 NONAME
+	_ZN8HsWidgetD1Ev @ 48 NONAME
+	_ZN8HsWidgetD2Ev @ 49 NONAME
+	_ZNK15HsWidgetFactory10metaObjectEv @ 50 NONAME
+	_ZNK16HsPluginUnloader10metaObjectEv @ 51 NONAME
+	_ZNK24HsWidgetProviderManifest10metaObjectEv @ 52 NONAME
+	_ZNK24HsWidgetProviderManifest11loadOnQueryEv @ 53 NONAME
+	_ZNK24HsWidgetProviderManifest7widgetsEv @ 54 NONAME
+	_ZNK8HsWidget10metaObjectEv @ 55 NONAME
+	_ZNK8HsWidget23widgetPreferenceServiceEv @ 56 NONAME
+	_ZTI15HsWidgetFactory @ 57 NONAME
+	_ZTI16HsPluginUnloader @ 58 NONAME
+	_ZTI24HsWidgetProviderManifest @ 59 NONAME
+	_ZTI8HsWidget @ 60 NONAME
+	_ZTV15HsWidgetFactory @ 61 NONAME
+	_ZTV16HsPluginUnloader @ 62 NONAME
+	_ZTV24HsWidgetProviderManifest @ 63 NONAME
+	_ZTV8HsWidget @ 64 NONAME
+	_ZThn16_N8HsWidgetD0Ev @ 65 NONAME
+	_ZThn16_N8HsWidgetD1Ev @ 66 NONAME
+	_ZThn8_N8HsWidgetD0Ev @ 67 NONAME
+	_ZThn8_N8HsWidgetD1Ev @ 68 NONAME
+
--- a/rom/homescreensrv_core.iby	Wed Aug 18 10:05:49 2010 +0300
+++ b/rom/homescreensrv_core.iby	Thu Sep 02 20:45:03 2010 +0300
@@ -34,6 +34,9 @@
 data=\epoc32\data\z\resource\qt\plugins\commandhandler\caurlhandlerplugin.qtplugin  resource\qt\plugins\commandhandler\caurlhandlerplugin.qtplugin
 data=\epoc32\data\z\resource\qt\plugins\commandhandler\caurlhandlerplugin.xml       resource\qt\plugins\commandhandler\caurlhandlerplugin.xml
 
+file=ABI_DIR\BUILD_DIR\camificon.dll     SHARED_LIB_DIR\camificon.dll
+data=\epoc32\data\z\resource\qt\plugins\iconengines\camificon.qtplugin  resource\qt\plugins\iconengines\camificon.qtplugin
+
 file=ABI_DIR\BUILD_DIR\caclient.dll     SHARED_LIB_DIR\caclient.dll
 file=ABI_DIR\BUILD_DIR\cautils.dll     SHARED_LIB_DIR\cautils.dll
 file=ABI_DIR\BUILD_DIR\camenu.dll     SHARED_LIB_DIR\camenu.dll
--- a/sis/homescreensrv.pkg	Wed Aug 18 10:05:49 2010 +0300
+++ b/sis/homescreensrv.pkg	Thu Sep 02 20:45:03 2010 +0300
@@ -131,8 +131,9 @@
 "/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/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"
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsactivitymodelitem.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsactivitymodelitem.h	Thu Sep 02 20:45:03 2010 +0300
@@ -18,10 +18,13 @@
 #ifndef TSACTIVITYMODELITEM_H
 #define TSACTIVITYMODELITEM_H
 
-#include <qvariant.h>
-#include <qicon.h>
+#include <QVariant>
+#include <QIcon>
 
 #include "tsmodelitem.h"
+
+class QAbstractListModel;
+
 /*!
     Implements model item which represents Activity entry
 */
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsdevicedialogcontainer.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsdevicedialogcontainer.h	Thu Sep 02 20:45:03 2010 +0300
@@ -19,7 +19,8 @@
 
 #include <QObject>
 #include <HbDeviceDialogInterface>
-#include <qvaluespacepublisher.h>
+#include <QValueSpacePublisher>
+#include <QValueSpaceSubscriber>
 
 #include "tsdocumentloader.h"
 
@@ -52,10 +53,12 @@
 private slots:
     void notifyDialogClosed();
     void switchViewOnModelChange();
+    void handleDismissRequest();
     
 private:
     TsDocumentLoader mLoader;
     QValueSpacePublisher mVisibilityPublisher;
+    QValueSpaceSubscriber mDismissRequestSubscriber;
 
     Q_DISABLE_COPY(TsDeviceDialogContainer)
 };
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsdevicedialogplugin.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsdevicedialogplugin.h	Thu Sep 02 20:45:03 2010 +0300
@@ -18,15 +18,15 @@
 #ifndef TSDEVICEDIALOGPLUGIN_H
 #define TSDEVICEDIALOGPLUGIN_H
 
-#include <hbdevicedialogplugin.h>
-#include <QObject>
 #include <QVariantMap>
-#include <QSharedPointer>
-#include <qabstractitemmodel.h>
+
+#include <HbDeviceDialogPlugin>
 
 #include "tsdocumentloader.h"
 
+class QAbstractListModel;
 class TsTaskMonitor;
+
 class TsDeviceDialogPlugin : public HbDeviceDialogPlugin
 {
     Q_OBJECT
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsdocumentloader.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsdocumentloader.h	Thu Sep 02 20:45:03 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef TSDOCUMENTLOADER_H
 #define TSDOCUMENTLOADER_H
 
-#include <hbdocumentloader.h>
+#include <HbDocumentLoader>
 
 class TsDocumentLoader : public HbDocumentLoader
 {
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsentrymodelitem.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsentrymodelitem.h	Thu Sep 02 20:45:03 2010 +0300
@@ -17,10 +17,10 @@
 
 #ifndef TSENTRYMODELITEM_H
 #define TSENTRYMODELITEM_H
+
 #include "tsmodelitem.h"
 
-#include <qsharedpointer.h>
-#include <qstring.h>
+#include <QSharedPointer>
 
 class TsTask;
 
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsmodel.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsmodel.h	Thu Sep 02 20:45:03 2010 +0300
@@ -18,16 +18,17 @@
 #ifndef TSMODEL_H
 #define TSMODEL_H
 
-#include <QAbstractItemModel>
+#include <QAbstractListModel>
 #include <QList>
 #include <QSize>
 #include <QSharedPointer>
+
 #include <tstaskmonitor.h>
+
 #ifdef Q_OS_SYMBIAN
 #include <apgcli.h>
 #endif
 
-class TsTaskMonitor;
 class CaNotifier;
 class TsModelItem;
 
@@ -45,11 +46,23 @@
     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());
+    virtual bool removeRows(int row, int count,
+                            const QModelIndex & parent = QModelIndex());
+
+    
+    bool moveRows(int oldPosition, int newPosition,
+                  const QModelIndex & parent = QModelIndex());
+    bool updateRows(int row, TsModelItem* item);
+    void fullUpdate();
 
 public slots:
     void openApplication(const QModelIndex &index);
     void closeApplication(const QModelIndex &index);
-    void updateModel();
+    void updateApplications();
+    void updateActivities();
     void entryChanged(TsModelItem *);
 private:
     TsModelItem *entry(const QModelIndex &index) const;
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tsmodelitem.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsmodelitem.h	Thu Sep 02 20:45:03 2010 +0300
@@ -14,11 +14,12 @@
 * Description: tsmodelitem.h
 *
 */
-
 #ifndef TSMODELITEM_H
 #define TSMODELITEM_H
+
+#include <QObject>
 #include <QVariant>
-#include <QModelIndex>
+
 /*!
     Abstract class which define model item for taskswitcher
 */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tsnoitemslabel.h	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* 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 TSNOITEMSLABEL_H
+#define TSNOITEMSLABEL_H
+
+#include <HbLabel>
+
+class TsNoItemsLabel : public HbLabel
+{
+    Q_OBJECT
+
+public:
+    explicit TsNoItemsLabel(QGraphicsItem *parent = 0);  
+    
+private:
+    Q_DISABLE_COPY(TsNoItemsLabel)    
+    
+};
+
+#endif //TSNOITEMSLABEL_H
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tstasksgrid.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tstasksgrid.h	Thu Sep 02 20:45:03 2010 +0300
@@ -17,7 +17,7 @@
 #ifndef TSTASKSGRID_H
 #define TSTASKSGRID_H
 
-#include <hbgridview.h>
+#include <HbGridView>
 
 class TsTasksGrid : public HbGridView
 {
--- a/tsdevicedialog/tsdevicedialogplugin/inc/tstasksgriditem.h	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/inc/tstasksgriditem.h	Thu Sep 02 20:45:03 2010 +0300
@@ -17,7 +17,7 @@
 #ifndef TSTASKSGRIDITEM_H
 #define TSTASKSGRIDITEM_H
 
-#include <hbabstractviewitem.h>
+#include <HbAbstractViewItem>
 
 class HbTextItem;
 class HbIconItem;
--- a/tsdevicedialog/tsdevicedialogplugin/resource/layout.docml	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/resource/layout.docml	Thu Sep 02 20:45:03 2010 +0300
@@ -13,12 +13,23 @@
                 <enums name="horizontalScrollBarPolicy" value="ScrollBarAlwaysOff"/>
                 <bool name="swapDimensionsOnOrientationChange" value="FALSE"/>
             </widget>            
-            <widget name="noitemslabel" type="HbLabel">
-                <string name="alignment" value="AlignVCenter|AlignHCenter" />
-                <string locid="txt_ts_info_no_recent_applications" name="plainText"/>
+            <widget name="noitemswidget" type="HbWidget">
+                <widget name="noitemslabel" type="TsNoItemsLabel">
+                    <string name="alignment" value="AlignVCenter|AlignHCenter" />
+                    <string locid="txt_ts_info_no_recent_applications" name="plainText"/>
+                    
+                    <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
+                    <enums name="textWrapping" value="TextWordWrap"/>                    
+                </widget>   
+                <layout orientation="Vertical" spacing="0.0un" type="linear">
+                    <contentsmargins bottom="var(hb-param-margin-gene-screen)" left="var(hb-param-margin-gene-screen)" right="var(hb-param-margin-gene-screen)" top="var(hb-param-margin-gene-screen)"/>
+                    <stretchitem stretchfactor="1"/>
+                    <linearitem itemname="noitemslabel"/>
+                    <stretchitem stretchfactor="1"/>
+                </layout>
             </widget>          
             <layout type="stacked">
-                <stackitem itemname="noitemslabel"/>
+                <stackitem itemname="noitemswidget"/>
                 <stackitem itemname="taskgrid"/>
             </layout>
         </widget>            
--- a/tsdevicedialog/tsdevicedialogplugin/resource/tsdevicedialog.qcrml	Wed Aug 18 10:05:49 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<repository target="RProperty" uidValue="0x20022fc5">
-    <key int="0x2002677F" ref="/TaskSwitcher/Visibility"/>
-</repository>
--- a/tsdevicedialog/tsdevicedialogplugin/resource/tstasksgriditem.css	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/resource/tstasksgriditem.css	Thu Sep 02 20:45:03 2010 +0300
@@ -34,9 +34,13 @@
     max-height: var(hb-param-graphic-size-primary-small);
 }
 
+TsTasksGridItem::screenshot {
+    alignment: center;
+}
+
 TsTasksGridItem::activeLabel  {
     text-align: center;
-    color: var(qtc_default_main_pane_normal);
+    color: var(qtc_multimedia_trans_normal);
     text-height: var(hb-param-text-height-tiny);
     font-variant: secondary;
     
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsactivitymodelitem.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsactivitymodelitem.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -14,10 +14,14 @@
 * Description: tsactivitymodelitem.cpp
 *
 */
-#include <hbicon.h>
+#include "tsactivitymodelitem.h"
+
+#include <QAbstractListModel>
+
+#include <HbIcon>
+
 #include <afstorageglobals.h>
 
-#include "tsactivitymodelitem.h"
 #include "tsdataroles.h"
 
 /*!
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogcontainer.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogcontainer.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -15,13 +15,16 @@
 *
 */
 
+#include "tsdevicedialogcontainer.h"
+
 #include <QAbstractListModel>
+
 #include <HbDialog>
 #include <HbMainWindow>
 #include <HbLabel>
+
 #include <tspropertydefs.h>
 
-#include "tsdevicedialogcontainer.h"
 #include "tstasksgrid.h"
 #include "tstasksgriditem.h"
 
@@ -33,7 +36,8 @@
                                                  QObject *parent)
 :
     QObject(parent), 
-    mVisibilityPublisher(TsProperty::KTsPath)
+    mVisibilityPublisher(TsProperty::KTsPath),
+    mDismissRequestSubscriber(QString("%1/%2").arg(TsProperty::KTsPath).arg(TsProperty::KDismissRequestPath))
 {
     bool ok(true);
     mLoader.load(KDocmlPath, &ok);
@@ -91,6 +95,11 @@
     mVisibilityPublisher.setValue(TsProperty::KVisibilityPath, 
                                   static_cast<int>(true));
     mVisibilityPublisher.sync();
+    
+    connect(&mDismissRequestSubscriber,
+            SIGNAL(contentsChanged()),
+            this,
+            SLOT(handleDismissRequest()));
 }
 
 TsDeviceDialogContainer::~TsDeviceDialogContainer()
@@ -152,16 +161,23 @@
 {
     TsTasksGrid *grid = 
         qobject_cast<TsTasksGrid *>(mLoader.findWidget("taskgrid"));
-    HbLabel *noItemsLabel = 
-        qobject_cast<HbLabel *>(mLoader.findWidget("noitemslabel"));
+    HbWidget *noItemsWidget = 
+        qobject_cast<HbWidget *>(mLoader.findWidget("noitemswidget"));
     Q_ASSERT(grid);
-    Q_ASSERT(noItemsLabel);
+    Q_ASSERT(noItemsWidget);
 
     if (grid->model()->rowCount()) {
-        noItemsLabel->hide();
+        noItemsWidget->hide();
         grid->show();
     } else {
-        noItemsLabel->show();
+        noItemsWidget->show();
         grid->hide();
     }
 }
+
+void TsDeviceDialogContainer::handleDismissRequest()
+{
+    if (mDismissRequestSubscriber.value().toBool()) {
+        emit deviceDialogClosed();
+    }
+}
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -15,21 +15,29 @@
 *
 */
 
+#include "tsdevicedialogplugin.h"
+
 #include <QTranslator>
 #include <QCoreApplication>
 #include <QLocale>
 #include <QtPlugin>
-#include <qservicemanager.h>
-#include <hbdevicedialog.h>
+
+#include <QValueSpacePublisher>
+#include <QServiceManager>
+
+#include <HbDeviceDialog>
 #include <HbMainWindow>
 
-#include "tsdevicedialogplugin.h"
+#include <tspropertydefs.h>
+
 #include "tsdevicedialogcontainer.h"
 #include "tstasksgrid.h"
 #include "tstasksgriditem.h"
 #include "tsdocumentloader.h"
 #include "tsmodel.h"
 
+QTM_USE_NAMESPACE
+
 /*!
     \class TsDeviceDialogPlugin
     \ingroup group_tsdevicedialogplugin
@@ -113,15 +121,12 @@
         }
     
         // lazy loading of model
-        if (0 == mModel) {
+        if (!mModel) {
             mStorage = new TsTaskMonitor(this);
-            if (0 == mStorage) {
-                return 0; // provider of running application list is critical
-            }
             
-            QtMobility::QServiceManager serviceManager;
+            QServiceManager serviceManager;
             QObject *activityManager(serviceManager.loadInterface(KActivityManaged));
-            if (0 != activityManager) {
+            if (activityManager) {
                 activityManager->setParent(this); //make it autodestructed
             } else {
                 activityManager = this; //activity plugin is not present. provide invalid instance because its not critical functionality.
@@ -129,7 +134,15 @@
             }
             mModel = new TsModel(*mStorage, *activityManager);
         }
+            
+        // ensure the dismiss request property is set to false
+
+        QValueSpacePublisher dismissRequestPublisher(TsProperty::KTsPath);
+        dismissRequestPublisher.setValue(TsProperty::KDismissRequestPath, static_cast<int>(false));
+        dismissRequestPublisher.sync();
+
         
+        // create device dialog
         dialogInterface = new TsDeviceDialogContainer(mModel);
     }
     return dialogInterface;
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsdocumentloader.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsdocumentloader.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -18,6 +18,7 @@
 #include "tsdocumentloader.h"
 #include "tstasksgrid.h"
 #include "tstasksgriditem.h"
+#include "tsnoitemslabel.h"
 
 /*!
     \class TsDocumentLoader
@@ -38,6 +39,10 @@
         QObject *object = new TsTasksGridItem();
         object->setObjectName(name);
         return object;
+    } else if (type == TsNoItemsLabel::staticMetaObject.className()) {
+        QObject *object = new TsNoItemsLabel();
+        object->setObjectName(name);
+        return object;
     }
 
     return HbDocumentLoader::createObject(type, name);
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsentrymodelitem.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsentrymodelitem.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -15,10 +15,12 @@
 *
 */
 
-#include <tstask.h>
+#include "tsentrymodelitem.h"
+
 #include <HbIcon>
 
-#include "tsentrymodelitem.h"
+#include <tstask.h>
+
 #include "tsdataroles.h"
 
 /*!
--- a/tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsmodel.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -14,9 +14,13 @@
 * Description: tsmodel.cpp
 *
 */
+#include "tsmodel.h"
+
+#include <QVariant>
+#include <QList>
+
 #include <HbIcon>
-#include <qvariant.h>
-#include <qlist.h>
+
 #include <afstorageglobals.h>
 
 #ifdef Q_OS_SYMBIAN
@@ -27,11 +31,11 @@
 const int ItemsLimit = 0x00000001;
 #endif
 
-#include "tsmodel.h"
 #include "tsmodelitem.h"
 #include "tsentrymodelitem.h"
 #include "tsactivitymodelitem.h"
 #include "tsdataroles.h"
+#include "tstaskchangeinfo.h"
 
 const int maxItems(10);
 /*!
@@ -69,15 +73,16 @@
     iAppArcSession.Connect();
 #endif
 
-    connect(&activitySrv, 
-            SIGNAL(dataChanged()), 
-            this, 
-            SLOT(updateModel()));
-    connect(&applicationSrv, 
-            SIGNAL(taskListChanged()), 
-            this, 
-            SLOT(updateModel()));
-    updateModel();
+    connect(&activitySrv,
+	SIGNAL(dataChanged()),
+			 this,
+			 SLOT(updateActivities()));
+    connect(&applicationSrv,
+	        SIGNAL(taskListChanged()),
+			this,
+			SLOT(updateApplications()));
+
+    fullUpdate();    
 }
 
 /*!
@@ -102,6 +107,42 @@
     return mEntries.count();
 }
 
+bool TsModel::insertRows(int row, int count, TsModelItem* item, const QModelIndex & parent)
+{
+    beginInsertRows(parent, row, row+count-1);
+    mEntries.insert(row, item);
+    endInsertRows();
+    return true;
+}
+
+bool TsModel::removeRows(int row, int count, const QModelIndex & parent)
+{
+    beginRemoveRows(parent, row, row + count - 1);
+    mEntries.removeAt(row);
+    endRemoveRows();
+    return true;
+}
+
+
+bool TsModel::moveRows(int oldPosition, int newPosition, const QModelIndex & parent)
+{
+   beginMoveRows(parent, oldPosition, oldPosition, parent, newPosition);
+   mEntries.move(oldPosition, newPosition);
+   endMoveRows();
+   return true;
+}
+
+
+bool TsModel::updateRows(int row, TsModelItem* item)
+{
+    TsModelItem *oldItem = mEntries.at(row);
+    mEntries[row] = item;
+    delete oldItem;
+
+    emit dataChanged(index(row),index(row));
+    return true;
+}
+
 /*!
     Returns appropiate model's data
     \param index model index
@@ -150,10 +191,61 @@
 /*!
     Updates model with fresh entries
 */
-void TsModel::updateModel()
+void TsModel::updateApplications()
 {
-    //clear current data
-    beginResetModel();
+    RDebug::Printf( "TsModel::updateApps \n");
+    RDebug::Printf(" from %d \n: ",this);
+    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
+    if (changes[0].first.changeType() == TsTaskChangeInfo::EChangeCancel) {
+        fullUpdate();
+        return;
+    }
+    for (int iter(0); iter < changes.count(); iter++) {
+        switch (changes[iter].first.changeType()) {
+            case TsTaskChangeInfo::EChangeDelete :
+                removeRows(changes[iter].first.oldOffset(), 1);
+            break;
+            case TsTaskChangeInfo::EChangeInsert :
+                insertRows(changes[iter].first.newOffset(), 1,
+                    new TsEntryModelItem(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));
+            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
+*/
+void TsModel::fullUpdate()
+{
     qDeleteAll(mEntries);
     mEntries.clear();
     getApplications();
@@ -167,10 +259,17 @@
 */
 void TsModel::getApplications()
 {
-    //get running applications
-    QList< QSharedPointer<TsTask> > tasks(mApplicationService.taskList());
-    foreach (QSharedPointer<TsTask> taskData, tasks) {
-        mEntries.append(new TsEntryModelItem(taskData));
+    RDebug::Printf( "CTsTaskMonitorClientImpl::RunL \n");
+    //get all running applications and append to entries list
+    TsModelItem *entry(0);
+    QList< TsTaskChange> tasks(mApplicationService.changeList(true));
+    foreach (TsTaskChange taskData, tasks) {
+        if (!taskData.second.isNull()) {
+            entry = new TsEntryModelItem(taskData.second);
+            if (entry) {
+                mEntries.append(entry);
+            }
+        }
     }
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tsnoitemslabel.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* 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 "tsnoitemslabel.h"
+
+#include <HbFrameItem>
+
+/*!
+    \class TsTasksGridItem
+    \ingroup group_tsdevicedialogplugin
+    \brief Item that should be presented in grid.
+*/
+
+TsNoItemsLabel::TsNoItemsLabel(QGraphicsItem *parent) : HbLabel(parent)
+{
+    HbFrameDrawer *drawer = new HbFrameDrawer(QLatin1String("qtg_fr_multimedia_trans"), HbFrameDrawer::NinePieces);
+    setBackgroundItem(new HbFrameItem(drawer));
+}
--- a/tsdevicedialog/tsdevicedialogplugin/src/tstasksgriditem.cpp	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/src/tstasksgriditem.cpp	Thu Sep 02 20:45:03 2010 +0300
@@ -14,6 +14,8 @@
 * Description:
 *
 */
+#include "tstasksgriditem.h"
+
 #include <HbPushButton>
 #include <HbAbstractItemView>
 #include <HbFrameItem>
@@ -21,7 +23,6 @@
 #include <HbIconItem>
 #include <HbStyleLoader>
 
-#include "tstasksgriditem.h"
 #include "tsdataroles.h"
 
 /*!
@@ -30,7 +31,6 @@
     \brief Item that should be presented in grid.
 */
 
-
 TsTasksGridItem::TsTasksGridItem() 
 : 
 HbAbstractViewItem(), 
--- a/tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.pro	Wed Aug 18 10:05:49 2010 +0300
+++ b/tsdevicedialog/tsdevicedialogplugin/tsdevicedialogplugin.pro	Thu Sep 02 20:45:03 2010 +0300
@@ -30,6 +30,7 @@
             inc/tstasksgriditem.h \
             inc/tsdocumentloader.h \
             inc/tsdataroles.h \
+            inc/tsnoitemslabel.h \
 
 SOURCES +=  src/tsdevicedialogcontainer.cpp \
             src/tsdevicedialogplugin.cpp \
@@ -39,6 +40,7 @@
             src/tstasksgrid.cpp \
             src/tstasksgriditem.cpp \
             src/tsdocumentloader.cpp \
+            src/tsnoitemslabel.cpp \
 
 INCLUDEPATH += . \
                ./inc \
@@ -55,16 +57,10 @@
     TARGET.UID3 = 0x2002677F
     pluginstub.sources = tsdevicedialogplugin.dll
     pluginstub.path = /resource/plugins/devicedialogs
+    DEPLOYMENT += pluginstub
     
     LIBS += -lxqsettingsmanager -lapparc -lapgrfx
     
-    # ugly hack
-    
-    crml.sources = ./resource/*.qcrml
-    crml.path = /resource/qt/crml
-    
-    DEPLOYMENT += pluginstub crml
-    
     BLD_INF_RULES.prj_exports += \
     "$${LITERAL_HASH}include <platform_paths.hrh>" \
     "conf/tsdevicedialog.confml APP_LAYER_CONFML(tsdevicedialog.confml)" \