diff -r 6ca72c0fe49a -r a941bc465d9f wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUIDialogImp.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUIDialogImp.h Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,698 @@ +/* +* 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: Server settings dialog implementation +* +*/ + + + +#ifndef CWVSETTINGSUIDIALOGIMP_H +#define CWVSETTINGSUIDIALOGIMP_H + + +// INCLUDES +#include "MWVSettingsObserverng.h" +#include "CWVSettingsUINGDialog.h" +#include "MIMPSSharedDataObserver.h" +#include "MIMPSSharedData.h" + +#include "impscommonuibuilddefinitions.h" + +#include +#include +#include + + +//DATA TYPES + + +// FORWARD DECLARATIONS +class CAknSettingItemArray; +class CAknSettingStyleListBox; +class CIMPSSAPSettingsStore; +class CWVSettingsUITlsHolder; +class CWVSettingsUIDialogTitlePaneHandler; +class CIMPSPresenceConnectionUi; +class CAknSettingItem; +class CWVSettingsUISettingItemEditor; +class CSelectionItemList; +class CSelectableItem; +class CIMPSSAPSettingsList; +class CIMPSSAPSettings; +class CAknIconArray; +class CWVSettingsUIServerListDialog; +// CLASS DECLARATION + +/** +* Server settings dialog +* Basically this dialog gives that two links to other dialogs, to current +* server selection and to server list +* +* @lib WVServiceSettingsUi.dll +* @since 2.1 +*/ +NONSHARABLE_CLASS( CWVSettingsUIDialogImp ) : public CWVSettingsUIDialog, + public MEikListBoxObserver, + public MIMPSSAPObserver, + public MIMPSSharedDataObserver + { + +public: // datatypes + + // listbox items' indexes + enum TListboxItemIndex + { + EWVSettingsCASettings = 0, + EWVSettingsServers, + EWVSettingsServerInUse, + EWVSettingsIMLoginType, +#ifdef RD_MULTIPLE_DRIVE + EWVSettingsSaveChatsTo, +#endif + EWVSettingsIMConnDays, + EWVSettingsIMConnHours + }; + + enum TConnHoursPopUpValue + { + EWVSettingsAllDay, + EWVSettingsBetweenHours + }; + +private: // datatypes + + enum TConnHoursSetting + { + EWVSettingsConnStart, + EWVSettingsConnEnd + }; + +public: // Constructors and destructor + /** + * Destructor. + */ + virtual ~CWVSettingsUIDialogImp(); + + /** + * Two-phased constructor. + */ + static CWVSettingsUIDialogImp* NewL( ); + +protected: + /** + * Runs the dialog. + * @since 2.1 + * @param aSAPSettingsStore Pointer to SAP settings store + * @param aObserver Pointer to the UI observer + * @param aResourceFile The path to a branded resource file wanted to be used + * @param aExitReason The exit reason of the dialog + * @param aSelfPtr pointer to callers dialog pointer. + * @param aWhatToRun Tells whether to run the whole dialog or just the new server definition dialog + */ + TWVSettingsDialogReturnValue RunDialogLD( CIMPSSAPSettingsStore& aSAPSettingsStore, + MWVSettingsObserver* aObserver, + const TDesC& aResourceFile, + const TDesC& aResourceVariationFile, + TInt& aExitReason, + MWVSettingsCASettings* aCAServerSettings, + CWVSettingsUIDialog** aSelfPtr, + TBool aForcedLaunch /*= EFalse */, + TWVSettingsDialogType aDialogType ); + + /** + * Changes the resource file used + * @since 2.1 + * @param aResourceFileName The path to the resource file wanted to be used + * @param aResourceVariationFile The path to the variation file which contains the settings. + */ + void ChangeResourceFileL( const TDesC& aResourceFileName, + const TDesC& aResourceVariationFile ); + + /** + * C++ default constructor. + */ + CWVSettingsUIDialogImp(); + +public: // New functions + + /** + * Tells the current Chat login type + * @since 2.1 + * @return Chat login type + */ + TInt GetChatLoginType() const; + + void ChangeToManualL(); + + void GetHelpContext( TCoeHelpContext& aContext ) const; +private: // New functions + + /** + * Updates "server in use"-item from listbox to current value + * @since 2.1 + */ + void UpdateServerInUseItemL(); + + /** + * Launches new server query + * @since 2.1 + * @param aExitReason indicate if required to exit from IM application + */ + void QueryNewServerL( TBool *aExitReason = NULL ); + + /** + * Launches server-list dialog + * @since 2.1 + * @return a value from the enumeration + */ + TWVSettingsDialogReturnValue ExecuteServerListDialogL(); + + /** + * Refreshs title + * @since 2.1 + */ + void RefreshTitleL(); + + /** + * Launches a correct dialog + * @since 2.1 + */ + void LaunchCorrectDialogL(); + + /** + * Launches a correct dialog + * @since 3.1 + */ + void LaunchCASettingsL(); + + /** + * Activates currently highlighted setting item + * @since 3.2 + */ + void ActivateCurrentItemL(); + + /** + * Launches the dialog for defining a new server + * @since 2.1 + * @param aSAPSettingsStore Pointer to SAP settings store + * @param aCaller Pointer to the dialog observer + * @param aTitlePaneHandler Pointer to the title pane handler + * @param aExitReason This will hold the exit reason after this dialog + * has been dismissed + */ + TInt LaunchDefineNewServerDialogL( CIMPSSAPSettingsStore& aSAPSettingsStore, + MWVSettingsObserver& aObserver, + CWVSettingsUIDialogTitlePaneHandler& aTitlePaneHandler, + TInt& aExitReason ) const; + + /** + * Sets IM login type in the listbox + * @param aLoadedValue loaded login type + * @since 2.1 + */ + void SetIMLoginTypeL( TInt aLoadedValue ); + + /** + * Creates a list of selected days for scheduling + * @param aSelectionItemList selection item list + * @since 2.5 + */ + void CreateSelectedDaysArrayL( CSelectionItemList& aSelectionItemList ); + + /** + * Creates a selectable item + * @param aResourceId resource id for the text in the selectable item + * @since 2.5 + * @return selectable item + */ + CSelectableItem* CreateSelectableItemLC( TInt aResourceId ); + + /** + * Sets connection days setting to CSelectionItemList array + * @param aLoadedValue loaded login type + * @param aSelectionItemList selection item list + * @since 2.5 + */ + void SetConnectionDaysL( TInt aLoadedValue, CSelectionItemList& aSelectionItemList ); + + /** + * Gets connection days setting from CSelectionItemList array + * @param aSelectionItemList selection item list + * @since 2.5 + * @return integer with the correct bits set + */ + TInt GetConnectionDaysL( CSelectionItemList& aSelectionItemList ); + + /** + * Updates the connection days setting item value text in listbox + * @param aSelectionItemList selection item list + * @param aItem item identifier + * @since 2.5 + */ + void UpdateConnectionDaysL( CSelectionItemList& aSelectionItemList ); + + /** + * Updates the connection hours text in the listbox + * @param aItem item identifier + * @param aAllDay all day or not + * @since 2.5 + */ + void UpdateConnectionHoursTextL( TBool aAllDay ); + + /** + * Queries new connection times from user + * @param aItem item identifier + * @since 2.5 + */ + void QueryConnectionHoursL(); + + /** + * Changes login type to manual + * @since 2.5 + */ + void ChangeLoginTypeToManualL(); + + /** + * Updates the texts in the listbox + * @since 2.6 + */ + void UpdateListboxL(); + + /** + * Copies a selected days array + * @param aSelectedDaysArray an array to be copied + * @since 2.6 + */ + CSelectionItemList* CopySelectedDaysArrayL( CSelectionItemList* aSelectedDaysArray ); + + /** + * Returns the hour part of the saved time as integer. + * Returns the given default if parsing fails. + * @param aTime time to get the hour from + * @param aDefault default hour as integer + * @since 2.6 + */ + TInt Hour( const TDesC& aTime, TInt aDefault ); + + /** + * Returns the minute part of the saved time as integer + * Returns the given default if parsing fails. + * @param aTime time to get the minute from + * @param aDefault default minute as integer + * @since 2.6 + */ + TInt Minute( const TDesC& aTime, TInt aDefault ); + + /** + * Return current server's name + * @since 2.1 + * Ownership is transferred to caller!!! + * @return Name, NOTE returns NULL if no default SAP + */ + HBufC* CurrentServerNameL(); + + /* + * Updates necessary parts when resource file is changed. + * @since 2.1 + */ + void RefreshDialogL(); + + /** + * Loads the settings + * @since 2.1 + */ + void LoadSettingsL(); + + /** + * Loads a settings value + * @since 2.1 + * @param aSettingsValueToLoad the setting value to load + * @param aNameKey the key name of the value + */ + void LoadSettingValueL( TInt& aSettingValueToLoad, const TIMPSSharedKeys aNameKey ); + + /** + * Loads a string settings value + * @since 2.5 + * @param aNameKey the key name of the value + * @return the loaded value + */ + HBufC* LoadStringSettingValueL( const TIMPSSharedKeys aNameKey, TConnHoursSetting aSetting ); + +#ifdef RD_MULTIPLE_DRIVE + + /** + * Loads a memory drive string settings value + * @since 2.5 + */ + void LoadMemoryDriveSettingValueL(); +#endif + + /** + * Loads connection hours settings values + * @since 2.5 + */ + void LoadConnectionHoursSettingValuesL(); + + /** + * Saves the settings + * @since 2.1 + */ + void SaveSettingsL(); + + /** + * Stores a settings value + * @since 2.1 + * @param aSettingValueToStore the setting value to be saved + * @param aNameKey the key name of the value + */ + void StoreSettingValueL( TInt aSettingValueToStore, const TIMPSSharedKeys aNameKey ); + + /** + * Stores a string settings value + * @since 2.5 + * @param aSettingValueToStore the setting value to be saved + * @param aNameKey the key name of the value + */ + void StoreStringSettingValueL( const TDesC& aSettingValueToStore, const TIMPSSharedKeys aNameKey ); + + + /** + * Updates the login types in the listbox + * @since 2.1 + */ + void UpdateLoginTypesL (); + + /** + * Gets server list and index which to highlight + * in selection list. + * + * @since 3.1 + * @param aIndexToHighlight On the return contains the + * index that should be high lighted by default in the + * selection list, or KErrNotFound if default index should + * be ignored. + * @return SAP settings list. Ownership of list returned to client. + */ + CIMPSSAPSettingsList* ServerListLC( TInt& aIndexToHighlight ); + + /** + * Loads the used login SAP based the SAP Settings list + * and index of selected server. + * + * @since 3.1 + * @param aList Server list. + * @param aIndexOfSelectedServer The index of selected server. + * @param aSap + */ + void LoadSapByServerListL( const CIMPSSAPSettingsList& aList, + TInt aIndexOfSelectedServer, + CIMPSSAPSettings& aSap ); + + /** + * + * @since 3.1 + */ + TBool ServerToUseQueryL( MDesCArray& aServers, + TInt aIndexToHighlight, + TInt& aSelectedIndex ); + + /** + * Loads the branded server icons to iIconArray + * @param aServers List of the server names + * @since 3.1 + */ + void LoadServerIconsL( MDesCArray& aServers ); + + /** + * Constructs complete path from parts and checks for correctness. + * @param aResult, the complete path. + * @param aModuleId, dll's (or app) id. For example "IM". + * @param aAlternative, id for alternative (for example operator "Oper1" ) files. + * @param aFileName, filename of the complete path + * @return ETrue if path was found from C or MMC card, otherwise false + * @since 3.1 + */ + TBool ConstructCompletePathAndCheck( TDes& aResult, + const TDesC& aModuleId, + const TDesC& aAlternative, + const TDesC& aFileName ); + + /** + * Returns MMC drive. + * @param aDrive, the result. + */ + void MMCDrive( TDes& aDrive ) const; + + /** + * Updates CBA. + * @since S60 v3.2 + */ + void UpdateCbaL(); + + /** + * Static TCallBack method which will call ActivateCurrentItemL when + * launched + * @see TCallBack + */ + static TInt LaunchDlgCallback( TAny* aDlg ); + + /** + * Used for launching dialogs asynchronously. + */ + void LaunchCorrectDialog(); + + /** + * + * set the iIsOpenedTargettDlg value. + * aFlag is ETrue while try to open target dialog, or is EFalse after target was closed. + */ + void SetTargetDlgFlag( TBool aFlag ); + + /** + * + * get the flag value. + */ + TBool GetTargetDlgFlag(); + + /** + * + * Check whether there are stored servers, otherwise show add new server query. + * @return ETrue there is at least one stored server. + * @return EFalse there is no stored server. + */ + TBool CheckAnyStoredServers(); +private: + /** + * From MEikListBoxObserver Handles listbox events. + * @param aListBox Listbox's pointed + * @param aEventType Eventtype of listbox + */ + void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); + + /** + * Handles notify from permanent keys' changes + * @param aUid uid of the dll + * @param aKey the shared data key + * @param aValue the value of the key + */ + void HandlePermanentKeyNotifyL( const TUid aUid, + const TIMPSSharedKeys aKey ); + + /** + * Handles notify from temporary keys' changes + * @param aUid uid of the dll + * @param aKey the shared data key + * @param aValue the value of the key + */ + void HandleTemporaryKeyNotifyL( const TUid aUid, + const TIMPSSharedKeys aKey ); + /** + * From MEikCommandObserver Command handler + * @since 1.2 + * @param aCommand Command that was initiated + */ + void ProcessCommandL( TInt aCommand ); + + /** + * From MEikMenuObserver, Gets called before menu is displayed + * @param aResourceId Id of a resource being built + * @param aMenuPane Handle to menupane that is about to be shown + */ + void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + + /** + * 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: // From MIMPSSAPObserver + + /** + * From MIMPSSAPObserver + * @see MIMPSSAPObserver for more information + */ + void HandleSAPEvent( TSAPEvent aEvent ); + +private: + + // This function gets the setting value from the Cenrep or variation file, given the resource ID + TInt IntResourceValueL( TInt aResourceId ); + +protected: // Functions from CEikDialog + + /** + * From CEikDialog, Gets called before form is displayed + */ + void PreLayoutDynInitL(); + + /** + * From CEikDialog + * Gets called before the dialog is exited + * @param aKeyCode the key code used to exit the dialog + */ + TBool OkToExitL( TInt aKeycode ); + +private: // Data + // Doesn't own: pointer to the sap settings store + CIMPSSAPSettingsStore* iSAPSettingsStore; + + // server in use + TPtr iServerInUsePtr; + + // Doesn't own: the user of this dialog + MWVSettingsObserver* iObserver; + + // Owns: Settings items + CAknSettingItemArray* iSettingItemArray; + + // Owns.: server in use + HBufC* iServerInUse; + + // Doesn't own: listbox + CAknSettingStyleListBox* iListbox; + + // Owns: the text on the titlepane + HBufC* iTitle; + + // Owns: tls holder + CWVSettingsUITlsHolder* iTlsHolder; + + // offset of the resource file + TInt iResourceFileOffset; + + //offset of the variation based resource file + TInt iResourceVariationFileOffset; + + // tells if the chat login type is edited + TBool iImLoginTypeEdited; + // chat login type + TInt iImLoginType; + + // Owns: title pane handler. changes the title pane text + CWVSettingsUIDialogTitlePaneHandler* iTitlePaneHandler; + + // Owns:: Pointer to a presence connection UI + CIMPSPresenceConnectionUi* iConnectionUI; + + // Owns: Setting item editor + CWVSettingsUISettingItemEditor* iSettingItemEditor; + + // IM Scheduling settings + // owns: Selection item list for scheduling support + CSelectionItemList* iSelectedDaysIM; + // Owns: connection days setting item value in listbox + HBufC* iConnDaysIM; + // Pointer to connection days setting item value in listbox + TPtr iConnDaysIMPtr; + // Owns: connection hours setting item value in listbox + HBufC* iConnHoursIM; + // Pointer to connection hours setting item value in listbox + TPtr iConnHoursIMPtr; + // The value of the connection hours pop-up setting item + TInt iConnHoursIMInt; + // Owns: connection start time setting item value + HBufC* iConnStartIM; + // pointer to connection start time setting item value + TPtr iConnStartIMPtr; + // Owns: connection end time setting item value + HBufC* iConnEndIM; + // pointer to connection end time setting item value + TPtr iConnEndIMPtr; + +#ifdef RD_MULTIPLE_DRIVE + // Owns.: memory drive selection + HBufC* iMemorySelection; + + // memory drive selection + TPtr iMemorySelectionPtr; +#endif // RD_MULTIPLE_DRIVE + + // tells if scheduling is supported + TBool iSchedulingSupported; + + TDay iStartDayOfWeek; + + // Own: shared keys interface for permanent keys + MIMPSSharedData *iSharedData; + + // Own: shared keys interface for temporary keys + MIMPSSharedData *iSettingsChangeNotifier; + + // as a result of parsing problems of time values when changing + // time/date separators we must have these here + // connection end hour and minute values for PEC + TInt iConnEndHourPEC; + TInt iConnEndMinutePEC; + // connection start hour and minute values for IM + TInt iConnStartHourIM; + TInt iConnStartMinuteIM; + // connection end hour and minute values for IM + TInt iConnEndHourIM; + TInt iConnEndMinuteIM; + + // Chat server settings + MWVSettingsCASettings* iCAServerSettings; + + // Icon array for server list query, owned + CAknIconArray* iIconArray; + + // Self pointer. This pointer can be used to inform the + // caller that dialog is destroyed. + CWVSettingsUIDialog** iSelfPtr; + + // Async dialog launcher + CAsyncCallBack* iDlgLauncher; + + // Is forced login made before activating automatic login mode + TBool iForcedLoginMade; + + // Is dialog re-launched after login procedure + TBool iForcedLaunch; + + // Not owned. Valid pointer only when + // server list dialog is active. + CWVSettingsUIServerListDialog* iServListDialog; + + // + // to avoid twice calling LaunchCorrectDialog() + TBool iIsOpenedTargettDlg; + }; + +#endif // CWVSETTINGSUIDIALOGIMP_H + +// End of File