201009
authorhgs
Tue, 23 Mar 2010 23:55:55 +0200
changeset 88 7f0462e8c3da
parent 87 9d806967057c
child 89 1e87eb3b400f
201009
common.pri
contentstorage/bwins/caextendedmenuu.def
contentstorage/bwins/cautilsu.def
contentstorage/caclient/caclient.pro
contentstorage/caclient/cahandler.pri
contentstorage/caclient/inc/caicondescription_p.h
contentstorage/caclient/inc/caquery_p.h
contentstorage/caclient/s60/inc/caclientproxy.h
contentstorage/caclient/s60/inc/cahandler.h
contentstorage/caclient/s60/inc/cahandlerloader.h
contentstorage/caclient/s60/inc/cahandlerproxy.h
contentstorage/caclient/s60/inc/caobjectadapter.h
contentstorage/caclient/s60/inc/caqtsfhandlerloader.h
contentstorage/caclient/s60/src/caclientproxy.cpp
contentstorage/caclient/s60/src/cahandlerloader.cpp
contentstorage/caclient/s60/src/cahandlerproxy.cpp
contentstorage/caclient/s60/src/caobjectadapter.cpp
contentstorage/caclient/s60/src/caqtsfhandlerloader.cpp
contentstorage/caclient/src/caicondescription.cpp
contentstorage/caclient/src/caquery.cpp
contentstorage/caclient/src/caservice.cpp
contentstorage/caclient/stub/src/caclientproxy.cpp
contentstorage/cahandler/app/app.pri
contentstorage/cahandler/app/app.pro
contentstorage/cahandler/app/inc/caapphandler.h
contentstorage/cahandler/app/inc/caapphandlerplugin.h
contentstorage/cahandler/app/inc/cauninstalloperation.h
contentstorage/cahandler/app/resource/caapphandlerplugin.s60xml
contentstorage/cahandler/app/resource/caapphandlerplugin.xml
contentstorage/cahandler/app/src/caapphandler.cpp
contentstorage/cahandler/app/src/caapphandlerplugin.cpp
contentstorage/cahandler/app/src/cauninstalloperation.cpp
contentstorage/cahandler/cahandler.pro
contentstorage/cahandler/inc/cas60handleradapter.h
contentstorage/cahandler/tapp/catapphandler.pro
contentstorage/cahandler/tapp/catapphandlerplugin.pri
contentstorage/cahandler/tapp/inc/catapphandler.h
contentstorage/cahandler/tapp/inc/catapphandlerplugin.h
contentstorage/cahandler/tapp/resource/catapphandlerplugin.s60xml
contentstorage/cahandler/tapp/resource/catapphandlerplugin.xml
contentstorage/cahandler/tapp/src/catapphandler.cpp
contentstorage/cahandler/tapp/src/catapphandlerplugin.cpp
contentstorage/cahandler/url/inc/caurlhandler.h
contentstorage/cahandler/url/inc/caurlhandlerplugin.h
contentstorage/cahandler/url/resource/caurlhandlerplugin.s60xml
contentstorage/cahandler/url/resource/caurlhandlerplugin.xml
contentstorage/cahandler/url/src/caurlhandler.cpp
contentstorage/cahandler/url/src/caurlhandlerplugin.cpp
contentstorage/cahandler/url/url.pri
contentstorage/cahandler/url/url.pro
contentstorage/casrv/calocalizerscanner/src/calocalizerscannerproxy.cpp
contentstorage/casrv/cawidgetscanner/src/cawidgetdescription.cpp
contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp
contentstorage/castorage/data/castoragedb
contentstorage/castorage/data/castoragedb_create.sql
contentstorage/castorage/data/castoragedb_variant.bat
contentstorage/castorage/data/castoragedb_variant.sql
contentstorage/castorage/data/castoragedb_variant_test.bat
contentstorage/castorage/data/castoragedb_variant_test.sql
contentstorage/castorage/data/create_castoragedb.sql
contentstorage/castorage/data/fill_castoragedb.sql
contentstorage/castorage/data/make_castoragedb.sql
contentstorage/castorage/inc/casqlcommands.h
contentstorage/castorage/inc/casqlitestorage.h
contentstorage/castorage/src/casqlitestorage.cpp
contentstorage/castorage/src/casqlquery.cpp
contentstorage/castorage/src/casqlquerycreator.cpp
contentstorage/cautils/inc/cainnerentry.h
contentstorage/cautils/inc/cainnerquery.h
contentstorage/cautils/src/cainnerentry.cpp
contentstorage/cautils/src/cainnerquery.cpp
contentstorage/data/20022F82.rss
contentstorage/eabi/caextendedmenuu.def
contentstorage/eabi/camenuu.def
contentstorage/eabi/cautilsu.def
contentstorage/extinc/cahandler.h
contentstorage/extinc/cahandlerengine.h
contentstorage/extinc/cahandlerplugin.h
contentstorage/extinc/cahandlerplugin.hrh
contentstorage/extinc/cahandlerplugin.inl
contentstorage/extsrc/cahandler.cpp
contentstorage/extsrc/cahandlerengine.cpp
contentstorage/extsrc/caiconutility.cpp
contentstorage/group/caextendedmenu.mmp
contentstorage/group/camenu.mmp
contentstorage/group/castockhandlerplugins.mmp
contentstorage/group/group.pro
contentstorage/handlerinc/caapphandlerplugin.h
contentstorage/handlerinc/cauninstalloperation.h
contentstorage/handlerinc/caurlhandlerplugin.h
contentstorage/handlersrc/caapphandlerplugin.cpp
contentstorage/handlersrc/castockhandlersproxy.cpp
contentstorage/handlersrc/cauninstalloperation.cpp
contentstorage/handlersrc/caurlhandlerplugin.cpp
contentstorage/inc/cadef.h
contentstorage/srvsrc/casrv.cpp
homescreensrv_plat/contentstorage_api/caicondescription.h
homescreensrv_plat/contentstorage_api/caquery.h
homescreensrv_plat/homescreen_information_api/inc/homescreendomainpskeys.h
homescreensrv_plat/homescreen_information_api/inc/homescreeninformation.qcrml
--- a/common.pri	Tue Mar 23 23:42:03 2010 +0200
+++ b/common.pri	Tue Mar 23 23:55:55 2010 +0200
@@ -86,6 +86,36 @@
                 $$PWD/homescreensrv_plat/homescreen_information_api/inc
 }
 
+plugin: !isEmpty(PLUGIN_SUBDIR): DESTDIR = $$OUTPUT_DIR/$$PLUGIN_SUBDIR
+
+win32: plugin { # copy manifiers
+    manifest.path = $$DESTDIR
+    manifest.files = ./resource/*.manifest ./resource/*.xml
+    manifest.CONFIG += no_build
+
+    INSTALLS += manifest
+    PRE_TARGETDEPS += install_manifest
+
+}
+
+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
+
+    message(Remove "contains(MOBILITY, serviceframework)" after the QtSF refactorig is done!)
+        
+    !contains(MOBILITY, serviceframework):qtplugins.sources += resource/$${TARGET}.manifest
+    contains(MOBILITY, serviceframework):BLD_INF_RULES.prj_exports += "resource/$${TARGET}.xml z:$$qtplugins.path/$${TARGET}.xml"
+    
+    for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin z:$$qtplugins.path/$$basename(qtplugin)"
+}
+
 defineTest(exportResources) {
 symbian {
     for(subdirs, 1) {
--- a/contentstorage/bwins/caextendedmenuu.def	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/bwins/caextendedmenuu.def	Tue Mar 23 23:55:55 2010 +0200
@@ -1,12 +1,3 @@
 EXPORTS
-	??0CCaHandler@@IAE@XZ @ 1 NONAME ; CCaHandler::CCaHandler(void)
-	??1CCaHandler@@UAE@XZ @ 2 NONAME ; CCaHandler::~CCaHandler(void)
-	??1CCaHandlerEngine@@UAE@XZ @ 3 NONAME ; CCaHandlerEngine::~CCaHandlerEngine(void)
-	?BaseConstructL@CCaHandler@@IAEXXZ @ 4 NONAME ; void CCaHandler::BaseConstructL(void)
-	?GetItemIcon@CaMenuIconUtility@@SAPAVCAknIcon@@ABVCCaInnerEntry@@@Z @ 5 NONAME ; class CAknIcon * CaMenuIconUtility::GetItemIcon(class CCaInnerEntry const &)
-	?HandleCommandL@CCaHandler@@UAEXAAVCCaInnerEntry@@ABVTDesC8@@@Z @ 6 NONAME ; void CCaHandler::HandleCommandL(class CCaInnerEntry &, class TDesC8 const &)
-	?HandleCommandL@CCaHandlerEngine@@QAEXAAVCCaInnerEntry@@ABVTDesC8@@@Z @ 7 NONAME ; void CCaHandlerEngine::HandleCommandL(class CCaInnerEntry &, class TDesC8 const &)
-	?NewL@CCaHandlerEngine@@SAPAV1@XZ @ 8 NONAME ; class CCaHandlerEngine * CCaHandlerEngine::NewL(void)
-	?NewLC@CCaHandlerEngine@@SAPAV1@XZ @ 9 NONAME ; class CCaHandlerEngine * CCaHandlerEngine::NewLC(void)
-	?SupportsType@CCaHandler@@UAEHABVTDesC16@@@Z @ 10 NONAME ; int CCaHandler::SupportsType(class TDesC16 const &)
+	?GetItemIcon@CaMenuIconUtility@@SAPAVCAknIcon@@ABVCCaInnerEntry@@@Z @ 1 NONAME ; class CAknIcon * CaMenuIconUtility::GetItemIcon(class CCaInnerEntry const &)
 
--- a/contentstorage/bwins/cautilsu.def	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/bwins/cautilsu.def	Tue Mar 23 23:55:55 2010 +0200
@@ -1,89 +1,91 @@
 EXPORTS
-	?AddAttributeL@CCaInnerEntry@@QAEXABVTDesC16@@0@Z @ 1 NONAME ; void CCaInnerEntry::AddAttributeL(class TDesC16 const &, class TDesC16 const &)
-	?Exist@RCaEntryAttrArray@@QAEHABVTDesC16@@@Z @ 2 NONAME ; int RCaEntryAttrArray::Exist(class TDesC16 const &)
-	?ExternalizeL@CCaInnerEntry@@QBEXAAVRWriteStream@@@Z @ 3 NONAME ; void CCaInnerEntry::ExternalizeL(class RWriteStream &) const
-	?ExternalizeL@CCaInnerNotifierFilter@@QBEXAAVRWriteStream@@@Z @ 4 NONAME ; void CCaInnerNotifierFilter::ExternalizeL(class RWriteStream &) const
-	?ExternalizeL@CCaInnerQuery@@QBEXAAVRWriteStream@@@Z @ 5 NONAME ; void CCaInnerQuery::ExternalizeL(class RWriteStream &) const
-	?ExternalizeL@RCaEntriesArray@@QBEXAAVRWriteStream@@@Z @ 6 NONAME ; void RCaEntriesArray::ExternalizeL(class RWriteStream &) const
-	?ExternalizeL@RCaIdsArray@@QBEXAAVRWriteStream@@@Z @ 7 NONAME ; void RCaIdsArray::ExternalizeL(class RWriteStream &) const
-	?Find@RCaEntryAttrArray@@QAEHABVTDesC16@@AAVTDes16@@@Z @ 8 NONAME ; int RCaEntryAttrArray::Find(class TDesC16 const &, class TDes16 &)
-	?FindAttribute@CCaInnerEntry@@QAEHABVTDesC16@@AAVTDes16@@@Z @ 9 NONAME ; int CCaInnerEntry::FindAttribute(class TDesC16 const &, class TDes16 &)
-	?GetAttributeName@CCaLocalizationEntry@@QBEABVRBuf16@@XZ @ 10 NONAME ; class RBuf16 const & CCaLocalizationEntry::GetAttributeName(void) const
-	?GetAttributes@CCaInnerEntry@@QBEABVRCaEntryAttrArray@@XZ @ 11 NONAME ; class RCaEntryAttrArray const & CCaInnerEntry::GetAttributes(void) const
-	?GetCount@CCaInnerQuery@@QBEIXZ @ 12 NONAME ; unsigned int CCaInnerQuery::GetCount(void) const
-	?GetDescription@CCaInnerEntry@@QBEABVRBuf16@@XZ @ 13 NONAME ; class RBuf16 const & CCaInnerEntry::GetDescription(void) const
-	?GetEntryRole@CCaInnerNotifierFilter@@QBE?AW4TEntryRole@@XZ @ 14 NONAME ; enum TEntryRole CCaInnerNotifierFilter::GetEntryRole(void) const
-	?GetEntryTypeName@CCaInnerEntry@@QBEABVRBuf16@@XZ @ 15 NONAME ; class RBuf16 const & CCaInnerEntry::GetEntryTypeName(void) const
-	?GetEntryTypeNames@CCaInnerQuery@@QBEPBVCDesC16ArrayFlat@@XZ @ 16 NONAME ; class CDesC16ArrayFlat const * CCaInnerQuery::GetEntryTypeNames(void) const
-	?GetFlags@CCaInnerEntry@@QBEIXZ @ 17 NONAME ; unsigned int CCaInnerEntry::GetFlags(void) const
-	?GetFlagsOff@CCaInnerQuery@@QBEIXZ @ 18 NONAME ; unsigned int CCaInnerQuery::GetFlagsOff(void) const
-	?GetFlagsOn@CCaInnerQuery@@QBEIXZ @ 19 NONAME ; unsigned int CCaInnerQuery::GetFlagsOn(void) const
-	?GetIcon@CCaInnerEntry@@QBEABUTIconAttributes@1@XZ @ 20 NONAME ; struct CCaInnerEntry::TIconAttributes const & CCaInnerEntry::GetIcon(void) const
-	?GetIconId@CCaInnerEntry@@QBEHXZ @ 21 NONAME ; int CCaInnerEntry::GetIconId(void) const
-	?GetId@CCaInnerEntry@@QBEHXZ @ 22 NONAME ; int CCaInnerEntry::GetId(void) const
-	?GetIds@CCaInnerNotifierFilter@@QBE?AV?$RArray@H@@XZ @ 23 NONAME ; class RArray<int> CCaInnerNotifierFilter::GetIds(void) const
-	?GetIds@CCaInnerQuery@@QBEABV?$RArray@H@@XZ @ 24 NONAME ; class RArray<int> const & CCaInnerQuery::GetIds(void) const
-	?GetLocalizedString@CCaLocalizationEntry@@QBEABVRBuf16@@XZ @ 25 NONAME ; class RBuf16 const & CCaLocalizationEntry::GetLocalizedString(void) const
-	?GetNotifierType@CCaInnerNotifierFilter@@QBE?AW4TNotifierType@1@XZ @ 26 NONAME ; enum CCaInnerNotifierFilter::TNotifierType CCaInnerNotifierFilter::GetNotifierType(void) const
-	?GetParentId@CCaInnerNotifierFilter@@QBEHXZ @ 27 NONAME ; int CCaInnerNotifierFilter::GetParentId(void) const
-	?GetParentId@CCaInnerQuery@@QBEHXZ @ 28 NONAME ; int CCaInnerQuery::GetParentId(void) const
-	?GetRole@CCaInnerEntry@@QBEIXZ @ 29 NONAME ; unsigned int CCaInnerEntry::GetRole(void) const
-	?GetRole@CCaInnerQuery@@QBEHXZ @ 30 NONAME ; int CCaInnerQuery::GetRole(void) const
-	?GetRowId@CCaLocalizationEntry@@QBEHXZ @ 31 NONAME ; int CCaLocalizationEntry::GetRowId(void) const
-	?GetSort@CCaInnerQuery@@QBE?AW4TSortAttribute@1@XZ @ 32 NONAME ; enum CCaInnerQuery::TSortAttribute CCaInnerQuery::GetSort(void) const
-	?GetStringId@CCaLocalizationEntry@@QBEABVRBuf16@@XZ @ 33 NONAME ; class RBuf16 const & CCaLocalizationEntry::GetStringId(void) const
-	?GetTUint@MenuUtils@@SAHABVTDesC16@@AAI@Z @ 34 NONAME ; int MenuUtils::GetTUint(class TDesC16 const &, unsigned int &)
-	?GetTableName@CCaLocalizationEntry@@QBEABVRBuf16@@XZ @ 35 NONAME ; class RBuf16 const & CCaLocalizationEntry::GetTableName(void) const
-	?GetText@CCaInnerEntry@@QBEABVRBuf16@@XZ @ 36 NONAME ; class RBuf16 const & CCaInnerEntry::GetText(void) const
-	?GetTextId@CCaLocalizationEntry@@QBEHXZ @ 37 NONAME ; int CCaLocalizationEntry::GetTextId(void) const
-	?GetTypeNames@CCaInnerNotifierFilter@@QBEPAVCDesC16ArrayFlat@@XZ @ 38 NONAME ; class CDesC16ArrayFlat * CCaInnerNotifierFilter::GetTypeNames(void) const
-	?GetUid@CCaInnerEntry@@QBEJXZ @ 39 NONAME ; long CCaInnerEntry::GetUid(void) const
-	?GetUid@CCaInnerQuery@@QBEIXZ @ 40 NONAME ; unsigned int CCaInnerQuery::GetUid(void) const
-	?InternalizeL@CCaInnerEntry@@QAEXAAVRReadStream@@@Z @ 41 NONAME ; void CCaInnerEntry::InternalizeL(class RReadStream &)
-	?InternalizeL@CCaInnerNotifierFilter@@QAEXAAVRReadStream@@@Z @ 42 NONAME ; void CCaInnerNotifierFilter::InternalizeL(class RReadStream &)
-	?InternalizeL@CCaInnerQuery@@QAEXAAVRReadStream@@@Z @ 43 NONAME ; void CCaInnerQuery::InternalizeL(class RReadStream &)
-	?InternalizeL@RCaEntriesArray@@QAEXAAVRReadStream@@@Z @ 44 NONAME ; void RCaEntriesArray::InternalizeL(class RReadStream &)
-	?InternalizeL@RCaIdsArray@@QAEXAAVRReadStream@@@Z @ 45 NONAME ; void RCaIdsArray::InternalizeL(class RReadStream &)
-	?MarshalDataLC@RCaIdsArray@@QBEPAVHBufC8@@XZ @ 46 NONAME ; class HBufC8 * RCaIdsArray::MarshalDataLC(void) const
-	?NewL@CCaEntryAttribute@@SAPAV1@ABVTDesC16@@@Z @ 47 NONAME ; class CCaEntryAttribute * CCaEntryAttribute::NewL(class TDesC16 const &)
-	?NewL@CCaInnerEntry@@SAPAV1@XZ @ 48 NONAME ; class CCaInnerEntry * CCaInnerEntry::NewL(void)
-	?NewL@CCaInnerNotifierFilter@@SAPAV1@W4TNotifierType@1@@Z @ 49 NONAME ; class CCaInnerNotifierFilter * CCaInnerNotifierFilter::NewL(enum CCaInnerNotifierFilter::TNotifierType)
-	?NewL@CCaInnerQuery@@SAPAV1@XZ @ 50 NONAME ; class CCaInnerQuery * CCaInnerQuery::NewL(void)
-	?NewL@CCaLocalizationEntry@@SAPAV1@XZ @ 51 NONAME ; class CCaLocalizationEntry * CCaLocalizationEntry::NewL(void)
-	?NewLC@CCaEntryAttribute@@SAPAV1@ABVTDesC16@@@Z @ 52 NONAME ; class CCaEntryAttribute * CCaEntryAttribute::NewLC(class TDesC16 const &)
-	?NewLC@CCaInnerEntry@@SAPAV1@XZ @ 53 NONAME ; class CCaInnerEntry * CCaInnerEntry::NewLC(void)
-	?NewLC@CCaInnerNotifierFilter@@SAPAV1@W4TNotifierType@1@@Z @ 54 NONAME ; class CCaInnerNotifierFilter * CCaInnerNotifierFilter::NewLC(enum CCaInnerNotifierFilter::TNotifierType)
-	?NewLC@CCaInnerQuery@@SAPAV1@XZ @ 55 NONAME ; class CCaInnerQuery * CCaInnerQuery::NewLC(void)
-	?NewLC@CCaLocalizationEntry@@SAPAV1@XZ @ 56 NONAME ; class CCaLocalizationEntry * CCaLocalizationEntry::NewLC(void)
-	?RemoveAttribute@RCaEntryAttrArray@@QAEXABVTDesC16@@@Z @ 57 NONAME ; void RCaEntryAttrArray::RemoveAttribute(class TDesC16 const &)
-	?RemoveAttributeL@CCaInnerEntry@@QAEXABVTDesC16@@@Z @ 58 NONAME ; void CCaInnerEntry::RemoveAttributeL(class TDesC16 const &)
-	?SetAttributeNameL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 59 NONAME ; void CCaLocalizationEntry::SetAttributeNameL(class TDesC16 const &)
-	?SetCount@CCaInnerQuery@@QAEXI@Z @ 60 NONAME ; void CCaInnerQuery::SetCount(unsigned int)
-	?SetDescriptionL@CCaInnerEntry@@QAEXABVTDesC16@@@Z @ 61 NONAME ; void CCaInnerEntry::SetDescriptionL(class TDesC16 const &)
-	?SetEntryRole@CCaInnerNotifierFilter@@QAEXW4TEntryRole@@@Z @ 62 NONAME ; void CCaInnerNotifierFilter::SetEntryRole(enum TEntryRole)
-	?SetEntryTypeNameL@CCaInnerEntry@@QAEXABVTDesC16@@@Z @ 63 NONAME ; void CCaInnerEntry::SetEntryTypeNameL(class TDesC16 const &)
-	?SetEntryTypeNames@CCaInnerQuery@@QAEXPAVCDesC16ArrayFlat@@@Z @ 64 NONAME ; void CCaInnerQuery::SetEntryTypeNames(class CDesC16ArrayFlat *)
-	?SetFlags@CCaInnerEntry@@QAEXI@Z @ 65 NONAME ; void CCaInnerEntry::SetFlags(unsigned int)
-	?SetFlagsOff@CCaInnerQuery@@QAEXI@Z @ 66 NONAME ; void CCaInnerQuery::SetFlagsOff(unsigned int)
-	?SetFlagsOn@CCaInnerQuery@@QAEXI@Z @ 67 NONAME ; void CCaInnerQuery::SetFlagsOn(unsigned int)
-	?SetIconDataL@CCaInnerEntry@@QAEXHHHHABVTDesC16@@@Z @ 68 NONAME ; void CCaInnerEntry::SetIconDataL(int, int, int, int, class TDesC16 const &)
-	?SetIconId@CCaInnerEntry@@QAEXH@Z @ 69 NONAME ; void CCaInnerEntry::SetIconId(int)
-	?SetId@CCaInnerEntry@@QAEXI@Z @ 70 NONAME ; void CCaInnerEntry::SetId(unsigned int)
-	?SetIdsL@CCaInnerNotifierFilter@@QAEXABV?$RArray@H@@@Z @ 71 NONAME ; void CCaInnerNotifierFilter::SetIdsL(class RArray<int> const &)
+	?NewLC@CCaInnerNotifierFilter@@SAPAV1@W4TNotifierType@1@@Z @ 1 NONAME ; class CCaInnerNotifierFilter * CCaInnerNotifierFilter::NewLC(enum CCaInnerNotifierFilter::TNotifierType)
+	?ExternalizeL@RCaIdsArray@@QBEXAAVRWriteStream@@@Z @ 2 NONAME ; void RCaIdsArray::ExternalizeL(class RWriteStream &) const
+	?GetAttributes@CCaInnerQuery@@QBEABVRCaEntryAttrArray@@XZ @ 3 NONAME ; class RCaEntryAttrArray const & CCaInnerQuery::GetAttributes(void) const
+	?SetEntryTypeNameL@CCaInnerEntry@@QAEXABVTDesC16@@@Z @ 4 NONAME ; void CCaInnerEntry::SetEntryTypeNameL(class TDesC16 const &)
+	?SetSort@CCaInnerQuery@@QAEXW4TSortAttribute@1@@Z @ 5 NONAME ; void CCaInnerQuery::SetSort(enum CCaInnerQuery::TSortAttribute)
+	?SetIconId@CCaInnerEntry@@QAEXH@Z @ 6 NONAME ; void CCaInnerEntry::SetIconId(int)
+	?SetUid@CCaInnerEntry@@QAEXJ@Z @ 7 NONAME ; void CCaInnerEntry::SetUid(long)
+	?SetLocalizedStringL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 8 NONAME ; void CCaLocalizationEntry::SetLocalizedStringL(class TDesC16 const &)
+	?GetText@CCaInnerEntry@@QBEABVRBuf16@@XZ @ 9 NONAME ; class RBuf16 const & CCaInnerEntry::GetText(void) const
+	?InternalizeL@RCaEntriesArray@@QAEXAAVRReadStream@@@Z @ 10 NONAME ; void RCaEntriesArray::InternalizeL(class RReadStream &)
+	?SetIdsL@CCaInnerNotifierFilter@@QAEXABV?$RArray@H@@@Z @ 11 NONAME ; void CCaInnerNotifierFilter::SetIdsL(class RArray<int> const &)
+	?GetTextId@CCaLocalizationEntry@@QBEHXZ @ 12 NONAME ; int CCaLocalizationEntry::GetTextId(void) const
+	?GetUid@CCaInnerEntry@@QBEJXZ @ 13 NONAME ; long CCaInnerEntry::GetUid(void) const
+	?SetId@CCaInnerEntry@@QAEXI@Z @ 14 NONAME ; void CCaInnerEntry::SetId(unsigned int)
+	?GetSort@CCaInnerQuery@@QBE?AW4TSortAttribute@1@XZ @ 15 NONAME ; enum CCaInnerQuery::TSortAttribute CCaInnerQuery::GetSort(void) const
+	?SetCount@CCaInnerQuery@@QAEXI@Z @ 16 NONAME ; void CCaInnerQuery::SetCount(unsigned int)
+	?ExternalizeL@CCaInnerNotifierFilter@@QBEXAAVRWriteStream@@@Z @ 17 NONAME ; void CCaInnerNotifierFilter::ExternalizeL(class RWriteStream &) const
+	?FindAttribute@CCaInnerEntry@@QAEHABVTDesC16@@AAVTDes16@@@Z @ 18 NONAME ; int CCaInnerEntry::FindAttribute(class TDesC16 const &, class TDes16 &)
+	?Find@RCaEntryAttrArray@@QAEHABVTDesC16@@AAVTDes16@@@Z @ 19 NONAME ; int RCaEntryAttrArray::Find(class TDesC16 const &, class TDes16 &)
+	?SetRowId@CCaLocalizationEntry@@QAEXI@Z @ 20 NONAME ; void CCaLocalizationEntry::SetRowId(unsigned int)
+	?GetUid@CCaInnerQuery@@QBEIXZ @ 21 NONAME ; unsigned int CCaInnerQuery::GetUid(void) const
+	?SetFlags@CCaInnerEntry@@QAEXI@Z @ 22 NONAME ; void CCaInnerEntry::SetFlags(unsigned int)
+	?SetAttributeNameL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 23 NONAME ; void CCaLocalizationEntry::SetAttributeNameL(class TDesC16 const &)
+	?GetCount@CCaInnerQuery@@QBEIXZ @ 24 NONAME ; unsigned int CCaInnerQuery::GetCount(void) const
+	?GetParentId@CCaInnerNotifierFilter@@QBEHXZ @ 25 NONAME ; int CCaInnerNotifierFilter::GetParentId(void) const
+	?GetStringId@CCaLocalizationEntry@@QBEABVRBuf16@@XZ @ 26 NONAME ; class RBuf16 const & CCaLocalizationEntry::GetStringId(void) const
+	?GetFlags@CCaInnerEntry@@QBEIXZ @ 27 NONAME ; unsigned int CCaInnerEntry::GetFlags(void) const
+	?NewL@CCaEntryAttribute@@SAPAV1@ABVTDesC16@@@Z @ 28 NONAME ; class CCaEntryAttribute * CCaEntryAttribute::NewL(class TDesC16 const &)
+	?SetParentId@CCaInnerNotifierFilter@@QAEXH@Z @ 29 NONAME ; void CCaInnerNotifierFilter::SetParentId(int)
+	?SetFlagsOn@CCaInnerQuery@@QAEXI@Z @ 30 NONAME ; void CCaInnerQuery::SetFlagsOn(unsigned int)
+	?SetTypeNames@CCaInnerNotifierFilter@@QAEXPAVCDesC16ArrayFlat@@@Z @ 31 NONAME ; void CCaInnerNotifierFilter::SetTypeNames(class CDesC16ArrayFlat *)
+	?NewLC@CCaLocalizationEntry@@SAPAV1@XZ @ 32 NONAME ; class CCaLocalizationEntry * CCaLocalizationEntry::NewLC(void)
+	?NewL@CCaInnerNotifierFilter@@SAPAV1@W4TNotifierType@1@@Z @ 33 NONAME ; class CCaInnerNotifierFilter * CCaInnerNotifierFilter::NewL(enum CCaInnerNotifierFilter::TNotifierType)
+	?GetTableName@CCaLocalizationEntry@@QBEABVRBuf16@@XZ @ 34 NONAME ; class RBuf16 const & CCaLocalizationEntry::GetTableName(void) const
+	?GetFlagsOff@CCaInnerQuery@@QBEIXZ @ 35 NONAME ; unsigned int CCaInnerQuery::GetFlagsOff(void) const
+	?InternalizeL@CCaInnerEntry@@QAEXAAVRReadStream@@@Z @ 36 NONAME ; void CCaInnerEntry::InternalizeL(class RReadStream &)
+	?GetAttributeName@CCaLocalizationEntry@@QBEABVRBuf16@@XZ @ 37 NONAME ; class RBuf16 const & CCaLocalizationEntry::GetAttributeName(void) const
+	?GetTUint@MenuUtils@@SAHABVTDesC16@@AAI@Z @ 38 NONAME ; int MenuUtils::GetTUint(class TDesC16 const &, unsigned int &)
+	?AddAttributeL@CCaInnerQuery@@QAEXABVTDesC16@@0@Z @ 39 NONAME ; void CCaInnerQuery::AddAttributeL(class TDesC16 const &, class TDesC16 const &)
+	?Exist@RCaEntryAttrArray@@QAEHABVTDesC16@@@Z @ 40 NONAME ; int RCaEntryAttrArray::Exist(class TDesC16 const &)
+	?AddAttributeL@CCaInnerEntry@@QAEXABVTDesC16@@0@Z @ 41 NONAME ; void CCaInnerEntry::AddAttributeL(class TDesC16 const &, class TDesC16 const &)
+	?GetParentId@CCaInnerQuery@@QBEHXZ @ 42 NONAME ; int CCaInnerQuery::GetParentId(void) const
+	?SetDescriptionL@CCaInnerEntry@@QAEXABVTDesC16@@@Z @ 43 NONAME ; void CCaInnerEntry::SetDescriptionL(class TDesC16 const &)
+	?SetEntryRole@CCaInnerNotifierFilter@@QAEXW4TEntryRole@@@Z @ 44 NONAME ; void CCaInnerNotifierFilter::SetEntryRole(enum TEntryRole)
+	?GetFlagsOn@CCaInnerQuery@@QBEIXZ @ 45 NONAME ; unsigned int CCaInnerQuery::GetFlagsOn(void) const
+	?GetIconId@CCaInnerEntry@@QBEHXZ @ 46 NONAME ; int CCaInnerEntry::GetIconId(void) const
+	?SetIconDataL@CCaInnerEntry@@QAEXABVTDesC16@@00@Z @ 47 NONAME ; void CCaInnerEntry::SetIconDataL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
+	?GetEntryRole@CCaInnerNotifierFilter@@QBE?AW4TEntryRole@@XZ @ 48 NONAME ; enum TEntryRole CCaInnerNotifierFilter::GetEntryRole(void) const
+	?GetId@CCaInnerEntry@@QBEHXZ @ 49 NONAME ; int CCaInnerEntry::GetId(void) const
+	?SetEntryTypeNames@CCaInnerQuery@@QAEXPAVCDesC16ArrayFlat@@@Z @ 50 NONAME ; void CCaInnerQuery::SetEntryTypeNames(class CDesC16ArrayFlat *)
+	?GetNotifierType@CCaInnerNotifierFilter@@QBE?AW4TNotifierType@1@XZ @ 51 NONAME ; enum CCaInnerNotifierFilter::TNotifierType CCaInnerNotifierFilter::GetNotifierType(void) const
+	?ExternalizeL@CCaInnerEntry@@QBEXAAVRWriteStream@@@Z @ 52 NONAME ; void CCaInnerEntry::ExternalizeL(class RWriteStream &) const
+	?SetRole@CCaInnerQuery@@QAEXH@Z @ 53 NONAME ; void CCaInnerQuery::SetRole(int)
+	?GetIcon@CCaInnerEntry@@QBEABUTIconAttributes@1@XZ @ 54 NONAME ; struct CCaInnerEntry::TIconAttributes const & CCaInnerEntry::GetIcon(void) const
+	?NewL@CCaLocalizationEntry@@SAPAV1@XZ @ 55 NONAME ; class CCaLocalizationEntry * CCaLocalizationEntry::NewL(void)
+	?InternalizeL@CCaInnerNotifierFilter@@QAEXAAVRReadStream@@@Z @ 56 NONAME ; void CCaInnerNotifierFilter::InternalizeL(class RReadStream &)
+	?InternalizeL@RCaIdsArray@@QAEXAAVRReadStream@@@Z @ 57 NONAME ; void RCaIdsArray::InternalizeL(class RReadStream &)
+	?MarshalDataLC@RCaIdsArray@@QBEPAVHBufC8@@XZ @ 58 NONAME ; class HBufC8 * RCaIdsArray::MarshalDataLC(void) const
+	?GetEntryTypeNames@CCaInnerQuery@@QBEPBVCDesC16ArrayFlat@@XZ @ 59 NONAME ; class CDesC16ArrayFlat const * CCaInnerQuery::GetEntryTypeNames(void) const
+	?SetValueL@CCaEntryAttribute@@QAEXABVTDesC16@@@Z @ 60 NONAME ; void CCaEntryAttribute::SetValueL(class TDesC16 const &)
+	?ExternalizeL@CCaInnerQuery@@QBEXAAVRWriteStream@@@Z @ 61 NONAME ; void CCaInnerQuery::ExternalizeL(class RWriteStream &) const
+	?GetLocalizedString@CCaLocalizationEntry@@QBEABVRBuf16@@XZ @ 62 NONAME ; class RBuf16 const & CCaLocalizationEntry::GetLocalizedString(void) const
+	?InternalizeL@CCaInnerQuery@@QAEXAAVRReadStream@@@Z @ 63 NONAME ; void CCaInnerQuery::InternalizeL(class RReadStream &)
+	?NewLC@CCaEntryAttribute@@SAPAV1@ABVTDesC16@@@Z @ 64 NONAME ; class CCaEntryAttribute * CCaEntryAttribute::NewLC(class TDesC16 const &)
+	?GetTypeNames@CCaInnerNotifierFilter@@QBEPAVCDesC16ArrayFlat@@XZ @ 65 NONAME ; class CDesC16ArrayFlat * CCaInnerNotifierFilter::GetTypeNames(void) const
+	?NewL@CCaInnerEntry@@SAPAV1@XZ @ 66 NONAME ; class CCaInnerEntry * CCaInnerEntry::NewL(void)
+	?SetRole@CCaInnerEntry@@QAEXI@Z @ 67 NONAME ; void CCaInnerEntry::SetRole(unsigned int)
+	?NewLC@CCaInnerEntry@@SAPAV1@XZ @ 68 NONAME ; class CCaInnerEntry * CCaInnerEntry::NewLC(void)
+	?SetTableNameL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 69 NONAME ; void CCaLocalizationEntry::SetTableNameL(class TDesC16 const &)
+	?GetAttributes@CCaInnerEntry@@QBEABVRCaEntryAttrArray@@XZ @ 70 NONAME ; class RCaEntryAttrArray const & CCaInnerEntry::GetAttributes(void) const
+	?GetRowId@CCaLocalizationEntry@@QBEHXZ @ 71 NONAME ; int CCaLocalizationEntry::GetRowId(void) const
 	?SetIdsL@CCaInnerQuery@@QAEXABV?$RArray@H@@@Z @ 72 NONAME ; void CCaInnerQuery::SetIdsL(class RArray<int> const &)
-	?SetLocalizedStringL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 73 NONAME ; void CCaLocalizationEntry::SetLocalizedStringL(class TDesC16 const &)
-	?SetParentId@CCaInnerNotifierFilter@@QAEXH@Z @ 74 NONAME ; void CCaInnerNotifierFilter::SetParentId(int)
-	?SetParentId@CCaInnerQuery@@QAEXH@Z @ 75 NONAME ; void CCaInnerQuery::SetParentId(int)
-	?SetRole@CCaInnerEntry@@QAEXI@Z @ 76 NONAME ; void CCaInnerEntry::SetRole(unsigned int)
-	?SetRole@CCaInnerQuery@@QAEXH@Z @ 77 NONAME ; void CCaInnerQuery::SetRole(int)
-	?SetRowId@CCaLocalizationEntry@@QAEXI@Z @ 78 NONAME ; void CCaLocalizationEntry::SetRowId(unsigned int)
-	?SetSort@CCaInnerQuery@@QAEXW4TSortAttribute@1@@Z @ 79 NONAME ; void CCaInnerQuery::SetSort(enum CCaInnerQuery::TSortAttribute)
-	?SetStringIdL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 80 NONAME ; void CCaLocalizationEntry::SetStringIdL(class TDesC16 const &)
-	?SetTableNameL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 81 NONAME ; void CCaLocalizationEntry::SetTableNameL(class TDesC16 const &)
-	?SetTextId@CCaLocalizationEntry@@QAEXI@Z @ 82 NONAME ; void CCaLocalizationEntry::SetTextId(unsigned int)
-	?SetTextL@CCaInnerEntry@@QAEXABVTDesC16@@@Z @ 83 NONAME ; void CCaInnerEntry::SetTextL(class TDesC16 const &)
-	?SetTypeNames@CCaInnerNotifierFilter@@QAEXPAVCDesC16ArrayFlat@@@Z @ 84 NONAME ; void CCaInnerNotifierFilter::SetTypeNames(class CDesC16ArrayFlat *)
-	?SetUid@CCaInnerEntry@@QAEXJ@Z @ 85 NONAME ; void CCaInnerEntry::SetUid(long)
-	?SetUid@CCaInnerQuery@@QAEXI@Z @ 86 NONAME ; void CCaInnerQuery::SetUid(unsigned int)
-	?SetValueL@CCaEntryAttribute@@QAEXABVTDesC16@@@Z @ 87 NONAME ; void CCaEntryAttribute::SetValueL(class TDesC16 const &)
+	?SetFlagsOff@CCaInnerQuery@@QAEXI@Z @ 73 NONAME ; void CCaInnerQuery::SetFlagsOff(unsigned int)
+	?RemoveAttributeL@CCaInnerEntry@@QAEXABVTDesC16@@@Z @ 74 NONAME ; void CCaInnerEntry::RemoveAttributeL(class TDesC16 const &)
+	?GetRole@CCaInnerEntry@@QBEIXZ @ 75 NONAME ; unsigned int CCaInnerEntry::GetRole(void) const
+	?GetIds@CCaInnerQuery@@QBEABV?$RArray@H@@XZ @ 76 NONAME ; class RArray<int> const & CCaInnerQuery::GetIds(void) const
+	?ExternalizeL@RCaEntriesArray@@QBEXAAVRWriteStream@@@Z @ 77 NONAME ; void RCaEntriesArray::ExternalizeL(class RWriteStream &) const
+	?NewL@CCaInnerQuery@@SAPAV1@XZ @ 78 NONAME ; class CCaInnerQuery * CCaInnerQuery::NewL(void)
+	?SetUid@CCaInnerQuery@@QAEXI@Z @ 79 NONAME ; void CCaInnerQuery::SetUid(unsigned int)
+	?GetDescription@CCaInnerEntry@@QBEABVRBuf16@@XZ @ 80 NONAME ; class RBuf16 const & CCaInnerEntry::GetDescription(void) const
+	?GetRole@CCaInnerQuery@@QBEHXZ @ 81 NONAME ; int CCaInnerQuery::GetRole(void) const
+	?GetEntryTypeName@CCaInnerEntry@@QBEABVRBuf16@@XZ @ 82 NONAME ; class RBuf16 const & CCaInnerEntry::GetEntryTypeName(void) const
+	?NewLC@CCaInnerQuery@@SAPAV1@XZ @ 83 NONAME ; class CCaInnerQuery * CCaInnerQuery::NewLC(void)
+	?SetTextL@CCaInnerEntry@@QAEXABVTDesC16@@@Z @ 84 NONAME ; void CCaInnerEntry::SetTextL(class TDesC16 const &)
+	?SetParentId@CCaInnerQuery@@QAEXH@Z @ 85 NONAME ; void CCaInnerQuery::SetParentId(int)
+	?GetIds@CCaInnerNotifierFilter@@QBE?AV?$RArray@H@@XZ @ 86 NONAME ; class RArray<int> CCaInnerNotifierFilter::GetIds(void) const
+	?SetStringIdL@CCaLocalizationEntry@@QAEXABVTDesC16@@@Z @ 87 NONAME ; void CCaLocalizationEntry::SetStringIdL(class TDesC16 const &)
+	?SetTextId@CCaLocalizationEntry@@QAEXI@Z @ 88 NONAME ; void CCaLocalizationEntry::SetTextId(unsigned int)
+	?RemoveAttribute@RCaEntryAttrArray@@QAEXABVTDesC16@@@Z @ 89 NONAME ; void RCaEntryAttrArray::RemoveAttribute(class TDesC16 const &)
 
--- a/contentstorage/caclient/caclient.pro	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/caclient.pro	Tue Mar 23 23:55:55 2010 +0200
@@ -15,9 +15,13 @@
 #
 
 TEMPLATE = lib
-CONFIG += hb
+CONFIG += hb mobility
 HB = hbcore
 
+MOBILITY = serviceframework
+# temporary solution to solve problems with SF in MW dependency
+qtAddLibrary(QtServiceFramework)
+
 DEFINES += CACLIENT_LIB
 
 include(../../common.pri)
@@ -49,6 +53,7 @@
         -lfbscli \
         -lbitgdi
 include(caclient_s60.pri)
+include(cahandler.pri)
 }
 
 win32: {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/cahandler.pri	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,41 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+INCLUDEPATH += ../cahandler/inc \
+    ../cahandler/app/inc \
+    ../cahandler/url/inc \
+	../cahandler/tapp/inc
+
+HEADERS += ../cahandler/inc/*.h \
+    ../cahandler/app/inc/*.h \
+    ../cahandler/url/inc/*.h \
+	../cahandler/tapp/inc/catapphandler.h
+    
+SOURCES += ../cahandler/app/src/*.cpp \
+    ../cahandler/url/src/*.cpp  \
+		../cahandler/tapp/src/catapphandler.cpp
+
+LIBS += -lswinstcli \
+        -lapgrfx \
+        -lws32 \
+        -lapparc \
+        -lsisregistryclient \
+        -leikcore \
+        -lcone \
+        -lefsrv \
+        -lxqservice
+		
+
--- a/contentstorage/caclient/inc/caicondescription_p.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/inc/caicondescription_p.h	Tue Mar 23 23:55:55 2010 +0200
@@ -37,16 +37,11 @@
     QString filename() const;
     void setFileName(const QString &fileName);
 
-    int bitmapId() const;
-    void setBitmapId(int bitmapId);
+    QString skinId() const;
+    void setSkinId(const QString &skinId);
 
-    int maskId() const;
-    void setMaskId(int maskId);
-
-    int skinMajorId() const;
-    void setSkinMajorId(int id);
-    int skinMinorId() const;
-    void setSkinMinorId(int id);
+    QString applicationId() const;
+    void setApplicationId(const QString &applicationId);
 
 private:
 
@@ -68,22 +63,12 @@
     /*!
      *
      */
-    int mBitmapId;
-
-    /*!
-     *
-     */
-    int mMaskId;
+    QString mSkinId;
 
     /*!
      *
      */
-    int mSkinMajorId;
-
-    /*!
-     *
-     */
-    int mSkinMinorId;
+    QString mApplicationId;
 
 };
 
