email/imum/Utils/Inc/IMSSettingsUi.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Utils/Inc/IMSSettingsUi.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,346 @@
+/*
+* 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: 
+*       Class declaration file
+*
+*/
+
+
+#ifndef __IMUMSETTINGSDIALOG_H__
+#define __IMUMSETTINGSDIALOG_H__
+
+//  INCLUDES
+#include <bldvariant.hrh>
+#include <AknForm.h>                // CAknDialog
+#include <e32base.h>                // CArrayFixFlat
+#include <muiuflagger.h>            // CMuiuFlags
+#include <ConeResLoader.h>          // RConeResourceLoader
+
+#include "ImumMboxData.h"
+
+// DATA TYPES
+enum TIMSFlags
+    {
+    // Indicates the settings state between wizard and normal setitngs
+    EImumSettingsWizard = 0,
+    // Indicates that the settings should be closed
+    EImumSettingShouldClose,
+    // Indicates if the settings and mce should be exitted
+    EImumSettingShouldExit,
+    // Indicates the need of query in exit
+    EImumSettingQueryClose,
+    // Indicates the need of opening settings menu
+    EImumSettingOpenOptionsMenu,
+    // Indicates if the submenu item is currently selected
+    EImumSettingPositionSubMenu,
+    // Indicates if the settings should be created/saved
+    EImumSettingSave,
+    // Keep this flag last
+    EImumSettingLastFlag
+    };
+
+enum TImumUiExitCodes
+    {
+    // Nothing has changed, no need for save
+    EImumUiNoChanges = 0,
+    // After back key has been pressed, exit settings
+    EImumUiClose,
+    // After back key has been pressed, save and exit settings
+    EImumUiSaveAndClose,
+    // After options->exit has been chose, exit settings
+    EImumUiExit,
+    // After options->exit has been chose, save and exit settings
+    EImumUiSaveAndExit,
+    // External wizard created new mailbox
+    EImumUiExtWizardCreated
+    };
+
+// FORWARD DECLARATIONS
+class CIMSSettingsBaseUI;
+class CEikFormattedCellListBox;
+class CImumMboxManager;
+class CAknTitlePane;
+class CEikEdwin;
+class CEikRichTextEditor;
+class CImumInternalApiImpl;
+class CImumInSettingsData;
+class CAiwGenericParamList;
+class CIMSWizardControl;
+
+// CLASS DECLARATION
+
+/**
+*  CIMSSettingsUi
+*/
+class CIMSSettingsUi :
+    public CAknDialog
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Destructor.
+        */
+        virtual ~CIMSSettingsUi();
+
+    public: // New functions
+
+        /**
+        * Launches settings dialog for creating new account
+        * @since S60 3.0
+        * @param aSession: reference to the session object
+        * @param aSettings: reference to the settings object
+        * @return EFalse if no saving, ETrue otherwise
+        */
+        IMPORT_C static TMsvId NewAccountL(
+            TImumUiExitCodes& aExitCode,
+            CImumInSettingsData& aMailboxSettings,
+            CMsvSession& aMsvSession );
+
+        /**
+        * Launches settings dialog for creating new account
+        * @since S60 3.2
+        * @param aSession: reference to the session object
+        * @param aSettings: reference to the settings object
+        * @param aDefaultWizOnly: if ETrue, no external wizard is
+        * 					launched, even if one exists
+        * @return EFalse if no saving, ETrue otherwise
+        */
+        IMPORT_C static TMsvId NewAccountL(
+            TImumUiExitCodes& aExitCode,
+            CImumInSettingsData& aMailboxSettings,
+            CMsvSession& aMsvSession,
+            TBool aDefaultWizOnly );
+
+        /**
+        * Launches settings dialog for editing existing account
+        * @since S60 3.0
+        * @param aSession: reference to the session object
+        * @param aSettings: reference to the settings object
+        * @param aId: TMsvId of the edited settings
+        * @return EFalse if no saving, ETrue otherwise
+        */
+        IMPORT_C static void EditAccountL(
+            TImumUiExitCodes& aExitCode,
+            CImumInSettingsData& aMailboxSettings,
+            CMsvSession& aMsvSession );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        void LaunchHelp();
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        void DoQuitL();
+
+        /**
+        * Execute commands as requested by a flags
+        * @since S60 3.2
+        */
+        void ExecFlags();
+
+    public: // Functions from base classes
+
+        //From CAknDialog
+        /**
+        * ProcessCommandL
+        * @since S60 3.0
+        * @param aCommandId, command id
+        */
+        void ProcessCommandL( TInt aCommandId );
+
+        /**
+        * OfferKeyEventL
+        * Used here to handle exit event from subsettings
+        * @since S60 3.0
+        * @param aKeyEvent, event id
+        * @param aType, event type
+        * @return Response
+        */
+        TKeyResponse OfferKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+        void HandleCommandL( TInt aCommand );
+
+        /**
+        *
+        * @since S60 3.1
+        */
+    	virtual void HandleResourceChange( TInt aType );
+
+    protected:  // New functions
+    protected: // Functions from base classes
+
+        //From CEikDialog
+
+        /**
+        * OkToExitL
+        * @since S60 3.0
+        * @param aButtonId, button id
+        * @return if exit
+        */
+        virtual TBool OkToExitL( TInt aButtonId );
+
+        /**
+        * PreLayoutDynInitL
+        */
+        virtual void PreLayoutDynInitL();
+
+        /**
+        * DynInitMenuPaneL
+        * @since S60 3.0
+        * @param aResourceId
+        * @param aMenuPane
+        * @return command id
+        */
+        virtual void DynInitMenuPaneL(
+            TInt aResourceId,
+            CEikMenuPane* aMenuPane );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        virtual void GetHelpContext(
+            TCoeHelpContext& aContext ) const;
+
+
+         /**
+         * Sets Settings ui's size and position
+         * From CAknDialog
+         * @since S60 3.2
+         */
+        virtual void SetSizeAndPosition( const TSize& aSize );
+
+
+         /**
+         * Method to create help screen control
+         * From CEikDialog
+         * @since S60 3.2
+         */
+        virtual SEikControlInfo CreateCustomControlL( TInt aControlType );
+
+    private: // Constructors
+
+        /**
+        * C++ default constructor.
+        * @since S60 3.0
+        * @param aSession, session reference
+        * @param aSettings, mail settings reference
+        * @param aId, entry id
+        * @param aEmailAddress, emailaddress from plugin
+        * when user browses in settings
+        */
+        CIMSSettingsUi(
+            TImumUiExitCodes& aExitCode,
+            CImumInSettingsData& aMailboxSettings );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        void SettingsConstructL(
+            const TInt aResource,
+            CMsvSession& aMsvSession,
+            const TDesC& aEmailAddress );
+
+    private: // New functions
+
+        /**
+        * Check to see if we are editing an existing
+        * or a new account
+        * @since S60 3.0
+        * @return ETrue if editing, EFalse if creating new
+        */
+        inline TBool EditingAnAccount() const;
+
+        /**
+        * Change font color in startup and when skin is changed.
+        * @since S60 3.1
+        */
+        void SetFontAndSkin();
+
+        /**
+         * Determines the exitcode
+         *
+         * @since S60 v3.2
+         * @return Exit code based on the current status.
+         */
+        TImumUiExitCodes ExitCode();
+
+        /**
+         *
+         * @since S60 v3.2
+         * @param
+         * @return
+         */
+        static void StartL(
+            TInt aResource,
+            TImumUiExitCodes& aExitCode,
+            CImumInSettingsData& aMailboxSettings,
+            CMsvSession& aMsvSession,
+            const TDesC& aEmailAddress );
+
+        /**
+         * Tries to launch external wizard via AIW
+         *
+         * @since S60 v3.2
+         * @param aEmailAddress in which the email address is set if get
+         * @param aMailboxId is set if external wizard creates mailbox
+         * @leave KErrNotFound if not found approrpiate email wizard -plugin
+         * @leave KErrCancel if operation was cancelled in external wizard
+         */
+        static void LaunchExtWizardL(
+            TDes& aEmailAddress,
+            TMsvId& aMailboxId );
+
+        /**
+         * Loads icon array to settings listbox object.
+         *
+         * @since S60 v3.2
+         */
+        void LoadListboxIconArrayL();
+
+    private:    // Data
+
+        // Flags of settings
+        CMuiuFlags*             iFlags;
+        // Exitcode to be returned to MTM
+        TImumUiExitCodes&       iExitCode;
+        // The settings manager that handles account creation
+        CImumInSettingsData&    iMailboxSettings;
+        //
+        CImumInternalApiImpl*   iMailboxApi;
+        // The listbox with skin support
+        CEikFormattedCellListBox* iListBox;
+        //
+        CIMSSettingsBaseUI*     iSettings;
+        //
+        TInt                    iResourceMenuBar;
+        // Object to load the resources
+        RConeResourceLoader     iResourceLoader;
+        // Descriptor to hold email address received from external plugin
+        HBufC*                  iEmailAddress;
+
+        // Help screen container, NOT OWNED
+        CIMSWizardControl*      iWizardContainer;
+    };
+
+#endif      // __IMUMSETTINGSDIALOG_H__
+
+// End of File