Revision: 201013 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 14 Apr 2010 16:16:44 +0300
branchRCL_3
changeset 15 a0713522ab97
parent 14 15e4dd19031c
child 16 b276298d5729
Revision: 201013 Kit: 201015
contentcontrolsrv/ccsrv/inc/ccsrv.h
contentcontrolsrv/ccsrv/src/ccsrv.cpp
contentcontrolsrv/hsccclient/hsccproviderclient/src/hsccproviderclient.cpp
contentcontrolsrv/hscontentinfo/bwins/hscontentinfo.def
contentcontrolsrv/hscontentinfo/eabi/hscontentinfo.def
contentcontrolsrv/hscontentinfo/src/hscontentinfo.cpp
contentpublishingsrv/contentpublishingserver/cpserver/src/cpactiondatacache.cpp
contentpublishingsrv/contentpublishingserver/cpserver/src/cpserverdatamanager.cpp
contentpublishingsrv/contentpublishingserver/cpserver/src/cpserversession.cpp
homescreenpluginsrv/hspsmanager/inc/hspsinstallationhandler.h
homescreenpluginsrv/hspsmanager/inc/hspsrominstaller.h
homescreenpluginsrv/hspsmanager/inc/hspsserverutil.h
homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp
homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp
homescreenpluginsrv/hspsmanager/src/hspsrominstaller.cpp
homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp
homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp
homescreensrv_plat/ai_content_model_api/group/bld.inf
homescreensrv_plat/ai_content_model_api/inc/aieventhandlerextension.h
homescreensrv_plat/ai_content_model_api/inc/aipropertyextension.h
homescreensrv_plat/ai_content_model_api/inc/aipropertyextension.inl
homescreensrv_plat/ai_plugin_information_api/group/bld.inf
homescreensrv_plat/ai_plugin_information_api/inc/activeidle2domainpskeys.h
homescreensrv_plat/ai_plugin_information_api/inc/activeidle2internalpskeys.h
homescreensrv_plat/ai_plugin_management_api/group/bld.inf
homescreensrv_plat/ai_plugin_management_api/inc/aicontentpublisher.h
homescreensrv_plat/ai_plugin_management_api/inc/aicontentpublisheruid.hrh
homescreensrv_plat/ai_utilities_api/group/bld.inf
homescreensrv_plat/ai_utilities_api/inc/aisecondarydisplayapi.h
homescreensrv_plat/hs_content_control_api/inc/hscontentinfo.h
homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/group/ahplugins.mmp
homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/src/ahpapplauncher.cpp
idlefw/inc/framework/aicpsexecuteparam.h
idlefw/inc/framework/aifw.h
idlefw/inc/framework/aistatemanager.h
idlefw/inc/framework/aiuicontrollermanager.h
idlefw/loc/aifw.loc
idlefw/plugins/devicestatus/src/aioperatornamepublisher.cpp
idlefw/plugins/mcsplugin/help/data/xhtml.zip
idlefw/plugins/sapidataplugin/inc/sapidata.h
idlefw/plugins/sapidataplugin/inc/sapidatapluginconst.h
idlefw/plugins/sapidataplugin/src/sapidata.cpp
idlefw/plugins/sapidataplugin/src/sapidataobserver.cpp
idlefw/plugins/sapidataplugin/src/sapidataplugin.cpp
idlefw/plugins/wrtdataplugin/inc/wrtdata.h
idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h
idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h
idlefw/plugins/wrtdataplugin/inc/wrtdatapluginconst.h
idlefw/plugins/wrtdataplugin/src/wrtdata.cpp
idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp
idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp
idlefw/src/framework/aicpscommandbuffer.cpp
idlefw/src/framework/aicpsexecuteparam.cpp
idlefw/src/framework/aifw.cpp
idlefw/src/framework/aipluginfactory.cpp
idlefw/src/framework/aistatemanager.cpp
idlefw/src/framework/homescreen.rss
idlefw/src/idleint/aiidleappregister.cpp
--- a/contentcontrolsrv/ccsrv/inc/ccsrv.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentcontrolsrv/ccsrv/inc/ccsrv.h	Wed Apr 14 16:16:44 2010 +0300
@@ -156,6 +156,16 @@
         };
     RArray<TCcProvider> iProviders;
     
+    /**
+     * Observer list
+     */
+    struct TCcObserver
+        {
+        TUint32 iProviderId;
+        TUint32 iObserver;
+        };
+    RArray<TCcObserver> iObservers;
+    
     };
 
 
--- a/contentcontrolsrv/ccsrv/src/ccsrv.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentcontrolsrv/ccsrv/src/ccsrv.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -138,6 +138,7 @@
     {
     iSessions.Close();
     iProviders.Close();
+    iObservers.Close();
     }
 
 // -----------------------------------------------------------------------------
@@ -185,6 +186,37 @@
 //
 void CCcSrv::DropSession( CCcSrvSession* aSession )
     {
+    // Remove possible provider
+    for ( TUint32 i = 0; i < iProviders.Count(); i++ )
+        {
+        if ( iProviders[ i ].iSession->Id() == aSession->Id() )
+            {
+            iProviders.Remove( i );
+            break;
+            }
+        }
+    // Unregister possible observations and remove observer
+    for ( TUint32 i = 0; i < iObservers.Count(); )
+        {
+        if ( iObservers[ i ].iObserver == aSession->Id() )
+            {
+            for ( TUint32 j = 0; j < iProviders.Count(); j++ )
+                {
+                if ( iObservers[ i ].iProviderId == iProviders[ j ].iId )
+                    {
+                    TRAP_IGNORE( iProviders[ j ].iSession->
+                        UnregisterObserverSessionL( aSession->Id() ) );
+                    }
+                }
+            iObservers.Remove( i );
+            }
+        else
+            {
+            // Get next observer
+            i++;
+            }
+        }
+    // Remove session
     for ( TUint32 i = 0; i < iSessions.Count(); i++ )
         {
         if ( iSessions[ i ]->Id() == aSession->Id() )
@@ -193,22 +225,7 @@
             break;
             }
         }
-    // Unregister possible observations
-    for ( TUint32 i = 0; i < iProviders.Count(); i++ )
-        {
-        TRAP_IGNORE( iProviders[ i ].iSession->
-            UnregisterObserverSessionL( aSession->Id() ) );
-        }
     
-    // Remove possible provider
-    for ( TUint32 i = 0; i < iProviders.Count(); i++ )
-        {
-        if ( iProviders[ i ].iId == aSession->Id() )
-            {
-            iProviders.Remove( i );
-            break;
-            }
-        }
     if ( iSessions.Count() == 0 )
         {
         // Last session dropped -> stop server
@@ -236,6 +253,15 @@
     provider.iSession = aSession;
     iProviders.Append( provider );
     
+    // Register possible active observers
+    for ( TUint32 i = 0; i < iObservers.Count(); i++ )
+        {
+        if ( iObservers[ i ].iProviderId == aProvider )
+            {
+            provider.iSession->RegisterObserverSessionL( iObservers[ i ].iObserver );
+            }
+        }
+    
     }
 
 // -----------------------------------------------------------------------------
@@ -246,19 +272,18 @@
     TUint32 aProvider,
     CCcSrvSession* aSession )
     {
-    TBool found( EFalse );
-    for ( TUint32 i = 0; i < iProviders.Count() && !found; i++ )
+    for ( TUint32 i = 0; i < iProviders.Count(); i++ )
         {
         if ( iProviders[ i ].iId == aProvider )
             {
-            iProviders[ i ].iSession->RegisterObserverSessionL( aSession->Id() );   
-            found = ETrue;
+            iProviders[ i ].iSession->RegisterObserverSessionL( aSession->Id() );
+            break;
             }
         }
-    if ( !found )
-        {
-        User::Leave( KErrNotFound );
-        }
+    CCcSrv::TCcObserver observer;
+    observer.iProviderId = aProvider;
+    observer.iObserver = aSession->Id();
+    iObservers.Append( observer );
     }
 
 // -----------------------------------------------------------------------------
--- a/contentcontrolsrv/hsccclient/hsccproviderclient/src/hsccproviderclient.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentcontrolsrv/hsccclient/hsccproviderclient/src/hsccproviderclient.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -275,12 +275,11 @@
 // -----------------------------------------------------------------------------
 //
 void CHsCcProviderClient::HandleRegisterObserverNtfL(
-    TUint32 /* aSender */,
+    TUint32 aSender,
     TUint32 /* aReceiver */,
     CCcSrvMsg& /* aMessage */ )
     {
-    TUint32 observer = iPckgSender();
-    iObservers.AppendL( observer );
+    iObservers.AppendL( aSender );
     }
 
 // -----------------------------------------------------------------------------
