wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUIDefineNewServerDialog.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUIDefineNewServerDialog.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,510 @@
+/*
+* Copyright (c) 2003 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:  Dialog for defining new server
+*
+*/
+
+
+#ifndef CWVSETTINGSUIDEFINENEWSERVERDIALOG_H
+#define CWVSETTINGSUIDEFINENEWSERVERDIALOG_H
+
+//  INCLUDES
+#include "CWVSettingsUINGDialog.h"
+#include <eiklbo.h>
+#include <akndialog.h>
+#include <aknsettingpage.h>
+
+// FORWARD DECLARATIONS
+class CAknSettingItemArray;
+class CAknSettingStyleListBox;
+class CIMPSSAPSettingsStore;
+class CIMPSSAPSettings;
+class CCommsDatabase;
+class CApUtils;
+class CApSettingsHandler;
+class MWVSettingsUICaller;
+class CWVSettingsUIDialogTitlePaneHandler;
+class CWVSettingsUIDialogImp;
+class CIMPSPresenceConnectionUi;
+class CPEngNWSessionSlotID2;
+// CLASS DECLARATION
+
+/**
+*  New server definition dialog
+*  Implements the dialog, that is used when user is creating new server
+*
+*  @lib WVServiceSettingsUi.dll
+*  @since 2.1
+*/
+
+NONSHARABLE_CLASS( CWVSettingsUIDefineNewServerDialog ) :
+        public CAknDialog,
+        public MEikListBoxObserver,
+        public MAknSettingPageObserver
+    {
+public: // Enumerations
+
+    enum TEditMode
+        {
+        ENewServer = 1,
+        EEditServer
+        };
+
+private: // Enumerations
+
+    enum TItemType
+        {
+        ETextItem = 1,
+        EPasswordItem
+        };
+
+    // TSettingsListLayout is used for indexing items to array, so first
+    // enumeration's value must be 0, and next must be 1 and so on...
+    enum TSettingsListLayout
+        {
+        EServerName = 0,
+        ESAP,
+        EURL,
+        EWVId,
+        EPassword,
+        ELastItemMarker // This has to be the last one!!!!
+        };
+
+    // TCompValues is used for telling which settings values
+    // are compulsory
+    enum TCompValues
+        {
+        EWVSettingsViewServerName = 1,
+        EWVSettingsViewIAPName = 2,
+        EWVSettingsViewURL = 4,
+        EWVSettingsViewWVUserId = 8,
+        EWVSettingsViewPassword = 16
+        };
+
+    // TValueOrder is an index for the settings items
+    // this is used when editing different values
+    enum TValueOrder
+        {
+        EWVSettingsViewServerNameIndex = 0,
+        EWVSettingsViewIAPNameIndex,
+        EWVSettingsViewURLIndex,
+        EWVSettingsViewWVUserIdIndex,
+        EWVSettingsViewPasswordIndex
+        };
+
+public:  // Constructors and destructor
+
+    /**
+    * C++ default constructor.
+    * @param aExitReason This will hold the exit reason after this dialog
+    * has been dismissed
+    * @param aSAPSettingsStore Pointer to SAP settings store
+    * @param aEditMode Edit mode
+    * @param aCaller Pointer to the dialog observer
+    * @param aTitlePaneHandler Pointer to the title pane handler
+    * @param aDialog Pointer to the service settings UI dialog
+    * @param aNewUid Uid of a created server
+    * @param aConnectionUi pointer to connection ui
+    * @param aServer Server, that is being edited. This is NULL in case of
+    * creating new server
+    */
+    CWVSettingsUIDefineNewServerDialog( TInt& aExitReason,
+                                        CIMPSSAPSettingsStore& aSAPSettingsStore,
+                                        TEditMode aEditMode,
+                                        MWVSettingsObserver& aObserver,
+                                        CWVSettingsUIDialogTitlePaneHandler& aTitlePaneHandler,
+                                        CWVSettingsUIDialogImp* aDialog,
+                                        TUint32& aNewUid,
+                                        CIMPSPresenceConnectionUi* aConnectionUi,
+                                        CIMPSSAPSettings* aServer = NULL );
+
+
+    /**
+    * Destructor.
+    */
+    virtual ~CWVSettingsUIDefineNewServerDialog();
+
+private: //New functions
+
+    /**
+    * Launches IAP selector
+    * @since 2.1
+    * @return Return flags of the dialog, to check if Exit was chosen
+    */
+    TInt EditSapSettingsL();
+
+    /**
+    * Stores all items to persistent storage
+    * @since 2.1
+    */
+    void StoreAllItemsL();
+
+    /**
+    * Adds setting item to setting-items array
+    * @since 2.1
+    * @param aBuffer Buffer that is used to store the text in item
+    * @param aId Resource identifier for this setting item
+    * @param aTitleResource Resource for title text
+    * @param aDlgResource Settings editor resource
+    * @param aCompulsory Is this compulsory item
+    * @param aItemType Setting item type
+    */
+    void AddItemL( TDes& aBuffer,
+                   TInt aId,
+                   TInt aTitleResource,
+                   TInt aDlgResource,
+                   TBool aCompulsory = EFalse,
+                   TBool aIconNeeded = EFalse,
+                   TItemType aItemType = ETextItem );
+
+    /**
+    * Loads given servers information to internal buffers
+    * @since 2.1
+    */
+    void LoadExistingItemL();
+
+    /**
+    * Checks if all the compulsory items are filled correctly
+    * @since 2.1
+    * @return Are compulsory items filled correctly
+    */
+    TBool CompulsoryItemsFilled();
+
+    /**
+    * Externalizes all items internal states
+    * @since 2.1
+    */
+    void SignalStoreLToAllL() const;
+
+    /**
+    * Creates a unique server name to internal buffer
+    * @since 2.1
+    * @return Did it succeed
+    */
+    TBool FormUniqueServerNameL();
+
+    /**
+    * Created a unique server name from given data
+    * @since 2.1
+    * @param aExistingNames an array of existing names
+    * @param aNameToForm a reference to the name to be formed
+    * @return Did it succeed
+    */
+    TBool FormUniqueNameL( const CDesCArray& aExistingNames, TDes& aNameToForm );
+
+    /**
+    * Transfers the focus to invalid field
+    * @since 2.1
+    */
+    void ChangeFocusToInvalidCompulsoryField() const;
+
+    /**
+    * Generates safe flag value from given seed (enum)
+    * @since 2.1
+    * @param aSeed Seed value
+    * @return Safe flag value
+    */
+    TInt GenerateFlagValue( TInt aSeed ) const;
+
+    /**
+    * Get server-list
+    * Ownership is transferred to caller!!!
+    * @since 2.1
+    * @return List of servers available
+    */
+    CDesCArrayFlat* ServerListL() const;
+
+    /**
+    * Creates unique server name from internal server-list and places it
+    * to internal buffer
+    * @since 2.1
+    */
+    void FormUniqueServerL();
+
+    /**
+    * Edits the server name settings item
+    * @since 2.1
+    * @param Index of the setting item
+    */
+		TInt EditServerNameL( TInt aIndex );
+
+    /**
+    * Edits the user id settings item
+    * @since 2.1
+    * @param Index of the setting item
+    */
+    void EditUserIdL ( TInt aIndex );
+
+    /**
+    * Edits the password settings item
+    * @since 2.1
+    * @param Index of the setting item
+    */
+    void EditPasswordL ( TInt aIndex );
+
+    /**
+    * Returns the compulsory setting items
+    * @since 2.1
+    * @return The compulsory setting items
+    */
+    TInt GetCompulsoryItems () const;
+
+    /**
+    * Called when editing user ID and the length of user ID is zero.
+    * Checks if login type is automatic and shows an error note if so
+    * @since 2.1
+    * @return ETrue if login type is automatic
+    */
+    TBool CheckAutoLoginValuesL();
+
+    /**
+    * Asks for confirmation about logout and performs it if accepted
+    * @since 2.1
+    * @return ETrue if logged out, EFalse if we stayed logged in
+    */
+    TBool ConfirmLogoutL();
+
+    /**
+    * Loads icon array
+    * @since 3.0
+    */
+    void LoadIconArrayL();
+
+    /**
+     * Help key support - GetHelpContext is called by the framework on
+     * event EAknCmdHelp
+     * --------------------------------------------------------------------------------
+     * CWVSettingsUIDefineNewServerDialog::GetHelpContext
+     * @param 	aContext	The context dependent on the current view is passed by the framework.
+     */
+    void GetHelpContext( TCoeHelpContext& aContext ) const;
+
+private: // From CAknDialog
+
+    /**
+    * From CAknDialog, Handles menu commands
+    * @param aCommandId Command event received
+    */
+    void ProcessCommandL( TInt aCommand );
+
+
+
+private: // From MEikListBoxObserver
+
+    /**
+    * From MEikListBoxObserver Callback for listbox events
+    * @since 1.2
+    * @param aListBox Originating listbox
+    * @param aEventType Event type
+    */
+    void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType );
+
+private: // From MAknSettingPageObserver
+
+    /**
+     * Used to observe editor state when domain selection
+     * query is variated on.
+     * @since S60 v3.2
+     * @see MAknSettingPageObserver
+     */
+    void HandleSettingPageEventL( CAknSettingPage* aSettingPage,
+                                  TAknSettingPageEvent aEventType );
+
+public: // From Uikon framework
+
+    /**
+    * From Uikon framework. Dynamically initialises a menu pane.
+    * @param aResourceId Resource ID identifying the menu pane to initialise
+    * @param aMenuPane The in-memory representation of the menu pane
+    */
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+private: // from CCoeControl
+    /**
+    * From CCoeControl. Handles the keyevents
+    * @param aKeyEvent The key event.
+    * @param aType The type of key event: EEventKey, EEventKeyUp or EEventKeyDown.
+    * @return Indicates whether or not the key event was used by this control
+    */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+
+private:
+    /**
+     * The function to fetch the setting value given the ID, which could be in CENREP or Variation file
+       */
+    TInt IntResourceValueL( TInt aResourceId );
+		/**
+		 * Static TCallBack method
+		 * to async exit dialog 
+		 * @see TCallBack
+		 */
+		static TInt LaunchDlgCallback( TAny* aDlg );
+		
+		/**
+		 * close dialog using callback function
+		 * to async exit dialog 
+		 * @see TCallBack
+		 */
+		void CloseDialogL();
+protected: // From CEikDialog
+
+    /**
+    * From CEikDialog @see CEikDialog for more information
+    */
+    void PreLayoutDynInitL();
+
+    /**
+    * From CEikDialog @see CEikDialog for more information
+    */
+    void PostLayoutDynInitL();
+
+    /**
+    * From CEikDialog @see CEikDialog for more information
+    */
+    TBool OkToExitL( TInt aButtonId );
+
+    /**
+    * From CEikDialog @see CEikDialog for more information
+    */
+    TInt MappedCommandId( TInt aButtonId );
+
+
+private:    // Data
+
+    // an exit reason for the dialog
+    TInt& iExitReason;
+
+    // Doesn't own.
+    CIMPSSAPSettingsStore* iSAPSettingsStore;
+
+    // edit mode for the dialog, new server or edit old
+    TEditMode iEditMode;
+
+    // owns: wvsapsettings for a server
+    CIMPSSAPSettings* iSAP;
+
+    // internet access point name pointer
+    TPtr iIAPNamePtr;
+    // server name pointer
+    TPtr iServerNamePtr;
+    // wvuserid pointer
+    TPtr iWVUserIdPtr;
+    // password pointer
+    TPtr iPasswordPtr;
+    // url pointer
+    TPtr iURLPtr;
+
+    // caller type of the dialog
+    // Doesn't own
+    MWVSettingsObserver* iObserver;
+
+    // access point settings handler
+    // Owns.
+    CApSettingsHandler* iAPSettingsHandler;
+    // comms database
+    // Owns.
+    CCommsDatabase* iCommsDb;
+    // access point utilities
+    // Owns.
+    CApUtils* iAPUtils;
+    // settings listbox
+    // Doesn't own
+    CAknSettingStyleListBox* iListbox;
+    // Owns: settings item array
+    CAknSettingItemArray* iSettingItemArray;
+    // title pane handler, changes the text
+    // Doesn't own
+    CWVSettingsUIDialogTitlePaneHandler* iTitlePaneHandler;
+
+    // ordinal of the setting items added
+    TInt iOrdinal;
+
+    // index of the array of servers
+    TInt iServerArrayIndex;
+
+    // internet access point name
+    // Owns.
+    HBufC* iIAPName;
+    // server name
+    // Owns.
+    HBufC* iServerName;
+    // wvuserid
+    // Owns.
+    HBufC* iWVUserId;
+    // password
+    // Owns.
+    HBufC* iPassword;
+    // url
+    // Owns.
+    HBufC* iURL;
+    // tells if the internet access point setting has a value or not
+    TBool iIAPHasValue;
+    // internet access point id
+    TUint32 iIAP;
+    // invalid data in these setting items
+    TInt iFailedFields;
+
+    // user id before editing
+    // owns.
+    HBufC* iOldUserId;
+
+    // the base dialog of service settings view
+    // Doesn't own
+    CWVSettingsUIDialogImp* iDialog;
+
+    // tells if we should store old user id or not when editing
+    TBool iStoreOldId;
+
+    // pointer to the old user id
+    TPtr iOldUserIdPtr;
+
+    // Owns: old password
+    HBufC* iOldPassword;
+
+    // tells if we should save the SAP or not
+    TBool iEdited;
+
+    // the uid of the new server
+    TUint32& iNewUid;
+
+    TBool iProtected;
+
+    // Pointer to a presence connection UI, owned if
+    // iConnectionUIOwned is ETrue
+    CIMPSPresenceConnectionUi* iConnectionUI;
+
+    // iConnectionUI owhership
+    TBool iConnectionUIOwned;
+
+    // Is this dialog already deleted
+    TBool iIsDeleted;
+
+    ///<Cached pointer to control environment, not owned
+    CCoeEnv* iCoeEnv;
+
+    // previous server name (which was active before loading brand for
+    // editable server), owned
+    HBufC* iOldServerName;
+
+    TBool iDomainSelectionQuery;
+        // Async dialog launcher
+        CAsyncCallBack* iDlgLauncher;
+        
+        TBool isDisplayedSubDialog;
+    };
+
+#endif      // CWVSETTINGSUIDEFINENEWSERVERDIALOG_H
+
+// End of File