--- /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 <e32base.h>
+#include "MuiuDynamicSettingsDialog.h"
+#include <msvapi.h> // CMsvSession
+#include <imapset.h> // 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<KMuiuDynMaxSettingsTextLength> StoreUsername(
+ const TDesC& aUsername );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ const TBuf8<KMuiuDynMaxSettingsTextLength> 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