diff -r 000000000000 -r 72b543305e3a email/imum/Utils/Inc/IMSSettingsWizard.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Utils/Inc/IMSSettingsWizard.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,400 @@ +/* +* 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: IMSSettingsWizard.h +* +*/ + + + +#ifndef IMUMMAILSETTINGSWIZARD_H +#define IMUMMAILSETTINGSWIZARD_H + +// INCLUDES +#include +#include +#include // TKeyResponse +#include // TKeyEvent +#include // CMsvSession +#include // CMtmUiDataRegistry +#include +#include +#include +#include "MuiuDynamicSettingsDialog.h" + +#include "IMSSettingsUi.h" +#include "IMSSettingsBaseUi.h" +#include "IMSWizardLauncher.h" + +// CONSTANTS +const TInt KIMSSettingsPopupTimerNoteTextLength = 256; +// MACROS +// DATA TYPES +// FUNCTION PROTOTYPES +// FORWARD DECLARATIONS +class CImumMboxManager; +class CImumMboxData; +class CImSmtpSettings; +class CImImap4Settings; +class CImPop3Settings; +class CAknMessageQueryDialog; +class CIMSSettingsWizardEditTextPage; +class CIMSSettingsWizardRadioButtonPage; +class CIMSSettingsItemApprover; +class CMsvCommDbUtilities; +class CEikRichTextEditor; +class CMtmStore; +class CIMSWizardLauncher; + +// CLASS DECLARATION + +/** +* ?one_line_short_description. +* ?other_description_lines +* +* @lib ?library +* @since S60 3.0 +*/ +class CIMSSettingsWizard : + public CIMSSettingsBaseUI + { + public: // Constructors and destructor + + /** + * Destructor + * @since S60 3.0 + */ + virtual ~CIMSSettingsWizard(); + + /** + * + * @since S60 3.0 + * @param aListBox, The listbox with skin support + */ + static CIMSSettingsWizard* NewL( + CIMSSettingsUi& aDialog, + CImumInternalApiImpl& aMailboxApi, + CEikFormattedCellListBox& aListBox, + CIMSWizardControl& iHelpContainer, + CAknTitlePane& aTitlePane, + CEikButtonGroupContainer& aSoftkeys, + CMuiuFlags& aFlags, + const TDesC& aEmailAddress ); + + /** + * + * @since S60 3.0 + * @param aListBox, The listbox with skin support + */ + static CIMSSettingsWizard* NewLC( + CIMSSettingsUi& aDialog, + CImumInternalApiImpl& aMailboxApi, + CEikFormattedCellListBox& aListBox, + CIMSWizardControl& iHelpContainer, + CAknTitlePane& aTitlePane, + CEikButtonGroupContainer& aSoftkeys, + CMuiuFlags& aFlags, + const TDesC& aEmailAddress ); + + public: // New functions + + /** + * + * @since S60 3.0 + */ + void StoreSettingsToAccountL( + CImumInSettingsData& aSettings ); + + /** + * + * @since S60 3.0 + */ + TBool SettingsStartedL( const TDesC& aEmailAddress ); + + /** + * + * @since S60 3.0 + */ + void PostponePopup(); + + /** + * Starts the settings wizard. + * + * @since S60 3.0 + */ + void WizRunStart(); + + /** + * Runs one step of the wizard procedure and checks + * the internal state. + * + * @return TBool ETrue if there are still steps to go + * through. + * @since S60 3.0 + */ + TBool WizRunStepL(); + + + public: // Functions from base classes + + /** + * + * @since S60 3.0 + * @return ETrue, if possible to exit + * @return EFalse, if not possible to exit + */ + TBool OkToExitL( const TInt aButtonId ); + + + private: // Constructors and destructor + + /** + * + * @since S60 3.0 + */ + CIMSSettingsWizard( + CIMSSettingsUi& aDialog, + CImumInternalApiImpl& aMailboxApi, + CEikFormattedCellListBox& aListBox, + CIMSWizardControl& aHelpContainer, + CAknTitlePane& aTitlePane, + CMuiuFlags& aFlags ); + + /** + * + * @since S60 3.0 + */ + void ConstructL( CEikButtonGroupContainer& aSoftkeys, + const TDesC& aEmailAddress ); + + private: // New virtual functions + private: // New functions + + // WIZARD STATES + void WizStateMachineL(); + void WizStateChangeStateL(); + void WizHandleStateInitializeL(); + void WizHandlePageForward(); + void WizHandlePageBackward(); + void WizHandleStateDeterminePage(); + void WizHandleStateEditL(); + void WizHandleStateFinishEditingL(); + void WizHandleStateExitL(); + + // WIZARD ITEM HANDLING + TBool ProcessValidatedItemL( + CMuiuSettingBase& aBaseItem ); + void SettingsItemProcessItemL( + CMuiuSettingBase& aBaseItem ); + void SettingsItemProcessProtocol( + CMuiuSettingBase& aBaseItem ); + void SettingsItemProcessEmailL( + CMuiuSettingBase& aBaseItem ); + void SettingsItemProcessIapL( + CMuiuSettingBase& aBaseItem ); + /** + * Creates server address string from verifed mail address + * @since S60 3.0 + */ + void SettingsItemDefineServers( + const TDesC& aEmailAddress ); + void SettingsItemDefineNormalWizardArray(); + + /** + * Creates mailbox name string from verified mail address + * @since S60 3.0 + */ + void SettingsItemDefineMailboxName( + const TDesC& aEmailAddress ); + + // CUSTOM SETTINGS + CAknSettingPage* AcquireCustomRadioButtonPageL( + TInt& aReturnSettingValue, + TMuiuDynSetUpdateMode& aReturnUpdateMode, + MDesCArray& aReturnRadioButtonArray, + CMuiuSettingBase& aParamBaseItem ); + CAknSettingPage* AcquireCustomTextEditorL( + TMuiuSettingsText& aReturnSettingText, + TMuiuDynSetUpdateMode& aReturnUpdateMode, + CMuiuSettingBase& aParamBaseItem ); + CAknSettingPage* AcquireCustomIapPageL( + TInt& aReturnSettingValue, + TMuiuDynSetUpdateMode& aReturnUpdateMode, + CDesCArrayFlat& aReturnRadioButtonArray, + CMuiuSettingBase& aParamBaseItem ); + CAknSettingPage* AcquireProtocolPageL( + TInt& aReturnSettingValue, + TMuiuDynSetUpdateMode& aReturnUpdateMode, + CDesCArrayFlat& aReturnRadioButtonArray, + CMuiuSettingBase& aParamBaseItem ); + + + /** + * + * @since S60 3.0 + */ + void OpenHelpPageL(); + void DefinePageNumberStringL(); + TBool CheckEmailSkip(); + + + // KEY PRESSES + + /** + * + * @since S60 3.0 + */ + void KeyPressNextL(); + void KeyPressBackL(); + + // MISC + + /** + * + * @since S60 3.0 + */ + TBool CheckCompleted(); + + /** + * + * @since S60 3.0 + */ + CAknInfoPopupNoteController* ShowMailSettingsPopupAfterL( + const TUid& aId, + TInt aAfterMs ); + + /** + * Appends the MTM to the protocol selection list if the MTM supports + * the wizard integration and if its technology type is email. + * + * @since S60 v3.2 + * @param aUid ID of the MTM to be checked + * @param aRadioButtons List of pairs containg MTM ID and the title to be shown + * protocol selection list + * @param aUiDataMtmRegistry MTM UI Data registry + */ + void CheckMtmWizardSupportL( + CBaseMtmUiData& aMtmUiData, + CDesCArrayFlat& aRadioButtons ); + + private: // Functions from base classes + + virtual TMuiuPageEventResult EventItemEditStartsL( + CMuiuSettingBase& aBaseItem ); + + /** + * + * @since S60 3.0 + */ + virtual void AcquireCustomSettingPageL( + CAknSettingPage*& aReturnPage, + TMuiuDynSetUpdateMode& aReturnUpdateMode, + TInt& aReturnSettingValue, + TMuiuSettingsText& aReturnSettingText, + CDesCArrayFlat& aReturnRadioButtonArray, + CMuiuSettingBase& aParamBaseItem ); + + // CIMSSettingsBaseUI + /** + * + * @since S60 3.0 + */ + TBool KeyPressSoftkey( const TInt aButton ); + + /** + * + * @since S60 3.0 + */ + TBool KeyPressOKButtonL( const TInt aButton ); + + TInt EventItemEditEndsL( + CMuiuSettingBase& aBaseItem ); + TMuiuPageEventResult EventItemEvaluateRadioButton( + const CMuiuSettingBase& aBaseItem, + TInt& aNewValue ); + TMuiuPageEventResult EventItemEvaluateText( + const CMuiuSettingBase& aBaseItem, + TDes& aNewText ); + + /** + * Calls external mtm wizard + * + * @since S60 v3.2 + * @param aMtmUid for searching rigth wizard + */ + void CallExternalMtmWizardL( const TUid& aMtmUid, TBool& aCompleted ); + + + private: // Datad + + enum TWizState + { + EWizStateStarted = 0, + EWizStateDeterminePage, + EWizStateEditPage, + EWizFinishEditing, + EWizStateExit, + EWizStateQuerying + }; + + enum TWizFlags + { + EWizFlagFirstFlag = EImumSettingLastFlag, + EWizFlagStateRunning = EWizFlagFirstFlag, + EWizFlagExiting, + EWizFlagCompleted, + EWizFlagNextKeyPressed, + EWizFlagBackKeyPressed, + EWizFlagOptionsKeyPressed, + EWizFlagItemApproved, + EWizFlagRadioButtonPage, + EWizFlagTextEditPage, + EWizFlagSkipEmail, + EWizFlagPluginDetected, + EWizFlagForcedCancel, + EWizFlagShouldExit, + EWizFlagShouldClose, + EWizFlagLastFlag + }; + + // The current item in progress + TUid iCurrentItem; + // + TWizState iWizState; + // + CIMSSettingsWizardEditTextPage* iPageEdit; + // + CIMSSettingsWizardRadioButtonPage* iPageRadioBtn; + // + TInt iCurPage; + // + HBufC* iPageText; + // + CIMSWizardControl& iHelpContainer; + // + CAknInfoPopupNoteController* iNoteDialog; + // + TMuiuSettingsText iTemporaryText; + //Owned: To launch wizard automatically + CIMSWizardLauncher* iWizardLauncher; + + // To keep track of the protocol + TUid iProtocol; + //Owned + CMtmStore* iMtmStore; + RArray iProtocolArray; + }; + +#endif // IMUMMAILSETTINGSWIZARD_H + +// End of File