Revision: 201023 RCL_3 PDK_3.0.1
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 21 Jun 2010 16:00:38 +0300
branchRCL_3
changeset 101 9e077f9a342c
parent 82 ace62b58f4b2
child 110 2c7f27287390
Revision: 201023 Kit: 2010125
backsteppingsrv/data/bs_config.xml
backsteppingsrv/inc/bsengine.h
backsteppingsrv/inc/bsserver.h
backsteppingsrv/src/bsengine.cpp
backsteppingsrv/src/bsserver.cpp
contentcontrolsrv/ccsrv/src/ccsrvsession.cpp
contentpublishingsrv/contentpublishingutils/pluginvalidator/inc/charvesterpluginvalidator.h
contentpublishingsrv/contentpublishingutils/pluginvalidator/src/charvesterpluginvalidator.cpp
contentpublishingsrv/contentpublishingutils/pluginvalidator/src/cpluginvalidator.cpp
homescreenpluginsrv/hspsmanager/group/hspsthemeserver.mmp
homescreenpluginsrv/hspsmanager/inc/hspsserverutil.h
homescreenpluginsrv/hspsmanager/inc/hspsthemeserver.h
homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp
homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp
homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp
homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp
homescreensrv_plat/menu_content_service_api/inc/mcsdef.h
idlefw/plugins/mcsplugin/data/mcspluginsettingsres.rss
idlefw/plugins/mcsplugin/settings/src/mcspluginsettings.cpp
idlefw/src/idleint/aiuiidleintegration.cpp
menucontentsrv/enginc/menueng.h
menucontentsrv/engsrc/menueng.cpp
menucontentsrv/srvsrc/menusrvappscanner.cpp
--- a/backsteppingsrv/data/bs_config.xml	Wed Jun 09 10:01:25 2010 +0300
+++ b/backsteppingsrv/data/bs_config.xml	Mon Jun 21 16:00:38 2010 +0300
@@ -12,6 +12,6 @@
   <app uid="0x101FD64C" reset="1" /> <!-- Active Idle -->  
   <app uid="0x102750F0" reset="1" /> <!-- Active Idle 2 -->    
   <app uid="0x10282BF6" reset="1" /> <!-- MMMenu -->  
-  <app uid="0x10207218" ignoredIfStartedFrom="1" resetIfThru="1" /> <!-- FastSwap -->  
+  <app uid="0x20016BF0" ignoredIfStartedFrom="1" resetIfThru="1" /> <!-- FastSwap -->  
   <app uid="0x100056CF" ignored="1" /> <!-- screen saver -->  
 </configuration>
--- a/backsteppingsrv/inc/bsengine.h	Wed Jun 09 10:01:25 2010 +0300
+++ b/backsteppingsrv/inc/bsengine.h	Mon Jun 21 16:00:38 2010 +0300
@@ -83,11 +83,6 @@
      */
     void RemoveAppRecord( const TUid& aApp );
 
-    /**
-     * Marks that application was pressed
-     */
-    void ApplicationKeyWasPressed();
-
 private:
 
     CBSEngine();