--- a/contentstorage/caclient/inc/caquery_p.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/inc/caquery_p.h	Tue Mar 23 23:55:55 2010 +0200
@@ -57,6 +57,11 @@
     unsigned int count() const;
     void setCount(unsigned int count);
 
+    QMap<QString, QString> attributes() const;
+    QString attribute(const QString &name) const;
+    void setAttribute(const QString &name, const QString &value);
+    void removeAttribute(const QString &name);
+    
     void clear();
 
 private:
@@ -81,6 +86,8 @@
     Qt::SortOrder mSortOrder;
 
     unsigned int mCount;
+
+    QMap<QString, QString> mAttributes;
 };
 
 #endif //CAQUERY_PRIVATE_H
--- a/contentstorage/caclient/s60/inc/caclientproxy.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/s60/inc/caclientproxy.h	Tue Mar 23 23:55:55 2010 +0200
@@ -19,14 +19,16 @@
 #define CACLIENTPROXY_H
 
 #include <QMutex>
+#include <QSharedPointer>
 
 // INCLUDES
 #include "cadef.h"
 #include "caclientsession.h"
 #include "canotifier.h"
+#include "cahandlerproxy.h"
 
 //FORWARD DECLARATIONS
-class CCaHandlerEngine;
+
 class CaClientNotifierProxy;
 class CaEntry;
 class CaQuery;
@@ -215,13 +217,6 @@
     void getEntryIdsL(const CaQuery &query,
                       QList<int> &sourceIdList);
 
-    /**
-     * Method for fetching entries. Symbian specific.
-     * @param entry entry
-     * @param command command.
-     */
-    void executeCommandL(const CaEntry &entry,
-                         const QString &command);
 
     /**
      * Touch.
@@ -240,9 +235,8 @@
     // Own.
     RCaClientSession mSession;
 
-    // Engine handler.
-    // Own.
-    CCaHandlerEngine *mHandler;
+    // Command handler.
+    QSharedPointer<CaHandlerProxy> mCommandHandler;
 
     // Mutex to serialize access to mSessions.
     QMutex mMutex;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/s60/inc/cahandler.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+#ifndef CA_HANDLER_H
+#define CA_HANDLER_H
+
+#include <QObject>
+#include <cadefs.h>
+#include <caclient_global.h>
+
+class CaEntry;
+class QString;
+
+class CaHandler: public QObject
+{
+    Q_OBJECT
+    
+public:
+    virtual int execute(const CaEntry &entry,
+                        const QString &commandName) = 0;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/s60/inc/cahandlerloader.h	Tue Mar 23 23:55:55 2010 +0200
@@ -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 CA_HANDLER_LOADER_H
+#define CA_HANDLER_LOADER_H
+
+#include <caclient_global.h>
+
+class QString;
+class CaHandler;
+
+class CaHandlerLoader
+{
+public:
+    virtual ~CaHandlerLoader();
+    virtual CaHandler *loadHandler(const QString &entryTypeName,
+                                   const QString &commandName) = 0;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/s60/inc/cahandlerproxy.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#ifndef CA_HANDLER_PROXY_H
+#define CA_HANDLER_PROXY_H
+
+#include <e32def.h>
+#include <QMap>
+#include <QString>
+#include <QSharedPointer>
+#include <cadefs.h>
+
+#include "cahandlerloader.h"
+class CaEntry;
+
+class CaHandlerProxy
+{
+public:
+
+    ~CaHandlerProxy();
+
+    explicit CaHandlerProxy(CaHandlerLoader *loader);
+
+    TInt execute(const CaEntry &entry, const QString &commandName);
+
+private:
+    CaHandler *getHandler(const CaEntry &entry,
+                          const QString &commandName);
+
+    typedef QMap<QString, QSharedPointer<CaHandler> > ImplementationMap;
+    typedef ImplementationMap::iterator ImplementationMapIterator;
+
+    QSharedPointer<CaHandlerLoader> mLoader;
+    ImplementationMap mImplementationMap;
+};
+
+#endif
--- a/contentstorage/caclient/s60/inc/caobjectadapter.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/s60/inc/caobjectadapter.h	Tue Mar 23 23:55:55 2010 +0200
@@ -158,17 +158,27 @@
     /**
      * @return  uid attribute name
      */
-    static const QString &applicationUidAttributeName();
+    static const QString applicationUidAttributeName();
+
+    /**
+     * @return  application entry type name
+     */
+    static const QString applicationEntryTypeName();
 
     /**
-     * @return  attribute type name
+     * @return  widget entry type name
      */
-    static const QString &applicationEntryName();
+    static const QString widgetEntryTypeName();
 
     /**
-     * @return  widget type name
+     * @return  url entry type name
      */
-    static const QString &widgetEntryName();
+    static const QString urlEntryTypeName();
+
+    /**
+     * @return  template application entry type name
+     */
+    static const QString templateApplicationEntryTypeName();
 
     /**
      * Set entry id.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/s60/inc/caqtsfhandlerloader.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,35 @@
+/*
+ * 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 CA_QT_SF_HANDLER_LOADER_H
+#define CA_QT_SF_HANDLER_LOADER_H
+
+#include <QMap>
+#include <QString>
+#include <QScopedPointer>
+
+#include "cahandlerloader.h"
+
+class CaQtSfHandlerLoader:
+    public CaHandlerLoader
+{
+public:
+    CaHandler *loadHandler(const QString &entryTypeName,
+                           const QString &commandName);
+};
+
+#endif
--- a/contentstorage/caclient/s60/src/caclientproxy.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/s60/src/caclientproxy.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -27,19 +27,19 @@
 #include "caobjectadapter.h"
 #include "caentriesarray.h"
 #include "caidsarray.h"
-#include "cahandlerengine.h"
 #include "caarraycleanup.inl"
 
 #include "caentry.h"
 #include "caquery.h"
 #include "cadefs.h"
-
+#include "cahandlerproxy.h"
+#include "caqtsfhandlerloader.h"
 
 //----------------------------------------------------------------------------
 //
 //----------------------------------------------------------------------------
 CaClientProxy::CaClientProxy():
-    mHandler(NULL)
+    mCommandHandler(new CaHandlerProxy(new CaQtSfHandlerLoader()))
 {
 }
 
@@ -49,7 +49,7 @@
 CaClientProxy::~CaClientProxy()
 {
     mSession.Close();
-    delete mHandler;
+
 }
 
 //----------------------------------------------------------------------------
@@ -172,7 +172,7 @@
 ErrorCode CaClientProxy::executeCommand(const CaEntry &entry,
                                         const QString &command)
 {
-    TRAPD(error, executeCommandL(entry, command));
+    TInt error = mCommandHandler->execute(entry, command);
 
     USE_QDEBUG_IF(error) << "CaClientProxy::executeCommand - Error ("
                          << error << ")";
@@ -329,27 +329,6 @@
     CleanupStack::PopAndDestroy(innerQuery);
 }
 
-//----------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------
-void CaClientProxy::executeCommandL(const CaEntry &entry,
-                                    const QString &command)
-{
-    CCaInnerEntry *innerEntry = CCaInnerEntry::NewLC();
-    CaObjectAdapter::convertL(entry, *innerEntry);
-
-    TPtrC16 commandPtr16(
-        reinterpret_cast<const TUint16 *>(command.utf16()));
-    HBufC8 *convertedCommand = CnvUtfConverter::ConvertFromUnicodeToUtf7L(
-                                   commandPtr16, false);
-    CleanupStack::PushL(convertedCommand);
-    if (!mHandler) {
-        mHandler = CCaHandlerEngine::NewL();
-    }
-    mHandler->HandleCommandL(*innerEntry, convertedCommand->Des());
-    CleanupStack::PopAndDestroy(convertedCommand);
-    CleanupStack::PopAndDestroy(innerEntry);
-}
 
 //----------------------------------------------------------------------------
 //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/s60/src/cahandlerloader.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#include <QString>
+#include "cahandlerloader.h"
+
+/*!
+    \class CaHandlerLoader
+    \ingroup 
+    \brief Interface for class of objects providing command handlers.
+
+    \sa CaHandlerLoader
+*/
+
+/*!
+    Destructor.
+*/
+CaHandlerLoader::~CaHandlerLoader()
+{
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/s60/src/cahandlerproxy.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,94 @@
+/*
+ * 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 <caentry.h>
+#include "cahandler.h"
+#include "cahandlerproxy.h"
+#include "cahandlerloader.h"
+
+/*!
+    \class CaHandlerProxy
+    \ingroup 
+    \brief Forwards execute request to an implemenation provided by specific handler loader.
+
+    \sa CaHandlerLoader
+*/
+
+/*!
+  Destructor.
+*/
+CaHandlerProxy::~CaHandlerProxy()
+{
+}
+
+
+/*!
+  Constructs handler proxy.
+  \param loader Provides handler implementations. It has to be pointer to a valid object.
+*/
+CaHandlerProxy::CaHandlerProxy(CaHandlerLoader *loader):
+    mLoader(loader)
+{
+    Q_ASSERT(!mLoader.isNull());
+}
+
+/*!
+  Forwards execute request to an appropriate handler if found otherwise ignores the request.
+  \param entry Subject for the requested command.
+  \param commandName Name of the command to be executed.
+  \return KErrNone (i.e. 0) on succes, error code otherwise.
+  \sa e32err.h for KErrNone definition.
+*/
+TInt CaHandlerProxy::execute(const CaEntry &entry, const QString &commandName)
+{
+    CaHandler *const handler = getHandler(entry, commandName);
+
+    TInt result = KErrNotFound;
+
+    if (handler != NULL) {
+        result = handler->execute(entry, commandName);
+    }
+
+    return result;
+}
+
+/*!
+  Looks for handler implementation in local cache or if not found, request it from
+  handler loader.
+  \param entry The entry being a subject for the requested command.
+  \param commandName Name of the command to be executed.
+  \return Pointer to a handler instance if available, NULL otherwise.
+*/
+CaHandler *CaHandlerProxy::getHandler(const CaEntry &entry,
+                                      const QString &commandName)
+{
+    CaHandler *implementation(0);
+
+    const QString entryTypeName(entry.entryTypeName());
+
+    const ImplementationMapIterator it(
+        mImplementationMap.find(entryTypeName));
+
+    if (it != mImplementationMap.end()) {
+        implementation = it->data();
+    } else {
+        implementation = mLoader->loadHandler(entryTypeName, commandName);
+        mImplementationMap[entryTypeName] = QSharedPointer<CaHandler>(implementation);
+    }
+
+    return implementation;
+}
--- a/contentstorage/caclient/s60/src/caobjectadapter.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/s60/src/caobjectadapter.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -112,11 +112,10 @@
         fromEntry.iconDescription();
 
     toEntry.SetIconDataL(
-        static_cast<TInt>(fromIconDescription.bitmapId()),
-        static_cast<TInt>(fromIconDescription.maskId()),
-        static_cast<TInt>(fromIconDescription.skinMajorId()),
-        static_cast<TInt>(fromIconDescription.skinMinorId()),
-        convertToDescriptor(fromIconDescription.filename()));
+        convertToDescriptor(fromIconDescription.filename()),
+        convertToDescriptor(fromIconDescription.skinId()),
+        convertToDescriptor(fromIconDescription.applicationId())
+        );
 
     const QMap<QString, QString> attributesMap = fromEntry.attributes();
 
@@ -167,6 +166,14 @@
     Qt::SortOrder sortOrder;
     fromQuery.getSort(sortAttr, sortOrder);
     toQuery.SetSort(CaObjectAdapter::getSortCode(sortAttr, sortOrder));
+    
+    const QMap<QString, QString> attributesMap = fromQuery.attributes();
+
+    foreach(QString key, attributesMap.keys()) {
+            toQuery.AddAttributeL(
+                convertToDescriptor(key),
+                convertToDescriptor(attributesMap.value(key)));
+    }
 }
 
 //----------------------------------------------------------------------------
@@ -189,18 +196,16 @@
 
     CaIconDescription iconDescription;
     iconDescription.setId(icon.iId);
-    iconDescription.setBitmapId(icon.iBitmapId);
-    iconDescription.setMaskId(icon.iMaskId);
-    iconDescription.setSkinMajorId(icon.iSkinMajorId);
-    iconDescription.setSkinMinorId(icon.iSkinMinorId);
     iconDescription.setFilename(convertToString(icon.iFileName));
+    iconDescription.setSkinId(convertToString(icon.iSkinId));
+    iconDescription.setApplicationId(convertToString(icon.iApplicationId));
 
     toEntry.setIconDescription(iconDescription);
 
     const RCaEntryAttrArray &attributesArray = fromEntry.GetAttributes();
 
