messagingappbase/mce/inc/MceUtils.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/mce/inc/MceUtils.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,321 @@
+/*
+* Copyright (c) 2002 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:  
+*     Mixed class to offer different account functions.
+*     Implemented by CMceUi.
+*
+*/
+
+
+
+#ifndef MCEUTILS_H
+#define MCEUTILS_H
+
+//  INCLUDES
+
+#include <msvstd.h>     // TMsvId
+#include <msvstd.hrh>   // KMsvNullIndexEntryIdValue
+#include <msvreg.h>     // THumanReadableName
+
+#include <bldvariant.hrh>
+#include <ImumInHealthServices.h>       // MImumInHealthServices
+#include <PhCltTypes.h>
+
+// DATA TYPES
+enum TMceListType
+    {
+    EMceListTypeMainView,
+    EMceListTypeMessage
+    };
+
+// FORWARD DECLARATIONS
+class CUidNameArray;
+class CMsvSession;
+class CImumInternalApi;
+
+// CLASS DECLARATION
+
+/**
+*  Mixed class to offer different account functions.
+*  Implemented by CMceUi
+*/
+class MMceAccountManager
+    {
+    public:
+        /**
+        * Create new account.
+        * @param aType type of the account.
+        * @param aOldServiceId id of the service where old settings are copied (this is for 'create from existing')
+        * @return ETrue if account created, EFalse otherwise
+        */
+        virtual TBool CreateNewAccountL(TUid aType, TMsvId aOldServiceId )=0;
+
+        /**
+        * Edit account.
+        * @param aId id of the account to be edited.
+        */
+        virtual void EditAccountL(TMsvId aId)=0;
+
+        /**
+        * Returns array of accounts of desired type.
+        * Callers responsibility to destroy array!
+        * @param aType type of the account.
+        */
+        virtual CUidNameArray* MtmAccountsL( TUid aType )=0;
+
+        /**
+        * Can create create new account of aMtm.
+        * @param aMtm Mtm uid.
+        * @return EFalse if new accounts cannot be created for mtm aMtm.
+        */
+        virtual TBool CanCreateNewAccountL(TUid aMtm) = 0;
+
+        /**
+        * Delete account.
+        * @param aId id of the account to be deleted.
+        */
+        virtual void DeleteAccountL(TMsvId aId) = 0;
+
+        /**
+         * Returns session used.
+         * @return reference to object of CMsvSession class.
+         */
+        virtual CMsvSession& Session() = 0;
+
+        /**
+         * Returns ETrue if aMtm is installed in the device.
+         * @param aMtm: Mtm uid to be checked.
+         * @return EFalse if aMtm is not installed, ETrue if it is installed.
+         */
+        virtual TBool IsPresent( TUid aMtm ) const = 0;
+
+        /**
+         * Returns human readable name of mtm.
+         * @param aMtm: Mtm uid
+         * @return human readable name of mtm.
+         */
+         virtual THumanReadableName MtmName( TUid aMtm ) const = 0;
+
+    };
+
+/**
+* Helper class
+* Includes static functions.
+*/
+class MceUtils
+    {
+    public:
+        /**
+        * Returns ETrue if given entry is one of the default folders:
+        * Inbox, Outbox, Sent items, Draft, Documents, Templates.
+        * @param TMsvId of the entry
+        * @return ETrue / EFalse
+        */
+        static TBool IsEntryFixed( TMsvId aId );
+
+        /**
+        * Replaces tab and enter characters by spaces using AknTextUtils::ReplaceCharacters
+        */
+        static void ReplaceCharacters( TDes& aText );
+
+        /**
+        * Gets ir attachment file name and path for the aEntryId.
+        * @param aSession: session object
+        * @param aEntryId: entry to be checked
+        * @param aFileName: filename buffer to be filled
+        * @param aFileHandle: handle to the file (aFileName)
+        * @param aSize: size of the file (aFileName)
+        */
+		static void GetIrFilePathL( CMsvSession& aSession, TMsvId aEntryId, TFileName& aFileName, RFile& aFileHandle, TInt& aSize );
+
+        /**
+        * Returns ETrue if 'Memory in use' option is enabled in mce/settings               
+        */
+        static TBool MemoryInUseOptionL( );        
+                                                    
+        /**
+         * Gets the array of valid mailboxes.
+         *
+         * @since S60 v3.2
+         * @param aEmailApi: Ptr to the email API
+         * @param aMailboxIdArray: list of valid mailboxes
+         * @param aGetImap4: ETrue if the imap mailboxes are to be included
+         * @param aGetPop3: ETrue if the pop3 mailboxes are to be included
+         * @param aGetSyncML: ETrue if the syncml mailboxes are to be included
+         * @param aGetOther: ETrue if the Other (3rd party) mailboxes are to be included
+         * @return KErrNone if the list of healthy mailboxes list is found
+         */
+        static TInt GetHealthyMailboxListL(
+            const MImumInHealthServices& aHealthServices,
+            MImumInHealthServices::RMailboxIdArray& aMailboxIdArray,
+            TBool aGetImap4,
+            TBool aGetPop3,
+            TBool aGetSyncML,
+            TBool aGetOther );           
+            
+        /**
+        * Returns ETrue if phonenumber in entry is valid
+        * @since 5.0
+        * @param aEntryId of the entry
+        * @param aSession: Session to message server
+        * @param aPhoneNumber: Phone number
+        * @param aEntryDetails: If this is not NULL, 
+        * then KMceVisibleTextLength from the 
+        * TMsvEntry.iDetails is copied to aEntryDetails buffer
+        * @Returns ETrue if phonenumber is valid
+        */
+        static TBool ValidPhoneNumberL( 
+            TMsvId aEntryId,
+            CMsvSession& aSession,
+            TPhCltTelephoneNumber& aPhoneNumber, 
+            TDes* aEntryDetails );
+
+        /**
+        * Returns ETrue if phonenumber in entry is valid
+        * @since 5.0
+        * @param aEntryId of the entry
+        * @param aSession: Session to message server
+        * @Returns ETrue if phonenumber is valid
+        */
+        static TBool ValidPhoneNumberL( 
+            TMsvId aEntryId,
+            CMsvSession& aSession );
+
+        /**
+        * Gets phone number from SMS entry
+        * @since 5.0
+        * @param aEntryId of the entry
+        * @param aSession: Session to message server
+        * @param aPhoneNumber: Phone number
+        */
+        static void GetSmsNumberL( 
+            TMsvId aEntryId, 
+            CMsvSession& aSession,
+            TPhCltTelephoneNumber& aNumber );
+
+        /**
+        * Gets phone number from MMS entry
+        * @since 5.0
+        * @param aEntryId of the entry
+        * @param aSession: Session to message server
+        * @param aPhoneNumber: Phone number
+        */
+        static void GetMmsNumberL( 
+            TMsvEntry& aEntry, 
+            CMsvSession& aSession,
+            TPhCltTelephoneNumber& aNumber );
+            
+            
+        /**
+        * Copies text buffer from aSourceString to 
+        * aTargetSting and also adds EEllipsis if needed and 
+        * performs AknTextUtils::ReplaceCharacters to copied buffer.
+        * @since 5.0
+        * @param aTargetString
+        * @param aSourceString
+        * @param aDescriptionLength
+        * @return: none
+        */
+        static void StripAndAppendStringL(
+            TDes& aTargetString, 
+            const TDesC& aSourceString, 
+            TInt aDescriptionLength );
+            
+        /**
+        * Reads description length value from muiu cenrep file:
+        * KCRUidMuiuSettings / KMuiuDescriptionLength
+        * If some errors, returns KMceVisibleTextLength.
+        * @since 5.0
+        * @return iDescription length value. 
+        */            
+        static TInt DescriptionLength();
+
+        /**
+        * Reads description length value from muiu cenrep file:
+        * KCRUidMuiuSettings / KMuiuDescriptionLength
+        * If some errors, returns KMceVisibleTextLength.
+        * @since 5.0
+        * @return iDescription length value. 
+        * @leave KErrNoMemory
+        */            
+        static TInt DescriptionLengthL();
+
+        /**
+        * Returns ETrue if MTM is build in type 
+        * @since 5.0
+        * @param aMtmUid
+        * @return ETrue/EFalse
+        */    
+        static TBool IsMtmBuiltIn( TUid aMtmUid );
+        
+        /**
+         * Reads KCRUidNumberGrouping / KNumberGrouping
+         * from the cenrep and returns ETrue if number 
+         * grouping is enabled. 
+         * If reading fails then it returns EFalse
+         * @since 5.0
+         */
+        static TBool NumberGroupingEnabled();
+
+        /**
+         * Reads KCRUidNumberGrouping / KNumberGrouping
+         * from the cenrep and returns ETrue if number 
+         * grouping is enabled. 
+         * If reading fails then it returns EFalse
+         * @since 5.0
+         * @leave if CRepository::NewL leaves.
+         */
+        static TBool NumberGroupingEnabledL();
+            
+
+    };
+/**
+* Helper class for flags.
+*/
+class TMceFlags
+    {
+    public:
+        /**
+        * constructor
+        */
+        TMceFlags();
+
+        /**
+        * Sets flag on
+        * @param aFlag: flag to be set
+        */
+        inline void SetMceFlag( TUint32 aFlag );
+
+        /**
+        * Clear flag on
+        * @param aFlag: flag to be cleared
+        */
+        inline void ClearMceFlag( TUint32 aFlag );
+
+        /**
+        * Query for the flag
+        * @param aFlag: flag to be checked
+        */
+        inline TBool MceFlag( TUint32 aFlag ) const;
+
+    private:
+        TUint32 iFlags;
+
+    };
+
+#include "MceUtils.inl"
+
+#endif
+
+// End of file