@@ -130,13 +125,8 @@
 
     /**
      * flag for handling fast swap events
-     */
-    TBool swap;
-
-    /**
-     * flag for application key state
-     */
-    TBool wasPressed;
+     */    
+    TBool iSwap;
 
     /**
      * Configuration of BS
--- a/backsteppingsrv/inc/bsserver.h	Wed Jun 09 10:01:25 2010 +0300
+++ b/backsteppingsrv/inc/bsserver.h	Mon Jun 21 16:00:38 2010 +0300
@@ -60,7 +60,6 @@
         void ConstructL();
         void HandleWsEventL( const TWsEvent& aEvent,
             CCoeControl* aDestination );
-        void ForwardEventL( const TWsEvent& aEvent );
         CBSEngine* iEngine;
         };
 
--- a/backsteppingsrv/src/bsengine.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/backsteppingsrv/src/bsengine.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -39,8 +39,7 @@
 CBSEngine::CBSEngine()
     {
     iEnv = CEikonEnv::Static( );
-    swap = EFalse;
-    wasPressed = EFalse;
+    iSwap = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -93,15 +92,6 @@
 // 
 // -----------------------------------------------------------------------------
 //
-void CBSEngine::ApplicationKeyWasPressed()
-    {
-    wasPressed = ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
 void CBSEngine::HandleFocusChangeL( const TUid& aApp )
     {
     DEBUG(("-> HandleFocusChangeL(0x%X)", aApp.iUid ));
@@ -116,16 +106,14 @@
     if ( fsCount > 0 && iFocusHistory[fsCount - 1] == aApp.iUid )
         {
         DEBUG(("\tIgnore the event - application already on top"));
-        swap = EFalse;
-        wasPressed = EFalse;
+        iSwap = EFalse;
         return;
         }
 
     // check if we should not reset back stepping stack
     if ( iConfiguration->IsReset( aApp ) )
         {
-        swap = EFalse;
-        wasPressed = EFalse;
+        iSwap = EFalse;
         ResetHistory( );
         }
 
@@ -138,26 +126,24 @@
         if ( aApp.iUid == thuApps[i] )
             {
             //mark that there is a fast swap or dialog
-            swap = ETrue;
+            iSwap = ETrue;
             return;
             }
-        else
+        else if( iSwap )
             {
-            if ( swap )
+            iSwap = EFalse;
+
+            TInt pos = iFocusHistory.Count( ) - 1;
+            if ( pos >= 0 )
                 {
-                swap = EFalse;
                 TInt currentApp = aApp.iUid;
-                TInt pos = iFocusHistory.Count( ) - 1;
-                if ( pos >= 0 )
+                TInt prevApp = iFocusHistory[pos];
+                if ( currentApp != prevApp )
                     {
-                    TInt prevApp = iFocusHistory[pos];
-                    if ( currentApp != prevApp && wasPressed )
-                        {
-                        //we are here as the result of the fast swap
-                        ResetHistory( );
-                        iFocusHistory.AppendL( thuApps[i] );
-                        wasPressed = EFalse;
-                        }
+                    //we are here as the result of the fast swap
+                    ResetHistory( );
+                    iFocusHistory.AppendL( thuApps[i] );
+                    break;
                     }
                 }
             }
--- a/backsteppingsrv/src/bsserver.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/backsteppingsrv/src/bsserver.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -27,8 +27,6 @@
 #include "bsdebug.h"
 #include "bsserver.h"
 
-const TInt idsArrayGranularity = 30;
-
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -174,6 +172,7 @@
     ui->PrepareToExit( );
 
     }
+
 // -----------------------------------------------------------------------------
 // Create and start the server.
 // -----------------------------------------------------------------------------
@@ -230,6 +229,7 @@
     SetAutoForwarding(ETrue); 
     User::SetPriorityControl(EFalse);
     }
+
 // -----------------------------------------------------------------------------
 // 
 // -----------------------------------------------------------------------------
@@ -243,12 +243,11 @@
 // -----------------------------------------------------------------------------
 //
 void CBSServer::CBSAppUi::HandleWsEventL( const TWsEvent& aEvent,
-    CCoeControl* /*aDestination*/)
+    CCoeControl* aDestination)
     {
     if ( aEvent.Type( ) == EEventFocusGroupChanged 
         || aEvent.Type( ) == EEventWindowGroupsChanged )
         {
-
         TInt windowsGroupID = iCoeEnv->WsSession().GetFocusWindowGroup( );
         CApaWindowGroupName* apaWGName = CApaWindowGroupName::NewLC(
             iCoeEnv->WsSession( ), windowsGroupID );
@@ -261,37 +260,7 @@
             iEngine->HandleFocusChangeL( uid );
             }
         }
-    else if( aEvent.Type( ) == EEventKeyDown ) 
-        {
-        iEngine->ApplicationKeyWasPressed( );
-        ForwardEventL( aEvent );     
-        }
-    else if( aEvent.Type( ) == EEventKeyUp )
-        {
-        ForwardEventL( aEvent );     
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CBSServer::CBSAppUi::ForwardEventL( const TWsEvent& aEvent )
-    {
-    CArrayFixFlat<TInt>* idArray = 
-                    new (ELeave) CArrayFixFlat<TInt>( idsArrayGranularity );
-    iCoeEnv->WsSession().WindowGroupList( idArray );
-    
-    TInt ownId = iCoeEnv->RootWin().Identifier();
-    for( TInt x(0); x < idArray->Count(); x++ )
-        {
-        if( (*idArray)[x] != ownId )
-            {
-            iCoeEnv->WsSession().SendEventToWindowGroup( 
-                                                    (*idArray)[x], aEvent );
-            }
-        }
-    delete idArray;
+    CEikAppUi::HandleWsEventL( aEvent, aDestination );
     }
 
 // -----------------------------------------------------------------------------
@@ -307,8 +276,6 @@
     iCoeEnv->RootWin().EnableGroupChangeEvents( );
     //disable notifications about layout change
     iCoeEnv->RootWin().DisableScreenChangeEvents();
-    //get notifications about application key event
-    iCoeEnv->RootWin().CaptureKeyUpAndDowns( EStdKeyApplication0, 0, 0 );
     }
 
 // ============================= LOCAL FUNCTIONS ===============================
