phonesrv_plat/phone_settings_api/inc/PsetSAObserver.h
changeset 0 ff3b6d0fd310
child 3 a4a774cb6ea7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesrv_plat/phone_settings_api/inc/PsetSAObserver.h	Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,295 @@
+/*
+* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  CPsetSAObserver handles all the queries to observer.
+*
+*
+*/
+
+
+#ifndef     PSETSAOBSERVER_H
+#define     PSETSAOBSERVER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <e32Property.h>
+#include <psetcalldiverting.h>
+#include <psvariables.h>
+#include <ctsydomaincrkeys.h>
+
+// FORWARD DECLARATIONS
+class MPsetNetworkInfoObserver;
+class MPsetDivertObserver;
+class CPSetSubscriberIdCheck;
+
+//  CONSTANTS  
+const TInt KCodeUnspecified(-1);
+
+// CLASS DECLARATION
+
+/**
+*  Class is used to create params for NotifyDivertChange method.
+*
+*  @lib phonesettings.dll
+*  @since 3.2
+*/
+class TCallDivertNotifySetting
+    {
+    public: // new    
+    
+        void Initialize()
+            {
+            iPreviousCfStatus = KCFIndicatorUnknown;
+            iCfActivated = EFalse;
+            iVmbxDivert = EFalse;
+            iBasicServiceCode = KCodeUnspecified;
+            }
+            
+    public: //member data
+    
+        // Current status of divert. Note: GetCurrentDivertStatus returns
+        // current status.
+        TUnconditionalCFStatus iPreviousCfStatus;
+   
+        // ETrue if activating divert and EFalse if deactivating.
+        TBool iCfActivated;
+        
+        // True if voice mailbox divert, otherwise false.
+        TBool iVmbxDivert;
+        
+        // BasicServiceCode related to divert operation, see nwDefs.h
+        // for more information. 
+        TInt iBasicServiceCode;
+    };
+
+/**
+*  Class is used to exchange information to/from observer.
+*
+*  @lib phonesettings.dll
+*  @since 1.0
+*/
+class CPsetSAObserver : public CActive
+    {
+    public: // constructor & destructor
+
+        /**
+        * First phase constructor.
+        * 
+        * @return Returns the CPsetSAObserver-object
+        */
+        IMPORT_C static CPsetSAObserver* NewL();
+
+        /* Destructor */
+        IMPORT_C ~CPsetSAObserver();
+
+    public:
+
+        //Current call status.
+        enum TPSetCallStatus
+            {
+            EPSetNoCallsActive = 0,
+            EPSetCallActive
+            };
+
+        /**
+        * Queries if there is an active call.
+        *
+        * @return call status (active or not)
+        */
+        IMPORT_C TInt IsCallActive();
+
+
+        //GPRS connection status.
+        enum TPSetGPRSConnectionStatus
+            {
+            EPSetGPRSNotConnected = 0,
+            EPSetGPRSConnectionActive
+            };
+
+        /**
+        * Queries if there is an active gprs connection.
+        *
+        * @return gprs connection status (active or not)
+        */
+        IMPORT_C TInt IsGPRSConnected();
+
+        /**
+        * Sets Network observer object.
+        *
+        * @param aObserver Reference to network observer.
+        */
+        IMPORT_C void SetNetObserver( MPsetNetworkInfoObserver& aObserver );
+               
+        /**
+        * Notifies of Divert changes. If the activator is not sure of the
+        * settings, CPsetSAObserver tries to deduce correct state.
+        *
+        * @param aAlsStatus Currently used line.
+        * @param aDivertNotify set of divert params, see TCallDivertNotifySetting above.
+        * @param aActivatorUncertain Call divert requester does not know for certain
+        *        all the values.
+        */
+        IMPORT_C void NotifyDivertChange( TSelectedLine aAlsStatus,
+            TCallDivertNotifySetting& aDivertNotify, const TInt& aActivatorUncertain );
+        
+        /**
+        * Returns whether there are active diverts and on what line.
+        *
+        * @param aStatus TCallForwardingStatus info.
+        * @return KErrNone if successful else system wide error code if 
+        * get fails.
+        */
+        IMPORT_C TInt GetCurrentDivertStatus( TUnconditionalCFStatus& aStatus );
+
+    private: // from CActive
+
+        void RunL();
+
+        void DoCancel();
+
+    private: //new
+    
+        /**
+        * Handles divert indicator cases when ALS if OFF.
+        */
+        void HandleNoAlsIndicators( TCallDivertNotifySetting& aDivertNotify,
+            const TInt& aActivatorUncertain );
+          
+        /**
+        * Handles divert indicator cases when ALS on and
+        * ALS line 1 active.
+        */  
+        void HandlePrimaryLineIndicators( TCallDivertNotifySetting& aDivertNotify );
+
+        /**
+        * Handles divert indicator cases when ALS on and
+        * ALS line 2 active.
+        */
+        void HandleSecondaryLineIndicators( TCallDivertNotifySetting& aDivertNotify );
+        
+        /**
+        * Set correct indicator value when divert activated 
+        * to voicemail (no ALS).
+        */
+        void HandleVoiceMailBoxDivertActivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when diverted to some
+        * other number than voicemail (no ALS).
+        */   
+        void HandleDivertActivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when deactivation
+        * done (no ALS).
+        */        
+        void HandleDivertDeactivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when Primary line 
+        * activation done.
+        */
+        void HandlePrimaryLineDivertActivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when Primary line 
+        * deactivation done.
+        */
+        void HandlePrimaryLineDivertDeactivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when Secondary line 
+        * activation done.
+        */
+        void HandleSecondaryLineDivertActivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when Secondary line 
+        * deactivation done.
+        */
+        void HandleSecondaryLineDivertDeactivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when Primary line 
+        * activation done.
+        */
+        void HandlePrimaryLineDualDivertActivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when Primary line 
+        * deactivation done.
+        */
+        void HandlePrimaryLineDualDivertDeactivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+                
+        /**
+        * Set correct indicator value when Secondary line 
+        * activation done.
+        */
+        void HandleSecondaryLineDualDivertActivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Set correct indicator value when Secondary line 
+        * deactivation done.
+        */
+        void HandleSecondaryLineDualDivertDeactivation( 
+            TUnconditionalCFStatus& aStatus,
+            const TInt aBsc  );
+        
+        /**
+        * Starts to listen to call alerting or call ringing events.
+        */
+        void NotifyCallStartedL();
+        
+        /**
+        * Checks KTelephonyLVFlagDivertDualAffect status.
+        */
+        TBool IsDivertDualAffectFeatureEnabledL();
+
+    private: // constructors
+
+        void ConstructL();
+
+        CPsetSAObserver();
+
+    private: //member data
+
+        //Observer for network related SS.
+        MPsetNetworkInfoObserver*   iNetObserver;
+        
+        // The Notify interface to Publish And Subscribe.
+        RProperty                   iNotifyProperty;
+        
+        CRepository* iRepository;
+    }; 
+#endif // PSETSAOBSERVER_H
+// end of file