--- /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 <e32base.h>
+#include <etelmm.h>
+
+// 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<TNcnReqQueueElement> iReqQueue;
+
+#ifdef _DEBUG
+
+ CNcnMsgWaitingManagerObserver *iObserver;
+#endif
+
+ TBool iConstructionReady;
+
+ }; // CNcnMsgWaitingManager
+
+#endif // CNCNMSGWAITINGMANAGER_H
+
+// End of File