--- a/contentcontrolsrv/ccsrv/src/ccsrvsession.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/contentcontrolsrv/ccsrv/src/ccsrvsession.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -385,30 +385,33 @@
 void CCcSrvSession::HandleGetMsgDataL(
     RMessage2& aMessage )
     {
-    // Read sender and receiver of a response
+    // Read transaction id which message data is requested
     TPckgBuf<TUint32> pckg;    
     aMessage.ReadL( 0, pckg );                        
     TUint32 trId = pckg();
     
     CCcSrvMsg* req( NULL );
-    TInt index( 0 );
-    for( TInt i = 0; i < iRequests.Count() && !req; i++ )
+    TBool found( EFalse );
+    for( TInt i = 0; i < iRequests.Count() && !found; i++ )
         {
-        if ( iRequests[ i ]->TrId() == trId )
+        req = iRequests[ i ];
+        if ( req->Function() == ECcGetMsgData &&
+             req->TrId() == trId )
             {
-            req = iRequests[ i ];
-            index = i;
+            iRequests.Remove( i );
+            found = ETrue;
             }
         }
     
     TInt err( KErrNone );
-    if ( req )
+    if ( found )
         {
+        CleanupStack::PushL( req );
+        
         // Write message data
         aMessage.WriteL( 1, req->Data(), 0);
-        // Remove request
-        iRequests.Remove( index );
-        delete req;
+        
+        CleanupStack::PopAndDestroy( req );
         }
     else
         {
@@ -474,7 +477,9 @@
             found = ETrue;
             }
         else if ( aMessage.Function() == ECcApiResp &&
-                  req->TrId() == aMessage.TrId() )
+                  req->Function() == ECcApiReq &&
+                  req->TrId() == aMessage.TrId() &&
+                  !req->Message().IsNull() )
             {
             // Pending ApiReq transaction found
             iRequests.Remove( i );
@@ -536,7 +541,14 @@
         // Store message to handled later
         CCcSrvMsg* msg = CCcSrvMsg::NewL();
         CleanupStack::PushL( msg );
-        msg->SetFunction( aMessage.Function() );
+        if ( found && aMessage.DataSize() )
+            {
+            msg->SetFunction( ECcGetMsgData );
+            }
+        else
+            {
+            msg->SetFunction( aMessage.Function() );
+            }
         msg->SetSender( aMessage.Sender() );
         msg->SetReceiver( aMessage.Receiver() );
         msg->SetMsgId( aMessage.MsgId() );
--- a/contentpublishingsrv/contentpublishingutils/pluginvalidator/inc/charvesterpluginvalidator.h	Wed Jun 09 10:01:25 2010 +0300
+++ b/contentpublishingsrv/contentpublishingutils/pluginvalidator/inc/charvesterpluginvalidator.h	Mon Jun 21 16:00:38 2010 +0300
@@ -91,7 +91,16 @@
      */
     void LoadPluginL( TPluginInfo& aPluginInfo );
 
+    /**
+     * Calls UpdateL() for every plugin
+     */
+    void UpdatePluginsL();
 
+    /**
+     * Callback used for delayed update
+     */
+    static TInt UpdateCallback( TAny* aValidator );
+    
 private:
 
     /**
@@ -105,6 +114,12 @@
      * Own
      */
     RProperty iInProgressProperty;
+    
+    /*
+     * Idle AO used for delayed update
+     * Own
+     */
+    CIdle* iUpdateIdle;
     };
 
 #endif // CHARVESTERPLUGINVALIDATOR_H
--- a/contentpublishingsrv/contentpublishingutils/pluginvalidator/src/charvesterpluginvalidator.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/contentpublishingsrv/contentpublishingutils/pluginvalidator/src/charvesterpluginvalidator.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -1,30 +1,35 @@
 /*
-* Copyright (c) 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:
+ * Copyright (c) 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:
+ *
+ */
 
 #include <e32property.h>
 #include <ecom/ecom.h>
 #include <mmf/common/mmfcontrollerpluginresolver.h>
 #include <contentharvesterplugin.h> // harvesting plugin
-
 #include "charvesterpluginvalidator.h"
 #include "cblacklisthandler.h"
 
-const TUint32 KInProgressPropertyKey	= { 0x1028000E };
-const TUint32 KHarvesterUid	= { 0x10282E5A };
+const TUint32 KInProgressPropertyKey =
+    {
+    0x1028000E
+    };
+const TUint32 KHarvesterUid =
+    {
+    0x10282E5A
+    };
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -32,12 +37,12 @@
 //
 // ----------------------------------------------------------------------------
 //
-EXPORT_C CHarvesterPluginValidator* CHarvesterPluginValidator::NewL( TUid aUid,
-                                                   TAny *aParameter )
+EXPORT_C CHarvesterPluginValidator* CHarvesterPluginValidator::NewL(
+        TUid aUid, TAny *aParameter)
     {
-    CHarvesterPluginValidator* self =
-          CHarvesterPluginValidator::NewLC( aUid , aParameter );
-    CleanupStack::Pop( self );
+    CHarvesterPluginValidator* self = CHarvesterPluginValidator::NewLC(aUid,
+            aParameter);
+    CleanupStack::Pop(self);
     return self;
     }
 
@@ -45,25 +50,24 @@
 //
 // ----------------------------------------------------------------------------
 //
-EXPORT_C CHarvesterPluginValidator* CHarvesterPluginValidator::NewLC( TUid aUid,
-                                                    TAny *aParameter )
+EXPORT_C CHarvesterPluginValidator* CHarvesterPluginValidator::NewLC(
+        TUid aUid, TAny *aParameter)
     {
-    CHarvesterPluginValidator* self = new( ELeave )
-        CHarvesterPluginValidator( aUid, aParameter );
-    CleanupStack::PushL( self );
+    CHarvesterPluginValidator* self = new (ELeave) CHarvesterPluginValidator(
+            aUid, aParameter);
+    CleanupStack::PushL(self);
     self->ConstructL();
     return self;
     }
 