@@ -288,14 +287,13 @@
 // -----------------------------------------------------------------------------
 //
 void CHsCcProviderClient::HandleUnregisterObserverNtfL(
-    TUint32 /* aSender */,
+    TUint32 aSender,
     TUint32 /* aReceiver */,
     CCcSrvMsg& /* aMessage */ )
     {
-    TUint32 observer = iPckgSender();
     for ( TInt i = 0; i < iObservers.Count(); i++ )
         {
-        if ( iObservers[ i ] == observer )
+        if ( iObservers[ i ] == aSender )
             {
             iObservers.Remove( i );
             break;
--- a/contentcontrolsrv/hscontentinfo/bwins/hscontentinfo.def	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentcontrolsrv/hscontentinfo/bwins/hscontentinfo.def	Wed Apr 14 16:16:44 2010 +0300
@@ -14,33 +14,35 @@
 	?SetNameL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 13 NONAME ; void CHsContentInfo::SetNameL(class TDesC16 const &)
 	?InternalizeL@CHsContentInfoArray@@QAEXAAVRReadStream@@@Z @ 14 NONAME ; void CHsContentInfoArray::InternalizeL(class RReadStream &)
 	?Size@CHsContentInfoArray@@QAEHXZ @ 15 NONAME ; int CHsContentInfoArray::Size(void)
-	?PublisherId@CHsContentInfo@@QBEABVTDesC16@@XZ @ 16 NONAME ; class TDesC16 const & CHsContentInfo::PublisherId(void) const
-	?SetInstallationTime@CHsContentInfo@@QAEXAAVTTime@@@Z @ 17 NONAME ; void CHsContentInfo::SetInstallationTime(class TTime &)
-	?SetIsWrt@CHsContentInfo@@QAEXH@Z @ 18 NONAME ; void CHsContentInfo::SetIsWrt(int)
-	?SetPublisherUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 19 NONAME ; void CHsContentInfo::SetPublisherUidL(class TDesC8 const &)
-	?NewL@CHsContentInfoArray@@SAPAV1@XZ @ 20 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(void)
-	?SetNameL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 21 NONAME ; void CHsContentInfo::SetNameL(class TDesC8 const &)
-	?Name@CHsContentInfo@@QBEABVTDesC16@@XZ @ 22 NONAME ; class TDesC16 const & CHsContentInfo::Name(void) const
-	?Type@CHsContentInfo@@QBEABVTDesC8@@XZ @ 23 NONAME ; class TDesC8 const & CHsContentInfo::Type(void) const
-	?NewLC@CHsContentInfo@@SAPAV1@XZ @ 24 NONAME ; class CHsContentInfo * CHsContentInfo::NewLC(void)
-	?InstallationTime@CHsContentInfo@@QBE?AVTTime@@XZ @ 25 NONAME ; class TTime CHsContentInfo::InstallationTime(void) const
-	?NewL@CHsContentInfo@@SAPAV1@AAVRReadStream@@@Z @ 26 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(class RReadStream &)
-	?CloneL@CHsContentInfo@@QAEPAV1@XZ @ 27 NONAME ; class CHsContentInfo * CHsContentInfo::CloneL(void)
-	?SetCanBeAdded@CHsContentInfo@@QAEXH@Z @ 28 NONAME ; void CHsContentInfo::SetCanBeAdded(int)
-	?ExternalizeL@CHsContentInfoArray@@QAEXAAVRWriteStream@@@Z @ 29 NONAME ; void CHsContentInfoArray::ExternalizeL(class RWriteStream &)
-	?SetUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 30 NONAME ; void CHsContentInfo::SetUidL(class TDesC8 const &)
-	?MaxWidgets@CHsContentInfo@@QBEHXZ @ 31 NONAME ; int CHsContentInfo::MaxWidgets(void) const
-	?Uid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 32 NONAME ; class TDesC8 const & CHsContentInfo::Uid(void) const
-	?MarshalL@CHsContentInfoArray@@QAEPAVHBufC8@@XZ @ 33 NONAME ; class HBufC8 * CHsContentInfoArray::MarshalL(void)
-	?SetPublisherIdL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 34 NONAME ; void CHsContentInfo::SetPublisherIdL(class TDesC16 const &)
-	?InternalizeL@CHsContentInfo@@QAEXAAVRReadStream@@@Z @ 35 NONAME ; void CHsContentInfo::InternalizeL(class RReadStream &)
-	?CanBeRemoved@CHsContentInfo@@QBEHXZ @ 36 NONAME ; int CHsContentInfo::CanBeRemoved(void) const
-	?SetCanBeRemoved@CHsContentInfo@@QAEXH@Z @ 37 NONAME ; void CHsContentInfo::SetCanBeRemoved(int)
-	?SetIconPathL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 38 NONAME ; void CHsContentInfo::SetIconPathL(class TDesC16 const &)
-	?Description@CHsContentInfo@@QBEABVTDesC16@@XZ @ 39 NONAME ; class TDesC16 const & CHsContentInfo::Description(void) const
-	?NewL@CHsContentInfo@@SAPAV1@XZ @ 40 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(void)
-	?PublisherUid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 41 NONAME ; class TDesC8 const & CHsContentInfo::PublisherUid(void) const
-	?NameAs8BitLC@CHsContentInfo@@QBEPAVHBufC8@@XZ @ 42 NONAME ; class HBufC8 * CHsContentInfo::NameAs8BitLC(void) const
-	?PluginId@CHsContentInfo@@QBEABVTDesC8@@XZ @ 43 NONAME ; class TDesC8 const & CHsContentInfo::PluginId(void) const
-	?NewL@CHsContentInfoArray@@SAPAV1@AAVRReadStream@@@Z @ 44 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(class RReadStream &)
+	?SetIsFull@CHsContentInfo@@QAEXH@Z @ 16 NONAME ; void CHsContentInfo::SetIsFull(int)
+	?PublisherId@CHsContentInfo@@QBEABVTDesC16@@XZ @ 17 NONAME ; class TDesC16 const & CHsContentInfo::PublisherId(void) const
+	?IsFull@CHsContentInfo@@QBEHXZ @ 18 NONAME ; int CHsContentInfo::IsFull(void) const
+	?SetInstallationTime@CHsContentInfo@@QAEXAAVTTime@@@Z @ 19 NONAME ; void CHsContentInfo::SetInstallationTime(class TTime &)
+	?SetIsWrt@CHsContentInfo@@QAEXH@Z @ 20 NONAME ; void CHsContentInfo::SetIsWrt(int)
+	?SetPublisherUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 21 NONAME ; void CHsContentInfo::SetPublisherUidL(class TDesC8 const &)
+	?NewL@CHsContentInfoArray@@SAPAV1@XZ @ 22 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(void)
+	?SetNameL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 23 NONAME ; void CHsContentInfo::SetNameL(class TDesC8 const &)
+	?Name@CHsContentInfo@@QBEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CHsContentInfo::Name(void) const
+	?Type@CHsContentInfo@@QBEABVTDesC8@@XZ @ 25 NONAME ; class TDesC8 const & CHsContentInfo::Type(void) const
+	?NewLC@CHsContentInfo@@SAPAV1@XZ @ 26 NONAME ; class CHsContentInfo * CHsContentInfo::NewLC(void)
+	?InstallationTime@CHsContentInfo@@QBE?AVTTime@@XZ @ 27 NONAME ; class TTime CHsContentInfo::InstallationTime(void) const
+	?NewL@CHsContentInfo@@SAPAV1@AAVRReadStream@@@Z @ 28 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(class RReadStream &)
+	?CloneL@CHsContentInfo@@QAEPAV1@XZ @ 29 NONAME ; class CHsContentInfo * CHsContentInfo::CloneL(void)
+	?SetCanBeAdded@CHsContentInfo@@QAEXH@Z @ 30 NONAME ; void CHsContentInfo::SetCanBeAdded(int)
+	?ExternalizeL@CHsContentInfoArray@@QAEXAAVRWriteStream@@@Z @ 31 NONAME ; void CHsContentInfoArray::ExternalizeL(class RWriteStream &)
+	?SetUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 32 NONAME ; void CHsContentInfo::SetUidL(class TDesC8 const &)
+	?MaxWidgets@CHsContentInfo@@QBEHXZ @ 33 NONAME ; int CHsContentInfo::MaxWidgets(void) const
+	?Uid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 34 NONAME ; class TDesC8 const & CHsContentInfo::Uid(void) const
+	?MarshalL@CHsContentInfoArray@@QAEPAVHBufC8@@XZ @ 35 NONAME ; class HBufC8 * CHsContentInfoArray::MarshalL(void)
+	?SetPublisherIdL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 36 NONAME ; void CHsContentInfo::SetPublisherIdL(class TDesC16 const &)
+	?InternalizeL@CHsContentInfo@@QAEXAAVRReadStream@@@Z @ 37 NONAME ; void CHsContentInfo::InternalizeL(class RReadStream &)
+	?CanBeRemoved@CHsContentInfo@@QBEHXZ @ 38 NONAME ; int CHsContentInfo::CanBeRemoved(void) const
+	?SetCanBeRemoved@CHsContentInfo@@QAEXH@Z @ 39 NONAME ; void CHsContentInfo::SetCanBeRemoved(int)
+	?SetIconPathL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 40 NONAME ; void CHsContentInfo::SetIconPathL(class TDesC16 const &)
+	?Description@CHsContentInfo@@QBEABVTDesC16@@XZ @ 41 NONAME ; class TDesC16 const & CHsContentInfo::Description(void) const
+	?NewL@CHsContentInfo@@SAPAV1@XZ @ 42 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(void)
+	?PublisherUid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 43 NONAME ; class TDesC8 const & CHsContentInfo::PublisherUid(void) const
+	?NameAs8BitLC@CHsContentInfo@@QBEPAVHBufC8@@XZ @ 44 NONAME ; class HBufC8 * CHsContentInfo::NameAs8BitLC(void) const
+	?PluginId@CHsContentInfo@@QBEABVTDesC8@@XZ @ 45 NONAME ; class TDesC8 const & CHsContentInfo::PluginId(void) const
+	?NewL@CHsContentInfoArray@@SAPAV1@AAVRReadStream@@@Z @ 46 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(class RReadStream &)
 
--- a/contentcontrolsrv/hscontentinfo/eabi/hscontentinfo.def	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentcontrolsrv/hscontentinfo/eabi/hscontentinfo.def	Wed Apr 14 16:16:44 2010 +0300
@@ -22,27 +22,29 @@
 	_ZN14CHsContentInfo8SetNameLERK6TDesC8 @ 21 NONAME
 	_ZN14CHsContentInfo8SetNameLERK7TDesC16 @ 22 NONAME
 	_ZN14CHsContentInfo8SetTypeLERK6TDesC8 @ 23 NONAME
-	_ZN19CHsContentInfoArray12ExternalizeLER12RWriteStream @ 24 NONAME
-	_ZN19CHsContentInfoArray12InternalizeLER11RReadStream @ 25 NONAME
-	_ZN19CHsContentInfoArray4NewLER11RReadStream @ 26 NONAME
-	_ZN19CHsContentInfoArray4NewLEv @ 27 NONAME
-	_ZN19CHsContentInfoArray4SizeEv @ 28 NONAME
-	_ZN19CHsContentInfoArray5ArrayEv @ 29 NONAME
-	_ZN19CHsContentInfoArray8MarshalLEv @ 30 NONAME
-	_ZNK14CHsContentInfo10CanBeAddedEv @ 31 NONAME
-	_ZNK14CHsContentInfo10MaxWidgetsEv @ 32 NONAME
-	_ZNK14CHsContentInfo11DescriptionEv @ 33 NONAME
-	_ZNK14CHsContentInfo11PublisherIdEv @ 34 NONAME
-	_ZNK14CHsContentInfo12CanBeRemovedEv @ 35 NONAME
-	_ZNK14CHsContentInfo12NameAs8BitLCEv @ 36 NONAME
-	_ZNK14CHsContentInfo12PublisherUidEv @ 37 NONAME
-	_ZNK14CHsContentInfo16InstallationTimeEv @ 38 NONAME
-	_ZNK14CHsContentInfo3UidEv @ 39 NONAME
-	_ZNK14CHsContentInfo4NameEv @ 40 NONAME
-	_ZNK14CHsContentInfo4TypeEv @ 41 NONAME
-	_ZNK14CHsContentInfo5IsWrtEv @ 42 NONAME
-	_ZNK14CHsContentInfo8IconPathEv @ 43 NONAME
-	_ZNK14CHsContentInfo8PluginIdEv @ 44 NONAME
-	_ZTI19CHsContentInfoArray @ 45 NONAME
-	_ZTV19CHsContentInfoArray @ 46 NONAME
+	_ZN14CHsContentInfo9SetIsFullEi @ 24 NONAME
+	_ZN19CHsContentInfoArray12ExternalizeLER12RWriteStream @ 25 NONAME
+	_ZN19CHsContentInfoArray12InternalizeLER11RReadStream @ 26 NONAME
+	_ZN19CHsContentInfoArray4NewLER11RReadStream @ 27 NONAME
+	_ZN19CHsContentInfoArray4NewLEv @ 28 NONAME
+	_ZN19CHsContentInfoArray4SizeEv @ 29 NONAME
+	_ZN19CHsContentInfoArray5ArrayEv @ 30 NONAME
+	_ZN19CHsContentInfoArray8MarshalLEv @ 31 NONAME
+	_ZNK14CHsContentInfo10CanBeAddedEv @ 32 NONAME
+	_ZNK14CHsContentInfo10MaxWidgetsEv @ 33 NONAME
+	_ZNK14CHsContentInfo11DescriptionEv @ 34 NONAME
+	_ZNK14CHsContentInfo11PublisherIdEv @ 35 NONAME
+	_ZNK14CHsContentInfo12CanBeRemovedEv @ 36 NONAME
+	_ZNK14CHsContentInfo12NameAs8BitLCEv @ 37 NONAME
+	_ZNK14CHsContentInfo12PublisherUidEv @ 38 NONAME
+	_ZNK14CHsContentInfo16InstallationTimeEv @ 39 NONAME
+	_ZNK14CHsContentInfo3UidEv @ 40 NONAME
+	_ZNK14CHsContentInfo4NameEv @ 41 NONAME
+	_ZNK14CHsContentInfo4TypeEv @ 42 NONAME
+	_ZNK14CHsContentInfo5IsWrtEv @ 43 NONAME
+	_ZNK14CHsContentInfo6IsFullEv @ 44 NONAME
+	_ZNK14CHsContentInfo8IconPathEv @ 45 NONAME
+	_ZNK14CHsContentInfo8PluginIdEv @ 46 NONAME
+	_ZTI19CHsContentInfoArray @ 47 NONAME
+	_ZTV19CHsContentInfoArray @ 48 NONAME
 
--- a/contentcontrolsrv/hscontentinfo/src/hscontentinfo.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentcontrolsrv/hscontentinfo/src/hscontentinfo.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -320,6 +320,9 @@
     
     // externalise iIsWrt
     aStream.WriteInt16L( iIsWrt );
+
+    // externalise iIsFull
+    aStream.WriteInt16L( iIsFull );
 	}
 
 // -----------------------------------------------------------------------
@@ -498,6 +501,9 @@
     
     // internalize iIsWrt
     iIsWrt = aStream.ReadInt16L();
+
+    // internalize iIsFull
+    iIsFull = aStream.ReadInt16L();
     }
 
 // -----------------------------------------------------------------------
@@ -521,6 +527,7 @@
     size = size + sizeof( TUint32 );    // installation time high
     size = size + PublisherUid().Size();// publisher uid
     size = size + sizeof( TInt16 );     // is wrt
+    size = size + sizeof( TInt16 );     // is full
     
     return size;
     }   
@@ -556,6 +563,24 @@
     }
 
 // -----------------------------------------------------------------------
+// CHsContentInfo::IsFull()
+// -----------------------------------------------------------------------
+// 
+EXPORT_C TBool CHsContentInfo::IsFull() const
+    {
+    return iIsFull;
+    }
+
+// -----------------------------------------------------------------------
+// CHsContentInfo::SetIsFull()
+// -----------------------------------------------------------------------
+//   
+EXPORT_C void CHsContentInfo::SetIsFull( TBool aIsFull )    
+    {
+    iIsFull = aIsFull;
+    }
+
+// -----------------------------------------------------------------------
 // CHsContentInfo::IsWrt()
 // -----------------------------------------------------------------------
 // 
--- a/contentpublishingsrv/contentpublishingserver/cpserver/src/cpactiondatacache.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpactiondatacache.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -80,7 +80,10 @@
 //
 CCPActionDataCache::~CCPActionDataCache()
     {
-    iInternalList->Close();
+    if (iInternalList)
+        {
+        iInternalList->Close();
+        }
     }
 
 // ---------------------------------------------------------------------------
--- a/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserverdatamanager.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserverdatamanager.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -491,11 +491,11 @@
 		CLiwDefaultList* aChangeInfoList )
 	{
 	TLiwVariant resultVar = aParam->Value();
+    resultVar.PushL();
 	if ( resultVar.TypeId() == EVariantTypeMap )
         {
         for ( TInt i = 0; i<aActionTriggers->Count(); i++ )
             {
-            resultVar.PushL();
             CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC(); 
         
             CopyVariantL(KId, resultVar.AsMap(), changeInfoMap );
@@ -516,9 +516,9 @@
         
             aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) );
             CleanupStack::PopAndDestroy( changeInfoMap );
-            CleanupStack::PopAndDestroy( &resultVar );
             }
         }
+    CleanupStack::PopAndDestroy( &resultVar );
 	}
 
 
--- a/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserversession.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserversession.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -340,7 +340,7 @@
         cpMaps->AtL(i, mapVariant);
         const CCPLiwMap* map =
                 static_cast<const CCPLiwMap*> (mapVariant.AsMap());
-        ExecuteActionL(map, ETrue, options);
+        TRAP_IGNORE(ExecuteActionL(map, ETrue, options));
         CleanupStack::PopAndDestroy(&mapVariant);
         }
 
--- a/homescreenpluginsrv/hspsmanager/inc/hspsinstallationhandler.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsinstallationhandler.h	Wed Apr 14 16:16:44 2010 +0300
@@ -604,18 +604,20 @@
                 const TDesC& aPath,
                 const TLanguage aLanguage );
         
+        /**
+         * Finds all language specific folders and resources  
+         * under the interface path in ROM or UDA drive.
+         * @since S60 5.0
+         * @path aPath Xuikon path
+         */
         void AddInterfaceResourcesV2L(
                 const TDesC& aPath );
-
-        void AddLocalizedResourcesV2L(
-                const TDesC& aPath,
-                const TLanguage aLanguage );
         
         /**
          * Validates manifest contents and installs files into the Plug-in Repository.
          * @since S60 5.0
          */
-        void ValidateL();
+        void FinalizeParsingL();
         
         /**
          * Validates provided UID value.
--- a/homescreenpluginsrv/hspsmanager/inc/hspsrominstaller.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsrominstaller.h	Wed Apr 14 16:16:44 2010 +0300
@@ -78,9 +78,15 @@
       
     public: // New functions
         
+        
         /**
-         * InstallTheme
-         * Synchronous service for installing configurations from provided manifest files.         
+         * Installs all plugin configurations which can be found from ROM and C drives (UDA).         
+         * @since S60 5.2         
+         */
+        void InstallL();
+        
+        /**
+         * Installs a plugin configuration from the provided manifest file (synchronous).         
          * @since S60 5.0
          * @param aFileName is name of the manifest file to be installed.
          * @return ThspsServiceCompletedMessage error code 
@@ -89,26 +95,16 @@
                 const TDesC& aFileName ); 
         
         /**
-         * ReinstallThemeL.
-         * Synchronous service for re-installing corrupted application configurations  
-         * from an import (imports\app_*.dat file).
+         * Re-installs an application plugin configuration (synchronous).         
          * @since S60 5.0
          * @param aAppUid is UID of an application 
-         * @param aConfigurationUid is UID of a HSPS configuration
+         * @param aConfigurationUid is UID of an application plugin configuration
          * @return ThspsServiceCompletedMessage error code 
          */
         ThspsServiceCompletedMessage ReinstallThemeL(
                 const TInt aAppUid,
                 const TInt aConfigurationUid );
-        
-        /**         
-         * Retrieves manifest files from both Z and C drives located in
-         * \\private\200159C0\install\ paths.
-         * @since S60 5.0
-         */
-        void FindInstallationFilesL(  
-                RPointerArray<HBufC>& aFolders );
-        
+                        
 #ifdef HSPS_LOG_ACTIVE        
         /** 
         * Set log bus.
@@ -161,6 +157,14 @@
         */
         void ConstructL();           
                         
+        /**         
+         * Retrieves manifest files from both Z and C drives located in
+         * \\private\200159C0\install\ paths.
+         * @since S60 5.0
+         */
+        void FindInstallationFilesL(  
+                RPointerArray<HBufC>& aFolders );
+        
         void DoFindInstallationFilesL(  
                 RPointerArray<HBufC>& aFolders,
                 const TDesC& aPath );
--- a/homescreenpluginsrv/hspsmanager/inc/hspsserverutil.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsserverutil.h	Wed Apr 14 16:16:44 2010 +0300
@@ -557,13 +557,29 @@
        * @param aSourcePath  Empty or location of the source file 
        * @param aUpdatedDeclaration Empty or declaration which points to the target location
        */
