--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/smsmtm/clientmtm/inc/SMUTSET.H Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,761 @@
+// Copyright (c) 1999-2009 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:
+// SMUTSET.H
+//
+/**
+ * @file
+ * @publishedAll
+ * @released
+ */
+#ifndef __SMUTSET_H__
+#define __SMUTSET_H__
+
+#include <gsmumsg.h>
+#include <msvrcpt.h>
+#include <msvstore.h>
+#include <logwrap.h>
+
+class CSmsServiceCenter;
+class CSmsEmailFields;
+
+// Both the recipient's number and SC number (TP-Destination-Address and RP-Destination-Address)
+// can be 12 octets which means that there can be 21 characters (including + sign) in the number string.
+
+/**
+The maximum length of recipient's number.
+
+The number returned by CSmsNumber::Address() and CSmsServiceCenter::Address() is limited this maximum length.
+
+@see CSmsNumber::Address
+@see CSmsServiceCenter::Address
+
+@publishedAll
+@released
+*/
+const TInt KSmcmSmsNumberMaxNumberLength = 21;
+
+/**
+The maximum length of recipient's name.
+
+The number returned by CSmsNumber::Name() and CSmsServiceCenter::Name() is limited this maximum length.
+
+@see CSmsNumber::Name
+@see CSmsServiceCenter::Name
+
+@publishedAll
+@released
+*/
+const TInt KSmcmSmsNumberMaxNameLength = 256;
+
+/**
+Defines the possible forms in which an SMS message should be delivered to the
+recipient by the service centre.
+
+The specified format may or may not actually be supported by the service centre.
+Note that the format of the recipient address(es) may need to be different
+to a normal telephone number if the conversion is set to any other value than
+ESmsConvPIDNone, ESmsConvFax, ESmsConvPaging or ESmsConvErmes.
+
+@publishedAll
+@released
+*/
+enum TSmsPIDConversion
+ {
+/**
+No conversion (i.e. use SMS itself).
+*/
+ ESmsConvPIDNone = TSmsProtocolIdentifier::ESmsNoTelematicDevice,
+/**
+Convert to fax.
+*/
+ ESmsConvFax = TSmsProtocolIdentifier::ESmsGroup3TeleFax,
+/**
+Convert to X.400.
+*/
+ ESmsConvX400 = TSmsProtocolIdentifier::ESmsX400MessageHandlingSystem,
+/**
+Convert to pager message.
+*/
+ ESmsConvPaging = TSmsProtocolIdentifier::ESmsNationalPagingSystem,
+/**
+Convert to Internet email.
+*/
+ ESmsConvMail = TSmsProtocolIdentifier::ESmsInternetElectronicMail,
+/**
+Convert to ERMES paging.
+*/
+ ESmsConvErmes = TSmsProtocolIdentifier::ESmsERMES,
+/**
+Convert to sppech.
+*/
+ ESmsConvSpeech = TSmsProtocolIdentifier::ESmsVoiceTelephone
+ };
+
+/**
+Defines the set of possible validity periods for mobile originated messages.
+
+Mobile originated messages have a PDU type of SMS-SUBMIT.
+
+@publishedAll
+@released
+*/
+enum TSmcmValidityPeriod
+ {
+/**
+Validity period of an hour.
+*/
+ ESmsVPHour = TSmsValidityPeriod::EHalfHourUnitInMinutes*2,
+/**
+Validity period of six hours.
+*/
+ ESmsVPSixHours = TSmsValidityPeriod::EHalfHourUnitInMinutes*12,
+/**
+Validity period of 24 hours.
+*/
+ ESmsVP24Hours = TSmsValidityPeriod::EOneDayUnitInMinutes,
+/**
+Validity period of a week.
+*/
+ ESmsVPWeek = TSmsValidityPeriod::EOneWeekUnitInMinutes,
+/**
+The maximum validity period - currently set as 63 weeks.
+*/
+ ESmsVPMaximum = TSmsValidityPeriod::EOneWeekUnitInMinutes*63,
+/**
+An enum that specifies that a validity period is not supported.
+*/
+ ESmsVPNotSupported = KErrNotSupported,
+/**
+The default validy period - currently set to a week.
+*/
+ ESmsVPDefault = ESmsVPWeek
+ };
+
+/**
+Defines options for the preferred default sending schedule type of a new message
+created using the SMS client MTM.
+
+The option has no direct effect on the SMS MTM. When it is sending an SMS
+message it automatically appends other SMS messages in the outbox whose send
+states are marked as KMsvSendStatewaiting or KMsvSendSateUnknown.
+
+Therefore it is the responsibility of the messaging client to set the correct
+send state of new SMS messages correctly given the preferred sending schedule.
+
+@publishedAll
+@released
+*/
+enum TSmsDelivery
+ {
+/**
+Send message immediately. The message send state should be set to KMsvSendStateWaiting.
+*/
+ ESmsDeliveryImmediately,
+/**
+Send message when client requests. The message send state should be set to KMsvSendStateUponRequest.
+*/
+ ESmsDeliveryUponRequest,
+/**
+Send message at scheduled time. The message send state should be set to KMsvSendStateScheduled.
+*/
+ ESmsDeliveryScheduled
+ };
+
+/**
+Defines the flags and masks for some of the message settings.
+
+The settings classes CSmsMessageSettings and CSmsSettings use these flags to
+store the specified information.
+
+@publishedAll
+@released
+*/
+enum TSmsSettingsFlags
+ {
+/**
+Mask that resets the flags.
+*/
+ ESmsSettingsNoFlags =0x00000000,
+/**
+Flag that indicates if messages can be concatenated.
+
+If true, the UI should pass a long message in one piece to the MTM. If false,
+it should split the message manually into 140 byte parts. The value of this
+flag does not affect the behaviour of the SMS MTM.
+*/
+ ESmsSettingsCanConcatenate =0x00000001,
+/**
+Flag that indicates whether the original message should be included in relpy
+messages.
+
+If true, the received message should be quoted at the beginning of the reply
+message. If false, reply messages should be initially empty.
+*/
+ ESmsSettingsReplyQuoted =0x00000002,
+/**
+Flag that indicates whether duplicate messages should be rejected.
+*/
+ ESmsSettingsRejectDuplicate =0x00000004,
+/**
+Flag that indicates if a status report (TP-SRR in GSM spec 03.40) should be
+requested from the Service Centre.
+*/
+ ESmsSettingsDeliveryReport =0x00000008,
+/**
+Flag that indicates if the reply path (Service Centre address) should be included
+in the delivered message (TP-RP in GSM spec 03.40).
+*/
+ ESmsSettingsReplyPathRequested =0x00000010,
+/**
+Flag that indicates if a status report (TP-SRR in GSM spec 03.40) for the last segment
+should be requested from the Service Centre.
+*/
+ ESmsSettingsLastSegmentDeliveryReport =0x00000020 ,
+
+/**
+Flag that indicates if a status report (TP-SRR in GSM spec 03.40) for the last segment
+is not requested from the Service Centre.
+*/
+ ENoSmsSettingsLastSegmentDeliveryReport =0x00000040,
+/**
+Flag that indicates that the service center time stamp should be used for the date
+field in any TMsvEntry that corresponds to a SMS message.
+*/
+ ESmsSettingsUseServiceCenterTimeStamp =0x00000080,
+/**
+Flag that indicates if message received from unknown port,
+discard the message without indicating the user.
+*/
+ ESmsSettingsDiscardUnknownPortMsgs =0x00000100,
+/**
+Mask for the set of flags defined.
+*/
+ ESmsSettingsMask =0x000000FF,
+ };
+
+
+/**
+Defines the types of acknowledgements that can be received from recipients.
+*/
+enum TSmsAckType
+ {
+/**
+Acknowlwdgement of delivery to a recipient.
+*/
+ ESmsAckTypeDelivery =0
+ };
+
+/**
+Progress information for SMS MTM operations.
+
+This information is returned by CMsvOperation::ProgressL() in a TSmsProgressBuf
+package.
+
+@see CMsvOperation::ProgressL
+
+@publishedAll
+@released
+*/
+class TSmsProgress
+ {
+public:
+/**
+Defines type of operation for which progress information is being given.
+
+These types correspond to the commands defined in TSmsMtmCommand.
+
+@see TSmsMtmCommand
+*/
+ enum TSmsProgressType
+ {
+/**
+The default operation type - no operation.
+*/
+ ESmsProgressTypeDefault,
+/**
+Reading SIM parameters.
+
+Pre v7.0, this was named ESmsProgressTypeReadingServiceCenterAddress.
+*/
+ ESmsProgressTypeReadSimParams,
+/**
+Writing SIM parameters.
+
+Pre v7.0 this was named ESmsProgressTypeWritingServiceCenterAddress.
+*/
+ ESmsProgressTypeWriteSimParams,
+/**
+Sending messages.
+*/
+ ESmsProgressTypeSending,
+/**
+Scheduling sending messages.
+*/
+ ESmsProgressTypeScheduling,
+/**
+Enumerating phone stores.
+
+Pre v7.0, this was named ESmsProgressTypeEnumeratingSim.
+*/
+ ESmsProgressTypeEnumeratingPhoneStores,
+/**
+Copying messages from phone stores.
+
+Pre v7.0, this was named ESmsProgressTypeCopyFromSim.
+*/
+ ESmsProgressTypeCopyFromPhoneStore,
+/**
+Moving messages from phone stores.
+
+Pre v7.0, this was named ESmsProgressTypeMoveFromSim.
+*/
+ ESmsProgressTypeMoveFromPhoneStore,
+/**
+Deleting messages from phone stores.
+
+Pre v7.0, this was named ESmsProgressTypeDeleteFromSim.
+*/
+ ESmsProgressTypeDeleteFromPhoneStore,
+/**
+Removing all messages from the task scheduler list.
+*/
+ ESmsProgressTypeDeleteSchedule,
+/**
+Checking the current scheduled status of the messages.
+*/
+ ESmsProgressTypeCheckSchedule,
+/**
+Recursively deleting messages.
+*/
+ ESmsProgressTypeDeleteAll,
+/**
+Copying messages to a phone store.
+
+Pre v7.0, this was named ESmsProgressTypeCopyToSim.
+*/
+ ESmsProgressTypeCopyToPhoneStore,
+/**
+Moving messages to a phone store.
+
+Pre v7.0, this was named ESmsProgressTypeMoveToSim.
+*/
+ ESmsProgressTypeMoveToPhoneStore,
+/**
+Moving message entries.
+
+This is the second part of ESmsProgressTypeMoveFromPhoneStore. The first part
+deletes the messages from the phone storageSIM. This second part moves the
+messages from the folder that represents the phone storage to the specified
+destination.
+*/
+ ESmsProgressTypeMovingEntries
+ };
+
+ inline TSmsProgress(TSmsProgressType aType = ESmsProgressTypeDefault);
+
+public:
+
+/**
+The error code.
+*/
+ TInt iError;
+/**
+The type of operation.
+
+@see TSmsProgress::TSmsProgressType
+*/
+ TSmsProgressType iType;
+/**
+The state of the operation.
+*/
+ TInt iState;
+/**
+The number of recipients processed so far for the current message.
+*/
+ TInt iRcpDone;
+/**
+The total number of recipients in the current message.
+*/
+ TInt iRcpCount;
+/**
+The nmber of messages processed so far for the current operation.
+*/
+ TInt iMsgDone;
+/**
+The total number of messages for the current operation.
+*/
+ TInt iMsgCount;
+/**
+The Service Centre address.
+
+This is set by the command ESmsMtmCommandReadServiceCenter.
+
+@removed
+This is no longer used since v7.0.
+*/
+ TBuf<14> iServiceCenterAddress;
+/**
+The invisible folder that contains the messages read from the SIM by the command
+ESmsMtmCommandEnumeratePhoneStores.
+*/
+ TMsvId iEnumerateFolder;
+ };
+
+/**
+Package buffer for TSmsProgress.
+
+@see TSmsProgress
+
+@publishedAll
+@released
+*/
+typedef TPckgBuf<TSmsProgress> TSmsProgressBuf;
+
+
+/**
+The SMS settings that are relevant on a per message basis.
+
+Each SMS message has its own settings. Initially they have a default set of
+values derived from the SMS service settings. They can be changed on an
+individual message basis. For instance, a messaging application may allow a
+user to specify/not specify status reports individually for each message.
+
+These settings are only relevant to mobile originated messages - those of
+SMS-SUBMIT type.
+
+@publishedAll
+@released
+*/
+class CSmsMessageSettings : public CBase
+ {
+public:
+ IMPORT_C virtual void InternalizeL(RReadStream& aReadStream);
+ IMPORT_C virtual void ExternalizeL(RWriteStream& aWriteStream) const;
+
+ inline const TTimeIntervalMinutes& ValidityPeriod() const;
+ inline void SetValidityPeriod(TTimeIntervalMinutes);
+
+ inline void SetValidityPeriodFormat(TSmsFirstOctet::TSmsValidityPeriodFormat aValidityPeriodFormat);
+ inline const TSmsFirstOctet::TSmsValidityPeriodFormat ValidityPeriodFormat() const;
+
+ inline TBool RejectDuplicate() const;
+ inline void SetRejectDuplicate(TBool);
+
+ inline TBool DeliveryReport() const;
+ inline void SetDeliveryReport(TBool);
+
+ inline TBool ReplyPath() const;
+ inline void SetReplyPath(TBool);
+
+ inline TSmsPIDConversion MessageConversion() const;
+ inline void SetMessageConversion(TSmsPIDConversion);
+
+ inline TBool CanConcatenate() const;
+ inline void SetCanConcatenate(TBool);
+
+ inline enum TSmsDataCodingScheme::TSmsAlphabet CharacterSet() const;
+ inline void SetCharacterSet(TSmsDataCodingScheme::TSmsAlphabet);
+
+ IMPORT_C virtual void CopyL(const CSmsMessageSettings& aSettings);
+
+ TUint32 MessageFlags() const;
+ void SetMessageFlags(TUint32 aMsgFlags);
+ inline TBool LastSegmentDeliveryReport() const;
+ inline void SetLastSegmentDeliveryReport(TBool);
+
+ inline void SetUseServiceCenterTimeStampForDate(TBool aUseServiceCenterTimestamp);
+ inline TBool UseServiceCenterTimeStampForDate() const;
+
+protected:
+
+ CSmsMessageSettings();
+
+private:
+
+ TUint32 iMsgFlags;
+ TSmsPIDConversion iMessageConversion;
+ TSmsDataCodingScheme::TSmsAlphabet iAlphabet;
+ TTimeIntervalMinutes iValidityPeriod;
+ TSmsFirstOctet::TSmsValidityPeriodFormat iValidityPeriodFormat;
+ };
+
+/**
+The SMS Service settings.
+
+An SMS service entry stores an object of this type in its message store. These
+settings define the default settings for mobile originated messages (SMS-SUBMIT
+type messages). They also provide some global settings that are applied to all
+messages, both outward going and received messages.
+
+The SMS service also uses this class to store the set of avilable Servive Centre
+numbers. The default Service Centre is defined from this set.
+
+@publishedAll
+@released
+*/
+class CSmsSettings : public CSmsMessageSettings
+ {
+public:
+
+/**
+Defines the ways in which status reports that are received by the watcher may
+be handled.
+
+This can be applied to both SMS-STATUS-REPORT type messages and Special Messages
+(e.g. Voice Mail Indication messages).
+*/
+ enum TSmsReportHandling
+ {
+/**
+The reports are put in the inbox and made invisible.
+*/
+ EMoveReportToInboxInvisible,
+/**
+The reports are put in the inbox and made visible.
+*/
+ EMoveReportToInboxVisible,
+/**
+The reports are deleted.
+*/
+ EDiscardReport,
+/**
+Not supported.
+*/
+ EDoNotWatchForReport,
+/**
+Reports are put in the inbox and made invisible. The status report
+is matched against the sent mesasge and its summary info updated.
+*/
+ EMoveReportToInboxInvisibleAndMatch,
+/**
+Reports are put in the inbox and made visible. The status report
+is matched against the sent mesasge and its summary info updated.
+*/
+ EMoveReportToInboxVisibleAndMatch,
+/**
+Reports are deleted. The status report is matched against the sent
+mesasge and its summary info updated.
+*/
+ EDiscardReportAndMatch
+ };
+
+/**
+Sets whether the service settings should be used to update the communications
+database.
+
+If the update is specified, it is done when the Service settings are stored into
+the message store.
+*/
+ enum TSmsSettingsCommDbAction
+ {
+/**
+The comms database should not be updated.
+*/
+ ENone,
+/**
+Use the Service settings to update the comms datebase.
+*/
+ EStoreToCommDb
+ };
+
+/** Defines the SMS bearer.
+Modes: GSM */
+enum TMobileSmsBearer
+ {
+ /** SMS messages will only be sent over a packet-switched (GPRS) network. */
+ ESmsBearerPacketOnly,
+ /** SMS messages will only be sent over a circuit-switched (GSM) network. */
+ ESmsBearerCircuitOnly,
+ /** SMS messages will be sent over the packet-switched (GPRS) network if possible,
+ otherwise over circuit-switched (GSM) network. */
+ ESmsBearerPacketPreferred,
+ /** SMS messages will be sent over the circuit-switched (GSM) network if possible,
+ otherwise over packet-switched (GPRS) network. */
+ ESmsBearerCircuitPreferred
+ };
+
+public:
+
+ IMPORT_C static CSmsSettings* NewL();
+ IMPORT_C static CSmsSettings* NewLC();
+ IMPORT_C virtual ~CSmsSettings();
+
+ IMPORT_C TInt ServiceCenterCount() const;
+ IMPORT_C CSmsServiceCenter& GetServiceCenter(TInt aIndex) const;
+ IMPORT_C void AddServiceCenterL(const TDesC& aName,const TDesC& aNumber);
+ IMPORT_C void RemoveServiceCenter(TInt aIndex);
+ IMPORT_C TInt DefaultServiceCenter() const;
+ IMPORT_C void SetDefaultServiceCenter(TInt aDefaultSC);
+ inline TSmsDelivery Delivery() const;
+ inline void SetDelivery(TSmsDelivery);
+
+ inline TBool ReplyQuoted() const;
+ inline void SetReplyQuoted(TBool);
+
+ IMPORT_C void CopyL(const CSmsSettings& aSmsSettings);
+
+ inline TSmsReportHandling StatusReportHandling() const;
+ inline void SetStatusReportHandling(TSmsReportHandling aStatusReportHandling);
+ inline TSmsReportHandling SpecialMessageHandling() const;
+ inline void SetSpecialMessageHandling(TSmsReportHandling aSpecialMessageHandling);
+
+ inline void SetCommDbAction(TSmsSettingsCommDbAction aCommDbAction);
+ inline TSmsSettingsCommDbAction CommDbAction() const;
+
+ inline void SetSmsBearerAction(TSmsSettingsCommDbAction aSmsBearerAction);
+ inline TSmsSettingsCommDbAction SmsBearerAction() const;
+
+ inline void SetSmsBearer(TMobileSmsBearer aSmsBearer);
+ inline TMobileSmsBearer SmsBearer() const;
+
+ inline void SetClass2Folder(TMsvId aId);
+ inline TMsvId Class2Folder() const;
+
+ inline void SetDescriptionLength(TInt aLength);
+ inline TInt DescriptionLength() const;
+
+ inline TBool DiscardUnknownPortMessage() const;
+ inline void SetDiscardUnknownPortMessage(TBool aDeleteMessage);
+ TUint32 SettingsFlags() const;
+ void SetSettingsFlags(TUint32 aSetFlags);
+
+ void RemoveSCAddresses();
+ void StoreToCommDbL() const;
+
+private:
+
+ CSmsSettings();
+ void ConstructL();
+
+private:
+
+ TUint32 iSetFlags;
+ CArrayPtrFlat<CSmsServiceCenter> *iServiceCenters;
+ TSmsDelivery iDelivery;
+ TInt iDefaultSC;
+ TSmsReportHandling iStatusReportHandling;
+ TSmsReportHandling iSpecialMessageHandling;
+ TSmsSettingsCommDbAction iCommDbAction;
+ TSmsSettingsCommDbAction iSmsBearerAction;
+ TMobileSmsBearer iSmsBearer;
+ TMsvId iClass2Folder;
+ TInt iDescriptionLength;
+ };
+
+/**
+Recipient information for an SMS message.
+
+A SMS-SUBMIT message may have several recipients
+
+@publishedAll
+@released
+*/
+class CSmsNumber : public CMsvRecipient
+ {
+public:
+
+/**
+Defines the status of an acknowledgement for a recipient.
+*/
+ enum TSmsAckStatus
+ {
+/**
+An acknowledgement for this recipient has not been requested.
+*/
+ ENoAckRequested = 0,
+/**
+The delivery status for this recipient has been requested, but the status report
+has not yet been received.
+*/
+ EPendingAck,
+/**
+A successful acknowledgement for this recipient has been received.
+*/
+ EAckSuccessful,
+/**
+A failed acknowledgement for this recipient has been received.
+*/
+ EAckError
+ };
+
+public:
+
+ IMPORT_C static CSmsNumber* NewL();
+ IMPORT_C static CSmsNumber* NewL(const CSmsNumber& aSmsNumber);
+ IMPORT_C virtual ~CSmsNumber();
+
+ IMPORT_C void InternalizeL(RReadStream& aStream);
+ IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+
+ IMPORT_C TPtrC Address() const;
+ IMPORT_C void SetAddressL(const TDesC& aAddress);
+ void SetEmailAddressL(const TDesC& aAddress, CSmsEmailFields* aEmailFields, const TDesC& aAlias);
+
+ IMPORT_C TPtrC Name() const;
+ IMPORT_C void SetNameL(const TDesC& aName);
+
+ inline TLogId LogId() const;
+ inline void SetLogId(TLogId aLogId);
+
+ IMPORT_C CSmsNumber& CopyL(const CSmsNumber& aSmsNumber);
+
+ IMPORT_C TSmsAckStatus AckStatus(TSmsAckType aAckType) const;
+ IMPORT_C void SetAckStatus(TSmsAckType aAckType, TSmsAckStatus aAckStatus);
+
+private:
+
+ CSmsNumber();
+ TPtrC LimitStringSize(const TPtrC& aString, TInt aMaxLength) const;
+
+private:
+
+ HBufC* iNumber;
+ HBufC* iName;
+ TLogId iLogId;
+ TSmsAckStatus iDeliveryStatus;
+ };
+
+/**
+Used to store Service Centre numbers and their associated name.
+
+@publishedAll
+@released
+*/
+NONSHARABLE_CLASS (CSmsServiceCenter) : public CBase
+ {
+public:
+ IMPORT_C static CSmsServiceCenter* NewL();
+ IMPORT_C static CSmsServiceCenter* NewL(const CSmsServiceCenter& aSmsSC);
+ IMPORT_C ~CSmsServiceCenter();
+
+ IMPORT_C TPtrC Address() const;
+ IMPORT_C void SetAddressL(const TDesC& aAddress);
+
+ IMPORT_C TPtrC Name() const;
+ IMPORT_C void SetNameL(const TDesC& aName);
+
+ IMPORT_C CSmsServiceCenter& CopyL(const CSmsServiceCenter& aSmsSc);
+
+private:
+ CSmsServiceCenter();
+ TPtrC LimitStringSize(const TPtrC& aString, TInt aMaxLength) const;
+
+private:
+ HBufC* iNumber;
+ HBufC* iName;
+ };
+
+#include <smutset.inl>
+
+#endif // __SMUTSET_H__