email/imum/Utils/Inc/IMSSettingsNoteUi.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Utils/Inc/IMSSettingsNoteUi.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,399 @@
+/*
+* 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:  Contains functions to show notes in UI
+*
+*
+*/
+
+
+#ifndef IMSSETTINGSNOTEUI_H
+#define IMSSETTINGSNOTEUI_H
+
+// INCLUDES
+#include <e32base.h>
+#include <e32cmn.h>
+#include <AknQueryDialog.h>
+#include <ImumUtils.rsg>
+#include "MuiuDynamicHeader.h"
+#include "MuiuDynamicSettingsDialog.h"
+#include <AknInfoPopupNoteController.h>
+
+// CONSTANTS
+const TInt KMaxVisibleTime = KMaxTInt / 1000;
+enum TIMSNotes
+    {
+    EIMSConfirmationNote = 0,
+    EIMSInformationNote,
+    EIMSErrorNote,
+    EIMSWarningNote
+    };
+
+enum TIMSErrors
+    {
+    // Common
+    EIMSNoError = 0,
+    EIMSItemInvalid,
+    EIMSItemEmpty,
+    // Mailbox
+    EIMSMailboxNameExists,
+    EIMSMailboxNameEmpty,
+    EIMSMailboxNameRejected,
+    // Always Online
+    EIMSAoAlwaysAsk,
+    EIMSAoIAPPassword,
+    EIMSAoNoLogin,
+    EIMSAoOmaEmnOn,
+    EIMSOmaEmnAoOn,
+    EIMSAoManyAlwaysOnline,
+    EIMSAoFetchNotAccepted,
+    EIMSAoIapTypeCSD
+    };
+
+// DATA TYPES
+// FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+class CImumInternalApiImpl;
+class CIMSSettingsBaseUI;
+class CAknResourceNoteDialog;
+class CMuiuFlags;
+
+// CLASS DECLARATION
+
+/**
+*
+*  @lib
+*  @since S60 3.0
+*/
+NONSHARABLE_CLASS( CIMSSettingsNoteUi ) : public CBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Creates object from CIMSSettingsNoteUi and leaves it to cleanup stack
+        * @since S60 3.0
+        * @return, Constructed object
+        */
+        static CIMSSettingsNoteUi* NewLC(
+            CImumInternalApiImpl& aEmailApi,
+            CIMSSettingsBaseUI& aDialog );
+
+        /**
+        * Create object from CIMSSettingsNoteUi
+        * @since S60 3.0
+        * @return, Constructed object
+        */
+        static CIMSSettingsNoteUi* NewL(
+            CImumInternalApiImpl& aEmailApi,
+            CIMSSettingsBaseUI& aDialog );
+
+        /**
+        * Destructor
+        * @since S60 3.0
+        */
+        virtual ~CIMSSettingsNoteUi();
+
+    public: // New functions
+
+        /**
+        * Shows the query for user and waits for user answer.
+        *
+        * @since S60 3.0
+        * @param aTextResource Resource string, that shall be shown in note
+        * @param aDialogResource ResourceId of dialog, which shall be used
+        *        Locate the resource dialogs from emailutils.ra
+        * @param aTone Tone to be played with query
+        *        Class CAknQueryDialog defines the TTone type, which contains
+        *        following enumerations:
+        *           - ENoTone
+        *           - EConfirmationTone
+        *           - EWarningTone
+        *           - EErrorTone
+        *        Example usage: CAknQueryDialog::EConfirmationTone
+        * @return Command returned from the query
+        */
+        IMPORT_C static TInt ShowQueryL(
+            const TUint aTextResource,
+            const TInt  aDialogResource = R_EMAIL_CONFIRMATION_QUERY,
+            const TBool& aClearBackground = EFalse,
+            const CAknQueryDialog::TTone aTone = CAknQueryDialog::ENoTone );
+
+        IMPORT_C static TInt ShowQueryL(
+            const TDesC& aText,
+            const TInt  aDialogResource = R_EMAIL_CONFIRMATION_QUERY,
+            const TBool& aClearBackground = EFalse,
+            const CAknQueryDialog::TTone aTone = CAknQueryDialog::ENoTone );
+
+        /**
+         * 
+         *
+         * @since S60 v3.2
+         */    
+        template<TInt TLength>    
+        static inline TInt ShowQueryL(
+            const TInt aTextResource,
+            const TDesC& aAdditionalText,            
+            const TInt aDialogResource = R_EMAIL_CONFIRMATION_QUERY,
+            const TBool& aClearBackground = EFalse,
+            const CAknQueryDialog::TTone& aTone = CAknQueryDialog::ENoTone );
+            
+
+        /**
+        * This function fetches the text from given resource file and shows
+        * the string found from it in small note box.
+        * More info in file aknnotewrappers.h
+        *
+        * @since S60 3.0
+        * @param aNoteType Type of note to be shown
+        *        Avkon offers several type of notes, which differs from each
+        *        other. There are following types of notes available:
+        *           - EMsvConfirmationNote
+        *           - EMsvInformationNote
+        *           - EMsvErrorNote
+        *           - EMsvWarningNote
+        * @param aNoteWaiting Parameter to create the note
+        *        When parameter is TRUE, created note will be waitnote
+        *        When parameter is FALSE, note is not waitnote
+        * @param aResource Resource string, that shall be shown in note
+        * @param aFile File, from the string shall be read
+        */
+        IMPORT_C static void ShowNoteL(
+            const TUint      aResource,
+            const TIMSNotes& aNoteType = EIMSErrorNote,
+            const TBool      aNoteWaiting = EFalse );
+
+        IMPORT_C static void ShowNoteL(
+            const TDesC&      aText,
+            const TIMSNotes& aNoteType = EIMSErrorNote,
+            const TBool      aNoteWaiting = EFalse );
+
+        /**
+        * @since S60 3.2
+        */
+        IMPORT_C static void ShowNoteL(
+            const TUint aResource,
+            TIMSNotes aNoteType,
+            TBool aNoteWaiting,
+            TInt aTimeOut
+            );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        static HBufC* MakeStringLC( const TUint aTextResource );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        static void MakeString(
+            TDes& aDest,
+            TInt aResourceId,
+            TInt aValue );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        static void MakeStringL(
+            TDes& aDest,
+            TInt aResourceId,
+            const TDesC& aSubs );
+
+        /**
+        *
+        * @since S60 3.2
+        */
+        static void MakeString(
+            TDes& aDest,
+            const TDesC& aTag,
+            const TDesC& aSubs );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        static CAknInfoPopupNoteController* ShowPopupLC(
+            const TInt aResource,
+            const TInt aAfterMs,
+            const TInt aPopupVisibleTime = KMaxVisibleTime );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        static CAknInfoPopupNoteController* ShowPopupL(
+            const TInt aResource,
+            const TInt aAfterMs,
+            const TInt aPopupVisibleTimeMs = KMaxVisibleTime );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowDialog(
+            const CMuiuSettingBase& aBaseItem,
+            const TIMSErrors aError,
+            const TDesC& aNewText );
+
+    public: // Functions from base classes
+
+    protected:  // Constructors
+
+        /**
+        * Default constructor for classCIMSSettingsNoteUi
+        * @since S60 3.0
+        * @return, Constructed object
+        */
+        CIMSSettingsNoteUi(
+            CImumInternalApiImpl& aEmailApi,
+            CIMSSettingsBaseUI& aDialog );
+
+        /**
+        * Symbian 2-phase constructor
+        * @since S60 3.0
+        */
+        void ConstructL();
+
+    protected:  // New virtual functions
+    protected:  // New functions
+    protected:  // Functions from base classes
+
+    private:  // New virtual functions
+    private:  // New functions
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowProtocolErrorNoteL(
+            const TIMSErrors aError );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowEmailAddressErrorNoteL(
+            const TIMSErrors aError );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowServerErrorNoteL(
+            const TIMSErrors aError );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowIapErrorNoteL(
+            const TIMSErrors aError );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowWizMailboxNameErrorNoteL(
+            const TIMSErrors aError );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TBool ShowMailboxAlreadyExistsErrorNoteL(
+            const TDesC& aMailboxName );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowSetMailboxNameErrorNoteL(
+            const TIMSErrors aError,
+            const TDesC& aMailboxName );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowProtocolReadOnlyErrorNoteL(
+            const TIMSErrors aError );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowAlwaysOnlineErrorNoteL(
+            const TIMSErrors aError );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowAoCsdIapError();
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowAlwaysOnlineRemovalQueryL(
+            const TIMSErrors aError );
+
+        /**
+        *
+        * @since S60 3.0
+        */
+        TMuiuPageEventResult ShowFetchLimitErrorNoteL(
+            const TIMSErrors aError );
+            
+            
+        /**
+        * Selects which dialog to show based on aBaseItem
+        * @param aBaseItem determines which note should be shown
+        * @param aError tells what error has occurred
+        * @return users answer
+        * @since S60 3.2
+        */
+        TMuiuPageEventResult SelectDialogL( 
+           const CMuiuSettingBase& aBaseItem,
+           const TIMSErrors aError,
+           const TDesC& aNewText );
+
+        /**
+        * @since S60 3.2
+        */
+        static CAknResourceNoteDialog* NewNoteL( TIMSNotes aNoteType,
+            TBool aNoteWaiting );
+        
+        /**
+         * Removes a screen clearer from the stack if a leave occurs.
+         * @param aScreenClearer ScreenClearer pointer.
+         */
+        static void ScreenClearerCleanupOperation( TAny* aScreenClearer );
+
+    private:  // Functions from base classes
+
+    public:     // Data
+    protected:  // Data
+    private:    // Data
+
+        // Dialog that owns the notification UI
+        CIMSSettingsBaseUI&     iDialog;
+        // Internal mail API implementation
+        CImumInternalApiImpl&       iMailboxApi;
+    };
+
+#include "IMSSettingsNoteUi.inl"
+
+#endif // IMSSETTINGSNOTEUI_H
\ No newline at end of file