-
-
 // ---------------------------------------------------------------------------
 // destructor
 // ---------------------------------------------------------------------------
 CHarvesterPluginValidator::~CHarvesterPluginValidator()
     {
-    iInProgressProperty.Close( );
+    iInProgressProperty.Close();
     delete iBlacklist;
+    delete iUpdateIdle;
     }
 
 // ----------------------------------------------------------------------------
@@ -71,11 +75,11 @@
 // ----------------------------------------------------------------------------
 //
 CHarvesterPluginValidator::CHarvesterPluginValidator(TUid aUid,
-    TAny* aParameter) :
+        TAny* aParameter) :
     CPluginValidator(aUid, aParameter)
-{
+    {
 
-}
+    }
 
 // ----------------------------------------------------------------------------
 //
@@ -84,45 +88,44 @@
 void CHarvesterPluginValidator::ConstructL()
     {
     iBlacklist = CBlacklistHandler::NewL();
+    iUpdateIdle = CIdle::NewL( CActive::EPriorityIdle );
+    iUpdateIdle->Start( TCallBack( UpdateCallback, this ) );
     CPluginValidator::ConstructL();
     }
 
-
 // ----------------------------------------------------------------------------
 //
 // ----------------------------------------------------------------------------
 //
 void CHarvesterPluginValidator::ManagePluginsL()
     {
-    TInt errorCode = iInProgressProperty.Define( TUid::Uid( KHarvesterUid ),
-            KInProgressPropertyKey, RProperty::EInt );
+    TInt errorCode = iInProgressProperty.Define(TUid::Uid(KHarvesterUid),
+            KInProgressPropertyKey, RProperty::EInt);
 
-    if ( KErrAlreadyExists == errorCode )
-      {
-      TInt value(-1);
-      iInProgressProperty.Get( TUid::Uid( KHarvesterUid ),
-            KInProgressPropertyKey, value);
-      if ( value == 1 )
+    if (KErrAlreadyExists == errorCode)
         {
-        // property value == inprogress
-        // there was a panic in the previous startup
-        // so we make unofficial blacklist official
-        iBlacklist->CopyBlacklistL( EFalse );
+        TInt value(-1);
+        iInProgressProperty.Get(TUid::Uid(KHarvesterUid),
+                KInProgressPropertyKey, value);
+        if (value == 1)
+            {
+            // property value == inprogress
+            // there was a panic in the previous startup
+            // so we make unofficial blacklist official
+            iBlacklist->CopyBlacklistL(EFalse);
+            }
         }
-      }
     else
-      {
-      User::LeaveIfError( errorCode );
-      }
+        {
+        User::LeaveIfError(errorCode);
+        }
     // copy blacklisted plugins to unoffical blacklist at startup
-    iBlacklist->CopyBlacklistL( ETrue );
+    iBlacklist->CopyBlacklistL(ETrue);
 
     // set property value to 1 (which means "in progress")
-    iInProgressProperty.Set( TUid::Uid( KHarvesterUid ),
-        KInProgressPropertyKey, 1 );
-
+    iInProgressProperty.Set(TUid::Uid(KHarvesterUid), KInProgressPropertyKey,
+            1);
     CPluginValidator::ManagePluginsL();
-
     // set property value to 0 (which means "finished")
     iInProgressProperty.Set( TUid::Uid( KHarvesterUid ),
         KInProgressPropertyKey, 0 );
@@ -132,32 +135,66 @@
 //
 // ----------------------------------------------------------------------------
 //
-void CHarvesterPluginValidator::LoadPluginL( TPluginInfo& aPluginInfo )
+void CHarvesterPluginValidator::LoadPluginL(TPluginInfo& aPluginInfo)
     {
-    if ( !iBlacklist->IsPresentL( aPluginInfo.iImplementationUid ) )
-      {
-      //first we append UID to the blacklist
-      iBlacklist->AppendL( aPluginInfo.iImplementationUid );
-      TAny* plug ( NULL );
-      TInt err( KErrNone );
-      TRAP( err, plug = REComSession::CreateImplementationL(
-                    aPluginInfo.iImplementationUid,
-                    aPluginInfo.iDtor_ID_Key, iParameter ) );
-      if( err==KErrNone && plug )
+    if (!iBlacklist->IsPresentL(aPluginInfo.iImplementationUid))
         {
-      TRAP_IGNORE(
-        CleanupStack::PushL( plug );
-        aPluginInfo.iPlugin = plug;
-        iPluginArray.AppendL( aPluginInfo );
-        CleanupStack::Pop( plug );
-           static_cast<CContentHarvesterPlugin*>( plug )->UpdateL()
-            );
+        //first we append UID to the blacklist
+        iBlacklist->AppendL(aPluginInfo.iImplementationUid);
+        TAny* plug(NULL);
+        TInt err(KErrNone);
+            TRAP( err, plug = REComSession::CreateImplementationL(
+                            aPluginInfo.iImplementationUid,
+                            aPluginInfo.iDtor_ID_Key, iParameter ) );
+        if (err == KErrNone && plug)
+            {
+                TRAP_IGNORE(
+                        CleanupStack::PushL( plug );
+                        aPluginInfo.iPlugin = plug;
+                        iPluginArray.AppendL( aPluginInfo );
+                        CleanupStack::Pop( plug );
+                );
+            }
+        //no panic during load so we can remove UID from blacklist
+        iBlacklist->RemoveL(aPluginInfo.iImplementationUid);
         }
-      //no panic during load so we can remove UID from blacklist
-      iBlacklist->RemoveL( aPluginInfo.iImplementationUid );
-      }
     }
 
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+void CHarvesterPluginValidator::UpdatePluginsL()
+    {
+    // set property value to 1 (which means "in progress")
+    iInProgressProperty.Set(TUid::Uid(KHarvesterUid), KInProgressPropertyKey,
+            1);
+    for (TInt i = 0; i < iPluginArray.Count(); i++)
+        {
+        //first we append UID to the blacklist
+        iBlacklist->AppendL(iPluginArray[i].iImplementationUid);
 
+        TRAP_IGNORE( static_cast<CContentHarvesterPlugin*>
+                    ( iPluginArray[i].iPlugin )->UpdateL() );
 
+        //no panic during update so we can remove UID from blacklist
+        iBlacklist->RemoveL(iPluginArray[i].iImplementationUid);
+        }
+    // set property value to 0 (which means "finished")
+    iInProgressProperty.Set(TUid::Uid(KHarvesterUid), KInProgressPropertyKey,
+            0);
+    }
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//  
+TInt CHarvesterPluginValidator::UpdateCallback( TAny* aValidator )
+    {
+    if ( aValidator )
+        {
+        TRAP_IGNORE( static_cast<CHarvesterPluginValidator*>(aValidator)->
+                UpdatePluginsL( ));
+        }
+    return KErrNone;
+    }
--- a/contentpublishingsrv/contentpublishingutils/pluginvalidator/src/cpluginvalidator.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/contentpublishingsrv/contentpublishingutils/pluginvalidator/src/cpluginvalidator.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -196,9 +196,6 @@
     	}
     }
 
