messagingappbase/ncnlist/inc/CVoiceMailManager.h
author hgs
Wed, 03 Nov 2010 22:55:44 +0530
changeset 80 8b14b30db193
parent 79 2981cb3aa489
child 77 da6ac9d688df
permissions -rw-r--r--
201044_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   Handles the notifications for voice mail messages
hgs
parents:
diff changeset
    15
*			   : Keeps track about the number of voice mail messages
hgs
parents:
diff changeset
    16
*			   : Has support for alternative line (ALS)
hgs
parents:
diff changeset
    17
*
hgs
parents:
diff changeset
    18
*/
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#ifndef NCNVOICEMAILMANAGER_H
hgs
parents:
diff changeset
    23
#define NCNVOICEMAILMANAGER_H
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// INCLUDES
hgs
parents:
diff changeset
    26
#include "NcnSubscribeHandler.h"
hgs
parents:
diff changeset
    27
#include "MNcnMsgWaitingManager.h"
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    30
class CNcnSubscriber;
hgs
parents:
diff changeset
    31
class CNcnCRHandler;
hgs
parents:
diff changeset
    32
class MNcnNotifier;
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// CLASS DECLARATION
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
/**
hgs
parents:
diff changeset
    37
* Class implementing a voice mail management responsibility
hgs
parents:
diff changeset
    38
* All the methods since 3.1 if other not specified 
hgs
parents:
diff changeset
    39
* @since Series60 3.1
hgs
parents:
diff changeset
    40
*/
hgs
parents:
diff changeset
    41
