diff -r d2c4c66342f3 -r d51193d814ea messagingfw/deprecate/senduiservices/inc/SendUiImpl.h --- a/messagingfw/deprecate/senduiservices/inc/SendUiImpl.h Tue Aug 31 15:41:11 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,473 +0,0 @@ -/* -* 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: SendUI API implementation -* -*/ - - - - - -#ifndef C_CSENDUIIMPL_H -#define C_CSENDUIIMPL_H - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -class CEikMenuPane; -class CSendNormalUi; -class CMessageData; -class CSendingServiceManager; -class CSendingServiceInfo; -class RSendUiServiceClient; -class CPropertyObserver; -class TDataType; -class CSendUiSingleton; - -/** - * Implementation of SendUI API - * - * Can be used to show "Send" list query and to create and send - * messages via available services. Sending services can be based - * on the MTM or ECom architecture. Created messages are sent - * directly or message editor is opened for editing, depending on - * the type of selected service. - * @lib sendui.lib - * @since S60 v3.0 - */ -class CSendUiImpl : public CBase - { - friend class UT_CSendUiImpl; -public: - - static CSendUiImpl* NewL(); - - virtual ~CSendUiImpl(); - -public: - - /** - * Adds menu item of given type to menupane. - * - * @since Series 60 3.0 - * @param aMenuType Type of the menu, e.g. "ESendMenu" or "EWriteMenu" - * @param aMenuPane Menupane where the menu item should be added. - * @param aIndex The place of the menu item in menupane. - * @param aCommandId Command id for the menu item. - * @param aRequiredCapabilities Capabilities required by services to be - * shown in "Send" list query. If no capabilities are required - * (KCapabilitiesForAllServices), all available services are - * shown in "Send" list query. - * @return None. - */ - void AddTypedMenuItemL( - CSendUi::TSendUiMenuType aMenuType, - CEikMenuPane& aMenuPane, - TInt aIndex, - TInt aCommandId, - TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices ); - - /** - * First displays list query and then creates the message. - * Editor is launched for editing the message or the message is sent - * directly without opening the editor. Functionality depends on the - * type of selected service. - * - * List query can be manipulated in three ways. All three methods can be - * used or just some of those. - * - * The first option is to set the required capabilities for services. - * Eg. attachments supported. Sending services not matching to required - * capabilities are filtered away. Capabilities are defined in - * TSendingCapabilities.h. - * - * The second option is content based filtering. Filtering is based on - * the files intended to send. Those files can be set as part of message - * data. Filtering is done according the predefined rules. - * - * The third option is to set the array of service uids not wanted to - * be shown in list query. Uid can be the technology type, service provider or - * service id. These sending services are filtered away - * even if those match to required capabilities. - * - * @since Series 60 3.0 - * @param aMenuType Type of the menu, e.g. "ESendMenu" or "EWriteMenu" - * @param aMessageData Data for the message. - * @param aRequiredCapabilities Capabilities required by sending services - * to be shown in "Send" pop-up list query. If no capabilities are - * required (KCapabilitiesForAllServices), all available services - * are shown in "Send" pop-up list query. - * @param aServicesToDim Array of service uids (service uid, service - * provider's uid or service's TechnologyType) _NOT_ wanted to "Send" - * list query. - * See predefined sending service uids in SendUiConsts.h . - * @param aLaunchEditorEmbedded ETrue if the editor should be launched - * embedded. Otherwise the editor is launched stand-alone. - * Note: some services sends the messages without launching the - * editor at all. - * @param aTitleText Title of the list query. If no title is defined, - * then the localised default title is used, e.g. "Send" or - * "Write". - * @return None. - */ - void ShowTypedQueryAndSendL( - CSendUi::TSendUiMenuType aMenuType, - const CMessageData* aMessageData, - TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices, - CArrayFix* aServicesToDim = NULL, - TBool aLaunchEditorEmbedded = ETrue, - const TDesC& aTitleText = KNullDesC ); - - /** - * Displays list query and returns the user selection. - * - * List query can be manipulated in three ways. All three methods can be - * used or just some of those. - * - * The first option is to set the required capabilities for services. - * Eg. attachments supported. Sending services not matching to required - * capabilities are filtered away. Capabilities are defined in - * TSendingCapabilities.h. - * - * The second option is content based filtering. Filtering is based on - * the files intended to send. Those files can be set as part of message - * data. Filtering is done according the predefined rules. - * - * The third option is to set the array of service uids not wanted to - * be shown in list query. These sending services are filtered away - * even if those match to required capabilities. - * - * @since Series 60 3.0 - * @param aMenuType Type of the menu, e.g. "ESendMenu" or "EWriteMenu" - * @param aMessageData Data for the message. Attachments are used for - * content based filtering. - * @param aRequiredCapabilities Capabilities required by sending services - * to be shown in list query. If no capabilities are required - * (KCapabilitiesForAllServices), all available services are - * shown in list query. - * @param aServicesToDim Array of service uids (service uid, service - * provider's uid or service's TechnologyType) _NOT_ wanted to "Send" - * list query. - * See predefined sending service uids in SendUiConsts.h . - * @param aTitleText Title of the list query. If no title is defined, - * then the localised default title is used, e.g. "Send" or - * "Write" - * @return Uid of the selected service (MTM or ECom). - * KNullId is returned if user selects cancel. - */ - TUid ShowTypedQueryL( - CSendUi::TSendUiMenuType aMenuType, - const CMessageData* aMessageData = NULL, - TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices, - CArrayFix* aServicesToDim = NULL, - const TDesC& aTitleText = KNullDesC ); - - /** - * Creates the message and launches the editor for editing the message - * or sends the message directly without opening the editor. - * Functionality depends on the type of selected service. - * - * @since Series 60 3.2 - * @param aServiceUid Uid of the sending service. - * @param aMessageData Data for the message. - * @return None. - */ - TInt SendMessageL( - TUid aServiceUid, - const CMessageData* aMessageData, - TBool aLaunchEditorEmbedded ); - - /** - * Launches server application, which will eventually call SendMessageL - * with the same parameters. - * - * @since Series 60 3.2 - * @param aServiceUid Uid of the sending service. - * @param aMessageData Data for the message. - * @return None. - */ - void SendMessageViaServerL( - TUid aServiceUid, - const CMessageData* aMessageData, - TBool aLaunchEditorEmbedded ); - /** - * Creates the message and launches the editor for editing the message - * or sends the message directly without opening the editor. - * Functionality depends on the type of selected service. - * - * @since Series 60 3.0 - * @param aServiceUid Uid of the sending service. - * @param aMessageData Data for the message. - * @return None. - */ - void CreateAndSendMessageL( - TUid aServiceUid, - const CMessageData* aMessageData, - TBool aLaunchEditorEmbedded = ETrue ); - - /** - * Returns sending capabilities of the sending service. - * @since Series 60 3.0 - * @param aServiceUid Uid of the sending service. - * @param aServiceCapabilities TSendingCapabilities of the sending - * service as a return value. - * @return Return KErrNone if successful, or one of the system wide - * errors if unsuccessful. - */ - TInt ServiceCapabilities( - TUid aServiceUid, - TSendingCapabilities& aServiceCapabilities ); - - /** - * Populates given list with the information about services - * provided by specified ECom service provider. - * Each service provider can provide 1..n services. - * Ownership of the pointed objects are transfered to caller. - * - * Can be used for ex. when creating own "Send" menu, which needs to - * include ECom based services. - * - * NOTE: Can be used only for ECom based services, also for MTMs - * - * @since Series 60 2.8 - * @param aServiceList Service list to be populated. - * @param aServiceProvider Id of the specified service provider. - * KNullId means all service providers. - * Service providers are defined in SendUiConsts.h - * @return none - */ - void AvailableServicesL( - RPointerArray& aServiceList, - TUid aServiceProvider = KNullUid); - - /** - * Returns the technology type of a service - * - * @since Series 60 3.0 - * @param aServiceId Service of interest - * @return Technology type of the provided service. NULL if Mtm - * service doesn't exist or service is ECOM based. - */ - TUid TechnologyType( TUid aServiceUid ); - - /** - * Returns the index of the service in service array - * - * @since Series 60 3.2 - * @param aServiceId Service of interest - * @return Index of a found service. Otherwise KErrNotFound. - */ - TInt ResolveServiceIndex( TUid aUid ); - - /** - * Compares service capabilities with the required capabilities - * - * @since S60 v3.2 - * @param aServiceIndex Index of the service - * @param aRequiredCapabilities Required capabilities - * @return ETrue, if service has required or more capabilities. - * EFalse, if service does not have the required capabilities - * or service does not exist. - */ - TBool QueryCapabilities( - TInt aServiceIndex, - TSendingCapabilities aCap ); - - /** - * Copies sending service information from Central Repository to local data - * - * @since S60 v3.2 - */ - void GetServicesL( ); - -private: - - - /** - * - * @since Series 60 3.0 - * @param aListItems - * @param aTitleText Title of the pop-up list query. If no title - * is defined, then the localised default title is used. - * @return: User selection. - */ - TUid ShowListQueryL( - MDesCArray* aListItems, - const CArrayFix& aListItemUids, - const TDesC& aTitleText, - CSendUi::TSendUiMenuType aMenuType ); - - /** - * Filtering services by their content - * - * @since Series 60 3.0 - * @param aServiceUid - * @param aServiceProviderUid - * @param aMessageData Message data, which is base of the content filtering. - * @param aMimeType The mimetype of the first attachment. - * @return: True, if given service can send specified content - */ - TBool CanSendContentL( - TUid aServiceUid, - TUid aServiceProviderUid, - const CMessageData* aMessageData, - TDataType* aMimeType ); - - /** - * - * @since Series 60 3.0 - * @param aListItemUids - * @param aListItemUids - * @param aRequiredCapabilities - * @param aContentArray - * @param aServicesToDim - * @return: None. - */ - void FilterServicesL( - CDesCArrayFlat& aListItems, - CArrayFix& aListItemUids, - TSendingCapabilities aRequiredCapabilities, - const CMessageData* aMessageData, - CSendUi::TSendUiMenuType aMenuType ); - - /** - * Sorts service lists - * - * @since S60 v3.0 - * @param aListItems Names of items in array - * @param aListItemUids Uids of items in array - * @return: Sorted array - */ - void SortListL( - CDesCArrayFlat& aListItems, - CArrayFix& aListItemUids ); - - /** - * Resets sending state flag. - * @since Series 60 3.0 - * @return None. - */ - static void ResetIsSending( TAny* aAny ); - - /** - * Compares ECom service sending capabilities to required capabilities. - * @since Series 60 3.0 - * @param aServiceUid Uid of the sending service. - * @param aRequiredCapabilities Capabilities required for the sending - * service. - * @return: ETrue if service sending capabilities matches to - * required capabilities, otherwise EFalse. - */ - TBool CheckServiceCapabilities( - TUid aServiceUid, - TSendingCapabilities aRequiredCapabilities ); - - /** - * Checks if the feature is supported by feature manager. - * @since Series 60 3.2.3 - * @param aFeature Feature manager id of the sending service. - * @param aNewFeatures To keep track of which feature is modified - * @param aFeatureFlag Uid of the sending service used for central repository storage. - * @return None - */ - void FeatureStatus( - TInt aFeature, - TInt &aNewFeatures, - TInt aFeatureFlag ); -private: - - CSendUiImpl(); - - void ConstructL(); - -private: // data - - /** - * Pointer to Control environment - * Not own. - */ - CCoeEnv* iCoeEnv; - - /** - * Pointer to File Server Session. Initialized from CCoeEnv->FsSession. - * Not own. - */ - RFs& iFs; - - /** - * Pointer to CSendUiSingleton - * Own. - */ - CSendUiSingleton* iSingleton; - - /** - * Indicates whether or not the sending process is in progress. - */ - TBool iIsSending; - - /** - * For UI resource loading - * Own. - */ - RConeResourceLoader iResourceLoader; - - /** - * Services to be dimmed - * Own. - */ - CArrayFixFlat* iServicesToDim; - - /** - * Resource file name and path. - * Own. - */ - TFileName iResourceFileName; - - - TBool iEmailClientIntegration; - /** - * Array of available sending service - * Own. - */ - RPointerArray iSendingServices; - - /** - * IPC client with SendUiLauncherApp - * Own. - */ - RSendUiServiceClient* iSendUiClient; - - /** - * The requested order of sending services in the menu. - * Read from resources. - * Own. - */ - CArrayFixFlat* iSendUiServicesOrderArray; - - TBool iServerAppLaunch; - - CPropertyObserver* iPropertyObserver; - - }; - -#endif // C_CSENDUIIMPL_H