-	    static void hspsServerUtil::PopulateLogoPathsL(
+	    static void PopulateLogoPathsL(
 	            const TDesC& aLogoDeclaration,
                 const TUint aAppUid,
                 RBuf& aTargetPath,
                 RBuf& aSourcePath,
                 RBuf& aUpdatedDeclaration );
 
+	    /**
+	     * Finds ecplised files from the provided path in given drive order.
+	     * @since S60 5.2
+	     * @param aFs is a reference to open file server session handle
+	     * @param aDriveArray An array of drives in search order
+	     * @param aPath Relative path to be found
+	     * @param aFolders Search results or empty
+	     * @param aRecursive True if files should be found from any sudirectories 
+	     */	    	    
+	    static void FindFilesRecursivelyL(
+                RFs& aFs,
+                const RArray<TInt>& aDriveArray, 
+                const TDesC& aPath,        
+                RPointerArray<HBufC>& aFolders,
+                TBool aRecursive = EFalse );
+	    
 	private:
         /**
          * Internal method. Do not call directly!
--- a/homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -58,7 +58,7 @@
 _LIT(KPathDelim, "\\");
 _LIT(KPrivateInstall, "\\private\\200159c0\\install\\");
 _LIT(KHsps, "\\hsps\\" );
-_LIT(KXuikon, "xuikon\\" );
+_LIT(KXuikon, "xuikon" );
 
 const TInt KMaxMediaTypeLength = 100;
 
@@ -462,7 +462,7 @@
         }                
         
     // Check the parsed input        
-    ValidateL();                    
+    FinalizeParsingL();                    
     }
 
 // -----------------------------------------------------------------------------
@@ -482,7 +482,8 @@
         {
         pathParser.PopDir(); // pop "hsps" folder 
         path.Copy( pathParser.FullName() );
-        path.Append( KXuikon );        
+        path.Append( KXuikon );
+        path.Append( KPathDelim );
         }
     return path;
     }
@@ -491,7 +492,7 @@
 // ChspsInstallationHandler::ValidateL() 
 // -----------------------------------------------------------------------------
 //
-void ChspsInstallationHandler::ValidateL()
+void ChspsInstallationHandler::FinalizeParsingL()
     {               
     // Check resources
     TFileName interfacePath( GetInterfacePath() );       
@@ -2273,105 +2274,114 @@
     CleanupStack::PopAndDestroy( dtdPath );
     }
 
+// -----------------------------------------------------------------------------
+// ChspsInstallationHandler::AddInterfaceResourcesV2L
+// -----------------------------------------------------------------------------
+//
 void ChspsInstallationHandler::AddInterfaceResourcesV2L(
         const TDesC& aPath )
-    {                      
-    // Find all locale specific subfolders
-    TFindFile fileFinder( iFsSession );
-    _LIT( KFilter, "*" );
-    CDir* fileList( NULL );    
-    fileFinder.FindWildByDir( KFilter, aPath, fileList );
-    if ( fileList )
-        {
-        CleanupStack::PushL( fileList );
-        TFileName localePath;
-        for( TInt i = 0; i < fileList->Count(); i++ )       
+    {                                          
+    RArray<TInt> driveArray;
+    CleanupClosePushL( driveArray );
+    
+    // Set search order for eclipsing, only the ROM and UDA drives should be scanned
+    driveArray.Append( EDriveC );
+    driveArray.Append( EDriveZ );
+        
+    // Find all unique locale entries under the Xuikon folders in either drive
+    RPointerArray<HBufC> locales;    
+    CleanupClosePushL( locales );              
+    hspsServerUtil::FindFilesRecursivelyL(
+            iFsSession,
+            driveArray,
+            aPath,            
+            locales,
+            EFalse );
+        
+    // Find all file entries under the Xuikon folders in either drive
+    RPointerArray<HBufC> folders;    
+    CleanupClosePushL( folders );    
+    hspsServerUtil::FindFilesRecursivelyL(
+            iFsSession,
+            driveArray,
+            aPath,
+            folders,
+            ETrue );
+           
+    // Loop language folders
+    for(TInt localeIndex=0; localeIndex < locales.Count(); localeIndex++ )
+        {                    
+        TParsePtrC localeParser( locales[ localeIndex ]->Des() );
+        TPath localePath = localeParser.Path();
+        
+        TPath tempPath = locales[ localeIndex ]->Des();        
+        if( tempPath.Right( KPathDelim().Length() ).Compare( KPathDelim() ) == 0 )
             {
-            const TEntry& entry = (*fileList)[i];                        
-            if ( entry.IsDir() )
+            tempPath.Delete( tempPath.Length() - KPathDelim().Length(), KPathDelim().Length() );
+            }        
+        TParsePtrC tempParser( tempPath );
+        TFileName localeName = tempParser.Name();                        
+        TInt languageIndex = 0;
+        TLex lex( localeName );
+        if( lex.Val( languageIndex ) != KErrNone )
+            {
+            continue;
+            }
+        if( languageIndex < ELangTest ) 
+            {
+            User::Leave( KErrIllegalInstallation );
+            }
+                
+        // If we found the first language specification          
+        if ( !iDefaultSpecificationSet )
+            {
+            // Assume this is the default language shown when device language is not supported
+            iDefaultSpecification = (TLanguage)languageIndex;
+            iDefaultSpecificationSet = ETrue;
+            }
+                       
+        // Loop file resources which should be found from either drive
+        ChspsResource* resource = NULL;
+        for( TInt resourceIndex=0; resourceIndex < iTempLocalizedResourceList->Count(); resourceIndex++ )
+            {              
+            resource = iTempLocalizedResourceList->At( resourceIndex );              
+            TFileName file;
+            
+            for( TInt folderIndex=0; folderIndex < folders.Count(); folderIndex++ )
                 {
-                TInt languageIndex = 0;
-                TLex lex( entry.iName );
-                TInt error = lex.Val( languageIndex );    
-                                
-                // See enumarations from e32lang.h
-                if( !error && languageIndex >= ELangTest )
-                    {               
-                    // If we found the first language specification          
-                    if ( !iDefaultSpecificationSet )
+                TParsePtrC folderParser( folders[ folderIndex ]->Des() );
+                TPath folderPath = folderParser.Path();
+                TFileName name = folderParser.Name();
+                
+                if( localePath.CompareF( folderPath ) == 0 )                                                    
+                    {
+                    TFileName fixedName = hspsServerUtil::GetFixedOdtName( folderParser.NameAndExt() );
+                    if( fixedName.CompareF( resource->FileName() ) == 0  )
                         {
-                        // Assume this is the default language shown incase 
-                        // there is no locale for the active UI language
-                        iDefaultSpecification = (TLanguage)languageIndex;
-                        iDefaultSpecificationSet = ETrue;
+                        file = folders[ folderIndex ]->Des();                        
+                        break;           
                         }
-                                        
-                    // Setup a path to the subdirectory 
-                    localePath.Copy( aPath );
-                    localePath.Append( entry.iName );
-                    localePath.Append( KPathDelim );
-                    
-                    // Find localized resources 
-                    AddLocalizedResourcesV2L( 
-                        localePath,
-                        (TLanguage)languageIndex );
-                    }                                       
+                    }                                    
                 }
-                        
-            }        
-        CleanupStack::PopAndDestroy( fileList );
-        fileList = NULL;
-        }        
-    
-    // If no DTD files were found 
-    if ( iDefaultSpecification != ELangTest || !iDefaultSpecificationSet )
-        {        
-        // Halt installation, test language was not found
-        User::Leave( KErrNotFound );
-        }
-    }    
-    
-void ChspsInstallationHandler::AddLocalizedResourcesV2L(
-        const TDesC& aPath,
-        const TLanguage aLanguage )
-    {
-    TFindFile fileFinder( iFsSession );
-    _LIT( KFilter, "*" );
-    CDir* fileList( NULL );    
-    fileFinder.FindWildByDir( KFilter, aPath, fileList );
-    if ( fileList )
-        {
-        CleanupStack::PushL( fileList );
-        
-        TFileName localePath;
-        ChspsResource* resource = NULL;
-        for( TInt i = 0; i < fileList->Count(); i++ )       
-            {
-            const TEntry& entry = (*fileList)[i];                        
-            if ( !entry.IsDir() )
-                {    
-                TParsePtrC parserPtr( entry.iName );
-                TFileName modName = hspsServerUtil::GetFixedOdtName( entry.iName );
-                
-                TBool addingOk = EFalse;                
-                for( TInt resourceIndex=0; resourceIndex < iTempLocalizedResourceList->Count(); resourceIndex++ )
-                    {                                                                                                                           
-                    resource = iTempLocalizedResourceList->At( resourceIndex );
-                    if( modName.CompareF( resource->FileName() ) == 0 )
+            
+            if( file.Length() )
+                {                
+                TBool duplicate = EFalse;
+                for( TInt i=0; i< iResourceList->Count(); i++ )
+                    {
+                    ChspsResource* r = iResourceList->At(i);
+                    if( r->Language() == languageIndex 
+                            && r->FileName().CompareF( file ) == 0 )
                         {
-                        addingOk = ETrue;     
+                        duplicate = ETrue;
                         break;
                         }
                     }
-                if ( addingOk )
-                    {                                
-                    HBufC* resourcePath = HBufC::NewLC( aPath.Length() + entry.iName.Length() );
-                    resourcePath->Des().Copy( aPath );
-                    resourcePath->Des().Append( entry.iName );
-                                
+                if( !duplicate )
+                    {
+                    
                     TPtrC8 mimeType;
-                    TPtrC8 tag;
-                                                                        
+                    TPtrC8 tag;                                                               
                     HBufC8* tagBuf8 = NULL;                    
                     if ( resource->Tags().Length() )
                         {
@@ -2379,12 +2389,12 @@
                         tagBuf8->Des().Copy( resource->Tags() );
                         tag.Set( tagBuf8->Des() );
                         }
-                    
+                                
                     // Add localized files into the resource array                    
                     AddResourceL(
                         *iResourceList,
-                        *resourcePath,
-                        aLanguage,
+                        file,
+                        (TLanguage)languageIndex,
                         EResourceOther,
                         mimeType,
                         tag );
@@ -2393,16 +2403,24 @@
                         {
                         CleanupStack::PopAndDestroy( tagBuf8 );
                         }
-                    CleanupStack::PopAndDestroy( resourcePath );
-                    }                                
+                    
+                    }
                 }
             }
-        
-        CleanupStack::PopAndDestroy( fileList );
-        fileList = NULL;
-        }
-    }
 
+        }     
+            
+    folders.ResetAndDestroy();
+    locales.ResetAndDestroy();
+    CleanupStack::PopAndDestroy( 3, &driveArray );  // driveArray, locales, folders, 
+     
+    if ( iDefaultSpecification != ELangTest || !iDefaultSpecificationSet )
+        {        
+        // Halt installation, test language was not found
+        User::Leave( KErrNotFound );
+        }    
+    }    
+    
 // -----------------------------------------------------------------------------
 // Finds locale specific subdirectories and resources and appends those
 // into the resource array 
--- a/homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -1042,7 +1042,7 @@
                     CleanupStack::PushL( pluginIter );                                
                     ChspsDomNode* pluginNode =  pluginIter->First();                              
                     TBool steppingtoConfNode(EFalse);                     
-                    while(pluginNode && !steppingtoConfNode)
+                    while( pluginNode && !steppingtoConfNode )
                         {
                         const TDesC8& pluginNodeName = pluginNode->Name();
                          
@@ -1057,10 +1057,18 @@
                         }
                     CleanupStack::PopAndDestroy( pluginIter );
                     
-                    // Copy the plugin configuration to the main document.
-                    ChspsDomNode* rootCopy = pluginNode->CloneL( node->StringPool());
-                    rootCopy->SetParent( node );
-                    node->AddChildL( rootCopy );
+                    if ( pluginNode )
+                        {
+                        // Copy the plugin configuration to the main document.
+                        ChspsDomNode* rootCopy = pluginNode->CloneL( node->StringPool());
+                        rootCopy->SetParent( node );
+                        node->AddChildL( rootCopy );
+                        }
+                    else
+                        {
+                        // configuration is corrupted
+                        User::Leave( KErrCorrupt );
+                        }
                     }
                
                 CleanupStack::PopAndDestroy( pluginOdt );
--- a/homescreenpluginsrv/hspsmanager/src/hspsrominstaller.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsrominstaller.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -105,6 +105,43 @@
     }
 
 // -----------------------------------------------------------------------------
+// ChspsRomInstaller::InstallL()
+// -----------------------------------------------------------------------------
+//
+void ChspsRomInstaller::InstallL()
+    {
+    RPointerArray<HBufC> pluginFolders;
+    CleanupClosePushL( pluginFolders );             
+            
+    // Find UDA and ROM widgets to be installed     
+    FindInstallationFilesL( pluginFolders );
+            
+    // Install the manifest files    
+    for( TInt index=0; index < pluginFolders.Count(); index++ )
+        {         
+        TPtrC namePtr( pluginFolders[index]->Des() );                               
+                
+        // Synchronous method
+        ThspsServiceCompletedMessage ret = EhspsInstallThemeFailed;
+        TRAP_IGNORE( ret = InstallThemeL( namePtr  ) );
+        if ( ret != EhspsInstallThemeSuccess )
+            {
+//            User::Leave( KErrAbort );
+            }
+        }
+    
+    if ( pluginFolders.Count() == 0 )
+        {
+        // Mandatory plugins were missing 
+        User::Leave( KErrCorrupt );
+        }
+        
+    pluginFolders.ResetAndDestroy();
+    CleanupStack::PopAndDestroy( 1, &pluginFolders );
+    }
+
+
+// -----------------------------------------------------------------------------
 // ChspsRomInstaller::FindInstallationFilesL()
 // -----------------------------------------------------------------------------
 //
@@ -160,6 +197,11 @@
                 manifest.Append( KBackslash );
                 manifest.Append( KManifest );
                 
+                if( !BaflUtils::FileExists( iFsSession, manifest ) )
+                    {
+                    continue;
+                    }
+                
                 // Check for duplicates
                 TBool isShadowed = EFalse;
                 TParsePtrC manifestPtr( manifest );                
@@ -254,7 +296,9 @@
     // Start installation by reading the manifest file
     iRet = iInstallationHandler->hspsInstallTheme( aFileName, iHeaderData );    
     if ( iRet == EhspsInstallThemeSuccess && !IsActive() )
-        {                
+        {            
+        iRet = EhspsInstallThemeFailed;
+        
         // Continue with remaining installation phases
         SetActive();
         iInstallationHandler->hspsInstallNextPhaseL( iHeaderData, iStatus );        
@@ -332,6 +376,7 @@
 //
 TInt ChspsRomInstaller::RunError( TInt /*aError*/ )
     {
+    iRet = EhspsInstallThemeFailed;
     // Called when error occurred in asynchronous request
     CActiveScheduler::Stop();    
     return KErrNone;
--- a/homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -1944,6 +1944,76 @@
     }     
 
 // -----------------------------------------------------------------------------
+// hspsServerUtil::FindFilesRecursivelyL
+// -----------------------------------------------------------------------------
+void hspsServerUtil::FindFilesRecursivelyL(
+        RFs& aFs,
+        const RArray<TInt>& aDriveArray, 
+        const TDesC& aPath,        
+        RPointerArray<HBufC>& aFolders,
+        TBool aRecursive )
+    {
+    TParsePtrC parser( aPath );
+  
+    TFindFile fileFinder( aFs );    
+    fileFinder.SetFindMask( KDriveAttExclude|KDriveAttRemovable|KDriveAttRemote|KDriveAttSubsted );
+    
+    _LIT(KMaskFile, "*");          
+    for( TInt driveIndex=0; driveIndex < aDriveArray.Count(); driveIndex++ )
+        {
+        TChar driveChar;
+        User::LeaveIfError( RFs::DriveToChar( aDriveArray[driveIndex], driveChar ) );
+        TBuf16<2> driveBuf(2);
+        driveBuf[0] = TUint( driveChar );
+        driveBuf[1] = TUint( TChar(':') );
+                        
+        TPath path;        
+        path.Copy( driveBuf );        
+        path.Append( parser.Path() );
+                        
+        CDir* dirList( NULL );             
+        fileFinder.FindWildByDir( KMaskFile, path, dirList );
+        if ( dirList )
+          {
+          CleanupStack::PushL( dirList );
+                       
+          const TInt count = dirList->Count();          
+          for( TInt entryIndex = 0; entryIndex < count; entryIndex++ )
+              {
+              const TEntry& entry = (*dirList)[ entryIndex ];                        
+                                                         
+              TFileName file( path );              
+              file.Append( entry.iName );
+              if( entry.IsDir() )
+                  {
+                  file.Append( KDoubleBackSlash );
+                  }
+                                
+              if( !BaflUtils::FileExists( aFs, file ) )
+                  {
+                  continue;
+                  }
+              if( entry.IsDir() && aRecursive )
+                  {                                
+                  FindFilesRecursivelyL( aFs, aDriveArray, file, aFolders );                  
+                  }
+              else
+                  {                                             
+                  HBufC* nameBuf = file.AllocLC();                
+                  aFolders.AppendL( nameBuf );
+                  CleanupStack::Pop( nameBuf );
+                  }              
+              } 
+          
+          CleanupStack::PopAndDestroy( dirList );
+          dirList = 0;
+          } // dirlist
+    
+        } // driveIndex    
+    }
+
+
+// -----------------------------------------------------------------------------
 // hspsServerUtil::hspsServerUtil
 // -----------------------------------------------------------------------------
 //
--- a/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -2778,44 +2778,8 @@
 	iRomInstaller->SetLogBus( iLogBus );
 #endif
 		
-	RPointerArray<HBufC> pluginFolders;
-    CleanupClosePushL( pluginFolders );				
-	        
-    // Find UDA and ROM widgets to be installed     
-    iRomInstaller->FindInstallationFilesL( pluginFolders );
-            
-	// Install the manifest files    
-    for( TInt index=0; index < pluginFolders.Count(); index++ )
-        {         
-        TPtrC namePtr( pluginFolders[index]->Des() );                               
-#ifdef HSPS_LOG_ACTIVE            
-        iLogBus->LogText( _L( "ChspsThemeServer::InstallWidgetsL(): - installing configuration: %S" ), &namePtr );
-#endif      
-                
-        // Synchronous method
-        ThspsServiceCompletedMessage ret = iRomInstaller->InstallThemeL( namePtr  );
-        if ( ret != EhspsInstallThemeSuccess )
-            {
-#ifdef HSPS_LOG_ACTIVE            
-            iLogBus->LogText( _L( "ChspsThemeServer::InstallWidgetsL(): - installation failed: %S" ), &namePtr );
-#endif                  
-//            User::Leave( KErrAbort );
-            }
-        }
-    
-    if ( pluginFolders.Count() == 0 )
-        {
-#ifdef HSPS_LOG_ACTIVE            
-        iLogBus->LogText( _L( "ChspsThemeServer::InstallWidgetsL(): - mandatory plugins were not found!" ) );
-#endif                                  
-        // Mandatory plugins were missing 
-        User::Leave( KErrCorrupt );
-        }
-        
-    pluginFolders.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( 1, &pluginFolders );
-		
-	// The ROM installer is not needed anymore and therefore it can be released
+	iRomInstaller->InstallL();
+			
 	delete iRomInstaller;
 	iRomInstaller = 0;
 	