class CVoiceMailManager : public CBase, public MNcnSubscribeHandler
hgs
parents:
diff changeset
    42
{
hgs
parents:
diff changeset
    43
    public:
hgs
parents:
diff changeset
    44
    
hgs
parents:
diff changeset
    45
    /**
hgs
parents:
diff changeset
    46
     * Voice mail count can be a number telling the exact count of the messages
hgs
parents:
diff changeset
    47
     * if the exact count is not known ECountNotKnown is used.
hgs
parents:
diff changeset
    48
     * ENoVoiceMails is used to signify that no voice mails exists.
hgs
parents:
diff changeset
    49
     */
hgs
parents:
diff changeset
    50
    enum TVoiceMailCount
hgs
parents:
diff changeset
    51
        {
hgs
parents:
diff changeset
    52
        /* No voice mails exist */
hgs
parents:
diff changeset
    53
    	ENoVoiceMails = 0,
hgs
parents:
diff changeset
    54
    	
hgs
parents:
diff changeset
    55
        /* Maximum number of voice mails */
hgs
parents:
diff changeset
    56
    	EVMMaximumNumber = 0xfe,
hgs
parents:
diff changeset
    57
    	
hgs
parents:
diff changeset
    58
    	/* Voice mails exist but the exact count is not known */
hgs
parents:
diff changeset
    59
    	EVMExistsButCountNotKnown = 0xff
hgs
parents:
diff changeset
    60
        };
hgs
parents:
diff changeset
    61
            
hgs
parents:
diff changeset
    62
        /**
hgs
parents:
diff changeset
    63
         * Two-phased constructor.
hgs
parents:
diff changeset
    64
         */
hgs
parents:
diff changeset
    65
        static CVoiceMailManager* NewL( CNcnModelBase& aModel );
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
        /**
hgs
parents:
diff changeset
    68
         * Destructor.
hgs
parents:
diff changeset
    69
         */
hgs
parents:
diff changeset
    70
        ~CVoiceMailManager();
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
        /**
hgs
parents:
diff changeset
    73
         * Received a voice mail message to line 1
hgs
parents:
diff changeset
    74
         * Messages are SET(default) and CLEAR message. There is three ways
hgs
parents:
diff changeset
    75
         * how voice mail messages can arrive. CPHS, DCS and "special SMS"
hgs
parents:
diff changeset
    76
         * these messages are handled by NCN session observer. 
hgs
parents:
diff changeset
    77
         * Use TVoiceMailCount values in case the message is a clear message or
hgs
parents:
diff changeset
    78
         * the amount is not exactly know. Otherwise give the exact count.
hgs
parents:
diff changeset
    79
		 * @param aAmount How many voice mails we received to line 1
hgs
parents:
diff changeset
    80
         */
hgs
parents:
diff changeset
    81
        void VMMessageReceived( MNcnMsgWaitingManager::TNcnMessageType aLineType, TUint aAmount );
hgs
parents:
diff changeset
    82
 
hgs
parents:
diff changeset
    83
        /**
hgs
parents:
diff changeset
    84
         * Check the SIM status at the boot up phase. If the SIM contains
hgs
parents:
diff changeset
    85
         * voice mails the PS key has been updated by some other component.
hgs
parents:
diff changeset
    86
         * The internal number that we maintain about the voice message count
hgs
parents:
diff changeset
    87
         * is now over written by a general notification about "New voice mail(s)"
hgs
parents:
diff changeset
    88
         * Reason for this is that SIM card does not apparantly hold the exact amount
hgs
parents:
diff changeset
    89
         * of received voice mails so only a general notification is desired.
hgs
parents:
diff changeset
    90
         * @return True if SIM contains voice mail messages
hgs
parents:
diff changeset
    91
         */
hgs
parents:
diff changeset
    92
        TBool CheckForSIMVoiceMailMessages();
hgs
parents:
diff changeset
    93
        
hgs
parents:
diff changeset
    94
        /**
hgs
parents:
diff changeset
    95
         * SIM has changed so we will need to erase old notes.
hgs
parents:
diff changeset
    96
         * Model uses this method to notify voice mail manager
hgs
parents:
diff changeset
    97
         * We also use this in the constructL if we notice that
hgs
parents:
diff changeset
    98
         * the SIM has changed in boot-up
hgs
parents:
diff changeset
    99
         */
hgs
parents:
diff changeset
   100
		void NotifyAboutSIMChange();
hgs
parents:
diff changeset
   101
		
hgs
parents:
diff changeset
   102
        /**
hgs
parents:
diff changeset
   103
         * Check the KMuiuSupressAllNotificationConfiguration value
hgs
parents:
diff changeset
   104
         */		
hgs
parents:
diff changeset
   105
		TBool CheckSupressNotificationSettingL();
hgs
parents:
diff changeset
   106
		
hgs
parents:
diff changeset
   107
    private:
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
        /**
hgs
parents:
diff changeset
   110
         * C++ default constructor.
hgs
parents:
diff changeset
   111
         */
hgs
parents:
diff changeset
   112
        CVoiceMailManager( CNcnModelBase& aModel );
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
        /**
hgs
parents:
diff changeset
   115
         * By default Symbian 2nd phase constructor is private.
hgs
parents:
diff changeset
   116
         */
hgs
parents:
diff changeset
   117
        void ConstructL();
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
	public: //from MNcnSubscribeHandler
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
		/**
hgs
parents:
diff changeset
   122
        * Through this method the Property subscribers notify of Property changes
hgs
parents:
diff changeset
   123
        * @param aCategory The category of the property to be observed
hgs
parents:
diff changeset
   124
		* @param aKey The subkey of the property to be observed
hgs
parents:
diff changeset
   125
		*/
hgs
parents:
diff changeset
   126
        void HandlePropertyChangedL( const TUid& aCategory, TInt aKey );
hgs
parents:
diff changeset
   127
        
hgs
parents:
diff changeset
   128
        /**
hgs
parents:
diff changeset
   129
         * ALS indication and note update
hgs
parents:
diff changeset
   130
         * 
hgs
parents:
diff changeset
   131
         * Indication and note must be updated for line 1 and line 2
hgs
parents:
diff changeset
   132
         * whenever state for either of the line changes.
hgs
parents:
diff changeset
   133
         * 
hgs
parents:
diff changeset
   134
         */
hgs
parents:
diff changeset
   135
        void UpdateNoteAndIndicationWithALS( TInt aMsgOnLine1,  TInt aMsgOnLine2 );
hgs
parents:
diff changeset
   136
        
hgs
parents:
diff changeset
   137
		/**
hgs
parents:
diff changeset
   138
        * Update soft notification and trigger icon drawing to
hgs
parents:
diff changeset
   139
        * reflect the current state of the lines
hgs
parents:
diff changeset
   140
		*/
hgs
parents:
diff changeset
   141
        void UpdateVMNotifications();
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
    private: // Own methods
hgs
parents:
diff changeset
   145
    
hgs
parents:
diff changeset
   146
        /**
hgs
parents:
diff changeset
   147
        * Clear existing voice mail notes
hgs
parents:
diff changeset
   148
        */
hgs
parents:
diff changeset
   149
        void ClearVoiceMailSoftNotes();     
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
		/**
hgs
parents:
diff changeset
   152
        * Find out is alternative line subscription active in the terminal
hgs
parents:
diff changeset
   153
		*/
hgs
parents:
diff changeset
   154
        TBool UpdateALSStatus();
hgs
parents:
diff changeset
   155
        
hgs
parents:
diff changeset
   156
    private: // data
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
    	/**
hgs
parents:
diff changeset
   159
         * The current state of the ALS support
hgs
parents:
diff changeset
   160
         */
hgs
parents:
diff changeset
   161
        TBool iIsALSSupported;
hgs
parents:
diff changeset
   162
        
hgs
parents:
diff changeset
   163
        
hgs
parents:
diff changeset
   164
		/* 107-18696: Handling of EF-CFIS and EF-MWIS in telephony area
hgs
parents:
diff changeset
   165
		 * No need to keep voice mail count anymore. ETEL MM will take 
hgs
parents:
diff changeset
   166
		 * care of that.
hgs
parents:
diff changeset
   167
		 */
hgs
parents:
diff changeset
   168
    	/**
hgs
parents:
diff changeset
   169
         * Number of voice mails we have active in line 1
hgs
parents:
diff changeset
   170
         */
hgs
parents:
diff changeset
   171
        //TUint iVoiceMailCountInLine1;
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
    	/**
hgs
parents:
diff changeset
   174
         * Number of voice mails we have active in line 2
hgs
parents:
diff changeset
   175
         */
hgs
parents:
diff changeset
   176
        //TUint iVoiceMailCountInLine2;
hgs
parents:
diff changeset
   177
              
hgs
parents:
diff changeset
   178
    	/**
hgs
parents:
diff changeset
   179
         * Value of the PS key KNcnVoiceMailStatusValue, which
hgs
parents:
diff changeset
   180
         * is currently mapped to KPSUidVoiceMailStatusValue
hgs
parents:
diff changeset
   181
         */
hgs
parents:
diff changeset
   182
        //TInt iPSKeyForVoiceMailStatus;
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
     	/**
hgs
parents:
diff changeset
   185
         * CR keys are updated through the ncn CR handler
hgs
parents:
diff changeset
   186
         * Not owned only referenced.
hgs
parents:
diff changeset
   187
         */       
hgs
parents:
diff changeset
   188
        //CNcnCRHandler& iNcnCRHandler;
hgs
parents:
diff changeset
   189
        
hgs
parents:
diff changeset
   190
     	/**
hgs
parents:
diff changeset
   191
         * Used to display soft notification
hgs
parents:
diff changeset
   192
         * Not owned only referenced.
hgs
parents:
diff changeset
   193
         */                
hgs
parents:
diff changeset
   194
        //MNcnNotifier& iNcnNotifier;
hgs
parents:
diff changeset
   195
        
hgs
parents:
diff changeset
   196
     	/**
hgs
parents:
diff changeset
   197
         * Reference to model which is used to display
hgs
parents:
diff changeset
   198
         * soft notes and manage indicators and message counts. 
hgs
parents:
diff changeset
   199
         */                
hgs
parents:
diff changeset
   200
        CNcnModelBase& iModel;
hgs
parents:
diff changeset
   201
};
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
#endif // NCNVOICEMAILMANAGER_H
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
// End of File