-    if (toEntry.entryTypeName() == applicationEntryName()
-            || toEntry.entryTypeName() == widgetEntryName()) {
+    if (toEntry.entryTypeName() == applicationEntryTypeName()
+            || toEntry.entryTypeName() == widgetEntryTypeName()) {
         toEntry.setAttribute(applicationUidAttributeName(),
                              QString::number(fromEntry.GetUid()));
     }
@@ -356,7 +361,7 @@
 //----------------------------------------------------------------------------
 //
 //----------------------------------------------------------------------------
-const QString &CaObjectAdapter::applicationUidAttributeName()
+const QString CaObjectAdapter::applicationUidAttributeName()
 {
     const static QString name("application:uid");
     return name;
@@ -365,7 +370,7 @@
 //----------------------------------------------------------------------------
 //
 //----------------------------------------------------------------------------
-const QString &CaObjectAdapter::applicationEntryName()
+const QString CaObjectAdapter::applicationEntryTypeName()
 {
     const static QString name("application");
     return name;
@@ -374,12 +379,29 @@
 //----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
-const QString &CaObjectAdapter::widgetEntryName()
+const QString CaObjectAdapter::widgetEntryTypeName()
 {
     const static QString name("widget");
     return name;
 }
 
+//----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+const QString CaObjectAdapter::urlEntryTypeName()
+{
+    const static QString name("url");
+    return name;
+}
+
+//----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+const QString CaObjectAdapter::templateApplicationEntryTypeName()
+{
+    const static QString name("templatedApplication");
+    return name;
+}
 // -----------------------------------------------------------------------------
 // copying compressed bitmap
 //----------------------------------------------------------------------------
@@ -405,14 +427,21 @@
 HbIcon CaObjectAdapter::makeIconL(const CaEntry &entry, const QSize &size)
 {
     HbIcon icon;
-    CCaInnerEntry *innerEntry = CCaInnerEntry::NewLC();
-    CaObjectAdapter::convertL(entry, *innerEntry);
-    QString filename(entry.iconDescription().filename());
-    if (!filename.isEmpty()) {
-        icon = HbIcon(filename);
+    QString skinId(entry.iconDescription().skinId());
+    if (!skinId.isEmpty()) {
+        icon = HbIcon(skinId);
+    }
+    if (icon.isNull() || !(icon.size().isValid())) {
+        QString filename(entry.iconDescription().filename());
+        if (!filename.isEmpty()) {
+            icon = HbIcon(filename);
+        }
     }
     //try to load symbian icon from multi-bitmap (mbm, mbg)
     if (icon.isNull() || !(icon.size().isValid())) {
+        CCaInnerEntry *innerEntry = CCaInnerEntry::NewLC();
+        CaObjectAdapter::convertL(entry, *innerEntry);
+
         CAknIcon *aknIcon = CaMenuIconUtility::GetItemIcon(*innerEntry);
         QPixmap pixmap;
         if (aknIcon) {
@@ -443,8 +472,8 @@
             CleanupStack::PopAndDestroy(aknIcon);
             icon = HbIcon(QIcon(pixmap));
         }
+        CleanupStack::PopAndDestroy(innerEntry);
     }
-    CleanupStack::PopAndDestroy(innerEntry);
     return icon;
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/caclient/s60/src/caqtsfhandlerloader.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,75 @@
+/*
+ * 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 <QMap>
+#include <QScopedPointer>
+#include <QString>
+#include <qservice.h>
+#include <qstringlist.h>
+#include <qservicemanager.h>
+
+#include "cahandler.h"
+#include "caqtsfhandlerloader.h"
+#include "caobjectadapter.h"
+#include "caapphandler.h"
+#include "caurlhandler.h"
+#include "catapphandler.h" 
+#include "cas60handleradapter.h"
+
+QTM_USE_NAMESPACE
+
+/*!
+    \class CaQtSfHandlerLoader
+    \ingroup 
+    \brief Loads handlers implementation
+
+    The purpose of the class is to find Qt SF plugins implementing command handlers.
+    Temporarily because of issues with Qt SF this is replaced by immediate object
+    creation.
+    \sa CaHandlerLoader
+*/
+
+/*!
+    Loads handler implementations appropriate for the requested entry type name and command.
+    
+    The caller takes ownership of the returned pointer.
+        
+    \param entryTypeName Entry type name.
+    \param commandName Name of the command to be handled.
+    \return A pointer to handler serving the entry type and command if found, NULL otherwise.
+*/
+CaHandler *CaQtSfHandlerLoader::loadHandler(const QString &entryTypeName,
+        const QString &commandName)
+{
+    Q_UNUSED(commandName);
+
+    CaHandler *implementation(0);
+
+    if (entryTypeName == CaObjectAdapter::applicationEntryTypeName()
+        || entryTypeName == CaObjectAdapter::widgetEntryTypeName()) {
+        implementation = new CaS60HandlerAdapter<CCaAppHandler>;
+    } else if (entryTypeName == CaObjectAdapter::urlEntryTypeName()) {
+        implementation = new CaS60HandlerAdapter<CCaUrlHandler>;
+    } else if (entryTypeName == 
+               CaObjectAdapter::templateApplicationEntryTypeName()) {
+        implementation = new CaTappHandler;
+    }
+
+    return implementation;
+}
+
+
--- a/contentstorage/caclient/src/caicondescription.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/src/caicondescription.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -127,76 +127,41 @@
     m_d->setFileName(filename);
 }
 
-/*!
- Returns bitmap id.
- \retval bitmap id.
- */
-int CaIconDescription::bitmapId() const
-{
-    return m_d->bitmapId();
-}
 
 /*!
- Sets bitmap id
- \param bitmap id
+ Returns skin id.
+ \retval skin id.
  */
-void CaIconDescription::setBitmapId(int id)
+QString CaIconDescription::skinId() const
 {
-    m_d->setBitmapId(id);
-}
-
-/*!
- Returns icon mask id
- \retval icon mask id
- */
-int CaIconDescription::maskId() const
-{
-    return m_d->maskId();
+    return m_d->skinId();
 }
 
 /*!
- Sets icon mask id
- \param icon mask id
+ Sets skin id
+ \param skin id
  */
-void CaIconDescription::setMaskId(int id)
+void CaIconDescription::setSkinId(const QString &skinId)
 {
-    m_d->setMaskId(id);
-}
-
-/*!
- Returns skin major id
- \retval skin major id
- */
-int CaIconDescription::skinMajorId() const
-{
-    return m_d->skinMajorId();
+    m_d->setSkinId(skinId);
 }
 
 /*!
- Sets skin major id
- \param skin major id
+ Returns icon application id.
+ \retval icon application id.
  */
-void CaIconDescription::setSkinMajorId(int id)
+QString CaIconDescription::applicationId() const
 {
-    m_d->setSkinMajorId(id);
+    return m_d->applicationId();
 }
 
 /*!
- Returns skin minor id
- \retval skin minor id
+ Sets icon application id.
+ \param QString with icon application id.
  */
-int CaIconDescription::skinMinorId() const
+void CaIconDescription::setApplicationId(const QString &applicationId)
 {
-    return m_d->skinMinorId();
-}
-
-/*!
- Sets skin minor id
- \param skin minor id
- */
-void CaIconDescription::setSkinMinorId(int id)
-{
-    m_d->setSkinMinorId(id);
+    m_d->setApplicationId(applicationId);
 }
 
 /*!
@@ -214,8 +179,8 @@
  */
 CaIconDescriptionPrivate::CaIconDescriptionPrivate(
     CaIconDescription *iconDescriptionPublic) :
-    m_q(iconDescriptionPublic), mBitmapId(0), mMaskId(0), mSkinMajorId(0),
-    mSkinMinorId(0)
+    m_q(iconDescriptionPublic), mId(0), mFilename(), mSkinId(), 
+    mApplicationId(0)
 {
 }
 
@@ -257,73 +222,38 @@
  Returns bitmap id.
  \retval bitmap id.
  */
-int CaIconDescriptionPrivate::bitmapId() const
+QString CaIconDescriptionPrivate::skinId() const
 {
-    return mBitmapId;
-}
-
-/*!
- Sets bitmap id.
- \param bitmap id.
- */
-void CaIconDescriptionPrivate::setBitmapId(int bitmapId)
-{
-    mBitmapId = bitmapId;
+    return mSkinId;
 }
 
 /*!
- Returns icon mask id.
- \retval icon mask id.
+ Sets skin id.
+ \param skinId skin id.
  */
-int CaIconDescriptionPrivate::maskId() const
+void CaIconDescriptionPrivate::setSkinId(const QString &skinId)
 {
-    return mMaskId;
-}
-
-/*!
- Sets icon mask id.
- \param maskId icon mask id.
- */
-void CaIconDescriptionPrivate::setMaskId(int maskId)
-{
-    mMaskId = maskId;
+    mSkinId = skinId;
 }
 
 /*!
- Returns skin major id.
- \retval skin major id.
+ Returns icon application id.
+ \retval icon application id.
  */
-int CaIconDescriptionPrivate::skinMajorId() const
+QString CaIconDescriptionPrivate::applicationId() const
 {
-    return mSkinMajorId;
+    return mApplicationId;
 }
 
 /*!
- Sets skin major id.
- \param id skin major id.
+ Sets icon application id.
+ \param applicationId icon application id.
  */
-void CaIconDescriptionPrivate::setSkinMajorId(int id)
+void CaIconDescriptionPrivate::setApplicationId(const QString &applicationId)
 {
-    mSkinMajorId = id;
+    mApplicationId = applicationId;
 }
 
-/*!
- Returns skin minor id.
- \retval skin minor id.
- */
-int CaIconDescriptionPrivate::skinMinorId() const
-{
-    return mSkinMinorId;
-}
-
-/*!
- Sets skin minor id.
- \param skin minor id.
- */
-void CaIconDescriptionPrivate::setSkinMinorId(int id)
-{
-    mSkinMinorId = id;
-}
 
 /*!
  Sets icon id.
--- a/contentstorage/caclient/src/caquery.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/src/caquery.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -232,6 +232,44 @@
 }
 
 /*!
+ Returns query attributes.
+ \retval map of attributes indexed by their names.
+  */
+QMap<QString, QString> CaQuery::attributes() const
+{
+    return m_d->attributes();
+}
+
+/*!
+ Returns an attribute
+ \param name name of an attribute
+ \retval value of attribute
+ */
+QString CaQuery::attribute(const QString &name) const
+{
+    return m_d->attribute(name);
+}
+
+/*!
+ Sets attribute.
+ \param name name of an attribute.
+ \param value value of an attribute.
+ */
+void CaQuery::setAttribute(const QString &name, const QString &value)
+{
+    m_d->setAttribute(name, value);
+}
+
+/*!
+ Removes attribute.
+ \param name name of an attribute.
+ */
+void CaQuery::removeAttribute(const QString &name)
+{
+    m_d->removeAttribute(name);
+}
+
+/*!
  Clears query (restores the initial state).
  */
 void CaQuery::clear()
@@ -247,7 +285,7 @@
     m_q(queryPublic), mEntryRoles(ItemEntryRole | GroupEntryRole),
     mParentId(0), mEntryTypeNames(), mFlagsOn(), mFlagsOff(),
     mSortAttribute(DefaultSortAttribute),
-    mSortOrder(Qt::AscendingOrder), mCount(0)
+    mSortOrder(Qt::AscendingOrder), mCount(0), mAttributes()
 {
 }
 
@@ -269,6 +307,7 @@
     mSortAttribute = queryPrivate.mSortAttribute;
     mSortOrder = queryPrivate.mSortOrder;
     mCount = queryPrivate.mCount;
+    mAttributes = queryPrivate.mAttributes;
 
     return *this;
 }
@@ -422,6 +461,42 @@
 }
 
 /*!
+ \retval map of attributes indexed by their names
+ */
+QMap<QString, QString> CaQueryPrivate::attributes() const
+{
+    return mAttributes;
+}
+
+/*!
+ \param name name of an attribute
+ \retval value of attribute
+ */
+QString CaQueryPrivate::attribute(const QString &name) const
+{
+    return mAttributes.value(name);
+}
+
+/*!
+ Sets attribute.
+ \param name name of an attribute.
+ \param value value of an attribute.
+ */
+void CaQueryPrivate::setAttribute(const QString &name, const QString &value)
+{
+    mAttributes.insert(name, value);
+}
+
+/*!
+ Removes an attribute.
+ \param name name of an attribute.
+ */
+void CaQueryPrivate::removeAttribute(const QString &name)
+{
+    mAttributes.remove(name);
+}
+
+/*!
  Clears query (restores the initial state).
  */
 void CaQueryPrivate::clear()
--- a/contentstorage/caclient/src/caservice.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/src/caservice.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -830,14 +830,13 @@
 bool CaService::executeCommand(int entryId, const QString &command) const
 {
     bool result = false;
-
+    
     CaEntry *const temporaryEntry = getEntry(entryId);
-
+    
     if (temporaryEntry != NULL) {
         result = executeCommand(*temporaryEntry, command);
         delete temporaryEntry;
     }
-
     return result;
 }
 
@@ -935,7 +934,7 @@
  \param servicePublic pointer to public service
  */
 CaServicePrivate::CaServicePrivate(CaService *servicePublic) :
-    m_q(servicePublic), mProxy(new CaClientProxy())
+    m_q(servicePublic), mProxy(new CaClientProxy)
 {
     const ErrorCode connectionResult = mProxy->connect();
 
--- a/contentstorage/caclient/stub/src/caclientproxy.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/caclient/stub/src/caclientproxy.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -498,7 +498,7 @@
         QSqlQuery query(db);
         query.prepare(
             "SELECT ENTRY_ID, EN_TEXT, EN_DESCRIPTION, EN_TYPE_NAME, EN_FLAGS, EN_ROLE, EN_UID,  \
-                  ICON_ID, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID, IC_FILENAME \
+                  ICON_ID, IC_FILENAME, IC_SKIN_ID, IC_APP_ID \
                   FROM CA_ENTRY LEFT JOIN CA_ICON ON EN_ICON_ID = ICON_ID WHERE ENTRY_ID = ?");
         query.addBindValue(i);
 
@@ -522,16 +522,13 @@
             CaIconDescription icon;
             CaObjectAdapter::setId(icon,
                                    query.value(query.record().indexOf("ICON_ID")).toInt());
-            icon.setBitmapId(query.value(query.record().indexOf(
-                                             "IC_BITMAP_ID")).toInt());
-            icon.setMaskId(query.value(query.record().indexOf(
-                                           "IC_MASK_ID")).toInt());
-            icon.setSkinMajorId(query.value(query.record().indexOf(
-                                                "IC_SKINMAJOR_ID")).toInt());
-            icon.setSkinMinorId(query.value(query.record().indexOf(
-                                                "IC_SKINMINOR_ID")).toInt());
+
             icon.setFilename(query.value(query.record().indexOf(
                                              "IC_FILENAME")).toString());
+            icon.setSkinId(query.value(query.record().indexOf(
+                                             "IC_SKIN_ID")).toString());
+            icon.setApplicationId(query.value(query.record().indexOf(
+                                             "IC_APP_ID")).toString());
             entry->setIconDescription(icon);
 
             // attributes
@@ -813,20 +810,16 @@
     //set icon information into db
     QSqlQuery query(dbConnection());
     query.prepare(
-        "SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = :IC_FILENAME \
-            AND IC_BITMAP_ID = :IC_BITMAP_ID \
-            AND IC_MASK_ID = :IC_MASK_ID \
-            AND IC_SKINMAJOR_ID = :IC_SKINMAJOR_ID \
-            AND IC_SKINMINOR_ID = :IC_SKINMINOR_ID");
+        "SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = :IC_FILENAME"
+        " AND IC_SKIN_ID = :IC_SKIN_ID"
+        " AND IC_APP_ID = :IC_APP_ID");
     query.bindValue(":IC_FILENAME",
                     entryClone->iconDescription().filename());
-    query.bindValue(":IC_BITMAP_ID",
-                    entryClone->iconDescription().bitmapId());
-    query.bindValue(":IC_MASK_ID", entryClone->iconDescription().maskId());
-    query.bindValue(":IC_SKINMAJOR_ID",
-                    entryClone->iconDescription().skinMajorId());
-    query.bindValue(":IC_SKINMINOR_ID",
-                    entryClone->iconDescription().skinMinorId());
+    query.bindValue(":IC_SKIN_ID",
+                    entryClone->iconDescription().filename());
+    query.bindValue(":IC_APP_ID",
+                    entryClone->iconDescription().filename());
+
 
     bool success = query.exec();
     if (success && query.next()) {
@@ -834,19 +827,17 @@
         int iconId = query.value(query.record().indexOf("ICON_ID")).toInt();
         qDebug() << "iconId = " << iconId;
         CaIconDescription iconDescription = entryClone->iconDescription();
-        if (iconId <= 0 && (iconDescription.filename() != ""
-                            || iconDescription.bitmapId() != 0 || iconDescription.maskId() != 0
-                            || iconDescription.skinMajorId() != 0
-                            || iconDescription.skinMinorId() != 0)) {
+        if (iconId <= 0
+            && (!iconDescription.filename().isEmpty()
+                || !iconDescription.skinId().isEmpty()
+                || !iconDescription.applicationId().isEmpty())) {
             query.prepare(
-                "INSERT INTO CA_ICON \
-                           (IC_FILENAME,IC_BITMAP_ID,IC_MASK_ID,IC_SKINMAJOR_ID,IC_SKINMINOR_ID) \
-                            VALUES ( ? , ? , ? , ? , ? )");
+                "INSERT INTO CA_ICON"
+                " (IC_FILENAME, IC_SKIN_ID, IC_APP_ID)"
+                " VALUES ( ? , ? , ? , ? , ? )");
             query.addBindValue(iconDescription.filename());
-            query.addBindValue(iconDescription.bitmapId());
-            query.addBindValue(iconDescription.maskId());
-            query.addBindValue(iconDescription.skinMajorId());
-            query.addBindValue(iconDescription.skinMinorId());
+            query.addBindValue(iconDescription.skinId());
+            query.addBindValue(iconDescription.applicationId());
             success = query.exec();
             qDebug() << query.executedQuery();
             iconId = query.lastInsertId().toInt();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/app.pri	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,12 @@
+# 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 ../inc/*.h
+SOURCES += ./src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/app.pro	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,56 @@
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# Contributors:
+# Description:
+
+TEMPLATE = lib
+TARGET = caapphandlerplugin
+CONFIG += plugin hb mobility
+MOBILITY = serviceframework
+
+PLUGIN_SUBDIR = /hsresources/plugins/commandhandler
+
+include(../../../common.pri)
+
+
+DEPENDPATH += ./inc \
+    ./src
+	
+INCLUDEPATH += ./inc \
+    ../../inc \
+    ../../cautils/inc \
+    ../../caclient/inc \
+    ../../caclient/s60/inc \
+    $$MW_LAYER_SYSTEMINCLUDE
+	
+include(app.pri)
+
+symbian: {
+    TARGET.UID3 = 0x20022F83
+
+    LIBS += \
+    -leuser \
+    -lecom \
+    -lswinstcli \
+    -lcautils \
+    -lcaclient \
+    -lapgrfx \
+    -lws32 \
+    -lapparc \
+    -lsisregistryclient \
+    -leikcore \
+    -lcone \
+    -lefsrv \
+    -lxqutils
+    
+
+    exists($${EPOCROOT}epoc32/include/mw/XQSettingsManager):LIBS += -lxqsettingsmanager
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/inc/caapphandler.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  ?Description
+ *
+ */
+
+#ifndef C_CAAPPHANDLER_H
+#define C_CAAPPHANDLER_H
+
+#include <e32base.h>
+
+// forward declarations
+class CEikonEnv;
+class CCaInnerEntry;
+class CCaUninstallOperation;
+
+/**
+ *  Command handler for application entries.
+ *
+ *  @lib caclient.lib
+ */
+NONSHARABLE_CLASS( CCaAppHandler )
+    {
+
+public:
+    /**
+    * Allocates memory for and initializes CCaAppHandler object
+    */
+    static CCaAppHandler* NewL();
+
+    /**
+     * Destructor.
+     */
+    virtual ~CCaAppHandler();
+
+protected:
+
+    CCaAppHandler();
+
+    void ConstructL();
+
+public:
+
+    /**
+     * Handle command.
+     * @param aItem Item of supported type.
+     * @param aCommand Command.
+     * @param aParams. Command parameters.
+     * @param aStatus Observer request status. When the operation completes,
+     * this status will be completed with the resulting error code.
+     * @return Asynchronous operation. Owned by the caller.
+     */
+    void HandleCommandL( CCaInnerEntry& aEntry, const TDesC8& aCommand );
+
+private:
+    /**
+     * Launches application
+     * @param aUid UID of the application to launch
+     * @param aParam command parameters
+     * @param aViewId id of the view the application is to start in
+     */
+    void LaunchApplicationL( const TUid aUid, const TDesC8 &aParam,
+            TInt aViewId );
+    
+    /**
+     * Closes application
+     * @param aEntry the entry represeting application to close
+     */
+    void CloseApplicationL( CCaInnerEntry& aEntry );
+
+private:
+    // data
+
+    CEikonEnv* iEikEnv;
+    CCaUninstallOperation* iUninstallOperation;
+    };
+
+#endif // C_CAAPPHANDLER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/inc/caapphandlerplugin.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,37 @@
+/*
+ * 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 CA_APP_HANDLER_PLUGIN_H
+#define CA_APP_HANDLER_PLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class CaAppHandlerPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/inc/cauninstalloperation.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  ?Description
+ *
+ */
+
+#ifndef C_CAUNINSTALLOPERATION_H
+#define C_CAUNINSTALLOPERATION_H
+
+#include <e32base.h>
+#include <SWInstApi.h>
+
+/**
+ * Uninstall CMenuOperation
+ * Encapsulates the functionality of uninstalling an application.
+ *
+ *  @lib caclient.lib
+ */
+NONSHARABLE_CLASS(CCaUninstallOperation): public CActive {
+
+public:
+    /**
+    * Destructor
+    */
+    virtual ~CCaUninstallOperation();
+    
+    /**
+     * Two-phased constructor. Leaves on failure.
+     * Allocates memory for and constructs an uninstaller object. After that
+     * starts asynchronous uninnstallation of the requested entry
+     * @param aEntry entry to be uninstalled
+     * @param aPriority priority of the active scheduler responsible for handling
+     * asynchronous installation operation
+     * @return The constructed object.
+     */
+    static CCaUninstallOperation *NewL(CCaInnerEntry &aEntry,
+    TInt aPriority = CActive::EPriorityStandard);
+
+private:
+    // construction
+    /**
+     * Constructor.
+     * Starts active scheduler.
+     * @param aEntry entry to be uninstalle
+     * @param aPriority priority of the active scheduler responsible for handling
+     * asynchronous installation operation
+     */
+    CCaUninstallOperation(CCaInnerEntry &aEntry, TInt aPriority);
+    
+    /**
+     * Initializes the object and starts asynchronous uninstallation process.
+     * @param aEntry entry to be uninstalle
+     * asynchronous installation operation
+     */
+    void ConstructL(CCaInnerEntry &aEntry);
+    
+    /**
+     * Retrieves package information for requested application uid
+     * @param aAppUid application uid
+       @param aMimeType placeholder for resulting mime type of the package
+     * @param aPackageUid placeholder for resulting package uid of the application 
+     */
+    void AppInfoL(const TUid &aAppUid, TPtrC8 &aMimeType, TUid &aPackageUid);
+    
+    /**
+     * Retrieves package uid 
+     * @param aAppFullName application full name
+       @param aPackageUid placeholder for resulting package uid of the application
+       @return true if package uid was found
+     */
+    TBool GetInstallPkgUidL(const TDesC &aAppFullName, TUid &aPackageUid);
+
+private:
+    // from CActive
+
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private:
+
+    CCaInnerEntry &iEntry;
+    SwiUI::RSWInstLauncher iUninstaller;
+    TInt iId;
+};
+
+#endif // C_CAUNINSTALLOPERATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/resource/caapphandlerplugin.s60xml	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>caapphandlerplugin</name>
+    <filepath>z:/hsresources/plugins/commandhandler/caapphandlerplugin.qtplugin</filepath>
+    <description></description>
+    <interface>
+        <name>com.nokia.homescreen.ICommandHandler</name>
+        <version>1.0</version>
+        <description></description>
+        <capabilities></capabilities>
+        <customproperty key="entryTypeName">application</customproperty>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/resource/caapphandlerplugin.xml	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>caapphandlerplugin</name>
+    <filepath>caapphandlerplugin</filepath>
+    <description></description>
+    <interface>
+        <name>com.nokia.homescreen.ICommandHandler</name>
+        <version>1.0</version>
+        <description></description>
+        <capabilities></capabilities>
+        <customproperty key="entryTypeName">application</customproperty>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/src/caapphandler.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,198 @@
+/*
+ * 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 <w32std.h>
+#include <apgtask.h>
+#include <apgcli.h>
+#include <eikenv.h>
+#include <eikappui.h>
+#include <vwsdef.h>
+#include <AknDef.h>
+#include <AknTaskList.h>
+
+#include "caapphandler.h"
+#include "cainnerentry.h"
+#include "cauninstalloperation.h"
+
+#include "cautils.h"
+#include "cadef.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CCaAppHandler::~CCaAppHandler()
+{
+    delete iUninstallOperation;
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CCaAppHandler *CCaAppHandler::NewL()
+{
+    CCaAppHandler *handler = new(ELeave) CCaAppHandler();
+    CleanupStack::PushL(handler);
+    handler->ConstructL();
+    CleanupStack::Pop(handler);
+    return handler;
+}
+
+// ---------------------------------------------------------
+// CCaAppHandler::CCaAppHandler
+// ---------------------------------------------------------
+//
+CCaAppHandler::CCaAppHandler()
+{
+    iEikEnv = CEikonEnv::Static();
+    iUninstallOperation = NULL;
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCaAppHandler::ConstructL()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCaAppHandler::HandleCommandL(CCaInnerEntry &aEntry,
+                                   const TDesC8 &aCommand)
+{
+    if (aCommand == KCaCmdOpen() && aEntry.GetEntryTypeName()
+            == KCaTypeApp()) {
+        TInt viewId(-1);
+        TBuf<KCaMaxAttrValueLen> viewIdValue;
+        if (aEntry.FindAttribute(KCaAttrView(), viewIdValue)) {
+            if (MenuUtils::GetTUint(viewIdValue, (TUint &) viewId)
+                    != KErrNone) {
+                User::Leave(KErrCorrupt);
+            }
+        }
+        LaunchApplicationL(TUid::Uid(aEntry.GetUid()), KNullDesC8(),
+                           viewId);
+    } else if (aCommand == KCaCmdClose() && aEntry.GetEntryTypeName()
+               == KCaTypeApp()) {
+        CloseApplicationL(aEntry);
+    } else if (aCommand == KCaCmdRemove()
+               && (aEntry.GetEntryTypeName() == KCaTypeApp()
+                   || aEntry.GetEntryTypeName() == KCaTypeWidget())) {
+        if (iUninstallOperation && iUninstallOperation->IsActive()) {
+            User::Leave(KErrInUse);
+        }
+        delete iUninstallOperation;
+        iUninstallOperation = NULL;
+        iUninstallOperation = CCaUninstallOperation::NewL(aEntry);
+    } else {
+        User::Leave(KErrNotSupported);
+    }
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCaAppHandler::LaunchApplicationL(const TUid aUid,
+                                       const TDesC8 &aParam, TInt aViewId)
+{
+    if (aViewId > 0 && iEikEnv) {
+        TUid viewId = TUid::Uid(aViewId);
+        TVwsViewId view(aUid, viewId);
+        iEikEnv->EikAppUi()->ActivateViewL(view);
+    } else {
+        RWsSession wsSession;
+        User::LeaveIfError(wsSession.Connect());
+        CleanupClosePushL<RWsSession> (wsSession);
+
+        CAknTaskList *taskList = CAknTaskList::NewL(wsSession);
+        TApaTask task = taskList->FindRootApp(aUid);
+        delete taskList;
+
+        if (task.Exists()) {
+            task.BringToForeground();
+        } else {
+            TApaAppInfo appInfo;
+            TApaAppCapabilityBuf capabilityBuf;
+            RApaLsSession appArcSession;
+            User::LeaveIfError(appArcSession.Connect());
+            CleanupClosePushL<RApaLsSession> (appArcSession);
+
+            User::LeaveIfError(appArcSession.GetAppInfo(appInfo, aUid));
+            User::LeaveIfError(appArcSession.GetAppCapability(
+                                   capabilityBuf, aUid));
+
+            TApaAppCapability &caps = capabilityBuf();
+            TFileName appName = appInfo.iFullName;
+            CApaCommandLine *cmdLine = CApaCommandLine::NewLC();
+            cmdLine->SetExecutableNameL(appName);
+
+            if (caps.iLaunchInBackground) {
+                cmdLine->SetCommandL(EApaCommandBackground);
+            } else {
+                cmdLine->SetCommandL(EApaCommandRun);
+            }
+
+            cmdLine->SetTailEndL(aParam);
+
+            User::LeaveIfError(appArcSession.StartApp(*cmdLine));
+
+            CleanupStack::PopAndDestroy(cmdLine);
+            CleanupStack::PopAndDestroy(&appArcSession);
+        }
+        CleanupStack::PopAndDestroy(&wsSession);
+    }
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCaAppHandler::CloseApplicationL(CCaInnerEntry &aEntry)
+{
+    RWsSession wsSession;
+    User::LeaveIfError(wsSession.Connect());
+    CleanupClosePushL<RWsSession> (wsSession);
+
+    if ((aEntry.GetFlags() & ERunning) &&
+            (!(aEntry.GetFlags() & ESystem))) {
+        RBuf value;
+        CleanupClosePushL(value);
+        value.CreateL(KCaMaxAttrValueLen);
+        if (aEntry.FindAttribute(KCaAttrWindowGroupId, value)) {
+            TInt wgId(KErrNotFound);
+            TLex16 parser(value);
+            if (KErrNone == parser.Val(wgId) && wgId > 0) {
+                TWsEvent event;
+                event.SetTimeNow();
+                event.SetType(KAknShutOrHideApp);
+                wsSession.SendEventToWindowGroup(wgId, event);
+            }
+        }
+        CleanupStack::PopAndDestroy(&value);
+    }
+
+    CleanupStack::PopAndDestroy(&wsSession);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/src/caapphandlerplugin.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,89 @@
+/*
+ * 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 <cadefs.h>
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+#include "cahandlerloader.h"
+
+#include "caapphandler.h"
+#include "caapphandlerplugin.h"
+#include "cas60handleradapter.h"
+
+/*!
+    \class CaAppHandlerPlugin
+    \ingroup
+    \brief Implementation of Qt SF plugin for application command handler.
+*/
+
+/*!
+    \param descriptor Service descriptor.
+    \param context Ignored.
+    \param session Ignored.
+    \return An instance of the CaS60HandlerAdapter<CCaAppHandler> when descriptor interface name
+    is "com.nokia.homescreen.ICommandHandler", NULL otherwise.
+*/
+QObject *CaAppHandlerPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+        QServiceContext *context,
+        QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() ==
+            "com.nokia.homescreen.ICommandHandler") {
+        return new CaS60HandlerAdapter<CCaAppHandler>;
+    } else {
+        return 0;
+    }
+}
+// TODO: uncomment when it will be used in plugin
+//Q_EXPORT_PLUGIN2(caapphandlerplugin, CaAppHandlerPlugin)
+
+
+/*!
+    \class CaHandler
+    \ingroup
+    \brief Interface for command handlers
+*/
+
+/*!
+    \fn int CaHandler::execute(const CaEntry &entry, const QString &commandName) = 0
+    \param entry Subject of the command.
+    \param commandName The name of the command to execute.
+    Returns 0 on success, error code otherwise.
+    \sa e32err.h for error code descriptions.
+*/
+
+/*!
+    \class CaS60HandlerAdapter<typename Plugin>
+    \ingroup
+    \brief Adapter for S60 command handlers.
+
+    Adapts S60 command handlers to CaHandler interface
+
+    \sa CaHandler
+*/
+
+/*!
+    \fn int CaS60HandlerAdapter<typename Plugin>::execute(const CaEntry &entry, const QString &commandName) 
+    \param entry Subject of the command.
+    \param commandName The name of the command to execute.
+    \return 0 on success, error code otherwise.
+    \sa e32err.h for error code descriptions.
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/app/src/cauninstalloperation.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,203 @@
+/*
+ * 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 <apgcli.h>
+#include <swi/sisregistrysession.h>
+#include <swi/sisregistryentry.h>
+#include "cautils.h"
+#include "cadef.h"
+#include "cainnerentry.h"
+#include "cauninstalloperation.h"
+_LIT8(KAppMimeType, "x-epoc/x-sisx-app");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::~CCaUninstallOperation
+// ---------------------------------------------------------------------------
+//
+CCaUninstallOperation::~CCaUninstallOperation()
+{
+    Cancel();
+    iUninstaller.Close();
+}
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::NewL
+// ---------------------------------------------------------------------------
+//
+CCaUninstallOperation *CCaUninstallOperation::NewL(CCaInnerEntry &aEntry,
+        TInt aPriority)
+{
+    CCaUninstallOperation *self;
+
+    self = new(ELeave) CCaUninstallOperation(aEntry, aPriority);
+    CleanupStack::PushL(self);
+    self->ConstructL(aEntry);
+    CleanupStack::Pop(self);
+    return self;
+}
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::CCaUninstallOperation
+// ---------------------------------------------------------------------------
+//
+CCaUninstallOperation::CCaUninstallOperation(CCaInnerEntry &aEntry,
+        TInt aPriority) :
+    CActive(aPriority), iEntry(aEntry), iUninstaller(), iId(0)
+{
+    CActiveScheduler::Add(this);
+}
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CCaUninstallOperation::ConstructL(CCaInnerEntry &aEntry)
+{
+    TBuf<KCaMaxAttrValueLen> uidAttr;
+    TUint uid = aEntry.GetUid();
+
+    TUid packageUid = KNullUid;
+    TPtrC8 mimeType;
+
+    if (!(aEntry.GetFlags() & ERemovable)) {
+        User::Leave(KErrAccessDenied);
+    }
+
+    User::LeaveIfError(iUninstaller.Connect());
+    iId = aEntry.GetId();
+    if (aEntry.GetEntryTypeName() == KCaTypeWidget()) {
+        TBuf<KMaxUidName> uidDesc;
+        aEntry.FindAttribute(KCaPackageUid, uidDesc);
+        TLex uidLex(uidDesc);
+        TUint32 uidValue;
+        User::LeaveIfError(uidLex.Val(uidValue, EHex));
+
+        packageUid.iUid = static_cast<TInt32>(uidValue);
+        mimeType.Set(KAppMimeType);
+    } else {
+        AppInfoL(TUid::Uid(uid), mimeType, packageUid);
+    }
+
+    // Commence the uninstallations
+    iUninstaller.Uninstall(iStatus, packageUid, mimeType);
+    SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::AppInfo
+// ---------------------------------------------------------------------------
+//
+void CCaUninstallOperation::AppInfoL(const TUid &aAppUid,
+                                     TPtrC8 &aMimeType, TUid &aPackageUid)
+{
+    RApaLsSession apaLsSession;
+
+    User::LeaveIfError(apaLsSession.Connect());
+    CleanupClosePushL(apaLsSession);
+    User::LeaveIfError(apaLsSession.GetAllApps());
+
+    TApaAppInfo appInfo;
+    User::LeaveIfError(apaLsSession.GetAppInfo(appInfo, aAppUid));
+    if (!GetInstallPkgUidL(appInfo.iFullName, aPackageUid)) {
+        aPackageUid = aAppUid;
+    }
+    aMimeType.Set(KAppMimeType);
+
+    CleanupStack::PopAndDestroy(&apaLsSession);
+}
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::GetInstallPkgUidL
+// ---------------------------------------------------------------------------
+//
+TBool CCaUninstallOperation::GetInstallPkgUidL(const TDesC &aAppFullName,
+        TUid &aPackageUid)
+{
+    // Search for the full name of the application amongst every file name in
+    // every installed packages.
+    TBool found = EFalse;
+    Swi::RSisRegistrySession iSisRegSession;
+
+    // Get the array of ids of every installed packages
+    if (KErrNone != iSisRegSession.Connect()) {
+        return found;
+    }
+    CleanupClosePushL(iSisRegSession);
+
+    RArray<TUid> packageIds;
+    CleanupClosePushL(packageIds);
+
+    iSisRegSession.InstalledUidsL(packageIds);
+
+    RPointerArray<HBufC> packageFiles;
+    CleanupClosePushL(packageFiles);
+
+    for (TInt i = 0; i < packageIds.Count() && !found; ++i) {
+        const TUid packageId = packageIds[i];
+        Swi::RSisRegistryEntry packageEntry;
+
+        // Get the array of file names in the current install package and look
+        // if there is one suggesting that the application was installed from
+        // the package.
+        if (KErrNone == packageEntry.Open(iSisRegSession, packageId)) {
+            CleanupClosePushL(packageEntry);
+            packageEntry.FilesL(packageFiles);
+            for (TInt pf = 0; pf < packageFiles.Count() && !found; ++pf) {
+                if (packageFiles[pf]->FindC(aAppFullName) == 0) {
+                    aPackageUid = packageId;
+                    found = ETrue;
+                }
+            }
+            packageFiles.ResetAndDestroy();
+            CleanupStack::PopAndDestroy(&packageEntry);
+        }
+    }
+
+    CleanupStack::PopAndDestroy(&packageFiles);
+    CleanupStack::PopAndDestroy(&packageIds);
+    CleanupStack::PopAndDestroy(&iSisRegSession);
+
+    return found;
+}
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::RunL
+// ---------------------------------------------------------------------------
+//
+void CCaUninstallOperation::RunL()
+{
+}
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::DoCancel
+// ---------------------------------------------------------------------------
+//
+void CCaUninstallOperation::DoCancel()
+{
+    iUninstaller.CancelAsyncRequest(SwiUI::ERequestUninstall);
+}
+
+// ---------------------------------------------------------------------------
+// CCaUninstallOperation::RunError
+// ---------------------------------------------------------------------------
+//
+TInt CCaUninstallOperation::RunError(TInt /* aError */)
+{
+    return KErrNone;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/cahandler.pro	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,23 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS  += app
+SUBDIRS  += tapp
+SUBDIRS  += url
+
+CONFIG  += ordered
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/inc/cas60handleradapter.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#ifndef CA_S60_HANDLER_ADAPTER_H
+#define CA_S60_HANDLER_ADAPTER_H
+
+#include <e32des8.h>
+#include <cadefs.h>
+#include <caentry.h>
+#include <QScopedPointer>
+#include <QString>
+#include <utf.h>
+#include <xqconversions.h>
+
+#include "cainnerentry.h"
+#include "cahandler.h"
+#include "caobjectadapter.h"
+
+template <typename Plugin>
+class CaS60HandlerAdapter: public CaHandler
+{
+public:
+    int execute(const CaEntry &entry, const QString &commandName) {
+
+        TPtrC16 commandNameDesC16(
+            reinterpret_cast<const TUint16 *>(commandName.utf16()));
+
+        QScopedPointer<HBufC8> commandNameDesc8;
+
+        TRAPD(result,
+              commandNameDesc8.reset(CnvUtfConverter::ConvertFromUnicodeToUtf7L(
+                                         commandNameDesC16, false)));
+
+        QScopedPointer<CCaInnerEntry> innerEntry(NULL);
+
+        TRAP(result,
+             innerEntry.reset(CCaInnerEntry::NewL());
+             CaObjectAdapter::convertL(entry, *innerEntry);
+
+             static QScopedPointer<Plugin> plugin(Plugin::NewL());
+             plugin->HandleCommandL(*innerEntry, commandNameDesc8->Des());
+            );
+
+        return result;
+    }
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/tapp/catapphandler.pro	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,47 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = lib
+TARGET = catapphandlerplugin
+CONFIG += plugin mobility
+MOBILITY = serviceframework
+
+PLUGIN_SUBDIR = /hsresources/plugins/commandhandler
+
+
+include (../../../common.pri)
+
+
+DEPENDPATH += ./inc \
+              ./src \
+			  ../../caclient/s60/inc
+			  
+INCLUDEPATH += ./inc \
+               ../../caclient/s60/inc
+               
+
+symbian: {
+    TARGET.UID3 = 0x20028710
+
+	
+	LIBS += -lxqservice \
+            -lxqutils
+#        -lhsutils
+
+}
+
+
+include(catapphandler.pri)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/tapp/catapphandlerplugin.pri	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+HEADERS += ./inc/*.h ../inc/*.h
+SOURCES += ./src/*.cpp
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/tapp/inc/catapphandler.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Default implementation of the tapp handler
+ *
+ */
+
+#ifndef CATAPPHANDLER_H
+#define CATAPPHANDLER_H
+
+#include <QObject>
+#include "cahandler.h"
+#include "cadefs.h"
+
+class CaEntry;
+class XQApplicationManager;
+
+const QString hsitemLaunchUri("item:launchuri");
+
+class CaTappHandler: public CaHandler
+{
+Q_OBJECT
+
+public:
+
+explicit    CaTappHandler(QObject *parent = 0);
+    ~CaTappHandler();
+
+    Q_INVOKABLE
+    int execute(const CaEntry& entry, const QString& command);
+
+private:
+    XQApplicationManager* mAiwMgr;
+
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/tapp/inc/catapphandlerplugin.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,37 @@
+/*
+ * 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:  Default template app handler plugin
+ *
+ */
+
+#ifndef CATAPPHANDLERPLUGIN_H
+#define CATAPPHANDLERPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+#include <qserviceinterfacedescriptor.h>
+
+QTM_USE_NAMESPACE
+
+class CaTappHandlerPlugin: public QObject, public QServicePluginInterface
+{
+Q_OBJECT 
+Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+        QServiceContext *context, QAbstractSecuritySession *session);
+};
+
+#endif //CATAPPHANDLERPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/tapp/resource/catapphandlerplugin.s60xml	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>catapphandlerplugin</name>
+    <filepath>z:/hsresources/plugins/commandhandler/catapphandlerplugin.qtplugin</filepath>
+    <description>Content Arsenal tapp handler plugin</description>
+    <interface>
+        <name>com.nokia.homescreen.ICommandHandler</name>
+        <version>1.0</version>
+        <description> executes commands on tapps </description>
+        <capabilities></capabilities>
+    </interface>
+</service>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/tapp/resource/catapphandlerplugin.xml	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>catapphandlerplugin</name>
+    <filepath>z:/hsresources/plugins/commandhandler/catapphandlerplugin.qtplugin</filepath>
+    <description>Content Arsenal tapp handler plugin</description>
+    <interface>
+        <name>com.nokia.homescreen.ICommandHandler</name>
+        <version>1.0</version>
+        <description> executes commands on tapps </description>
+		<customproperty key="entryTypeName">application</customproperty>
+        <capabilities></capabilities>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/tapp/src/catapphandler.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,73 @@
+/*
+ * 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:  Default implementation of the home screen runtime.
+ *
+ */
+
+#include <qservicemanager.h>
+#include <qservicefilter.h>
+#include <qserviceinterfacedescriptor.h>
+
+#include <xqappmgr.h>
+
+#include "caentry.h"
+#include "catapphandler.h"
+
+QTM_USE_NAMESPACE
+
+/*!
+    \class CaTappHandler
+    \ingroup
+    \brief Implementation of templated application command handler.
+*/
+
+/*!
+ Constructor.
+ \param parent Parent object of this object.
+ */
+CaTappHandler::CaTappHandler(QObject *parent)
+{
+    mAiwMgr = new XQApplicationManager();
+}
+
+/*!
+ Destructor.
+ */
+CaTappHandler::~CaTappHandler()
+{
+    delete mAiwMgr;
+}
+
+/*!
+ Executes \a command by default "open" on template application represented by \a entry.
+ Uses XQApplicationManager
+ \param entry Subject of the \a command.
+ \param command Description of the command.
+ \return Error code described in QSERVICEMANAGER.H
+ */
+int CaTappHandler::execute(const CaEntry& entry, const QString& command)
+{
+    int error = 0; // this returns Error enum from QSERVICEMANAGER.H
+    if (command == caCmdOpen) {
+        QUrl url(entry.attribute(hsitemLaunchUri)); // f.e. QUrl url ("application://101F7AE7?");       
+        QScopedPointer<XQAiwRequest> request(mAiwMgr->create(url, true));
+        if (!request.isNull()) {
+            bool res = request->send();
+            if (!res) {
+                error = request->lastError();
+            }
+        }
+    }
+    return error;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/tapp/src/catapphandlerplugin.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Default runtime plugin.
+ *
+ */
+
+/*#include <qserviceinterfacedescriptor.h>
+ #include <qabstractsecuritysession.h>
+ #include <qservicecontext.h>
+ */
+
+#include "catapphandlerplugin.h"
+#include "catapphandler.h"
+
+#include <cadefs.h>
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+/*!
+    \class CaTappHandlerPlugin
+    \ingroup
+    \brief Implementation of Qt SF plugin for templated application command handler.
+*/
+
+/*!
+    \param descriptor service descriptor
+    \param context ignored
+    \param session ignored
+    \return An instance of the CaTapphandler object when descriptor interface name
+    is "com.nokia.homescreen.ICommandHandler", NULL otherwise.
+*/
+QObject *CaTappHandlerPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+    QServiceContext *context, QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() == QLatin1String("com.nokia.homescreen.ICommandHandler")) {
+        return new CaTappHandler();
+    }
+    else {
+        return 0;
+    }
+}
+
+Q_EXPORT_PLUGIN2(catapphandlerplugin, CaTappHandlerPlugin)
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/url/inc/caurlhandler.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  ?Description
+ *
+ */
+
+#ifndef __CCAURLHANDLER_H__
+#define __CCAURLHANDLER_H__
+
+#include <e32base.h>
+
+class CCaInnerEntry;
+
+// Constants
+const TUid KUidBrowser =
+    {
+    0x10008D39
+    };
+_LIT( KBrowserPrefix, "4 " );
+
+/**
+ *  Command handler for url entries.
+ *
+ *  @lib caclient.lib
+ */
+NONSHARABLE_CLASS( CCaUrlHandler )
+    {
+
+public:
+    // construction
+
+    /**
+     * Destructor.
+     */
+    virtual ~CCaUrlHandler();
+
+    /**
+     * Two-phased constructor. Leaves on failure.
+     * @return The constructed object.
+     */
+    static CCaUrlHandler* NewL();
+
+protected:
+    // construction
+
+    /**
+     * Constructor.
+     * @param aMenu Menu.
+     */
+    CCaUrlHandler();
+
+    /**
+     * Second-phase constructor.
+     */
+    void ConstructL();
+
+public:
+
+
+    /**
+     * Handle command.
+     * @param aEntry The url entry to be processed.
+     * @param aCommand Command.
+     */
+    void HandleCommandL( CCaInnerEntry& aEntry, const TDesC8& aCommand );
+
+private:
+    // internal
+
+    /**
+     * Launches the url.
+     * @param aUrl The url to be launched.
+     */
+    void LaunchUrlL( const TDesC& aUrl );
+
+    };
+
+#endif // __CCAURLHANDLER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/url/inc/caurlhandlerplugin.h	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,37 @@
+/*
+ * 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 CA_URL_HANDLER_PLUGIN_H
+#define CA_URL_HANDLER_PLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class CaUrlHandlerPlugin : public QObject, public QServicePluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+    QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+                            QServiceContext *context,
+                            QAbstractSecuritySession *session);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/url/resource/caurlhandlerplugin.s60xml	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>caurlhandlerplugin</name>
+    <filepath>z:/hsresources/plugins/commandhandler/caurlhandlerplugin.qtplugin</filepath>
+    <description></description>
+    <interface>
+        <name>com.nokia.homescreen.ICommandHandler</name>
+        <version>1.0</version>
+        <description></description>
+        <capabilities></capabilities>
+        <customproperty key="entryTypeName">url</customproperty>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/url/resource/caurlhandlerplugin.xml	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+    <name>caurlhandlerplugin</name>
+    <filepath>caurlhandlerplugin</filepath>
+    <description></description>
+    <interface>
+        <name>com.nokia.homescreen.ICommandHandler</name>
+        <version>1.0</version>
+        <description></description>
+        <capabilities></capabilities>
+        <customproperty key="entryTypeName">url</customproperty>
+    </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/url/src/caurlhandler.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,144 @@
+/*
+ * 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 <w32std.h>
+#include <apgtask.h>
+#include <apgcli.h>
+#include <AknTaskList.h>
+
+#include "caurlhandler.h"
+#include "cadef.h"
+#include "cainnerentry.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// --------------------------------------------------------------------------
+// CCaUrlHandler::~CCaUrlHandler
+// --------------------------------------------------------------------------
+//
+CCaUrlHandler::~CCaUrlHandler()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CCaUrlHandler::NewL
+// --------------------------------------------------------------------------
+//
+CCaUrlHandler* CCaUrlHandler::NewL()
+    {
+    CCaUrlHandler* handler = new ( ELeave ) CCaUrlHandler();
+    CleanupStack::PushL( handler );
+    handler->ConstructL();
+    CleanupStack::Pop( handler );
+    return handler;
+    }
+
+// --------------------------------------------------------------------------
+// CCaUrlHandler::CCaUrlHandler
+// --------------------------------------------------------------------------
+//
+CCaUrlHandler::CCaUrlHandler()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CCaUrlHandler::ConstructL
+// --------------------------------------------------------------------------
+//
+void CCaUrlHandler::ConstructL()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CCaUrlHandler::HandleCommandL
+// --------------------------------------------------------------------------
+//
+void CCaUrlHandler::HandleCommandL( CCaInnerEntry& aEntry,
+        const TDesC8& aCommand )
+    {
+
+    if( !aCommand.Compare( KCaCmdOpen() ) )
+        {
+        const RCaEntryAttrArray& attributes = aEntry.GetAttributes();
+        TInt attributesArrayCount = attributes.Count();
+        for( int i = 0; i < attributesArrayCount; ++i )
+            {
+            const CCaEntryAttribute * const attribute = attributes[i];
+            if( attribute->Name().Compare( KCaAttrUrl ) == 0 )
+                {
+                LaunchUrlL( attribute->Value() );
+                break;
+                }
+            }
+        }
+    else
+        {
+        User::Leave( KErrNotSupported );
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CCaUrlHandler::LaunchUrlL
+// --------------------------------------------------------------------------
+//
+
+void CCaUrlHandler::LaunchUrlL( const TDesC& aUrl )
+    {
+    // Launches browser stand-alone.
+    // Browser is launched with a parameter 4 ("4 http://...."), which 
+    // Start/Continue the browser specifying a URL. 
+    // Other available parameters are described in the Browser API Specification
+    // Document.
+    TInt length = aUrl.Length() + KBrowserPrefix.iTypeLength;
+
+    RWsSession wsSession;
+    User::LeaveIfError( wsSession.Connect() );
+    CleanupClosePushL<RWsSession> ( wsSession );
+
+    CAknTaskList* taskList = CAknTaskList::NewL( wsSession );
+    TApaTask task = taskList->FindRootApp( KUidBrowser );
+    delete taskList;
+
+    if( task.Exists() )
+        {
+        HBufC8* param8 = HBufC8::NewLC( length );
+        TPtr8 ptr8 = param8->Des();
+        ptr8.Append( KBrowserPrefix );
+        ptr8.Append( aUrl );
+
+        // Sends message to existing Browser task.
+        task.SendMessage( TUid::Uid( 0 ), *param8 ); // Uid is not used
+        CleanupStack::PopAndDestroy( param8 );
+        }
+    else
+        {
+        HBufC* buf = HBufC::NewLC( length );
+        TPtr ptr = buf->Des();
+        ptr.Append( KBrowserPrefix );
+        ptr.Append( aUrl );
+
+        RApaLsSession appArcSession;
+        User::LeaveIfError( appArcSession.Connect() );
+        CleanupClosePushL<RApaLsSession> ( appArcSession );
+        TThreadId id;
+        appArcSession.StartDocument( *buf, KUidBrowser, id );
+        CleanupStack::PopAndDestroy( &appArcSession );
+        CleanupStack::PopAndDestroy( buf );
+        }
+
+    CleanupStack::PopAndDestroy( &wsSession );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/url/src/caurlhandlerplugin.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+#include <cadefs.h>
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+#include "cahandlerloader.h"
+
+#include "caurlhandlerplugin.h"
+#include "cas60handleradapter.h"
+#include "caurlhandler.h"
+
+/*!
+    \class CaUrlHandlerPlugin
+    \ingroup
+    \brief Implementation of Qt SF plugin for url command handler.
+*/
+
+/*!
+    \param descriptor Service descriptor.
+    \param context Ignored.
+    \param session Ignored.
+    \return An instance of the CaS60HandlerAdapter<CCaUrlHandler> when descriptor interface name
+    is "com.nokia.homescreen.ICommandHandler", NULL otherwise.
+*/
+QObject *CaUrlHandlerPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+        QServiceContext *context,
+        QAbstractSecuritySession *session)
+{
+    Q_UNUSED(context);
+    Q_UNUSED(session);
+
+    if (descriptor.interfaceName() ==
+            "com.nokia.homescreen.ICommandHandler") {
+        return new CaS60HandlerAdapter<CCaUrlHandler>;
+    } else {
+        return 0;
+    }
+}
+// TODO: uncomment when it will be a plugin
+//Q_EXPORT_PLUGIN2(caurlhandlerplugin, CaUrlHandlerPlugin)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/url/url.pri	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,13 @@
+# 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 ../inc/*.h
+SOURCES += ./src/*.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/cahandler/url/url.pro	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,55 @@
+# 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 = caurlhandlerplugin
+CONFIG += plugin hb mobility
+MOBILITY = serviceframework
+
+PLUGIN_SUBDIR = /hsresources/plugins/commandhandler
+
+include(../../../common.pri)
+
+
+DEPENDPATH += ./inc \
+    ./src
+	
+INCLUDEPATH += ./inc \
+    ../../caclient/inc \
+    ../../caclient/s60/inc \
+    ../../inc \
+    ../../cautils/inc\
+    $$MW_LAYER_SYSTEMINCLUDE
+	
+include(url.pri)
+
+symbian: {
+    TARGET.UID3 = 0x20022F85
+
+    LIBS += \
+    -leuser \
+    -lecom \
+    -lswinstcli \
+    -lcautils \
+    -lcaclient \
+    -lapgrfx \
+    -lws32 \
+    -lapparc \
+    -lsisregistryclient \
+    -leikcore \
+    -lcone \
+    -lefsrv \
+    -lxqutils
+
+    exists($${EPOCROOT}epoc32/include/mw/XQSettingsManager):LIBS += -lxqsettingsmanager
+}
+
+
--- a/contentstorage/casrv/calocalizerscanner/src/calocalizerscannerproxy.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/casrv/calocalizerscanner/src/calocalizerscannerproxy.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -175,6 +175,7 @@
         	locals[i]->SetLocalizedStringL( locals[i]->GetStringId() );  
         	}
         iStorageProxy->LocalizeEntryL( *( locals[i] ) );
+        delete[] temp;
         }
     CleanupStack::PopAndDestroy( &localizedName );
     CleanupStack::PopAndDestroy( &locals );
--- a/contentstorage/casrv/cawidgetscanner/src/cawidgetdescription.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/casrv/cawidgetscanner/src/cawidgetdescription.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -472,7 +472,8 @@
         }
     if ( iIconUri != KNullDesC)
         {
-        entry->SetIconDataL(0, 0, 0, 0, iIconUri);
+        // aSkinId and AppId not used for widgets - KNullDesC
+        entry->SetIconDataL(iIconUri, KNullDesC, KNullDesC);
         }
 
     if( iModificationTime != KNullDesC )
--- a/contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -272,7 +272,7 @@
     {
     CCaInnerEntry* entry = aWidget->GetEntryLC();
     entry->SetFlags( entry->GetFlags() | EMissing );
-    if(aWidget->IsUsed())
+    if( aWidget->IsUsed() )
         {
         entry->SetFlags( entry->GetFlags() | EUsed );
         }
Binary file contentstorage/castorage/data/castoragedb has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/castorage/data/castoragedb_create.sql	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,224 @@
+DROP TABLE IF EXISTS CA_ENTRY;
+DROP TABLE IF EXISTS CA_GROUP_ENTRY;
+DROP TABLE IF EXISTS CA_ICON;
+DROP TABLE IF EXISTS CA_LAUNCH;
+DROP TABLE IF EXISTS CA_ATTRIBUTE;
+DROP TABLE IF EXISTS CA_LOCALIZATION_TEXT;
+DROP TABLE IF EXISTS CA_DB_PROPERTIES;
+
+SELECT "CREATE TABLE CA_ENTRY" AS " ";
+SELECT "------------------------------------" AS " ";
+CREATE TABLE CA_ENTRY( ENTRY_ID INTEGER PRIMARY KEY,
+                                 EN_TEXT TEXT NOT NULL COLLATE NOCASE,
+                                 EN_DESCRIPTION TEXT COLLATE NOCASE,
+                                 EN_ROLE INTEGER default 1,
+                                 EN_TYPE_NAME TEXT NOT NULL,
+                                 EN_ICON_ID INTEGER,
+                                 EN_CREATION_TIME BIGINT default -1 NOT NULL,
+                                 EN_UID INTEGER UNIQUE, 
+                                 EN_FLAGS INTEGER default 8, 
+                                 FOREIGN KEY(EN_ICON_ID) REFERENCES CA_ICON(ICON_ID) );
+CREATE INDEX EntryText_CAIndex ON CA_ENTRY(EN_TEXT);
+CREATE INDEX EntryCreationTime_CAIndex ON CA_ENTRY(EN_CREATION_TIME);
+
+SELECT "CREATE TABLE CA_GROUP_ENTRY" AS " ";
+SELECT "------------------------------------" AS " ";
+CREATE TABLE CA_GROUP_ENTRY( GROUP_ENTRY_ID INTEGER PRIMARY KEY ,
+                                  GE_GROUP_ID INTEGER NOT NULL,
+                                  GE_ENTRY_ID INTEGER NOT NULL,
+                                  GE_POSITION INTEGER,
+                                  UNIQUE( GE_GROUP_ID, GE_ENTRY_ID ),
+                                  FOREIGN KEY(GE_GROUP_ID) REFERENCES CA_ENTRY(ENTRY_ID),
+                                  FOREIGN KEY(GE_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
+CREATE INDEX GroupGE_POSITION_CAIndex ON CA_GROUP_ENTRY(GE_POSITION);
+CREATE TRIGGER update_position_in_ca_group_entry_after_remove AFTER DELETE ON CA_GROUP_ENTRY
+BEGIN
+    UPDATE CA_GROUP_ENTRY SET GE_POSITION = GE_POSITION - 1 WHERE GE_POSITION > old.GE_POSITION AND GE_GROUP_ID = old.GE_GROUP_ID;
+END; 
+CREATE TRIGGER update_position_in_ca_group_entry_before_insert BEFORE INSERT ON CA_GROUP_ENTRY
+BEGIN
+    UPDATE CA_GROUP_ENTRY SET GE_POSITION = GE_POSITION + 1 WHERE GE_POSITION >= new.GE_POSITION AND GE_GROUP_ID = new.GE_GROUP_ID;
+END;
+
+SELECT "CREATE TABLE CA_ICON" AS " ";
+SELECT "------------------------------------" AS " ";
+CREATE TABLE CA_ICON( ICON_ID INTEGER PRIMARY KEY ,
+                                  IC_FILENAME TEXT,
+                                  IC_SKIN_ID TEXT,
+                                  IC_APP_ID TEXT,                                  
+                                  UNIQUE( IC_FILENAME, IC_SKIN_ID, IC_APP_ID ) );
+
+SELECT "CREATE TABLE CA_LAUNCH" AS " ";
+SELECT "------------------------------------" AS " ";
+CREATE TABLE CA_LAUNCH( LAUNCH_ID INTEGER PRIMARY KEY ,
+                                  LA_ENTRY_ID INTEGER NOT NULL,
+                                  LA_LAUNCH_TIME INTEGER NOT NULL,
+                                  FOREIGN KEY(LA_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
+CREATE INDEX LaunchLaunchTime_CAIndex ON CA_LAUNCH(LA_LAUNCH_TIME);
+
+SELECT "CREATE TABLE CA_ATTRIBUTE" AS " ";
+SELECT "------------------------------------" AS " ";
+CREATE TABLE CA_ATTRIBUTE( ATTRIBUTE_ID INTEGER PRIMARY KEY ,
+                                  AT_ENTRY_ID INTEGER NOT NULL,
+                                  AT_NAME TEXT NOT NULL,
+                                  AT_VALUE TEXT NOT NULL,
+                                  UNIQUE( AT_ENTRY_ID, AT_NAME ),
+                                  FOREIGN KEY(AT_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
+
+SELECT "CREATE TABLE CA_LOCALIZATION_TEXT" AS " ";
+SELECT "------------------------------------" AS " ";
+CREATE TABLE CA_LOCALIZATION_TEXT( LOC_TEXT_ID INTEGER PRIMARY KEY ,
+                                  LT_TABLE_NAME TEXT ,
+                                  LT_ATTRIBUTE_NAME TEXT ,
+                                  LT_STRING_ID TEXT ,
+                                  LT_ROW_ID INTEGER );
+                                  
+SELECT "CREATE TABLE CA_DB_PROPERTIES" AS " ";
+SELECT "------------------------------------" AS " ";
+CREATE TABLE CA_DB_PROPERTIES( DB_PROPERTIES_ID INTEGER PRIMARY KEY ,
+                                  DB_PROPERTY TEXT UNIQUE,
+                                  DB_VALUE TEXT );       
+                                   
+
+
+-- CREATE VIEW COLLECTION
+SELECT "------------------------------------" AS " ";
+SELECT "CREATE VIEW COLLECTION" AS " ";
+DROP VIEW IF EXISTS COLLECTION;
+CREATE VIEW COLLECTION 
+  AS SELECT 
+    "" AS "COLLECTION_NAME", 
+    "" AS "COL_LOCNAME", 
+    "" AS "ICON";
+    
+SELECT "  CREATE TRIGGER collection_insert" AS " ";
+CREATE TRIGGER collection_insert INSTEAD OF INSERT ON COLLECTION 
+BEGIN  
+  -- INSERT ICON
+  INSERT INTO CA_ICON (IC_FILENAME) 
+  VALUES ( new.ICON);
+  -- DELETE IF ICON IS NULL OR IF IT IS DUPLICATE
+  DELETE FROM CA_ICON WHERE ICON_ID = last_insert_rowid() AND 
+      (IC_FILENAME IS NULL OR (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON AND ICON_ID <> last_insert_rowid()) IS NOT NULL);   
+  -- INSERT ENTRY
+	INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_FLAGS, EN_ICON_ID ) 
+	VALUES ( new.COLLECTION_NAME , 2, "collection",  12, (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON ));
+	-- LOCALIZATION 
+	INSERT INTO CA_LOCALIZATION_TEXT ( LT_TABLE_NAME, LT_ATTRIBUTE_NAME, LT_STRING_ID, LT_ROW_ID ) 
+	VALUES ( 'CA_ENTRY', 'EN_TEXT', new.COL_LOCNAME, ( SELECT last_insert_rowid() ) );
+	DELETE FROM CA_LOCALIZATION_TEXT WHERE LT_STRING_ID IS NULL AND LOC_TEXT_ID = last_insert_rowid() ;
+	-- RELATION TO MAIN COLLECTION (ADD TO GROUP: )
+  INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
+  VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TYPE_NAME = "menucollections") , 
+          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME), 
+          (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TYPE_NAME = "menucollections")) );
+END;
+
+-- CREATE VIEW ITEM_TO_COLLECTION
+SELECT "------------------------------------" AS " ";
+SELECT "CREATE VIEW ITEM_TO_COLLECTION" AS " ";
+DROP VIEW IF EXISTS ITEM_TO_COLLECTION;
+CREATE VIEW ITEM_TO_COLLECTION 
+  AS SELECT 
+    "" AS "ITEM_TYPE",
+    "" AS "ITEM_NAME",
+    "" AS "ICON",
+    "" AS "ITEM_DEST",    
+    "" AS "COLLECTION_NAME";
+
+SELECT "  CREATE TRIGGER item_to_collection_insert_app" AS " ";
+CREATE TRIGGER item_to_collection_insert_app INSTEAD OF INSERT ON ITEM_TO_COLLECTION WHEN new.ITEM_TYPE="application"
+BEGIN
+  -- INSERT ENTRY
+  INSERT OR IGNORE INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID ) 
+  VALUES ( new.ITEM_NAME, 1, "application", new.ITEM_DEST   );
+	-- RELATION TO MAIN COLLECTION (ADD TO GROUP: )
+  INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
+  VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME) , 
+          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME), 
+          (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME)) );
+END;
+
+SELECT "  CREATE TRIGGER item_to_collection_insert_url" AS " ";
+CREATE TRIGGER item_to_collection_insert_url INSTEAD OF INSERT ON ITEM_TO_COLLECTION WHEN new.ITEM_TYPE="url"
+BEGIN
+  -- INSERT ICON
+  INSERT OR IGNORE INTO CA_ICON (IC_FILENAME) 
+  VALUES ( new.ICON);
+  DELETE FROM CA_ICON WHERE ICON_ID = last_insert_rowid() AND 
+      (IC_FILENAME IS NULL OR (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON AND ICON_ID <> last_insert_rowid()) IS NOT NULL);  
+  -- INSERT ENTRY
+  INSERT OR IGNORE INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID ) 
+  VALUES ( new.ITEM_NAME, 1, "url", (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON ));
+  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
+  VALUES ( ( SELECT last_insert_rowid() ) ,"url",new.ITEM_DEST);
+	-- RELATION TO MAIN COLLECTION (ADD TO GROUP: )
+  INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
+  VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME) , 
+          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME), 
+          (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME)) );
+END;
+
+
+-- CREATE VIEW WIDGET	_TO_COLLECTION
+SELECT "------------------------------------" AS " ";
+SELECT "CREATE VIEW WIDGET_TO_COLLECTION" AS " ";
+DROP VIEW IF EXISTS WIDGET_TO_COLLECTION;
+CREATE VIEW WIDGET_TO_COLLECTION 
+  AS SELECT 
+    "" AS "ITEM_TYPE",
+    "" AS "ITEM_NAME",
+    "" AS "ICON",
+    "" AS "PACKAGE_UID",
+    "" AS "LIBRARY",
+    "" AS "LONG_NAME",
+    "" AS "URI",
+    "" AS "COLLECTION_NAME"	;
+
+SELECT "  CREATE TRIGGER insert_widget_to_collection" AS " ";
+CREATE TRIGGER item_to_collection_insert_widget INSTEAD OF INSERT ON WIDGET_TO_COLLECTION WHEN new.ITEM_TYPE="widget"
+BEGIN
+  -- INSERT ICON
+  INSERT OR IGNORE INTO CA_ICON (IC_FILENAME) 
+  VALUES ( new.ICON);
+  DELETE FROM CA_ICON WHERE ICON_ID = last_insert_rowid() AND 
+      (IC_FILENAME IS NULL OR (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON AND ICON_ID <> last_insert_rowid()) IS NOT NULL);  
+  -- INSERT ENTRY
+  INSERT OR IGNORE INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID ) 
+  VALUES ( new.ITEM_NAME, 1, "widget", (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON ));
+  -- INSERT ATTRIBUTES
+  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
+  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"packageuid",new.PACKAGE_UID);
+  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
+  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"widget:library",new.LIBRARY);
+  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
+  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"long_name",new.LONG_NAME);
+  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
+  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"widget:uri",new.URI);
+	-- RELATION TO MAIN COLLECTION (ADD TO GROUP: )
+  INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
+  VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME) , 
+          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME), 
+          (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME)) );
+END;	
+	
+	
+
+
+SELECT "INSERT INITIAL DATA TO CA_DB_PROPERTIES" AS " ";
+
+SELECT "------------------------------------" AS " ";
+INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
+VALUES ( 'Version', '00001' );
+INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
+VALUES ( 'Language', 'en_GB' );
+INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
+VALUES ( 'QMfile', 'db_textmap_' );
+
+	
+	
+	
+SELECT "------------------------------------" AS " ";
+SELECT "castoragedb_create - END" AS " ";
+SELECT "------------------------------------" AS " ";
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/castorage/data/castoragedb_variant.bat	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,5 @@
+@echo off
+del castoragedb
+sqlite3 castoragedb ".read castoragedb_create.sql"
+sqlite3 castoragedb ".genfkey --exec"
+sqlite3 castoragedb ".read castoragedb_variant.sql"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/castorage/data/castoragedb_variant.sql	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,63 @@
+SELECT "------------------------------------" AS " ";
+SELECT "castoragedb_variant - BEGIN" AS " ";
+
+-- insert neccessary items
+SELECT "INSERT GROUPS" AS " ";
+SELECT "." AS " ";
+INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID ) 
+VALUES ( 'Menu', 2, "folder", NULL , NULL  );
+
+SELECT "INSERT menucollections ENTRY" AS " ";
+INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID ) 
+VALUES ( 'AllCollections', 2, "menucollections", NULL , NULL  );
+
+INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID, EN_FLAGS ) 
+VALUES ( 'Application Library', 2, "applicationlibrary", NULL, NULL, 8 );
+
+SELECT "------------------------------------" AS " ";
+SELECT "INSERT Downloaded collection ENTRY" AS " ";
+INSERT INTO CA_ICON (IC_FILENAME) 
+VALUES ( "qtg_large_applications_download");
+INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID,  EN_FLAGS ) 
+VALUES ( 'Downloaded', 2, "collection::downloaded", last_insert_rowid()  , 8 );
+INSERT INTO CA_LOCALIZATION_TEXT ( LT_TABLE_NAME, LT_ATTRIBUTE_NAME, LT_STRING_ID, LT_ROW_ID ) 
+VALUES ( 'CA_ENTRY', 'EN_TEXT', "txt_applib_dblist_downloaded", ( SELECT last_insert_rowid() ) );
+INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
+VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TYPE_NAME = "menucollections") , 
+          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TYPE_NAME = "collection::downloaded"), 
+          1 ); 
+
+-- insert additional items
+
+INSERT INTO COLLECTION (COLLECTION_NAME, COL_LOCNAME, ICON) VALUES ( 'Office',  "txt_applib_dblist_office", "qtg_large_applications_user");
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'calendar', 268458241,  'Office' );
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'Phonebook', 537014009,  'Office' );
+
+INSERT INTO COLLECTION (COLLECTION_NAME, ICON) VALUES ( 'Multimedia', "qtg_large_applications_user" );  
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'Themes', 268458546,  'Multimedia' );
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'Paint Cursor', 537001564,  'Multimedia' ); 
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'Videoplayer', 537006590,  'Multimedia' );
+
+INSERT INTO COLLECTION (COLLECTION_NAME, ICON) VALUES ( 'Utils', "qtg_large_applications_user" );  
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'ControlPanel', 537026521,  'Utils' );
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'Bluetooth', 268458321,  'Utils' );
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'SW update', 537001519,  'Utils' );
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'eshell', 270498535,  'Utils' );
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("application", 'Conn. mgr.', 270501072,  'Utils' );
+
+  
+INSERT INTO COLLECTION (COLLECTION_NAME, COL_LOCNAME, ICON) VALUES ( 'Games', "txt_applib_dblist_games", "qtg_large_applications_user" );
+
+SELECT "castoragedb_variant - END" AS " ";
+SELECT "------------------------------------" AS " ";
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/castorage/data/castoragedb_variant_test.bat	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,5 @@
+@echo off
+del castoragedb
+sqlite3 castoragedb ".read castoragedb_create.sql"
+sqlite3 castoragedb ".genfkey --exec"
+sqlite3 castoragedb ".read castoragedb_variant_test.sql"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/castorage/data/castoragedb_variant_test.sql	Tue Mar 23 23:55:55 2010 +0200
@@ -0,0 +1,22 @@
+-- ONLY IF YOU SURE THAT WANT DEFAULT CONTENT
+.read castoragedb_variant.sql
+
+SELECT "castoragedb_variant test - BEGIN" AS " ";
+
+
+-- insert collection
+INSERT INTO COLLECTION (COLLECTION_NAME, ICON) VALUES ( 'Favorites', "qtg_large_applications_user" );
+
+-- insert example urls
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ICON,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("url", 'Facebook', 'c:\data\Images\kqticaicons\facebook.png', "http://www.facebook.com/",  'Favorites' );
+  INSERT INTO ITEM_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ICON,ITEM_DEST, COLLECTION_NAME) 
+  VALUES ("url", 'Google', 'c:\data\Images\kqticaicons\google.png', "http://www.google.com/",  'Favorites' );
+
+-- insert example widgets
+  INSERT INTO WIDGET_TO_COLLECTION (ITEM_TYPE,ITEM_NAME,ICON, PACKAGE_UID, LIBRARY, LONG_NAME, URI, COLLECTION_NAME) 
+  VALUES ("widget", 'aClock', 'Z:\private\20022F35\import\widgetregistry\20022F6C\tclock.png',  '20022f43', 'Z:\private\20022F35\import\widgetregistry\20022F43\hsclockwidgetprovider.dll', 'Clock', 'homescreen.nokia.com/widget/clock', 'Office' ); 
+  
+
+
+SELECT "castoragedb_variant test - END" AS " ";
\ No newline at end of file
--- a/contentstorage/castorage/data/create_castoragedb.sql	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-DROP TABLE IF EXISTS CA_ENTRY;
-DROP TABLE IF EXISTS CA_GROUP_ENTRY;
-DROP TABLE IF EXISTS CA_ICON;
-DROP TABLE IF EXISTS CA_LAUNCH;
-DROP TABLE IF EXISTS CA_ATTRIBUTE;
-
-SELECT "CREATE TABLE CA_ENTRY" AS " ";
-SELECT "------------------------------------" AS " ";
-CREATE TABLE CA_ENTRY( ENTRY_ID INTEGER PRIMARY KEY,
-                                 EN_TEXT TEXT NOT NULL COLLATE NOCASE,
-                                 EN_DESCRIPTION TEXT COLLATE NOCASE,
-                                 EN_ROLE INTEGER default 1,
-                                 EN_TYPE_NAME TEXT NOT NULL,
-                                 EN_ICON_ID INTEGER,
-                                 EN_CREATION_TIME BIGINT default -1 NOT NULL,
-                                 EN_UID INTEGER UNIQUE, 
-                                 EN_FLAGS INTEGER default 8, 
-                                 FOREIGN KEY(EN_ICON_ID) REFERENCES CA_ICON(ICON_ID) );
-CREATE INDEX EntryText_CAIndex ON CA_ENTRY(EN_TEXT);
-CREATE INDEX EntryCreationTime_CAIndex ON CA_ENTRY(EN_CREATION_TIME);
-
-SELECT "CREATE TABLE CA_GROUP_ENTRY" AS " ";
-SELECT "------------------------------------" AS " ";
-CREATE TABLE CA_GROUP_ENTRY( GROUP_ENTRY_ID INTEGER PRIMARY KEY ,
-                                  GE_GROUP_ID INTEGER NOT NULL,
-                                  GE_ENTRY_ID INTEGER NOT NULL,
-                                  GE_POSITION INTEGER,
-                                  UNIQUE( GE_GROUP_ID, GE_ENTRY_ID ),
-                                  FOREIGN KEY(GE_GROUP_ID) REFERENCES CA_ENTRY(ENTRY_ID),
-                                  FOREIGN KEY(GE_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
-CREATE INDEX GroupGE_POSITION_CAIndex ON CA_GROUP_ENTRY(GE_POSITION);
-CREATE TRIGGER update_position_in_ca_group_entry_after_remove AFTER DELETE ON CA_GROUP_ENTRY
-BEGIN
-    UPDATE CA_GROUP_ENTRY SET GE_POSITION = GE_POSITION - 1 WHERE GE_POSITION > old.GE_POSITION AND GE_GROUP_ID = old.GE_GROUP_ID;
-END; 
-CREATE TRIGGER update_position_in_ca_group_entry_before_insert BEFORE INSERT ON CA_GROUP_ENTRY
-BEGIN
-    UPDATE CA_GROUP_ENTRY SET GE_POSITION = GE_POSITION + 1 WHERE GE_POSITION >= new.GE_POSITION AND GE_GROUP_ID = new.GE_GROUP_ID;
-END;
-
-SELECT "CREATE TABLE CA_ICON" AS " ";
-SELECT "------------------------------------" AS " ";
-CREATE TABLE CA_ICON( ICON_ID INTEGER PRIMARY KEY ,
-                                  IC_FILENAME TEXT,
-                                  IC_BITMAP_ID INTEGER,
-                                  IC_MASK_ID INTEGER,
-                                  IC_SKINMAJOR_ID INTEGER,
-                                  IC_SKINMINOR_ID INTEGER,
-                                  UNIQUE( IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID) );
-
-SELECT "CREATE TABLE CA_LAUNCH" AS " ";
-SELECT "------------------------------------" AS " ";
-CREATE TABLE CA_LAUNCH( LAUNCH_ID INTEGER PRIMARY KEY ,
-                                  LA_ENTRY_ID INTEGER NOT NULL,
-                                  LA_LAUNCH_TIME INTEGER NOT NULL,
-                                  FOREIGN KEY(LA_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
-CREATE INDEX LaunchLaunchTime_CAIndex ON CA_LAUNCH(LA_LAUNCH_TIME);
-
-SELECT "CREATE TABLE CA_ATTRIBUTE" AS " ";
-SELECT "------------------------------------" AS " ";
-CREATE TABLE CA_ATTRIBUTE( ATTRIBUTE_ID INTEGER PRIMARY KEY ,
-                                  AT_ENTRY_ID INTEGER NOT NULL,
-                                  AT_NAME TEXT NOT NULL,
-                                  AT_VALUE TEXT NOT NULL,
-                                  UNIQUE( AT_ENTRY_ID, AT_NAME ),
-                                  FOREIGN KEY(AT_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
-
-SELECT "CREATE TABLE CA_LOCALIZATION_TEXT" AS " ";
-SELECT "------------------------------------" AS " ";
-CREATE TABLE CA_LOCALIZATION_TEXT( LOC_TEXT_ID INTEGER PRIMARY KEY ,
-                                  LT_TABLE_NAME TEXT ,
-                                  LT_ATTRIBUTE_NAME TEXT ,
-                                  LT_STRING_ID TEXT ,
-                                  LT_ROW_ID INTEGER );
-                                  
-SELECT "CREATE TABLE CA_DB_PROPERTIES" AS " ";
-SELECT "------------------------------------" AS " ";
-CREATE TABLE CA_DB_PROPERTIES( DB_PROPERTIES_ID INTEGER PRIMARY KEY ,
-                                  DB_PROPERTY TEXT UNIQUE,
-                                  DB_VALUE TEXT );
--- a/contentstorage/castorage/data/fill_castoragedb.sql	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,380 +0,0 @@
-SELECT "INSERT GROUPS" AS " ";
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID ) 
-VALUES ( 'Menu', 2, "folder", NULL , NULL  );
-
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID ) 
-VALUES ( 'AllCollections', 2, "menucollections", NULL , NULL  );
-
-
-SELECT "." AS " ";
-INSERT INTO CA_ICON (IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID) 
-VALUES ( 'z:\resource\apps\matrixmenudata.mif', 16392, 16393, 8564, 270501603 );
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID, EN_FLAGS ) 
-VALUES ( 'Application Library', 2, "applicationlibrary", ( SELECT last_insert_rowid() ), NULL, 8 );
-
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID, EN_FLAGS ) 
-VALUES ( 'Downloaded', 2, "collection::downloaded", NULL , NULL, 8 );
-
-SELECT "." AS " ";
-INSERT INTO CA_LOCALIZATION_TEXT ( LT_TABLE_NAME, LT_ATTRIBUTE_NAME, LT_STRING_ID, LT_ROW_ID ) 
-VALUES ( 'CA_ENTRY', 'EN_TEXT', "txt_applib_dblist_downloaded", ( SELECT last_insert_rowid() ) );
-
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID, EN_FLAGS ) 
-VALUES ( 'Office', 2, "collection", NULL , NULL, 12  );
-
-SELECT "." AS " ";
-INSERT INTO CA_LOCALIZATION_TEXT ( LT_TABLE_NAME, LT_ATTRIBUTE_NAME, LT_STRING_ID, LT_ROW_ID ) 
-VALUES ( 'CA_ENTRY', 'EN_TEXT', "txt_applib_dblist_office", ( SELECT last_insert_rowid() ) );
-
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'File mgr.', 1, "application", 270501099 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'QuickOffice', 1, "application", 536871616 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Zip', 1, "application", 536871485 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Adobe PDF', 1, "application", 536923435 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Active notes', 1, "application", 271063601 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Dictionary', 1, "application", 536959440 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Calculator', 1, "application", 268458242 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Converter', 1, "application", 270485096 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID, EN_FLAGS ) 
-VALUES ( 'Multimedia', 2, "collection", NULL , NULL, 12  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Music Player', 1, "application", 270561987 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'Photos', 1, "application", 536937700 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'Radio', 1, "application", 270563977 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'Recorder', 1, "application", 268458186 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'Ovi Music', 1, "application", 270531409 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'RealPlayer', 1, "application", 268458558 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'Videos & TV', 1, "application", 537006586 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'Podcasting', 1, "application", 271063307 , NULL  );
-
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID, EN_FLAGS ) 
-VALUES ( 'Utils', 2, "collection", NULL , NULL, 12  );
-
-
-SELECT "INSERT ITEMS" AS " ";
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'SW update', 1, "application", 537001519 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Device updates', 1, "application", 270495205 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'eshell', 1, "application", 270498535 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Phone setup', 1, "application", 536945316 , NULL  );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID ) 
-VALUES ( 'Settings', 1, "application", 268458220 , NULL  );
-
-SELECT "BIND ITEMS TO GROUP Office (CREATE LINKS)" AS " ";
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Dictionary'), 
-          1 );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Quickoffice'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Converter'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Zip'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Calculator'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Active notes'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Adobe PDF'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'File mgr.'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office')) );
-          
-SELECT "BIND ITEMS TO GROUP Multimedia (CREATE LINKS)" AS " ";
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Music Player'), 
-          1 );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Photos'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Radio'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Recorder'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Ovi Music'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'RealPlayer'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Videos & TV'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Podcasting'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia')) );
-          
-SELECT "BIND ITEMS TO GROUP Utils (CREATE LINKS)" AS " ";
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'SW update'), 
-          1 );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Device updates'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'eshell'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Phone setup'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Settings'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils')) );
-          
-SELECT "BIND COLLECTIONS TO GROUP AllCollections (CREATE LINKS)" AS " ";
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Downloaded'), 
-          1 );
-          
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Office'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Multimedia'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Utils'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections')) );
-
-          
-SELECT "Create data for Favorites" AS " ";
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID, EN_FLAGS ) 
-VALUES ( 'Favorites', 2, "collection", NULL , NULL, 12  );
-
-
-SELECT "." AS " ";
-INSERT INTO CA_ICON (IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID) 
-VALUES ( 'c:\data\Images\kqticaicons\facebook.png', NULL, NULL, NULL, NULL);
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'Facebook', 1, "url", NULL , ( SELECT last_insert_rowid() )  );
-INSERT INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
-VALUES ( ( SELECT last_insert_rowid() ) ,"url","http://www.facebook.com/");
-
-SELECT "." AS " ";
-INSERT INTO CA_ICON (IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID) 
-VALUES ( 'c:\data\Images\kqticaicons\google.png', NULL, NULL, NULL, NULL);
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'Google', 1, "url", NULL , ( SELECT last_insert_rowid() )  );
-INSERT INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
-VALUES ( ( SELECT last_insert_rowid() ) ,"url","http://www.google.com/");
-
-SELECT "." AS " ";
-INSERT INTO CA_ICON (IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID) 
-VALUES ( 'c:\data\Images\kqticaicons\youtube.png', NULL, NULL, NULL, NULL);
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'YouTube', 1, "url", NULL , ( SELECT last_insert_rowid() )  );
-INSERT INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
-VALUES ( ( SELECT last_insert_rowid() ) ,"url","http://www.youtube.com/");
-
-SELECT "." AS " ";
-INSERT INTO CA_ICON (IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID) 
-VALUES ( 'c:\data\Images\kqticaicons\myspace.png', NULL, NULL, NULL, NULL);
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID, EN_ICON_ID )  
-VALUES ( 'MySpace', 1, "url", NULL , ( SELECT last_insert_rowid() )  );
-INSERT INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
-VALUES ( ( SELECT last_insert_rowid() ) ,"url","http://www.myspace.com/");
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Favorites') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Facebook'), 
-          1 );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Favorites') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Google'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Favorites')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Favorites') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'YouTube'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Favorites')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Favorites') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'MySpace'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Favorites')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Favorites'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections')) );
-
-SELECT "." AS " ";
-INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID, EN_FLAGS ) 
-VALUES ( 'Games', 2, "collection", NULL , NULL, 12 );
-
-SELECT "." AS " ";
-INSERT INTO CA_LOCALIZATION_TEXT ( LT_TABLE_NAME, LT_ATTRIBUTE_NAME, LT_STRING_ID, LT_ROW_ID ) 
-VALUES ( 'CA_ENTRY', 'EN_TEXT', "txt_applib_dblist_games", ( SELECT last_insert_rowid() ) );
-
-SELECT "." AS " ";
-INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
-VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections') , 
-          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'Games'), 
-          (SELECT MAX(GE_POSITION) + 1 FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = 'AllCollections')) );
-          
-SELECT "." AS " ";
-INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
-VALUES ( 'Version', '00001' );
-
-SELECT "." AS " ";
-INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
-VALUES ( 'Language', 'en_GB' );
-
-SELECT "." AS " ";
-INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
-VALUES ( 'QMfile', 'db_textmap_' );
-
--- a/contentstorage/castorage/data/make_castoragedb.sql	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-.read create_castoragedb.sql
-.genfkey --exec
-.read fill_castoragedb.sql
-
--- a/contentstorage/castorage/inc/casqlcommands.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/castorage/inc/casqlcommands.h	Tue Mar 23 23:55:55 2010 +0200
@@ -49,9 +49,8 @@
 VALUES ( :GE_GROUP_ID, :GE_ENTRY_ID, :GE_POSITION )" );
 
 _LIT( KSQLInsertToIcon, "INSERT INTO CA_ICON \
-(IC_FILENAME,IC_BITMAP_ID,IC_MASK_ID,IC_SKINMAJOR_ID,IC_SKINMINOR_ID) \
-VALUES ( :IC_FILENAME, :IC_BITMAP_ID, :IC_MASK_ID, \
-:IC_SKINMAJOR_ID, :IC_SKINMINOR_ID )" );
+(IC_FILENAME,IC_SKIN_ID,IC_APP_ID) \
+VALUES ( :IC_FILENAME, :IC_SKIN_ID, :IC_APP_ID )" );
 
 _LIT( KSQLInsertToLaunch, "INSERT INTO CA_LAUNCH \
 (LA_ENTRY_ID, LA_LAUNCH_TIME) \
@@ -96,10 +95,8 @@
 // Update Icon
 _LIT( KSQLUpdateIconId, "ICON_ID = :ICON_ID " );
 _LIT( KSQLUpdateIconFileName, "IC_FILENAME = :IC_FILENAME " );
-_LIT( KSQLUpdateIconBitmapId, "IC_BITMAP_ID = :IC_BITMAP_ID " );
-_LIT( KSQLUpdateIconMaskId, "IC_MASK_ID = :IC_MASK_ID " );
-_LIT( KSQLUpdateIconSkinMajorId, "IC_SKINMAJOR_ID = :IC_SKINMAJOR_ID " );
-_LIT( KSQLUpdateIconSkinMinorId, "IC_SKINMINOR_ID = :IC_SKINMINOR_ID " );
+_LIT( KSQLUpdateIconSkinId, "IC_SKIN_ID = :IC_SKIN_ID " );
+_LIT( KSQLUpdateIconAppId, "IC_APP_ID = :IC_APP_ID " );
 _LIT( KSQLUpdateIconWhere, "WHERE ICON_ID = :ICON_ID" );
 
 // Update property
@@ -136,18 +133,18 @@
 
 _LIT( KSQLGetListByEntryIds, "SELECT ENTRY_ID, EN_TEXT, EN_DESCRIPTION, \
 EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_CREATION_TIME, EN_UID, EN_FLAGS, \
-IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID \
+IC_FILENAME,IC_SKIN_ID,IC_APP_ID \
 FROM CA_ENTRY LEFT JOIN CA_ICON ON EN_ICON_ID = ICON_ID \
 WHERE ENTRY_ID IN ( %S )" );
 
 _LIT( KSQLGetList, "SELECT ENTRY_ID, EN_TEXT, EN_DESCRIPTION, EN_ROLE, \
 EN_TYPE_NAME, EN_ICON_ID, EN_CREATION_TIME, EN_UID, EN_FLAGS, IC_FILENAME, \
-IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID FROM \
+IC_SKIN_ID, IC_APP_ID FROM \
 CA_ENTRY LEFT JOIN CA_ICON ON EN_ICON_ID = ICON_ID " );
 
 _LIT( KSQLGetListByParentId, "SELECT ENTRY_ID, EN_TEXT, EN_DESCRIPTION, \
 EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_CREATION_TIME, EN_UID, EN_FLAGS, \
-IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID, \
+IC_FILENAME, IC_SKIN_ID, IC_APP_ID, \
 GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION FROM CA_ENTRY  \
 LEFT JOIN CA_ICON ON EN_ICON_ID = ICON_ID LEFT JOIN CA_GROUP_ENTRY ON \
 GE_ENTRY_ID = ENTRY_ID WHERE GE_GROUP_ID = :GE_GROUP_ID %S " );
@@ -162,8 +159,7 @@
 // %S - the input table to work on.
 _LIT( KSQLGetListByLaunchDataPart1,"SELECT ENTRY_ID, EN_TEXT, \
 EN_DESCRIPTION, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_CREATION_TIME, \
-EN_UID, EN_FLAGS, IC_FILENAME, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, \
-IC_SKINMINOR_ID FROM (");
+EN_UID, EN_FLAGS, IC_FILENAME, IC_SKIN_ID, IC_APP_ID FROM (");
 
 // %S - the table to match e.g KSQLGetMostUsed or KSQLGetLastUsed
 // The column USAGE_DATA is used to order the items
@@ -178,10 +174,8 @@
 
 _LIT( KSQLGetIconId,"SELECT ICON_ID AS Data FROM CA_ICON \
 WHERE IC_FILENAME = :IC_FILENAME AND \
-IC_BITMAP_ID = :IC_BITMAP_ID AND \
-IC_MASK_ID = :IC_MASK_ID AND \
-IC_SKINMAJOR_ID = :IC_SKINMAJOR_ID AND \
-IC_SKINMINOR_ID = :IC_SKINMINOR_ID");
+IC_SKIN_ID = :IC_SKIN_ID AND \
+IC_APP_ID = :IC_APP_ID");
 
 _LIT( KSQLGetEntryIdFromEntryTable,"SELECT ENTRY_ID AS Data FROM CA_ENTRY \
 WHERE ENTRY_ID = :ENTRY_ID");
@@ -189,13 +183,12 @@
 _LIT( KSQLGETIconIdFromEntryTable, "SELECT EN_ICON_ID AS Data FROM CA_ENTRY \
 WHERE ENTRY_ID = :ENTRY_ID");
 
-_LIT( KSQLGetIconDataByIdIcon,"SELECT ICON_ID, IC_FILENAME, IC_BITMAP_ID, \
-IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID \
+_LIT( KSQLGetIconDataByIdIcon,"SELECT ICON_ID, IC_FILENAME, IC_SKIN_ID, IC_APP_ID \
 FROM CA_ICON WHERE ICON_ID = :EN_ICON_ID");
 
 _LIT( KSQLGetIconsItems,"SELECT ENTRY_ID, EN_TEXT, EN_DESCRIPTION, EN_ROLE, \
 EN_TYPE_NAME, EN_ICON_ID, EN_CREATION_TIME, EN_UID, EN_FLAGS, IC_FILENAME, \
-IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID FROM \
+IC_SKIN_ID, IC_APP_ID FROM \
 CA_ENTRY LEFT JOIN CA_ICON ON EN_ICON_ID = ICON_ID \
 WHERE EN_ICON_ID = :EN_ICON_ID");
 
@@ -283,10 +276,8 @@
 
 _LIT( KSQLIconId, ":ICON_ID" );
 _LIT( KSQLIcFileName, ":IC_FILENAME" );
-_LIT( KSQLIcBitmapId, ":IC_BITMAP_ID" );
-_LIT( KSQLIcMaskId, ":IC_MASK_ID" );
-_LIT( KSQLIcSkinMajorId, ":IC_SKINMAJOR_ID" );
-_LIT( KSQLIcSkinMinorId, ":IC_SKINMINOR_ID" );
+_LIT( KSQLIcSkinId, ":IC_SKIN_ID" );
+_LIT( KSQLIcAppId, ":IC_APP_ID" );
 
 _LIT( KSQLLaunchId, ":LAUNCH_ID" );
 _LIT( KSQLLaLaunchTime, ":LA_LAUNCH_TIME" );
@@ -330,10 +321,8 @@
 
 _LIT( KColumnIconId, "ICON_ID" );
 _LIT( KColumnIcFileName, "IC_FILENAME" );
-_LIT( KColumnIcBitmapId, "IC_BITMAP_ID" );
-_LIT( KColumnIcMaskId, "IC_MASK_ID" );
-_LIT( KColumnIcSkinMajorId, "IC_SKINMAJOR_ID" );
-_LIT( KColumnIcSkinMinorId, "IC_SKINMINOR_ID" );
+_LIT( KColumnIcSkinId, "IC_SKIN_ID" );
+_LIT( KColumnIcAppId, "IC_APP_ID" );
 
 _LIT( KColumnLaunchId, "LAUNCH_ID" );
 _LIT( KColumnLaLaunchTime, "LA_LAUNCH_TIME" );
--- a/contentstorage/castorage/inc/casqlitestorage.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/castorage/inc/casqlitestorage.h	Tue Mar 23 23:55:55 2010 +0200
@@ -18,7 +18,7 @@
 #ifndef C_CASTORAGE_ENGINE_H
 #define C_CASTORAGE_ENGINE_H
 
-#include <BAUTILS.H>
+#include <bautils.h>
 #include <e32cons.h>
 #include <sqldb.h>
 #include "castorage.h"
--- a/contentstorage/castorage/src/casqlitestorage.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/castorage/src/casqlitestorage.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -23,6 +23,7 @@
 #include "cainnerquery.h"
 #include "caarraycleanup.inl"
 #include "calocalizationentry.h"
+#include "cainternaltypes.h"
 
 // ---------------------------------------------------------------------------
 // CCASqLiteStorage::CCpStorageEngine()
@@ -184,6 +185,30 @@
                 CCaSqlQuery::EAttribute );
         CleanupStack::PopAndDestroy( sqlGetAttributesQuery );
         }
+    
+    if( aQuery->GetAttributes().Count() )
+        {
+        for( int i=aResultContainer.Count()-1; i>=0; i--)
+            {
+            for( int j=0; j<aQuery->GetAttributes().Count(); j++ )
+                {
+                const TPtrC attrNameFromQuery( aQuery->GetAttributes()[j]->Name() );
+                const TPtrC attrValueFromQuery( aQuery->GetAttributes()[j]->Value() );
+                
+                TBuf16<KCaMaxAttrValueLen> value;
+                aResultContainer[i]->FindAttribute( attrNameFromQuery, value );
+                                
+                if( value.CompareC( attrValueFromQuery ) )
+                    {
+                    // remove from results
+                    delete aResultContainer[i];
+                    aResultContainer.Remove( i );
+                    break;
+                    }
+                }
+            }
+        }
+    
     //  set entries if proper order if they were fetched by ids
     if( aQuery->GetIds().Count() > 0 )
         {
@@ -221,6 +246,7 @@
 void CCaSqLiteStorage::GetEntriesIdsL( const CCaInnerQuery* aQuery,
         RArray<TInt>& aResultIdArray )
     {
+    /*
     CCaSqlQuery* sqlGetEntriesIdsQuery = CCaSqlQuery::NewLC( iSqlDb );
     CaSqlQueryCreator::CreateGetEntriesQueryL( aQuery,
             sqlGetEntriesIdsQuery );
@@ -229,6 +255,17 @@
     sqlGetEntriesIdsQuery->ExecuteL( aResultIdArray,
             CCaSqlQuery::EEntryTable );
     CleanupStack::PopAndDestroy( sqlGetEntriesIdsQuery );
+    */
+    RPointerArray<CCaInnerEntry> resultContainer;
+    CleanupResetAndDestroyPushL( resultContainer );
+    GetEntriesL( aQuery, resultContainer );
+    for( TInt i=0; i<resultContainer.Count(); i++ )
+        {
+        int id = resultContainer[i]->GetId();
+        aResultIdArray.AppendL( id );
+        }
+    
+    CleanupStack::PopAndDestroy( &resultContainer );
     }
 
 // ---------------------------------------------------------------------------
--- a/contentstorage/castorage/src/casqlquery.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/castorage/src/casqlquery.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -516,25 +516,15 @@
         BindTextL( iStatement.ParameterIndex( KSQLIcFileName ),
                 aEntry->GetIcon().iFileName );
         }