--- a/homescreensrv_plat/ai_content_model_api/group/bld.inf	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreensrv_plat/ai_content_model_api/group/bld.inf	Wed Apr 14 16:16:44 2010 +0300
@@ -28,8 +28,3 @@
 ../inc/aicontentobserver.h     MW_LAYER_PLATFORM_EXPORT_PATH(aicontentobserver.h)
 ../inc/aicontentmodel.h     MW_LAYER_PLATFORM_EXPORT_PATH(aicontentmodel.h)
 ../inc/aicontentrequest.h   MW_LAYER_PLATFORM_EXPORT_PATH(aicontentrequest.h)
-
-// Deprecated
-../inc/aipropertyextension.h     MW_LAYER_PLATFORM_EXPORT_PATH(aipropertyextension.h)
-../inc/aipropertyextension.inl     MW_LAYER_PLATFORM_EXPORT_PATH(aipropertyextension.inl)
-../inc/aieventhandlerextension.h     MW_LAYER_PLATFORM_EXPORT_PATH(aieventhandlerextension.h)
--- a/homescreensrv_plat/ai_content_model_api/inc/aieventhandlerextension.h	Wed Mar 31 22:04:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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:  Event handling extension for the CAiContentPublisher interface.
-*
-*/
-
-
-#ifndef M_AIEVENTHANDLEREXTENSION_H
-#define M_AIEVENTHANDLEREXTENSION_H
-
-#include <e32std.h>
-
-/**
- *  Extension of the CAiContentPublisher interface, which allows Active Idle
- *  Framework to notify their plug-ins that they must to handle event.
- *  Plug-ins must provide implementation of interface only if they are
- *  supporting event model (e.g. provides possibility to manipulate engine 
- *  properties via UI).
- *
- *  @since S60 3.2
- */
-class MAiEventHandlerExtension
-    {
-public:
-    /**
-     * Invoked by the framework when plug-in must handle an event.
-     *
-     * @param aEvent - unique identifier of event from plug-in content model.
-     * @param aParam - parameters associated with event. Each UI Definition
-     *        declares events in the format: <event name>(<event params>),
-     *        where <event name> is mapped by the framework to unique
-     *        identifier supplied in aEvent, <event params> are provided to
-     *        plug-in as-is in the descriptor.
-     */
-    virtual void HandleEvent(TInt aEvent, const TDesC& aParam) = 0;
-
-    /**
-    * Invoked by the framework when plug-in must handle an event.
-    *
-    * @param aEventName - name of the event from plug-in content model.
-    * @param aParam - parameters associated with event. Each UI Definition
-    *        declares events in the format: <event name>(<event params>),
-    *        where  <event name> mapping to unique identifier supplied by event 
-    *        is failed by the frame work then the  <event name> and  
-    *        <event params>  are provied to plug-in as-is in the descriptor.
-    */
-    virtual void HandleEvent(const TDesC& /*aEventName*/, const TDesC& /*aParam*/) { };
-    
-    /**
-    * Invoked by the framework for querying if plugin has menu item
-    *
-    * @param aMenuItem menu item name
-    * @return ETrue if plugin has specific menu item, EFalse otherwise
-    */    
-    virtual TBool HasMenuItem(const TDesC& /*aMenuItem*/) { return EFalse; }
-    
-protected:
-    /**
-     * Protected destructor prevents deletion through this interface.
-     */
-    ~MAiEventHandlerExtension() { }
-    };
-
-#endif // M_AIEVENTHANDLEREXTENSION_H
--- a/homescreensrv_plat/ai_content_model_api/inc/aipropertyextension.h	Wed Mar 31 22:04:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 M_AIPROPERTYEXTENSION_H
-#define M_AIPROPERTYEXTENSION_H
-
-#include <e32std.h>
-
-/**
- * Maximum length for Content publisher name
- */
-const TInt KAiPublisherNameMaxLength = 128;
-
-/**
- * Maximum length for Content publisher namespace
- */
-const TInt KAiPublisherNamespaceMaxLength = 32;
-
-/**
- * Content publisher name buffer
- */
-typedef TBuf<KAiPublisherNameMaxLength> TAiPublisherName;
-
-/**
- * Content publisher namespace buffer
- */
-typedef TBuf8<KAiPublisherNamespaceMaxLength> TAiPublisherNamespace;
-
-/**
- * Contains information about Content publisher plug-in.
- */
-struct TAiPublisherInfo
-    {
-    TAiPublisherInfo() 
-        : iUid( TUid::Null() ), 
-          iName( KNullDesC ), 
-          iNamespace( KNullDesC8 )
-        {
-        }
-    
-    inline TAiPublisherInfo& operator= (const TAiPublisherInfo& aInfo)
-        {
-        iUid = TUid::Uid( aInfo.iUid.iUid );
-        iName.Copy( aInfo.iName );
-        iNamespace.Copy( aInfo.iNamespace );   
-        return *this;  
-        }
-        
-    inline TBool operator== (const TAiPublisherInfo& aInfo) const
-        {
-        if( iUid == aInfo.iUid && 
-            iName == aInfo.iName &&
-            iNamespace == aInfo.iNamespace )
-            {
-            return ETrue;
-            }
-            
-        return EFalse;                                       
-        }
-    
-    TUid                  iUid;
-    TAiPublisherName      iName;
-    TAiPublisherNamespace iNamespace;
-    };
-
-/**
- * Defines set of properties supported by plug-in.
- *
- * Example how to provide and set the properties.
- * @code
- * void CMyAiPlugin::ConstructL()
- *     {
- *     iInfo = new (ELeave) TAiPublisherInfo;
- *     iContent = AiUtility::CreateContentItemArrayIteratorL( KMyAiPluginContent );
- *     iResources = AiUtility::CreateContentItemArrayIteratorL( KMyAiPluginResources );
- *     iEvents = AiUtility::CreateContentItemArrayIteratorL( KMyAiPluginEvents );
- *     }
- *
- * void CMyAiPlugin::SetPropertyL( TInt aProperty, TAny* aValue )
- *     {
- *     if( !aValue ) return;
- * 
- *     switch( aProperty )
- *         {
- *         case EAiPublisherInfo:
- *             {
- *             const TAiPublisherInfo* info =
- *                 static_cast<const TAiPublisherInfo*>(aValue);
- *             iInfo->iUid.iUid = info->iUid.iUid;
- *             iInfo->iName.Copy( info->iName );
- *             break;
- *             }
- *         }
- *      }
- *
- * TAny* CMyAiPlugin::GetPropertyL( TInt aProperty )
- *     {
- *     switch( aProperty )
- *         {
- *         case EAiPublisherInfo:
- *             return iInfo;
- * 
- *         case EAiPublisherContent:
- *             return iContent;
- * 
- *         case EAiPublisherResources:
- *             return iResources;
- * 
- *         case EAiPublisherEvents:
- *             return iEvents;
- *         }
- *     return NULL;
- *     }
- * @endcode
- */
-enum TAiPublisherProperty
-    {
-    /**
-     * Enables read-only access to Plug-in information. GetProperty MUST return
-     * instance of struct TAiPublisherInfo via TAny* .
-     */
-    EAiPublisherInfo = 0x0001,
-
-    /**
-     * Enables read-only access to iterator of content selectors. GetProperty
-     * MUST return instance of MAiContentItemIterator for content selectors.
-     */
-    EAiPublisherContent,
-
-    /**
-     * Enables read-only access to iterator of content references. GetProperty
-     * MUST return instance of MAiContentItemIterator for content references.
-     */
-    EAiPublisherResources,
-
-    /**
-     * Enables read-only access to iterator of events supported by plug-in.
-     * GetProperty MUST return instance of MAiContentItemIterator for events.
-     */
-    EAiPublisherEvents,
-
-    /**
-     * Provides access to MAiContentRequest interface for refreshing a content
-     * item.
-     * @see EAiPublisherContent
-     */
-    EAiContentRequest,
-
-    /**
-     * Provides access to MAiContentRequest interface for refreshing a resource
-     * item.
-     * @see EAiPublisherResources
-     */
-    EAiResourceRequest,
-
-    /**
-     * Provides access to localized plugin name if supported. HBufC*
-     * @see EAiPublisherResources
-     */
-    EAiPluginName
-    };
-
-
-/**
- * Property extension interface for CAiContentPublisher.
- *
- * @see CAiContentPublisher::Extension
- * @since S60 3.2
- */
-class MAiPropertyExtension
-    {
-public:  // New functions
-
-    /**
-     * Read property of publisher plug-in.
-     *
-     * @param aProperty - identification of property.
-     * @return Pointer to property value.
-     */
-    virtual TAny* GetPropertyL(TInt aProperty) = 0;
-
-    /**
-     * Helper function for accessing the Publisher Info Property.
-     */
-    inline const TAiPublisherInfo* PublisherInfoL();
-
-    /**
-     * Write property value.
-     *
-     * @param aProperty - identification of property.
-     * @param aValue - contains pointer to property value.
-     */
-    virtual void SetPropertyL(TInt aProperty, TAny* aValue) = 0;
-
-protected:
-    /**
-     * Protected destructor prevents deletion through this interface.
-     */
-    ~MAiPropertyExtension() { }
-    };
-
-#include <aipropertyextension.inl>
-
-#endif  // M_AIPROPERTYEXTENSION_H
--- a/homescreensrv_plat/ai_content_model_api/inc/aipropertyextension.inl	Wed Mar 31 22:04:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-/*
-* Copyright (c) 2005-2005 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:  Inline function implementations for MAiPropertyExtension
-*
-*/
-
-
-inline const TAiPublisherInfo* MAiPropertyExtension::PublisherInfoL()
-    {
-    return static_cast<TAiPublisherInfo*>(this->GetPropertyL(EAiPublisherInfo));
-    }
--- a/homescreensrv_plat/ai_plugin_information_api/group/bld.inf	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreensrv_plat/ai_plugin_information_api/group/bld.inf	Wed Apr 14 16:16:44 2010 +0300
@@ -25,4 +25,3 @@
 PRJ_EXPORTS
 
 ../inc/activeidle2domainpskeys.h     MW_LAYER_PLATFORM_EXPORT_PATH(activeidle2domainpskeys.h)
-../inc/activeidle2internalpskeys.h     MW_LAYER_PLATFORM_EXPORT_PATH(activeidle2internalpskeys.h)
--- a/homescreensrv_plat/ai_plugin_information_api/inc/activeidle2domainpskeys.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreensrv_plat/ai_plugin_information_api/inc/activeidle2domainpskeys.h	Wed Apr 14 16:16:44 2010 +0300
@@ -68,10 +68,6 @@
 
 const TUint KActiveIdleActOnSendKey = 0x00000004; // Contains 0 if we are to ignore the send or > 0 if we need to react to it
 
-const TUint KActiveIdleTouchToolbarWidth = 0x00000005;
-
-const TUint KActiveIdleTouchToolbarHeight = 0x00000006;
-
 const TUint KActiveIdleSimRegFailedReceived = 0x00000007; // Contains 1 if we have received sim reg failed message, 0 if not.
 
 enum EPSActiveIdleSimRegReceiveStatus
@@ -85,33 +81,6 @@
     EPSSimRegFailedMessageReceived
 };
 
-const TUint KActiveIdleThemeSupportsXsp = 0x00000008;   // Contains one value from following enumeration
-
-enum EPSActiveIdleThemeSupportsXsp
-{
-    // Value indicates that xSP feature is not supported in currently active theme
-    EPSAiXspNotSupported,
-
-    // Value indicates that the current theme supports the xSP feature
-    EPSAiXspIsSupported
-};
-
-const TUint KActiveIdleLaunch = 0x00000009; // Contains information if shortcut launching is ongoing or not
-
-enum EPSActiveIdleIdleLaunch
-{
-
-	// Value indicates that no shortcut is in launching state and new launch tapping can be handled
-	EPSAiLaunchNotActive = 0,
-	
-	// Value indicates that active idle shortcut is launching
-	EPSAiLaunchIsActive	
-};
-
-
-// Indicates that Active Idle 2 should be restarted.
-const TUint KActiveIdleRestartAI2 = 0x0000000B;
-
 // Indicates that all the CPS Harvester plugins have been updated
 const TUint KActiveIdleCpsPluginsUpdated = 0x0000000C;
 
@@ -150,21 +119,6 @@
 */
 const TUid KPSUidActiveIdle2 =  {0x102750F0}; // ActiveIdle2 SID
 
-/**
-*
-* First iterate Active plugin UID range to find all
-* active plugin UID's. Use that UID as a key to find the plugins name
-* from the name range.
-*
-*/
-
-/**
-* Active plugin count
-*
-* Possible integer values:
-* 0x000000000 - 0xFFFFFFFF : Active plugin count
-*/
-const TUint KAIActivePluginCount = 0x00000000;
 
 /**
 * Active plugin UID range
@@ -175,13 +129,4 @@
 const TUint KAIActivePluginRangeStart = 0x00000001;
 const TUint KAIActivePluginRangeEnd   = 0x0FFFFFFF;
 
-/**
-* Active plugin name range
-*
-* Possible string values:
-* Plugin name
-*/
-const TUint KAIPluginNameRangeStart = 0x10000000;
-const TUint KAIPluginNameRangeEnd   = 0xFFFFFFFF;
-
 #endif // ACTIVEIDLE2_DOMAIN_PS_KEYS_H
--- a/homescreensrv_plat/ai_plugin_information_api/inc/activeidle2internalpskeys.h	Wed Mar 31 22:04:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2002 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:  Internal Publish & Subscribe keys for Active Idle 2
-*
-*/
-
-
-#ifndef __ACTIVEIDLE2INTERNALPSKEYS_H__
-#define __ACTIVEIDLE2INTERNALPSKEYS_H__
-
-/**
- * Gives possibility to execute shortcuts defined by localapp URL.
- * This UID is used as a key id under KUidSystemCategory.
- * Clients must supply string in localapp URL format defined by RFC 2396.
- *
- * @type RProperty::EText
- */
-const TUint32 KPSUidShortcutCmd = 0x102750FF;
-
-/**
- * Shortcut Plug-in command for enabling keylock.
- */
-_LIT( KAiPSEnableKeyLock, "localapp:keylock?on");
-
-/**
- * Shortcut Plug-in command for canceling keylock.
- */
-_LIT( KAiPSSkipKeyLock, "localapp:keylock?skip");
-
-/**
- * Shortcut Plug-in command for timeoutting keylock.
- */
-_LIT( KAiPSKeyLockTimeout, "localapp:keylock?timeout");
-
-/**
- * Shortcut Plug-in command for launching Logs to dialed calls view.
- */
-_LIT( KAiPSLaunchLogs, "localapp:logs?view=dialled");
-
-/**
- * Shortcut Plug-in command for launching Voice Dial UI.
- */
-_LIT( KAiPSLaunchNameDialer, "localapp:voicedial");
-
-/**
- * Shortcut Plug-in command for canceling voice dial ui.
- */
-_LIT( KAiPSSkipNameDialer, "localapp:voicedial?skip");
-
-
-// Restart code for category KPSUidAiInformation = 0x101FD657 key KActiveIdleRestartAI2 0xA
-const TInt KActiveIdleRestartCode = 0xFA93BAD2;
-
-
-
-/**
- * Publish and Subscribe key for data plugin states in KPSUidActiveIdle2 category (AI plug-in registry API)
- */
-const TUint KPSAiDataPluginState = 0x0000000F; //  Contains one value from following emuneration
-
-/**
- * States for the KPSAiDataPluginState key
- */
-enum EPSAiDataPluginState
-{    
-    EPSAiDataPluginsNotLoaded,
-    EPSAiDataPluginsLoaded
-};
-
-
-#endif // __ACTIVEIDLE2INTERNALPSKEYS_H__
--- a/homescreensrv_plat/ai_plugin_management_api/group/bld.inf	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreensrv_plat/ai_plugin_management_api/group/bld.inf	Wed Apr 14 16:16:44 2010 +0300
@@ -33,7 +33,3 @@
 ../inc/hscontentpublisher.inl        MW_LAYER_PLATFORM_EXPORT_PATH(hscontentpublisher.inl)
 ../inc/hspublisherinfo.h             MW_LAYER_PLATFORM_EXPORT_PATH(hspublisherinfo.h)
 ../inc/hspublisherinfo.inl           MW_LAYER_PLATFORM_EXPORT_PATH(hspublisherinfo.inl)
