--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailservices/emailserver/cmailhandlerplugin/inc/emailsoundhandler.h Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,177 @@
+/*
+* Copyright (c) 2009 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: This file defines class CFSMailSoundHandler.
+*
+*/
+
+#ifndef __EMAILSOUNDHANDLER_H
+#define __EMAILSOUNDHANDLER_H
+
+#include <e32std.h>
+#include <mdaaudiosampleplayer.h>
+#include <MProfileChangeObserver.h>
+#include "fsnotificationhandlerbase.h"
+#include "emailsoundstates.h"
+#include "memailsoundstatecontext.h"
+#include "cmaildriveobserver.h"
+#include "PSSubscriber.h"
+#include "PSSubscribeHandler.h"
+
+class CProfileChangeNotifyHandler;
+class MProfileEngine;
+
+/**
+ * Class to handle email sound playing.
+ * A handler for observing inputs into email framework, playing a sound
+ * if a message addition is performed on a Inbox folder.
+ *
+ * @lib cmailhandlerplugin
+ * @since S60 v5.2
+ */
+class CFSMailSoundHandler : public CFSNotificationHandlerBase,
+ public MMdaAudioPlayerCallback,
+ public MProfileChangeObserver,
+ public MEmailSoundStateContext,
+ public MDriveObserver,
+ public MPSSubscribeHandler
+{
+public:
+
+public: //from MStoreDriveStateObserver
+
+ /**
+ * called when observer drive ( memory card )
+ * changes state.
+ * */
+ void DriveStateChangedL( TBool aState );
+
+ /**
+ * Callback from PSSubscriber about a PS key event
+ * @param aCategory defines the key category
+ * @param aKey defines the changed key
+ */
+ void HandlePropertyChangedL( const TUid& aCategory, TInt aKey );
+
+ /**
+ * Two-phased constructor.
+ * @param aMailClient Object to access email framework
+ * @param aOwner Owner and manager of this handler. NULL if not
+ * specified.
+ */
+ static CFSMailSoundHandler* NewL( MFSNotificationHandlerMgr& aOwner );
+
+ /**
+ * destructor
+ */
+ virtual ~CFSMailSoundHandler();
+
+ // from base class CFSNotificationHandlerBase
+ virtual void HandleEventL(
+ TFSMailEvent aEvent,
+ TFSMailMsgId aMailbox,
+ TAny* aParam1,
+ TAny* aParam2,
+ TAny* aParam3 );
+
+public: // from MEmailSoundStateContext
+
+ /** @see MEmailSoundStateContext */
+ virtual void SetState( CEmailSoundState* aNewState );
+
+ /** @see MEmailSoundStateContext */
+ virtual CMdaAudioPlayerUtility* AudioPlayer();
+
+ /** @see MEmailSoundStateContext */
+ virtual void RecreateAudioPlayerL();
+
+ /** @see MEmailSoundStateContext */
+ virtual void ReleaseAudioPlayer();
+
+ /** @see MEmailSoundStateContext */
+ virtual MProfileEngine& ProfileEngine() const;
+
+protected:
+
+ // from base class MProfileChangeObserver
+ virtual void HandleActiveProfileEventL( TProfileEvent aPE, TInt id );
+
+ // from base class MMdaAudioPlayerCallback
+ virtual void MapcInitComplete(
+ TInt aError,
+ const TTimeIntervalMicroSeconds& aInterval );
+
+ virtual void MapcPlayComplete( TInt aError );
+
+private:
+
+ /**
+ * Constructor.
+ */
+ CFSMailSoundHandler( MFSNotificationHandlerMgr& aOwner );
+
+ void ConstructL();
+
+ /**
+ * Fetches the sound and volume for received messagetype
+ * @param aProfile Current profile.
+ * @param aSound The variable to store the soundfile information
+ * @param aVolume The variable to store the volume
+ * @return KErrNone when no problems found
+ */
+ void GetSoundFileAndVolume(
+ const MProfile& aProfile,
+ TFileName& aSound,
+ TInt& aVolume ) const;
+
+// from base class CFSNotificationHandlerBase
+ virtual void TurnNotificationOn();
+ virtual void TurnNotificationOff();
+
+ /**
+ * Returns ETrue if beep-once is set in profile. If it is,
+ * beep sequence should be played instead of message alert tone.
+ * @param Active profile.
+ * @return ETrue if beep-once is set in profile.
+ */
+ TBool IsBeepOnceSetL( const MProfile& aProfile ) const;
+
+private: // data members
+
+ // Currently active sound state
+ CEmailSoundState* iState;
+
+ // Audio player utility used by a sound state to play new email tone
+ CMdaAudioPlayerUtility* iAudioPlayer;
+
+ // Profile engine for accessing active profile
+ MProfileEngine* iProfileEngine;
+
+ // For receiving profile change events
+ CProfileChangeNotifyHandler* iHandler;
+
+ // PubSub subsriber for key press events when playing a tone
+ CPSSubscriber* iMsgToneSubscriber;
+
+ CDriveObserver* iDriveObserver;
+#ifdef __HANDLER_TEST
+ // for module testing
+public:
+
+ TRequestStatus* iTesterReqStatus;
+
+ friend class CHsSoundHandlerTester;
+#endif
+};
+
+#endif // __EMAILSOUNDHANDLER_H