diff -r 000000000000 -r 094583676ce7 wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUIDefineNewServerDialog.h --- /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 +#include +#include + +// 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; + + ///