-
-// Deprecated
-../inc/aicontentpublisheruid.hrh     MW_LAYER_PLATFORM_EXPORT_PATH(aicontentpublisheruid.hrh)
-../inc/aicontentpublisher.h          MW_LAYER_PLATFORM_EXPORT_PATH(aicontentpublisher.h)
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aicontentpublisher.h	Wed Mar 31 22:04:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,398 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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:  Interface for Active Idle content publisher plug-ins.
-*
-*/
-
-
-#ifndef C_AICONTENTPUBLISHER_H
-#define C_AICONTENTPUBLISHER_H
-
-#include <ecom/ecom.h>
-#include <aicontentpublisheruid.hrh>
-
-/**
- * ECom plugin interface UID
- */
-const TUid KInterfaceUidContentPlugin = { AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER }; 
-
-/**
- * API Extension UID for MAiPropertyExtension.
- *
- * @see CAiContentPublisher::Extension
- * @see MAiPropertyExtension
- */
-const TUid KExtensionUidProperty      = { 0x1 };
-
-/**
- * API Extension UID for MAiEventExtension.
- *
- * @see CAiContentPublisher::Extension
- * @see MAiEventExtension
- */
-const TUid KExtensionUidEventHandler  = { 0x2 };
-
-/**
- * Defines set of reasons for plug-in state change.
- */
-enum TAiTransitionReason
-    {
-    
-    /**
-     * Unknown transition reason.
-     */
-    EAiUnknownTransitionReason = 0,
-    
-    /**
-     * System has started up.
-     */
-    EAiSystemStartup,
-
-    /**
-     * System is shutting down.
-     */
-    EAiSystemShutdown,
-
-    /**
-     * Backlight on.
-     */
-    EAiBacklightOn,
-
-    /**
-     * Backlight off.
-     */
-    EAiBacklightOff,
-
-    /**
-     * Backup or restore has been initiated.
-     */
-    EAiBackupRestoreStarted,
-
-    /**
-     * Backup or restore has ended.
-     */
-    EAiBackupRestoreEnded,
-
-    /**
-     * Call started.
-     */
-    EAiPhoneCallStarted,
-
-    /**
-     * Call ended.
-     */
-    EAiPhoneCallEnded,
-    
-    /**
-     * Active Idle UI Definition change has started.
-     */
-    EAiUiDefinitionChangeStarted,
-
-    /**
-     * Active Idle UI Definition change has ended.
-     */
-    EAiUiDefinitionChangeEnded,
-
-    /**
-     * Phone general theme has changed.
-     */
-    EAiGeneralThemeChanged,
-    
-    /**
-     * Screen layout has changed.
-     */
-    EAiScreenLayoutChanged,
-
-    /**
-     * System clock crossed midnight.
-     */
-    EAiMidnightPassed,
-
-    /**
-     * Language has been changed.
-     */
-    EAiLanguageChanged,
-
-    /**
-     * System time has been changed by user.
-     */
-    EAiTimeChanged,
-
-    /**
-     * Idle changes to background.
-     */
-    EAiIdleBackground,
-
-    /**
-     * Idle changes to foreground.
-     */
-    EAiIdleForeground,
-
-    /**
-     * Suspending plugins.
-     */
-    EAiSuspendPlugins,
-
-    /**
-     * Keylock enabled.
-     */
-    EAiKeylockEnabled,
-
-    /**
-     * Keylock disabled.
-     */
-    EAiKeylockDisabled,
-    
-    /**
-	 * Plugins can go online
-	 */
-	EAiIdleOnLine,
-	
-	/**
-	 * Plugins must go offline 
-	 */
-	EAiIdleOffLine,
-	
-	/**
-	 * Page changed    
-	 */
-	EAiIdlePageSwitch
-    };
-
-class MAiContentObserver;
-class MAiPluginSettings;
-typedef RPointerArray< MAiPluginSettings > RAiSettingsItemArray;
-
-/**
- *  ECom plug-in interface that Active Idle plug-ins must implement.
- *  It is used to control plug-in life cycle: load/destroy plug-ins;
- *  suspend/resume plug-in execution.
- *
- *  @since S60 3.2
- */
-class CAiContentPublisher : public CBase
-    {
-public:   // Constructors and destructor
-
-    /**
-     * Creates a new plug-in instance based on implementation UID.
-     *
-     * @param aImpUid implementation UID of plug-in to instantiate.
-     * @return pointer to the instantiated interface implementation.
-     * @pre Interface implementation exists by uid aImpUid.
-     */
-    inline static CAiContentPublisher* NewL(TUid aImpUid);
-
-    /**
-     * Creates a new plug-in instance based on mime type.
-     *
-     * @param aMime MIME type of plug-in to instantiate.
-     * @return pointer to the instantiated interface implementation.
-     */
-    inline static CAiContentPublisher* NewL(const TDesC8& aMime);
-
-    /**
-     * Destroys instance of the plug-in. Called by the framework during plug-in
-     * unloading phase.
-     */
-    inline virtual ~CAiContentPublisher();
-
-public:  // New functions
-    /**
-     * This method transit the plugin to "Alive" state.
-     * The method is called by the framework to instruct plug-in that it is
-     * allowed to actively publish its data to its observers. This means the plugin
-     * is allowed to consume memory and CPU resources, e.g plug-in is able load 
-     * engines, run timers, perform asynchronous operations, etc. The method 
-     * transits the plug-in to "Alive" state. There can be many concurrent
-     * calls to resume, with different or the same reason code, this allows
-     * the plugin to properly respond to enviroment change that raise the
-     * need to re-publish content (changes like date/time change etc).
-     *
-     * @param aReason reason for state change, see TAiTransitionChange.
-     * @pre None
-     * @post Plugin is in resumed state and actively publishes its data.
-	 *
-	 * Short example what a typical resume implementation does.
-	 * @code
-	 * if( !MyEngineCreated() )
-	 *     {
-     *     CreateEngine();
-	 *     }
-     * StartEngine();
-	 * @endcode
-     */
-    virtual void Resume(TAiTransitionReason aReason) = 0;
-
-    /**
-     * This method transits the plug-in to "Suspendend" state.
-     * The method is called by the framework to instruct plug-in that it is
-     * not allowed to consume CPU resources, e.g plug-in MUST stop each
-     * timer, cancel outstanding asynchronous operations, etc. 
-     *
-     * @param aReason reason for state change, see TAiTransitionChange.
-     * @pre None
-     * @post Plugin suspends publishing data and free resources (timers etc).
-     *
-	 * Short example what a typical suspend implementation does.
-	 * @code
-     * DisableEngine();
-	 * @endcode
-     */
-    virtual void Suspend(TAiTransitionReason aReason) = 0;
-
-    /**
-     * This method transits the plug-in to "Idle" state.
-     * The method is called by the framework to request the plug-in free all
-     * memory and CPU resources and close all its open files, the plug-in 
-     * should unload its engines during backup operation.
-     *
-     * @param aReason reason for state change, see TAiTransitionChange.
-     * @pre None
-     * @post Plugin stops publishing data and frees all possible resources.
-     *
-	 * Short example what a typical stop implementation does.
-	 * @code
-     * DestroyEngine();
-	 * @endcode
-     */
-    virtual void Stop(TAiTransitionReason aReason) = 0;
-
-    /**
-     * Adds the content observer / subscriber to plug-in. The plug-in MUST
-     * maintain a registry of subscribers and send notification to all them
-     * whenever the plug-in changes state or new content available.
-     *
-     * @param aObserver content observer to register.
-     * @pre None
-     * @post Plugin publishes its data to the subscribed observer.
-     *
-	 * Short example what a typical subscribe implementation does and
-     * one alternative how observers are used.
-	 * @code
-     * if( !ObserverAlreadyAdded( aObserver ) )
-     *     {
-     *     iMyContentObservers.AppendL( aObserver );
-     *     }
-     *
-     * ...
-     *
-     * // Engine reports data changed
-     *
-     * const TDesC& data = iEngine->LatestData();
-     * for( TInt i = 0; i < iMyContentObservers.Count(); ++i )
-     *     {
-     *     iMyContentObservers[i].Publish( data );
-     *     }
-	 * @endcode
-     */
-    virtual void SubscribeL(MAiContentObserver& aObserver) = 0;
-
-    /**
-     * Configures the plug-in.
-     *
-     * @param aSettings setting items defined in the UI definition.
-     *                  This plugin takes ownership of the
-     *                  MAiPluginSettings objects in the array.
-     *                  If this method leaves the caller will handle the cleanup.
-     * @pre None
-     * @post Plugin has set its state according to relevant settings.
-     *
-	 * Short example how to read plugin settings.
-	 * @code
-     * for( TInt i = 0; i < aSettings.Count(); ++i )
-     *     {
-     *     MAiPluginSettingsItem& item = (aSettings[i])->AiPluginSettingsItem();
-     *     TInt32 value = 0;
-     *     if( ParseInt( value, item.Value() ) != KErrNone )
-     *         {
-     *         continue;
-     *         }
-     *     if( value < 0 )
-     *         {
-     *         continue; // All our settings are counts, skip bad settings
-     *         }
-     *     if( item.Key() == EMySettingMaxUsers )
-     *         {
-     *         iEngine->SetMaxUsers( value );
-     *         continue;
-     *         }
-     *     else if( item.Key() == EMySettingNumItems )
-     *         {
-     *         iNumItems = value;
-     *         continue;
-     *         }
-     *     }
-     * // We own the array so destroy it
-     * aSettings.ResetAndDestroy();
-	 * @endcode
-     */
-    virtual void ConfigureL( RAiSettingsItemArray& aSettings) = 0;
-
-    /**
-     * Returns interface extension. In S60 3.2 only event & property
-     * extensions are supported. See MAiEventHandlerExtension & MAiPropertyExtension
-     * interfaces.
-     *
-     * @param  aUid - UID of the extension interface to access.
-     * @see MAiEventExtension
-     * @see MAiPropertyExtension
-     * @return the extension interface. Actual type depends on the passed aUid 
-     *         argument.
-     *
-     * Example on how to properly return an extension.
-     * @code
-     * if (aUid == KExtensionUidProperty)
-     *     {
-     *     return static_cast<MAiPropertyExtension*>(this);
-     *     }
-     * else if (aUid == KExtensionUidEventHandler)
-     *     {
-     *     return static_cast<MAiEventHandlerExtension*>(this);
-     *     }
-     * return NULL; // Requested extension not supported
-     * @endcode
-     */
-    virtual TAny* Extension(TUid aUid) = 0;
-
-private:     // data
-    /** An identifier used during destruction. */
-    TUid iDestructKey; 
-    };
-
-inline CAiContentPublisher* CAiContentPublisher::NewL(TUid aImplUid)
-    {
-    TAny* ptr = REComSession::CreateImplementationL(aImplUid,
-        _FOFF(CAiContentPublisher, iDestructKey));
-
-    return reinterpret_cast<CAiContentPublisher*> (ptr);
-    }
-
-inline CAiContentPublisher* CAiContentPublisher::NewL(const TDesC8& aMime)
-    {
-    TEComResolverParams params;
-    params.SetDataType(aMime);
-
-    TAny* ptr = REComSession::CreateImplementationL(KInterfaceUidContentPlugin,
-        _FOFF(CAiContentPublisher, iDestructKey), params);
-
-    return reinterpret_cast<CAiContentPublisher*> (ptr);
-    }
-
-inline CAiContentPublisher::~CAiContentPublisher()
-    {
-    REComSession::DestroyedImplementation(iDestructKey);
-    }
-
-#endif // C_AICONTENTPUBLISHER_H
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aicontentpublisheruid.hrh	Wed Mar 31 22:04:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 headers for aicontentpublisher
-*
-*/
-
-
-#ifndef AICONTENTPUBLISHERUID_HRH
-#define AICONTENTPUBLISHERUID_HRH
-
-/**
- * Ecom interface uid for CAiContentPublisher.
- *
- * Example resource of a plugin that implements content publisher interface.
- * @code
- * #include <aicontentpublisheruid.hrh>
- * #include <ecom/registryinfov2.rh>
- *
- * #define MY_DLL_UID                   0xFFEEDDCC
- * #define MY_PLUGIN_IMPLEMENTATION_UID 0xBBAA9988
- *
- * RESOURCE REGISTRY_INFO registry_info
- * {
- *     resource_format_version = RESOURCE_FORMAT_VERSION_2;
- *     dll_uid = MY_DLL_UID;
- * 
- *     // Interface info array
- *     interfaces = 
- *     {
- *         INTERFACE_INFO
- *         {
- *             // UID of the implemented interface
- *             interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
- * 
- *             implementations = 
- *             {
- *                 IMPLEMENTATION_INFO
- *                 {
- *                     implementation_uid = MY_PLUGIN_IMPLEMENTATION_UID;
- *                     version_no         = 1;
- *                     display_name       = "My plugin";
- *                 }
- *             };
- *         }
- *     };
- * }
- * @endcode
- */
-#define AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER 0x102750ED
-
-#endif // AICONTENTPUBLISHERUID_HRH
--- a/homescreensrv_plat/ai_utilities_api/group/bld.inf	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreensrv_plat/ai_utilities_api/group/bld.inf	Wed Apr 14 16:16:44 2010 +0300
@@ -32,7 +32,3 @@
 ../inc/aistrcnv.h                 MW_LAYER_PLATFORM_EXPORT_PATH(aistrcnv.h)
 ../inc/contentprioritymap.h       MW_LAYER_PLATFORM_EXPORT_PATH(contentprioritymap.h)
 ../inc/aicpscommandbuffer.h       MW_LAYER_PLATFORM_EXPORT_PATH(aicpscommandbuffer.h)
-
-#ifdef __COVER_DISPLAY
-../inc/aisecondarydisplayapi.h       MW_LAYER_PLATFORM_EXPORT_PATH(secondarydisplay/aisecondarydisplayapi.h)
-#endif
--- a/homescreensrv_plat/ai_utilities_api/inc/aisecondarydisplayapi.h	Wed Mar 31 22:04:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2005 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:  This file contains note definitions for Cover UI sync
-*
-*/
-
-
-#ifndef AISECONDARYDISPLAYAPI_HRH
-#define AISECONDARYDISPLAYAPI_HRH
-
-// CONSTANTS
-const TUid KAICategory = { 0x102750F3 };
-
-// DATA TYPES
-
-// Enumerates dialogs
-enum TAiDialogIndex
-    {
-    EAiNoNote = 0,
-    EAiSimRegistrationFailed
-    };
-
-#endif // AISECONDARYDISPLAYAPI_HRH
-
-// End of File
-
--- a/homescreensrv_plat/hs_content_control_api/inc/hscontentinfo.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreensrv_plat/hs_content_control_api/inc/hscontentinfo.h	Wed Apr 14 16:16:44 2010 +0300
@@ -333,6 +333,23 @@
     IMPORT_C TBool IsWrt() const;
 
     /**
+     * Sets whether an application confguration or a view is full
+     * 
+     * @since S60 5.0
+     * @param aIsFull, ETrue if application configuration or a view is full
+     */    
+    IMPORT_C void SetIsFull( TBool aIsFull );
+    
+    /**
+     * Returns whether an application configuration or a view is full
+     * 
+     * @since S60 5.0
+     * @return ETrue if application configuration or view is full, 
+     *         EFalse otherwise
+     */    
+    IMPORT_C TBool IsFull() const;
+
+    /**
      * Marshals Content Info data to a descriptor
      * 
      * @since S60 5.0
@@ -407,6 +424,11 @@
      * Flag to indicate whether this is a WRT widget
      */
     TBool iIsWrt;
+
+    /**
+     * Flag to indicate wheter an application configuration or a view is full
+     */
+    TBool iIsFull;
     };
 
 #endif // HSCONTENTINFO_H
--- a/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/group/ahplugins.mmp	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/group/ahplugins.mmp	Wed Apr 14 16:16:44 2010 +0300
@@ -56,7 +56,8 @@
 LIBRARY         apparc.lib
 LIBRARY         sendui.lib
 LIBRARY         hlplch.lib 
-LIBRARY         ws32.lib  
+LIBRARY         ws32.lib
+LIBRARY         gfxtrans.lib   
 
 
 // End of File
