messagingappbase/ncnlist/inc/CVoiceMailManager.h
branchRCL_3
changeset 27 7fdbb852d323
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/ncnlist/inc/CVoiceMailManager.h	Wed Sep 01 12:31:54 2010 +0100
@@ -0,0 +1,206 @@
+/*
+* 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:   Handles the notifications for voice mail messages
+*			   : Keeps track about the number of voice mail messages
+*			   : Has support for alternative line (ALS)
+*
+*/
+
+
+
+#ifndef NCNVOICEMAILMANAGER_H
+#define NCNVOICEMAILMANAGER_H
+
+// INCLUDES
+#include "NcnSubscribeHandler.h"
+#include "MNcnMsgWaitingManager.h"
+
+// FORWARD DECLARATIONS
+class CNcnSubscriber;
+class CNcnCRHandler;
+class MNcnNotifier;
+
+// CLASS DECLARATION
+
+/**
+* Class implementing a voice mail management responsibility
+* All the methods since 3.1 if other not specified 
+* @since Series60 3.1
+*/
+class CVoiceMailManager : public CBase, public MNcnSubscribeHandler
+{
+    public:
+    
+    /**
+     * Voice mail count can be a number telling the exact count of the messages
+     * if the exact count is not known ECountNotKnown is used.
+     * ENoVoiceMails is used to signify that no voice mails exists.
+     */
+    enum TVoiceMailCount
+        {
+        /* No voice mails exist */
+    	ENoVoiceMails = 0,
+    	
+        /* Maximum number of voice mails */
+    	EVMMaximumNumber = 0xfe,
+    	
+    	/* Voice mails exist but the exact count is not known */
+    	EVMExistsButCountNotKnown = 0xff
+        };
+            
+        /**
+         * Two-phased constructor.
+         */
+        static CVoiceMailManager* NewL( CNcnModelBase& aModel );
+
+        /**
+         * Destructor.
+         */
+        ~CVoiceMailManager();
+
+        /**
+         * Received a voice mail message to line 1
+         * Messages are SET(default) and CLEAR message. There is three ways
+         * how voice mail messages can arrive. CPHS, DCS and "special SMS"
+         * these messages are handled by NCN session observer. 
+         * Use TVoiceMailCount values in case the message is a clear message or
+         * the amount is not exactly know. Otherwise give the exact count.
+		 * @param aAmount How many voice mails we received to line 1
+         */
+        void VMMessageReceived( MNcnMsgWaitingManager::TNcnMessageType aLineType, TUint aAmount );
+ 
+        /**
+         * Check the SIM status at the boot up phase. If the SIM contains
+         * voice mails the PS key has been updated by some other component.
+         * The internal number that we maintain about the voice message count
+         * is now over written by a general notification about "New voice mail(s)"
+         * Reason for this is that SIM card does not apparantly hold the exact amount
+         * of received voice mails so only a general notification is desired.
+         * @return True if SIM contains voice mail messages
+         */
+        TBool CheckForSIMVoiceMailMessages();
+        
+        /**
+         * SIM has changed so we will need to erase old notes.
+         * Model uses this method to notify voice mail manager
+         * We also use this in the constructL if we notice that
+         * the SIM has changed in boot-up
+         */
+		void NotifyAboutSIMChange();
+		
+        /**
+         * Check the KMuiuSupressAllNotificationConfiguration value
+         */		
+		TBool CheckSupressNotificationSettingL();
+		
+    private:
+
+        /**
+         * C++ default constructor.
+         */
+        CVoiceMailManager( CNcnModelBase& aModel );
+
+        /**
+         * By default Symbian 2nd phase constructor is private.
+         */
+        void ConstructL();
+
+	public: //from MNcnSubscribeHandler
+
+		/**
+        * Through this method the Property subscribers notify of Property changes
+        * @param aCategory The category of the property to be observed
+		* @param aKey The subkey of the property to be observed
+		*/
+        void HandlePropertyChangedL( const TUid& aCategory, TInt aKey );
+        
+        /**
+         * ALS indication and note update
+         * 
+         * Indication and note must be updated for line 1 and line 2
+         * whenever state for either of the line changes.
+         * 
+         */
+        void UpdateNoteAndIndicationWithALS( TInt aMsgOnLine1,  TInt aMsgOnLine2 );
+        
+		/**
+        * Update soft notification and trigger icon drawing to
+        * reflect the current state of the lines
+		*/
+        void UpdateVMNotifications();
+
+
+    private: // Own methods
+    
+        /**
+        * Clear existing voice mail notes
+        */
+        void ClearVoiceMailSoftNotes();     
+
+		/**
+        * Find out is alternative line subscription active in the terminal
+		*/
+        TBool UpdateALSStatus();
+        
+    private: // data
+
+    	/**
+         * The current state of the ALS support
+         */
+        TBool iIsALSSupported;
+        
+        
+		/* 107-18696: Handling of EF-CFIS and EF-MWIS in telephony area
+		 * No need to keep voice mail count anymore. ETEL MM will take 
+		 * care of that.
+		 */
+    	/**
+         * Number of voice mails we have active in line 1
+         */
+        //TUint iVoiceMailCountInLine1;
+
+    	/**
+         * Number of voice mails we have active in line 2
+         */
+        //TUint iVoiceMailCountInLine2;
+              
+    	/**
+         * Value of the PS key KNcnVoiceMailStatusValue, which
+         * is currently mapped to KPSUidVoiceMailStatusValue
+         */
+        //TInt iPSKeyForVoiceMailStatus;
+
+     	/**
+         * CR keys are updated through the ncn CR handler
+         * Not owned only referenced.
+         */       
+        //CNcnCRHandler& iNcnCRHandler;
+        
+     	/**
+         * Used to display soft notification
+         * Not owned only referenced.
+         */                
+        //MNcnNotifier& iNcnNotifier;
+        
+     	/**
+         * Reference to model which is used to display
+         * soft notes and manage indicators and message counts. 
+         */                
+        CNcnModelBase& iModel;
+};
+
+
+#endif // NCNVOICEMAILMANAGER_H
+
+// End of File