diff -r 000000000000 -r 72b543305e3a email/imum/Utils/Inc/IMSSettingsDialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Utils/Inc/IMSSettingsDialog.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,806 @@ +/* +* Copyright (c) 2006 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: IMSSettingsDialog.h +* +*/ + + + +#ifndef IMUMMAILSETTINGSDIALOG_H +#define IMUMMAILSETTINGSDIALOG_H + +// INCLUDES +#include +#include "MuiuDynamicSettingsDialog.h" +#include // CMsvSession +#include // CImImap4Settings +#include "MuiuDynamicSettingItemBase.h" // CMuiuSettingBase +#include "MuiuDynamicSettingItemEditValue.h" // CMuiuSettingEditValue +#include "MuiuDynamicSettingItemEditText.h" // CMuiuSettingEditText +#include "MuiuDynamicSettingItemLink.h" // CMuiuSettingLink +#include "MuiuDynamicSettingItemExtLink.h" // CMuiuSettingExtLink + +#include "IMSSettingsItemAccessPoint.h" +#include "IMASPageIds.hrh" // TIMASettigsId +#include "IMSSettingsUi.h" +#include "IMSSettingsBaseUi.h" +#include "IMSSettingsItemApprover.h" +#include "EmailUtils.H" + +// CONSTANTS +enum TDialogFlags + { + // Flags to keep track, which of the resources have initialized + EDialogMainMenuInitialized = EImumSettingLastFlag, + EDialogIncomingInitialized, + EDialogOutgoingInitialized, + EDialogUserPrefInitialized, + EDialogRetLimitInitialized, + EDialogDownloadInitialized, + EDialogAlOnlineInitialized, + // Flags to keep track, which of the resources have changed + EDialogIncomingChanged, + EDialogOutgoingChanged, + EDialogUserPrefChanged, + EDialogRetLimitChanged, + EDialogDownloadChanged, + EDialogAlOnlineChanged, + EDialogMainMenu, + EDialogAlwaysOnlineOn, + EDialogOmaEmnOn, + EDialogCsdAccessPoint, + EDialogQuitNotAllowed, + EDialogIncomingIapNotOk, + EDialogOutgoingIapNotOk, + EDialogLastFlag + }; + +const TInt KIMASDialogAOArrayIndex = 3; + +// MACROS +// DATA TYPES +// FUNCTION PROTOTYPES +// FORWARD DECLARATIONS +class CFlags; +class CIMSSettingsItemApprover; +class CMsvCommDbUtilities; + +// CLASS DECLARATION + +/** +* ?one_line_short_description. +* ?other_description_lines +* +* @lib ?library +* @since S60 3.0 +*/ +class CIMSSettingsDialog : + public CIMSSettingsBaseUI + { + public: // Constructors and destructor + + /** + * Destructor + * @since S60 3.0 + */ + virtual ~CIMSSettingsDialog(); + + /** + * + * @since S60 3.0 + * @param aListBox, The listbox to be used to show the array + */ + static CIMSSettingsDialog* NewL( + CIMSSettingsUi& aDialog, + CImumInternalApiImpl& aMailboxApi, + CEikFormattedCellListBox& aListBox, + CAknTitlePane& aTitlePane, + CEikButtonGroupContainer& aButtons, + CMuiuFlags& aFlags, + CImumInSettingsData& aMailboxSettings ); + + /** + * + * @since S60 3.0 + * @param aListBox, The listbox to be used to show the array + */ + static CIMSSettingsDialog* NewLC( + CIMSSettingsUi& aDialog, + CImumInternalApiImpl& aMailboxApi, + CEikFormattedCellListBox& aListBox, + CAknTitlePane& aTitlePane, + CEikButtonGroupContainer& aButtons, + CMuiuFlags& aFlags, + CImumInSettingsData& aMailboxSettings ); + + public: // New functions + + /** + * + * @since S60 3.0 + */ + void StoreSettingsToAccountL( + CImumInSettingsData& aSettings ); + + public: // Functions from base classes + + /** + * + * @since S60 + * @return ETrue, if possible to exit + * @return EFalse, if not possible to exit + */ + TBool OkToExitL( const TInt aButtonId ); + + /** + * Seeks the item from the array and initializes it. + * Ownership is not transferred. + * @since S60 3.0 + */ + CMuiuSettingBase* GetUninitializedItem( + const TUid& aId ); + + /** + * + * @since S60 3.0 + */ + void GetHelpContext( TCoeHelpContext& aContext ) const; + + protected: // New virtual functions + protected: // New functions + protected: // Functions from base classes + + private: // Constructors and destructor + + /** + * + * @since S60 3.0 + */ + CIMSSettingsDialog( + CIMSSettingsUi& aDialog, + CImumInternalApiImpl& aMailboxApi, + CEikFormattedCellListBox& aListBox, + CAknTitlePane& aTitlePane, + CMuiuFlags& aFlags ); + + /** + * + * @since S60 3.0 + */ + void ConstructL( + CEikButtonGroupContainer& aSoftkeys, + CImumInSettingsData& aMailboxSettings ); + + private: // New virtual functions + private: // New functions + + // ARRAY INITIALIZATION + + /** + * + * @since S60 3.0 + */ + void InitializeArrayL( const TInt aResource ); + + /** + * + * @since S60 3.0 + */ + void InitializeNewResourceL(); + void InitializeArrayMainMenu(); + void InitializeArrayIncomingL(); + void InitializeArrayIncomingImap4L(); + void InitializeArrayIncomingPop3L(); + void InitializeArrayOutgoingL(); + void InitializeArrayUserPrefL(); + void InitializeArrayRetLimitL(); + void InitializeArrayDownloadL(); + void InitializeArrayAlwaysOnlineL(); + + /** + * + * @since S60 3.0 + */ + void InitializeRetrieveLimitL( + const TInt aLimit, + const TInt aId ); + + /** + * + * @since S60 3.0 + */ + TInt InitializeIap( const TUid& aIapItemId ); + + /** + * + * @since S60 3.0 + */ + void InitializeAlwaysOnlineState(); + + + /** + * + * @since S60 3.0 + */ + void InitializeUsername( + const TUid& aItemId, + const TPtrC8& aUsername ); + + /** + * + * @since S60 3.0 + */ + void InitializePassword( + const TUid& aItemId, + const TPtrC8& aPassword, + const TInt aFlag ); + + /** + * + * @since S60 3.0 + */ + TInt InitializeSignature(); + + /** + * + * @since S60 3.0 + */ + void InitializeSignatureL(); + + /** + * + * @since S60 3.0 + */ + void InitializeSecuritySettings( + const TUid& aSecurityItemId ); + + /** + * + * @since S60 3.0 + */ + TIMASMailSecurity InitializeSecurity( const TUid& aSecurityItemId ); + + /** + * + * @since S60 3.0 + */ + TInt InitializeRetrievedParts(); + void InitializeRetrievedPartsL(); + + /** + * + * @since S60 3.0 + */ + TInt InitializePort( + const TIMASMailSecurity aSecurity, + const TBool aIncoming ); + + /** + * + * @since S60 3.0 + */ + void InitializePortL( + const TIMASMailSecurity aSecurity, + const TBool aIncoming ); + + /** + * + * @since S60 3.0 + */ + TInt InitializeAoDays(); + + /** + * + * @since S60 3.0 + */ + void InitializeAoIntervalButtons( + TInt& aInterval ); + + /** + * + * @since S60 3.0 + */ + void InitializeAoIntervalEditor( + TInt& aInterval, + HBufC*& aText ); + + /** + * + * @since S60 3.0 + */ + void InitializeAoInterval(); + + /** + * + * @since S60 3.0 + */ + TInt InitializeFolderPath(); + + /** + * + * @since S60 3.0 + */ + TInt InitializeAoHoursL(); + + void InitializeNext( + const TUid& aItemId, + const TMuiuSettingsText& aText ); + void InitializeNext( + const TUid& aItemId, + const TPtrC8& aText ); + void InitializeNext( + const TUid& aItemId, + const TInt aValue ); + void InitializeNext( + const TUid& aItemId, + const TInt aValue, + const TMuiuSettingsText& aText ); + + /** + * + * @since S60 3.0 + */ + void InitializeResetArrays(); + + void InitializeItem( + CMuiuDynFinderItemArray& aArray, + const TInt aIndex, + const TInt aValue, + const TMuiuSettingsText* aText ); + void InitializeItem( + CMuiuSettingBase& aBaseItem, + const TInt aValue, + const TMuiuSettingsText* aText ); + + // SETTING STORING + + /** + * + * @since S60 3.0 + */ + void StoreSettingsL(); + void StoreSettingsIncomingL(); + void StoreSettingsIncomingImap4L(); + void StoreSettingsIncomingPop3L(); + void StoreSettingsOutgoingL(); + void StoreSettingsUserPrefL(); + void StoreSettingsRetLimitL(); + void StoreSettingsDownloadL(); + void StoreSettingsAlwaysOnlineL(); + void StoreSettingsIapL( const TBool aIsIncoming ); + void StoreSettingsSecurityL( const TBool aIsIncoming ); + void StoreSettingsRetrievedPartsImap4L( + const TImap4GetMailOptions aOptions, + const TImImap4PartialMailOptions aPartial = ENoSizeLimits ); + /** + * + * @since S60 3.0 + */ + void StoreRetrievedValuesImap4L( const TInt32 aSize = KMaxTInt ); + + /** + * + * @since S60 3.0 + */ + void StoreRetrievedPartsL(); + + /** + * + * @since S60 3.0 + */ + void StoreSettingsSignature(); + + /** + * + * @since S60 3.0 + */ + const TBuf8 StoreUsername( + const TDesC& aUsername ); + + /** + * + * @since S60 3.0 + */ + const TBuf8 StorePassword( + const TDesC& aPassword, + const TInt aFlag ); + + + /** + * + * @since S60 3.0 + */ + void StoreSignatureL(); + + /** + * + * @since S60 3.0 + */ + void StorePortL( const TBool aIncoming ); + + /** + * + * @since S60 3.0 + */ + void StoreAoHoursL(); + + /** + * + * @since S60 3.0 + */ + void StoreAoInterval(); + + /** + * + * @since S60 3.0 + */ + void StoreFolderPathL(); + + const TMuiuSettingsText* StoreGetNextText( + const TUid& aItemId ); + TInt StoreGetNextValue( + const TUid& aItemId ); + TBool StoreGetNextBoolean( + const TUid& aItemId ); + + /** + * + * @since S60 3.2 + */ + void StoreGetLoginInformation( TDes8& aUserName, + TDes8& aPassword ); + void StoreSetLoginInformation( const TDesC8& aUserName, + const TDesC8& aPassword ); + + /** + * + * @since S60 3.0 + */ + void HandleSubMenuOpenL( + CMuiuSettingBase& aBaseItem ); + + // ITEM CHECKS + + /** + * + * @since S60 3.0 + */ + void EventHandleApproverEvent( + const TIMSApproverEvent aEvent ); + + // MISC FUNCTIONS + + /** + * + * @since S60 3.0 + */ + CMuiuSettingBase* NextItemSearch( + const TUid& aExpectedId ); + + /** + * + * @since S60 3.0 + */ + CMuiuSettingBase* NextItemDoSearch( + const TInt aLastItem, + const TUid& aExpectedId ); + + /** + * + * @since S60 3.0 + */ + void SetEmailSettingsState(); + + /** + * + * @since S60 3.0 + */ + void SubscribeFoldersL(); + + /** + * + * @since S60 3.0 + */ + void CheckSubscribedFolderStateL(); + + /** + * + * @since S60 3.0 + */ + void LaunchIapPageL( + CMuiuSettingBase& aBaseItem ); + + /** + * + * @since S60 3.0 + */ + void SetStoreFlags( + const TBool aState, + const TInt aFlag ); + + /** + * + * @since S60 3.0 + */ + TInt GetStorerFlag( + const CMuiuSettingBase& aBaseItem ); + + /** + * + * @since S60 3.0 + */ + void SetFlags( + const TInt aError, + const TInt aFlag ); + + /** + * + * @since S60 3.0 + */ + void SetInitializeFlags( const TInt aError ); + + /** + * ?member_description + * @since S60 3.0 + * @param aBaseItem Item containing the information + */ + void UpdateItemDefaultSettingTextL( + CMuiuSettingsLinkExtended& aLinkItem ) const; + + /** + * ?member_description + * @since S60 3.0 + * @param aBaseItem Item containing the information + */ + void UpdateItemCustomSettingTextL( + CMuiuSettingsLinkExtended& aLinkItem, + CMuiuSettingsEditValue& aItemFrom, + CMuiuSettingsEditValue& aItemTo ) const; + + /** + * Checks whether incoming/outgoing port is user defined or not and + * sets the port number according to it and security setting. If user + * defined then does not edit it. + * @since S60 3.0 + * @param aBaseItemSecurity Item containing the information + * @param aIncoming Incoming or outgoing + */ + void CheckPort( + CMuiuSettingBase& aBaseItemSecurity, + const TBool aIncoming ); + + /** + * Checks port, updates item text and sets setting dialog resource + * back to normal. + * @since S60 3.1 + * @param aBaseItem Item containing the information + */ + void ClosePortDialog( + CMuiuSettingBase& aBaseItem ); + + /** + * Checks and sets EDialogCsdAccessPoint flag according to IAP + * @since S60 3.0 + */ + void UpdateCSDFlagL(); + + /** + * Updates AO intervals, based on EDialogCsdAccessPoint flag + * @since S60 3.0 + */ + void UpdateAOIntervalsL(); + + /** + * Gets AO interval in minutes, based on selected radio button. + * @since S60 3.0 + */ + TInt GetAoIntervalTimeInMinutes(); + + /** + * + * @since S60 3.0 + */ + void HideItemsPermanently(); + + /** + * + * @since S60 3.0 + */ + void UpdateItemText( + const TUid& aItemId ); + + /** + * + * @since S60 3.0 + */ + void UpdateFetchLimitSetting(); + + /** + * + * @since S60 3.2 + */ + void GetLoginInformationL( + TDes8& aUserName, + TDes8& aPassword, + TBool& aPasswordTemporary ); + + private: // Functions from base classes + + virtual TInt EventSubArrayChangeL( + CMuiuSettingBase& aBaseItem ); + + virtual TMuiuPageEventResult EventItemEditStartsL( + CMuiuSettingBase& aBaseItem ); + + virtual TInt EventItemEditEndsL( + CMuiuSettingBase& aBaseItem ); + + virtual TMuiuPageEventResult EventItemEvaluateText( + const CMuiuSettingBase& aBaseItem, + TDes& aNewText ); + + virtual TMuiuPageEventResult EventItemEvaluateRadioButton( + const CMuiuSettingBase& aBaseItem, + TInt& aNewValue ); + + /** + * + * @since S60 3.0 + */ + void FindMultilineEditorL( + const TUid& aId, + CMuiuSettingsEditValue*& aTopEditor, + CMuiuSettingsEditValue*& aBottomEditor ); + + /** + * + * @since S60 3.0 + */ + TMuiuPageEventResult SettingLaunchMultilineEditorL( + CMuiuSettingBase& aBaseItem, + TMuiuDynSetUpdateMode& aUpdateMode ); + + /** + * + * @since S60 3.0 + */ + void EventUpdateAlwaysOnline( + const TInt aNewState ); + + /** + * + * @since S60 3.0 + */ + void EventUpdateMailNotifications( + const TInt aNewState ); + + /** + * + * @since S60 3.0 + */ + void EventAOForceTurnOff(); + + /** + * + * @since S60 3.0 + */ + void EventEMNForceTurnOff(); + + /** + * + * @since S60 3.0 + */ + void EventUpdateAoDays( CMuiuSettingBase& aBaseItem ); + + /** + * + * @since S60 3.0 + */ + void IncludePartialFetchString( + CMuiuSettingBase& aRetrievedParts ); + + /** + * @since S60 3.0 + */ + virtual void AcquireCustomSettingPageL( + CAknSettingPage*& aReturnPage, + TMuiuDynSetUpdateMode& aReturnUpdateMode, + TInt& aReturnSettingValue, + TMuiuSettingsText& aReturnSettingText, + CDesCArrayFlat& aReturnRadioButtonArray, + CMuiuSettingBase& aParamBaseItem ); + + /** + * + * @since S60 3.0 + */ + CAknSettingPage* AcquireCustomEncodingPageL( + TMuiuDynSetUpdateMode& aReturnUpdateMode, + TInt& aReturnSettingValue, + CDesCArrayFlat& aReturnRadioButtonArray, + CMuiuSettingBase& aParamBaseItem ); + + /** + * + * @since S60 3.0 + */ + void AcquireCustomEncodingButtonArrayL( + CDesCArrayFlat& aButtons ); + + // CIMSSettingsBaseUI + + /** + * + * @since S60 3.0 + */ + TBool KeyPressSoftkey( const TInt aButton ); + + /** + * + * @since S60 3.0 + */ + TBool KeyPressOKButtonL( const TInt aButton ); + + /** + * Returns the id of the editable mailbox + * + * @since S60 v3.2 + * @return Mailbox Id + */ + TMsvId CurrentMailboxId(); + + // From CMuiuDynamicSettingsDialog + virtual void HandleListBoxEventL( + CEikListBox* aListBox, + TListBoxEvent aEventType ); + + /** + * Method is used to execute flags with a delay. SubscribeFoldersL + * method needs to use this when Exit is issued. + * + * @return Mailbox Id + */ + static TInt DelayedExecFlags( TAny* aPtr ); + + public: // Data + protected: // Data + private: // Data + + // Temporary array for initializing phase + CMuiuDynFinderItemArray* iInitArray; + // Owned: Pointer to symbian data object + CImumMboxData* iAccountSettings; + // + TDialogFlags iInitSetFlag; + // + TInt iInitCurrentIndex; + // + TInt iInitResource; + // + CMuiuDynInitItemIdArray* iInitTreeArray; + // + CMuiuDynInitItemIdArray* iInitIdArray; + // + CMuiuDynInitItemValueArray* iInitValueArray; + // + CMuiuDynInitItemTextArray* iInitTextArray; + // + CMuiuDynInitInfoArray* iInitInfoArray; + // + CIdle* iIdle; + }; + +#endif // IMUMMAILSETTINGSDIALOG_H + +// End of File