--- a/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/src/ahpapplauncher.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/src/ahpapplauncher.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -23,6 +23,8 @@
 #include <eikenv.h>
 #include <eikappui.h>
 #include <liwvariant.h>
+#include <gfxtranseffect/gfxtranseffect.h>      
+#include <akntranseffect.h>
 
 #include "ahproperties.hrh"
 #include "ahpapplauncher.h"
@@ -110,6 +112,13 @@
         TApaTask task = taskList.FindApp( appUid );
         if ( task.Exists( ) )
             {
+            GfxTransEffect::BeginFullScreen( 
+                AknTransEffect::EApplicationStart,
+                TRect(), 
+                AknTransEffect::EParameterType, 
+                AknTransEffect::GfxTransParam( appUid,
+                AknTransEffect::TParameter::EActivateExplicitContinue ));
+            
             errCode = KErrNone;
             task.BringToForeground();
             }
--- a/idlefw/inc/framework/aicpsexecuteparam.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/inc/framework/aicpsexecuteparam.h	Wed Apr 14 16:16:44 2010 +0300
@@ -80,13 +80,13 @@
     const TDesC& PluginId() const;
     
     /**
-    * Returns the input parameter list for Execute command
-    * it will leave the CLiwGenericParamList object in the stack
+    * Returns the input parameter map for Execute command
+    * it will leave the CLiwDefaultMap object in the stack
     * 
     * @since S60 5.2
-    * @return generic parameter list 
+    * @return in param map 
     */    
-    CLiwGenericParamList* InParamListLC();
+    CLiwDefaultMap* InParamMapLC();
    
     /**
     * Adds a actions to the action list  
--- a/idlefw/inc/framework/aifw.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/inc/framework/aifw.h	Wed Apr 14 16:16:44 2010 +0300
@@ -33,7 +33,6 @@
 class CAiPluginFactory;
 class CAiEventHandler;
 class CAiWsPluginManager;
-class MAiPSPropertyObserver;
 class THsPublisherInfo;
 
 // Class declaration
@@ -174,8 +173,7 @@
     
 private: 
     // new functions        
-                     
-    static TInt HandleRestartEvent( TAny* aSelf );
+
     void SwapUiControllerL( TBool aToExtHS );
 
 private: 
@@ -199,8 +197,6 @@
     CCenRepNotifyHandler* iNotifyHandlerESS;
     /** Idle repository, Owned. */
     CRepository* iRepository;    
-    /** Idle restart PS observer, Owned. */
-    MAiPSPropertyObserver* iIdleRestartObserver;
     
     TBool iLibrariesLoaded;
     
--- a/idlefw/inc/framework/aistatemanager.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/inc/framework/aistatemanager.h	Wed Apr 14 16:16:44 2010 +0300
@@ -22,7 +22,6 @@
 // System includes
 #include <e32base.h>
 #include <babitflags.h>
-#include <AknProgressDialog.h> // for MProgressDialogCallback
 
 // User includes
 #include <aifwdefs.h>
@@ -33,7 +32,6 @@
 class CAiCpsCommandBuffer;
 class CHsContentPublisher;
 class THsPublisherInfo;
-class CAknWaitDialog;
 
 /**
  * State Manager
@@ -43,8 +41,7 @@
  * @since S60 5.0
  */
 NONSHARABLE_CLASS( CAiStateManager ) : public CBase,
-    public MAiStateObserver,
-    public MProgressDialogCallback
+    public MAiStateObserver
     {
 private:
     // Data types
@@ -192,24 +189,7 @@
      * @since S60 5.2
      */
     void DestroyPlugins();
-              
-    /**
-     * Starts wait dialog with progress bar.
-     */
-    void StartWaitDialogL();
-
-    /**
-     * Stops wait dialog with progress bar.
-     */
-    void StopWaitDialogL();
-
-    /**
-     * Callback method from MProgressDialogCallback interface.
-     * Gets called when a dialog is dismissed.
-     * @param aButtonId Id of the pushed button.
-     */
-    void DialogDismissedL( TInt aButtonId );
-                          
+                         
     /**
      * Flushes cps command buffer
      * 
@@ -229,13 +209,7 @@
     /** Flags */
     TBitFlags32 iFlags;
     /** Halted flag */
-    TBool iHalt;
-    /**
-     * Own.
-     * Pointer to wait dialog.
-     */ 
-    CAknWaitDialog* iWaitDialog;
-   
+    TBool iHalt;   
     /** List of plugins which should be reloaded */
     RArray<THsPublisherInfo> iReloadPlugins;
 
--- a/idlefw/inc/framework/aiuicontrollermanager.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/inc/framework/aiuicontrollermanager.h	Wed Apr 14 16:16:44 2010 +0300
@@ -26,7 +26,6 @@
 
 // Forward declarations
 class CAiUiController;
-class CAiContentPublisher;
 class MAiMainUiController;
 class CRepository;
 class CCoeEnv;
--- a/idlefw/loc/aifw.loc	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/loc/aifw.loc	Wed Apr 14 16:16:44 2010 +0300
@@ -39,9 +39,3 @@
 // r: 3.2
 //
 #define qtn_idle_theme_error_notloaded "Error in theme."
-
-// d: Wait/progress note text that is shown when backup or restore process is ongoing.
-// l: popup_note_wait_window
-// w:
-// r: TB9.2
-#define qtn_hs_backup_use_prevented  "Home screen is not in use during backup or restore operation. Wait to finish."
--- a/idlefw/plugins/devicestatus/src/aioperatornamepublisher.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/devicestatus/src/aioperatornamepublisher.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -23,7 +23,7 @@
 #include <ProEngFactory.h>
 #include <MProfileEngine.h>
 #include <MProfile.h>
-#include <MProfilename.h>
+#include <MProfileName.h>
 #include <MProEngNotifyHandler.h>
 
 #include <aidevstaplgres.rsg>
Binary file idlefw/plugins/mcsplugin/help/data/xhtml.zip has changed
--- a/idlefw/plugins/sapidataplugin/inc/sapidata.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/sapidataplugin/inc/sapidata.h	Wed Apr 14 16:16:44 2010 +0300
@@ -132,16 +132,6 @@
     */
     void ConstructL(CSapiDataPlugin* aPlugin);
 
-    // new functions
-
-    /**
-    * Gets the menu item from the publisher
-    *
-    * @param none
-    * @return void
-    */
-    void GetMenuItemsL();
-    
 public:
     // new functions
     
@@ -154,14 +144,6 @@
     void ChangePublisherStatusL(const TDesC8& aStatus);
     
     /**
-    * Change the publisher status with list of actions
-    *
-    * @param aActionsList new list of status for the publisher
-    * @return void
-    */
-    void ChangePublisherStatusL(CLiwDefaultList* aActionsList);
-    
-    /**
     * Triggers active event with KNoNotification option.
     * Notification is not send to observer, action handler
     * plug-ins are executed 
@@ -365,6 +347,25 @@
     * @param aAny - contains pointer to command buffer.
     */
     void SetCommandBuffer(TAny* aAny);
+
+private:
+    // new functions
+
+    /**
+    * Gets the menu item from the publisher
+    *
+    * @param none
+    * @return void
+    */
+    void GetMenuItemsL();
+    
+    /**
+    * Change the publisher status with list of actions
+    *
+    * @param aActionsList new list of status for the publisher
+    * @return void
+    */
+    void ChangePublisherStatusL(CLiwDefaultList* aActionsList);
     
 private:   
     // data
--- a/idlefw/plugins/sapidataplugin/inc/sapidatapluginconst.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/sapidataplugin/inc/sapidatapluginconst.h	Wed Apr 14 16:16:44 2010 +0300
@@ -48,7 +48,6 @@
 _LIT( KPubData,        "publisher" );
 _LIT( KCpData_PubData, "cp_data:publisher");
 
-_LIT8( KPluginId, "plugin_id");
 _LIT8( KFilter,        "filter" );
 _LIT8( KDataMap,       "data_map");
 _LIT8( KActionTrigger, "action_trigger" );
@@ -76,7 +75,7 @@
 _LIT( KOperationDelete, "delete" );
 _LIT( KOperationExecute, "execute" );
 _LIT( KAddUpdateDelete, "add:update:delete" );
-_LIT( KUpdate, "update" );
+_LIT( KAddUpdate, "add:update" );
 
 _LIT(KWidget, "hswidget");
 _LIT8( KDeActive, "deactive");
@@ -91,7 +90,7 @@
 _LIT8( KPluginShutdown, "pluginshutdown");
 _LIT8( KOnLine, "online");
 _LIT8( KOffLine, "offline");
-_LIT8( KInActive, "inactive");
+
 
 // reserved extension for retrieving mask handle 
 _LIT8( KMask, "_mask");
--- a/idlefw/plugins/sapidataplugin/src/sapidata.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/sapidataplugin/src/sapidata.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -122,18 +122,17 @@
 	
 	if(iPubObserver)
 		{
-		TRAP_IGNORE(iPubObserver->ReleaseL() );
 		delete iPubObserver;
 		iPubObserver = NULL;
 		}
     if(iContentObserver)
         {
-        TRAP_IGNORE(iContentObserver->ReleaseL() );
         delete iContentObserver;
         iContentObserver = NULL;
         }
     if( iInterface )
          {
+         // This will also release all the registered observers
          iInterface->Close();
          iInterface = NULL;
          }
@@ -674,7 +673,7 @@
     if ( iItemCount > 0)
     	{
 		CLiwDefaultMap* pubRegFilter = CreateFilterLC( KAll(), KAll() );
-		pubRegFilter->InsertL( KOperation, TLiwVariant( KUpdate ) );
+		pubRegFilter->InsertL( KOperation, TLiwVariant( KAddUpdate ) );
 		iPubObserver->RegisterL( pubRegFilter, KPubData() );
 		CleanupStack::PopAndDestroy( pubRegFilter );
 		}
@@ -757,8 +756,6 @@
     CLiwGenericParamList* inParamList  = &iServiceHandler->InParamListL();
     CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
     
-    TLiwGenericParam pluginId( KPluginId, TLiwVariant( iContentId ) );
-    inParamList->AppendL( pluginId );
     TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
     inParamList->AppendL( type );
      
--- a/idlefw/plugins/sapidataplugin/src/sapidataobserver.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/sapidataplugin/src/sapidataobserver.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -68,30 +68,6 @@
     }
 
 // ---------------------------------------------------------------------------
-// Sing off to notification
-// ---------------------------------------------------------------------------
-//
-void CSapiDataObserver ::ReleaseL()
-    {
-    if( iInterface )
-        {
-        CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
-        CleanupStack::PushL( inParamList );
-        CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
-        CleanupStack::PushL( outParamList );
-        
-        TRAP_IGNORE( iInterface->ExecuteCmdL( KRequestNotification,
-                *inParamList,
-                *outParamList,
-                KLiwOptCancel,
-                this ));
-        
-        CleanupStack::PopAndDestroy( outParamList );
-        CleanupStack::PopAndDestroy( inParamList );
-        }
-    }
-
-// ---------------------------------------------------------------------------
 // Factory method construction
 // ---------------------------------------------------------------------------
 //
--- a/idlefw/plugins/sapidataplugin/src/sapidataplugin.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/sapidataplugin/src/sapidataplugin.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -433,6 +433,9 @@
         TRAP_IGNORE( PublishL() );
         TRAP_IGNORE( iData->SetStartupReasonL( KPluginStartup));
         }
+
+    // Listen for publisher registration to resend the events 
+    TRAP_IGNORE( iData->RegisterPublisherObserverL() );
     }
 
 // ----------------------------------------------------------------------------
@@ -616,17 +619,15 @@
         iData->ConfigureL( configurationItemsArr );
         
         iPluginState = ESuspend;
+
+        // Listen the publisher content update
+        iData->RegisterContentObserverL();
         
         // Activate the publisher
         iData->ChangePublisherStatusL( KActive );
-        // Register for notifications
-        iData->RegisterPublisherObserverL();
         // Execute the active trigger 
         iData->TriggerActiveL();
-        // There must be at least 1 milli second delay 
-        // to register the second observer as both are using the 
-        // same MLiwInterface object
-        iData->RegisterContentObserverL();
+        
         }
     
     contentItemsArr.Reset();
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdata.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdata.h	Wed Apr 14 16:16:44 2010 +0300
@@ -32,6 +32,7 @@
 class CLiwServiceHandler;
 class CWrtDataObserver;
 class CWrtDataPlugin;
+class MAiCpsCommandBuffer;
 
 /**
  *  @ingroup group_wrtdataplugin
@@ -43,221 +44,203 @@
 NONSHARABLE_CLASS( CWrtData ) : public CBase
     {    
 public:
-    // constructor and destructor
-    
-    static CWrtData* NewL( CWrtDataPlugin* aPlugin );
-
-    ~CWrtData();
-    
-   public : 
     
-        /**
-        * Configures the subscriber and data to subscribe.
-        *  
-        * @param aConfigurations  Information about the subscriber 
-        *  and the data to subscribe.
-        * @return void
-        */
-        void ConfigureL(RAiSettingsItemArray& aConfigurations);
-     
-        /**
-        * Checks is this menu item is supported by the publisher
-        * 
-        * @param aMenuItem  menu item name.
-        * @return  boolean (ETrue/EFalse) 
-        */
-        TBool HasMenuItem(const TDesC16& aMenuItem );
+    /**
+    * Part of the two phased constuction
+    *
+    * @param none
+    * @return none
+    */
+    static CWrtData* NewL( CWrtDataPlugin* aPlugin );
+    
+    /*
+    * Destructor  
+    */
+    ~CWrtData();
+
+private :
 
-        /**
-        * Register to CPS for all (add/delete/update/execute) action
-        * 
-        * @param none
-        * @return void
-        */
-        void RegisterL();
-        
-       /**
-        * Update the publisher status 
-        * 
-        * @param None
-        * @return void
-        */
-        void UpdatePublisherStatusL();     
-              
-        /**
-        * Publish updated data for all the items in the widget
-        *     
-        * @param aObserver to publish data
-        * @return void
-        */
-        void PublishDefaultImageL( MAiContentObserver* aObserver );
-                
-        /**
-        * Publish the updated data
-        *   
-        * @param aObserver to publish data
-        * @param aDataMap data map
-        * @return void
-        */
-        void PublishL( MAiContentObserver* aObserver, CLiwDefaultMap* aDataMap );
-        
-        /**
-        * Called by the observer to refresh the changed content
-        *   
-        * @param aContentId content Id.
-        * @param aOperation operation (add/delete/update/execute).
-        * @param aDataMap data map.
-        * @return void
-        */
-        void RefreshL( TDesC& aContentId, TDesC& aOperation, CLiwDefaultMap* aDataMap );
-                
-        /**
-        * Tigger for execution of a action for a specific content id.
-        * 
-        * @param aObjectId object Id.
-        * @param aTrigger name of the trigger.
-        * @return void
-        */
-        void ExecuteActionL(const TDesC& aObjectId, const TDesC& aTrigger);
-
-        /**
-        * Is the pugin is active to publish the data.
-        * 
-        * @param None
-        * @return boolean (ETrue/EFalse).
-        */
-        TBool IsPluginActive();
+    /**
+    * Default Constructor
+    *
+    */
+    CWrtData();
+    
+    /**
+    * Part of the two phased construction
+    *
+    * @param aPlugin reference of the plugin
+    * @return void
+    */
+    void ConstructL(CWrtDataPlugin* aPlugin);
+    
+public : 
+    // new functions 
+    
+    /**
+    * Configures the subscriber and data to subscribe.
+    *  
+    * @param aConfigurations  Information about the subscriber 
+    *  and the data to subscribe.
+    * @return void
+    */
+    void ConfigureL(RAiSettingsItemArray& aConfigurations);
+ 
+    /**
+    * Checks is this menu item is supported by the publisher
+    * 
+    * @param aMenuItem  menu item name.
+    * @return  boolean (ETrue/EFalse) 
+    */
+    TBool HasMenuItem(const TDesC16& aMenuItem );
 
