wvuing/IMPSConnectionUI/OperationStepSrc/CCnUiLoginUiCntrlStep.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSConnectionUI/OperationStepSrc/CCnUiLoginUiCntrlStep.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,285 @@
+/*
+* 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:  Login UI control.
+*
+*/
+
+#ifndef __CCNUILOGINUICNTRLSTEP_H
+#define __CCNUILOGINUICNTRLSTEP_H
+
+//  INCLUDES
+#include <E32Base.h>
+#include <f32file.h>
+#include <impspresenceconnectionuiconstsng.h>
+#include "MCnUiCntrlStep.h"
+#include "MCnUiWaitNoteObserver.h"
+#include "MCnUiOpProgressStateObserver.h"
+
+
+//FORWARD DECLARATION
+class MCnUiUiControlContext;
+class MCnUiConnWaitNote;
+class CCnUiConnOpener;
+class CPEngNWSessionSlotID2;
+class RResourceFile;
+class MIMPSSharedData;
+
+// CLASS DECLARATION
+/**
+ * Login SAP select UI control.
+ * Performs real connection open
+ * using the CCnUiConnOpener.
+ *
+ * This class behaviour can be extented by deriving.
+ *
+ * @since 2.1
+ */
+NONSHARABLE_CLASS( CCnUiLoginUiCntrlStep ) : public CBase,
+        public MCnUiCntrlStep,
+        public MCnUiWaitNoteObserver,
+        public MCnUiOpProgressStateObserver
+    {
+protected: //own enumerations
+    /**
+     * Return status for succesful login init.
+     */
+    enum TCnUiLoginInitStatus
+        {
+        ECnUiLoginInitContinue = 1   //must be positive to distinguish from KErrXXX error codes
+        };
+
+
+public:  // Two-phased constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     * @param aCCntxt UI control context.
+     */
+    static CCnUiLoginUiCntrlStep* NewLC( MCnUiUiControlContext& aCCntxt,
+                                         CIMPSSAPSettings& aLoginSap,
+                                         TIMPSLoginType aLoginType,
+                                         CPEngNWSessionSlotID2& aNWSessionSlotID,
+                                         TIMPSConnectionClient aClient );
+
+
+    /**
+     * Destructor.
+     */
+    virtual ~CCnUiLoginUiCntrlStep();
+
+
+protected: //protected to allow derivation
+
+    /**
+     * C++ constructor.
+     *
+     * By default the UI level login type is
+     * EIMPSManualLogin ==> Login is reported
+     * as manual login, not AA one.
+     */
+    CCnUiLoginUiCntrlStep( MCnUiUiControlContext& aCCntxt,
+                           CIMPSSAPSettings& aLoginSap,
+                           CPEngNWSessionSlotID2& aNWSessionSlotID,
+                           TIMPSConnectionClient aClient,
+                           TIMPSLoginType aLoginType = EIMPSManualLogin );
+
+
+    /**
+     * Symbian OS constructor.
+     */
+    void ConstructL();
+
+
+
+public: // New functions from MCnUiCntrlStep
+
+
+    /**
+     * Runs connection open / login step.
+     *
+     * @since 2.1
+     * @return Error code from login.
+     */
+    TInt RunStepL();
+
+
+    /**
+     * Handles complete.
+     *
+     * @since 2.1
+     * @return Always ECnUiStepContinueTeardown.
+     */
+    TCnUiHandleCompleteStatus HandleCompleteL();
+
+
+    /**
+     * Handles undo.
+     *
+     * @since 2.1
+     */
+    void UndoStepL();
+
+
+
+public: // New functions from MCnUiWaitNoteObserver
+
+    /**
+     * Notify method for wait note cancel events.
+     * @since 2.1
+     */
+    void HandleWaitNoteCancel();
+
+
+
+public: // New functions from MCnUiOpProgressStateObserver
+
+    /**
+     * Handles progress state enter.
+     * Setups proper wait note using the DoShowLoginStateSpecificWaitnoteL()
+     *
+     * @since 2.1
+     * @param aStateId The state id from CCnUiConnOpener.
+     * @param aClient The accessed client.
+     */
+    void HandleProgressStateEnter( TInt aStateId,
+                                   TIMPSConnectionClient aClient );
+
+
+
+
+protected: // New template functions for derived class use
+
+
+    /**
+     * Framework method.
+     * Virtual method to initializes the login operation.
+     *
+     * @since 2.1
+     *
+     * @param aClient Init has to initialize the aClient
+     * with the client id to log in.
+     *
+     * @return Error status from init. If init returns something
+     * else  than ECnUiLoginInitContinue login operaion RunStepL()
+     * is breaked with return value.
+     */
+    virtual TInt DoInitLoginStepL( TIMPSConnectionClient& aClient );
+
+
+    /**
+     * Framework method.
+     *
+     * Virtual method to show proper wait note for
+     * login state.
+     *
+     * @since 2.1
+     * @param aStateId State id from CCnUiConnOpener.
+     * @param aClient The accessed client.
+     */
+    virtual void DoShowLoginStateSpecificWaitnoteL( TInt aStateId,
+                                                    TIMPSConnectionClient aClient );
+
+
+private: // New functions
+
+
+    /**
+     * Handles the login data failure error.
+     *
+     * @since 2.1
+     * @param aTrieError The original trie error
+     * @return KErrNone if login is allowed to try again.
+     * Else error to return from login try.
+     */
+    TInt HandleLoginDataFailureL( TInt aTrieError );
+
+
+    /**
+     * Handles the conflicting SAP connection error.
+     *
+     * @since 2.1
+     * @param aTrieError The original trie error
+     * @param aTriedLoginClient Client which were tried to login.
+     * @return KErrNone if login is allowed to try again.
+     * Else error to return from login try.
+     */
+    TInt HandleConflictingSapConnectionL( TInt aTrieError,
+                                          TIMPSConnectionClient aTriedLoginClient );
+
+
+
+    /**
+     * Tries disconnect other currently active
+     * connections.
+     *
+     * @since 2.1
+     * @return ETrue if succesfully disconnected
+     * other connections. Else EFalse.
+     */
+    TBool TryDisconnectOtherConnectionsL();
+
+    /**
+     * Opens correct resource file.
+     * !!! Two items left to cleanup stack. !!!
+     * @param aResourceFile Contains opened file on return
+     * @since 3.1
+     */
+    void OpenResourceFileLC( RResourceFile& aResourceFile );
+
+    /**
+     * Resource reader for non-Cone situations
+     * @param aResourceId The integer-valued resource id to read
+     * @return The value of the integer
+     * @since 3.1
+     */
+    TInt ReadResourceIntValueL( TInt aResourceId );
+
+protected: // protected data
+
+    ///<Used UI control context, not owned
+    MCnUiUiControlContext&              iCCntxt;
+
+    ///<Used login SAP, not owned
+    CIMPSSAPSettings&                     iLoginSap;
+
+    ///<Wait note, owned. Initialized and destroyed during the operation.
+    MCnUiConnWaitNote*                  iWaitNote;
+
+
+
+private: // private data
+
+    ///<Connection opener, owned
+    CCnUiConnOpener*                    iConnOpener;
+
+    ///<Login type setting, owned
+    const TIMPSLoginType                iLoginType;
+
+    // Does not own Network session slot ID
+    CPEngNWSessionSlotID2&              iSessionSlotID;
+
+    // The client application ID
+    TIMPSConnectionClient               iClient;
+
+    // file handle used by resource file reading routine
+    RFs   iRFs;
+
+    // Owned.
+    MIMPSSharedData*	iSharedData;
+    };
+
+#endif      //  __CCNUILOGINUICNTRLSTEP_H
+
+//  End of File
+