Revision: 201003 RCL_3 PDK_3.0.h
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Feb 2010 23:21:58 +0200
branchRCL_3
changeset 3 a4a774cb6ea7
parent 0 ff3b6d0fd310
child 6 76e20e0cfdc7
child 7 7237db0d9fca
Revision: 201003 Kit: 201007
cellular/SSSettings/inc/CSSSettingsRefreshContainer.h
cellular/telephonysettings/src/PSetCallDivertingBase.cpp
cellular/telephonysettings/src/PSetCallDivertingBasicImpl.cpp
cellular/telephonysettings/src/PSetCallDivertingDualAffectImpl.cpp
cellular/telephonysettings/src/PsetCallDiverting.cpp
cellular/telephonysettings/src/PsetNetwork.cpp
group/bld.inf
networkhandling/networkhandlingengine/Group/networkhandling.mmp
networkhandling/networkhandlingengine/NetworkHandlingInc/CNWDynamicCapsMonitor.h
networkhandling/networkhandlingengine/NetworkHandlingSrc/CNWDynamicCapsMonitor.cpp
networkhandling/networkhandlingengine/NetworkHandlingSrc/CNWMessageHandler.cpp
networkhandling/networkhandlingengine/NetworkHandlingSrc/CNWNetworkRegistrationStatusMonitor.cpp
nwnotifier/data/nwnotifier.rss
nwnotifier/group/bld.inf
nwnotifier/group/nwnotifier.mmp
nwnotifier/inc/networknotifiernotewrapper.h
nwnotifier/inc/nwregistrationstatusmonitor.h
nwnotifier/loc/networknotifier.loc
nwnotifier/rom/nwnotifier.iby
nwnotifier/rom/nwnotifierresources.iby
nwnotifier/src/networknotifiernotewrapper.cpp
nwnotifier/src/nwnotifier.cpp
nwnotifier/src/nwregistrationstatusmonitor.cpp
phoneclientserver/CallUI/Inc/CaUiEngine/CaUiEngFactImpl.h
phoneclientserver/CallUI/Inc/CaUiEngine/CaUiEngine.h
phoneclientserver/CallUI/Src/CaUiEngine/CaUiActiveObject.cpp
phoneclientserver/CallUI/Src/CaUiEngine/CaUiDialogs.cpp
phoneclientserver/CallUI/Src/CaUiEngine/CaUiEngine.cpp
phoneclientserver/CallUI/Src/CaUiEngine/CaUiMessageSender.cpp
phoneclientserver/CallUI/Src/CaUiEngine/CaUiVoIPExtension.cpp
phoneclientserver/CallUI/Src/CaUiPlugin/CaUiPlugin.cpp
phoneclientserver/EnPolicy/Inc/DosEnPolicy/CDOSEmergencyNumberPolicy.h
phoneclientserver/EnPolicy/Inc/SosEnPolicy/CSOSEmergencyNumberPolicyManager.h
phoneclientserver/phoneclient/Inc/ExtCallWrapper/ExtCallWrapper_Aiw/CPhCltDialer.h
phoneclientserver/phoneclient/Src/ImageHandler/CPhCltImageHandlerImplementation.cpp
phoneclientserver/phoneclient/Src/UssdWrapper/CPhCltUssdImp.cpp
phoneclientserver/phoneserver/Inc/Standard/Standard_Aiw/CPhSrvCallRequestManager.h
phoneclientserver/phoneserver/Src/Messenger/CPhSrvMessengerRequestManager.cpp
phoneclientserver/phoneserver/Src/Standard/CPhSrvEmergencyNumberManager.cpp
phoneclientserver/phoneserver/Src/Standard/CPhSrvSession.cpp
phoneclientserver/phoneserver/Src/Standard/PhSrvSubSessionFactory.cpp
phoneclientserver/phoneserver/Src/Ussd/CPhSrvUssdManager.cpp
phonecmdhandler/phonecmdhnlr/src/PhoneHandlerControl.cpp
phonesrv_plat/call_information_api/tsrc/run_auto_tests.bat
phonesrv_plat/network_handling_engine_api/inc/NWHandlingEngine.h
phonesrv_plat/phone_settings_api/inc/PSetRefreshHandler.h
phonesrv_plat/phone_settings_api/inc/PsetNetwork.h
phonesrv_plat/phone_settings_api/inc/PsetSAObserver.h
phonesrv_plat/phone_settings_observer_api/inc/MPsetCliObserver.h
phonesrv_plat/ss_settings_api/inc/MSSSettingsRefreshObserver.h
phonesrv_plat/telephony_mediator_api/inc/callremotepartyinformation.h
satui/satplugin/aisatplugininc/aisatpluginuids.hrh
satui/satplugin/aisatplugininc/caisatplugin.h
satui/satplugin/aisatpluginsrc/caisatplugin.cpp
satui/satplugin/data/aisatplugin.rss
--- a/cellular/SSSettings/inc/CSSSettingsRefreshContainer.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/cellular/SSSettings/inc/CSSSettingsRefreshContainer.h	Fri Feb 19 23:21:58 2010 +0200
@@ -21,7 +21,7 @@
 
 
 //  INCLUDES
-#include <MSSSettingsRefreshHandler.h>
+#include <msssettingsrefreshhandler.h>
 
 
 // FORWARD DECLARATIONS
--- a/cellular/telephonysettings/src/PSetCallDivertingBase.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/cellular/telephonysettings/src/PSetCallDivertingBase.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -26,7 +26,7 @@
 #include <e32svr.h>
 #include <featmgr.h>
 #include <centralrepository.h>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
 
 #include "PsetCallDiverting.h"
 #include "PsetContainer.h"
--- a/cellular/telephonysettings/src/PSetCallDivertingBasicImpl.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/cellular/telephonysettings/src/PSetCallDivertingBasicImpl.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -26,7 +26,7 @@
 #include <e32svr.h>
 #include <featmgr.h>
 #include <centralrepository.h>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
 
 #include "PsetCallDiverting.h"
 #include "PsetContainer.h"
--- a/cellular/telephonysettings/src/PSetCallDivertingDualAffectImpl.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/cellular/telephonysettings/src/PSetCallDivertingDualAffectImpl.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -27,7 +27,7 @@
 #include <e32svr.h>
 #include <featmgr.h>
 #include <centralrepository.h>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
 
 #include "PsetCallDiverting.h"
 #include "PsetContainer.h"
--- a/cellular/telephonysettings/src/PsetCallDiverting.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/cellular/telephonysettings/src/PsetCallDiverting.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -25,7 +25,7 @@
 
 #include <vmnumber.h>
 #include <centralrepository.h>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
 
 #include "PsetCallDiverting.h"
 #include "PsetContainer.h"
--- a/cellular/telephonysettings/src/PsetNetwork.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/cellular/telephonysettings/src/PsetNetwork.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -273,12 +273,12 @@
     // resulting in a possible dead lock when CActive::Cancel()'s User::WaitForRequest( iStatus ) never gets signaled.
     ClearParams();
     
-    if ( iActiveObserver == ENetSelectObserver && iObserver )
+    if ( iActiveObserver == ENetSelectObserver )
         {
         __ASSERT_ALWAYS( iObserver, Panic( KPSNameOfClass, ENetNoObserver ) );
         HideRequestNoteL();
         }
