messagingappbase/ncnlist/inc/CNcnMsvSessionHandler.h
branchRCL_3
changeset 60 7fdbb852d323
parent 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/ncnlist/inc/CNcnMsvSessionHandler.h	Wed Sep 01 12:31:54 2010 +0100
@@ -0,0 +1,186 @@
+/*
+* 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 CNcnMsvSessionHandler.
+*
+*/
+
+
+
+#ifndef NCNMSVSESSIONHANDLER_H
+#define NCNMSVSESSIONHANDLER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <msvapi.h>     // For MMsvSessionObserver
+
+// FORWARD DECLARATIONS
+class MNcnMsvSessionHandlerObserver;
+class CMsvSession;
+
+// CLASS DECLARATION
+
+/**
+ * Handles the Msv-session instance and notifier observers about
+ * changes in session state.
+ */
+class CNcnMsvSessionHandler :
+    public CBase,
+    public MMsvSessionObserver
+    {
+    private:  // Constructors and destructor
+
+        /**
+        * C++ default constructor.
+        */
+        CNcnMsvSessionHandler( );
+
+        /**
+         * 2nd. phase constructor.
+         */ 
+        void ConstructL();
+
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CNcnMsvSessionHandler* NewL( );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CNcnMsvSessionHandler();
+        
+    public:     // From MMsvSessionObserver
+    
+        void HandleSessionEventL(
+            TMsvSessionEvent aEvent,
+            TAny* aArg1,
+            TAny* aArg2,
+            TAny* aArg3 );
+
+    public:  // New methods
+
+        /**
+         * Adds an observer.
+         * @param aObserver The observer to add. Ownership is not passed.
+         */
+        void AddObserverL( MNcnMsvSessionHandlerObserver* aObserver );
+
+        /**
+         * Removes the specified observer.
+         * @param aObserver The observer to remove. Ownership is not passed.
+         */
+        void RemoveObserver( MNcnMsvSessionHandlerObserver* aObserver );
+
+        /**
+         * Returns ETrue if Msv session is ready.
+         * @return ETrue if Msv session is ready.
+         */
+        TBool IsMsvSessionReady() const;
+
+        /**
+         * Returns Msv session reference. May leave with KErrGeneral
+         * if Msv session is not ready.
+         * @return The Msv session reference.
+         */
+        CMsvSession& MsvSessionL();
+        
+        /**
+         * Starts the session handler. Method will connect the session
+         * and handler notifies observers about the progress.
+         * Method may leave if Msv session could not be instantiated.
+         */
+        void StartSessionHandlerL();
+        
+        /**
+         * Stops the session handler.
+         */
+        void StopSessionHandler();
+        
+    private:    // New methods
+    
+        /**
+         * Handles Msv terminated event.
+         */
+        void HandleMsvTerminatedL();        
+        
+        /**
+         * Handles Msv closed event.
+         */
+        void HandleMsvClosed();
+        
+        /**
+         * Handles created entries.
+         */
+        void HandleMsvEntriesCreatedL( const CMsvEntrySelection& aSelection );
+        
+        /**
+         * Handles deleted entries.
+         */
+        void HandleMsvEntriesDeletedL( const CMsvEntrySelection& aSelection );                
+        
+        /**
+         * Notifies that Msv session is ready.
+         */
+        void NotifyMsvSessionReady();
+        
+        /**
+         * Notifies that Msv session is closed.
+         */
+        void NotifyMsvSessionClosed();
+        
+        /**
+         * Notifies about created msv entry.
+         * @param aMsvId The id of the created entry.
+         */
+        void NotifyMsvEntryCreated( const TMsvId& aMsvId );
+        
+        /**
+         * Notifies about deleted msv entry.
+         * @param aMsvId The id of the deleted entry.
+         */
+        void NotifyMsvEntryDeleted( const TMsvId& aMsvId );
+        
+         /**
+         * Notifies that the Message Server has automatically changed the index 
+         * location to use the internal disk.
+         * @param aDriveNumber The drive number where the message store moves
+         */
+        void HandleMsvMediaChangedL( const TDriveNumber& aDriveNumber );
+
+		/**
+		* Notifies that the disk containing the Message Store is available again.
+		* The Message Server can now operate as normal
+		* @param aDriveNumber is a TDriveNumber value that identifies the drive that is being used.
+		*/
+        void HandleMsvMediaAvailableL( const TDriveNumber& aDriveNumber );
+        
+        /**
+		* Notifies that the disk containing the Message Store is Unavailable .
+		*/
+        void HandleMsvMediaUnAvailableL( );
+        
+    private:    // Data
+
+        // Msv session pointer, owned
+        CMsvSession* iMsvSession;        
+        
+        // Observer array, pointers are not owned
+        CArrayPtrSeg<MNcnMsvSessionHandlerObserver> iObservers;
+    };
+
+#endif    // NCNMSVSESSIONHANDLER_H
+
+// End of File