-	
-	
-	
 // ----------------------------------------------------------------------------
 //
 // ----------------------------------------------------------------------------
--- a/homescreenpluginsrv/hspsmanager/group/hspsthemeserver.mmp	Wed Jun 09 10:01:25 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/group/hspsthemeserver.mmp	Mon Jun 21 16:00:38 2010 +0300
@@ -85,6 +85,7 @@
 LIBRARY     MemMan.lib
 LIBRARY     ws32.lib    // RWsSession
 LIBRARY     SysLangUtil.lib
+LIBRARY     PlatformEnv.lib
 
 #ifdef _hsps_DEBUG_
 LIBRARY     flogger.lib
--- a/homescreenpluginsrv/hspsmanager/inc/hspsserverutil.h	Wed Jun 09 10:01:25 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsserverutil.h	Mon Jun 21 16:00:38 2010 +0300
@@ -629,6 +629,14 @@
 	     */
 	    static void GetInstalledLanguagesL(
 	            CArrayFixFlat<TInt>*& aLanguages );
+	    /**
+	     * Returns index of internal mass memory drive
+	     * @since S60 5.2 
+	     * @param aFs Reference to open file server handle.
+	     * @return index of internal mass memory drive. KErrNotFound if drive
+	     * does not exists.
+	     */
+	    static TInt GetEmmcDrivePath( RFs& aFs );
 	    
 	private:
         /**
--- a/homescreenpluginsrv/hspsmanager/inc/hspsthemeserver.h	Wed Jun 09 10:01:25 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsthemeserver.h	Mon Jun 21 16:00:38 2010 +0300
@@ -178,8 +178,8 @@
 // C-Drive directory for the SISX installation files
 _LIT( KImportDirectoryC, "c:\\private\\200159c0\\import\\" );
 
-// E-Drive directory for the SISX installation files
-_LIT( KImportDirectoryE, "e:\\private\\200159c0\\import\\" );
+// directory for the SISX installation files
+_LIT( KImportDirectory, "\\private\\200159c0\\import\\" );
 
 /** hspsThemeServer name: */
 _LIT(KhspsThemeServerName,"hspsthemeserver");
--- a/homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -42,6 +42,7 @@
 #include "hspsserverutil.h"
 #include "hspsfamilylistener.h"
 
+
 #ifdef HSPS_LOG_ACTIVE
 #include <hspsodtdump.h>
 #include <hspslogbus.h>
