diff -r ebe688cedc25 -r 7fdbb852d323 messagingappbase/ncnlist/inc/CNcnMsgWaitingManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/ncnlist/inc/CNcnMsgWaitingManager.h Wed Sep 01 12:31:54 2010 +0100 @@ -0,0 +1,221 @@ +/* +* 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: Defines class CNcnMsgWaitingManager. +* +*/ + + + +#ifndef CNCNMSGWAITINGMANAGER_H +#define CNCNMSGWAITINGMANAGER_H + +// INCLUDES +#include "MNcnMsgWaitingManager.h" + +#include +#include + +// FORWARD DECLARATIONS +class CNcnModelBase; +#ifdef _DEBUG +class CNcnMsgWaitingManagerObserver; +#endif + +// CLASS DECLARATION + +/** + * CNcnMsgWaitingManager is responsible of handling + * message related indicators and counts. It uses + * ETEL MM API to store indicator and message count values. + */ +class CNcnMsgWaitingManager : + public CActive, + public MNcnMsgWaitingManager + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aModel Reference to ncn model + */ + static CNcnMsgWaitingManager* NewL( CNcnModelBase &aModel ); + + /** + * Destructor. + */ + virtual ~CNcnMsgWaitingManager(); + + public: // From CActive + + /** + * RunL + */ + void RunL(); + + /** + * RunError + * @param aError the error returned + * @return error + */ + TInt RunError( TInt aError ); + + /** + * DoCancel + */ + void DoCancel(); + + public: // From MNcnMsgWaitingManager + + /** + * SetIndicator + * Method is used to enable / disable indicator. + * @param aIndicator Id of the indicator that should be enabled / disabled. See MNcnMsgWaitingManager for ids. + * @param aEnable ETrue if indicator should be enabled. + * @return error + */ + TInt SetIndicator( const TNcnIndicator aIndicator, TBool aEnable ); + + /** + * SetMessageCount + * Method is used to store new message count for certain message types. + * @param aMsgType Message type which count is updated. See MNcnMsgWaitingManager for ids. + * @param aCount Number of new messages. + * @param aEnableIndicator ETrue if indicator should be enabled for certain message type. + * @return error + */ + TInt SetMessageCount( const TNcnMessageType aMsgType, TUint aCount, TBool aEnableIndicator ); + + /** + * GetIndicator + * Method returns indicator status (enabled/disabled). + * @param aIndicator Indicator id. See MNcnMsgWaitingManager for ids. + * @param aEnabled ETrue if indicator is enabled. + * @return error + */ + TInt GetIndicator( const TNcnIndicator aIndicator, TBool& aEnabled ); + + /** + * GetMessageCount + * Method returns new message count for certain message type + * @param aMsgType Message type. See MNcnMsgWaitingManager for ids. + * @param aCount Number of new messages. + * @return error + */ + TInt GetMessageCount( const TNcnMessageType aMsgType, TUint& aCount ); + + /** + * ConstructionReady + * Returns ETrue, if initial settings have been read from RMobilePhone. Otherwise returns EFalse. + */ + TBool ConstructionReady(); + + /** + * GetFirstIndicatorStatus + * Indicator statuses are fetched only after SIM has been verified to be in the ESimUsable state. + */ + void GetFirstIndicatorStatus(); + + + private: // Constructors and destructor + + /** + * C++ default constructor. + * @param aMsvSessionHandler Msv session handler reference. + */ + CNcnMsgWaitingManager( CNcnModelBase &aModel ); + + /** + * 2nd. phase constructor. + */ + void ConstructL( ); + + private: // Type definitions + + /** + * Current state indicating what kind of operation is on-going. + */ + enum TNcnWaitingManagerState + { + ENcnIdle, + ENcnGetIndicator, + ENcnSetIndicator, + ENcnSetCount, + ENcnGetCount, + ENcnNotifyMsgWaiting + }; // TNcnWaitingManagerState + + /** + * Work Queue element. + */ + struct TNcnReqQueueElement + { + TNcnReqQueueElement(TNcnWaitingManagerState aCmd, TInt aField, TBool aParam1, TUint aParam2 = 0 ) + { + iCmd = aCmd; + iField = aField; + iParam1 = aParam1; + iParam2 = aParam2; + } + + TNcnWaitingManagerState iCmd; + TInt iField; // See TNcnIndicator or TNcnMessageType in MNcnMsgWaitingManager + TBool iParam1; // ETrue/EFalse if indicator should be enabled + TUint iParam2; // Used only for count operations. Tells if indicator should be enabled/disabled. + }; // TNcnReqQueueElement + + private: // Internal methods. + + /** + * Enable / disable indicator + */ + void DoSetIndicator( TInt aId, TBool aEnable ); + + private: // Data + + // Current state + TNcnWaitingManagerState iState; + + // Reference to ncn model + CNcnModelBase &iModel; + + // Needed to initialize iMobilePhone + RTelServer iTelServer; + + // Needed to initialize iMobilePhone + RTelServer::TPhoneInfo iPhoneInfo; + + // Used to store indicator flags and message counts. + RMobilePhone iMobilePhone; + + // Struct is a container for indicator flags and message counts + RMobilePhone::TMobilePhoneMessageWaitingV1 iMsgWaiting; + + // Package for iMsgWaitingV1 + RMobilePhone::TMobilePhoneMessageWaitingV1Pckg iMsgWaitingPckg; + + // Request Queue + RArray iReqQueue; + +#ifdef _DEBUG + + CNcnMsgWaitingManagerObserver *iObserver; +#endif + + TBool iConstructionReady; + + }; // CNcnMsgWaitingManager + +#endif // CNCNMSGWAITINGMANAGER_H + +// End of File