-        /**
-        * Activate the publisher
-        * 
-        * @param None
-        * @return void
-        */
-        void ActivateL();
-                 
-        /**
-        * Resume the publisher
-        * 
-        * @param None
-        * @return void
-        */
-        void ResumeL();
-        
-        /**
-        * Suspend the publisher
-        * 
-        * @param None
-        * @return void
-        */
-        void SuspendL();
-        
-        /**
-        * Deactivate the publisher
-        * 
-        * @param None
-        * @return void
-        */
-        void DeActivateL();      
-        
-        /**
-        * OnLineL 
-        * 
-        * @param None
-        * @return void
-        */
-        void OnLineL();
-        
-        /**
-        * OffLineL 
-        * 
-        * @param None
-        * @return void
-        */
-        void OffLineL();
+    /**
+    * Register to CPS for all (add/delete/update/execute) action
+    * 
+    * @param none
+    * @return void
+    */
+    void RegisterL();
+    
+   /**
+    * Update the publisher status 
+    * 
+    * @param None
+    * @return void
+    */
+    void UpdatePublisherStatusL();     
+          
+    /**
+    * Publish updated data for all the items in the widget
+    *     
+    * @param aObserver to publish data
+    * @return void
+    */
+    void PublishDefaultImageL( MAiContentObserver* aObserver );
+            
+    /**
+    * Publish the updated data
+    *   
+    * @param aObserver to publish data
+    * @param aDataMap data map
+    * @return void
+    */
+    void PublishL( MAiContentObserver* aObserver, CLiwDefaultMap* aDataMap );
+    
+    /**
+    * Called by the observer to refresh the changed content
+    *   
+    * @param aContentId content Id.
+    * @param aOperation operation (add/delete/update/execute).
+    * @param aDataMap data map.
+    * @return void
+    */
+    void RefreshL( TDesC& aContentId, TDesC& aOperation, CLiwDefaultMap* aDataMap );
+            
+    /**
+    * Tigger for execution of a action for a specific content id.
+    * 
+    * @param aObjectId object Id.
+    * @param aTrigger name of the trigger.
+    * @return void
+    */
+    void ExecuteActionL(const TDesC& aObjectId, const TDesC& aTrigger);
 
-   private :
+    /**
+    * Is the pugin is active to publish the data.
+    * 
+    * @param None
+    * @return boolean (ETrue/EFalse).
+    */
+    TBool IsPluginActive();
+
+    /**
+    * Notify the status to the publisher
+    *
+    * @param aStatus new status of the publisher
+    * @return void
+    */
+    void NotifyPublisherL(const TDesC8& aStatus);
     
-        /**
-        * Default Constructor
-        *
-        */
-        CWrtData();
-        
-        /**
-        * Part of the two phased construction
-        *
-        * @param aPlugin reference of the plugin
-        * @return void
-        */
-        void ConstructL(CWrtDataPlugin* aPlugin);
-         
-        /**
-        * Createts the filter map
-        * 
-        * @return filter map
-        */
-        CLiwDefaultMap* CreateFilterLC( );
-          
-        /**
-        * Execute the command to get the data from CPS
-        * 
-        * @param aInFilter input filter for the command
-        * @param aOutDataMap output data map 
-        * @param aRegistry type of registry (publisher/cp_data)
-        * @return void 
-        */
-        void ExecuteCommandL(CLiwDefaultMap* aInFilter, 
-                CLiwDefaultMap* aOutDataMap, const TDesC16& aRegistry );
-       
+    /**
+    * Sets property value.
+    *
+    * @since S60 5.2
+    * @param aAny - contains pointer to command buffer.
+    * @param aNameSpace - plugin name space id
+    */
+    void SetCommandBuffer(TAny* aAny, const TDesC8& aNameSpace);
+    
+private: 
+    // new functions
+     
+    /**
+    * Createts the filter map
+    * 
+    * @return filter map
+    */
+    CLiwDefaultMap* CreateFilterLC( );
+      
+    /**
+    * Execute the command to get the data from CPS
+    * 
+    * @param aInFilter input filter for the command
+    * @param aOutDataMap output data map 
+    * @param aRegistry type of registry (publisher/cp_data)
+    * @return void 
+    */
+    void ExecuteCommandL(CLiwDefaultMap* aInFilter, 
+            CLiwDefaultMap* aOutDataMap, const TDesC16& aRegistry );
+   
+    /**
+    * Gets the menu item from the publisher
+    *
+    * @param none
+    * @return void
+    */
+    void GetMenuItemsL();
+    
+    /**
+    * Gets the widgent name and uid 
+    *
+    * @param aName  - widget name
+    * @param aAppUID - widget uid
+    * @return void
+    */
+    void GetWidgetNameAndUidL(TDes& aName, TDes& aAppUID );
+    
+    /**
+    * Resolves the Uid from the string  
+    *
+    * @param aUidDes  - uid in string
+    * @param aUid - uid
+    * @return ETure/EFalse
+    */ 
+    TBool ResolveUid(const TDesC& aUidDes, TUid& aUid );
+    
+    /**
+    * Creates icon from the uid
+    *
+    * @param aHandle  - icon handle
+    * @param aMaskHandle - mask handle
+    * @param aAppUid - application uid
+    * @return ETure/EFalse
+    */   
+    void CreateIconFromUidL(TInt& aHandle, TInt& aMaskHandle, const TUid& aAppUid );
 
-        /**
-        * Change the publisher status
-        *
-        * @param aStatus new status of the publisher
-        * @return void
-        */
-        void ChangePublisherStatusL(const TDesC& aStatus);
-        
-        /**
-        * Gets the menu item from the publisher
-        *
-        * @param none
-        * @return void
-        */
-        void GetMenuItemsL();
-        
-        /**
-        * Gets the widgent name and uid 
-        *
-        * @param aName  - widget name
-        * @param aAppUID - widget uid
-        * @return void
-        */
-        void GetWidgetNameAndUidL(TDes& aName, TDes& aAppUID );
-        
-        /**
-        * Resolves the Uid from the string  
-        *
-        * @param aUidDes  - uid in string
-        * @param aUid - uid
-        * @return ETure/EFalse
-        */ 
-        TBool ResolveUid(const TDesC& aUidDes, TUid& aUid );
-        
-        /**
-        * Creates icon from the uid
-        *
-        * @param aHandle  - icon handle
-        * @param aMaskHandle - mask handle
-        * @param aAppUid - application uid
-        * @return ETure/EFalse
-        */   
-        void CreateIconFromUidL(TInt& aHandle, TInt& aMaskHandle, const TUid& aAppUid );
-
-    private :   
+    /**
+    * Resend the the current plugin status to publisher 
+    *
+    * @param aActionsList new list of status for the publisher
+    * @return void
+    */
+    void ReSendNotificationL(CLiwDefaultList* aActionsList);
+            
+private :   
     // data
-    
+    TBuf<KHsPublisherNamespaceMaxLength> iPluginId;
+    /** CPS Command Buffer Interface, Not Owned */
+    MAiCpsCommandBuffer* iCpsExecute;
     /** Subscriber interface, owned */    
     MLiwInterface* iInterface;     
     /** Data Observer to CPS, owned */
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h	Wed Apr 14 16:16:44 2010 +0300
@@ -107,12 +107,6 @@
     * @return void.
     */
     void RegisterL( CLiwDefaultMap* aFilter );
-
-    /**
-    * Cancel all the registered notifications. 
-    * @return void.
-    */
-    void ReleaseL();
         
 private:
     // data 
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h	Wed Apr 14 16:16:44 2010 +0300
@@ -139,6 +139,11 @@
     
     /**
      * @see CHsContentPublisher
+     */
+    void SetProperty( TProperty aProperty, TAny* aAny );
+    
+    /**
+     * @see CHsContentPublisher
      */    
     TAny* GetProperty( TProperty aProperty );
     
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginconst.h	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginconst.h	Wed Apr 14 16:16:44 2010 +0300
@@ -73,13 +73,12 @@
 _LIT( KOperationExecute, "execute" );
 _LIT( KAddUpdateDelete, "add:update:delete" );
 
-_LIT( KDeActive, "deactive");
-_LIT( KActive, "active");
-_LIT( KSuspend , "suspend");
-_LIT( KResume, "resume");
-_LIT( KOnLine, "online");
-_LIT( KOffLine, "offline");
-_LIT( KInActive, "inactive");
+_LIT8( KDeActive, "deactive");
+_LIT8( KActive, "active");
+_LIT8( KSuspend , "suspend");
+_LIT8( KResume, "resume");
+_LIT8( KOnLine, "online");
+_LIT8( KOffLine, "offline");
 
 // reserved extension for retrieving mask handle 
 _LIT8( KImageMask, "image1_mask");
--- a/idlefw/plugins/wrtdataplugin/src/wrtdata.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdata.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -24,6 +24,7 @@
 #include <apgcli.h>
 #include <apgicnfl.h> 
 #include <bautils.h> 
+#include <aicpscommandbuffer.h>
 
 #include "wrtdata.h"
 #include "wrtdatapluginconst.h"
@@ -77,12 +78,12 @@
     	}
     if(iObserver)
         {
-        TRAP_IGNORE(iObserver->ReleaseL() );
         delete iObserver;
         iObserver = NULL;
         }
     if( iInterface )
          {
+         // This will also release all the registered observers
          iInterface->Close();
          iInterface = NULL;
          }
@@ -100,6 +101,7 @@
     iMenuItems.ResetAndDestroy();
     iMenuTriggers.ResetAndDestroy();
     // not owned
+    iCpsExecute = NULL;
     iPlugin = NULL;
     }
 
@@ -232,24 +234,28 @@
 void CWrtData::UpdatePublisherStatusL()
     {
      // Resent the plugin status to publisher
-     ActivateL();
+    CLiwDefaultList* actions= CLiwDefaultList::NewLC();
+    actions->AppendL( TLiwVariant( KActive ));
      if ( iPlugin->IsActive() )
          {
-         ResumeL();
+         actions->AppendL( TLiwVariant( KResume ) );
          }
      else
          {
-         SuspendL();
+         actions->AppendL( TLiwVariant( KSuspend ));
          }
       // forward the network status if it uses.
     if ( iPlugin->NetworkStatus() == CWrtDataPlugin::EOnline )
         {
-        OnLineL();
+        actions->AppendL( TLiwVariant( KOnLine ));
         }
     else if ( iPlugin->NetworkStatus() == CWrtDataPlugin::EOffline )
         {
-        OffLineL();
+        actions->AppendL( TLiwVariant(  KOffLine));
         }
+
+    ReSendNotificationL( actions );
+    CleanupStack::PopAndDestroy( actions );
     }
 
 // ---------------------------------------------------------------------------
@@ -454,60 +460,6 @@
     }
 
 // ---------------------------------------------------------------------------
-// CWrtData::ActivateL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::ActivateL()
-    {
-    ChangePublisherStatusL( KActive );
-    }
-
-// ---------------------------------------------------------------------------
-// CWrtData::ResumeL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::ResumeL()
-    {
-    ChangePublisherStatusL( KResume );
-    }
-
-// ---------------------------------------------------------------------------
-// CWrtData::SuspendL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::SuspendL()
-    {
-    ChangePublisherStatusL( KSuspend );
-    }
-
-// ---------------------------------------------------------------------------
-// CWrtData::DeActivateL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::DeActivateL()
-    {
-    ChangePublisherStatusL( KDeActive );
-    }
-
-// ---------------------------------------------------------------------------
-// CWrtData::OnLineL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::OnLineL()
-    {
-    ChangePublisherStatusL( KOnLine );
-    }
-
-// ---------------------------------------------------------------------------
-// CWrtData::offLineL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::OffLineL()
-    {
-    ChangePublisherStatusL( KOffLine );
-    }
-
-// ---------------------------------------------------------------------------
 // CWrtData::CreateFilterL
 // ---------------------------------------------------------------------------
 //
@@ -579,44 +531,21 @@
     }
 
 // ---------------------------------------------------------------------------
-// CWrtData::PublisherStatusL
+// NotifyPublisherL
 // ---------------------------------------------------------------------------
 //
-void CWrtData::ChangePublisherStatusL(const TDesC& aStatus)
+void CWrtData::NotifyPublisherL(const TDesC8& aStatus)
     {
-    if( iContentId == NULL )
-       {
-       return;
-       }
-   HBufC8* triggerName = HBufC8::NewLC(KWRTContentNameMaxLength);
-   triggerName->Des().Copy(aStatus);
-   
-   CLiwGenericParamList* inParamList  = &iServiceHandler->InParamListL();
-   CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
-       
-   TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
-   inParamList->AppendL( type );
-              
-   CLiwDefaultMap* filter = CreateFilterLC();
-   filter->InsertL(KActionTrigger, TLiwVariant(triggerName->Des()) );
-   
-   TLiwGenericParam item( KFilter, TLiwVariant( filter ));
-   inParamList->AppendL( item );
-   
-   if(iInterface)
-       {
-       iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList);
-       }
-   else
-       {
-       User::Leave( KErrNotSupported );
-       }
-   CleanupStack::PopAndDestroy( filter );
-   
-   inParamList->Reset();
-   outParamList->Reset();
-   CleanupStack::PopAndDestroy( triggerName );
-   }
+    if( iCpsExecute == NULL )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
+    CLiwDefaultMap* filter = CreateFilterLC();
+    // Add execute command triggers. Idle framework will execute 
+    iCpsExecute->AddCommand( iPluginId, KPubData, filter, aStatus );
+    CleanupStack::PopAndDestroy( filter );
+    }
 
 // ---------------------------------------------------------------------------
 // CWrtData::GetMenuItemsL
@@ -786,3 +715,46 @@
     CleanupStack::PopAndDestroy( &lsSession );
     }
 
+
+// ---------------------------------------------------------------------------
+// ReSendNotificationL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::ReSendNotificationL(CLiwDefaultList* aActionsList)
+    {
+    if( iInterface == NULL )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
+    CLiwGenericParamList* inParamList  = &iServiceHandler->InParamListL();
+    CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
+
+    TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
+    inParamList->AppendL( type );
+     
+    CLiwDefaultMap* filter = CreateFilterLC();
+    // add list of action triggers to execute
+    filter->InsertL(KActionTrigger, TLiwVariant(aActionsList) );
+    
+    TLiwGenericParam item( KFilter, TLiwVariant( filter ));
+    inParamList->AppendL( item );
+    iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList);
+    CleanupStack::PopAndDestroy( filter );
+    outParamList->Reset();
+    inParamList->Reset();
+
+    }
+
+// ---------------------------------------------------------------------------
+// SetCommandBuffer
+// ---------------------------------------------------------------------------
+//
+void CWrtData::SetCommandBuffer(TAny* aAny, const TDesC8& aNameSpace )
+    {
+    iPluginId.Copy(aNameSpace);
+    iCpsExecute = reinterpret_cast <MAiCpsCommandBuffer* > ( aAny );
+    }
+
+// End of file
+
--- a/idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -65,7 +65,6 @@
 //
 CWrtDataObserver ::~CWrtDataObserver ()
     {
-    TRAP_IGNORE( ReleaseL());
     iInterface = NULL;
     iData = NULL;
     }
@@ -186,29 +185,5 @@
     CleanupStack::PopAndDestroy( inParamList ); 
     }
 
-// ---------------------------------------------------------------------------
-// CWrtDataObserver ::ReleaseL
-// Sing off to notification
-// ---------------------------------------------------------------------------
-//
-void CWrtDataObserver ::ReleaseL()
-    {
-    if( iInterface )
-        {
-        CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
-        CleanupStack::PushL( inParamList );
-        CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
-        CleanupStack::PushL( outParamList );
-        
-        TInt err(KErrNone);
-        TRAP(err, iInterface->ExecuteCmdL( 
-                KRequestNotification,
-                *inParamList,
-                *outParamList,
-                KLiwOptCancel,
-                this ));
-        
-        CleanupStack::PopAndDestroy( outParamList );
-        CleanupStack::PopAndDestroy( inParamList );
-        }
-    }
+// End of file
+
--- a/idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -148,7 +148,7 @@
     if( aReason == EPluginShutdown ||
         aReason == ESystemShutdown )
         {
-        TRAP_IGNORE(iData->DeActivateL());
+        TRAP_IGNORE(iData->NotifyPublisherL( KDeActive ));
         }
     }
 
@@ -163,7 +163,7 @@
         {
         iPluginState = EResume;
 
-        TRAP_IGNORE( iData->ResumeL() );        
+        TRAP_IGNORE( iData->NotifyPublisherL( KResume ));        
         }    
     }
 
@@ -178,7 +178,7 @@
         {
         iPluginState = ESuspend;
         
-        TRAP_IGNORE ( iData->SuspendL() );        
+        TRAP_IGNORE ( iData->NotifyPublisherL( KSuspend ));        
         }        
     }
 