@@ -2205,7 +2206,6 @@
         const TDesC& aPath )
     {
     // Retrieve supported localizations.
-    
     CArrayFixFlat<TInt>* systemEpocLanguageCodes = NULL;
     hspsServerUtil::GetInstalledLanguagesL(
             systemEpocLanguageCodes );
@@ -2213,10 +2213,14 @@
                             
     // Find all entries under the Xuikon folders that
     // match our eclipsing rules and localisations supported by phone.
-    
     RArray<TInt> driveArray;
     CleanupClosePushL( driveArray );   
-    driveArray.Append( EDriveE );
+    TInt drive = hspsServerUtil::GetEmmcDrivePath( iFsSession );
+    if ( drive != KErrNotFound )
+        {
+        driveArray.Append( drive );
+        }
+    
     driveArray.Append( EDriveC );
     driveArray.Append( EDriveZ );     
     
--- a/homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -4737,14 +4737,28 @@
 //
 void ChspsMaintenanceHandler::HandleReinstallationL(
         const TBool aInstallUdaEmmc ) 
-    {       
+    {
     // Install plug-in configurations from the "install" directories
     iThemeServer.InstallWidgetsL( aInstallUdaEmmc );
     if( aInstallUdaEmmc )
         {
-        // Install plug-in configurations from the "import" directories in C and E
+        // Install plug-in configurations from the "import" directories in C 
+        // and emmc(if exists)
         iThemeServer.InstallUDAWidgetsL( KImportDirectoryC );
-        iThemeServer.InstallUDAWidgetsL( KImportDirectoryE );
+
+        TInt drive = hspsServerUtil::GetEmmcDrivePath( 
+                iServerSession->FileSystem() );
+        if ( drive != KErrNotFound )
+            {
+            TDriveUnit unit(drive);
+            HBufC* importDirectoryE = HBufC::NewLC( 
+                    KImportDirectory().Length() + unit.Name().Length() ); 
+            importDirectoryE->Des().Append( unit.Name() );
+            importDirectoryE->Des().Append( KImportDirectory );
+            
+            iThemeServer.InstallUDAWidgetsL( *importDirectoryE );
+            CleanupStack::PopAndDestroy( importDirectoryE );
+            }
         }
     
     // Force updating of the header cache
--- a/homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -30,6 +30,7 @@
 #include "bautils.h" 
 #include "sysutil.h"
 #include <syslangutil.h>
+#include <DriveInfo.h>
 
 
 _LIT(KHspsFolder, "\\200159c0\\themes\\" );
@@ -1996,7 +1997,11 @@
              KDriveAttExclude|KDriveAttRemovable|KDriveAttRemote|KDriveAttSubsted );
          if( aFindFromUdaEmmcDrives )
              {
-             aFs.SetSessionToPrivate( EDriveE );
+             TInt drive = hspsServerUtil::GetEmmcDrivePath( aFs );
+             if ( drive != KErrNotFound )
+                 {
+                 aFs.SetSessionToPrivate( drive );
+                 }
              }
          else 
              {
@@ -2198,6 +2203,28 @@
     
 
 // -----------------------------------------------------------------------------
+// hspsServerUtil::GetEmmcDrivePathL
+// -----------------------------------------------------------------------------
+//
+TInt hspsServerUtil::GetEmmcDrivePath( RFs& aFs )
+    {
+    TInt drive = KErrNotFound;
+    if ( DriveInfo::GetDefaultDrive( 
+            DriveInfo::EDefaultMassStorage, drive ) == KErrNone )
+        {
+        TUint status;
+        if ( DriveInfo::GetDriveStatus( aFs, drive, status ) == KErrNone )
+            {
+            if ( status & DriveInfo::EDriveInternal )
+                {
+                return drive;
+                }
+            }
+        }
+    return KErrNotFound;
+    }          
+
+// -----------------------------------------------------------------------------
 // hspsServerUtil::hspsServerUtil
 // -----------------------------------------------------------------------------
 //
--- a/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -2755,10 +2755,24 @@
         // Install widgets from \private\200159C0\install\ directories (ROM and UDA image)
         InstallWidgetsL();
 
-        // Install widgets from \private\200159C0\imports\ directory (UDA image) C & E
+        // Install widgets from \private\200159C0\imports\ directory 
+        //from c (UDA image) and from emmc
         InstallUDAWidgetsL( KImportDirectoryC );
-        InstallUDAWidgetsL( KImportDirectoryE );
-        
+                
+        TInt drive = hspsServerUtil::GetEmmcDrivePath( iFsSession );
+        if ( drive != KErrNotFound )
+            {
+            TDriveUnit unit(drive);
+            HBufC* importDirectoryE = HBufC::NewLC( 
+                    KImportDirectory().Length() + unit.Name().Length() ); 
+            
+            importDirectoryE->Des().Append( unit.Name() );
+            importDirectoryE->Des().Append( KImportDirectory );
+            
+            InstallUDAWidgetsL( *importDirectoryE );
+            CleanupStack::PopAndDestroy( importDirectoryE );
+            }
+
         // Post RFS installations have been done, prevent re-installations at next startup
         // by reading firmware version and saving it to cenrep.
         GetFWVersion( fwVersion );
--- a/homescreensrv_plat/menu_content_service_api/inc/mcsdef.h	Wed Jun 09 10:01:25 2010 +0300
+++ b/homescreensrv_plat/menu_content_service_api/inc/mcsdef.h	Mon Jun 21 16:00:38 2010 +0300
@@ -55,6 +55,7 @@
 // Menu clients always need to check that the necessary attributes are present.
 //
 
+_LIT( KMenuAttrPredefined, "predefined" );
 _LIT( KMenuAttrTitleName, "title_name" ); ///< Title name (displayed in Title Pane).
 _LIT( KMenuAttrShortName, "short_name" ); ///< Short name.
 _LIT( KMenuAttrLongName, "long_name" ); ///< Long name.
--- a/idlefw/plugins/mcsplugin/data/mcspluginsettingsres.rss	Wed Jun 09 10:01:25 2010 +0300
+++ b/idlefw/plugins/mcsplugin/data/mcspluginsettingsres.rss	Mon Jun 21 16:00:38 2010 +0300
@@ -102,7 +102,6 @@
 RESOURCE AVKON_VIEW r_ai_mcs_settings_view
 {
     menubar = r_ai_mcs_settings_menubar;
-    //cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
     cba = r_scut_softkeys_options_back_change;
 }
 
@@ -243,18 +242,4 @@
     };
 }
 
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE CBA r_scut_softkeys_options_exit_change
-{
-    buttons =
-    {
-        CBA_BUTTON {id = EAknSoftkeyOptions;       txt = text_softkey_option; },
-        CBA_BUTTON {id = EAknSoftkeyExit;          txt = text_softkey_exit;   },
-        CBA_BUTTON {id = EAiScutSettingsCmdChange; txt = qtn_msk_change;      }
-    };
-}
-
 // End of File.
--- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettings.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettings.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -37,11 +37,6 @@
     AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN
 };
 
