diff -r ebe688cedc25 -r 7fdbb852d323 messagingappbase/sendui/genericmtmplugin/inc/genericmtmplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/sendui/genericmtmplugin/inc/genericmtmplugin.h Wed Sep 01 12:31:54 2010 +0100 @@ -0,0 +1,434 @@ +/* +* Copyright (c) 2002-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: This class offers single ECOM interface to all SendUi MTM plugins. +* +*/ + + + + +#ifndef C_GENERICMTMPLUGIN_H +#define C_GENERICMTMPLUGIN_H + + +#include +#include +#include +#include +#include + +#include +#include + +class CSendingServiceInfo; +class CMessageData; +class CClientMtmRegistry; +class TSendingCapabilities; +class CAknContextPane; +class CAknWaitDialog; +class CBaseMtmUi; +class CBioMsgBlacklist; +class CBaseMtmUiData; +class CMtmUiDataRegistry; +class CMtmUiRegistry; +class CSendUiAttachment; +class CSendUiSingleton; + +/** + * Offers single ECOM interface to all SendUi MTM plugins. + * + * @lib genericmtmplugin + * @since S60 S60 v3.2 + */ +NONSHARABLE_CLASS( CGenericMtmPlugin ) : public CSendingService, + public MRichTextStoreResolver + { + +public: + + static CGenericMtmPlugin* NewL( TSendingServiceParams* aParams ); + + virtual ~CGenericMtmPlugin(); + + /** + * Initializes sending. + * + * @since S60 v.3.2 + * @return None. + */ + TBool InitializeSendingL(); + +// from base class CSendingService + + /** + * From CSendingService + * Populates given list with the provided services. + * + * @since Series 60 v3.2 + * @param aList Service list to be populated. + * @return None + */ + void PopulateServicesListL( RPointerArray& aList ); + + /** + * From CSendingService + * Creates and sends message via selected MTM + * + * @since Series 60 v3.2 + * @param aServiceUid Uid of the sending service. + * @param aMessageData Data for the message. + * @param aLaunchEditorEmbedded True, if editor is to be launched embedded + */ + void CreateAndSendMessageL( + TUid aMtmUid, + const CMessageData* aMessageData, + TBool aLaunchEditorEmbedded ); + + /** + * From CSendingService + * Returns the id of the service provider. + * + * @since Series 60 3.0 + * @return Id of the service provider. + */ + TUid ServiceProviderId() const; + + +private: + + CGenericMtmPlugin( CCoeEnv& aCoeEnv, CSendUiSingleton& aSingleton ); + + void ConstructL( ); + +// from base class MRichTextResolver + + /** + * Returns pointer to stream store + * + * @since Series 60 v3.2 + * @param Not used. + */ + const CStreamStore& StreamStoreL(TInt) const; + + +// New functions +private: + + /** + * Start syncronous MTM scanning process + * + * @since Series 60 3.0 + */ + void ScanMtmsL( RPointerArray& aList ); + + + /** + * Validates attachments + * + * Checks relevant validity information depended on the file type and + * sending service. Possible checks are file integrity, MMS and DRM + * validity checks + * + * @since Series 60 2.8 + * @param aMtmUid Chosen sending service + * @param aMessageData Message data + * @param aValidAttachmentPaths Array of file paths + * @param aValidAttachments Array of open file handles + * @return ETrue, if all attachments are valid or user has accepted sending + * possibly corrupted files or files that receiver cannot open. + */ + TBool ValidateAttachmentsL( + TUid aMtmUid, + CBaseMtmUiData& aMtmUiData, + CArrayPtrFlat* aAttachments ); + + /** + * Determines if a wait note is needed + * + * If there are attachments or body text, then wait note is required. + * + * @since Series 60 2.8 + * @param aMtmUid Chosen sending service + * @param aMessageData Message data + * @param aAttachmentCount Number of attachments including file paths and file handles + * @return ETrue, if note required. Otherwise EFalse. + */ + TBool IsWaitNoteNeededL( + TUid aMtmUid , + const CMessageData& aMessageData, + TInt aAttachmentCount ); + + /** + * Shows wait note + * + * @since Series 60 2.8 + */ + void ShowWaitNoteLC(); + + /** + * Resets sending state of SendUi by cleaning the cleanupitem + * + * @since Series 60 2.8 + * @param aAny Sending state + * @return EFalse Sending state + */ + static void ResetIsSending(TAny* aAny); + + /** + * Destroys wait dialog. + * + * Called from CleanupStack. + * + * @since Series 60 2.8 + * @param aAny CAknWaitDialog pointer + */ + static void CleanupWaitDialog(TAny* aAny); + void CreateMessageL( TUid& aMtmUid, + TMsvId aService ); + + /** + * Creates message + * + * Validates the given MTM and creates a message to the MTM + * + * @since Series 60 2.8 + * @param aMtmUid Chosen sending service + * @param aLaunchEmbedded ETrue, if editor is to be launched embedded + */ + TBool CreateMessageL( + TUid& aMtmUid, + TBool& aLaunchEmbedded ); + + /** + * Sets recipients + * + * @since Series 60 2.8 + * @param aMtmUid Selected MTM + * @param aMessageData Message data + */ + void SetRecipientsL( + TUid aMtmUid, + const CMessageData& aMessageData ); + + /** + * Adds addressees + * + * @since Series 60 2.8 + * @param aRecipientType Type of message: To,Cc,Bcc + * @param aAddressees Address data + */ + void AddAddresseesL( + TMsvRecipientType aRecipientType, + const CMessageAddressArray& aAddressees ); + + /** + * Inserts multiple attachments to sending MTM + * + * @since Series 60 2.8 + * @param aMtmUid Chosen sending service + * @param aAttaFilePaths Attachment path array + * @param aAttaFileHandles Attachment file handle array + * @return EFalse, if attachment addition was not successful. Normally ETrue. + */ + TBool AddAttachmentsL( + CBaseMtmUiData& aMtmUiData, + CArrayPtrFlat* aAttachments ); + + /** + * Inserts one attachment to sending MTM + * + * @since Series 60 2.8 + * @param aAttachment Attachment file path + * @return EFalse, if attachment addition was not successful. Normally ETrue. + */ + TBool AddAttachmentL( CSendUiAttachment* aAttachment, TInt aSupportsLinks ); + + /** + * Sets body text of the message to MTM + * + * @since Series 60 2.8 + * @param aMessageData Message data containing body text + */ + void SetBodyL( + const CBaseMtmUiData& aMtmUiData, + const CMessageData& aMessageData, + CArrayPtrFlat* aAttachments ); + + /** + * Launches editor + * + * @since Series 60 v3.2 + * @param aTempFileName Name of a temporary file + */ + void LaunchEditorL( + TInt aAttachmentCount, + TBool aLaunchEditorEmbedded ); + + /** + * Returns default Email service + * + * Leaves without error note, if email service cannot be found even after running email + * setup wizard. + * + * @param aServiceId Default Email service + * @since Series 60 v3.2 + */ + TMsvId EmailDefaultServiceL(); + + /** + * Removes illegal characters. + * + * Removes < and > characters. + * + * @since Series 60 v2.8 + */ + void RemoveIllegalChars( TPtr& aCheckedString); + + /** + * Check for feature support + * + * Relevant feature support flags are temporary saved from FeatureManager + * during object construction + * + * @since Series 60 v2.8 + */ + TBool IsSupported( const TUint& aFeature ); + + /** + * Check for ongoing call + * + * @since Series 60 v2.8 + * @param aPhoneNumberString Returns the number of the caller + * @param aName Returns the name of the caller + * @return ETrue, if call is going + */ + TBool IsCallOngoing( + TDes& aPhoneNumberString, + TDes& aName ); + + /** + * Sends files over Bluetooth + * + * @since Series 60 v2.8 + * @param aAttaFilePaths Filepaths to be send + * @param aAttaFileHandles Filehandles to be send + */ + void SendBtMessageL( CArrayPtrFlat* aAttachments ); + + /** + * Calls MTM UI to validate service function + * + * @since Series 60 v3.1 + * @return ETrue, if service is valid + */ + TBool IsValidServiceL( ); + + /** + * Validates MTM + * + * Checks if service supports validation and validates the service if it does. + * + * @since Series 60 v3.2 + * @param aMtmUid Service identification + * @return ETrue, if service is valid or does not support validation. + */ + TBool ValidateMtmL( ); + + /** + * Retrieve and validate a service + * + * @since Series 60 v3.2 + * @param aMtmUid Service identification + * @return TMsvId Id of a found service + KMsvUnknownServiceIndexEntryId if no valid service found. + */ + TMsvId GetAndValidateServiceL( + TUid& aMtmUid, + TBool aLaunchEmbedded, + TBool& aContinue ); + + /** + * Validates an account + * + * @since Series 60 v3.2 + * @param aMtmUiData Reference to Mtm ui data + * @param aMtmUid Service identification + */ + TBool ValidateAccountL( CBaseMtmUiData& aMtmUiData, TUid aMtmUid ); + + void LoadMtmL( + TUid aMtmType, + RPointerArray& aList ); + + void GetMtmSendingCapabilitiesL( CBaseMtmUiData& mtmUiData, TSendingCapabilities& cap ); + + static TBool IsPostcardContactLink( const CArrayPtrFlat* aAttachments); + +private: // data + + /** + * Stores locally required feature flags from FeatureManager. + */ + TUint iSendUiFeatureFlags; + + /** + * Contains pointers to the data of the services provided by this plugin. + * Pointed service data objects are owned. + */ + RPointerArray iServiceArray; + + /** + * Temporary stream store + * Own. + */ + CStreamStore* iStore; + + /** + * Selected MTM sending service + * Own. + */ + CBaseMtm* iClientMtm; + + /** + * Selected MTM sending service UI + * Own. + */ + CBaseMtmUi* iMtmUi; + + /** + * Waitdialog + * + * Note. This is destroyed using CleanupStack. + * Own. + */ + CAknWaitDialog* iWaitDialog; + + /** + * The required capabilities for the sending service + */ + TSendingCapabilities iRequiredCapabilities; + + /** + * Index entry at the Message Server + */ + TMsvEntry iIndexEntry; + + /** + * Sending state + */ + TBool iIsSending; + + }; + +#endif // C_GENERICMTMPLUGIN_H