-    if( iQuery.Find( KSQLIcBitmapId ) != KErrNotFound )
+    if( iQuery.Find( KSQLIcSkinId ) != KErrNotFound )
         {
-        BindIntL( iStatement.ParameterIndex( KSQLIcBitmapId ),
-                aEntry->GetIcon().iBitmapId );
-        }
-    if( iQuery.Find(KSQLIcMaskId) != KErrNotFound )
-        {
-        BindIntL( iStatement.ParameterIndex( KSQLIcMaskId ),
-                aEntry->GetIcon().iMaskId );
+        BindTextL( iStatement.ParameterIndex( KSQLIcSkinId ),
+                aEntry->GetIcon().iSkinId );
         }
-    if( iQuery.Find( KSQLIcSkinMajorId ) != KErrNotFound )
+    if( iQuery.Find( KSQLIcAppId ) != KErrNotFound )
         {
-        BindIntL( iStatement.ParameterIndex( KSQLIcSkinMajorId ),
-                aEntry->GetIcon().iSkinMajorId );
-        }
-    if( iQuery.Find( KSQLIcSkinMinorId ) != KErrNotFound )
-        {
-        BindIntL( iStatement.ParameterIndex( KSQLIcSkinMinorId ),
-                aEntry->GetIcon().iSkinMinorId );
+        BindTextL( iStatement.ParameterIndex( KSQLIcAppId ),
+                aEntry->GetIcon().iApplicationId );
         }
     }
 