-const TUid KUidAiFwCommon =
-{
-        AI_UID3_AIFW_COMMON
-};
-
 _LIT(KMCSSettingsResourceFileName, "mcspluginsettingsres.rsc");
 
 /** Implementation table for MCS settings plug-in */
@@ -148,17 +143,6 @@
         break;
 
     case EAknSoftkeyBack:
-        if (iAppUi->View(KGSMainViewUid))
-        {
-        // if we are in GS activate parent plugin view (standby view)...
-        iAppUi->ActivateLocalViewL(KGSPrslnPluginUid);
-        }
-        else
-        {
-            iAppUi->ActivateLocalViewL(iPrevViewId.iViewUid);
-        }
-        break;
-
     case EAknSoftkeyExit:
         iAppUi->HandleCommandL(EAknCmdExit);
         break;
@@ -176,21 +160,6 @@
 //
 void CMCSPluginSettings::DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage)
     {
-    CEikButtonGroupContainer* cba = Cba();
-
-    if (cba)
-    {
-        if (aCustomMessageId == KUidAiFwCommon)
-        {
-            cba->SetCommandSetL(R_SCUT_SOFTKEYS_OPTIONS_EXIT_CHANGE);
-        }
-        else
-        {
-            cba->SetCommandSetL(R_SCUT_SOFTKEYS_OPTIONS_BACK_CHANGE);
-        }
-        cba->DrawDeferred();
-    }
-
     iModel->SetPluginIdL( aCustomMessage );
     iModel->UpdateAppListL( EFalse );
     iModel->UpdateBkmListL( EFalse );
--- a/idlefw/src/idleint/aiuiidleintegration.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/idlefw/src/idleint/aiuiidleintegration.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -221,8 +221,6 @@
 //
 void CAiUiIdleIntegrationImpl::SetCallBubbleIfNeededL()
 	{
-    __PRINTS( "*** CAiUiIdleIntegrationImpl::SetCallBubbleIfNeededL" );
-    
     if( !iIncallBubbleAllowed )
     	{
         TInt callStatus( 0 );
@@ -234,11 +232,8 @@
         // Call ongoing => show bubble
 	  	if( err == KErrNone && callStatus > EPSCTsyCallStateNone )
 	      	{
-			__PRINTS( "*** CAiUiIdleIntegrationImpl::SetCallBubbleIfNeededL - enable" );
-
-            iIncallBubble->SetIncallBubbleAllowedInUsualL( ETrue );
-            iIncallBubble->SetIncallBubbleAllowedInIdleL( ETrue );
-            iIncallBubbleAllowed = ETrue;
+	       	iIncallBubble->SetIncallBubbleAllowedInIdleL( ETrue );                	
+	       	iIncallBubbleAllowed = ETrue;
 	       	}    
     	}
 	}
@@ -249,16 +244,11 @@
 //
 void CAiUiIdleIntegrationImpl::ClearCallBubbleL()
 	{
-    __PRINTS( "*** CAiUiIdleIntegrationImpl::ClearCallBubbleL" );
-
 	 if( iIncallBubbleAllowed )
     	{
-         __PRINTS( "*** CAiUiIdleIntegrationImpl::ClearCallBubbleL - disable" );
-
     	iIncallBubble->SetIncallBubbleAllowedInIdleL( EFalse );
-    	iIncallBubble->SetIncallBubbleAllowedInUsualL( EFalse );
     	iIncallBubbleAllowed = EFalse;
-    	}
+    	}        
 	}
     
 // ----------------------------------------------------------------------------