-    else if ( iActiveObserver == ENetModeObserver && iNetworkModeObserver )
+    else if ( iActiveObserver == ENetModeObserver )
         {        
         __ASSERT_ALWAYS( iNetworkModeObserver, 
                      Panic( KPSNameOfClass, ENetNoNetworkObserver  ) );
--- a/group/bld.inf	Tue Feb 02 01:11:09 2010 +0200
+++ b/group/bld.inf	Fri Feb 19 23:21:58 2010 +0200
@@ -28,6 +28,6 @@
 #include "../phonesrv_plat/group/bld.inf"
 #include "../phonesrv_pub/group/bld.inf"
 #include "../phonecmdhandler/group/bld.inf"
-
+#include "../nwnotifier/group/bld.inf"
 
 // End of File
--- a/networkhandling/networkhandlingengine/Group/networkhandling.mmp	Tue Feb 02 01:11:09 2010 +0200
+++ b/networkhandling/networkhandlingengine/Group/networkhandling.mmp	Fri Feb 19 23:21:58 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -46,6 +46,7 @@
 #ifdef RD_PHONE_NG
 SOURCE          cnwnetworkselectionsettingmonitor.cpp
 #endif
+SOURCE          CNWDynamicCapsMonitor.cpp  
 
 #ifdef __PROTOCOL_GSM
 #include "Networkhandlinggsm.mmp"
@@ -65,6 +66,8 @@
 LIBRARY         charconv.lib
 
 LIBRARY         centralrepository.lib
+LIBRARY         etelpckt.lib
+LIBRARY         FeatMgr.lib
 
 #ifdef WINSCW
     DEFFILE ../Bwins/NETWORKHANDLING.DEF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkhandling/networkhandlingengine/NetworkHandlingInc/CNWDynamicCapsMonitor.h	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  The header file of CNWDynamicCapsMonitor
+*
+*/
+
+
+
+#ifndef CNWDYNAMICCAPSMONITOR_H
+#define CNWDYNAMICCAPSMONITOR_H
+
+//  INCLUDES
+#include "CNWNetworkMonitorBase.h"
+
+// FORWARD DECLARATIONS
+class CNWMessageHandler;
+
+// CLASS DECLARATION
+
+/**
+*  Monitors dynamic caps change events from MMEtel.
+*  Ensures that alpha tag is displayed only when CS registration is successful.
+*  If PS registration is successful but CS registration failed, the alpha tag 
+*  should not be shown so users do not think they can make voice calls.
+*
+*  @lib networkhandling.lib
+*  @since Series 60_5.0
+*/
+NONSHARABLE_CLASS( CNWDynamicCapsMonitor ) : public CNWNetworkMonitorBase
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CNWDynamicCapsMonitor* NewL(
+            CNWMessageHandler& aOwner, 
+            RMobilePhone& aPhone, 
+            TNWInfo& aNetworkInfo, 
+            RMmCustomAPI& aCustomAPI );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CNWDynamicCapsMonitor();
+        
+       
+        
+    protected:  // Functions from CActive
+        /**
+        * Cancels asyncronous request(s).
+        * 
+        */
+        void DoCancel();
+
+        /**
+        * Informs object that asyncronous request is ready.
+        * 
+        */
+        void RunL();
+        
+        /**
+         * From CActive, RunError.
+         * Processes any errors.
+         * @param aError The leave code reported.
+         * @result return KErrNone if leave is handled.
+         */
+         TInt RunError( TInt aError );
+
+    private:
+
+        /**
+        * Update Dynamic Caps Flags field of TNWInfo
+        * @param aDynamicCapsFlags The current dynamic caps flags.
+        */
+        void UpdateDynamicCapsFlags( 
+            const RPacketService::TDynamicCapsFlags aDynamicCapsFlags);
+
+        /**
+        * Executes the NotifyDynamicCapsChange() function.
+        * 
+        */
+        void IssueRequest();
+
+        /**
+        * C++ default constructor.
+        */
+        CNWDynamicCapsMonitor( 
+            CNWMessageHandler& aOwner, 
+            RMobilePhone& aPhone, 
+            TNWInfo& aNetworkInfo, 
+            RMmCustomAPI& aCustomAPI
+            );
+            
+        /**
+        * Second-phase constructor.
+        */
+        void ConstructL();  
+                   
+    // Data:
+        
+        // For RPacketService call
+        RPacketService iPacketService;
+        // Current dynamic caps flags.
+        RPacketService::TDynamicCapsFlags iDynamicCapsFlags;
+                
+   };
+
+#endif      // CNWDYNAMICCAPSMONITOR_H
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkhandling/networkhandlingengine/NetworkHandlingSrc/CNWDynamicCapsMonitor.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  This module contains the implementation of 
+*               CNWDynamicCapsMonitor
+*
+*/
+
+//  INCLUDE FILES
+#include    <pcktcs.h>                         // for EPacketGetDynamicCaps
+#include    <etelpckt.h>                       // for RPacketService
+#include    "CNWDynamicCapsMonitor.h"
+#include    "CNWMessageHandler.h"
+#include    "NWLogger.h"
+
+// ================= MEMBER FUNCTIONS =======================================
+
+// -----------------------------------------------------------------------------
+// CNWDynamicCapsMonitor::CNWDynamicCapsMonitor
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CNWDynamicCapsMonitor::CNWDynamicCapsMonitor( 
+        CNWMessageHandler& aOwner, // ref. to owner class
+        RMobilePhone& aPhone,      // ref. to phone
+        TNWInfo& aNetworkInfo,     // ref. to network info struct 
+        RMmCustomAPI& aCustomAPI ) //ref. to customAPI
+         : CNWNetworkMonitorBase( aOwner,
+                                  aPhone,
+                                  aNetworkInfo,
+                                  aCustomAPI )
+    {
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::CNWDynamicCapsMonitor -START" );
+    CActiveScheduler::Add( this );
+    }
+    
+    
+// -----------------------------------------------------------------------------
+// CNWDynamicCapsMonitor::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CNWDynamicCapsMonitor::ConstructL()
+    {
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::ConstructL -START" );
+    User::LeaveIfError( iPacketService.Open( iPhone ) );
+    // Assign lower priority than other networkhandling monitors.
+    // (Default in CNWNetworkMonitorBase is EPriorityStandard)
+    SetPriority( EPriorityIdle );
+    
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::ConstructL -END" );
+    }
+
+// -----------------------------------------------------------------------------
+// CNWDynamicCapsMonitor::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CNWDynamicCapsMonitor* CNWDynamicCapsMonitor::NewL( 
+        CNWMessageHandler& aOwner, 
+        RMobilePhone& aPhone, 
+        TNWInfo& aNetworkInfo, 
+        RMmCustomAPI& aCustomAPI )
+    {
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::NewL -START" );
+    CNWDynamicCapsMonitor* self = 
+        new( ELeave ) CNWDynamicCapsMonitor( aOwner,
+                                             aPhone, 
+                                             aNetworkInfo,
+                                             aCustomAPI );
+    
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::NewL -END" );
+    return self;
+    }
+    
+
+// Destructor
+CNWDynamicCapsMonitor::~CNWDynamicCapsMonitor()
+    {
+    Cancel();    
+    iPacketService.Close();
+    
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::~CNWDynamicCapsMonitor -END" );
+    }
+
+// -----------------------------------------------------------------------------
+// CNWDynamicCapsMonitor::DoCancel
+// Cancels the pending async. command.
+// -----------------------------------------------------------------------------
+//
+void CNWDynamicCapsMonitor::DoCancel()
+    {
+    NWLOGSTRING( KNWREQEND, "NW: CNWDynamicCapsMonitor::DoCancel: Request CancelAsyncRequest( EPacketNotifyDynamicCapsChange )" );
+    iPacketService.CancelAsyncRequest( EPacketNotifyDynamicCapsChange );
+    }
+
+// -----------------------------------------------------------------------------
+// CNWDynamicCapsMonitor::RunL
+// Receives notification that the dynamic packet data capabilities changed.
+// Saves new value in TNWInfo object. (This will be used by active idle to
+// hide the alpha tag if CS registration is unsuccessful.)
+// -----------------------------------------------------------------------------
+//
+void CNWDynamicCapsMonitor::RunL()
+    {
+    NWLOGSTRING2( KNWREQEND,
+        "NW: CNWDynamicCapsMonitor::RunL, iStatus = %d", iStatus.Int() );
+    
+    if( iStatus.Int() == KErrNone )
+        {
+        if ( iNWNetworkInfo.iDynamicCapsFlags != iDynamicCapsFlags )
+            {
+            // Update dynamic caps info
+            UpdateDynamicCapsFlags( iDynamicCapsFlags );
+            iOwner.SendMessage( 
+                MNWMessageObserver::ENWMessageDynamicCapsChange );
+            }
+        IssueRequest(); 
+        }
+        // Check if monitor can be restarted.
+    else if ( iStatus != KErrCancel && iStatus != KErrServerTerminated )
+        {
+        NWLOGSTRING2( KNWERROR,
+            "NW: CNWDynamicCapsMonitor::RunL, Unknown error situation, iStatus = %d", iStatus.Int() );
+        IssueRequest();
+        }
+    else
+        {
+        NWLOGSTRING2( KNWERROR,
+            "NW: CNWDynamicCapsMonitor::RunL, Server Terminated or request Cancelled, iStatus = %d", iStatus.Int() );
+        }
+     }
+
+
+// -----------------------------------------------------------------------------
+// CNWDynamicCapsMonitor::IssueRequest
+// Request a notification when the dynamic packet data capabilities change.
+// -----------------------------------------------------------------------------
+//
+void CNWDynamicCapsMonitor::IssueRequest()
+    {
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::IssueRequest() -START" );
+    
+    if( !IsActive() )
+        {
+        NWLOGSTRING( KNWREQIN, 
+                        "NW:CNWDynamicCapsMonitor::IssueRequest > RPacketService::NotifyDynamicCapsChange" );
+        iPacketService.NotifyDynamicCapsChange( iStatus, iDynamicCapsFlags );
+        SetActive();
+        }
+    else 
+        {
+        NWLOGSTRING( KNWERROR, 
+            "NW: CNWDynamicCapsMonitor::IssueRequest: Already active" );
+        }
+    
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::IssueRequest() -END" );
+    }
+ 
+
+// -----------------------------------------------------------------------------
+// CNWDynamicCapsMonitor::UpdateDynamicCapsFlags()
+// Update the value of iNWNetworkInfo.iDynamicCapsFlags
+// -----------------------------------------------------------------------------
+//
+void CNWDynamicCapsMonitor::UpdateDynamicCapsFlags( 
+        const RPacketService::TDynamicCapsFlags aDynamicCapsFlags )
+    {
+    NWLOGSTRING( KNWOBJECT, "NW: CNWDynamicCapsMonitor::UpdateDynamicCapsFlags()" );
+    iNWNetworkInfo.iDynamicCapsFlags = aDynamicCapsFlags;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNWDynamicCapsMonitor::RunError()
+// Processes any errors.
+// -----------------------------------------------------------------------------
+//
+TInt CNWDynamicCapsMonitor::RunError( TInt /*aError*/ )
+    {
+    return KErrNone;    // Handled the error fully
+    }
+
+// end of file
--- a/networkhandling/networkhandlingengine/NetworkHandlingSrc/CNWMessageHandler.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/networkhandling/networkhandlingengine/NetworkHandlingSrc/CNWMessageHandler.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies). 
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -18,6 +18,7 @@
 
 
 // INCLUDE FILES
+#include    <FeatMgr.h>
 #include    "NWHandlingEngine.h"
 #include    "CNWMessageHandler.h"
 #include    "CNWNetworkCurrentNetworkMonitor.h"
@@ -31,12 +32,16 @@
 #ifdef RD_PHONE_NG
 #include    "cnwnetworkselectionsettingmonitor.h"
 #endif // RD_PHONE_NG
+#include    "CNWDynamicCapsMonitor.h"
 // CONSTANTS
 const TInt KNWNetworkMonitorCurrent = 0;
 const TInt KNWNetworkMonitorMode = 1;
 const TInt KNWNetworkMonitorRegistration = 2;
 #ifdef RD_PHONE_NG
 const TInt KNWNetworkMonitorSettingSelection = 3;
+const TInt KNWNetworkMonitorDynamicCaps = 4;
+#else // RD_PHONE_NG
+const TInt KNWNetworkMonitorDynamicCaps = 3;
 #endif // RD_PHONE_NG
 
 
@@ -207,6 +212,32 @@
 
     // Start initialising network handling module.
     iMonitorContainer[ KNWNetworkMonitorRegistration ]->Initialise();
+
+    // Create CNWDynamicCapsMonitor object and insert it to monitor container.
+    // Will be used to hide alpha tag when CS registration is unsuccessful
+    FeatureManager::InitializeLibL();
+    TInt err( KErrNone );
+    if( FeatureManager::FeatureSupported( 
+            KFeatureIdFfDisplayNetworkNameAfterCsRegistration ))
+        {
+        TRAP(err, 
+            CNWDynamicCapsMonitor* tempDynamicCapsMonitor =
+                CNWDynamicCapsMonitor::NewL( *this, iPhone, iNetworkInfo, 
+                                             iCustomAPI );
+            CleanupStack::PushL( tempDynamicCapsMonitor );
+
+            User::LeaveIfError( iMonitorContainer.Insert( 
+                                        tempDynamicCapsMonitor,
+                                        KNWNetworkMonitorDynamicCaps ) );
+            CleanupStack::Pop( tempDynamicCapsMonitor ); );
+        if( err == KErrNone )
+            {
+            iMonitorContainer
+                [ KNWNetworkMonitorDynamicCaps ]->Initialise();
+            }
+        }
+    FeatureManager::UnInitializeLib();
+    User::LeaveIfError(err);
     
     NWLOGSTRING( KNWOBJECT,
         "NW: CNWMessageHandler::BaseConstructL() End" );
@@ -399,6 +430,11 @@
             return _L("ENWMessageNetworkProviderNameUpdating"); 
         case MNWMessageObserver::ENWMessageServiceProviderNameUpdating:
             return _L("ENWMessageServiceProviderNameUpdating"); 
+        case MNWMessageObserver::ENWMessageDynamicCapsChange:
+            {
+            return _L("ENWMessageDynamicCapsChange");
+            break;
+            }
         default:
             NWLOGSTRING2( KNWINT, 
                 "NW: CNWMessageHandler::GetNameByMessage, unknown message = %d",
--- a/networkhandling/networkhandlingengine/NetworkHandlingSrc/CNWNetworkRegistrationStatusMonitor.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/networkhandling/networkhandlingengine/NetworkHandlingSrc/CNWNetworkRegistrationStatusMonitor.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies). 
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -18,6 +18,7 @@
 
 
 //  INCLUDE FILES
+#include    <featmgr.h>
 #include    "CNWNetworkRegistrationStatusMonitor.h"
 #include    "CNWMessageHandler.h"
 #include    "NetworkHandlingDomainPSKeys.h"