@@ -687,15 +677,7 @@
                 KColumnEnFlags ) );
         TInt idIcon = iStatement.ColumnInt( ColumnIndexL( iStatement,
                 KColumnEnIdIcon ) );
-        TInt bitmapId = iStatement.ColumnInt( ColumnIndexL( iStatement,
-                KColumnIcBitmapId ) );
-        TInt maskId = iStatement.ColumnInt( ColumnIndexL( iStatement,
-                KColumnIcMaskId ) );
-        TInt skinMajorId = iStatement.ColumnInt( ColumnIndexL( iStatement,
-                KColumnIcSkinMajorId ) );
-        TInt skinMinorId = iStatement.ColumnInt( ColumnIndexL( iStatement,
-                KColumnIcSkinMinorId ) );
-
+        
         TPtrC text;
         User::LeaveIfError( iStatement. ColumnText( ColumnIndexL(
                 iStatement, KColumnEnText ), text ) );
@@ -706,15 +688,24 @@
         TPtrC typeName;
         User::LeaveIfError( iStatement.ColumnText( 
                 ColumnIndexL(iStatement, KColumnEnTypeName ), typeName) );
+                
         TPtrC iconFilename;
         User::LeaveIfError( iStatement.ColumnText( ColumnIndexL(
                 iStatement, KColumnIcFileName ), iconFilename ) );
 