@@ -292,16 +282,34 @@
 	if ( err == KErrNone )
 		{
 		// Call ongoing => show bubble if not showing already
+		TBool allowed = EFalse;
+		
 		if ( !self->iIncallBubbleAllowed &&
 		     self->iForeground &&
 		    ( callStatus > EPSCTsyCallStateNone ) )
 			{
-            TRAP_IGNORE( self->SetCallBubbleIfNeededL() );
+			allowed = ETrue;
+    		
+			TRAP( err, 
+                self->iIncallBubble->SetIncallBubbleAllowedInIdleL( allowed ) );
+			            		
+			if ( err == KErrNone )
+    		    {
+    			self->iIncallBubbleAllowed = allowed;
+    		    }
 			}
 		// No call ongoing => hide if bubble is visible			
 		else if ( self->iIncallBubbleAllowed && callStatus <= EPSCTsyCallStateNone )
 			{
-    		TRAP_IGNORE( self->ClearCallBubbleL() );
+			allowed = EFalse;
+			
+    		TRAP( err, 
+                self->iIncallBubble->SetIncallBubbleAllowedInIdleL( allowed ) );
+    		
+    		if ( err == KErrNone )
+    		    {
+    			self->iIncallBubbleAllowed = allowed;
+    		    }
 			}
 		}
 	
--- a/menucontentsrv/enginc/menueng.h	Wed Jun 09 10:01:25 2010 +0300
+++ b/menucontentsrv/enginc/menueng.h	Mon Jun 21 16:00:38 2010 +0300
@@ -421,6 +421,11 @@
     */
     void SetIdSeedL( TInt aSeed );
 
+    /**
+    * Appends predefined attribute to items in a tree
+    */
+    void AppendPredefinedAttributeL( );
+    
 private:    // state machine parts
 
     /**
--- a/menucontentsrv/engsrc/menueng.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/menucontentsrv/engsrc/menueng.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -645,6 +645,7 @@
             // Error loading ROM tree is fatal. Nothing we can do.
             User::LeaveIfError( iStatus.Int() );
             iState = ESaveFile;
+            AppendPredefinedAttributeL();
             SaveTempFileL();
             break;
             }
@@ -1201,6 +1202,25 @@
     }
 
 // ---------------------------------------------------------
+// 
+// ---------------------------------------------------------
+//
+void CMenuEng::AppendPredefinedAttributeL( )
+    {
+    __ASSERT_DEBUG( iTree, User::Invariant() );
+    MXCFWNode* root = iTree->Root();
+    RNodeArray nodes;
+    CleanupClosePushL( nodes );
+    iTree->GetNodesOfTypeL(KMenuTypeApp(),nodes, root, ETrue );
+    for (TInt i = 0; i<nodes.Count(); i++)
+    	{
+        CMenuEngObject* object = &Object( *nodes[i] );
+        object->SetAttributeL( KMenuAttrPredefined(), KNullDesC(), EFalse );
+    	}
+    CleanupStack::PopAndDestroy( &nodes );
+    }
+
+// ---------------------------------------------------------
 // CMenuEng::SelfComplete
 // ---------------------------------------------------------
 //
--- a/menucontentsrv/srvsrc/menusrvappscanner.cpp	Wed Jun 09 10:01:25 2010 +0300
+++ b/menucontentsrv/srvsrc/menusrvappscanner.cpp	Mon Jun 21 16:00:38 2010 +0300
@@ -32,7 +32,6 @@
 _LIT( KMenuOne, "1" );
 _LIT( KMenuAttrMmcId, "mmc_id" );
 _LIT( KMenuMassStorage, "mass_storage" );
-_LIT( KMenuPredefinedWidget, "predefined_widget" );
 _LIT( KMenuMmcHistoryFname, "mmchistory" );
 
 // ==================== LOCAL FUNCTIONS ====================
@@ -1058,7 +1057,7 @@
             flags = TMenuItem::EMissing;
             }
         else if ( iEng.ObjectL( aItem.Id() ).FindAttribute(
-                KMenuPredefinedWidget(), val, dummy ) )
+                KMenuAttrPredefined(), val, dummy ) )
             {
             flags = TMenuItem::EMissing;
             }
@@ -1066,7 +1065,7 @@
     else if( iEng.ObjectL( aItem.Id() ).GetAppType()
                 != CMenuEngObject::EWidgetApp
             || iEng.ObjectL( aItem.Id() ).FindAttribute(
-                    KMenuPredefinedWidget(), val, dummy ) )
+            		KMenuAttrPredefined(), val, dummy ) )
         {
         flags = TMenuItem::EHidden;
         }