wim/WimPlugin/inc/WimAuthenticationObjectList.h
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/WimPlugin/inc/WimAuthenticationObjectList.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,204 @@
+/*
+* Copyright (c) 2002 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:  Authentication objects can be listed through this interface
+*
+*/
+
+
+#ifndef CWIMAUTHENTICATIONOBJECTLIST_H
+#define CWIMAUTHENTICATIONOBJECTLIST_H
+
+//  INCLUDES
+
+#include <mctauthobject.h>
+
+// FORWARD DECLARATIONS
+
+class CWimToken;
+class CWimPin;
+class CWimAuthenticationObject;
+
+// CLASS DECLARATION
+
+/**
+*  Represents an interface to authentication objects
+*
+*
+*  @lib   WimPlugin
+*  @since Series 60 2.1
+*/
+
+class CWimAuthenticationObjectList : public CActive, 
+                                     public MCTAuthenticationObjectList
+    {
+    public:
+
+        /**
+        * Default constructor
+        * @param  aToken  A reference to current token
+        * @return A pointer to this class
+        */
+        static CWimAuthenticationObjectList* NewL( CWimToken& aToken );
+
+        /**
+        * Destructor
+        */
+        virtual ~CWimAuthenticationObjectList();
+
+    public: // From base class MCTTokenInterface
+        
+        /**
+        * Returns a reference to current token.
+        * @return A reference to current token.
+        */
+        MCTToken& Token();
+
+    public: // From base class MCTAuthenticationObjectList
+
+        /**
+        * Lists authentication objects.
+        * The caller of this function owns all parameters.
+        * Altought asynchronous look and behaviour this call is 
+        * synchronous.
+        * @param  aAuthObjects (OUT) The returned authentication objects 
+        *         will be appended to this array.
+        * @param  aStatus (IN/OUT) This will be completed with the final 
+        *         status code.
+        *         KErrNone, if no errors detected. Note: thought none 
+        *         authentication objects are found, it is also KErrNone
+        *         KErrHardwareNotAvailable, if Wim card suddenly removed
+        *         Any other system wide error code (e.g. KErrNoMemory)
+        * @return void
+        */
+        void List( RMPointerArray<MCTAuthenticationObject>& aAuthObjects,
+                   TRequestStatus& aStatus );
+
+        /**
+        * Cancels an ongoing List operation. Because List is synchronous, 
+        * there is nothing to do here.
+        * @return void
+        */
+        void CancelList();
+
+    protected:  // From base class MCTTokenInterface
+        
+        virtual void DoRelease();
+
+    private: // Constructors
+
+        /**
+        * Default constructor
+        * @param  aToken  (IN) A reference to current token
+        */
+        CWimAuthenticationObjectList( CWimToken& aToken );
+
+        // Second phase constructor
+        void ConstructL();
+    
+    private: //from CActive 
+       
+       /**
+        * Different phases are handled here.
+        * @return void
+        */
+        void RunL();
+        
+        /**
+        * Cancellation function
+        * @return void
+        */
+        void DoCancel();
+
+        /**
+        * The active scheduler calls this function if this active 
+        * object's RunL() function leaves. 
+        * @param aError -Error code which caused this event
+        * @return TInt  -Error code to active scheduler, is always KErrNone.
+        */ 
+        TInt RunError( TInt aError );    
+
+    private:
+    
+        /**
+        * Leavable authentication objects list function.
+        * @return void
+        */
+        void CreateListL( TRequestStatus& aStatus );
+
+        /**
+        * Leavable authentication objects creation function.
+        * @param  aToken (IN) Current token
+        * @param  aPinModule (IN) Pin manager module
+        * @param  aLabel (IN) A label for authentication object.
+        * @param  aType (IN) Type of this authenticaion object.
+        * @param  aHandle (IN) A handle of this authentication object.
+        * @param  aStatus (IN) The status of this authentication object.
+        * @return Pointer to CWimAuthenticationObject
+        */
+        CWimAuthenticationObject* MakeAuthObjectL( CWimToken& aToken,
+                                                   CWimPin& aPinModule,
+                                                   const TDesC& aLabel,
+                                                   TUid aType,
+                                                   TUint32 aHandle,
+                                                   TUint32 aStatus );
+        /**
+        * Leavable authentication objects list function.
+        * The caller of this function owns all parameters.
+        * @param  aAuthObjects (OUT) The returned authentication objects 
+        *         will be appended to this array.
+        * @return void
+        */
+        void DoListL( RMPointerArray<MCTAuthenticationObject>& aAuthObjects );
+
+        /**
+        * Returns true or false indicating if token is removed or not
+        * @return Boolean true or false
+        */
+        TBool TokenRemoved();
+        
+    
+    private:
+    
+    enum TAuthObjPhase
+            {
+            ECreateList,
+            ECreateListDone,
+            EDoList
+            };   
+            
+
+    private: // Data
+
+        // A reference to current token.
+        CWimToken& iToken;
+
+        // Array of pointers to PIN modules. Not owned.
+        const CArrayPtrFlat<CWimPin>* iPinNRs; 
+        
+        // An internal array of listed authentication objects.
+        RPointerArray<CWimAuthenticationObject> iAuthObjects;
+        
+        //Used to handle Authobj interface making
+        TAuthObjPhase                   iPhase;
+        //Client status is stored here 
+        TRequestStatus*                 iClientStatus;
+        
+        //Not Owned
+        RMPointerArray<MCTAuthenticationObject>* iClientAuthObjects;
+    };
+
+
+#endif      // CWIMAUTHENTICATIONOBJECTLIST_H   
+            
+// End of File