@@ -189,12 +189,8 @@
 //
 void CWrtDataPlugin::SetOnline()
     {    
-    if ( iNetworkStatus != EOnline )
-        {
-        iNetworkStatus = EOnline;
-        
-        TRAP_IGNORE( iData->OnLineL() );            
-        }    
+    iNetworkStatus = EOnline;
+    TRAP_IGNORE( iData->NotifyPublisherL( KOnLine ));            
     }
 
 // ----------------------------------------------------------------------------
@@ -204,12 +200,8 @@
 //
 void CWrtDataPlugin::SetOffline()
     {
-    if ( iNetworkStatus != EOffline )
-        {
-        iNetworkStatus = EOffline;
-        
-        TRAP_IGNORE( iData->OffLineL() );            
-        }    
+    iNetworkStatus = EOffline;
+    TRAP_IGNORE( iData->NotifyPublisherL( KOffLine ));            
     }
 
 // ----------------------------------------------------------------------------
@@ -316,7 +308,7 @@
         iData->RegisterL();
         
         // Activate the publisher 
-        iData->ActivateL();
+        iData->NotifyPublisherL( KActive );
         }
     
     settingItemsArr.Reset();
@@ -328,6 +320,19 @@
     }
 
 // ----------------------------------------------------------------------------
+// CWrtDataPlugin::SetProperty
+//
+// ----------------------------------------------------------------------------
+//
+void CWrtDataPlugin::SetProperty( TProperty aProperty, TAny* aAny )
+    {
+    if (aProperty == ECpsCmdBuffer )
+        {   
+        iData->SetCommandBuffer( aAny, PublisherInfo().Namespace() );
+        }
+    }
+
+// ----------------------------------------------------------------------------
 // CWrtDataPlugin::GetProperty
 //
 // ----------------------------------------------------------------------------
--- a/idlefw/src/framework/aicpscommandbuffer.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/src/framework/aicpscommandbuffer.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -31,7 +31,8 @@
 _LIT8( KCPSConfigurationIf, "IContentPublishing" );
 _LIT8( KCPS, "Service.ContentPublishing" );
 _LIT8( KExecuteAction, "ExecuteAction" );
-
+_LIT8( KExecuteMultipleActions, "ExecuteMultipleActions" );
+_LIT8( KFilters, "filters" );
 // ======== LOCAL FUNCTIONS ========
 
 // ======== MEMBER FUNCTIONS ========
@@ -235,17 +236,27 @@
 	   
     if(iCpsInterface)
         {
+		  __PRINTS( "CAiCpsCommandBuffer::DoFlush : Execute" );
         TInt pluginCount = iPlugins.Count();
+        CLiwDefaultList* pluginCmdList = CLiwDefaultList::NewLC();
+        
         for (TInt i=0; i < pluginCount; i++ )
             {
-            CLiwGenericParamList* inParamList  = iPlugins[i]->InParamListLC();
-            CLiwGenericParamList* outParamList  = CLiwGenericParamList::NewLC();
-            __PRINTS( "CAiCpsCommandBuffer::DoFlush : Execute" );
-            iCpsInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList);
-            
-            CleanupStack::PopAndDestroy( outParamList );
-            CleanupStack::PopAndDestroy( inParamList );
+            CLiwDefaultMap* inParamMap = iPlugins[i]->InParamMapLC();
+            pluginCmdList->AppendL( inParamMap );
+            CleanupStack::PopAndDestroy( inParamMap );            
             }
+        CLiwGenericParamList* inParamList  = CLiwGenericParamList::NewLC();
+        CLiwGenericParamList* outParamList  = CLiwGenericParamList::NewLC();
+        
+         TLiwGenericParam item( KFilters, TLiwVariant ( pluginCmdList));
+         inParamList->AppendL( item ); 
+      
+        iCpsInterface->ExecuteCmdL( KExecuteMultipleActions, *inParamList, *outParamList);
+       
+        CleanupStack::PopAndDestroy( outParamList );
+        CleanupStack::PopAndDestroy( inParamList );
+        CleanupStack::PopAndDestroy( pluginCmdList );
         }
     else
        {
--- a/idlefw/src/framework/aicpsexecuteparam.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/src/framework/aicpsexecuteparam.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -105,18 +105,14 @@
     }
 
 // ---------------------------------------------------------------------------
-// CAiCpsExecuteParam::InParamListLC
+// CAiCpsExecuteParam::InParamMapLC
 //
 // ---------------------------------------------------------------------------
 //  
-CLiwGenericParamList* CAiCpsExecuteParam::InParamListLC() 
+CLiwDefaultMap* CAiCpsExecuteParam::InParamMapLC() 
     {
-    CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC();
-    
-    TLiwGenericParam pluginId( KPluginId, TLiwVariant( iPluginId ) );
-    paramList->AppendL( pluginId );
-    TLiwGenericParam type( KType, TLiwVariant( iRegistryType ) );
-    paramList->AppendL( type );
+    CLiwDefaultMap* inParamMap = CLiwDefaultMap::NewLC();
+    inParamMap->InsertL( KType, TLiwVariant( *iRegistryType ));
     
     CLiwDefaultMap* filter = CLiwDefaultMap::NewLC();
     filter->InsertL( KPublisherId, TLiwVariant(iPublisher ));
@@ -129,12 +125,11 @@
         actionsToLaunch->AppendL( TLiwVariant( *iActions[i]));
         }
     filter->InsertL(KActionTrigger, TLiwVariant(actionsToLaunch) );
-    
-    TLiwGenericParam item( KFilter, TLiwVariant( filter ));
-    paramList->AppendL( item );
+    inParamMap->InsertL( KFilter, TLiwVariant( filter ));
+
     CleanupStack::PopAndDestroy( actionsToLaunch );
     CleanupStack::PopAndDestroy( filter );
-    return paramList;
+    return inParamMap;
     }
 
 // ---------------------------------------------------------------------------
--- a/idlefw/src/framework/aifw.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/src/framework/aifw.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -32,7 +32,6 @@
 
 #include <activeidle2domaincrkeys.h>
 #include <activeidle2domainpskeys.h>
-#include <activeidle2internalpskeys.h>
 #include <aipspropertyobserver.h>
 #include <aisystemuids.hrh>
 
@@ -155,9 +154,6 @@
 
     delete iNotifyHandlerESS;
     iNotifyHandlerESS = NULL;
-   
-    Release( iIdleRestartObserver );
-    iIdleRestartObserver = NULL;
         
     delete iWsPluginManager;
     iWsPluginManager = NULL;
@@ -243,10 +239,6 @@
          CCenRepNotifyHandler::EIntKey, KAIExternalStatusScreen );
                                                      
     iNotifyHandlerESS->StartListeningL();
-
-    iIdleRestartObserver = AiUtility::CreatePSPropertyObserverL(
-        TCallBack( HandleRestartEvent, this ), 
-        KPSUidAiInformation, KActiveIdleRestartAI2 );
     
     __PRINTS( "*** CAiFw::AppEnvReadyL - done" );
     }
@@ -342,9 +334,6 @@
         delete iWsPluginManager;
         iWsPluginManager = NULL;
         
-        Release( iIdleRestartObserver );
-        iIdleRestartObserver = NULL;
-        
         iStateProvider->Stop();
         }
     }
@@ -498,30 +487,6 @@
     }
 
 // ----------------------------------------------------------------------------
-// CAiFw::HandleRestartEvent()
-//
-// ----------------------------------------------------------------------------
-//
-TInt CAiFw::HandleRestartEvent( TAny* aSelf )
-    {
-    CAiFw* self = static_cast<CAiFw*>( aSelf );
-    
-    TInt value( 0 );
-    
-    if ( self->iIdleRestartObserver )
-        {
-        TInt err( self->iIdleRestartObserver->Get( value ) );
-
-        if ( err == KErrNone && value == KActiveIdleRestartCode )
-            {
-            self->iUiControllerManager->ExitMainController();
-            }
-        }
-    
-    return KErrNone;
-    }
-
-// ----------------------------------------------------------------------------
 // CAiFw::Repository()
 //
 // ----------------------------------------------------------------------------
--- a/idlefw/src/framework/aipluginfactory.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/src/framework/aipluginfactory.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -143,34 +143,43 @@
 // ----------------------------------------------------------------------------
 //
 TInt CAiPluginFactory::CreatePlugin( 
-    const THsPublisherInfo& aPublisherInfo )                             
-    {                                            
+    const THsPublisherInfo& aPublisherInfo )
+    {
     __PRINTS( "*** CAiPluginFactory::CreatePlugin: Start ***" );
-                                    
+
     if ( IsRecyclable( aPublisherInfo ) )
         {
         CHsContentPublisher* plugin( PluginByUid( aPublisherInfo.Uid() ) );
-        
+
         if ( plugin )
             {
+            if ( aPublisherInfo.Namespace() == KNullDesC8 )
+                {
+                // No namespace available
+                __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\
+                               Failed to Load Plug-in: KErrNotSupported ***" );
+                return KErrNotSupported;
+                }
+
             // Plugin already exists, update its namespace
             THsPublisherInfo& info( 
                 const_cast< THsPublisherInfo& >( plugin->PublisherInfo() ) );
-            
+
             info.iNamespace.Copy( aPublisherInfo.Namespace() );
-            
-            __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Plugin recycled ***" );
-            
+
+            __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\
+                           Plugin recycled ***" );
+
             return KErrNone;
             }
         }
-            
+
     TBool implFound( EFalse );
-    
+
     for( TInt i = 0; i < iEComPlugins.Count(); i++ )
         {
         CImplementationInformation* information( iEComPlugins[i] );
-                                                                 
+
         if( information->ImplementationUid().iUid == aPublisherInfo.Uid().iUid )
             {
             implFound = ETrue;
@@ -181,29 +190,31 @@
     if( aPublisherInfo.Namespace() == KNullDesC8 || !implFound )
         {
         // No namespace available or no ecom implementation available
-        __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Failed to Load Plug-in: KErrNotSupported ***" );
+        __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\
+                       Failed to Load Plug-in: KErrNotSupported ***" );
         
         return KErrNotSupported;
         }
            
     CHsContentPublisher* plugin( PluginByInfo( aPublisherInfo ) );
-    
+
     if( plugin )
-        {                             
-        __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Failed to Load Plug-in: KErrAlreadyExists ***" );
+        {
+        __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\
+                       Failed to Load Plug-in: KErrAlreadyExists ***" );
         
         return KErrAlreadyExists;
         }
-    
+
     TInt err( KErrNone );
-    
+
     TRAP( err, CreatePluginL( aPublisherInfo ) );
     
     __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Load Plug-in ***" );
-    
-    return err;    
+
+    return err;
     }
-        
+
 // ----------------------------------------------------------------------------
 // CAiPluginFactory::DestroyPlugin()
 //
--- a/idlefw/src/framework/aistatemanager.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/src/framework/aistatemanager.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -30,12 +30,6 @@
 
 #include "aistatemanager.h"
 
-#include <homescreen.rsg>
-
-_LIT( KResourceDrive, "Z:" );
-_LIT( KResourceFile, "homescreen.rsc" );
-_LIT( KResourcePath, "\\resource\\apps\\" );
-
 // ======== LOCAL FUNCTIONS ========
 // ----------------------------------------------------------------------------
 // StartReason
@@ -120,10 +114,6 @@
 //
 CAiStateManager::~CAiStateManager()
     {  
-    if( iWaitDialog )
-        {
-        delete iWaitDialog;
-        }
     delete iCommandBuffer;
 	iReloadPlugins.Close();
     }
@@ -442,15 +432,6 @@
     
     iHalt = aStart;
 
-    if ( aStart )
-        {
-        TRAP_IGNORE( StartWaitDialogL() );    
-        }
-    else
-        {
-        TRAP_IGNORE( StopWaitDialogL() );
-        }
-    
     RPointerArray< CHsContentPublisher >& plugins( iFactory.Publishers() );
             
     for( TInt i = 0; i < plugins.Count(); i++ )
@@ -649,59 +630,4 @@
     __PRINTS( "CAiStateManager::NotifyReleasePlugins: return void" );    
     }
 
-// ----------------------------------------------------------------------------
-// CAiStateManager::StartWaitDialogL()
-// 
-// ----------------------------------------------------------------------------
-//
-void CAiStateManager::StartWaitDialogL()
-    {
-    RConeResourceLoader resourceLoader( *CCoeEnv::Static() );
-    TFullName fileName( KResourceDrive );
-    fileName.Append( KResourcePath );
-    fileName.Append( KResourceFile );
-        
-    // Get language of resource file.
-    BaflUtils::NearestLanguageFile( CCoeEnv::Static()->FsSession(), fileName );
-
-    // Open resource file.
-    resourceLoader.OpenL( fileName );
-    
-    if( iWaitDialog )
-        {
-        delete iWaitDialog;
-        iWaitDialog = NULL;
-        }
-     
-    // For the wait dialog
-    iWaitDialog = new (ELeave) CAknWaitDialog(
-        REINTERPRET_CAST( CEikDialog**, &iWaitDialog ) );
-    iWaitDialog->SetCallback( this );
-    iWaitDialog->ExecuteLD( R_HOMESCREEN_WAIT_DIALOG );
-    resourceLoader.Close();
-    }
-
-// ----------------------------------------------------------------------------
-// CAiStateManager::StopWaitDialogL()
-// 
-// ----------------------------------------------------------------------------
-//
-void CAiStateManager::StopWaitDialogL()
-    {
-    if( iWaitDialog )
-        {
-        iWaitDialog->ProcessFinishedL(); 
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CAiStateManager::DialogDismissedL()
-// 
-// ----------------------------------------------------------------------------
-//
-void CAiStateManager::DialogDismissedL(TInt /*aButtonId*/)
-    {
-    // No implementation required.
-    }
-
 // End of file
--- a/idlefw/src/framework/homescreen.rss	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/src/framework/homescreen.rss	Wed Apr 14 16:16:44 2010 +0300
@@ -60,24 +60,3 @@
 #endif // __SCALABLE_ICONS
         };
     }
-
-RESOURCE DIALOG r_homescreen_wait_dialog
-    {
-    flags = EAknWaitNoteFlags;
-    buttons = R_AVKON_SOFTKEYS_EMPTY;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtNote;
-            id = EGeneralNote;
-            control= AVKON_NOTE
-                {
-                layout = EWaitLayout;
-                singular_label = qtn_hs_backup_use_prevented;
-                animation = R_QGN_GRAF_WAIT_BAR_ANIM;
-                };
-            }
-        };
-    }
-
--- a/idlefw/src/idleint/aiidleappregister.cpp	Wed Mar 31 22:04:35 2010 +0300
+++ b/idlefw/src/idleint/aiidleappregister.cpp	Wed Apr 14 16:16:44 2010 +0300
@@ -89,33 +89,6 @@
             KTelephonyInformationReadPolicy,
             KTelephonyInformationWritePolicy );
         }
-
-    TInt DefineIdleAI2RestartPS()
-        {
-        return RProperty::Define( 
-        	KPSUidAiInformation,
-            KActiveIdleRestartAI2,
-          	RProperty::EInt,
-            KTelephonyInformationReadPolicy,
-            KTelephonyInformationWritePolicy );
-        }
-	TInt SetIdleAI2RestartPS()
-        {
-        return RProperty::Set( 
-        	KPSUidAiInformation, 
-            KActiveIdleRestartAI2, 
-            0 );
-        }
-        
-      TInt DefineIdleLaunchPS()
-      	{
-      	return RProperty::Define( 
-        	KPSUidAiInformation,
-        	KActiveIdleLaunch,
-        	RProperty::EInt,
-        	ECapabilityReadDeviceData,
-        	ECapabilityWriteDeviceData );
-      	}
       
       TInt DefineIdleSendNumKeysToPhonePS()
           {
@@ -166,8 +139,6 @@
     
     DefineIdleSimRegFailedReceivedPS();
     
-    DefineIdleLaunchPS();
-    
     // Set the default value to 1 so the send key press is reacted
     SetIdleSendKeyPS();
     
@@ -177,10 +148,6 @@
     // Define idle state key
     DefineIdleStatePS();
     
-    DefineIdleAI2RestartPS();
-    
-    SetIdleAI2RestartPS();
-    
     DefineIdleSendNumKeysToPhonePS();
     
     SetIdleSendNumKeysToPhonePS();