+        TPtrC iconSkinId;
+        User::LeaveIfError( iStatement.ColumnText( ColumnIndexL(
+                iStatement, KColumnIcSkinId ), iconSkinId ) );
+
+        TPtrC iconApplicationId;
+        User::LeaveIfError( iStatement.ColumnText( ColumnIndexL(
+                iStatement, KColumnIcAppId ), iconApplicationId ) );
+
         CCaInnerEntry* result = CCaInnerEntry::NewLC();
         result->SetId( entryId );
         result->SetRole( role );
-        result->SetIconDataL( bitmapId, maskId, skinMajorId, skinMinorId,
-                iconFilename );
+        result->SetIconDataL(
+                iconFilename, iconSkinId, iconApplicationId );
         result->SetIconId( idIcon );
         result->SetFlags( flags );
         result->SetUid( uid );
@@ -875,14 +866,12 @@
         User::LeaveIfError(iStatement.ColumnText(
                 ColumnIndexL( iStatement, KColumnIcFileName),
                 aIconAttributes.iFileName));
-        aIconAttributes.iBitmapId = iStatement.ColumnInt(
-                ColumnIndexL( iStatement, KColumnIcBitmapId ) );
-        aIconAttributes.iMaskId = iStatement.ColumnInt(
-                ColumnIndexL( iStatement, KColumnIcMaskId ) );
-        aIconAttributes.iSkinMajorId = iStatement.ColumnInt(
-                ColumnIndexL( iStatement, KColumnIcSkinMajorId ) );
-        aIconAttributes.iSkinMinorId = iStatement.ColumnInt(
-                ColumnIndexL( iStatement, KColumnIcSkinMinorId ) );
+        User::LeaveIfError(iStatement.ColumnText(
+                ColumnIndexL( iStatement, KColumnIcSkinId),
+                aIconAttributes.iSkinId));       
+        User::LeaveIfError(iStatement.ColumnText(
+                ColumnIndexL( iStatement, KColumnIcAppId),
+                aIconAttributes.iApplicationId));
         columnCount++;
         }
     return columnCount;
