/*
* Copyright (c) 2002-2004 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: Can be used to show "Send" list query and to create and send
* messages via available sending services. Created messages are
* sent directly or message editor is opened for editing,
* depending on the type of the selected service.
*
*/
#ifndef CSENDUI_H
#define CSENDUI_H
#include <TSendingCapabilities.h>
// FORWARD DECLARATIONS
class CEikMenuPane;
class CSendUiImpl;
class CMessageData;
class CSendingServiceInfo;
#define KMaxStringLength 1024;
// CLASS DECLARATION
/**
* Offers "Send" pop-up list and message creation and sending services.
*
* Can be used to display "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 Series 60 3.0
*/
class CSendUi : public CBase
{
public: // Constructors and destructor
/**
* Two-phased constructor.
*/
IMPORT_C static CSendUi* NewL();
/**
* Two-phased constructor.
*/
IMPORT_C static CSendUi* NewLC();
/**
* Destructor.
*/
IMPORT_C virtual ~CSendUi();
public: // New functions
/**
* Adds "Send" menu item to menupane.
*
* @since Series 60 3.0
* @param aMenuPane Menupane where the "Send" menu item should be added.
* @param aIndex The place of the "Send" menu item in menupane.
* @param aCommandId Command id for the "Send" 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.
*/
IMPORT_C void AddSendMenuItemL(
CEikMenuPane& aMenuPane,
TInt aIndex,
TInt aCommandId,
TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices );
/**
* First displays "Send" pop-up 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.
*
* "Send" pop-up 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.
* Eg. If oversized file is intended to send, MMS is filtered away from
* "Send" pop-up list.
*
* 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 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 aBioTypeUid BIO message type uid. Deprecated.
* @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 "Send" pop-up list query. If no title
* is defined, then the localised default title "Send:" is used.
* @return None.
*/
IMPORT_C void ShowQueryAndSendL(
const CMessageData* aMessageData,
TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices,
CArrayFix<TUid>* aServicesToDim = NULL,
TUid aBioTypeUid = KNullUid,
TBool aLaunchEditorEmbedded = ETrue,
const TDesC& aTitleText = KNullDesC );
/**
* Displays "Send" pop-up list query and returns the user selection.
*
* "Send" pop-up 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.
* Eg. If oversized file is intended to send, MMS is filtered away from
* "Send" pop-up list.
*
* 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 aMessageData Data for the message. Attachments are used for
* content based filtering.
* @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 aTitleText Title of the "Send" pop-up list query. If no title
* is defined, then the localised default title "Send:" is used.
* @return Uid of the selected service (MTM or ECom).
* KNullId is returned if user selects cancel.
*/
IMPORT_C TUid ShowSendQueryL(
const CMessageData* aMessageData = NULL,
TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices,
CArrayFix<TUid>* 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.0
* @param aServiceUid Uid of the sending service (MTM or ECom).
* @param aMessageData Data for the message.
* @param aBioTypeUid BIO message type uid. Deprecated.
* @param aLaunchEditorEmbedded ETrue if the editor should be launched
* embedded. Otherwise the editor is launched stand-alone.
* Note: some sending services sends the messages without
* launching the editor at all.
* @return None.
*/
IMPORT_C void CreateAndSendMessageL(
TUid aServiceUid,
const CMessageData* aMessageData,
TUid aBioTypeUid = KNullUid,
TBool aLaunchEditorEmbedded = ETrue );
/**
* Validates that service is available and has required capabilities.
* For ex. can be used when calling application creates its own "Send"
* menu.
* @since Series 60 3.0
* @param aServiceUid Uid of the sending service (MTM or ECom).
* @param aRequiredCapabilities Capabilities required for the sending
* service.
* @return ETrue if service is available and it has required
* capabilities,otherwise EFalse.
*/
IMPORT_C TBool ValidateServiceL(
TUid aServiceUid,
TSendingCapabilities aRequiredCapabilities );
/**
* Returns sending capabilities of the sending service.
* @since Series 60 3.0
* @param aServiceUid Uid of the sending service (MTM or ECom).
* @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.
*/
IMPORT_C TInt ServiceCapabilitiesL(
TUid aServiceUid,
TSendingCapabilities& aServiceCapabilities );
/**
* Can be used to check if sending of bio message is supported. Deprecated.
* @since Series 60 3.0
* @param aBioMessageUid Uid of the bio message.
* @return: Returns always EFalse
*/
IMPORT_C TBool CanSendBioMessage( TUid aBioMessageUid ) const;
/**
* 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
*/
IMPORT_C void AvailableServicesL(
RPointerArray<CSendingServiceInfo>& aServiceList,
TUid aServiceProvider = KNullUid);
// Menu type enumeration
enum TSendUiMenuType
{
ESendMenu,
EWriteMenu
};
/**
* Adds menu item of given type to menupane.
*
* @since Series 60 3.0
* @param aMenuType Type of the menu, "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 from services to be
* shown in list query. If no capabilities are required
* (KCapabilitiesForAllServices), all available services are
* shown in list query.
* @return None.
*/
IMPORT_C void AddTypedMenuItemL(
TSendUiMenuType aMenuType,
CEikMenuPane& aMenuPane,
TInt aIndex,
TInt aCommandId,
TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices );
/**
* Displays list query and creates message.
* See ShowQueryAndSendL.
*
* @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 aBioTypeUid BIO message type uid. Deprecated.
* @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.
*/
IMPORT_C void ShowTypedQueryAndSendL(
TSendUiMenuType aMenuType,
const CMessageData* aMessageData,
TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices,
CArrayFix<TUid>* aServicesToDim = NULL,
TUid aBioTypeUid = KNullUid,
TBool aLaunchEditorEmbedded = ETrue,
const TDesC& aTitleText = KNullDesC );
/**
* Displays list query and returns the user selection.
* See ShowSendQueryL.
*
* @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.
*/
IMPORT_C TUid ShowTypedQueryL(
TSendUiMenuType aMenuType,
const CMessageData* aMessageData = NULL,
TSendingCapabilities aRequiredCapabilities = KCapabilitiesForAllServices,
CArrayFix<TUid>* aServicesToDim = NULL,
const TDesC& aTitleText = KNullDesC );
/**
* 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.
*/
IMPORT_C TUid TechnologyType( TUid aServiceUid ) const;
private:
/**
* C++ default constructor.
*/
CSendUi();
/**
* By default Symbian 2nd phase constructor is private.
*/
void ConstructL();
private: // Data
// SendUi API implmentation. Owned.
CSendUiImpl* iSendUiImpl;
};
#endif // CSENDUI_H
// End of File