messagingappbase/ncnlist/src/CNcnMsgWaitingManager.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/ncnlist/src/CNcnMsgWaitingManager.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,622 @@
+/*
+* Copyright (c) 2004 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:   Methods for CNcnMsgWaitingManager class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include 	<etelmm.h>
+
+#include	"NcnVariant.hrh"
+#include    "NcnDebug.h"
+#include    "NcnModelBase.h"
+#include    "CNcnMsgWaitingManager.h"
+#include    "CVoiceMailManager.h"
+
+#ifdef _DEBUG
+
+class CNcnMsgWaitingManagerObserver : 
+	public CActive
+	{
+    public:  // Constructors and destructor
+
+        /**
+         * Two-phased constructor.
+         * @param aModel Reference to ncn model
+         */
+        static CNcnMsgWaitingManagerObserver* NewL( RMobilePhone &aMobilePhone );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CNcnMsgWaitingManagerObserver();
+                
+    public: // From CActive
+    
+        /**
+         * RunL
+         */
+        void RunL();
+
+        /**
+         * DoCancel
+         */
+        void DoCancel();
+                                                                
+    private:  // Constructors and destructor
+
+        /**
+         * C++ default constructor.
+         * @param aMsvSessionHandler Msv session handler reference.
+         */
+        CNcnMsgWaitingManagerObserver( RMobilePhone &aMobilePhone );
+        
+        /**
+         * 2nd. phase constructor.
+         */
+        void ConstructL( );
+        
+	private:
+	        
+		void PrintStatus();        
+		        
+    private: // Data
+            
+		TBool iChangeNotifySubscribed;            
+            
+		RMobilePhone &iMobilePhone;
+		
+        // Struct is a container for indicator flags and message counts
+        RMobilePhone::TMobilePhoneMessageWaitingV1      iMsgWaiting;  
+                      
+		// Package for iMsgWaitingV1                      
+        RMobilePhone::TMobilePhoneMessageWaitingV1Pckg  iMsgWaitingPckg;   
+            
+            
+	}; // CNcnMsgWaitingManagerObserver
+	
+	
+	
+	
+	CNcnMsgWaitingManagerObserver::CNcnMsgWaitingManagerObserver( RMobilePhone &aMobilePhone ) :
+	    CActive( EPriorityNormal ),
+		iChangeNotifySubscribed( EFalse ),
+	    iMobilePhone( aMobilePhone ),
+	    iMsgWaiting(),
+	  	iMsgWaitingPckg( iMsgWaiting )
+	    {
+	    CActiveScheduler::Add( this );            
+	    }
+	
+	CNcnMsgWaitingManagerObserver* CNcnMsgWaitingManagerObserver::NewL( RMobilePhone &aMobilePhone )
+	    {
+	    CNcnMsgWaitingManagerObserver* self = new (ELeave) CNcnMsgWaitingManagerObserver( aMobilePhone );
+	    
+	    CleanupStack::PushL( self );
+	    self->ConstructL();
+	    CleanupStack::Pop( self );
+	    
+	    return self;
+	    }
+	
+	void CNcnMsgWaitingManagerObserver::ConstructL()
+	    {
+	    //iMobilePhone.GetIccMessageWaitingIndicators( iStatus, iMsgWaitingPckg );
+	    //SetActive();
+	    }
+	    
+	CNcnMsgWaitingManagerObserver::~CNcnMsgWaitingManagerObserver()
+	    {
+	    NCN_RDEBUG( _L("~CNcnMsgWaitingManager") );
+	    Cancel();
+	    }
+	    
+	    
+	void CNcnMsgWaitingManagerObserver::RunL()
+	    {
+	    NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::RunL: iStatus = %d"), iStatus.Int() );	    
+	    TInt err = iStatus.Int();
+	    
+	    // subscribe for notifications
+	    iMobilePhone.NotifyIccMessageWaitingIndicatorsChange( iStatus, iMsgWaitingPckg );
+	    SetActive();
+	    
+	    iChangeNotifySubscribed = ETrue; // get-request completed, DoCancel() must now cancel notify request
+	    
+	    if ( err == KErrNone )
+	        {
+	        PrintStatus();
+	        }
+	    }
+	    
+	void CNcnMsgWaitingManagerObserver::DoCancel()
+	    {	    
+	    if ( IsActive() )
+	        {
+	        if ( iChangeNotifySubscribed )
+	            {
+	            iMobilePhone.CancelAsyncRequest( EMobilePhoneNotifyIccMessageWaitingIndicatorsChange );  
+	            }
+	        else
+	            {
+	            iMobilePhone.CancelAsyncRequest( EMobilePhoneGetIccMessageWaitingIndicators );    
+	            }
+	        }
+	    }
+	    	    
+	void CNcnMsgWaitingManagerObserver::PrintStatus()
+		{
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Voice mail line 1 active %d"), 
+			( iMsgWaiting.iDisplayStatus& RMobilePhone::KDisplayVoicemailActive ) ? ETrue : EFalse );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Voice mail line 2 active %d"), 
+			( iMsgWaiting.iDisplayStatus& RMobilePhone::KDisplayAuxVoicemailActive ) ? ETrue : EFalse );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Fax active %d"), 
+			( iMsgWaiting.iDisplayStatus& RMobilePhone::KDisplayFaxActive ) ? ETrue : EFalse );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Email active %d"), 
+			( iMsgWaiting.iDisplayStatus& RMobilePhone::KDisplayEmailActive ) ? ETrue : EFalse );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Other active %d"), 
+			( iMsgWaiting.iDisplayStatus& RMobilePhone::KDisplayOtherActive ) ? ETrue : EFalse );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Display data active %d"), 
+			( iMsgWaiting.iDisplayStatus& RMobilePhone::KDisplayDataActive ) ? ETrue : EFalse );
+
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Voice mail line 1 count %d"), 
+			iMsgWaiting.iVoiceMsgs );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Voice mail line 2 count %d"), 
+			iMsgWaiting.iAuxVoiceMsgs );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Fax count %d"), 
+			iMsgWaiting.iFaxMsgs );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Email count %d"), 
+			iMsgWaiting.iEmailMsgs );
+		NCN_RDEBUG_INT( _L("CNcnMsgWaitingManagerObserver::PrintStatus: Other message count %d"), 
+			iMsgWaiting.iOtherMsgs );
+		}	    
+	    
+	
+#endif // _DEBUG
+
+// ================= LOCAL CONSTANTS =======================
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::CNcnMsgWaitingManager
+// ----------------------------------------------------
+// 
+CNcnMsgWaitingManager::CNcnMsgWaitingManager( CNcnModelBase &aModel ) :
+    CActive( EPriorityNormal ),
+    iModel( aModel ),    
+    iMsgWaiting(),
+  	iMsgWaitingPckg( iMsgWaiting )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::NewL
+// ----------------------------------------------------
+//  
+CNcnMsgWaitingManager* CNcnMsgWaitingManager::NewL( CNcnModelBase &aModel )
+    {
+    CNcnMsgWaitingManager* self = new (ELeave) CNcnMsgWaitingManager( aModel );
+    
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    
+    return self;
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::ConstructL
+// ----------------------------------------------------
+//  
+void CNcnMsgWaitingManager::ConstructL()
+    {
+    TInt err;       
+    
+    err = iTelServer.Connect();
+    NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::ConstructL: iTelServer.Connect returned %d"), err );
+	User::LeaveIfError( err );
+
+	err = iTelServer.GetPhoneInfo( 0, iPhoneInfo );
+    NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::ConstructL: iTelServer.GetPhoneInfo returned %d"), err );	
+    User::LeaveIfError( err ); 
+        
+	err = iMobilePhone.Open( iTelServer, iPhoneInfo.iName );   
+    NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::ConstructL: iMobilePhone.Open returned %d"), err );		     
+    User::LeaveIfError( err );                  
+                
+#if 0
+	iObserver = CNcnMsgWaitingManagerObserver::NewL( iMobilePhone );
+#endif	                
+
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::GetFirstIndicatorStatus
+// ----------------------------------------------------
+//  
+void CNcnMsgWaitingManager::GetFirstIndicatorStatus()
+    {
+    Cancel();
+    iState = ENcnGetIndicator;
+	iStatus = KRequestPending;
+	iMobilePhone.GetIccMessageWaitingIndicators( iStatus, iMsgWaitingPckg );                          
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::GetFirstIndicatorStatus: iMobilePhone.GetIccMessageWaitingIndicators iStatus %d"), iStatus.Int() );		     	
+    SetActive();  
+            
+    NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::GetFirstIndicatorStatus: GetIccMessageWaitingIndicators returned %d"), iStatus.Int() );
+
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::~CNcnMsgWaitingManager
+// ----------------------------------------------------
+//    
+CNcnMsgWaitingManager::~CNcnMsgWaitingManager()
+    {
+    Cancel();
+
+#ifdef _DEBUG    
+	if( iObserver )
+		{
+	    iObserver->Cancel();
+	    delete iObserver;			
+		}
+#endif
+    
+    iMobilePhone.Close();
+    iTelServer.Close();
+    
+    iReqQueue.Close();
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::RunL
+// ----------------------------------------------------
+// 
+void CNcnMsgWaitingManager::RunL()
+    {
+	TInt err = iStatus.Int();
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::RunL: iState %d"), iState );
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::RunL: return value %d"), err );		
+    NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::RunL: there are %d requests in queue"), iReqQueue.Count() );
+
+#ifdef _DEBUG
+    NCN_RDEBUG( _L("CNcnMsgWaitingManager::RunL: Following requests are in queue:") );
+    for( int i = 0; i < iReqQueue.Count(); ++i )
+        {
+        TNcnReqQueueElement elem = iReqQueue[0];	
+        NCN_RDEBUG_INT2( _L("%d: iCmd = %d"), i, elem.iCmd );			
+        NCN_RDEBUG_INT2( _L("%d: iField = %d"), i, elem.iField );			
+        NCN_RDEBUG_INT2( _L("%d: iParam1 = %d"), i, elem.iParam1 );			
+        NCN_RDEBUG_INT2( _L("%d: iParam2 = %d"), i, elem.iParam2 );									
+        }
+#endif		
+
+    // Check if there is any requests in work queue. 
+    if( iReqQueue.Count() )		
+        {
+        TNcnReqQueueElement elem = iReqQueue[0];
+        iReqQueue.Remove( 0 );
+#ifdef _DEBUG
+        NCN_RDEBUG( _L("CNcnMsgWaitingManager::RunL: Handling request:") );
+        NCN_RDEBUG_INT( _L("0: iCmd = %d"), elem.iCmd );			
+        NCN_RDEBUG_INT( _L("0: iField = %d"), elem.iField );			
+        NCN_RDEBUG_INT( _L("0: iParam1 = %d"), elem.iParam1 );			
+        NCN_RDEBUG_INT( _L("0: iParam2 = %d"), elem.iParam2 );									
+#endif					
+        iState = elem.iCmd;							
+        if( elem.iCmd == ENcnSetCount )
+            {
+            SetMessageCount( (TNcnMessageType)elem.iField, elem.iParam1, elem.iParam2 );
+            }
+        else if( elem.iCmd == ENcnSetIndicator )				
+            {
+            SetIndicator( (TNcnIndicator)elem.iField, elem.iParam1 );					
+            }
+        }
+    else
+        {
+        NCN_RDEBUG( _L("CNcnMsgWaitingManager::RunL: state ENcnIdle") );
+        iState = ENcnIdle;				
+        }		
+    
+    
+    if ( !iConstructionReady )
+        {
+        iConstructionReady = ETrue;
+        iModel.VoiceMailManager().UpdateVMNotifications();
+        
+        }
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::RunError
+// ----------------------------------------------------
+// 
+TInt CNcnMsgWaitingManager::RunError( TInt aError )
+    {
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::RunError: aError %d"), aError );    
+
+    return aError;
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::DoCancel
+// ----------------------------------------------------
+//  
+void CNcnMsgWaitingManager::DoCancel()
+    {
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::DoCancel: iState %d"), iState );
+    
+    if( IsActive() )
+	    {
+		switch( iState )
+			{
+			case ENcnGetIndicator:
+			case ENcnGetCount:
+				iMobilePhone.CancelAsyncRequest( EMobilePhoneGetIccMessageWaitingIndicators );
+				iState = ENcnIdle;
+				break;
+			case ENcnSetIndicator:
+			case ENcnSetCount:
+				iMobilePhone.CancelAsyncRequest( EMobilePhoneSetIccMessageWaitingIndicators );
+				iState = ENcnIdle;
+				break;
+			case ENcnNotifyMsgWaiting:
+				iMobilePhone.CancelAsyncRequest( EMobilePhoneNotifyIccMessageWaitingIndicatorsChange );
+				iState = ENcnIdle;
+				break;
+			default:
+				break;						
+			}    	    	
+	    }
+    }
+
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::SetIndicator
+// ----------------------------------------------------
+//  
+TInt CNcnMsgWaitingManager::SetIndicator( 
+    const TNcnIndicator aIndicator, 
+    TBool aEnable )
+    {    
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetIndicator: iState %d"), iState );
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetIndicator: indicator %d"), aIndicator );
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetIndicator: enable %d"), aEnable );	
+		
+    switch( aIndicator )
+	    {
+		case ENcnIndicatorFax:
+			DoSetIndicator( RMobilePhone::KDisplayFaxActive, aEnable );			
+			break;
+			
+		case ENcnIndicatorEmail:
+			DoSetIndicator( RMobilePhone::KDisplayEmailActive, aEnable );			
+			break;
+			
+		case ENcnIndicatorOther:
+			DoSetIndicator( RMobilePhone::KDisplayOtherActive, aEnable );	
+			break;
+						
+		case ENcnIndicatorVMLine1:
+			DoSetIndicator( RMobilePhone::KDisplayVoicemailActive, aEnable );		
+			break;
+			
+		case ENcnIndicatorVMLine2:
+			DoSetIndicator( RMobilePhone::KDisplayAuxVoicemailActive, aEnable );
+			break;  
+	    
+		default:
+			break;	    	
+	    }
+    
+    if( IsActive() )
+	    {
+	    NCN_RDEBUG( _L("CNcnMsgWaitingManager::SetIndicator: Already actived. Adding request to queue") );
+		TNcnReqQueueElement elem( ENcnSetIndicator, aIndicator, aEnable );
+		iReqQueue.Append( elem );
+	    }
+	else
+		{
+		NCN_RDEBUG( _L("CNcnMsgWaitingManager::SetIndicator: Activating waiting manager") );
+	    iState = ENcnSetIndicator;
+		iStatus = KRequestPending;	    
+	    iMobilePhone.SetIccMessageWaitingIndicators( iStatus, iMsgWaitingPckg );	    
+	    SetActive();	    	   
+	    NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetIndicator: iStatus %d"), iStatus.Int() );	    			
+		}	    
+
+    return KErrNone;
+    }
+      
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::DoSetIndicator
+// ----------------------------------------------------
+//          
+void CNcnMsgWaitingManager::DoSetIndicator( TInt aId, TBool aEnable )        
+	{	
+	NCN_RDEBUG( _L("CNcnMsgWaitingManager::DoSetIndicator") );
+	if( aEnable )		
+		{
+		iMsgWaiting.iDisplayStatus |= aId;			
+		}
+	else
+		{
+		iMsgWaiting.iDisplayStatus &= ~ aId;					
+		}		
+	}
+      
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::SetMessageCount
+// ----------------------------------------------------
+//                  
+TInt CNcnMsgWaitingManager::SetMessageCount( 
+    const TNcnMessageType aMsgType, 
+    TUint aCount,
+    TBool aEnableIndicator )
+    {    
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetMessageCount: iState %d"), iState );
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetMessageCount: message type %d"), aMsgType );
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetMessageCount: message count %d"), aCount );
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetMessageCount: enable indicator %d"), aEnableIndicator );	
+						
+    switch( aMsgType )
+	    {
+		case ENcnMessageTypeFax:
+			DoSetIndicator( RMobilePhone::KDisplayFaxActive, aEnableIndicator );
+			iMsgWaiting.iFaxMsgs = aCount;			
+			break;
+			
+		case ENcnMessageTypeEmail:
+			DoSetIndicator( RMobilePhone::KDisplayEmailActive, aEnableIndicator );
+			iMsgWaiting.iEmailMsgs = aCount;			
+			break;
+			
+		case ENcnMessageTypeOther:
+			DoSetIndicator( RMobilePhone::KDisplayOtherActive, aEnableIndicator );	
+			iMsgWaiting.iOtherMsgs = aCount;
+			break;
+						
+		case ENcnMessageTypeVMLine1:
+			DoSetIndicator( RMobilePhone::KDisplayVoicemailActive, aEnableIndicator );
+			iMsgWaiting.iVoiceMsgs = aCount;					
+			break;
+			
+		case ENcnMessageTypeVMLine2:
+			DoSetIndicator( RMobilePhone::KDisplayAuxVoicemailActive, aEnableIndicator );
+			iMsgWaiting.iAuxVoiceMsgs = aCount;			
+			break;  
+	    
+		default:
+			break;	    	
+	    }	   	    
+
+	if( IsActive() )
+		{
+	    NCN_RDEBUG( _L("CNcnMsgWaitingManager::SetMessageCount: Already actived. Adding request to queue") );		
+		TNcnReqQueueElement elem( ENcnSetCount, aMsgType, aEnableIndicator, aCount );
+		iReqQueue.Append( elem );					
+		}
+	else
+		{
+		NCN_RDEBUG( _L("CNcnMsgWaitingManager::SetMessageCount: Activating waiting manager") );		
+	    iState = ENcnSetCount;
+		iStatus = KRequestPending;	    
+	    iMobilePhone.SetIccMessageWaitingIndicators( iStatus, iMsgWaitingPckg );	    
+	    SetActive();	    
+	    NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::SetMessageCount: iStatus %d"), iStatus.Int() );	    			
+		}		
+
+    return KErrNone;
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::GetMessageCount
+// ----------------------------------------------------
+//      
+TInt CNcnMsgWaitingManager::GetMessageCount( const TNcnMessageType aMsgType, TUint &aCount )
+    {
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::GetMessageCount: iState %d"), iState );
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::GetMessageCount: message type %d"), aMsgType );
+    
+	// Is there a need to refresh message counts at this point?	
+    switch( aMsgType )
+	    {
+		case ENcnMessageTypeFax:
+			aCount = iMsgWaiting.iFaxMsgs;			
+			break;
+			
+		case ENcnMessageTypeEmail:
+			aCount = iMsgWaiting.iEmailMsgs;
+			break;
+			
+		case ENcnMessageTypeOther:
+			aCount = iMsgWaiting.iOtherMsgs;
+			break;
+						
+		case ENcnMessageTypeVMLine1:
+			aCount = iMsgWaiting.iVoiceMsgs;
+			break;
+			
+		case ENcnMessageTypeVMLine2:
+			aCount = iMsgWaiting.iAuxVoiceMsgs;
+			break;  
+	    
+		default:
+			break;	    	
+	    }
+	    
+	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::GetMessageCount: message count %d"), aCount );	    	
+
+    return KErrNone;
+    }                    
+            
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::GetIndicator
+// ----------------------------------------------------
+//    
+TInt CNcnMsgWaitingManager::GetIndicator( const TNcnIndicator aIndicator, TBool& aEnabled )
+    {
+ 	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::GetIndicator: iState %d"), iState );
+ 	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::GetIndicator: aIndicator %d"), aIndicator );
+ 
+    switch( aIndicator )
+	    {
+		case ENcnIndicatorFax:
+			aEnabled = ( iMsgWaiting.iDisplayStatus & RMobilePhone::KDisplayFaxActive ) ? ETrue : EFalse;
+			break;
+			
+		case ENcnIndicatorEmail:
+			aEnabled = ( iMsgWaiting.iDisplayStatus & RMobilePhone::KDisplayEmailActive ) ? ETrue : EFalse;		
+			break;
+			
+		case ENcnIndicatorOther:
+			aEnabled = ( iMsgWaiting.iDisplayStatus & RMobilePhone::KDisplayOtherActive ) ? ETrue : EFalse;				
+			break;
+						
+		case ENcnIndicatorVMLine1:
+			aEnabled = ( iMsgWaiting.iDisplayStatus & RMobilePhone::KDisplayVoicemailActive ) ? ETrue : EFalse;		
+			break;
+			
+		case ENcnIndicatorVMLine2:
+			aEnabled = ( iMsgWaiting.iDisplayStatus & RMobilePhone::KDisplayAuxVoicemailActive ) ? ETrue : EFalse;		
+			break;  
+	    
+		default:
+			break;	    	
+	    }
+	        
+ 	NCN_RDEBUG_INT( _L("CNcnMsgWaitingManager::GetIndicator: indicator state %d"), aEnabled );	        	        
+
+    return KErrNone;
+    }
+
+// ----------------------------------------------------
+//  CNcnMsgWaitingManager::ConstructionReady
+// ----------------------------------------------------
+//    
+TBool CNcnMsgWaitingManager::ConstructionReady()
+    {
+    return iConstructionReady;
+    }
+
+
+
+//  End of File