pkiutilities/SecModUI/inc/SecModUIModel.h
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/SecModUI/inc/SecModUIModel.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,396 @@
+/*
+* Copyright (c) 2002-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:   Declaration of the CSecModUIModel class 
+*
+*/
+
+
+#ifndef CSECMODUIMODEL_H
+#define CSECMODUIMODEL_H
+
+//  INCLUDES
+#include "SecModUI.h"
+#include <e32base.h>
+#include <bamdesca.h>
+#include <ct/rmpointerarray.h>
+
+// CONSTANTS
+const TInt KPinGIndex = 0; // PIN-G should be always first AO in the AO list.
+const TInt KMaxSettItemSize = 200;
+
+const TInt KPinGSettIndex = 0;
+const TInt KPinNrSettIndex = 1;
+
+const TUid KUidSecMod = { 0x101F8668 };
+
+// Panic strings
+_LIT(KPanicNullPointer, "SecModUI: invalid pointer");
+_LIT(KPanicIndexOutOfRange, "SecModUI: array indexed out of range");
+
+// FORWARD DECLARATIONS
+class CUnifiedKeyStore;
+class MCTAuthenticationObject;
+class MCTAuthenticationObjectList;
+class CSecModUISyncWrapper;
+class CEikTextListBox;
+class MCTKeyStore;
+class MCTToken;
+class CEikonEnv;
+
+
+// DATA TYPES
+enum TSecModPanicCode
+    {
+    EPanicNullPointer,
+    EPanicIndexOutOfRange
+    };
+
+// FUNCTION PROTOTYPES
+GLREF_C void Panic( TInt aPanic );
+
+// CLASS DECLARATION
+
+/**
+*  class CSecModUIModel
+*  Model of the application
+*
+*  @lib SecModUI.lib
+*  @since Series 60 3.0
+*/
+class CSecModUIModel : public CBase, public MSecModUI
+    {
+    public:  // Constructors and destructLoadTokenLabelsLor
+        
+        /**
+        * Two-phased constructor.
+        */        
+        static CSecModUIModel* NewL();
+                
+        /**
+        * Destructor.
+        */
+        virtual ~CSecModUIModel();
+
+    public: // New functions
+        
+        /**
+        * Activates title to the title pane        
+        * @param aTitle Title to be activated
+        * @return void
+        */
+        void ActivateTitleL(const TDesC& aTitle) const;
+        
+        /**
+        * Activates current tokens label to the title pane                
+        * @return void
+        */
+        void ActivateTokenLabelToTitleL() const;
+    
+        /**
+        * Initializes unified keystore        
+        * @return Error value
+        */
+        TInt InitializeKeyStoreL();
+        
+        /**
+        * Load labels of the tokens to the listbox        
+        * @param aListBox Listbox
+        * @return void
+        */        
+        void LoadTokenLabelsL(CEikTextListBox& aListBox);
+        
+        /**
+        * Checks that does active token have also signing code(s)
+        * @param aItemArray contains localised stings 
+        * @return void
+        */
+        void CheckCodeViewStringsL(MDesCArray& aItemArray);
+        
+        /**
+        * Opens and activates token        
+        * @param aTokenIndex Index of the token to be opened.
+        * @return void
+        */
+        void OpenTokenL(TInt aTokenIndex);
+        
+        /**
+        * Opens authentication object view        
+        * @param aIndex 0 is access code view
+        *               1 is signing code view
+        * @return void
+        */
+        void OpenAuthObjViewL(TInt aIndex);
+        
+        /**
+        * Closes authentication object       
+        * @param aIndex Index of the AO to be closed.
+        * @return void
+        */
+        void CloseAuthObjL(TInt aIndex);
+        
+        /**
+        * Loads PIN-NR labels to the listbox        
+        * @param aListBox 
+        * @param aShowBlockedNote If ETrue, shows code blocked if code is blocked.
+        * @return void 
+        */
+        void LoadPinNRLabelsL(CEikTextListBox& aListBox, TBool aShowBlockedNote);
+        
+        /**
+        * Loads items of the access code view list         
+        * @param aListBox where items are appended.
+        * @return void
+        */
+        void LoadPinGItemsL(CEikTextListBox& aListBox);
+        
+        /**
+        * Writes AO status item to the descriptor        
+        * @param aIndex Index of the authentication object
+        * @param aItem Descriptor where status is written.
+        * @param aShowBlockedNote If ETrue, shows code blocked if code is blocked.
+        * @return void
+        */
+        void PINStatusItemL(
+            TInt aIndex, TDes& aItem, TBool aShowBlockedNote) const;
+        
+        /**
+        * Writes AO request status to the descriptor
+        * @param aIndex Index of the authentication object
+        * @param aItem Descriptor where status is written.
+        * @return void
+        */
+        void PINRequestItemL(TInt aIndex, TDes& aItem) const;
+        
+        /**
+        * Displays security module details dialog.        
+        * @param aTokenIndex Index of the token, which details are shown.
+        * @return void
+        */
+        void ViewSecModDetailsL(TInt aTokenIndex);
+        
+        /**
+        * Displays details dialog of the active security module .                        
+        * @return void
+        */
+        void ViewOpenedSecModDetailsL();
+        
+        /**
+        * Deletes keystore        
+        * @param aTokenIndex Index of the token to be deleted.
+        * @return ETrue if keystore was deleted.
+        */
+        TBool DeleteKeyStoreL(TInt aTokenIndex);
+        
+        /**
+        * Returns ETrue if token is deletable.
+        * @param aTokenIndex Index of the token to be deleted.
+        * @return ETrue / EFalse
+        */
+        TBool IsTokenDeletable(TInt aTokenIndex);
+        
+        /**
+        * Launches change or unblock operation depending
+        * of the status of the PIN-NR        
+        * @param aIndex Index of the AO
+        * @return ?description
+        */
+        void ChangeOrUnblockPinNrL(TInt aIndex);
+        
+        /**
+        * Launches change or unblock operation depending
+        * of the status of the PIN        
+        * @param aIndex Index of the AO
+        * @return ?description
+        */
+        void ChangeOrUnblockPinL(TInt aIndex);
+        
+        /**
+        * Changes PIN-NR
+        * @param aIndex Index of the AO
+        * @return void
+        */
+        void ChangePinNrL(TInt aIndex);
+        
+        /**
+        * Changes PIN
+        * @param aIndex Index of the AO
+        * @return void
+        */
+        void ChangePinL(TInt aIndex);
+        
+        /**
+        * Unblocks PIN-NR
+        * @param aIndex Index of the AO
+        * @return void
+        */
+        void UnblockPinNrL(TInt aIndex);
+        
+        /**
+        * Unblocks PIN
+        * @param aIndex Index of the AO
+        * @return void
+        */
+        void UnblockPinL(TInt aIndex);
+        
+        /**
+        * Returns ETrue if PIN-NR is changeable.        
+        * @param aIndex Index of the AO
+        * @return ETrue / EFalse
+        */
+        TBool PinNrChangeable(TInt aIndex) const;
+        
+        /**
+        * Returns ETrue if PIN is changeable.        
+        * @param aIndex Index of the AO
+        * @return ETrue / EFalse
+        */
+        TBool PinChangeable(TInt aIndex) const;
+        
+        /**
+        * Returns ETrue if PIN-NR is unblockable.        
+        * @param aIndex Index of the AO
+        * @return ETrue / EFalse
+        */
+        TBool PinNrUnblockable(TInt aIndex) const;
+        
+        /**
+        * Returns ETrue if PIN is unblockable.        
+        * @param aIndex Index of the AO
+        * @return ETrue / EFalse
+        */
+        TBool PinUnblockable(TInt aIndex) const;
+        
+        /**
+        * Returns ETrue if PIN request can be disabled / enabled.        
+        * @param aIndex Index of the AO
+        * @return ETrue / EFalse
+        */
+        TBool PinRequestChangeable(TInt aIndex) const;
+        
+        /**
+        * Returs ETrue if PIN is open.
+        * @param aIndex Index of the AO
+        * @return ?description
+        */
+        TBool PinOpen(TInt aIndex) const;
+        
+        /**
+        * Disables / enables PIN depending on the status of the PIN.        
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        TInt ChangeCodeRequestL(TInt aIndex);
+        
+        /**
+        * Shows confirmation query.        
+        * @param aResourceId Id of the resource
+        * @return Response of the user.
+        */
+        TInt ShowConfirmationQueryL(TInt aResourceId) const;
+       
+        /**
+        * Shows confirmation note dialog.        
+        * @param aResourceId Id of the resource
+        * @return void
+        */
+        void ShowConfirmationNoteL(TInt aResourceId) const;
+        
+        /**
+        * Shows information note dialog.        
+        * @param aResourceId Id of the resource
+        * @return void
+        */
+        void ShowInformationNoteL(TInt aResourceId, const TDesC& aString = KNullDesC) const;
+        
+        /**
+        * Shows error note if needed.        
+        * @param aError 
+        * @return void
+        */
+        void ShowErrorNoteL(TInt aError) const;
+        
+        CSecModUISyncWrapper& Wrapper();            
+        
+        /**
+         * Returns the number of security modules.
+         */
+        TInt SecurityModuleCount() const;
+        
+    private:
+
+        /**
+        * C++ default constructor.
+        */        
+        CSecModUIModel();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();        
+        
+        void ResetAndDestroyCTObjects();
+        
+        void ResetAndDestroyAOs();
+        
+        void AddResourceFileL();
+        
+        void InitAuthObjectsL();
+        
+        void ListAuthObjectsL();
+        
+        void CreateSettingItem(const TDesC& aTitle, 
+                               const TDesC& aValue,  
+                               TDes& aItem) const;
+        
+        void AppendItemL(TDes& aMessage,
+                         TInt aResItem, 
+                         const TDesC& aValue, 
+                         TInt aResNotDefined) const; 
+         
+        void AppendResourceL(TDes& aMessage, TInt aResource) const;
+        
+        void AppendResourceAndEnterL(TDes& aMessage, TInt aResource) const;
+                        
+        void AppendValueL(TDes& aMessage, 
+                          const TDesC& aValue, 
+                          TInt aResNotDefined) const;
+        
+        void AppendLocationL(TDes& aMessage, TUid aUid, TInt aItemRes=0) const;         
+        
+        void AppendPinNRsL( TDes& aMessage ) const;   
+
+    private:    // Data
+        // Resource file offsets		
+		TInt		iResourceFileOffset;
+		TInt        iResourceFileOffset2;
+		TInt        iResourceFileOffset3;
+		
+		CSecModUISyncWrapper* iWrapper; // owned             
+		
+		CEikonEnv* iEikEnv;
+		
+		/**
+        * Crypto Token objects
+        */
+        CUnifiedKeyStore* iUnifiedKeyStore; // owned
+        MCTKeyStore* iKeyStore; // not owned
+        MCTAuthenticationObjectList*  iAOList; // owned, items not owned
+        RMPointerArray<MCTAuthenticationObject> iAOArray; // items not owned		
+		                                         
+        RMPointerArray<MCTKeyStore> iAOKeyStores; // items not owned       		                                         
+    };
+
+#endif      // CSecModUIModel_H   
+            
+// End of File