/*
* 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();
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