emailservices/emailserver/cmailhandlerplugin/inc/fsmailsoundhandler.h
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailservices/emailserver/cmailhandlerplugin/inc/fsmailsoundhandler.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2007 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 __FSMAILSOUNDHANDLER_H
+#define __FSMAILSOUNDHANDLER_H
+
+#include <e32std.h>
+
+#include <mdaaudiosampleplayer.h>
+
+// <cmail>
+//#include <oem/MProfileEngine.h>
+//#include <oem/MProfileChangeObserver.h>
+#include <MProfileEngine.h>
+#include <MProfileChangeObserver.h>
+// </cmail>
+
+
+#include "fsnotificationhandlerbase.h"
+#include "fsnotificationhandlertimerobserver.h"
+
+class CProfileChangeNotifyHandler;
+class CHWRMVibra;
+class CFSNotificationHandlerTimer;
+
+
+/**
+ *  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.
+ *
+ *  @code
+ *   ?good_class_usage_example(s)
+ *  @endcode
+ *
+ *  @lib ?library
+ *  @since S60 ?S60_version *** for example, S60 v3.0
+ */ 
+class CFSMailSoundHandler : public CFSNotificationHandlerBase,
+                            public MFSNotificationHandlerTimerObserver,
+                            public MMdaAudioPlayerCallback,
+                            public MProfileChangeObserver
+{
+public:
+
+    /**
+     * 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 );
+    virtual ~CFSMailSoundHandler();
+    
+    void RefreshData();
+
+    // From base class MFSNotificationHandlerTimerObserver
+    virtual void TimerCallBackL( TInt aError );
+
+    // from base class CFSNotificationHandlerBase
+    virtual void HandleEventL(
+        TFSMailEvent aEvent,
+        TFSMailMsgId aMailbox,
+        TAny* aParam1,
+        TAny* aParam2,
+        TAny* aParam3 );
+
+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.
+     *
+     * @since S60 ?S60_version
+     * @param aOwner Owner and manager of this handler.
+     */ 
+    CFSMailSoundHandler( MFSNotificationHandlerMgr& aOwner );
+    void ConstructL();
+
+    void Init();
+    void Close();
+    void Sound();
+    void Resume();
+    TInt SetAudioPlayerL( bool def );
+    /**
+    * Fetches the sound and volume for received messagetype
+    * @since    Series60 2.1
+    * @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
+    */
+    TInt GetSoundFileAndVolumeL(
+        const MProfile& aProfile, 
+        TFileName& aSound, 
+        TInt& aVolume ) const;
+    TInt ToneVolume( const MProfile& aProfile ) const;
+
+// from base class CFSNotificationHandlerBase         
+    virtual void TurnNotificationOn();
+    virtual void TurnNotificationOff();
+
+private: // data
+
+	enum TTasks
+        {
+        EInit = 1,
+        ESound,
+        EWait,
+        EDefault,
+        EPending,
+        EReset
+        };
+
+    TInt iVolume;
+    TTasks iNextState;    
+    TTasks iPending;
+    TTasks iReset;
+    CMdaAudioPlayerUtility* iAudioPlayer;
+    MProfileEngine* iProfileEngine;
+    CProfileChangeNotifyHandler* iHandler;
+    CHWRMVibra* iVibra;
+
+    /**
+     * Timer service.
+     * Own.
+     */        
+    CFSNotificationHandlerTimer* iTimer;
+};
+
+
+#endif __FSMAILSOUNDHANDLER_H
\ No newline at end of file