email/imum/Utils/Inc/IMSSettingsWizard.h
changeset 0 72b543305e3a
equal deleted inserted replaced
-1:000000000000 0:72b543305e3a
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  IMSSettingsWizard.h
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #ifndef IMUMMAILSETTINGSWIZARD_H
       
    21 #define IMUMMAILSETTINGSWIZARD_H
       
    22 
       
    23 // INCLUDES
       
    24 #include <e32base.h>
       
    25 #include <e32cmn.h>
       
    26 #include <coedef.h>                 // TKeyResponse
       
    27 #include <w32std.h>                 // TKeyEvent
       
    28 #include <msvapi.h>                 // CMsvSession
       
    29 #include <mtudreg.h>                // CMtmUiDataRegistry
       
    30 #include <muiuflagger.h>
       
    31 #include <aknnotedialog.h>
       
    32 #include <AknInfoPopupNoteController.h>
       
    33 #include "MuiuDynamicSettingsDialog.h"
       
    34 
       
    35 #include "IMSSettingsUi.h"
       
    36 #include "IMSSettingsBaseUi.h"
       
    37 #include "IMSWizardLauncher.h"
       
    38 
       
    39 // CONSTANTS
       
    40 const TInt KIMSSettingsPopupTimerNoteTextLength = 256;
       
    41 // MACROS
       
    42 // DATA TYPES
       
    43 // FUNCTION PROTOTYPES
       
    44 // FORWARD DECLARATIONS
       
    45 class CImumMboxManager;
       
    46 class CImumMboxData;
       
    47 class CImSmtpSettings;
       
    48 class CImImap4Settings;
       
    49 class CImPop3Settings;
       
    50 class CAknMessageQueryDialog;
       
    51 class CIMSSettingsWizardEditTextPage;
       
    52 class CIMSSettingsWizardRadioButtonPage;
       
    53 class CIMSSettingsItemApprover;
       
    54 class CMsvCommDbUtilities;
       
    55 class CEikRichTextEditor;
       
    56 class CMtmStore;
       
    57 class CIMSWizardLauncher;
       
    58 
       
    59 // CLASS DECLARATION
       
    60 
       
    61 /**
       
    62 *  ?one_line_short_description.
       
    63 *  ?other_description_lines
       
    64 *
       
    65 *  @lib ?library
       
    66 *  @since S60 3.0
       
    67 */
       
    68 class CIMSSettingsWizard :
       
    69     public CIMSSettingsBaseUI
       
    70     {
       
    71     public: // Constructors and destructor
       
    72 
       
    73         /**
       
    74         * Destructor
       
    75         * @since S60 3.0
       
    76         */
       
    77         virtual ~CIMSSettingsWizard();
       
    78 
       
    79         /**
       
    80         *
       
    81         * @since S60 3.0
       
    82         * @param aListBox, The listbox with skin support
       
    83         */
       
    84         static CIMSSettingsWizard* NewL(
       
    85             CIMSSettingsUi& aDialog,
       
    86             CImumInternalApiImpl& aMailboxApi,
       
    87             CEikFormattedCellListBox& aListBox,
       
    88             CIMSWizardControl& iHelpContainer,
       
    89             CAknTitlePane& aTitlePane,
       
    90             CEikButtonGroupContainer& aSoftkeys,
       
    91             CMuiuFlags& aFlags,
       
    92             const TDesC& aEmailAddress );
       
    93 
       
    94         /**
       
    95         *
       
    96         * @since S60 3.0
       
    97         * @param aListBox, The listbox with skin support
       
    98         */
       
    99         static CIMSSettingsWizard* NewLC(
       
   100             CIMSSettingsUi& aDialog,
       
   101             CImumInternalApiImpl& aMailboxApi,
       
   102             CEikFormattedCellListBox& aListBox,
       
   103             CIMSWizardControl& iHelpContainer,
       
   104             CAknTitlePane& aTitlePane,
       
   105             CEikButtonGroupContainer& aSoftkeys,
       
   106             CMuiuFlags& aFlags,
       
   107             const TDesC& aEmailAddress );
       
   108 
       
   109     public: // New functions
       
   110 
       
   111         /**
       
   112         *
       
   113         * @since S60 3.0
       
   114         */
       
   115         void StoreSettingsToAccountL(
       
   116             CImumInSettingsData& aSettings );
       
   117 
       
   118         /**
       
   119         *
       
   120         * @since S60 3.0
       
   121         */
       
   122         TBool SettingsStartedL( const TDesC& aEmailAddress );
       
   123 
       
   124         /**
       
   125         *
       
   126         * @since S60 3.0
       
   127         */
       
   128         void PostponePopup();
       
   129 
       
   130 		/**
       
   131 		 * Starts the settings wizard.
       
   132 		 *
       
   133 		 * @since S60 3.0
       
   134 		 */
       
   135         void WizRunStart();
       
   136 
       
   137 		/**
       
   138 		 * Runs one step of the wizard procedure and checks
       
   139 		 * the internal state.
       
   140 		 *
       
   141 		 * @return TBool ETrue if there are still steps to go
       
   142 		 *				 	   through.
       
   143 		 * @since S60 3.0
       
   144 		 */
       
   145         TBool WizRunStepL();
       
   146 
       
   147 
       
   148     public: // Functions from base classes
       
   149 
       
   150         /**
       
   151         *
       
   152         * @since S60 3.0
       
   153         * @return ETrue, if possible to exit
       
   154         * @return EFalse, if not possible to exit
       
   155         */
       
   156         TBool OkToExitL( const TInt aButtonId );
       
   157 
       
   158 
       
   159     private: // Constructors and destructor
       
   160 
       
   161         /**
       
   162         *
       
   163         * @since S60 3.0
       
   164         */
       
   165         CIMSSettingsWizard(
       
   166             CIMSSettingsUi& aDialog,
       
   167             CImumInternalApiImpl& aMailboxApi,
       
   168             CEikFormattedCellListBox& aListBox,
       
   169             CIMSWizardControl& aHelpContainer,
       
   170             CAknTitlePane& aTitlePane,
       
   171             CMuiuFlags& aFlags );
       
   172 
       
   173         /**
       
   174         *
       
   175         * @since S60 3.0
       
   176         */
       
   177         void ConstructL( CEikButtonGroupContainer& aSoftkeys,
       
   178             const TDesC& aEmailAddress );
       
   179 
       
   180     private:  // New virtual functions
       
   181     private:  // New functions
       
   182 
       
   183         // WIZARD STATES
       
   184         void WizStateMachineL();
       
   185         void WizStateChangeStateL();
       
   186         void WizHandleStateInitializeL();
       
   187         void WizHandlePageForward();
       
   188         void WizHandlePageBackward();
       
   189         void WizHandleStateDeterminePage();
       
   190         void WizHandleStateEditL();
       
   191         void WizHandleStateFinishEditingL();
       
   192         void WizHandleStateExitL();
       
   193 
       
   194         // WIZARD ITEM HANDLING
       
   195         TBool ProcessValidatedItemL(
       
   196             CMuiuSettingBase& aBaseItem );
       
   197         void SettingsItemProcessItemL(
       
   198             CMuiuSettingBase& aBaseItem );
       
   199         void SettingsItemProcessProtocol(
       
   200             CMuiuSettingBase& aBaseItem );
       
   201         void SettingsItemProcessEmailL(
       
   202             CMuiuSettingBase& aBaseItem );
       
   203         void SettingsItemProcessIapL(
       
   204             CMuiuSettingBase& aBaseItem );
       
   205         /**
       
   206         * Creates server address string from verifed mail address
       
   207         * @since S60 3.0
       
   208         */
       
   209         void SettingsItemDefineServers(
       
   210             const TDesC& aEmailAddress );
       
   211         void SettingsItemDefineNormalWizardArray();
       
   212 
       
   213         /**
       
   214         * Creates mailbox name string from verified mail address
       
   215         * @since S60 3.0
       
   216         */
       
   217         void SettingsItemDefineMailboxName(
       
   218             const TDesC& aEmailAddress );
       
   219 
       
   220         // CUSTOM SETTINGS
       
   221         CAknSettingPage* AcquireCustomRadioButtonPageL(
       
   222             TInt& aReturnSettingValue,
       
   223             TMuiuDynSetUpdateMode& aReturnUpdateMode,
       
   224             MDesCArray& aReturnRadioButtonArray,
       
   225             CMuiuSettingBase& aParamBaseItem );
       
   226         CAknSettingPage* AcquireCustomTextEditorL(
       
   227             TMuiuSettingsText& aReturnSettingText,
       
   228             TMuiuDynSetUpdateMode& aReturnUpdateMode,
       
   229             CMuiuSettingBase& aParamBaseItem );
       
   230         CAknSettingPage* AcquireCustomIapPageL(
       
   231             TInt& aReturnSettingValue,
       
   232             TMuiuDynSetUpdateMode& aReturnUpdateMode,
       
   233             CDesCArrayFlat& aReturnRadioButtonArray,
       
   234             CMuiuSettingBase& aParamBaseItem );
       
   235         CAknSettingPage* AcquireProtocolPageL(
       
   236             TInt& aReturnSettingValue,
       
   237             TMuiuDynSetUpdateMode& aReturnUpdateMode,
       
   238             CDesCArrayFlat& aReturnRadioButtonArray,
       
   239             CMuiuSettingBase& aParamBaseItem );
       
   240 
       
   241 
       
   242         /**
       
   243         *
       
   244         * @since S60 3.0
       
   245         */
       
   246         void OpenHelpPageL();
       
   247         void DefinePageNumberStringL();
       
   248         TBool CheckEmailSkip();
       
   249 
       
   250 
       
   251         // KEY PRESSES
       
   252 
       
   253         /**
       
   254         *
       
   255         * @since S60 3.0
       
   256         */
       
   257         void KeyPressNextL();
       
   258         void KeyPressBackL();
       
   259 
       
   260         // MISC
       
   261 
       
   262         /**
       
   263         *
       
   264         * @since S60 3.0
       
   265         */
       
   266         TBool CheckCompleted();
       
   267 
       
   268         /**
       
   269         *
       
   270         * @since S60 3.0
       
   271         */
       
   272         CAknInfoPopupNoteController* ShowMailSettingsPopupAfterL(
       
   273             const TUid& aId,
       
   274             TInt aAfterMs );
       
   275 
       
   276          /**
       
   277          * Appends the MTM to the protocol selection list if the MTM supports
       
   278          * the wizard integration and if its technology type is email.
       
   279          *
       
   280          * @since S60 v3.2
       
   281          * @param aUid               ID of the MTM to be checked
       
   282          * @param aRadioButtons      List of pairs containg MTM ID and the title to be shown
       
   283          *                           protocol selection list
       
   284          * @param aUiDataMtmRegistry MTM UI Data registry
       
   285          */
       
   286         void CheckMtmWizardSupportL(
       
   287             CBaseMtmUiData& aMtmUiData,
       
   288             CDesCArrayFlat& aRadioButtons );
       
   289 
       
   290     private:  // Functions from base classes
       
   291 
       
   292         virtual TMuiuPageEventResult EventItemEditStartsL(
       
   293             CMuiuSettingBase& aBaseItem );
       
   294 
       
   295         /**
       
   296         *
       
   297         * @since S60 3.0
       
   298         */
       
   299         virtual void AcquireCustomSettingPageL(
       
   300             CAknSettingPage*& aReturnPage,
       
   301             TMuiuDynSetUpdateMode& aReturnUpdateMode,
       
   302             TInt& aReturnSettingValue,
       
   303             TMuiuSettingsText& aReturnSettingText,
       
   304             CDesCArrayFlat& aReturnRadioButtonArray,
       
   305             CMuiuSettingBase& aParamBaseItem );
       
   306 
       
   307         // CIMSSettingsBaseUI
       
   308         /**
       
   309         *
       
   310         * @since S60 3.0
       
   311         */
       
   312         TBool KeyPressSoftkey( const TInt aButton );
       
   313 
       
   314         /**
       
   315         *
       
   316         * @since S60 3.0
       
   317         */
       
   318         TBool KeyPressOKButtonL( const TInt aButton );
       
   319 
       
   320         TInt EventItemEditEndsL(
       
   321             CMuiuSettingBase& aBaseItem );
       
   322         TMuiuPageEventResult EventItemEvaluateRadioButton(
       
   323             const CMuiuSettingBase& aBaseItem,
       
   324             TInt& aNewValue );
       
   325         TMuiuPageEventResult EventItemEvaluateText(
       
   326             const CMuiuSettingBase& aBaseItem,
       
   327             TDes& aNewText );
       
   328 
       
   329         /**
       
   330          * Calls external mtm wizard
       
   331          *
       
   332          * @since S60 v3.2
       
   333          * @param aMtmUid for searching rigth wizard
       
   334          */
       
   335 		void CallExternalMtmWizardL( const TUid& aMtmUid, TBool& aCompleted );
       
   336 
       
   337 
       
   338     private:    // Datad
       
   339 
       
   340         enum TWizState
       
   341             {
       
   342             EWizStateStarted = 0,
       
   343             EWizStateDeterminePage,
       
   344             EWizStateEditPage,
       
   345             EWizFinishEditing,
       
   346             EWizStateExit,
       
   347             EWizStateQuerying
       
   348             };
       
   349 
       
   350         enum TWizFlags
       
   351             {
       
   352             EWizFlagFirstFlag = EImumSettingLastFlag,
       
   353             EWizFlagStateRunning = EWizFlagFirstFlag,
       
   354             EWizFlagExiting,
       
   355             EWizFlagCompleted,
       
   356             EWizFlagNextKeyPressed,
       
   357             EWizFlagBackKeyPressed,
       
   358             EWizFlagOptionsKeyPressed,
       
   359             EWizFlagItemApproved,
       
   360             EWizFlagRadioButtonPage,
       
   361             EWizFlagTextEditPage,
       
   362             EWizFlagSkipEmail,
       
   363             EWizFlagPluginDetected,
       
   364             EWizFlagForcedCancel,
       
   365             EWizFlagShouldExit,
       
   366             EWizFlagShouldClose,
       
   367             EWizFlagLastFlag
       
   368             };
       
   369 
       
   370         // The current item in progress
       
   371         TUid                    iCurrentItem;
       
   372         //
       
   373         TWizState               iWizState;
       
   374         //
       
   375         CIMSSettingsWizardEditTextPage* iPageEdit;
       
   376         //
       
   377         CIMSSettingsWizardRadioButtonPage* iPageRadioBtn;
       
   378         //
       
   379         TInt                    iCurPage;
       
   380         //
       
   381         HBufC*                  iPageText;
       
   382         //
       
   383         CIMSWizardControl&      iHelpContainer;
       
   384         //
       
   385         CAknInfoPopupNoteController* iNoteDialog;
       
   386         //
       
   387         TMuiuSettingsText       iTemporaryText;
       
   388         //Owned: To launch wizard automatically
       
   389         CIMSWizardLauncher*        iWizardLauncher;
       
   390 
       
   391         // To keep track of the protocol
       
   392         TUid            		iProtocol;
       
   393         //Owned
       
   394         CMtmStore*              iMtmStore;
       
   395         RArray<TInt>            iProtocolArray;
       
   396     };
       
   397 
       
   398 #endif      // IMUMMAILSETTINGSWIZARD_H
       
   399 
       
   400 // End of File