vtengines/videoteleng/Inc/Base/CVtEngAccessoryHandler.h
changeset 0 ed9695c8bcbe
child 3 b1602a5ab0a3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtengines/videoteleng/Inc/Base/CVtEngAccessoryHandler.h	Mon Nov 23 14:47:47 2009 +0200
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2004-2005 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:  Accessory handler.
+*
+*/
+
+
+
+#ifndef CVTENGACCHANDLER_H
+#define CVTENGACCHANDLER_H
+
+//  INCLUDES
+#include    <e32base.h>
+#include    <accpolaccessorymode.h>
+#include    <accessoryserver.h>
+#include    <accessorymode.h>
+
+// FORWARD DECLARATIONS
+class MVtEngAccessoryObserver;
+
+// CLASS DECLARATION
+
+/**
+*  Accessory mode listener for video telephony.
+*
+*  @lib videoteleng
+*  @since 3.0
+*/
+NONSHARABLE_CLASS( CVtEngAccessoryHandler ) : public CActive
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        ¨* @return instance of CVtEngAccessoryHandler
+        */
+        static CVtEngAccessoryHandler* NewL( );
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CVtEngAccessoryHandler();
+
+    public: // From base classes.
+
+        /**
+        * Handles accessory mode changes.
+        */
+        void RunL();
+
+        /**
+        * Cancels accessory mode monitoring.
+        */
+        void DoCancel();
+
+        /**
+        * Handles exceptions in RunL.
+        * @param aError error code.
+        * @return error code.
+        */
+        TInt RunError( TInt aError );
+
+    public: // New functions
+
+        /**
+        * Sets a new listener interested in accessory changes.
+        * @param aObserver call back interface for notifications.
+        */
+        void RegisterObserverL( MVtEngAccessoryObserver* aObserver );
+
+        /**
+        * Unregisters a listener.
+        * NOTE, do not call this from NotifyObserversL!
+        * @param aObserver call back interface for notifications.
+        */
+        void RemoveObserver( MVtEngAccessoryObserver* aObserver );
+
+        /**
+        * Returns current accessory mode.
+        * @param aAccessoryMode accessory mode in return
+        * @return Symbian error code
+        */
+        TInt AccessoryMode( TAccPolAccessoryMode& aAccessoryMode ) const;
+
+    private: // New functions.
+    
+        /**
+        * Removes all observers
+        */
+        void RemoveAllObservers();
+
+        /**
+        * Sets object active and renews subscription.
+        */
+        void StartListening();
+
+        /**
+        * Notifies all registered listeners.
+        */
+        void NotifyObserversL();
+
+    private: // Constructors.
+
+        /**
+        * C++ default constructor.
+        */
+        CVtEngAccessoryHandler();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL( );
+    
+    private:    // Data
+        // Current accessory mode.
+        TAccPolAccessoryMode iCurrentAccessoryMode;
+
+        // Owned array of accessory mode observers.
+        RPointerArray< MVtEngAccessoryObserver > iAccessoryObservers;
+
+        // Owned accessory server session.
+        RAccessoryServer iAccessoryServer;
+
+        // Owned accessory mode subsession.
+        RAccessoryMode iAccessoryMode;
+
+        // Accessory mode structure.
+        TAccPolAccessoryMode iMode;
+
+    };
+
+#endif      // CVTENGACCHANDLER_H
+// End of File