--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Utils/Inc/EmailUtils.H Wed Sep 01 12:31:54 2010 +0100
@@ -0,0 +1,467 @@
+/*
+* 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:
+* Static functions for imum
+*
+*/
+
+
+#ifndef __EMAILUTILS_H__
+#define __EMAILUTILS_H__
+
+// INCLUDES
+#include <eikdialg.h>
+#include <msvapi.h> // CMsvOperation
+#include <miutmsg.h> // CImEmailMessage
+#include <Muiumsginfo.h>
+#include <AlwaysOnlineManagerClient.h>
+#include <ConeResLoader.h> // RConeResourceLoader
+#include <mtmuibas.h>
+#include "MuiuDynamicHeader.h"
+#include "ImumMboxSettingsCtrl.h"
+#include "ImumMboxData.h"
+#include "ImumDaSettingsKeys.h"
+
+// CONSTANTS
+enum TIMASMailboxType
+ {
+ EMailboxPOP3,
+ EMailboxIMAP4
+ };
+
+enum TIMASMailSecurity
+ {
+ EImumSecurityOn = 0,
+ EImumSecurityMs,
+ EImumSecurityOff
+ };
+
+enum TIMASMailPort
+ {
+ EIMASPortDefault = 0,
+ EIMASPortUserDefined
+ };
+
+enum TFetchAttachments
+ {
+ EFetchAttachments = 0,
+ EFetchBodyOnly
+ };
+
+enum TSendOption
+ {
+ EImmediately = 0,
+ EOnNextConnection
+ };
+
+enum TIMASOnOff
+ {
+ EIMASOn = 0,
+ EIMASOff
+ };
+
+enum TIMASYesNo
+ {
+ EIMASYes = 0, // yes is 0 because it is ui specified so that 'yes' options is first in the list
+ EIMASNo
+ };
+
+enum TIMASFetchHeaders
+ {
+ EIMASFetchAll = 0,
+ EIMASFetchUserDefined,
+ EIMASFetchPastNumberOfDays
+ };
+
+/**
+* User defined KB if higher that 0, so if some KB has been
+* set, the value being bigger that 0 already tells us that
+* the setting is userdefined
+*/
+enum TIMASFetchedPartsMapping
+ {
+ EIMASMapHeadersOnly = -2,
+ EIMASMapFullBody = -1,
+ EIMASMapUserDefinedKB = 0
+ };
+
+enum TIMASFetchedPartsButtons
+ {
+ EIMASHeadersOnly = 0,
+ EIMASLessThan,
+ EIMASFullBody, // only for IMAP
+ EIMASBodyAndAttachments
+ };
+
+enum TIMSAoInterval
+ {
+ EIMASAoInterval5Min = 0,
+ EIMASAoInterval15Min,
+ EIMASAoInterval30Min,
+ EIMASAoInterval1Hour,
+ EIMASAoInterval2Hours,
+ EIMASAoInterval4Hours,
+ EIMASAoInterval6Hours
+ };
+
+enum TIMASAoHoursButtons
+ {
+ EIMASAoHoursAll = 0,
+ EIMASAoHoursUserDefined
+ };
+
+const TInt KIMASDefaultPortImap4 = 143;
+const TInt KIMASDefaultSecurityPortImap4 = 993;
+const TInt KIMASDefaultPortPop3 = 110;
+const TInt KIMASDefaultSecurityPortPop3 = 995;
+const TInt KIMASDefaultPortSmtp = 25;
+const TInt KIMASDefaultSecurityPortSmtp = 465;
+const TInt KImumMaxMailboxes = 6;
+const TInt KIMASMaxAccounts = 255;
+
+const TInt KIMASAoInterval5Min = 5;
+const TInt KIMASAoInterval15Min = 15;
+const TInt KIMASAoInterval30Min = 30;
+const TInt KIMASAoInterval1Hour = 60;
+const TInt KIMASAoInterval2Hours = 120;
+const TInt KIMASAoInterval4Hours = 240;
+const TInt KIMASAoInterval6Hours = 360;
+
+// MACROS
+// DATA TYPES
+// FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+class CImEmailMessage;
+class CEikonEnv;
+class CImBaseEmailSettings;
+class CContactItemFieldSet;
+class CImIAPPreferences;
+class CRepository;
+class CImImap4Settings;
+class CImPop3Settings;
+class CImSmtpSettings;
+class CImumInternalApi;
+
+// CLASS DECLARATION
+
+/**
+* Static functions for imum
+* ?other_description_lines
+*
+* @lib ?library
+* @since S60 3.0
+*/
+class MsvEmailMtmUiUtils
+ {
+ public:
+
+ /**
+ * Check there is enough disk space on the specified drive to
+ * fetch a message of aMsgSize bytes.
+ * If not, display a message and return EFalse.
+ */
+ IMPORT_C static TBool CheckAvailableDiskSpaceForDownloadL(
+ TInt aMsgSize,
+ CEikonEnv& aEikonEnv,
+ CMsvSession& aSession );
+
+ /**
+ * Do a message server entry copy or move.
+ */
+ IMPORT_C static CMsvOperation* DoCEntryCopyMoveL(
+ CMsvEntry& aEntry,
+ const CMsvEntrySelection& aSel,
+ TMsvId aTargetId,
+ TRequestStatus& aCompletionStatus,
+ TBool aCopy);
+
+ /**
+ * Strip message entries that have their
+ * 'Complete' flag set from a CMsvEntrySelection.
+ */
+ IMPORT_C static CMsvEntrySelection* StripCompleteEntriesLC(
+ const CMsvEntry& aParent,
+ const CMsvEntrySelection& aSelection);
+
+ /**
+ * Strip message entries that have their 'Deleted'
+ * flag set from a CMsvEntrySelection.
+ */
+ IMPORT_C static CMsvEntrySelection* StripDeletedEntriesLC(
+ const CMsvEntry& aParent,
+ const CMsvEntrySelection& aSelection);
+
+ /**
+ * Sets fields in the message info data array using
+ * TMsvEntry and CImHeader information;
+ * the TDes parameters are needed so that the strings
+ * have persisted memory to
+ * live in since the info data elements are all TPtrs
+ */
+ IMPORT_C static void SetMessageInfoDataLCCCCC(
+ TMsgInfoMessageInfoData& aInfoData,
+ CBaseMtm& aMtm,
+ CCoeEnv& aEnv,
+ TDes& dateBuf,
+ TDes& timeBuf,
+ TDes& sizeBuf,
+ TDes& priorityBuf );
+
+ /**
+ * Sets fields in the message info data array using
+ * TMsvEntry and CImHeader information;
+ * the TDes parameters are needed so that the strings have
+ * persisted memory to live in since the info data elements
+ * are all TPtrs.
+ * If entry has ReadStoreL this pushes 4 items to cleanup stack.
+ * If ReadStoreL does not exist then only 2 items are pushed
+ * to cleanup stack
+ */
+ IMPORT_C static TBool SetMessageInfoDataLCC(
+ TMsgInfoMessageInfoData& aInfoData,
+ CBaseMtm& aMtm,
+ CCoeEnv& aEnv,
+ TDes& dateBuf,
+ TDes& timeBuf,
+ TDes& sizeBuf,
+ TDes& priorityBuf );
+
+ /**
+ * Replaces tab and enter characters by spaces using
+ * AknTextUtils::ReplaceCharacters
+ */
+ static void ReplaceCharacters( TDes& aText );
+
+ /**
+ * Disconnect mailbox if it is tried to be
+ * edited when connection is on.
+ * aService is Imap4 or Pop3 service
+ */
+ IMPORT_C static TBool DisconnectMailboxL(
+ const TMsvEntry& aService,
+ CMsvSession& aSession );
+
+ /**
+ * Checks offline mode flag
+ */
+ IMPORT_C static TBool DoOfflineChecksL( TMsvId aService );
+
+ /**
+ * Removes 'Deleted' flag synchronoushly from single entry
+ * @since S60 2.6
+ * @param aBaseMtm: client mtm (Imap4 or Pop3 in this case)
+ * @param aFunctionId: 'remove delete flag' function id
+ * @param aEntryId: id of the entry
+ * @return standard error code
+ */
+ IMPORT_C static TInt RemoveOfflineDeleteL(
+ CBaseMtm& aBaseMtm,
+ TInt aFunctionId,
+ TMsvId aEntryId );
+
+ /**
+ * Function reserve disk space for deletion
+ * @since S60 3.0
+ * @param aFileSession, File session to be used for operation
+ * @param aDriveNo, Drive where the space is needed
+ * @param aSize, Amount of space needed
+ * @return KErrNone, when reservation succesful
+ */
+ IMPORT_C static TInt AcquireDiskSpace(
+ RFs& aFileSession,
+ const TInt aDriveNo,
+ const TInt aSize );
+
+ /**
+ * Sends specified message to mailbox
+ * @since S60 3.0
+ * @param aCommand, Command to be send to mailbox
+ * @param aMailboxId, Mailbox the command is directed to
+ */
+ IMPORT_C static void SendAOCommandL(
+ const TAlwaysOnlineServerAPICommands aCommand,
+ TMsvId aMailboxId );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ static TUint32 MsvId2AccountIdL(
+ CMsvSession& aMsvSession,
+ const TMsvId aMailboxId );
+
+ /**
+ * Creates central repository connection
+ * @since S60 3.0
+ * @param aRepository, Repository object to be created
+ * @param aRepositoryUid, Uid to be used to create the session
+ */
+ static void CreateCenRepConnectionL(
+ CRepository*& aRepository,
+ TUid aRepositoryUid );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ static void StoreSecuritySettings(
+ CImBaseEmailSettings& aSettings,
+ const TIMASMailSecurity& aSecurity );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ static void StoreSecuritySettings(
+ CImBaseEmailSettings& aSettings,
+ const TImumDaSettings::TSecurityValues& aSecurity );
+
+ /**
+ *
+ *
+ * @since S60 v3.2
+ * @param
+ * @return
+ */
+ static TInt RestoreSecuritySettings(
+ const CImBaseEmailSettings& aSettings );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ static TUint32 GetDefaultSecurityPort(
+ const TIMASMailSecurity aSecurity,
+ const TBool aIncoming,
+ const TBool aIsImap4 = EFalse );
+
+
+ /**
+ * Tell to Ncn that there might be new messages to show
+ * @since S60 3.0
+ */
+ IMPORT_C static void CallNewMessagesL( const TMsvId aMailboxId );
+
+ /**
+ * Checks the number of always online boxes
+ * @since S60 3.0
+ */
+ static TBool CheckActiveAOLimitsL(
+ CImumInternalApi& aEmailApi,
+ const TMsvId aMailboxId );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ static TUint32 GetAccountId(
+ const CImumMboxData& aAccountSettings );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ IMPORT_C static void LoadResourceFileL(
+ RConeResourceLoader& aResourceLoader );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ static void GetMailboxName(
+ TDes& aDest,
+ CMsvSession& aMsvSession,
+ TMsvId aMailboxId );
+
+ /**
+ *
+ * @since S60 3.0
+ */
+ IMPORT_C static void CreateConnectingToText(
+ TDes& aDest,
+ CMsvSession& aMsvSession,
+ TMsvId aMailboxId );
+
+
+ /**
+ *
+ * @since S60 3.1
+ */
+ static void CheckAccountNameL(
+ CImumInternalApi& aMailboxApi,
+ TDes& aAccountName,
+ const TMsvId aOwningMailbox,
+ const TBool& aGenerate = EFalse );
+
+ /**
+ * @since S60 5.0
+ * Strips tab and enter characters from text
+ * @param aText, descriptor to operate on
+ */
+ static void StripCharacters( TDes& aText );
+
+
+ private:
+
+ /**
+ *
+ */
+ static HBufC* TurnArrayIntoCommaSeparatedStringLC(
+ CDesCArray& aTextArray );
+
+ /**
+ *
+ * @since S60 3.1
+ */
+ static TInt ContinueRenamingL(
+ CImumInternalApi& aMailboxApi,
+ TInt& aResult,
+ TDes& aAccountName,
+ const TMsvId aOwningMailbox,
+ const TInt aNumber,
+ const CMsvEntry& aAccount,
+ const TBool aGenerate );
+
+ /**
+ *
+ * @since S60 3.1
+ */
+ static TInt ChangeAccountNameL(
+ const TDesC& aOriginalAccountName,
+ TDes& aAccountName,
+ const TInt aNumber );
+
+ /**
+ *
+ * @since S60 3.1
+ */
+ static TBool IsAccountNameUsedL(
+ CImumInternalApi& aMailboxApi,
+ TInt& aResult,
+ const TDesC& aAccountName,
+ const TMsvId aOwningMailbox,
+ const CMsvEntry& aAccount );
+
+ /**
+ *
+ * @since S60 3.2
+ */
+ static void GetPriorityString(
+ const TMsvEntry& aEntry,
+ CCoeEnv& aEnv,
+ TDes& aPriorityBuf );
+ };
+
+#endif
+