diff -r 000000000000 -r 72b543305e3a messagingappbase/ncnlist/inc/CVoiceMailManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/ncnlist/inc/CVoiceMailManager.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,201 @@ +/* +* 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