--- a/contentstorage/castorage/src/casqlquerycreator.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/castorage/src/casqlquerycreator.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -231,10 +231,9 @@
         {
         // entry's icon data is not in DB
         if( ( aEntry->GetIcon().iFileName.Length() != 0 ) ||
-             ( aEntry->GetIcon().iBitmapId != 0 ) ||
-             ( aEntry->GetIcon().iMaskId != 0 ) ||
-             ( aEntry->GetIcon().iSkinMajorId != 0 ) ||
-             ( aEntry->GetIcon().iSkinMinorId != 0 ) )
+            ( aEntry->GetIcon().iSkinId.Length() != 0 ) ||
+            ( aEntry->GetIcon().iApplicationId.Length() != 0 )
+             )
             {
             // icon is not null, so that insert it to storage
             aQuery->SetQueryL( KSQLInsertToIcon );
@@ -269,13 +268,10 @@
     CCaInnerEntry::TIconAttributes iconAttributs;
     query->ExecuteL( iconAttributs );
     query->CloseStatement();
-    if( !( !iconAttributs.iFileName.Compare( aEntry->GetIcon().iFileName )
-            && ( iconAttributs.iBitmapId == aEntry->GetIcon().iBitmapId )
-            && ( iconAttributs.iMaskId == aEntry->GetIcon().iMaskId )
-            && ( iconAttributs.iSkinMajorId
-                    == aEntry->GetIcon().iSkinMajorId )
-            && ( iconAttributs.iSkinMinorId
-                    == aEntry->GetIcon().iSkinMinorId ) ) )
+    if( !(     !iconAttributs.iFileName.Compare( aEntry->GetIcon().iFileName )
+            && (!iconAttributs.iSkinId.Compare( aEntry->GetIcon().iSkinId ))
+            && (!iconAttributs.iApplicationId.Compare( aEntry->GetIcon().iApplicationId ))
+                    ) )
         {
         // entry's icon data is updated
         // if icon is used by another entry(s), new icon'll added to DB and
@@ -346,32 +342,18 @@
         query.Append( KSQLUpdateIconFileName );
         query.Append( KComma );
         }
-    if( aEntry->GetIcon().iBitmapId )
+    if( aEntry->GetIcon().iSkinId.Compare( KNullDesC ) )
         {
-        query.ReAllocL( query.Length() + KSQLUpdateIconBitmapId().Length()
+        query.ReAllocL( query.Length() + KSQLUpdateIconSkinId().Length()
                 + KComma().Length() );
-        query.Append( KSQLUpdateIconBitmapId );
+        query.Append( KSQLUpdateIconSkinId );
         query.Append( KComma );
         }
-    if( aEntry->GetIcon().iMaskId )
-        {
-        query.ReAllocL( query.Length() + KSQLUpdateIconMaskId().Length()
-                + KComma().Length() );
-        query.Append( KSQLUpdateIconMaskId );
-        query.Append( KComma );
-        }
-    if( aEntry->GetIcon().iSkinMajorId )
+     if( aEntry->GetIcon().iApplicationId.Compare(KNullDesC) )
         {
-        query.ReAllocL( query.Length() + KSQLUpdateIconSkinMajorId().Length()
+        query.ReAllocL( query.Length() + KSQLUpdateIconAppId().Length()
                 + KComma().Length() );
-        query.Append( KSQLUpdateIconSkinMajorId );
-        query.Append( KComma );
-        }
-    if( aEntry->GetIcon().iSkinMinorId )
-        {
-        query.ReAllocL( query.Length() + KSQLUpdateIconSkinMinorId().Length()
-                + KComma().Length() );
-        query.Append( KSQLUpdateIconSkinMinorId );
+        query.Append( KSQLUpdateIconAppId );
         }
     if( !query.Right( KComma().Length() ).Compare( KComma ) )
         {
@@ -962,10 +944,9 @@
 CaSqlQueryCreator::TIconType CaSqlQueryCreator::CheckIconType( const CCaInnerEntry* aEntry )
     {
     CaSqlQueryCreator::TIconType iconType;
-    if( aEntry->GetIcon().iBitmapId == 0 &&
-        aEntry->GetIcon().iMaskId == 0 &&
-        aEntry->GetIcon().iSkinMajorId == 0 &&
-        aEntry->GetIcon().iSkinMinorId == 0 &&
+    if( 
+        aEntry->GetIcon().iApplicationId.Length() == 0 &&
+        aEntry->GetIcon().iSkinId.Length() == 0 &&
         aEntry->GetIcon().iFileName.Length() == 0 )
         {
         if( aEntry->GetIconId() > 0 )
--- a/contentstorage/cautils/inc/cainnerentry.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/cautils/inc/cainnerentry.h	Tue Mar 23 23:55:55 2010 +0200
@@ -35,11 +35,9 @@
         {
         //TODO: maybe it should be C class with RBuf instead of TFileName
         TInt iId;
-        TInt iBitmapId;
-        TInt iMaskId;
-        TInt iSkinMajorId;
-        TInt iSkinMinorId;
         TFileName iFileName;
+        TBuf<KMaxFileName> iSkinId;        
+        TBuf<KMaxUidName> iApplicationId;
         };
 
 public:
@@ -149,14 +147,12 @@
 
     /**
      * Sets icon data.
-     * @param aBitmapId Bitmap id.
-     * @param aMaskId Mask id.
-     * @param aSkinMajorId Skin major id.
-     * @param aSkinMinorId Skin minor id.
      * @param aFilename Filename.
+     * @param aSkinId Skin id.
+     * @param aApplicationId application id.
      */
-    IMPORT_C void SetIconDataL( TInt aBitmapId, TInt aMaskId,
-            TInt aSkinMajorId, TInt aSkinMinorId, const TDesC& aFilename );
+    IMPORT_C void SetIconDataL(             
+            const TDesC& aFilename, const TDesC& aSkinId, const TDesC& aApplicationId );
 
     /**
      * Adds attribute to entry.
--- a/contentstorage/cautils/inc/cainnerquery.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/cautils/inc/cainnerquery.h	Tue Mar 23 23:55:55 2010 +0200
@@ -19,6 +19,7 @@
 #define __CCAINNERQUERY_H__
 
 #include <e32base.h>
+#include "caentryattribute.h"
 
 //FORWARD DECLARATIONS
 class CDesC16ArrayFlat;
@@ -189,6 +190,20 @@
      * @return The maximum amount of entries to be fetched.
      */
     IMPORT_C TUint GetCount() const;
+    
+    /**
+      * Adds attribute to query.
+      * @param aKey Attribute key.
+      * @param aValue Attribute value.
+      */
+     IMPORT_C void AddAttributeL( const TDesC& aKey, const TDesC& aValue );
+     
+     /**
+       * Get attributes array
+       * @return attributes array
+       */
+     IMPORT_C const RCaEntryAttrArray& GetAttributes() const;
+
 
 private:
 
@@ -249,6 +264,11 @@
      * Number of entries to fetch
      */
     TUint iCount;
+    
+    /*
+     * Attributes array. Own
+     */
+    RCaEntryAttrArray iAttributes;
 
     };
 
--- a/contentstorage/cautils/src/cainnerentry.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/cautils/src/cainnerentry.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -64,12 +64,12 @@
     aStream.WriteInt32L( iId );
     aStream.WriteInt32L( iUid );
     aStream.WriteInt32L( iIcon.iId );
-    aStream.WriteInt32L( iIcon.iBitmapId );
-    aStream.WriteInt32L( iIcon.iMaskId );
-    aStream.WriteInt32L( iIcon.iSkinMajorId );
-    aStream.WriteInt32L( iIcon.iSkinMinorId );
     aStream.WriteUint32L( iIcon.iFileName.Length() );
     aStream.WriteL( iIcon.iFileName, iIcon.iFileName.Length() );
+    aStream.WriteUint32L( iIcon.iSkinId.Length() );
+    aStream.WriteL( iIcon.iSkinId, iIcon.iSkinId.Length() );
+    aStream.WriteUint32L( iIcon.iApplicationId.Length() );
+    aStream.WriteL( iIcon.iApplicationId, iIcon.iApplicationId.Length() );
     aStream.WriteUint32L( iFlags );
     aStream.WriteUint32L( iRole );
     aStream.WriteUint32L( iText.Length() );
@@ -91,12 +91,12 @@
     iId = aStream.ReadInt32L();
     iUid = aStream.ReadInt32L();
     iIcon.iId = aStream.ReadInt32L();
-    iIcon.iBitmapId = aStream.ReadInt32L();
-    iIcon.iMaskId = aStream.ReadInt32L();
-    iIcon.iSkinMajorId = aStream.ReadInt32L();
-    iIcon.iSkinMinorId = aStream.ReadInt32L();
     TUint length = aStream.ReadUint32L();
     aStream.ReadL( iIcon.iFileName, length );
+    length = aStream.ReadUint32L();
+    aStream.ReadL( iIcon.iSkinId, length );
+    length = aStream.ReadUint32L();
+    aStream.ReadL( iIcon.iApplicationId, length );
     iFlags = aStream.ReadUint32L();
     iRole = aStream.ReadUint32L();
     length = aStream.ReadUint32L();
@@ -266,15 +266,12 @@
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void CCaInnerEntry::SetIconDataL( TInt aBitmapId, TInt aMaskId,
-        TInt aSkinMajorId, TInt aSkinMinorId, const TDesC& aFilename )
+EXPORT_C void CCaInnerEntry::SetIconDataL(
+        const TDesC& aFilename, const TDesC& aSkinId, const TDesC& aApplicationId )
     {
-    iIcon.iBitmapId = aBitmapId;
-    iIcon.iMaskId = aMaskId;
-    iIcon.iSkinMajorId = aSkinMajorId;
-    iIcon.iSkinMinorId = aSkinMinorId;
-
     iIcon.iFileName.Copy( aFilename );
+    iIcon.iSkinId.Copy( aSkinId );
+    iIcon.iApplicationId.Copy(aApplicationId);
     }
 
 // ---------------------------------------------------------------------------
--- a/contentstorage/cautils/src/cainnerquery.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/cautils/src/cainnerquery.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -30,6 +30,7 @@
     {
     delete iEntryTypeNames;
     iIds.Close();
+    iAttributes.ResetAndDestroy();
     }
 
 // ---------------------------------------------------------------------------
@@ -81,6 +82,8 @@
         aStream.WriteL( iEntryTypeNames->MdcaPoint( i ),
                 iEntryTypeNames->MdcaPoint( i ).Length() );
         }
+    iAttributes.ExternalizeL( aStream );
+    aStream.CommitL();
     }
 
 // ---------------------------------------------------------------------------
@@ -114,6 +117,7 @@
         iEntryTypeNames->AppendL( buf );
         CleanupStack::PopAndDestroy( &buf );
         }
+    iAttributes.InternalizeL( aStream );
     }
 
 // ---------------------------------------------------------------------------
@@ -302,3 +306,30 @@
     {
     return iCount;
     }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCaInnerQuery::AddAttributeL( const TDesC& aKey,
+        const TDesC& aValue )
+    {
+    // to avoid duplicated attribute
+    if( iAttributes.Exist( aKey ) )
+        {
+        iAttributes.RemoveAttribute( aKey );
+        }
+    CCaEntryAttribute* attr = CCaEntryAttribute::NewLC( aKey );
+    attr->SetValueL( aValue );
+    iAttributes.AppendL( attr );
+    CleanupStack::Pop( attr );
+    }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const RCaEntryAttrArray& CCaInnerQuery::GetAttributes() const
+    {
+    return iAttributes;
+    }
--- a/contentstorage/data/20022F82.rss	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +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: Resource definitions for project castockhandlerplugins
- *
- */
-
-#include <ecom/registryinfo.rh>
-
-#include "castrings.hrh"
-#include "cahandlerplugin.hrh"
-
-RESOURCE REGISTRY_INFO theInfo
-    {
-    dll_uid = 0x20022F82;
-    interfaces =
-        {
-        INTERFACE_INFO
-            {
-            interface_uid = HANDLER_IF_UID;
-            implementations =
-                {
-                IMPLEMENTATION_INFO
-                    {
-                    implementation_uid = 0x20022F83;
-                    version_no = 1;
-                    display_name = "";
-                    default_data = str_datatype_app;
-                    opaque_data = "";
-                    },
-                IMPLEMENTATION_INFO
-                    {
-                    implementation_uid = 0x20022F85;
-                    version_no = 1;
-                    display_name = "";
-                    default_data = str_datatype_url;
-                    opaque_data = "";
-                    }
-                };
-            }
-        };
-    }
-
--- a/contentstorage/eabi/caextendedmenuu.def	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/eabi/caextendedmenuu.def	Tue Mar 23 23:55:55 2010 +0200
@@ -1,19 +1,3 @@
 EXPORTS
-	_ZN10CCaHandler12SupportsTypeERK7TDesC16 @ 1 NONAME
-	_ZN10CCaHandler14BaseConstructLEv @ 2 NONAME
-	_ZN10CCaHandler14HandleCommandLER13CCaInnerEntryRK6TDesC8 @ 3 NONAME
-	_ZN10CCaHandlerC1Ev @ 4 NONAME
-	_ZN10CCaHandlerC2Ev @ 5 NONAME
-	_ZN10CCaHandlerD0Ev @ 6 NONAME
-	_ZN10CCaHandlerD1Ev @ 7 NONAME
-	_ZN10CCaHandlerD2Ev @ 8 NONAME
-	_ZN16CCaHandlerEngine14HandleCommandLER13CCaInnerEntryRK6TDesC8 @ 9 NONAME
-	_ZN16CCaHandlerEngine4NewLEv @ 10 NONAME
-	_ZN16CCaHandlerEngine5NewLCEv @ 11 NONAME
-	_ZN16CCaHandlerEngineD0Ev @ 12 NONAME
-	_ZN16CCaHandlerEngineD1Ev @ 13 NONAME
-	_ZN16CCaHandlerEngineD2Ev @ 14 NONAME
-	_ZN17CaMenuIconUtility11GetItemIconERK13CCaInnerEntry @ 15 NONAME
-	_ZTI10CCaHandler @ 16 NONAME
-	_ZTV10CCaHandler @ 17 NONAME
+	_ZN17CaMenuIconUtility11GetItemIconERK13CCaInnerEntry @ 1 NONAME
 
--- a/contentstorage/eabi/camenuu.def	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/eabi/camenuu.def	Tue Mar 23 23:55:55 2010 +0200
@@ -1,23 +1,24 @@
 EXPORTS
 	_Z11RunCaServerv @ 1 NONAME
-	_ZN15CCaStorageProxy11DbPropertyLERK7TDesC16R6TDes16 @ 2 NONAME
-	_ZN15CCaStorageProxy11GetEntriesLEPK13CCaInnerQueryR13RPointerArrayI13CCaInnerEntryE @ 3 NONAME
-	_ZN15CCaStorageProxy14GetEntriesIdsLEPK13CCaInnerQueryR6RArrayIiE @ 4 NONAME
-	_ZN15CCaStorageProxy14LocalizeEntryLER20CCaLocalizationEntry @ 5 NONAME
-	_ZN15CCaStorageProxy14SetDBPropertyLERK7TDesC16S2_ @ 6 NONAME
-	_ZN15CCaStorageProxy17GetLocalizationsLER13RPointerArrayI20CCaLocalizationEntryE @ 7 NONAME
-	_ZN15CCaStorageProxy4AddLEP13CCaInnerEntryi @ 8 NONAME
-	_ZN15CCaStorageProxy6TouchLEP13CCaInnerEntry @ 9 NONAME
-	_ZN15CCaStorageProxy7RemoveLERK6RArrayIiE @ 10 NONAME
-	_ZN15CCaStorageProxy9OrganizeLERK6RArrayIiE18TCaOperationParams @ 11 NONAME
-	_ZN16CCaSrvMmcHistory4FindEj @ 12 NONAME
-	_ZN16CCaSrvMmcHistory5LoadLER3RFsRK7TDesC16 @ 13 NONAME
-	_ZN16CCaSrvMmcHistory5SaveLER3RFsRK7TDesC16 @ 14 NONAME
-	_ZN16CCaSrvMmcHistory7InsertLEj @ 15 NONAME
-	_ZN18CCaInstallNotifier4NewLER18MCaInstallListenerNS_17TNotificationTypeE @ 16 NONAME
-	_ZNK14CCaSrvEngUtils10GetAppInfoERK13CCaInnerEntryR11TApaAppInfo @ 17 NONAME
-	_ZNK14CCaSrvEngUtils13GetApaAppInfoE4TUidR11TApaAppInfo @ 18 NONAME
-	_ZTI15CCaStorageProxy @ 19 NONAME
-	_ZTV15CCaStorageProxy @ 20 NONAME
-	_ZN15CCaStorageProxy11CustomSortLERK6RArrayIiEi @ 21 NONAME
+	_ZN15CCaStorageProxy11CustomSortLERK6RArrayIiEi @ 2 NONAME
+	_ZN15CCaStorageProxy11DbPropertyLERK7TDesC16R6TDes16 @ 3 NONAME
+	_ZN15CCaStorageProxy11GetEntriesLEPK13CCaInnerQueryR13RPointerArrayI13CCaInnerEntryE @ 4 NONAME
+	_ZN15CCaStorageProxy14GetEntriesIdsLEPK13CCaInnerQueryR6RArrayIiE @ 5 NONAME
+	_ZN15CCaStorageProxy14LocalizeEntryLER20CCaLocalizationEntry @ 6 NONAME
+	_ZN15CCaStorageProxy14SetDBPropertyLERK7TDesC16S2_ @ 7 NONAME
+	_ZN15CCaStorageProxy17GetLocalizationsLER13RPointerArrayI20CCaLocalizationEntryE @ 8 NONAME
+	_ZN15CCaStorageProxy20LoadDataBaseFromRomLEv @ 9 NONAME
+	_ZN15CCaStorageProxy4AddLEP13CCaInnerEntryi @ 10 NONAME
+	_ZN15CCaStorageProxy6TouchLEP13CCaInnerEntry @ 11 NONAME
+	_ZN15CCaStorageProxy7RemoveLERK6RArrayIiE @ 12 NONAME
+	_ZN15CCaStorageProxy9OrganizeLERK6RArrayIiE18TCaOperationParams @ 13 NONAME
+	_ZN16CCaSrvMmcHistory4FindEj @ 14 NONAME
+	_ZN16CCaSrvMmcHistory5LoadLER3RFsRK7TDesC16 @ 15 NONAME
+	_ZN16CCaSrvMmcHistory5SaveLER3RFsRK7TDesC16 @ 16 NONAME
+	_ZN16CCaSrvMmcHistory7InsertLEj @ 17 NONAME
+	_ZN18CCaInstallNotifier4NewLER18MCaInstallListenerNS_17TNotificationTypeE @ 18 NONAME
+	_ZNK14CCaSrvEngUtils10GetAppInfoERK13CCaInnerEntryR11TApaAppInfo @ 19 NONAME
+	_ZNK14CCaSrvEngUtils13GetApaAppInfoE4TUidR11TApaAppInfo @ 20 NONAME
+	_ZTI15CCaStorageProxy @ 21 NONAME
+	_ZTV15CCaStorageProxy @ 22 NONAME
 
--- a/contentstorage/eabi/cautilsu.def	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/eabi/cautilsu.def	Tue Mar 23 23:55:55 2010 +0200
@@ -1,7 +1,7 @@
 EXPORTS
 	_ZN11RCaIdsArray12InternalizeLER11RReadStream @ 1 NONAME
 	_ZN13CCaInnerEntry12InternalizeLER11RReadStream @ 2 NONAME
-	_ZN13CCaInnerEntry12SetIconDataLEiiiiRK7TDesC16 @ 3 NONAME
+	_ZN13CCaInnerEntry12SetIconDataLERK7TDesC16S2_S2_ @ 3 NONAME
 	_ZN13CCaInnerEntry13AddAttributeLERK7TDesC16S2_ @ 4 NONAME
 	_ZN13CCaInnerEntry13FindAttributeERK7TDesC16R6TDes16 @ 5 NONAME
 	_ZN13CCaInnerEntry15SetDescriptionLERK7TDesC16 @ 6 NONAME
@@ -19,71 +19,73 @@
 	_ZN13CCaInnerQuery11SetFlagsOffEj @ 18 NONAME
 	_ZN13CCaInnerQuery11SetParentIdEi @ 19 NONAME
 	_ZN13CCaInnerQuery12InternalizeLER11RReadStream @ 20 NONAME
-	_ZN13CCaInnerQuery17SetEntryTypeNamesEP16CDesC16ArrayFlat @ 21 NONAME
-	_ZN13CCaInnerQuery4NewLEv @ 22 NONAME
-	_ZN13CCaInnerQuery5NewLCEv @ 23 NONAME
-	_ZN13CCaInnerQuery6SetUidEj @ 24 NONAME
-	_ZN13CCaInnerQuery7SetIdsLERK6RArrayIiE @ 25 NONAME
-	_ZN13CCaInnerQuery7SetRoleEi @ 26 NONAME
-	_ZN13CCaInnerQuery7SetSortENS_14TSortAttributeE @ 27 NONAME
-	_ZN13CCaInnerQuery8SetCountEj @ 28 NONAME
-	_ZN15RCaEntriesArray12InternalizeLER11RReadStream @ 29 NONAME
-	_ZN17CCaEntryAttribute4NewLERK7TDesC16 @ 30 NONAME
-	_ZN17CCaEntryAttribute5NewLCERK7TDesC16 @ 31 NONAME
-	_ZN17CCaEntryAttribute9SetValueLERK7TDesC16 @ 32 NONAME
-	_ZN17RCaEntryAttrArray15RemoveAttributeERK7TDesC16 @ 33 NONAME
-	_ZN17RCaEntryAttrArray4FindERK7TDesC16R6TDes16 @ 34 NONAME
-	_ZN17RCaEntryAttrArray5ExistERK7TDesC16 @ 35 NONAME
-	_ZN20CCaLocalizationEntry12SetStringIdLERK7TDesC16 @ 36 NONAME
-	_ZN20CCaLocalizationEntry13SetTableNameLERK7TDesC16 @ 37 NONAME
-	_ZN20CCaLocalizationEntry17SetAttributeNameLERK7TDesC16 @ 38 NONAME
-	_ZN20CCaLocalizationEntry19SetLocalizedStringLERK7TDesC16 @ 39 NONAME
-	_ZN20CCaLocalizationEntry4NewLEv @ 40 NONAME
-	_ZN20CCaLocalizationEntry5NewLCEv @ 41 NONAME
-	_ZN20CCaLocalizationEntry8SetRowIdEj @ 42 NONAME
-	_ZN20CCaLocalizationEntry9SetTextIdEj @ 43 NONAME
-	_ZN22CCaInnerNotifierFilter11SetParentIdEi @ 44 NONAME
-	_ZN22CCaInnerNotifierFilter12InternalizeLER11RReadStream @ 45 NONAME
-	_ZN22CCaInnerNotifierFilter12SetEntryRoleE10TEntryRole @ 46 NONAME
-	_ZN22CCaInnerNotifierFilter12SetTypeNamesEP16CDesC16ArrayFlat @ 47 NONAME
-	_ZN22CCaInnerNotifierFilter4NewLENS_13TNotifierTypeE @ 48 NONAME
-	_ZN22CCaInnerNotifierFilter5NewLCENS_13TNotifierTypeE @ 49 NONAME
-	_ZN22CCaInnerNotifierFilter7SetIdsLERK6RArrayIiE @ 50 NONAME
-	_ZN9MenuUtils8GetTUintERK7TDesC16Rj @ 51 NONAME
-	_ZNK11RCaIdsArray12ExternalizeLER12RWriteStream @ 52 NONAME
-	_ZNK11RCaIdsArray13MarshalDataLCEv @ 53 NONAME
-	_ZNK13CCaInnerEntry12ExternalizeLER12RWriteStream @ 54 NONAME
-	_ZNK13CCaInnerEntry13GetAttributesEv @ 55 NONAME
-	_ZNK13CCaInnerEntry14GetDescriptionEv @ 56 NONAME
-	_ZNK13CCaInnerEntry16GetEntryTypeNameEv @ 57 NONAME
-	_ZNK13CCaInnerEntry5GetIdEv @ 58 NONAME
-	_ZNK13CCaInnerEntry6GetUidEv @ 59 NONAME
-	_ZNK13CCaInnerEntry7GetIconEv @ 60 NONAME
-	_ZNK13CCaInnerEntry7GetRoleEv @ 61 NONAME
-	_ZNK13CCaInnerEntry7GetTextEv @ 62 NONAME
-	_ZNK13CCaInnerEntry8GetFlagsEv @ 63 NONAME
-	_ZNK13CCaInnerEntry9GetIconIdEv @ 64 NONAME
-	_ZNK13CCaInnerQuery10GetFlagsOnEv @ 65 NONAME
-	_ZNK13CCaInnerQuery11GetFlagsOffEv @ 66 NONAME
-	_ZNK13CCaInnerQuery11GetParentIdEv @ 67 NONAME
-	_ZNK13CCaInnerQuery12ExternalizeLER12RWriteStream @ 68 NONAME
-	_ZNK13CCaInnerQuery17GetEntryTypeNamesEv @ 69 NONAME
-	_ZNK13CCaInnerQuery6GetIdsEv @ 70 NONAME
-	_ZNK13CCaInnerQuery6GetUidEv @ 71 NONAME
-	_ZNK13CCaInnerQuery7GetRoleEv @ 72 NONAME
-	_ZNK13CCaInnerQuery7GetSortEv @ 73 NONAME
-	_ZNK13CCaInnerQuery8GetCountEv @ 74 NONAME
-	_ZNK15RCaEntriesArray12ExternalizeLER12RWriteStream @ 75 NONAME
-	_ZNK20CCaLocalizationEntry11GetStringIdEv @ 76 NONAME
-	_ZNK20CCaLocalizationEntry12GetTableNameEv @ 77 NONAME
-	_ZNK20CCaLocalizationEntry16GetAttributeNameEv @ 78 NONAME
-	_ZNK20CCaLocalizationEntry18GetLocalizedStringEv @ 79 NONAME
-	_ZNK20CCaLocalizationEntry8GetRowIdEv @ 80 NONAME
-	_ZNK20CCaLocalizationEntry9GetTextIdEv @ 81 NONAME
-	_ZNK22CCaInnerNotifierFilter11GetParentIdEv @ 82 NONAME
-	_ZNK22CCaInnerNotifierFilter12ExternalizeLER12RWriteStream @ 83 NONAME
-	_ZNK22CCaInnerNotifierFilter12GetEntryRoleEv @ 84 NONAME
-	_ZNK22CCaInnerNotifierFilter12GetTypeNamesEv @ 85 NONAME
-	_ZNK22CCaInnerNotifierFilter15GetNotifierTypeEv @ 86 NONAME
-	_ZNK22CCaInnerNotifierFilter6GetIdsEv @ 87 NONAME
+	_ZN13CCaInnerQuery13AddAttributeLERK7TDesC16S2_ @ 21 NONAME
+	_ZN13CCaInnerQuery17SetEntryTypeNamesEP16CDesC16ArrayFlat @ 22 NONAME
+	_ZN13CCaInnerQuery4NewLEv @ 23 NONAME
+	_ZN13CCaInnerQuery5NewLCEv @ 24 NONAME
+	_ZN13CCaInnerQuery6SetUidEj @ 25 NONAME
+	_ZN13CCaInnerQuery7SetIdsLERK6RArrayIiE @ 26 NONAME
+	_ZN13CCaInnerQuery7SetRoleEi @ 27 NONAME
+	_ZN13CCaInnerQuery7SetSortENS_14TSortAttributeE @ 28 NONAME
+	_ZN13CCaInnerQuery8SetCountEj @ 29 NONAME
+	_ZN15RCaEntriesArray12InternalizeLER11RReadStream @ 30 NONAME
+	_ZN17CCaEntryAttribute4NewLERK7TDesC16 @ 31 NONAME
+	_ZN17CCaEntryAttribute5NewLCERK7TDesC16 @ 32 NONAME
+	_ZN17CCaEntryAttribute9SetValueLERK7TDesC16 @ 33 NONAME
+	_ZN17RCaEntryAttrArray15RemoveAttributeERK7TDesC16 @ 34 NONAME
+	_ZN17RCaEntryAttrArray4FindERK7TDesC16R6TDes16 @ 35 NONAME
+	_ZN17RCaEntryAttrArray5ExistERK7TDesC16 @ 36 NONAME
+	_ZN20CCaLocalizationEntry12SetStringIdLERK7TDesC16 @ 37 NONAME
+	_ZN20CCaLocalizationEntry13SetTableNameLERK7TDesC16 @ 38 NONAME
+	_ZN20CCaLocalizationEntry17SetAttributeNameLERK7TDesC16 @ 39 NONAME
+	_ZN20CCaLocalizationEntry19SetLocalizedStringLERK7TDesC16 @ 40 NONAME
+	_ZN20CCaLocalizationEntry4NewLEv @ 41 NONAME
+	_ZN20CCaLocalizationEntry5NewLCEv @ 42 NONAME
+	_ZN20CCaLocalizationEntry8SetRowIdEj @ 43 NONAME
+	_ZN20CCaLocalizationEntry9SetTextIdEj @ 44 NONAME
+	_ZN22CCaInnerNotifierFilter11SetParentIdEi @ 45 NONAME
+	_ZN22CCaInnerNotifierFilter12InternalizeLER11RReadStream @ 46 NONAME
+	_ZN22CCaInnerNotifierFilter12SetEntryRoleE10TEntryRole @ 47 NONAME
+	_ZN22CCaInnerNotifierFilter12SetTypeNamesEP16CDesC16ArrayFlat @ 48 NONAME
+	_ZN22CCaInnerNotifierFilter4NewLENS_13TNotifierTypeE @ 49 NONAME
+	_ZN22CCaInnerNotifierFilter5NewLCENS_13TNotifierTypeE @ 50 NONAME
+	_ZN22CCaInnerNotifierFilter7SetIdsLERK6RArrayIiE @ 51 NONAME
+	_ZN9MenuUtils8GetTUintERK7TDesC16Rj @ 52 NONAME
+	_ZNK11RCaIdsArray12ExternalizeLER12RWriteStream @ 53 NONAME
+	_ZNK11RCaIdsArray13MarshalDataLCEv @ 54 NONAME
+	_ZNK13CCaInnerEntry12ExternalizeLER12RWriteStream @ 55 NONAME
+	_ZNK13CCaInnerEntry13GetAttributesEv @ 56 NONAME
+	_ZNK13CCaInnerEntry14GetDescriptionEv @ 57 NONAME
+	_ZNK13CCaInnerEntry16GetEntryTypeNameEv @ 58 NONAME
+	_ZNK13CCaInnerEntry5GetIdEv @ 59 NONAME
+	_ZNK13CCaInnerEntry6GetUidEv @ 60 NONAME
+	_ZNK13CCaInnerEntry7GetIconEv @ 61 NONAME
+	_ZNK13CCaInnerEntry7GetRoleEv @ 62 NONAME
+	_ZNK13CCaInnerEntry7GetTextEv @ 63 NONAME
+	_ZNK13CCaInnerEntry8GetFlagsEv @ 64 NONAME
+	_ZNK13CCaInnerEntry9GetIconIdEv @ 65 NONAME
+	_ZNK13CCaInnerQuery10GetFlagsOnEv @ 66 NONAME
+	_ZNK13CCaInnerQuery11GetFlagsOffEv @ 67 NONAME
+	_ZNK13CCaInnerQuery11GetParentIdEv @ 68 NONAME
+	_ZNK13CCaInnerQuery12ExternalizeLER12RWriteStream @ 69 NONAME
+	_ZNK13CCaInnerQuery13GetAttributesEv @ 70 NONAME
+	_ZNK13CCaInnerQuery17GetEntryTypeNamesEv @ 71 NONAME
+	_ZNK13CCaInnerQuery6GetIdsEv @ 72 NONAME
+	_ZNK13CCaInnerQuery6GetUidEv @ 73 NONAME
+	_ZNK13CCaInnerQuery7GetRoleEv @ 74 NONAME
+	_ZNK13CCaInnerQuery7GetSortEv @ 75 NONAME
+	_ZNK13CCaInnerQuery8GetCountEv @ 76 NONAME
+	_ZNK15RCaEntriesArray12ExternalizeLER12RWriteStream @ 77 NONAME
+	_ZNK20CCaLocalizationEntry11GetStringIdEv @ 78 NONAME
+	_ZNK20CCaLocalizationEntry12GetTableNameEv @ 79 NONAME
+	_ZNK20CCaLocalizationEntry16GetAttributeNameEv @ 80 NONAME
+	_ZNK20CCaLocalizationEntry18GetLocalizedStringEv @ 81 NONAME
+	_ZNK20CCaLocalizationEntry8GetRowIdEv @ 82 NONAME
+	_ZNK20CCaLocalizationEntry9GetTextIdEv @ 83 NONAME
+	_ZNK22CCaInnerNotifierFilter11GetParentIdEv @ 84 NONAME
+	_ZNK22CCaInnerNotifierFilter12ExternalizeLER12RWriteStream @ 85 NONAME
+	_ZNK22CCaInnerNotifierFilter12GetEntryRoleEv @ 86 NONAME
+	_ZNK22CCaInnerNotifierFilter12GetTypeNamesEv @ 87 NONAME
+	_ZNK22CCaInnerNotifierFilter15GetNotifierTypeEv @ 88 NONAME
+	_ZNK22CCaInnerNotifierFilter6GetIdsEv @ 89 NONAME
 
--- a/contentstorage/extinc/cahandler.h	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#ifndef C_CAHANDLER_H
-#define C_CAHANDLER_H
-
-#include <e32base.h>
-
-class CCaInnerEntry;
-
-/**
- *  ?one_line_short_description
- *  ?more_complete_description
- *
- *  @code
- *   ?good_class_usage_example(s)
- *  @endcode
- *
- *  @lib ?library
- *  @since S60 ?S60_version *** for example, S60 v3.0
- */
-class CCaHandler: public CBase
-    {
-
-public:
-
-    /**
-     * Destructor.
-     */
-    IMPORT_C virtual ~CCaHandler();
-
-    /**
-     * Query support for item type.
-     * @since S60 v5.0
-     * @param aType Type.
-     * @return ETrue if handler supports this type, EFalse otherwise.
-     * @capability None.
-     * @throws None.
-     * @panic None.
-     */
-    IMPORT_C virtual TBool SupportsType( const TDesC& aType );
-
-    /**
-     * Handle command.
-     * @since S60 v5.0
-     * @param aItem Item of supported type.
-     * @param aCommand Command.
-     * this status will be completed with the resulting error code.
-     * @capability None.
-     * @throws This implementation throws KErrNotSupported.
-     * @panic None.
-     */
-    IMPORT_C virtual void HandleCommandL( CCaInnerEntry& aEntry,
-            const TDesC8& aCommand );
-
-protected:
-
-    /**
-     * Constructor.
-     */
-    IMPORT_C CCaHandler();
-
-    /**
-     * Base constructor.
-     */
-    IMPORT_C void BaseConstructL();
-
-private:
-    // data
-
-    class TData;
-
-    /**
-     * Private data.
-     */
-    TData* iData;
-
-    };
-
-#endif // C_CAHANDLER_H
--- a/contentstorage/extinc/cahandlerengine.h	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#ifndef C_CAHANDLERENGINE_H
-#define C_CAHANDLERENGINE_H
-
-#include <e32base.h>
-
-class CCaHandler;
-class CCaInnerEntry;
-
-/**
- *  ?one_line_short_description
- *  ?more_complete_description
- *
- *  @code
- *   ?good_class_usage_example(s)
- *  @endcode
- *
- *  @lib ?library
- *  @since S60 ?S60_version *** for example, S60 v3.0
- */
-NONSHARABLE_CLASS( CCaHandlerEngine ): public CBase
-    {
-
-public:
-    IMPORT_C static CCaHandlerEngine* NewL();
-    IMPORT_C static CCaHandlerEngine* NewLC();
-
-    /**
-     * Destructor.
-     */
-    IMPORT_C virtual ~CCaHandlerEngine();
-
-    /**
-     * ?description
-     *
-     * @since S60 ?S60_version
-     * @param ?arg1 ?description
-     * @param ?arg2 ?description
-     * @return ?description
-     */
-    IMPORT_C void HandleCommandL( CCaInnerEntry& aEntry,
-            const TDesC8& aCommand );
-
-private:
-
-    CCaHandlerEngine();
-
-    void ConstructL();
-
-    /**
-     * Find loaded handler by type.
-     * @param aType Type.
-     * @return Loaded handler or NULL no handler is loaded for that type.
-     */
-    CCaHandler* FindHandler( const TDesC& aType );
-
-    /**
-     * Load handler for given type.
-     * @param aType Type.
-     * @return Loaded handler or NULL no handler is found for that type.
-     */
-    CCaHandler* LoadHandlerL( const TDesC& aType );
-
-private:
-    // data
-
-    /**
-     * Array of Handlers.
-     * Contents owned.
-     */
-    RPointerArray<CCaHandler> iHandlers;
-
-    };
-
-#endif // C_CAHANDLERENGINE_H
--- a/contentstorage/extinc/cahandlerplugin.h	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#ifndef C_CAHANDLERPLUGIN_H
-#define C_CAHANDLERPLUGIN_H
-
-#include <e32base.h>
-#include <ecom/ecom.h>
-
-#include "cahandler.h"
-
-/**
- *  ?one_line_short_description
- *  ?more_complete_description
- *
- *  @code
- *   ?good_class_usage_example(s)
- *  @endcode
- *
- *  @lib ?library
- *  @since S60 ?S60_version *** for example, S60 v3.0
- */
-class CCaHandlerPlugin: public CCaHandler
-    {
-
-public:
-
-    /**
-     * Two-phased constructor.
-     * @param aImplementationUid  implementation uid
-     * @return pointer to a newly created instance of CCaHandlerPlugin.
-     */
-    inline static CCaHandlerPlugin* NewL( TUid aImplementationUid );
-
-    /**
-     * Constructor.
-     */
-    inline CCaHandlerPlugin();
-
-    /**
-     * Destructor.
-     */
-    inline virtual ~CCaHandlerPlugin();
-
-private:
-
-    /**
-     * Destructor ID key.
-     */
-    TUid iDtor_ID_Key;
-
-    };
-
-#include "cahandlerplugin.inl"
-
-#endif // C_CAHANDLERPLUGIN_H
--- a/contentstorage/extinc/cahandlerplugin.hrh	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#ifndef CAHANDLERPLUGIN_HRH
-#define CAHANDLERPLUGIN_HRH
-
-/// Definition of the CA Handler ECom plugin interface.
-#define HANDLER_IF_UID 0x20022F93
-
-#endif // CAHANDLERPLUGIN_HRH
--- a/contentstorage/extinc/cahandlerplugin.inl	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +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
- *
- */
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-inline CCaHandlerPlugin* CCaHandlerPlugin::NewL( TUid aImplementationUid )
-    {
-    TAny* ptr = REComSession::CreateImplementationL( aImplementationUid,
-            _FOFF( CCaHandlerPlugin, iDtor_ID_Key ) );
-    return reinterpret_cast<CCaHandlerPlugin*> ( ptr );
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-inline CCaHandlerPlugin::CCaHandlerPlugin()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-inline CCaHandlerPlugin::~CCaHandlerPlugin()
-    {
-    REComSession::DestroyedImplementation( iDtor_ID_Key );
-    }
--- a/contentstorage/extsrc/cahandler.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +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 "cahandler.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-NONSHARABLE_CLASS( CCaHandler::TData )
-    {
-    // Future-proofing only.
-    };
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C CCaHandler::~CCaHandler()
-    {
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C CCaHandler::CCaHandler()
-    {
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C void CCaHandler::BaseConstructL()
-    {
-    // Future-proofing only.
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C TBool CCaHandler::SupportsType( const TDesC& /*aType*/)
-    {
-    return EFalse;
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C void CCaHandler::HandleCommandL( CCaInnerEntry& /*aEntry*/,
-        const TDesC8& /*aCommand*/)
-    {
-    User::Leave( KErrNotSupported );
-    }
--- a/contentstorage/extsrc/cahandlerengine.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +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 "cahandlerengine.h"
-#include "cahandler.h"
-#include "cahandlerplugin.h"
-#include "cahandlerplugin.hrh"
-#include "cadef.h"
-#include "cainnerentry.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Cleanupstack support method, calls RImplInfoPtrArray::ResetAndDestroy()
-// of the passed argument (array).
-// ---------------------------------------------------------------------------
-//
-LOCAL_C void ResetAndDestroyArray( TAny* aArray )
-    {
-    ( (RImplInfoPtrArray* ) aArray )->ResetAndDestroy();
-    }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C CCaHandlerEngine::~CCaHandlerEngine()
-    {
-    iHandlers.ResetAndDestroy();
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C CCaHandlerEngine* CCaHandlerEngine::NewL()
-    {
-    CCaHandlerEngine* self = NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C CCaHandlerEngine* CCaHandlerEngine::NewLC()
-    {
-    CCaHandlerEngine* self = new ( ELeave ) CCaHandlerEngine();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-void CCaHandlerEngine::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-CCaHandlerEngine::CCaHandlerEngine()
-    {
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-EXPORT_C void CCaHandlerEngine::HandleCommandL( CCaInnerEntry& aEntry,
-        const TDesC8& aCommand )
-    {
-    // Currently, we load handlers on demand and never unload them.
-    // As there aren't many types of items, this seems appropriate.
-    CCaHandler* handler = FindHandler( aEntry.GetEntryTypeName() );
-    if( !handler )
-        {
-        //TODO: need to change this
-        if( aEntry.GetEntryTypeName() == KCaTypeApp()
-                || aEntry.GetEntryTypeName() == KCaTypeWidget() )
-            {
-            handler = LoadHandlerL( KCaTypeApp() );
-            }
-        else
-            {
-            handler = LoadHandlerL( aEntry.GetEntryTypeName() );
-            }
-        }
-    if( handler )
-        {
-        handler->HandleCommandL( aEntry, aCommand );
-        }
-    else
-        {
-        User::Leave( KErrNotFound );
-        }
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-CCaHandler* CCaHandlerEngine::FindHandler( const TDesC& aType )
-    {
-    for( TInt i = 0; i < iHandlers.Count(); i++ )
-        {
-        CCaHandler* handler = iHandlers[i];
-        if( handler->SupportsType( aType ) )
-            {
-            return handler;
-            }
-        }
-    return NULL;
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-CCaHandler* CCaHandlerEngine::LoadHandlerL( const TDesC& aType )
-    {
-    CCaHandlerPlugin* handler = NULL;
-    TBuf8<KCaMaxTypeLen> type;
-    type.Copy( aType );
-    TEComResolverParams resolverParams;
-    resolverParams.SetDataType( type );
-    RImplInfoPtrArray implInfoArray;
-    CleanupStack::PushL(
-            TCleanupItem( ResetAndDestroyArray, &implInfoArray ) );
-    REComSession::ListImplementationsL( TUid::Uid( HANDLER_IF_UID ),
-            resolverParams, implInfoArray );
-
-    __ASSERT_DEBUG( implInfoArray.Count() <= 1, User::Invariant() );
-
-    if( implInfoArray.Count() != 0 )
-        {
-        TUid implUid = implInfoArray[0]->ImplementationUid();
-        handler = CCaHandlerPlugin::NewL( implUid );
-        CleanupStack::PushL( handler );
-        // Here we check if this is the handler we need. Currently we only do
-        // a sanity check for the handler (it should support the registered
-        // types!), but later this can be extended with better support query.
-        // E.g. support for type AND command, etc.
-        if( handler->SupportsType( aType ) )
-            {
-            iHandlers.AppendL( handler );
-            CleanupStack::Pop( handler );
-            }
-        else
-            {
-            CleanupStack::PopAndDestroy( handler );
-            handler = NULL;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( &implInfoArray );
-    return handler;
-    }
--- a/contentstorage/extsrc/caiconutility.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/extsrc/caiconutility.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -28,35 +28,9 @@
 #include "camenuiconutility.h"
 #include "caarraycleanup.inl"
 #include "casathandler.h"
-// Constants
-_LIT( KMifIconPath, "\\resource\\apps\\" );
-const TUint32 KMifIconPathLenght = 18;
 
 // ================= LOCAL FUNCTIONS ========================
 
-
-// ---------------------------------------------------------
-// ParseIconFilePathL
-// ---------------------------------------------------------
-//
-
-LOCAL_C void ParseIconFilePathL( const TDesC& aIconFilePath,
-        RBuf& aIconFilePathBuf )
-    {
-    TParsePtrC fileParsePtrC( aIconFilePath );
-    if( !fileParsePtrC.PathPresent() )
-        {
-        aIconFilePathBuf.CreateL( KMifIconPathLenght
-                + aIconFilePath.Length() );
-        aIconFilePathBuf.Append( KMifIconPath );
-        }
-    else
-        {
-        aIconFilePathBuf.CreateL( aIconFilePath.Length() );
-        }
-    aIconFilePathBuf.Append( aIconFilePath );
-    }
-
 // ---------------------------------------------------------
 // LoadSkinL
 // ---------------------------------------------------------
@@ -119,32 +93,6 @@
     return icon;
     }
 
-// ---------------------------------------------------------
-// GetIconL
-// ---------------------------------------------------------
-//
-LOCAL_C CAknIcon* GetIconL( TFileName aFilename, int aBitmapId, int aMaskId )
-    {
-    CAknIcon* icon = NULL;
-    if( aFilename.Length() > 0 && aBitmapId >= 0 && aMaskId >= 0 )
-        {
-        CFbsBitmap* bitmap( 0 );
-        CFbsBitmap* mask( 0 );
-
-        RBuf pathBuf;
-        pathBuf.CleanupClosePushL();
-        ParseIconFilePathL( aFilename, pathBuf );
-
-        AknIconUtils::CreateIconLC( bitmap, mask, pathBuf, aBitmapId,
-                aMaskId );
-        icon = CAknIcon::NewL();
-        icon->SetBitmap( bitmap );
-        icon->SetMask( mask );
-        CleanupStack::Pop( 2 );
-        CleanupStack::PopAndDestroy( &pathBuf );
-        }
-    return icon;
-    }
 
 // ---------------------------------------------------------
 // GetDefaultSkinL
@@ -191,6 +139,20 @@
         icon = GetSkinL( KAknsIIDQgnIndiBrowserTbFeeds.iMajor,
                 KAknsIIDQgnIndiBrowserTbFeeds.iMinor );
         }
+    else if( aItem.GetEntryTypeName().Compare( KCaTypeTemplatedApp ) == KErrNone )
+        {
+        TInt uid;
+        TLex lex (aItem.GetIcon().iApplicationId);
+        lex.Val(uid);
+        TUid appUid( TUid::Uid( uid ) );
+        icon = GetAppSkinL( appUid );
+        if( !icon )
+            {
+            icon = GetSkinL( KAknsIIDQgnMenuUnknownLst.iMajor,
+                    KAknsIIDQgnMenuUnknownLst.iMinor );
+            }
+        }
+    
     return icon;
     }
 
@@ -205,20 +167,6 @@
     {
     CAknIcon* icon = NULL;
     CCaInnerEntry::TIconAttributes iconAttributes( aEntry.GetIcon() );
-    // Try to get the skin of the item
-    TRAP_IGNORE(icon = GetSkinL( iconAttributes.iSkinMajorId,
-                iconAttributes.iSkinMinorId ) );
-    if( !icon )
-        {
-        // Try to get the icon of the item (skin failed)
-        TRAP_IGNORE( icon = GetIconL( iconAttributes.iFileName,
-                            iconAttributes.iBitmapId,
-                            iconAttributes.iMaskId ) );
-        if( !icon )
-            {
-            // Return a default (skin and icon failed)
-            TRAP_IGNORE( icon = GetDefaultSkinL( aEntry ) );
-            }
-        }
+    TRAP_IGNORE( icon = GetDefaultSkinL( aEntry ) );
     return icon;
     }
--- a/contentstorage/group/caextendedmenu.mmp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/group/caextendedmenu.mmp	Tue Mar 23 23:55:55 2010 +0200
@@ -25,8 +25,6 @@
 VENDORID        VID_DEFAULT
 
 SOURCEPATH      ../extsrc
-SOURCE          cahandler.cpp
-SOURCE          cahandlerengine.cpp
 SOURCE          caiconutility.cpp
 
 USERINCLUDE     ../inc
--- a/contentstorage/group/camenu.mmp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/group/camenu.mmp	Tue Mar 23 23:55:55 2010 +0200
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: 19.1.2 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 19.1.3 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
--- a/contentstorage/group/castockhandlerplugins.mmp	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Project definition file for project castockhandlerplugins
-*
-*/
-
-
-// To get the MW_LAYER_SYSTEMINCLUDE-definition
-#include <platform_paths.hrh>
-
-TARGET          castockhandlerplugins.dll
-TARGETTYPE      PLUGIN
-UID             0x10009D8D 0x20022F82
-
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-SOURCEPATH      ../handlersrc
-
-SOURCE          castockhandlersproxy.cpp
-SOURCE          caapphandlerplugin.cpp
-SOURCE          cauninstalloperation.cpp
-SOURCE          caurlhandlerplugin.cpp  
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../handlerinc
-USERINCLUDE     ../cautils/inc
-USERINCLUDE     ../extinc
-
-MW_LAYER_SYSTEMINCLUDE
-
-//TODO: check which ones are really needed
-LIBRARY         euser.lib
-LIBRARY         ecom.lib
-LIBRARY         swinstcli.lib
-LIBRARY         camenu.lib
-LIBRARY         cautils.lib
-LIBRARY         apgrfx.lib
-LIBRARY         ws32.lib
-
-LIBRARY         apparc.lib
-LIBRARY         sisregistryclient.lib
-LIBRARY         eikcore.lib
-LIBRARY         cone.lib
-LIBRARY         efsrv.lib
-LIBRARY         avkon.lib
-LIBRARY         caextendedmenu.lib
-
-SOURCEPATH      ../data
-START RESOURCE  20022F82.rss
-LANG            sc
-TARGET          castockhandlerplugins.rsc
-END // RESOURCE
-
--- a/contentstorage/group/group.pro	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/group/group.pro	Tue Mar 23 23:55:55 2010 +0200
@@ -32,7 +32,6 @@
     "camenu.mmp" \
     "camenusrv.mmp" \
     "caextendedmenu.mmp" \
-    "castockhandlerplugins.mmp" \
     "../casrv/caappscanner/group/caappscanner.mmp" \
     "../casrv/casatmonitor/group/casatmonitor.mmp" \
     "../casrv/cawidgetscanner/group/cawidgetscanner.mmp" \
--- a/contentstorage/handlerinc/caapphandlerplugin.h	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#ifndef C_CAAPPHANDLERPLUGIN_H
-#define C_CAAPPHANDLERPLUGIN_H
-
-#include <e32base.h>
-
-#include "cahandlerplugin.h"
-
-class CEikonEnv;
-class CCaUninstallOperation;
-
-/**
- *  ?one_line_short_description
- *  ?more_complete_description
- *
- *  @code
- *   ?good_class_usage_example(s)
- *  @endcode
- *
- *  @lib ?library
- *  @since S60 ?S60_version *** for example, S60 v3.0
- */
-NONSHARABLE_CLASS( CCaAppHandlerPlugin ): public CCaHandlerPlugin
-    {
-
-public:
-
-    static CCaAppHandlerPlugin* NewL();
-
-    /**
-     * Destructor.
-     */
-    virtual ~CCaAppHandlerPlugin();
-
-protected:
-
-    CCaAppHandlerPlugin();
-
-    void ConstructL();
-
-public:
-
-    // from CCaHandlerPlugin
-
-    /**
-     * Query support for item type.
-     * @param aType Type.
-     * @return ETrue if handler supports this type, EFalse otherwise.
-     */
-    TBool SupportsType( const TDesC& aType );
-
-    /**
-     * Handle command.
-     * @param aItem Item of supported type.
-     * @param aCommand Command.
-     * @param aParams. Command parameters.
-     * @param aStatus Observer request status. When the operation completes,
-     * this status will be completed with the resulting error code.
-     * @return Asynchronous operation. Owned by the caller.
-     */
-    void HandleCommandL( CCaInnerEntry& aEntry, const TDesC8& aCommand );
-
-private:
-
-    void LaunchApplicationL( const TUid aUid, const TDesC8 &aParam,
-            TInt aViewId );
-    void CloseApplicationL( CCaInnerEntry& aEntry );
-
-private:
-    // data
-
-    CEikonEnv* iEikEnv;
-    CCaUninstallOperation* iUninstallOperation;
-    };
-
-#endif // C_CAAPPHANDLERPLUGIN_H
--- a/contentstorage/handlerinc/cauninstalloperation.h	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#ifndef C_CAUNINSTALLOPERATION_H
-#define C_CAUNINSTALLOPERATION_H
-
-#include <e32base.h>
-#include <SWInstApi.h>
-
-/**
- * Uninstall CMenuOperation
- * Encapsulates the functionality of uninstalling an application.
- */
-NONSHARABLE_CLASS( CCaUninstallOperation ): public CActive
-    {
-
-public:
-    // construction
-
-    virtual ~CCaUninstallOperation();
-
-    static CCaUninstallOperation* NewL( CCaInnerEntry &aEntry,
-            TInt aPriority = CActive::EPriorityStandard );
-
-private:
-    // construction
-
-    CCaUninstallOperation( CCaInnerEntry &aEntry, TInt aPriority );
-
-    void ConstructL( CCaInnerEntry &aEntry );
-
-    void AppInfoL( const TUid& aAppUid, TPtrC8& aMimeType,
-            TUid& aPackageUid );
-
-    TBool GetInstallPkgUidL( const TDesC& aAppFullName, TUid& aPackageUid );
-
-private:
-    // from CActive
-
-    void RunL();
-    void DoCancel();
-    TInt RunError( TInt aError );
-
-private:
-
-    CCaInnerEntry& iEntry;
-    SwiUI::RSWInstLauncher iUninstaller;
-    TInt iId;
-    };
-
-#endif // C_CAUNINSTALLOPERATION_H
--- a/contentstorage/handlerinc/caurlhandlerplugin.h	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#ifndef __CCAURLHANDLERPLUGIN_H__
-#define __CCAURLHANDLERPLUGIN_H__
-
-#include "cahandlerplugin.h"
-
-#include <e32base.h>
-
-// Constants
-const TUid KUidBrowser =
-    {
-    0x10008D39
-    };
-_LIT( KBrowserPrefix, "4 " );
-
-/**
- * Handler for entries with typenme "url".
- */
-NONSHARABLE_CLASS( CCaUrlHandlerPlugin ): public CCaHandlerPlugin
-    {
-
-public:
-    // construction
-
-    /**
-     * Destructor.
-     */
-    virtual ~CCaUrlHandlerPlugin();
-
-    /**
-     * Two-phased constructor. Leaves on failure.
-     * @return The constructed object.
-     */
-    static CCaUrlHandlerPlugin* NewL();
-
-protected:
-    // construction
-
-    /**
-     * Constructor.
-     * @param aMenu Menu.
-     */
-    CCaUrlHandlerPlugin();
-
-    /**
-     * Second-phase constructor.
-     */
-    void ConstructL();
-
-public:
-
-    /**
-     * Query support for item type.
-     * @param aType Type.
-     * @return ETrue if handler supports this type, EFalse otherwise.
-     */
-    TBool SupportsType( const TDesC& aType );
-
-    /**
-     * Handle command.
-     * @param aEntry The url entry to be processed.
-     * @param aCommand Command.
-     */
-    void HandleCommandL( CCaInnerEntry& aEntry, const TDesC8& aCommand );
-
-private:
-    // internal
-
-    /**
-     * Launches the url.
-     * @param aUrl The url to be launched.
-     */
-    void LaunchUrlL( const TDesC& aUrl );
-
-    };
-
-#endif // __CCAURLHANDLERPLUGIN_H__
--- a/contentstorage/handlersrc/caapphandlerplugin.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +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 <w32std.h>
-#include <apgtask.h>
-#include <apgcli.h>
-#include <eikenv.h>
-#include <eikappui.h>
-#include <vwsdef.h>
-#include <AknDef.h>
-#include <AknTaskList.h>
-
-#include "caapphandlerplugin.h"
-#include "cainnerentry.h"
-#include "cauninstalloperation.h"
-
-#include "cautils.h"
-#include "cadef.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaAppHandlerPlugin::~CCaAppHandlerPlugin()
-    {
-    delete iUninstallOperation;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CCaAppHandlerPlugin* CCaAppHandlerPlugin::NewL()
-    {
-    CCaAppHandlerPlugin* handler = new ( ELeave ) CCaAppHandlerPlugin();
-    CleanupStack::PushL( handler );
-    handler->ConstructL();
-    CleanupStack::Pop( handler );
-    return handler;
-    }
-
-// ---------------------------------------------------------
-// CCaAppHandlerPlugin::CCaAppHandlerPlugin
-// ---------------------------------------------------------
-//
-CCaAppHandlerPlugin::CCaAppHandlerPlugin()
-    {
-    iEikEnv = CEikonEnv::Static();
-    iUninstallOperation = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaAppHandlerPlugin::ConstructL()
-    {
-    BaseConstructL();
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CCaAppHandlerPlugin::SupportsType( const TDesC& aType )
-    {
-    if( !aType.Compare( KCaTypeApp() ) || !aType.Compare( KCaTypeWidget() ) )
-        {
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaAppHandlerPlugin::HandleCommandL( CCaInnerEntry& aEntry,
-        const TDesC8& aCommand )
-    {
-    if( aCommand == KCaCmdOpen() && aEntry.GetEntryTypeName()
-            == KCaTypeApp() )
-        {
-        TInt viewId( -1 );
-        TBuf<KCaMaxAttrValueLen> viewIdValue;
-        if( aEntry.FindAttribute( KCaAttrView(), viewIdValue ) )
-            {
-            if( MenuUtils::GetTUint( viewIdValue, (TUint& ) viewId )
-                    != KErrNone )
-                {
-                User::Leave( KErrCorrupt );
-                }
-            }
-        LaunchApplicationL( TUid::Uid( aEntry.GetUid() ), KNullDesC8(),
-                viewId );
-        }
-    else if( aCommand == KCaCmdClose() && aEntry.GetEntryTypeName()
-            == KCaTypeApp() ) 
-        {
-        CloseApplicationL( aEntry );
-        }
-    else if( aCommand == KCaCmdRemove()
-            && ( aEntry.GetEntryTypeName() == KCaTypeApp()
-            || aEntry.GetEntryTypeName() == KCaTypeWidget() ) )
-        {
-        if( iUninstallOperation && iUninstallOperation->IsActive() )
-            {
-            User::Leave( KErrInUse );
-            }
-        delete iUninstallOperation;
-        iUninstallOperation = NULL;
-        iUninstallOperation = CCaUninstallOperation::NewL( aEntry );
-        }
-    else
-        {
-        User::Leave( KErrNotSupported );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaAppHandlerPlugin::LaunchApplicationL( const TUid aUid,
-        const TDesC8 &aParam, TInt aViewId )
-    {
-    if( aViewId > 0 && iEikEnv )
-        {
-        TUid viewId = TUid::Uid( aViewId );
-        TVwsViewId view( aUid, viewId );
-        iEikEnv->EikAppUi()->ActivateViewL( view );
-        }
-    else
-        {
-        RWsSession wsSession;
-        User::LeaveIfError( wsSession.Connect() );
-        CleanupClosePushL<RWsSession> ( wsSession );
-
-        CAknTaskList* taskList = CAknTaskList::NewL( wsSession );
-        TApaTask task = taskList->FindRootApp( aUid );
-        delete taskList;
-
-        if( task.Exists() )
-            {
-            task.BringToForeground();
-            }
-        else
-            {
-            TApaAppInfo appInfo;
-            TApaAppCapabilityBuf capabilityBuf;
-            RApaLsSession appArcSession;
-            User::LeaveIfError( appArcSession.Connect() );
-            CleanupClosePushL<RApaLsSession> ( appArcSession );
-
-            User::LeaveIfError( appArcSession.GetAppInfo( appInfo, aUid ) );
-            User::LeaveIfError( appArcSession.GetAppCapability(
-                    capabilityBuf, aUid ) );
-
-            TApaAppCapability& caps = capabilityBuf();
-            TFileName appName = appInfo.iFullName;
-            CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
-            cmdLine->SetExecutableNameL( appName );
-
-            if( caps.iLaunchInBackground )
-                {
-                cmdLine->SetCommandL( EApaCommandBackground );
-                }
-            else
-                {
-                cmdLine->SetCommandL( EApaCommandRun );
-                }
-
-            cmdLine->SetTailEndL( aParam );
-
-            User::LeaveIfError( appArcSession.StartApp( *cmdLine ) );
-
-            CleanupStack::PopAndDestroy( cmdLine );
-            CleanupStack::PopAndDestroy( &appArcSession );
-            }
-        CleanupStack::PopAndDestroy( &wsSession );
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CCaAppHandlerPlugin::CloseApplicationL( CCaInnerEntry& aEntry )
-    {
-    RWsSession wsSession;
-    User::LeaveIfError( wsSession.Connect() );
-    CleanupClosePushL<RWsSession> ( wsSession );
-
-    if( ( aEntry.GetFlags() & ERunning ) && 
-            ( !( aEntry.GetFlags() & ESystem ) ) )
-        {
-        RBuf value;
-        CleanupClosePushL( value );
-        value.CreateL( KCaMaxAttrValueLen );
-        if( aEntry.FindAttribute( KCaAttrWindowGroupId, value ))
-            {
-            TInt wgId( KErrNotFound );
-            TLex16 parser(value);
-            if ( KErrNone == parser.Val( wgId ) && wgId > 0 )
-                {
-                TWsEvent event;
-                event.SetTimeNow();
-                event.SetType( KAknShutOrHideApp );
-                wsSession.SendEventToWindowGroup( wgId, event );
-                }
-            }
-        CleanupStack::PopAndDestroy( &value );
-        }
-
-    CleanupStack::PopAndDestroy( &wsSession );
-    }
-
--- a/contentstorage/handlersrc/castockhandlersproxy.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +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 <ecom/implementationproxy.h>
-#include "caapphandlerplugin.h"
-#include "caurlhandlerplugin.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-LOCAL_C CCaHandlerPlugin* AppHandlerNewL()
-    {
-    return CCaAppHandlerPlugin::NewL();
-    }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-LOCAL_C CCaHandlerPlugin* UrlHandlerNewL()
-    {
-    return CCaUrlHandlerPlugin::NewL();
-    }
-
-// ======== GLOBAL FUNCTIONS ========
-
-const TImplementationProxy ImplementationTable[] =
-    {
-    IMPLEMENTATION_PROXY_ENTRY( 0x20022F83, AppHandlerNewL ),
-    IMPLEMENTATION_PROXY_ENTRY( 0x20022F85, UrlHandlerNewL ),
-    };
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
-        TInt& aTableCount )
-    {
-    aTableCount = sizeof( ImplementationTable )
-            / sizeof(TImplementationProxy);
-    return ImplementationTable;
-    }
--- a/contentstorage/handlersrc/cauninstalloperation.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +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 <apgcli.h>
-#include <swi/sisregistrysession.h>
-#include <swi/sisregistryentry.h>
-#include "cautils.h"
-#include "cadef.h"
-#include "cainnerentry.h"
-#include "cauninstalloperation.h"
-_LIT8( KAppMimeType, "x-epoc/x-sisx-app" );
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::~CCaUninstallOperation
-// ---------------------------------------------------------------------------
-//
-CCaUninstallOperation::~CCaUninstallOperation()
-    {
-    Cancel();
-    iUninstaller.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::NewL
-// ---------------------------------------------------------------------------
-//
-CCaUninstallOperation* CCaUninstallOperation::NewL( CCaInnerEntry &aEntry,
-        TInt aPriority )
-    {
-    CCaUninstallOperation* self;
-
-    self = new ( ELeave ) CCaUninstallOperation( aEntry, aPriority );
-    CleanupStack::PushL( self );
-    self->ConstructL( aEntry );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::CCaUninstallOperation
-// ---------------------------------------------------------------------------
-//
-CCaUninstallOperation::CCaUninstallOperation( CCaInnerEntry& aEntry,
-        TInt aPriority ) :
-    CActive( aPriority ), iEntry( aEntry ), iUninstaller(), iId( 0 )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CCaUninstallOperation::ConstructL( CCaInnerEntry& aEntry )
-    {
-    TBuf<KCaMaxAttrValueLen> uidAttr;
-    TUint uid = aEntry.GetUid();
-
-    TUid packageUid = KNullUid;
-    TPtrC8 mimeType;
-
-    if( !( aEntry.GetFlags() & ERemovable ) )
-        {
-        User::Leave( KErrAccessDenied );
-        }
-
-    User::LeaveIfError( iUninstaller.Connect() );
-    iId = aEntry.GetId();
-    if( aEntry.GetEntryTypeName() == KCaTypeWidget() )
-        {
-        TBuf<KMaxUidName> uidDesc;
-        aEntry.FindAttribute( KCaPackageUid, uidDesc );
-        TLex uidLex(uidDesc);
-        TUint32 uidValue;
-        User::LeaveIfError( uidLex.Val( uidValue, EHex ));
-
-        packageUid.iUid = static_cast<TInt32>(uidValue);
-        mimeType.Set( KAppMimeType );
-        }
-    else
-        {
-        AppInfoL( TUid::Uid( uid ), mimeType, packageUid );
-        }
-
-    // Commence the uninstallations
-    iUninstaller.Uninstall( iStatus, packageUid, mimeType );
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::AppInfo
-// ---------------------------------------------------------------------------
-//
-void CCaUninstallOperation::AppInfoL( const TUid& aAppUid,
-        TPtrC8& aMimeType, TUid& aPackageUid )
-    {
-    RApaLsSession apaLsSession;
-
-    User::LeaveIfError( apaLsSession.Connect() );
-    CleanupClosePushL( apaLsSession );
-    User::LeaveIfError( apaLsSession.GetAllApps() );
-
-	TApaAppInfo appInfo;
-	User::LeaveIfError( apaLsSession.GetAppInfo( appInfo, aAppUid ) );
-	if( !GetInstallPkgUidL( appInfo.iFullName, aPackageUid ) )
-		{
-		aPackageUid = aAppUid;
-		}
-	aMimeType.Set( KAppMimeType );
-
-    CleanupStack::PopAndDestroy( &apaLsSession );
-    }
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::GetInstallPkgUidL
-// ---------------------------------------------------------------------------
-//
-TBool CCaUninstallOperation::GetInstallPkgUidL( const TDesC& aAppFullName,
-        TUid& aPackageUid )
-    {
-    // Search for the full name of the application amongst every file name in
-    // every installed packages.
-    TBool found = EFalse;
-    Swi::RSisRegistrySession iSisRegSession;
-
-    // Get the array of ids of every installed packages
-    if( KErrNone != iSisRegSession.Connect() )
-        {
-        return found;
-        }
-    CleanupClosePushL( iSisRegSession );
-
-    RArray<TUid> packageIds;
-    CleanupClosePushL( packageIds );
-
-    iSisRegSession.InstalledUidsL( packageIds );
-
-    RPointerArray<HBufC> packageFiles;
-    CleanupClosePushL( packageFiles );
-
-    for( TInt i = 0; i < packageIds.Count() && !found; ++i )
-        {
-        const TUid packageId = packageIds[i];
-        Swi::RSisRegistryEntry packageEntry;
-
-        // Get the array of file names in the current install package and look
-        // if there is one suggesting that the application was installed from
-        // the package.
-        if( KErrNone == packageEntry.Open( iSisRegSession, packageId ) )
-            {
-            CleanupClosePushL( packageEntry );
-            packageEntry.FilesL( packageFiles );
-            for( TInt pf = 0; pf < packageFiles.Count() && !found; ++pf )
-                {
-                if( packageFiles[pf]->FindC( aAppFullName ) == 0 )
-                    {
-                    aPackageUid = packageId;
-                    found = ETrue;
-                    }
-                }
-            packageFiles.ResetAndDestroy();
-            CleanupStack::PopAndDestroy( &packageEntry );
-            }
-        }
-
-    CleanupStack::PopAndDestroy( &packageFiles );
-    CleanupStack::PopAndDestroy( &packageIds );
-    CleanupStack::PopAndDestroy( &iSisRegSession );
-
-    return found;
-    }
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::RunL
-// ---------------------------------------------------------------------------
-//
-void CCaUninstallOperation::RunL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::DoCancel
-// ---------------------------------------------------------------------------
-//
-void CCaUninstallOperation::DoCancel()
-    {
-    iUninstaller.CancelAsyncRequest( SwiUI::ERequestUninstall );
-    }
-
-// ---------------------------------------------------------------------------
-// CCaUninstallOperation::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CCaUninstallOperation::RunError( TInt /* aError */)
-    {
-    return KErrNone;
-    }
--- a/contentstorage/handlersrc/caurlhandlerplugin.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  ?Description
- *
- */
-
-#include <w32std.h>
-#include <apgtask.h>
-#include <apgcli.h>
-#include <AknTaskList.h>
-
-#include "caurlhandlerplugin.h"
-#include "cadef.h"
-#include "cainnerentry.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// --------------------------------------------------------------------------
-// CCaUrlHandlerPlugin::~CCaUrlHandlerPlugin
-// --------------------------------------------------------------------------
-//
-CCaUrlHandlerPlugin::~CCaUrlHandlerPlugin()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CCaUrlHandlerPlugin::NewL
-// --------------------------------------------------------------------------
-//
-CCaUrlHandlerPlugin* CCaUrlHandlerPlugin::NewL()
-    {
-    CCaUrlHandlerPlugin* handler = new ( ELeave ) CCaUrlHandlerPlugin();
-    CleanupStack::PushL( handler );
-    handler->ConstructL();
-    CleanupStack::Pop( handler );
-    return handler;
-    }
-
-// --------------------------------------------------------------------------
-// CCaUrlHandlerPlugin::CCaUrlHandlerPlugin
-// --------------------------------------------------------------------------
-//
-CCaUrlHandlerPlugin::CCaUrlHandlerPlugin()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CCaUrlHandlerPlugin::ConstructL
-// --------------------------------------------------------------------------
-//
-void CCaUrlHandlerPlugin::ConstructL()
-    {
-    BaseConstructL();
-    }
-
-// --------------------------------------------------------------------------
-// CCaUrlHandlerPlugin::SupportsType
-// --------------------------------------------------------------------------
-//
-TBool CCaUrlHandlerPlugin::SupportsType( const TDesC& aType )
-    {
-    if( !aType.Compare( KCaTypeUrl() ) )
-        {
-        return ETrue;
-        }
-
-    return EFalse;
-    }
-
-// --------------------------------------------------------------------------
-// CCaUrlHandlerPlugin::HandleCommandL
-// --------------------------------------------------------------------------
-//
-void CCaUrlHandlerPlugin::HandleCommandL( CCaInnerEntry& aEntry,
-        const TDesC8& aCommand )
-    {
-
-    if( !aCommand.Compare( KCaCmdOpen() ) )
-        {
-        const RCaEntryAttrArray& attributes = aEntry.GetAttributes();
-        TInt attributesArrayCount = attributes.Count();
-        for( int i = 0; i < attributesArrayCount; ++i )
-            {
-            const CCaEntryAttribute * const attribute = attributes[i];
-            if( attribute->Name().Compare( KCaAttrUrl ) == 0 )
-                {
-                LaunchUrlL( attribute->Value() );
-                break;
-                }
-            }
-        }
-    else
-        {
-        User::Leave( KErrNotSupported );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCaUrlHandlerPlugin::LaunchUrlL
-// --------------------------------------------------------------------------
-//
-
-void CCaUrlHandlerPlugin::LaunchUrlL( const TDesC& aUrl )
-    {
-    // Launches browser stand-alone.
-    // Browser is launched with a parameter 4 ("4 http://...."), which 
-    // Start/Continue the browser specifying a URL. 
-    // Other available parameters are described in the Browser API Specification
-    // Document.
-    TInt length = aUrl.Length() + KBrowserPrefix.iTypeLength;
-
-    RWsSession wsSession;
-    User::LeaveIfError( wsSession.Connect() );
-    CleanupClosePushL<RWsSession> ( wsSession );
-
-    CAknTaskList* taskList = CAknTaskList::NewL( wsSession );
-    TApaTask task = taskList->FindRootApp( KUidBrowser );
-    delete taskList;
-
-    if( task.Exists() )
-        {
-        HBufC8* param8 = HBufC8::NewLC( length );
-        TPtr8 ptr8 = param8->Des();
-        ptr8.Append( KBrowserPrefix );
-        ptr8.Append( aUrl );
-
-        // Sends message to existing Browser task.
-        task.SendMessage( TUid::Uid( 0 ), *param8 ); // Uid is not used
-        CleanupStack::PopAndDestroy( param8 );
-        }
-    else
-        {
-        HBufC* buf = HBufC::NewLC( length );
-        TPtr ptr = buf->Des();
-        ptr.Append( KBrowserPrefix );
-        ptr.Append( aUrl );
-
-        RApaLsSession appArcSession;
-        User::LeaveIfError( appArcSession.Connect() );
-        CleanupClosePushL<RApaLsSession> ( appArcSession );
-        TThreadId id;
-        appArcSession.StartDocument( *buf, KUidBrowser, id );
-        CleanupStack::PopAndDestroy( &appArcSession );
-        CleanupStack::PopAndDestroy( buf );
-        }
-
-    CleanupStack::PopAndDestroy( &wsSession );
-    }
--- a/contentstorage/inc/cadef.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/inc/cadef.h	Tue Mar 23 23:55:55 2010 +0200
@@ -12,7 +12,7 @@
  * Contributors:
  *
  * Description:  Definition of different constants
- *  Version     : %version: 10.1.4 % << Don't touch! Updated by Synergy at check-out.
+ *  Version     : %version: 10.1.6 % << Don't touch! Updated by Synergy at check-out.
  *
  */
 
@@ -62,6 +62,7 @@
 _LIT( KCaTypeCollectionDownload, "collection::downloaded" );
 _LIT( KCaPackageUid,"packageuid");
 _LIT( KCaAttrInstallationTime, "installationTime");
+_LIT( KCaTypeTemplatedApp, "templatedApplication" );
 
 const TInt KGranularityOne = 1;
 const TInt KUidChars = 10;
@@ -88,7 +89,7 @@
     {
     0x20022F35
     };
-
+    
 const TInt KCenRepBufferSize = 255;
 //
 // Attributes commonly used for all items.
--- a/contentstorage/srvsrc/casrv.cpp	Tue Mar 23 23:42:03 2010 +0200
+++ b/contentstorage/srvsrc/casrv.cpp	Tue Mar 23 23:55:55 2010 +0200
@@ -28,19 +28,6 @@
 // ==================== LOCAL FUNCTIONS ====================
 
 /**
- * Stop the Active Scheduler.
- * @param aPtr Not used.
- * @return KErrNone.
- */
-LOCAL_C TInt StopScheduler( TAny* /*aPtr*/)
-    {
-    // Called by the exit timer, after all clients disconnected (plus a small
-    // delay). Stop the scheduler, this will enable he thread exit.
-    CActiveScheduler::Stop();
-    return KErrNone;
-    }
-
-/**
  * Create a server.
  * @param Pointer to created server (if created) returned here.
  * @return Error code.
--- a/homescreensrv_plat/contentstorage_api/caicondescription.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/homescreensrv_plat/contentstorage_api/caicondescription.h	Tue Mar 23 23:55:55 2010 +0200
@@ -42,16 +42,11 @@
     QString filename() const;
     void setFilename(const QString &filename);
 
-    int bitmapId() const;
-    void setBitmapId(int id);
+    QString skinId() const;
+    void setSkinId(const QString &skinId);
 
-    int maskId() const;
-    void setMaskId(int id);
-
-    int skinMajorId() const;
-    void setSkinMajorId(int id);
-    int skinMinorId() const;
-    void setSkinMinorId(int id);
+    QString applicationId() const;
+    void setApplicationId(const QString &applicationId);
 
 private:
 
--- a/homescreensrv_plat/contentstorage_api/caquery.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/homescreensrv_plat/contentstorage_api/caquery.h	Tue Mar 23 23:55:55 2010 +0200
@@ -58,6 +58,11 @@
     unsigned int count() const;
     void setCount(unsigned int count);
 
+    QMap<QString, QString> attributes() const;
+    QString attribute(const QString &name) const;
+    void setAttribute(const QString &name, const QString &value);
+    void removeAttribute(const QString &name);
+    
     void clear();
 
 private:
--- a/homescreensrv_plat/homescreen_information_api/inc/homescreendomainpskeys.h	Tue Mar 23 23:42:03 2010 +0200
+++ b/homescreensrv_plat/homescreen_information_api/inc/homescreendomainpskeys.h	Tue Mar 23 23:55:55 2010 +0200
@@ -19,23 +19,17 @@
 #define HOMESCREEN_DOMAIN_PS_KEYS_H
 
 /**
- * P&S UID for all Home Screen state information keys provided by this API.
- */
-const QUuid KPSUidHsState("0x20022F75");
-
-/**
  * P&S Key path for all Home Screen state information keys provided by this API.
  */
-const QString HsStatePSKeyPath = "/homescreeninformation";
+const char HsStatePSKeyPath[] = "/homescreen";
 
 /**
  * P&S Key sub path to represent the state of the Home Screen. This property is updated when
- * Home screen state is changed. Valid values are defined by the enum EPSHsState
- * and range from 0 to 1.
+ * Home screen state is changed. Valid values are defined by the enum EPSHsState.
  *
  * @see EPSHsState
  */
-const QString HsStatePSKeySubPath = "resources/homescreen/state";
+const char HsStatePSKeySubPath[] = "state";
 
 /**
  * Home screen state.
@@ -56,4 +50,4 @@
      EHomeScreenIdleState   = 2
      };
 
-#endif //HOMESCREEN_DOMAIN_PS_KEYS_H
\ No newline at end of file
+#endif //HOMESCREEN_DOMAIN_PS_KEYS_H
--- a/homescreensrv_plat/homescreen_information_api/inc/homescreeninformation.qcrml	Tue Mar 23 23:42:03 2010 +0200
+++ b/homescreensrv_plat/homescreen_information_api/inc/homescreeninformation.qcrml	Tue Mar 23 23:55:55 2010 +0200
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<repository target="RProperty" uidValue="0x20022F75">
-    <key int="0x1" ref="resources/homescreen/state">
+<repository target="RProperty" uidValue="0x20022F35">
+    <key int="0x1" ref="/homescreen/state">
     </key>
 </repository>