@@ -66,6 +67,7 @@
         "NW: CNWNetworkRegistrationStatusMonitor::\
         ConstructL() Begin." );
     
+    FeatureManager::InitializeLibL();
     RProperty::TType type( RProperty::EInt );
     TSecurityPolicy readPolicy( ECapability_None );
     TSecurityPolicy writePolicy( ECapabilityWriteDeviceData );
@@ -146,6 +148,8 @@
     NWLOGSTRING( KNWOBJECT, 
         "NW: CNWNetworkRegistrationStatusMonitor::\
         ~CNWNetworkRegistrationStatusMonitor() End." );
+    FeatureManager::UnInitializeLib();
+    NWLOGSTRING( KNWOBJECT, "NW: CNWNetworkRegistrationStatusMonitor::~CNWNetworkRegistrationStatusMonitor complete." );
     }
 
 // ----------------------------------------------------------------------------
@@ -209,6 +213,13 @@
         NWLOGSTRING2( KNWERROR,
             "NW: CNWNetworkRegistrationStatusMonitor::RunL, Unknown error \
             situation, iStatus = %d", iStatus.Int() );
+   
+        if ( FeatureManager::FeatureSupported( KFeatureIdFfManualSelectionPopulatedPlmnList ) )
+            {
+            iOwner.SendErrorMessage( MNWMessageObserver::ENWNotifyNetworkRegistrationStatusChange, 
+                                     iStatus.Int() );
+            }
+        
         IssueRequest();
         }
     else
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/data/nwnotifier.rss	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Resource file of NWNotifier
+*
+*/
+
+//  INCLUDES
+#include <eikon.rh>
+#include "../loc/networknotifier.loc" 
+
+NAME NWNS
+
+//  RESOURCE DEFINITIONS
+// -----------------------------------------------------------------------------
+//
+//  Define the resource file signature
+//  This resource should be empty.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE RSS_SIGNATURE 
+    {
+    }
+
+
+//
+// Localisation
+///////////////////////////////
+STRUCT STRING
+   {
+   LTEXT text;
+   }
+
+
+// -----------------------------------------------------------------------------
+//
+// Resources for messages.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE STRING r_sim_not_prov_mm2      { text=qtn_note_smartchip_mm2; }
+RESOURCE STRING r_sim_not_allow_mm3     { text=qtn_note_smartchip_mm3; }
+RESOURCE STRING r_call_failed_mm4       { text=qtn_note_call_failed_mm4; }
+RESOURCE STRING r_phone_not_allow_mm5   { text=qtn_note_phone_not_allow_mm5; }
+RESOURCE STRING r_phone_not_allow_mm6   { text=qtn_note_phone_not_allow_mm6; }
+RESOURCE STRING r_sim_not_allow         { text=qtn_note_smartchip_not_allow; }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/group/bld.inf	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include <platform_paths.hrh>  
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_MMPFILES
+nwnotifier.mmp
+
+PRJ_EXPORTS
+
+//IBY
+../rom/nwnotifier.iby             CORE_MW_LAYER_IBY_EXPORT_PATH(nwnotifier.iby)
+../rom/nwnotifierresources.iby    LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(nwnotifierresources.iby)
+
+// For EE texts
+../rom/nwnotifierresources.iby    CORE_APP_LAYER_IBY_EXPORT_PATH(nwnotifierresources.iby)
+
+//LOC
+../loc/networknotifier.loc        MW_LAYER_LOC_EXPORT_PATH(networknotifier.loc)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/group/nwnotifier.mmp	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Project specification file for nwnotifier.exe
+*
+*/
+
+#include <platform_paths.hrh>
+
+MW_LAYER_SYSTEMINCLUDE
+
+TARGET            nwnotifier.exe
+TARGETTYPE        exe
+UID               0x1000008d 0x20026826
+SECUREID          0x20026826
+
+SOURCEPATH		    ../data
+
+// Application Resource
+START RESOURCE    nwnotifier.rss
+HEADER
+TARGET            nwnotifier_0x20026826
+TARGETPATH        RESOURCE_FILES_DIR
+LANGUAGE_IDS
+END //RESOURCE
+
+USERINCLUDE    ../inc
+
+LIBRARY        euser.lib
+LIBRARY        aknnotify.lib // conf query
+LIBRARY        eiksrv.lib // conf query
+LIBRARY        bafl.lib
+LIBRARY        efsrv.lib // file
+LIBRARY        etel.lib // 
+LIBRARY        etelmm.lib
+LIBRARY        platformenv.lib
+
+VENDORID       VID_DEFAULT
+
+CAPABILITY     CAP_SERVER
+
+SOURCEPATH     ../src
+SOURCE         networknotifiernotewrapper.cpp 
+SOURCE         nwnotifier.cpp
+SOURCE         nwregistrationstatusmonitor.cpp
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/inc/networknotifiernotewrapper.h	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Active object wrapper to handle popup note.
+*
+*/
+
+#ifndef __NETWORKNOTIFIER_WRAPPER_H__
+#define __NETWORKNOTIFIER_WRAPPER_H__
+
+// SYSTEM INCLUDES
+#include <e32base.h>
+#include <f32file.h>
+
+// INCLUDES
+#include <nwnotifier_0x20026826.rsg>
+
+// FORWARD CLASS DECLARATIONS
+class CAknGlobalConfirmationQuery;
+
+// CONSTANTS
+                           
+_LIT( KResFile, "\\resource\\NWNotifier_0x20026826.rsc" );   
+
+    
+// OBSERVER DECLARATION
+class MNoteWrapperObserver
+    {
+    public:
+
+        virtual void PopupNoteClosed( ) = 0;
+    };
+
+// CLASS DECLARATION
+/** 
+ * This Class provides implementation for handling the error notes
+ */
+
+class CNetworkNotifierNoteWrapper : public CActive
+    {
+    public:
+    
+        /**
+        * Two-phased constructor.
+        */
+        static CNetworkNotifierNoteWrapper* NewL( MNoteWrapperObserver& aObserver,
+                                                  TInt aResID );
+        
+        /**
+        * Destructor.
+        */
+        ~CNetworkNotifierNoteWrapper();
+        
+        /**
+        * Monitor inserts the latest error notification err# from ETEL to this stack.
+        * @param aResID Resource id of the note to be added to the notestack.
+        */
+        void AppendNote( const TInt aResID );
+        
+        
+    private:
+        
+        /**
+        * C++ default constructor.
+        * @param aObserver Reference to observer class. CNWRegistrationStatus is listening.
+        * @param aResID Resource id number to be inserted into the notestack.
+        */
+        CNetworkNotifierNoteWrapper( MNoteWrapperObserver& aObserver,
+                                     TInt aResID );
+           
+        /**
+        * Second-phase constructor.
+        * 
+        */
+        void ConstructL();
+        
+        /**
+        * Informs object that asyncronous request is ready.
+        * 
+        */
+        void RunL();
+        
+        /**
+        * Cancels asyncronous request(s).
+        * 
+        */
+        void DoCancel();
+        
+        /**
+        * From CActive, RunError.
+        * Processes any errors.
+        * @param aError The leave code reported.
+        * @result return KErrNone if leave is handled.
+        */
+        TInt RunError( TInt aError );
+        
+        /**
+        * Reads the localized error strings from resource. 
+        * @return The localized error string.
+        */
+        HBufC* ReadResourceLC();
+              
+        /**
+        * Displays the error note passed as a parameter.
+        * @param aNote Pointer to the note.
+        */
+        void DisplayPopupNoteL( HBufC* aNote );
+
+    private:    // Data
+        
+        // Handle to file server
+        RFs iFs;
+        
+        // Note
+        CAknGlobalConfirmationQuery* iGlobalQuery; 
+        
+        // Callback receiver
+        MNoteWrapperObserver& iObserver;
+         
+        // Error note stack<resourceID>
+        RArray<TInt> iErrNotes; 
+    };
+
+#endif // __NETWORKNOTIFIER_WRAPPER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/inc/nwregistrationstatusmonitor.h	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: This file contains the header file of the NWRegistrationStatusMonitor class.
+*
+*/
+
+#ifndef NWREGISTRATION_STATUS_H
+#define NWREGISTRATION_STATUS_H
+
+//  SYSTEM INCLUDES
+#include <e32base.h>
+#include <e32std.h>
+#include <etelmm.h>
+
+// INCLUDES
+#include "networknotifiernotewrapper.h"
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+/**
+*  Monitors network registration status change event
+*  from MMEtel
+*/
+class CNWRegistrationStatusMonitor : public CActive, 
+                                            MNoteWrapperObserver
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CNWRegistrationStatusMonitor* NewL();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CNWRegistrationStatusMonitor();
+        
+    
+    protected:  // Functions from CActive
+
+        /**
+        * Cancels asyncronous request(s).
+        * 
+        */
+        void DoCancel();
+
+        /**
+        * Informs object that asyncronous request is ready.
+        * 
+        */
+        void RunL();
+        
+        /**
+         * From CActive, RunError.
+         * Processes any errors.
+         * @param aError The leave code reported.
+         * @result return KErrNone if leave is handled.
+         */
+         TInt RunError( TInt aError );
+
+    private:
+   
+        /**
+        * C++ default constructor.
+        * 
+        */
+        CNWRegistrationStatusMonitor(); 
+                     
+        /**
+        * Second-phase constructor.
+        * 
+        */
+        void ConstructL();  
+        
+        /**
+        * Issues a request to ETel to provide NW registration 
+        * status information.
+        * 
+        */
+        void IssueRequest();
+
+        /**
+        * Maps network registration status errors to resource ids.
+        * 
+        */
+        void ParseErrCode();
+        
+        // from MNoteWrapperObserver
+        void PopupNoteClosed();
+       
+        /**
+        * Open the connection to RMobilePhone
+        * 
+        */
+        void OpenConnectionL();
+        
+        /**
+        * Closes the connection to RMobilePhone
+        * 
+        */
+        void CloseConnection();
+        
+        
+    private: // Data
+        
+        // Current registration status info.
+        RMobilePhone::TMobilePhoneRegistrationStatus iRegistrationStatus;
+        
+        // Handle to RMobilePhone
+        RMobilePhone iPhone;
+  
+        // Handle to Telephony server
+        RTelServer iTelServer;
+        
+        // Parsed res id#
+        TInt iResID;
+        
+        // Note wrapper
+        CNetworkNotifierNoteWrapper* iNoteWrapper;
+   };
+#endif      // NWREGISTRATION_STATUS_H
+            
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/loc/networknotifier.loc	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Resource localisation file.
+*
+*/
+
+// LOCALIZATION STRINGS
+
+// d:Popup menu for the sim not provisioned error
+// l:popup_note_window/opt1
+// r:5.0
+//
+#define qtn_note_smartchip_mm2 "SIM not provisioned MM #2"
+
+
+// d:Popup menu for the sim not provisioned error
+// l:popup_note_window/opt1
+// r:5.0
+//
+#define qtn_note_smartchip_mm3  "SIM not allowed MM #3"
+
+// d:Popup menu for the sim not provisioned error
+// l:popup_note_window/opt1
+// r:5.0
+//
+#define qtn_note_call_failed_mm4 "Call Failed MM #4"
+
+// d:Popup menu for the sim not provisioned error
+// l:popup_note_window/opt1
+// r:5.0
+//
+#define qtn_note_phone_not_allow_mm5  "Phone not allowed MM #5"
+
+// d:Popup menu for the sim not provisioned error
+// l:popup_note_window/opt1
+// r:5.0
+//
+#define qtn_note_phone_not_allow_mm6   "Phone not allowed MM #6"
+
+// d:Popup menu for the sim not provisioned error
+// l:popup_note_window/opt1
+// r:5.0
+//
+#define qtn_note_smartchip_not_allow   "SIM not allowed"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/rom/nwnotifier.iby	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: IBY file of NWNotifier
+*
+*/
+
+#ifndef NWNOTIFIER_IBY
+#define NWNOTIFIER_IBY
+
+file=ABI_DIR\BUILD_DIR\nwnotifier.exe   PROGRAMS_DIR\nwnotifier.exe
+
+#endif // NWNOTIFIER_IBY
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/rom/nwnotifierresources.iby	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: IBY file of NWNotifier resources
+*
+*/
+
+#ifndef NWNOTIFIERRESOURCES_IBY
+#define NWNOTIFIERRESOURCES_IBY
+
+data = DATAZ_\RESOURCE_FILES_DIR\NWNotifier_0x20026826.rsc    RESOURCE_FILES_DIR\NWNotifier_0x20026826.rsc
+
+#endif // NWNOTIFIERRESOURCES_IBY
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/src/networknotifiernotewrapper.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,259 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Active object wrapper to handle popup note.
+*
+*/
+
+// System includes
+#include <avkon.hrh>
+#include <aknglobalconfirmationquery.h> 
+#include <bautils.h>
+#include <pathinfo.h>
+
+// Includes
+#include "networknotifiernotewrapper.h"
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::NewLC()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CNetworkNotifierNoteWrapper* CNetworkNotifierNoteWrapper::NewL( MNoteWrapperObserver& aObserver,
+                                                                TInt aResID )
+    {
+    CNetworkNotifierNoteWrapper* self = new( ELeave ) CNetworkNotifierNoteWrapper( aObserver,
+                                                                                   aResID );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );    
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::ConstructL
+// 
+// -----------------------------------------------------------------------------
+//
+void CNetworkNotifierNoteWrapper::ConstructL()
+    {
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::ConstructL() -START") );
+    
+    User::LeaveIfError( iFs.Connect() );
+    
+    HBufC* note = ReadResourceLC();
+    
+    if( note )
+        {
+        DisplayPopupNoteL( note );
+        CleanupStack::PopAndDestroy( note );
+        }
+    
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::ConstructL() -END") );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::CNetworkNotifierNoteWrapper
+// 
+// -----------------------------------------------------------------------------
+//
+CNetworkNotifierNoteWrapper::CNetworkNotifierNoteWrapper( MNoteWrapperObserver& aObserver, 
+                                                          TInt aResID ) : 
+                                                          CActive( EPriorityStandard ), 
+                                                          iObserver( aObserver ) 
+    {
+    iErrNotes.Insert( aResID, 0 );
+    CActiveScheduler::Add( this );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::~CNetworkNotifierNoteWrapper
+// 
+// -----------------------------------------------------------------------------
+//
+CNetworkNotifierNoteWrapper::~CNetworkNotifierNoteWrapper()
+    {
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::~CNetworkNotifierNoteWrapper() -START") );
+    
+    iFs.Close();
+    iErrNotes.Close(); // cleanup and close
+    
+    Cancel();
+    delete iGlobalQuery;
+    
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::~CNetworkNotifierNoteWrapper() -END") );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::AppendNote
+//
+// Monitor inserts the latest error notification err# from ETEL to this stack
+// -----------------------------------------------------------------------------
+//
+void CNetworkNotifierNoteWrapper::AppendNote( const TInt aResID )
+    {
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::AppendNote() -START") );
+    iErrNotes.Insert( aResID, 0 );
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::AppendNote() -END") );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::DisplayPopupNoteL
+// 
+// -----------------------------------------------------------------------------
+//
+void CNetworkNotifierNoteWrapper::DisplayPopupNoteL( HBufC* aNote )
+    {
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::DisplayPopupNoteL() -START") );
+    
+    if( !IsActive() )
+        {   
+        if( !iGlobalQuery )
+			{
+            iGlobalQuery = CAknGlobalConfirmationQuery::NewL();
+        	}
+		if( aNote )
+			{
+        	iGlobalQuery->ShowConfirmationQueryL( iStatus, 
+                                                  *aNote, 
+                                                  R_AVKON_SOFTKEYS_OK_EMPTY, 
+                                                  R_QGN_NOTE_WARNING_ANIM );
+			}
+		
+        SetActive();
+        }
+
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::DisplayPopupNoteL() -END") );
+    }
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::ReadResourceLC
+//
+// Just to read localized error strings from resource 
+//
+// -----------------------------------------------------------------------------
+//
+HBufC* CNetworkNotifierNoteWrapper::ReadResourceLC()
+    {
+    RDebug::Print(
+            _L("NW: CNetworkNotifierNoteWrapper::ReadResourceLC() -START") );
+
+    TInt resId;
+    RResourceFile resFile;
+    TResourceReader reader;
+
+    TFileName fullFileName;
+    TDriveUnit driveNum = PathInfo::RomRootPath();
+
+    fullFileName.Insert( 0, driveNum.Name() );
+    fullFileName.Append( KResFile );
+
+    TFileName file( fullFileName );
+    HBufC16* textBuffer = NULL;
+    
+    // We are interested in the most recent err note at a time
+    resId = iErrNotes[0];
+
+    // Err# can be removed from the stack now
+    iErrNotes.Remove( 0 );
+        
+    BaflUtils::NearestLanguageFile( iFs, file );   
+    resFile.OpenL( iFs, file );
+    // According to SDK docs, resFile will be closed if this function leaves
+    resFile.ConfirmSignatureL();
+    
+    HBufC8* readBuffer = resFile.AllocReadLC( resId );
+    reader.SetBuffer( readBuffer );
+    
+    TPtrC textdata = reader.ReadTPtrC();
+    textBuffer = HBufC16::NewL( textdata.Length() );
+    *textBuffer = textdata;
+    
+    CleanupStack::PopAndDestroy( readBuffer );
+    CleanupStack::PushL( textBuffer );
+    
+    resFile.Close();
+        
+    RDebug::Print(
+            _L("NW: CNetworkNotifierNoteWrapper::ReadResourceLC() -END"));
+    return textBuffer;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::RunL
+// Pure virtuals from CActive implemented in this derived class.
+// iStatus error handling is not needed here, since the service provider for
+// this AO (in DisplayPopupNoteL) will leave in case of an error, and will 
+// therefore be handled in RunError.
+// -----------------------------------------------------------------------------
+//
+void CNetworkNotifierNoteWrapper::RunL()
+    {
+    RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::RunL -START") );
+        
+    if( iErrNotes.Count() ) // There are more errors to display: 
+        { 
+        HBufC* note = ReadResourceLC();
+        
+        if ( note )
+            {
+            DisplayPopupNoteL( note );
+            CleanupStack::PopAndDestroy( note );
+            }
+        }
+    else
+        { 
+        // Error note stack is empty, since this task has completed and let monitor 
+        // to destruct this instance
+        RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::RunL : No more notes to display") );
+        iObserver.PopupNoteClosed();
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::DoCancel
+// 
+// -----------------------------------------------------------------------------
+//
+void CNetworkNotifierNoteWrapper::DoCancel()
+    {
+    if( iGlobalQuery )
+        {
+        iGlobalQuery->CancelConfirmationQuery();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CNetworkNotifierNoteWrapper::RunError()
+// 
+// -----------------------------------------------------------------------------
+//
+TInt CNetworkNotifierNoteWrapper::RunError( TInt aError )
+    {
+    // Resource reader failed in ReadResourceLC
+    // Just reissue the request
+    if ( aError )
+        {
+        RDebug::Print( _L("NW: CNetworkNotifierNoteWrapper::RunError: Showing of the note failed!") );
+        }
+    
+    return KErrNone;
+    }
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/src/nwnotifier.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: This module contains the implementation of CNWNotifier 
+*              class member functions.
+*
+*/
+
+// SYSTEM INCLUDE FILES
+
+// INCLUDE FILES
+#include "nwregistrationstatusmonitor.h" 
+
+//  Global Variables
+
+// CONSTANTS
+_LIT( KNWNotifierThreadName,"NWNotifierThread" ); 
+
+//  Local Functions
+
+// -----------------------------------------------------------------------------
+// DoStartL()
+// 
+// -----------------------------------------------------------------------------
+//
+LOCAL_C void DoStartL()
+    {
+    // Rename thread as 
+    User::RenameThread( KNWNotifierThreadName );  
+    
+    // Create active scheduler (to run active objects)
+    CActiveScheduler* threadScheduler = new (ELeave) CActiveScheduler;
+    CleanupStack::PushL( threadScheduler );
+    CActiveScheduler::Install( threadScheduler );
+
+    // Create an instance of status monitoring component. Start monitoring instantly.
+    CNWRegistrationStatusMonitor* statusMonitor = CNWRegistrationStatusMonitor::NewL();
+    
+    //Starts the scheduler. Thread remains in this loop until this process is terminated.
+    CActiveScheduler::Start();
+    
+    delete statusMonitor;
+    
+    // Delete active scheduler
+    CleanupStack::PopAndDestroy( threadScheduler );
+    }
+
+//  Global Functions
+
+// -----------------------------------------------------------------------------
+// E32Main()
+// Provides the API for the operating system to start the executable.
+// Returns the address of the function to be called.
+// -----------------------------------------------------------------------------
+//
+GLDEF_C TInt E32Main()
+    {
+    // Create cleanup stack
+    __UHEAP_MARK;
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    
+    if( !cleanup )
+        {
+        return KErrNoMemory;
+        }
+    
+    // Run application code inside TRAP harness
+    TRAPD( mainErr, DoStartL() );
+        
+    delete cleanup;
+    __UHEAP_MARKEND;
+    
+    return mainErr;
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nwnotifier/src/nwregistrationstatusmonitor.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -0,0 +1,295 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: This module contains the implementation of CNWRegistrationStatusMonitor 
+*              class member functions.
+*
+*/
+
+//  INCLUDE FILES
+#include "nwregistrationstatusmonitor.h"
+// System 
+#include <exterror.h>
+#include <MmTsy_names.h> // KMmTsyModuleName
+
+// ================= MEMBER FUNCTIONS =======================================
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::CNWRegistrationStatusMonitor
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+// -----------------------------------------------------------------------------
+//
+CNWRegistrationStatusMonitor::CNWRegistrationStatusMonitor() : 
+    CActive( EPriorityStandard )
+    {
+    }
+    
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CNWRegistrationStatusMonitor::ConstructL()
+    {  
+    // Add to scheduler.    
+    CActiveScheduler::Add( this );
+    
+    // Open connection to ETel
+    OpenConnectionL();
+    
+    // Start monitoring
+    IssueRequest();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CNWRegistrationStatusMonitor* CNWRegistrationStatusMonitor::NewL()
+    {
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::NewL -START") );
+    
+    CNWRegistrationStatusMonitor* self = new ( ELeave ) CNWRegistrationStatusMonitor();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::NewL -END") );
+    return self;
+    }
+ 
+
+// -----------------------------------------------------------------------------
+// Destructor
+// 
+// -----------------------------------------------------------------------------
+//
+CNWRegistrationStatusMonitor::~CNWRegistrationStatusMonitor()
+    {
+    Cancel();     
+    
+    CloseConnection();
+    
+    delete iNoteWrapper;
+    }
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::OpenConnectionL()
+// Open connection to ETel
+// -----------------------------------------------------------------------------
+//
+void CNWRegistrationStatusMonitor::OpenConnectionL()
+    {
+    // Connect ETel server
+    User::LeaveIfError( iTelServer.Connect() );
+
+    // Load ETel TSY module
+    User::LeaveIfError( iTelServer.LoadPhoneModule( KMmTsyModuleName ) );
+
+    // Set this session to receive detailed errors
+    User::LeaveIfError( iTelServer.SetExtendedErrorGranularity(
+            RTelServer::EErrorExtended ) );
+
+    // Opens a phone subsession by name, 
+    User::LeaveIfError( iPhone.Open( iTelServer, KMmTsyPhoneName ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::CloseConnection()
+// Closes the connection to ETel
+// -----------------------------------------------------------------------------
+//
+void CNWRegistrationStatusMonitor::CloseConnection()
+    {
+    iPhone.Close();
+        
+    if ( iTelServer.Handle() )
+        {
+        iTelServer.UnloadPhoneModule( KMmTsyModuleName );
+        iTelServer.Close();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::DoCancel
+// Cancels the pending async. command.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CNWRegistrationStatusMonitor::DoCancel()
+    {
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::DoCancel -START") );
+    
+    iPhone.CancelAsyncRequest( EMobilePhoneNotifyNetworkRegistrationStatusChange );
+    
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::DoCancel -END") );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::RunL
+// Receives the completion of the pending async. command,
+// saves possible values from async.
+// 
+// -----------------------------------------------------------------------------
+//
+void CNWRegistrationStatusMonitor::RunL()
+    {
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::RunL -START") );
+    
+    if( iStatus.Int() != KErrNone ) // Display only errors
+        {
+        // Parse error code to iResId
+        ParseErrCode();
+        
+        if( !iNoteWrapper )
+            { // Instantiate a notewrapper and pass err code to be displayed
+            iNoteWrapper = CNetworkNotifierNoteWrapper::NewL( *this, iResID );
+            }
+        else // If note wrapper exists already, add error code -stack in wrapper
+            {
+            iNoteWrapper->AppendNote( iResID );
+            }
+        }
+    else
+        {
+        if( iStatus.Int() == KErrBadHandle || 
+            iStatus.Int() == KErrServerBusy )
+            {
+            // Close the session to ETel
+            CloseConnection();
+            // Reconnect
+            OpenConnectionL();
+            }
+        }
+    
+    // Keep monitoring
+    IssueRequest();
+        
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::RunL -END") );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::ParseErrorCode()
+// 
+// -----------------------------------------------------------------------------
+//
+void CNWRegistrationStatusMonitor::ParseErrCode()
+    {
+    switch( iStatus.Int() )
+        {
+        case KErrGsmMMImsiUnknownInHlr:
+            {
+            iResID = R_SIM_NOT_PROV_MM2;
+            RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::ParseErrCode() : R_SIM_NOT_PROV_MM2") );
+            break;
+            }
+        case KErrGsmMMIllegalMs:
+            {
+            iResID = R_SIM_NOT_ALLOW_MM3;
+            RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::ParseErrCode() : R_SIM_NOT_ALLOW_MM3") );
+            break;
+            }
+        case KErrGsmMMImsiUnknownInVlr:
+            {
+            iResID = R_CALL_FAILED_MM4;
+            RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::ParseErrCode() : R_CALL_FAILED_MM4") );
+            break;       
+            }
+        case KErrGsmMMImeiNotAccepted:
+            {
+            iResID = R_PHONE_NOT_ALLOW_MM5;
+            RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::ParseErrCode() : R_PHONE_NOT_ALLOW_MM5") );
+            break; 
+            }
+        case KErrGsmMMIllegalMe:
+            {
+            iResID = R_PHONE_NOT_ALLOW_MM6;
+            RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::ParseErrCode() : R_PHONE_NOT_ALLOW_MM6") );
+            break;
+            }
+        default:
+            {
+            case KErrGeneral:
+                {
+                RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::ParseErrCode() : R_SIM_NOT_ALLOW") );
+                iResID = R_SIM_NOT_ALLOW;
+                break;  
+                }
+            }
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::IssueRequest
+// Executes the async. NotifyNetworkRegistrationStatusChange function.
+// 
+// -----------------------------------------------------------------------------
+//
+void CNWRegistrationStatusMonitor::IssueRequest()
+    {
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::IssueRequest -START") );
+    
+    if ( !IsActive() )
+        {
+        iPhone.NotifyNetworkRegistrationStatusChange( iStatus, iRegistrationStatus ); 
+        SetActive();
+        RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::IssueRequest : NotifyChange()-request set active - pending !") );
+        }
+    
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::IssueRequest -END") );
+    }
+ 
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::PopupNoteClosed
+// 
+// Callback from note wrapper class : all error notes are displayed since this monitor
+// class can destruct note wrapper
+// -----------------------------------------------------------------------------
+//
+void CNWRegistrationStatusMonitor::PopupNoteClosed()
+    {
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::PopupNoteClosed -START") );
+    
+    delete iNoteWrapper;
+    iNoteWrapper = NULL;
+    
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::PopupNoteClosed -END") );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNWRegistrationStatusMonitor::RunError()
+// Processes any errors.
+// -----------------------------------------------------------------------------
+//
+TInt CNWRegistrationStatusMonitor::RunError( TInt /*aError*/ )
+    {
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::RunError -START") );
+    
+    // Keep monitoring
+    IssueRequest();
+    
+    RDebug::Print( _L("NW: CNWRegistrationStatusMonitor::RunError -END") );
+    return KErrNone;    // Handled the error fully
+    }
+
+//  End of File 
--- a/phoneclientserver/CallUI/Inc/CaUiEngine/CaUiEngFactImpl.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/CallUI/Inc/CaUiEngine/CaUiEngFactImpl.h	Fri Feb 19 23:21:58 2010 +0200
@@ -22,7 +22,7 @@
 
 
 //  INCLUDES
-#include    "CaUiEng.h"
+#include    "cauieng.h"
 
 
 /**
--- a/phoneclientserver/CallUI/Inc/CaUiEngine/CaUiEngine.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/CallUI/Inc/CaUiEngine/CaUiEngine.h	Fri Feb 19 23:21:58 2010 +0200
@@ -23,8 +23,8 @@
 #include    <e32std.h>
 #include    <ConeResLoader.h>           // RConeResourceLoader.
 #include    <mphcltextphoneobserver.h>  // MPhCltExtPhoneObserver.
-#include    "CaUiEng.h"
-#include    "CaUiDialResultObserver.h"
+#include    "cauieng.h"
+#include    "cauidialresultobserver.h"
 #include    "CaUiQueryObserver.h"
 #include    <PhCltTypes.h>
 #include    <MPhCltEmergencyCallObserver.h>
--- a/phoneclientserver/CallUI/Src/CaUiEngine/CaUiActiveObject.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/CallUI/Src/CaUiEngine/CaUiActiveObject.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -25,10 +25,10 @@
 
 #include    <mcauireconnectqueryobserver.h>
 #include    <cphonecntfactory.h>
-#include    <CPhCntMatcher.h>
+#include    <cphcntmatcher.h>
 #include    <MPhCntMatch.h>
-#include	"CaUiMessageSender.h"
-#include	"CaUiLogger.h"
+#include	"cauimessagesender.h"
+#include	"cauilogger.h"
 // CONSTANTS
 
 
--- a/phoneclientserver/CallUI/Src/CaUiEngine/CaUiDialogs.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/CallUI/Src/CaUiEngine/CaUiDialogs.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -29,10 +29,10 @@
 #include <AknGlobalNote.h>
 #include <mcauireconnectqueryobserver.h>
 #include "CaUiDialogs.h"
-#include "CaUiLogger.h"
+#include "cauilogger.h"
 #include "CaUiQuery.h"
 #include "CaUiEngine.h"
-#include "CPhCntMatcher.h"
+#include "cphcntmatcher.h"
 #include "CaUiActiveObject.h"
 
 // CLASS DECLARATION
--- a/phoneclientserver/CallUI/Src/CaUiEngine/CaUiEngine.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/CallUI/Src/CaUiEngine/CaUiEngine.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -21,12 +21,12 @@
 #include    "CaUiQuery.h"               // CCaUiQuery.
 #include    <mcauireconnectqueryobserver.h>  // MCaUiReconnectQueryObserver.
 #include    <CallUI.rsg>                // Resources.
-#include    <CPhCltDialer.h>            // CPhCltDialer.
+#include    <cphcltdialer.h>            // CPhCltDialer.
 #include    <cphonecntfactory.h>
 #include    <cphcntsingleitemfetch.h>
 #include    <aiwinternaldialdata.h>
 #include    <AiwServiceHandler.h>
-#include    <CPhCltExtPhoneDialData.h>  // CPhCltExtPhoneDialData
+#include    <cphcltextphonedialdata.h>  // CPhCltExtPhoneDialData
 
 #include    "callui.loc"                // Localized strings.
 
@@ -35,7 +35,7 @@
 #include    <AknGlobalListQuery.h>      // CAknGlobalListQuery.
 #include    <featmgr.h>                 // FeatureManager.
 
-#include    <aknglobalconfirmationquery.h> // Confirmation query.
+#include    <AknGlobalConfirmationQuery.h> // Confirmation query.
 
 #include    <PhCltUtils.h>              // Character removal.
 #include    <AiwCommon.h>               // AIW dialdata.
@@ -46,10 +46,10 @@
 #include    "CaUiVoIPExtension.h"        // VoIP/SCCP profile store
 
 #include    <centralrepository.h>
-#include    <SettingsInternalCRKeys.h>
-#include     "CaUiLogger.h"        // Call Ui Logger
+#include    <settingsinternalcrkeys.h>
+#include     "cauilogger.h"        // Call Ui Logger
 #include    <aknmessagequerydialog.h> 
-#include    <aknglobalnote.h>
+#include    <AknGlobalNote.h>
 #include    <mphcntstoreloader.h>
 #include    <MVPbkContactStore.h>
 
--- a/phoneclientserver/CallUI/Src/CaUiEngine/CaUiMessageSender.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/CallUI/Src/CaUiEngine/CaUiMessageSender.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -29,7 +29,7 @@
 #include    <sendui.h>     		// CSendAppUi, CSendUi
 #include    <CMessageData.h>    // Message data for CSendUi
 #include    <featmgr.h>   		// Feature manager
-#include 	"CaUiLogger.h"		// Call Ui Logger
+#include 	"cauilogger.h"		// Call Ui Logger
 
 // CONSTANTS
 // The reconnect query options granularity.
--- a/phoneclientserver/CallUI/Src/CaUiEngine/CaUiVoIPExtension.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/CallUI/Src/CaUiEngine/CaUiVoIPExtension.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -120,19 +120,22 @@
             // check if the service supports internet call                     	                                        
             CSPProperty* property = CSPProperty::NewLC();
             // get attribute mask of the service
-            User::LeaveIfError( settingsApi->FindPropertyL( idArray[i], 
-                EPropertyServiceAttributeMask, *property ) );
-            
+
+            TInt error = settingsApi->FindPropertyL( idArray[i], 
+                EPropertyServiceAttributeMask, *property );
             // read the value of mask property
-            TInt mask = 0;                    
-            if ( KErrNone == property->GetValue( mask ) )
+            if ( KErrNone == error )
                 {
-                if ( ( mask & ESupportsInternetCall )
-                    && ( mask & EIsVisibleInCallMenu ) ) 
+                TInt mask = 0;                    
+                if ( KErrNone == property->GetValue( mask ) )
                     {
-                    aVoipServiceIds.Append( idArray[i] );
+                    if ( ( mask & ESupportsInternetCall )
+                        && ( mask & EIsVisibleInCallMenu ) ) 
+                        {
+                        aVoipServiceIds.Append( idArray[i] );
+                        }
                     }
-                }
+                }   
             CleanupStack::PopAndDestroy( property );     
             }                                   
         }
--- a/phoneclientserver/CallUI/Src/CaUiPlugin/CaUiPlugin.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/CallUI/Src/CaUiPlugin/CaUiPlugin.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -19,15 +19,15 @@
 
 // INCLUDE FILES
 #include    "CaUiPlugin.h"  // This class interface.
-#include    "CaUiEng.h"     // CaUiEngine.
+#include    "cauieng.h"     // CaUiEngine.
 #include    <AiwCommon.hrh> // AIW constants.
 #include    "CaUI.hrh"      // CallUI constants.
 #include    <AiwMenu.h>     // AIW Menu pane.
 
 #include	<AiwServiceHandler.h>
 #include    <PhCltTypes.h>  // PhoneClient types.
-#include    "CaUiLogger.h"  // Call Ui Logger
-#include    <stringloader.h>
+#include    "cauilogger.h"  // Call Ui Logger
+#include    <StringLoader.h>
 #include    <CallUI.rsg>
 #include    <featmgr.h>      // FeatureManager.
 
--- a/phoneclientserver/EnPolicy/Inc/DosEnPolicy/CDOSEmergencyNumberPolicy.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/EnPolicy/Inc/DosEnPolicy/CDOSEmergencyNumberPolicy.h	Fri Feb 19 23:21:58 2010 +0200
@@ -21,7 +21,7 @@
 #define CDOSEMERGENCYNUMBERPOLICY_H
 
 // INCLUDES
-#include    <CEmergencyNumberPolicy.h>
+#include    <cemergencynumberpolicy.h>
 #include    <rmmcustomapi.h>
 #include    <cenrepnotifyhandler.h>
 
--- a/phoneclientserver/EnPolicy/Inc/SosEnPolicy/CSOSEmergencyNumberPolicyManager.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/EnPolicy/Inc/SosEnPolicy/CSOSEmergencyNumberPolicyManager.h	Fri Feb 19 23:21:58 2010 +0200
@@ -21,7 +21,7 @@
 #define CSOSEMERGENCYNUMBERPOLICYMANAGER_H
 
 // INCLUDES
-#include <CEmergencyNumberPolicy.h>
+#include <cemergencynumberpolicy.h>
 
 // FORWARD DECLARATIONS
 class CSosEmergencyNumberPolicyHandler;
--- a/phoneclientserver/phoneclient/Inc/ExtCallWrapper/ExtCallWrapper_Aiw/CPhCltDialer.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneclient/Inc/ExtCallWrapper/ExtCallWrapper_Aiw/CPhCltDialer.h	Fri Feb 19 23:21:58 2010 +0200
@@ -20,8 +20,8 @@
 #define CPHCLTDIALER_H
 
 //  INCLUDES
-#include    <CPhCltExtPhoneBase.h>
-#include    <CPhCltExtPhoneDialData.h>
+#include    <cphcltextphonebase.h>
+#include    <cphcltextphonedialdata.h>
 
 // FORWARD DECLARATIONS
 class CPhCltDialerDlg;
--- a/phoneclientserver/phoneclient/Src/ImageHandler/CPhCltImageHandlerImplementation.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneclient/Src/ImageHandler/CPhCltImageHandlerImplementation.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -271,8 +271,8 @@
 void CPhCltImageHandlerImplementation::CVtImageSaver::RunL()
     {
     MPhCltImageObserver& observer = iObserver;
+    TRAP_IGNORE( observer.HandleImageSaveCompleteL( iStatus.Int() ) );
     delete this;
-    TRAP_IGNORE( observer.HandleImageSaveCompleteL( iStatus.Int() ) );    
     }
 
 // -----------------------------------------------------------------------------
--- a/phoneclientserver/phoneclient/Src/UssdWrapper/CPhCltUssdImp.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneclient/Src/UssdWrapper/CPhCltUssdImp.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -580,12 +580,15 @@
 
     // Set this active object to wait the completion of the send request.
     iWait->Start();
-
-    // If not deleted:
-    if ( iWait )
+    
+    // Need to check iWait handle here because the destructor may be called
+    // while pending for completion of the send request.
+    // coverity[check_after_deref]
+    if( iWait )
         {
         iSendError = NULL;
         }
+    
     return error;
     }
 
--- a/phoneclientserver/phoneserver/Inc/Standard/Standard_Aiw/CPhSrvCallRequestManager.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneserver/Inc/Standard/Standard_Aiw/CPhSrvCallRequestManager.h	Fri Feb 19 23:21:58 2010 +0200
@@ -24,7 +24,7 @@
 #include <e32base.h>
 #include "MPhSrvObjectNegotiators.h"
 #include "MPhSrvObjectInitiators.h"
-#include <CPhCltExtPhoneDialData.h>
+#include <cphcltextphonedialdata.h>
 
 // FORWARD DECLARATIONS
 class CPhSrvCallRequest;
--- a/phoneclientserver/phoneserver/Src/Messenger/CPhSrvMessengerRequestManager.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneserver/Src/Messenger/CPhSrvMessengerRequestManager.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -481,11 +481,7 @@
                         // Reservation was successful, so use reserved buffer
                         // as a new default buffer. 
                         // But first delete the old buffer.
-                        if( iDefaultSizeBuffer )
-                            {
-                            delete iDefaultSizeBuffer;
-                            iDefaultSizeBuffer = NULL;
-                            }
+                        delete iDefaultSizeBuffer;
                         iDefaultSizeBuffer = variableSizeBuffer;
                         }
                     }
--- a/phoneclientserver/phoneserver/Src/Standard/CPhSrvEmergencyNumberManager.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneserver/Src/Standard/CPhSrvEmergencyNumberManager.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -21,7 +21,7 @@
 #include "CPhSrvEmergencyNumberManager.h"
 #include "MPhSrvPhoneInterface.h"
 #include "PhSrvDebugInfo.h"
-#include <CEmergencyNumberPolicy.h>
+#include <cemergencynumberpolicy.h>
 
 // CONSTANTS
 _LIT(KPhSrvDosEnPolicyLibName, "DosEnPolicy.dll");  // DOS emergency number policy
--- a/phoneclientserver/phoneserver/Src/Standard/CPhSrvSession.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneserver/Src/Standard/CPhSrvSession.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -65,15 +65,14 @@
     if ( iServer )
         {
         iServer->CancelCreateAll( *this );
+        
+        if ( iContainer )
+             {
+             iServer->RemoveContainer( iContainer );
+             iContainer = NULL;
+             }
         }
-
     delete iObjectIx;
-   
-   if ( iContainer )
-        {
-        iServer->RemoveContainer( iContainer );
-        iContainer = NULL;
-        }
     }
 
 
--- a/phoneclientserver/phoneserver/Src/Standard/PhSrvSubSessionFactory.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneserver/Src/Standard/PhSrvSubSessionFactory.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -97,11 +97,11 @@
             subSession = 
                 CPhSrvSubSessionMessenger::NewL( aSession );
             break;
-
         case EPhoneServerImageHandlerSubSessionOpen:
             subSession = CPhSrvSubSessionImageHandler::NewL( aSession );
             break;
         default:
+            User::Leave( KErrArgument );
             break;
         }
 
--- a/phoneclientserver/phoneserver/Src/Ussd/CPhSrvUssdManager.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phoneclientserver/phoneserver/Src/Ussd/CPhSrvUssdManager.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -709,7 +709,6 @@
     _DPRINT( 4, "PhSrv.UssdNetworkObserverHandleSendEventL.End" );
     }
 
-
 // -----------------------------------------------------------------------------
 // CPhSrvUssdManager::UssdAppTaskExists
 //
@@ -1556,16 +1555,23 @@
 // CPhSrvUssdManager::NotifyCount()
 // -----------------------------------------------------------------------------
 //
-  TInt CPhSrvUssdManager:: NotifyCount()
+  TInt CPhSrvUssdManager::NotifyCount()
   {
-  return iNotifyArray->Count();
+  if( iNotifyArray )
+      {
+      return iNotifyArray->Count();
+      }
+  else
+      {
+      return 0;
+      }
   }
 
   // -----------------------------------------------------------------------------
 // CPhSrvUssdManager::UpdateNotifyMessage()
 // -----------------------------------------------------------------------------
 //
-  void CPhSrvUssdManager:: UpdateNotifyMessage()
+  void CPhSrvUssdManager::UpdateNotifyMessage()
   	{
   	_DDPRINT( 4, "PhSrv.UpdateNotifyMessage.Start, clear: ", iClearArray );     // debug print
   	if (NotifyCount() > 1 && !iClearArray )
--- a/phonecmdhandler/phonecmdhnlr/src/PhoneHandlerControl.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonecmdhandler/phonecmdhnlr/src/PhoneHandlerControl.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -36,11 +36,6 @@
 #include <RemConCallHandlingTarget.h>
 #include <CPbkContactEngine.h>
 #include <ctsydomainpskeys.h>
-
-#if 0
-#include <VoiceUIDomainPSKeys.h>
-#endif
-
 #include <connect/sbdefs.h>
 #include <coreapplicationuisdomainpskeys.h>
 
@@ -302,64 +297,20 @@
 
 // -----------------------------------------------------------------------------
 // CPhoneHandlerControl::VoiceDial
+// Dummy implementation. Operation implemented in SIND 
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
-#if 0 // SCB CR EHSA-7APJWF: SIND subscribes to RemCon directly	
-void CPhoneHandlerControl::VoiceDial( const TBool aActivate )
-    {
-    COM_TRACE_1( "[PHONECMDHANDLER] CPhoneHandlerControl::VoiceDial() aActivate=%d", aActivate );
-
-    TInt callState( EPSCTsyCallStateUninitialized );
-    iProperty.Get( KPSUidCtsyCallInformation, KCTsyCallState, callState ); 
-
-    COM_TRACE_1( "[PHONECMDHANDLER] CPhoneHandlerControl::CreateServiceL() call state = %d", callState );
-
-    if( callState == EPSCTsyCallStateUninitialized ||
-        callState == EPSCTsyCallStateNone )
-        {
-        TInt voiceUiState( KVoiceUiIsClose );
-        iProperty.Get( KPSUidVoiceUiAccMonitor, KVoiceUiOpenKey, voiceUiState ); 
-
-        if( voiceUiState == KVoiceUiIsOpen )
-	        {
-	        COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerControl::VoiceDial() voice UI is open!" );
-	        iProperty.Set( KPSUidVoiceUiAccMonitor , KVoiceUiAccessoryEvent, ERemConExtVoiceDial );
-	        iResponse->SetResponse( ERemConExtVoiceDial, KErrNone );
-	        iResponse->Process();
-	        }
-        else
-	        {
-	        iActivate = aActivate;
-	        StartProcessing( ERemConExtVoiceDial );
-	        }
-        }
-    else
-        {
-        iResponse->SetResponse( ERemConExtVoiceDial, KErrNone );
-        iResponse->Process();
-        }
-
-    COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerControl::VoiceDial() end" );
-    }
-#else	
 void CPhoneHandlerControl::VoiceDial( const TBool /*aActivate*/ )
     {
     COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerControl::VoiceDial()" );
-
-    if ( IsAutoLockOn() && !IsBTAccessoryCmd() )
-        {
-        iResponse->SetResponse( ERemConExtVoiceDial, KErrAccessDenied );
-        iResponse->Process();
-        return;
-        }
-        
+ 
     iResponse->SetResponse( ERemConExtVoiceDial, KErrNone );
     iResponse->Process();
 
     COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerControl::VoiceDial() end" );
     }
-#endif
+ 
 // -----------------------------------------------------------------------------
 // CPhoneHandlerControl::LastNumberRedial
 // (other items were commented in a header).
--- a/phonesrv_plat/call_information_api/tsrc/run_auto_tests.bat	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonesrv_plat/call_information_api/tsrc/run_auto_tests.bat	Fri Feb 19 23:21:58 2010 +0200
@@ -146,7 +146,8 @@
 pushd .
 call cd %1\group
 call bldmake bldfiles
-call abld test clean winscw udeb
+call abld -k test clean winscw udeb
+call abld -k test reallyclean winscw udeb
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
--- a/phonesrv_plat/network_handling_engine_api/inc/NWHandlingEngine.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonesrv_plat/network_handling_engine_api/inc/NWHandlingEngine.h	Fri Feb 19 23:21:58 2010 +0200
@@ -22,7 +22,8 @@
 
 //  INCLUDES
 #include <e32base.h>
-#include <RMmCustomAPI.h>
+#include <rmmcustomapi.h>
+#include <etelpckt.h> // for RPacketService::TDynamicCapsFlags
 
 
 // CONSTANTS
@@ -187,6 +188,8 @@
 #ifdef RD_PHONE_NG
     TNWNetworkSelectionSetting iSelectionSetting;           // Contains a network selection setting manual/automatic etc.
 #endif // RD_PHONE_NG
+    RPacketService::TDynamicCapsFlags iDynamicCapsFlags;    // Dynamic packet data capabilities 
+                                                            // (used to hide alpha tag when CS registration is unsuccessful)
     };
 
 // CLASS DECLARATION
@@ -243,6 +246,9 @@
             ENWMessageCurrentHomeZoneMessage,
             // Message will be sent when cell info display changed
             ENWMessageNetworkIndicatorChange, 
+            // Message will be sent when dynamic packet data capabilities change
+            // (Used to hide alpha tag when CS registration is unsuccessful)
+            ENWMessageDynamicCapsChange,
 
             // CDMA SPECIFIC MESSAGES                       200 - 299
 
@@ -263,7 +269,9 @@
             // Fetching Network Provider Name
             ENWGetNetworkProviderName,
             // Fetching Programmable Operator Name
-            ENWGetProgrammableOperatorName
+            ENWGetProgrammableOperatorName,
+            // Notifying network registration status change
+            ENWNotifyNetworkRegistrationStatusChange,
             };
 
         /**
--- a/phonesrv_plat/phone_settings_api/inc/PSetRefreshHandler.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonesrv_plat/phone_settings_api/inc/PSetRefreshHandler.h	Fri Feb 19 23:21:58 2010 +0200
@@ -23,7 +23,7 @@
 
 //  INCLUDES
 #include <MSSSettingsRefreshObserver.h>
-#include <MSatRefreshObserver.h>
+#include <msatrefreshobserver.h>
 
 
 // DATA TYPES
--- a/phonesrv_plat/phone_settings_api/inc/PsetNetwork.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonesrv_plat/phone_settings_api/inc/PsetNetwork.h	Fri Feb 19 23:21:58 2010 +0200
@@ -26,7 +26,7 @@
 #include "MPsetNetworkModeObs.h"
 #include "MPsetNetworkMode.h"
 #include <etelmm.h>
-#include <RMmCustomApi.h>
+#include <rmmcustomapi.h>
 
 // FORWARD DECLARATIONS
 class CPsetSAObserver;
--- a/phonesrv_plat/phone_settings_api/inc/PsetSAObserver.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonesrv_plat/phone_settings_api/inc/PsetSAObserver.h	Fri Feb 19 23:21:58 2010 +0200
@@ -22,9 +22,9 @@
 
 //  INCLUDES
 #include <e32base.h>
-#include <e32Property.h>
-#include <psetcalldiverting.h>
-#include <psvariables.h>
+#include <e32property.h>
+#include <PsetCallDiverting.h>
+#include <PSVariables.h>
 #include <ctsydomaincrkeys.h>
 
 // FORWARD DECLARATIONS
--- a/phonesrv_plat/phone_settings_observer_api/inc/MPsetCliObserver.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonesrv_plat/phone_settings_observer_api/inc/MPsetCliObserver.h	Fri Feb 19 23:21:58 2010 +0200
@@ -22,8 +22,8 @@
 
 //  INCLUDES
 #include <e32base.h>
-#include <Psuiconstants.h>
-#include "PSetConstants.h"
+#include <PsuiConstants.h>
+#include "PsetConstants.h"
 #include "MPsetCli.h"
 
 //  CLASS DEFINITIONS 
--- a/phonesrv_plat/ss_settings_api/inc/MSSSettingsRefreshObserver.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonesrv_plat/ss_settings_api/inc/MSSSettingsRefreshObserver.h	Fri Feb 19 23:21:58 2010 +0200
@@ -24,7 +24,7 @@
 //  INCLUDES
 #include <e32std.h>
 #include <etelsat.h>
-#include <MSatRefreshObserver.h>
+#include <msatrefreshobserver.h>
 
 
 // DATA TYPES
--- a/phonesrv_plat/telephony_mediator_api/inc/callremotepartyinformation.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/phonesrv_plat/telephony_mediator_api/inc/callremotepartyinformation.h	Fri Feb 19 23:21:58 2010 +0200
@@ -20,7 +20,7 @@
 #define CALLREMOTEPARTYINFORMATION_H
 
 #include <e32base.h>
-#include <MCallRemotePartyInfo.h>
+#include <mcallremotepartyinfo.h>
 
 class RWriteStream;
 
--- a/satui/satplugin/aisatplugininc/aisatpluginuids.hrh	Tue Feb 02 01:11:09 2010 +0200
+++ b/satui/satplugin/aisatplugininc/aisatpluginuids.hrh	Fri Feb 19 23:21:58 2010 +0200
@@ -29,9 +29,4 @@
  */
 #define AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_SATPLUGIN 0x102078EB
 
-/**
- * Ecom interface uid for CAiContentPublisher.
- */
-#define AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER 0x102750ED
-
 #endif //AISATPLUGINUIDS_HRH
--- a/satui/satplugin/aisatplugininc/caisatplugin.h	Tue Feb 02 01:11:09 2010 +0200
+++ b/satui/satplugin/aisatplugininc/caisatplugin.h	Fri Feb 19 23:21:58 2010 +0200
@@ -19,8 +19,7 @@
 #ifndef CAISATPLUGIN_H
 #define CAISATPLUGIN_H
 
-#include <aicontentpublisher.h>
-#include <aipropertyextension.h>
+#include <hscontentpublisher.h>
 #include <aicontentmodel.h>
 
 #include "mpluginapi.h"
@@ -34,8 +33,7 @@
  *
  *  @since S60 v3.2
  */
-class CAiSatPlugin : public CAiContentPublisher,
-                     public MAiPropertyExtension,
+class CAiSatPlugin : public CHsContentPublisher,                     
                      public MPluginAPI
     {
 
@@ -56,97 +54,43 @@
      */
     void PublishSatL();
 
-// from base class CAiContentPublisher
+// from base class CHsContentPublisher
   
     /**
-     * From CAiContentPublisher
-     * The method is called by the framework to request the plug-in free all
-     * memory and CPU resources and close all its open files, e.g. the plug-in 
-     * should unload its engines due backup operation. The method transits the 
-     * plug-in to "Idle" state.
-     *
-     * @param aReason Reason for state change, see TAiTransitionChange.
+     * @see CHsContentPublisher
      */
-    void Stop( TAiTransitionReason aReason );
+    void Start( TStartReason aReason );
 
     /**
-     * From CAiContentPublisher
-     * The method is called by the framework to instruct plug-in that it is
-     * allowed to consume CPU resources, e.g plug-in is able to run timers,
-     * perform asynchronous operations, etc. The method transits the plug-in
-     * to "Alive" state.
-     *
-     * @param aReason Reason for state change, see TAiTransitionChange.
-     */
-    void Resume( TAiTransitionReason aReason );
-
+     * @see CHsContentPublisher
+     */    
+    void Stop( TStopReason aReason );
+    
     /**
-     * From CAiContentPublisher
-     * 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
-     * timers, cancel outstanding asynchronous operations, etc. The method
-     * transits the plug-in to "Suspendend" state.
-     *
-     * @param aReason Reason for state change, see TAiTransitionChange.
-     */
-    void Suspend( TAiTransitionReason aReason );
-
+     * @see CHsContentPublisher
+     */    
+    void Resume( TResumeReason aReason );
+    
     /**
-     * From CAiContentPublisher
-     * 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.
-     */
+     * @see CHsContentPublisher
+     */    
+    void Suspend( TSuspendReason aReason );
+    
+    /**
+     * @see CHsContentPublisher
+     */    
     void SubscribeL( MAiContentObserver& aObserver );
     
     /**
-     * From CAiContentPublisher
-     * Configures the plug-in.
-     * Plug-ins take ownership of the settings array, so it must either
-     * store it in a member or free it. Framework has put the array in cleanup
-     * stack so the plugin shouldn't do that.
-     * If this leaves, the plug-in will be destroyed by AI FW.
-     * Plug-in must support LaunchByValue-event even if normal shortcuts don't
-     * work. The only allowed serious enough leave is KErrNotFound from CenRep.
-     *
-     * @param aSettings Setting items defined in the UI definition.
-     */
+     * @see CHsContentPublisher
+     */    
     void ConfigureL( RAiSettingsItemArray& aSettings );
-
+    
     /**
-     * From CAiContentPublisher
-     * Returns interface extension. In Series 60 3.1 only event & property
-     * extensions are supported. See MAiEventExtension & MAiPropertyExtension
-     * interfaces.
-     *
-     * @param  aUid UID of the extension interface to access.
-     * @return The extension interface. Actual type depends on the passed aUid 
-     *         argument.
-     */
-    TAny* Extension( TUid aUid );  
-
-// from base class MAiPropertyExtension
-
-    /**
-     * From MAiPropertyExtension.
-     * Read property of publisher plug-in.
-     *
-     * @param aProperty Identification of property.
-     * @return Pointer to property value.
-     */
-    TAny* GetPropertyL( TInt aProperty );
-
-    /**
-     * From MAiPropertyExtension.
-     * Write property value.
-     *
-     * @param aProperty Identification of property.
-     * @param aValue Contains pointer to property value.
-     */
-    void SetPropertyL( TInt aProperty, TAny* aValue );
-     
+     * @see CHsContentPublisher
+     */    
+    TAny* GetProperty( TProperty aProperty );
+         
     /**
      * Receives a notification of the content update event
      */
@@ -235,11 +179,6 @@
      * Array of content observers
      */    
     RPointerArray<MAiContentObserver> iObservers;
-
-    /**
-     * Information about the content publisher (this plug-in)
-     */    
-    TAiPublisherInfo iInfo;
     
     /**
      * Whether the icon is the same with previous one.
@@ -250,6 +189,11 @@
      * Whether the text is the same with previous one.
      */      
     TBool iDupText;
+    
+    /**
+     * ETrue, if data should be published in Resume()
+     */
+    TBool iPublishRequired;
     };
 
 #endif // CAISATPLUGIN_H
--- a/satui/satplugin/aisatpluginsrc/caisatplugin.cpp	Tue Feb 02 01:11:09 2010 +0200
+++ b/satui/satplugin/aisatpluginsrc/caisatplugin.cpp	Fri Feb 19 23:21:58 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). 
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -83,7 +83,6 @@
     iEvents = NULL;
 
     delete iEngine;
-    iEngine = NULL;
     
     iObservers.Close();
 
@@ -183,7 +182,7 @@
 void CAiSatPlugin::PublishSatL()
     {
     TFLOGSTRING( "CAiSatPlugin::PublishSatL() starts" )
-
+    
     TInt error( KErrNone );
     TInt iconError( KErrNone );
     TInt textError( KErrNone );
@@ -286,56 +285,71 @@
     }
 
 // ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is requested to unload its engines due backup operation
+// CAiSatPlugin::Start
+// 
 // ---------------------------------------------------------------------------
 //
-void CAiSatPlugin::Stop( TAiTransitionReason /* aReason */ )
-    {
-    TFLOGSTRING( "CAiSatPlugin::Stop starts - exits" )
+void CAiSatPlugin::Start( TStartReason /*aReason*/ )
+    {    
+    TFLOGSTRING( "CAiSatPlugin::Start() starts" )
+    
+    iPublishRequired = ETrue;
+    
+    TFLOGSTRING( "CAiSatPlugin::Start() exits" )
     }
 
 // ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is allowed to consume CPU resources
+// CAiSatPlugin::Stop
+// 
+// ---------------------------------------------------------------------------
+//
+void CAiSatPlugin::Stop( TStopReason /*aReason*/ )
+    {
+    TFLOGSTRING( "CAiSatPlugin::Stop() starts - exits" )
+    }
+
+// ---------------------------------------------------------------------------
+// CAiSatPlugin::Resume
+// 
 // ---------------------------------------------------------------------------
 //
-void CAiSatPlugin::Resume( TAiTransitionReason aReason )
+void CAiSatPlugin::Resume( TResumeReason aReason )
     {
-    TFLOGSTRING2( "CAiSatPlugin::Resume reason %d", aReason )
+    TFLOGSTRING2( "CAiSatPlugin::Resume() reason %d", aReason )
 
-    if ( EAiIdleForeground == aReason && !iEngine )
+    if ( aReason == EForeground )
         {
-        TRAP_IGNORE( iEngine = CAiSatEngine::NewL( *this ) )
+        if ( iPublishRequired )
+            {
+            iPublishRequired = EFalse;
+            
+            TRAP_IGNORE( UpdateSatL() )                       
+            }
         }
-        
-    // If we change the Home Screen Theme we will got a EAiSystemStartup as 
-    // aReason.
-    else if ( ( EAiGeneralThemeChanged == aReason || 
-                EAiSystemStartup == aReason ) &&
-                iEngine )
-        {
-        TRAP_IGNORE( UpdateSatL() )
-        }
-        
+            
     TFLOGSTRING( "CAiSatPlugin::Resume() exits" )
     }
 
 // ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is not allowed to consume CPU resources
+// CAiSatPlugin::Suspend
+// 
 // ---------------------------------------------------------------------------
 //
-void CAiSatPlugin::Suspend( TAiTransitionReason /* aReason */ )
+void CAiSatPlugin::Suspend( TSuspendReason aReason )
     {
-    TFLOGSTRING( "CAiSatPlugin::Suspend starts - exits" )
+    TFLOGSTRING( "CAiSatPlugin::Suspend() starts" )
+    
+    if ( aReason == EGeneralThemeChange )
+        {
+        iPublishRequired = ETrue;
+        }
+    
+    TFLOGSTRING( "CAiSatPlugin::Suspend() exits" )
     }
 
 // ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// The plug-in MUST maintain a registry of subscribers and send
-// notification to all of them whenever the state changes or new content
-// is available
+// CAiSatPlugin::SubscribeL
+// 
 // ---------------------------------------------------------------------------
 //
 void CAiSatPlugin::SubscribeL( MAiContentObserver& aObserver )
@@ -348,9 +362,8 @@
     }
 
 // ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-ins take ownership of the settings array, so it must either
-// store it in a member or free it.
+// CAiSatPlugin::ConfigureL
+// 
 // ---------------------------------------------------------------------------
 //
 void CAiSatPlugin::ConfigureL( RAiSettingsItemArray& aSettings )
@@ -370,99 +383,41 @@
             }
         TFLOGSTRING2( "CAiSatPlugin::ConfigureL  i: %d", i )    
         }
-
+	
     TFLOGSTRING( "CAiSatPlugin::ConfigureL() exits" )
     }
 
 // ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Returns the extension interface. Actual type depends on the passed
-// aUid argument.
-// ---------------------------------------------------------------------------
-//
-TAny* CAiSatPlugin::Extension( TUid aUid )
-    {
-    TFLOGSTRING( "CAiSatPlugin::Extension() starts" )
-
-    MAiPropertyExtension* extension = NULL;
-
-    if ( KExtensionUidProperty == aUid )
-        {
-        extension = static_cast<MAiPropertyExtension*>( this );
-        }
-
-    TFLOGSTRING( "CAiSatPlugin::Extension() exits" )
-    return extension;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Read property of publisher plug-in.
+// CAiSatPlugin::GetProperty
+// 
 // ---------------------------------------------------------------------------
 //
-TAny* CAiSatPlugin::GetPropertyL( TInt aProperty )
+TAny* CAiSatPlugin::GetProperty( TProperty aProperty )
     {
-    TFLOGSTRING( "CAiSatPlugin::GetPropertyL() starts" )
-
-    TAny* property = NULL;
-    TFLOGSTRING2( "CAiSatPlugin::GetPropertyL  aProperty: %d", aProperty )
-    switch ( aProperty )
-        {
-        case EAiPublisherInfo:
-            {
-            property = static_cast<TAiPublisherInfo*>( &iInfo );
-            break;
-            }
+    TFLOGSTRING( "CAiSatPlugin::GetProperty() starts" )
+    
+    TAny* property( NULL );
+    
+    TFLOGSTRING2( "CAiSatPlugin::GetProperty aProperty: %d", aProperty )
 
-        case EAiPublisherContent:
-            {
-            property = static_cast<MAiContentItemIterator*>( iContent );
-            break;
-            }
-
-        case EAiPublisherResources:
-            {
-            property = static_cast<MAiContentItemIterator*>( iResources );
-            break;
-            }
-
-        case EAiPublisherEvents:
-            {
-            property = static_cast<MAiContentItemIterator*>( iEvents );
-            break;
-            }
-        default:
-            break;
+    if ( aProperty == EPublisherContent )
+        {            
+        property = iContent;            
+        }
+    else if ( aProperty == EPublisherResources )
+        {
+        property = iResources;
+        }
+    else if ( aProperty == EPublisherEvents )
+        {
+        property = iEvents;
         }
 
-    TFLOGSTRING( "CAiSatPlugin::GetPropertyL() exits" )
+    TFLOGSTRING( "CAiSatPlugin::GetProperty() exits" )
 
     return property;
     }
 
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Write property value to optimize the content model.
-// ---------------------------------------------------------------------------
-//
-void CAiSatPlugin::SetPropertyL( TInt aProperty, TAny* aValue )
-    {
-    TFLOGSTRING( "CAiSatPlugin::SetPropertyL() starts" )
-
-    if ( EAiPublisherInfo == aProperty )
-        {
-        TFLOGSTRING( "CAiSatPlugin::SetPropertyL() EAiPublisherInfo" )
-        const TAiPublisherInfo* info =
-            static_cast<const TAiPublisherInfo*>( aValue );
-        if ( info )
-            {
-            iInfo = *info;
-            }
-        }
-
-    TFLOGSTRING( "CAiSatPlugin::SetPropertyL() exits" )
-    }
-
 // ---------------------------------------------------------
 // This method is called from the engine, when the P&S
 // data content has been changed. Method call is made through
@@ -505,11 +460,6 @@
     {
     TFLOGSTRING( "CAiSatPlugin::ConstructL() starts" )
 
-    _LIT(KSatName, "SAT");
-
-    iInfo.iUid.iUid = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_SATPLUGIN;
-    iInfo.iName.Copy( KSatName );
-
     iContent = AiUtility::CreateContentItemArrayIteratorL( KSatContent );
     iResources = AiUtility::CreateContentItemArrayIteratorL( KSatResources );
     iEvents = AiUtility::CreateContentItemArrayIteratorL( KSatEvents );
--- a/satui/satplugin/data/aisatplugin.rss	Tue Feb 02 01:11:09 2010 +0200
+++ b/satui/satplugin/data/aisatplugin.rss	Fri Feb 19 23:21:58 2010 +0200
@@ -18,6 +18,7 @@
 
 // INCLUDES
 #include <ecom/registryinfov2.rh>
+#include <hscontentpublisheruid.hrh>
 #include "../aisatplugininc/aisatpluginuids.hrh"
 
 /**
@@ -47,7 +48,7 @@
         INTERFACE_INFO
         {
             // UID of interface that is implemented
-            interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER; 
+            interface_uid = HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER; 
 
             implementations = 
             {