epoc32/include/app/smutset.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // SMUTSET.H
    15 //
    16 /**
    17  * @file 
    18  * @publishedAll
    19  * @released
    20  */
    21 #ifndef __SMUTSET_H__
    22 #define __SMUTSET_H__
    23 
    24 #include <gsmumsg.h>
    25 #include <msvrcpt.h>
    26 #include <msvstore.h>
    27 #include <logwrap.h>
    28 
    29 class CSmsServiceCenter;
    30 class CSmsEmailFields;
    31 
    32 // Both the recipient's number  and SC number (TP-Destination-Address and RP-Destination-Address) 
    33 // can be 12 octets which means that there can be 21 characters (including + sign) in the number string. 
    34 
    35 /**
    36 The maximum length of recipient's number.
    37 
    38 The number returned by CSmsNumber::Address() and CSmsServiceCenter::Address() is limited this maximum length.
    39 
    40 @see	CSmsNumber::Address
    41 @see	CSmsServiceCenter::Address
    42 
    43 @publishedAll
    44 @released
    45 */
    46 const TInt KSmcmSmsNumberMaxNumberLength = 21;
    47 
    48 /**
    49 The maximum length of recipient's name.
    50 
    51 The number returned by CSmsNumber::Name() and CSmsServiceCenter::Name() is limited this maximum length.
    52 
    53 @see	CSmsNumber::Name
    54 @see	CSmsServiceCenter::Name
    55 
    56 @publishedAll
    57 @released
    58 */
    59 const TInt KSmcmSmsNumberMaxNameLength = 256;
    60 
    61 /** 
    62 Defines the possible forms in which an SMS message should be delivered to the 
    63 recipient by the service centre.
    64 
    65 The specified format may or may not actually be supported by the service centre. 
    66 Note that the format of the recipient address(es) may need to be different 
    67 to a normal telephone number if the conversion is set to any other value than 
    68 ESmsConvPIDNone, ESmsConvFax, ESmsConvPaging or ESmsConvErmes. 
    69 
    70 @publishedAll
    71 @released
    72 */
    73 enum TSmsPIDConversion
    74 		{
    75 /**
    76 No conversion (i.e. use SMS itself). 
    77 */
    78 		ESmsConvPIDNone	= TSmsProtocolIdentifier::ESmsNoTelematicDevice,
    79 /** 
    80 Convert to fax. 
    81 */
    82 		ESmsConvFax		= TSmsProtocolIdentifier::ESmsGroup3TeleFax,
    83 /** 
    84 Convert to X.400. 
    85 */
    86 		ESmsConvX400	= TSmsProtocolIdentifier::ESmsX400MessageHandlingSystem,
    87 /** 
    88 Convert to pager message. 
    89 */
    90 		ESmsConvPaging	= TSmsProtocolIdentifier::ESmsNationalPagingSystem,
    91 /** 
    92 Convert to Internet email. 
    93 */
    94 		ESmsConvMail	= TSmsProtocolIdentifier::ESmsInternetElectronicMail,
    95 /** 
    96 Convert to ERMES paging. 
    97 */
    98 		ESmsConvErmes	= TSmsProtocolIdentifier::ESmsERMES,
    99 /**
   100 Convert to sppech. 
   101 */
   102 		ESmsConvSpeech	= TSmsProtocolIdentifier::ESmsVoiceTelephone
   103 		};
   104 
   105 /**
   106 Defines the set of possible validity periods for mobile originated messages.
   107 
   108 Mobile originated messages have a PDU type of SMS-SUBMIT.
   109 
   110 @publishedAll
   111 @released
   112 */
   113 enum TSmcmValidityPeriod
   114 	{
   115 /**
   116 Validity period of an hour.
   117 */
   118 	ESmsVPHour			= TSmsValidityPeriod::EHalfHourUnitInMinutes*2,
   119 /**
   120 Validity period of six hours.
   121 */
   122 	ESmsVPSixHours		= TSmsValidityPeriod::EHalfHourUnitInMinutes*12,
   123 /**
   124 Validity period of 24 hours.
   125 */
   126 	ESmsVP24Hours		= TSmsValidityPeriod::EOneDayUnitInMinutes,
   127 /**
   128 Validity period of a week.
   129 */
   130 	ESmsVPWeek			= TSmsValidityPeriod::EOneWeekUnitInMinutes,
   131 /**
   132 The maximum validity period - currently set as 63 weeks.
   133 */
   134 	ESmsVPMaximum		= TSmsValidityPeriod::EOneWeekUnitInMinutes*63,
   135 /**
   136 An enum that specifies that a validity period is not supported.
   137 */
   138 	ESmsVPNotSupported	= KErrNotSupported,
   139 /**
   140 The default validy period - currently set to a week.
   141 */
   142 	ESmsVPDefault		= ESmsVPWeek
   143 	}; 
   144 
   145 /** 
   146 Defines options for the preferred default sending schedule type of a new message
   147 created using the SMS client MTM.
   148 
   149 The option has no direct effect on the SMS MTM. When it is sending an SMS
   150 message it automatically appends other SMS messages in the outbox whose send
   151 states are marked as KMsvSendStatewaiting or KMsvSendSateUnknown.
   152 
   153 Therefore it is the responsibility of the messaging client to set the correct
   154 send state of new SMS messages correctly given the preferred sending schedule.
   155 
   156 @publishedAll
   157 @released
   158 */
   159 enum TSmsDelivery
   160 	{
   161 /** 
   162 Send message immediately. The message send state should be set to KMsvSendStateWaiting. 
   163 */
   164 	ESmsDeliveryImmediately,
   165 /** 
   166 Send message when client requests. The message send state should be set to KMsvSendStateUponRequest.
   167 */
   168 	ESmsDeliveryUponRequest,
   169 /**
   170 Send message at scheduled time. The message send state should be set to KMsvSendStateScheduled.
   171 */
   172 	ESmsDeliveryScheduled
   173 	};
   174 
   175 /**
   176 Defines the flags and masks for some of the message settings.
   177 
   178 The settings classes CSmsMessageSettings and CSmsSettings use these flags to 
   179 store the specified information.
   180 
   181 @publishedAll
   182 @released
   183 */
   184 enum TSmsSettingsFlags
   185 	{
   186 /**
   187 Mask that resets the flags.
   188 */
   189 	ESmsSettingsNoFlags					=0x00000000,
   190 /**
   191 Flag that indicates if messages can be concatenated.
   192 
   193 If true, the UI should pass a long message in one piece to the MTM. If false, 
   194 it should split the message manually into 140 byte parts. The value of this 
   195 flag does not affect the behaviour of the SMS MTM.
   196 */
   197 	ESmsSettingsCanConcatenate			=0x00000001,
   198 /**
   199 Flag that indicates whether the original message should be included in relpy
   200 messages.
   201 
   202 If true, the received message should be quoted at the beginning of the reply 
   203 message. If false, reply messages should be initially empty.
   204 */
   205 	ESmsSettingsReplyQuoted				=0x00000002,
   206 /**
   207 Flag that indicates whether duplicate messages should be rejected.
   208 */
   209 	ESmsSettingsRejectDuplicate			=0x00000004,
   210 /**
   211 Flag that indicates if a status report (TP-SRR in GSM spec 03.40) should be 
   212 requested from the Service Centre.
   213 */
   214 	ESmsSettingsDeliveryReport			=0x00000008,
   215 /**
   216 Flag that indicates if the reply path (Service Centre address) should be included
   217 in the delivered message (TP-RP in GSM spec 03.40).
   218 */
   219 	ESmsSettingsReplyPathRequested		=0x00000010,
   220 /**  
   221 Flag that indicates if a status report (TP-SRR in GSM spec 03.40) for the last segment
   222 should be requested from the Service Centre.
   223 */
   224 	ESmsSettingsLastSegmentDeliveryReport	=0x00000020	,
   225 	
   226 /**
   227 Flag that indicates if a status report (TP-SRR in GSM spec 03.40) for the last segment 
   228 is not requested from the Service Centre.
   229 */
   230 	ENoSmsSettingsLastSegmentDeliveryReport	=0x00000040,
   231 /**
   232 Flag that indicates that the service center time stamp should be used for the date
   233 field in any TMsvEntry that corresponds to a SMS message.
   234 */
   235 	ESmsSettingsUseServiceCenterTimeStamp =0x00000080,
   236 /**
   237 Flag that indicates if message received from unknown port, 
   238 discard the message without indicating the user. 
   239 */	
   240 	ESmsSettingsDiscardUnknownPortMsgs =0x00000100,
   241 /**
   242 Mask for the set of flags defined.
   243 */
   244 	ESmsSettingsMask                    =0x000000FF,
   245 	};
   246 
   247 
   248 /**
   249 Defines the types of acknowledgements that can be received from recipients.
   250 */
   251 enum TSmsAckType
   252 	{
   253 /**
   254 Acknowlwdgement of delivery to a recipient.
   255 */
   256 	ESmsAckTypeDelivery		=0	
   257 	};
   258 
   259 /** 
   260 Progress information for SMS MTM operations.
   261 
   262 This information is returned by CMsvOperation::ProgressL() in a TSmsProgressBuf 
   263 package.
   264 
   265 @see	CMsvOperation::ProgressL
   266 
   267 @publishedAll
   268 @released
   269 */
   270 class TSmsProgress 
   271 	{
   272 public:
   273 /** 
   274 Defines type of operation for which progress information is being given.
   275 
   276 These types correspond to the commands defined in TSmsMtmCommand.
   277 
   278 @see	TSmsMtmCommand
   279 */
   280 	enum TSmsProgressType
   281 		{
   282 /** 
   283 The default operation type - no operation.
   284 */
   285 		ESmsProgressTypeDefault,
   286 /** 
   287 Reading SIM parameters.
   288 		
   289 Pre v7.0, this was named ESmsProgressTypeReadingServiceCenterAddress.
   290 */
   291 		ESmsProgressTypeReadSimParams,
   292 /**
   293 Writing SIM parameters.
   294 		
   295 Pre v7.0 this was named ESmsProgressTypeWritingServiceCenterAddress. 
   296 */
   297 		ESmsProgressTypeWriteSimParams,
   298 /**
   299 Sending messages.
   300 */
   301 		ESmsProgressTypeSending,
   302 /**
   303 Scheduling sending messages.
   304 */
   305 		ESmsProgressTypeScheduling,
   306 /**
   307 Enumerating phone stores.
   308 		
   309 Pre v7.0, this was named ESmsProgressTypeEnumeratingSim.
   310 */
   311 		ESmsProgressTypeEnumeratingPhoneStores, 
   312 /**
   313 Copying messages from phone stores.
   314 		
   315 Pre v7.0, this was named ESmsProgressTypeCopyFromSim.
   316 */
   317 		ESmsProgressTypeCopyFromPhoneStore, 
   318 /**
   319 Moving messages from phone stores.
   320 		
   321 Pre v7.0, this was named ESmsProgressTypeMoveFromSim.
   322 */
   323 		ESmsProgressTypeMoveFromPhoneStore, 
   324 /**
   325 Deleting messages from phone stores.
   326 		
   327 Pre v7.0, this was named ESmsProgressTypeDeleteFromSim.
   328 */
   329 		ESmsProgressTypeDeleteFromPhoneStore, 
   330 /**
   331 Removing all messages from the task scheduler list.
   332 */
   333 		ESmsProgressTypeDeleteSchedule,
   334 /**
   335 Checking the current scheduled status of the messages.
   336 */
   337 		ESmsProgressTypeCheckSchedule,
   338 /**
   339 Recursively deleting messages.
   340 */
   341 		ESmsProgressTypeDeleteAll,
   342 /**
   343 Copying messages to a phone store.
   344 		
   345 Pre v7.0, this was named ESmsProgressTypeCopyToSim.
   346 */
   347 		ESmsProgressTypeCopyToPhoneStore,  
   348 /**
   349 Moving messages to a phone store.
   350 		
   351 Pre v7.0, this was named ESmsProgressTypeMoveToSim.
   352 */
   353 		ESmsProgressTypeMoveToPhoneStore,
   354 /**
   355 Moving message entries.
   356 
   357 This is the second part of ESmsProgressTypeMoveFromPhoneStore. The first part
   358 deletes the messages from the phone storageSIM. This second part moves the 
   359 messages from the folder that represents the phone storage to the specified
   360 destination.
   361 */
   362 		ESmsProgressTypeMovingEntries
   363 		};
   364 	
   365 	inline TSmsProgress(TSmsProgressType aType = ESmsProgressTypeDefault);
   366 
   367 public:
   368 	
   369 /** 
   370 The error code.
   371 */
   372 	TInt iError; 
   373 /** 
   374 The type of operation. 
   375 
   376 @see	TSmsProgress::TSmsProgressType
   377 */
   378 	TSmsProgressType iType;
   379 /** 
   380 The state of the operation.
   381 */
   382 	TInt iState;
   383 /** 
   384 The number of recipients processed so far for the current message.
   385 */
   386 	TInt iRcpDone;
   387 /**
   388 The total number of recipients in the current message.
   389 */
   390 	TInt iRcpCount;
   391 /** 
   392 The nmber of messages processed so far for the current operation.
   393 */
   394 	TInt iMsgDone;
   395 /**
   396 The total number of messages for the current operation.
   397 */
   398 	TInt iMsgCount; 
   399 /** 
   400 The Service Centre address.
   401 	
   402 This is set by the command ESmsMtmCommandReadServiceCenter.
   403 
   404 @removed
   405 This is no longer used since v7.0.
   406 */
   407 	TBuf<14> iServiceCenterAddress;
   408 /** 
   409 The invisible folder that contains the messages read from the SIM by the command
   410 ESmsMtmCommandEnumeratePhoneStores.
   411 */
   412 	TMsvId iEnumerateFolder;
   413 	};
   414 
   415 /** 
   416 Package buffer for TSmsProgress. 
   417 
   418 @see	TSmsProgress
   419 
   420 @publishedAll
   421 @released
   422 */
   423 typedef TPckgBuf<TSmsProgress> TSmsProgressBuf;
   424 
   425 
   426 /**
   427 The SMS settings that are relevant on a per message basis.
   428 
   429 Each SMS message has its own settings. Initially they have a default set of 
   430 values derived from the SMS service settings. They can be changed on an
   431 individual message basis. For instance, a messaging application may allow a
   432 user to specify/not specify status reports individually for each message.
   433 
   434 These settings are only relevant to mobile originated messages - those of 
   435 SMS-SUBMIT type.
   436 
   437 @publishedAll
   438 @released
   439 */
   440 NONSHARABLE_CLASS(CSmsMessageSettings): public CBase
   441 	{
   442 public:
   443 	IMPORT_C virtual void InternalizeL(RReadStream& aReadStream);
   444 	IMPORT_C virtual void ExternalizeL(RWriteStream& aWriteStream) const;
   445 
   446 	inline const TTimeIntervalMinutes& ValidityPeriod() const;
   447 	inline void SetValidityPeriod(TTimeIntervalMinutes);
   448 
   449 	inline void SetValidityPeriodFormat(TSmsFirstOctet::TSmsValidityPeriodFormat aValidityPeriodFormat);
   450 	inline const TSmsFirstOctet::TSmsValidityPeriodFormat ValidityPeriodFormat() const;
   451 
   452 	inline TBool RejectDuplicate() const;
   453 	inline void SetRejectDuplicate(TBool);
   454 
   455 	inline TBool DeliveryReport() const;
   456 	inline void SetDeliveryReport(TBool);
   457 
   458 	inline TBool ReplyPath() const;
   459 	inline void SetReplyPath(TBool);
   460 
   461 	inline TSmsPIDConversion MessageConversion() const;
   462 	inline void SetMessageConversion(TSmsPIDConversion);
   463 
   464 	inline TBool CanConcatenate() const;
   465 	inline void SetCanConcatenate(TBool);
   466 
   467 	inline enum TSmsDataCodingScheme::TSmsAlphabet CharacterSet() const;
   468 	inline void SetCharacterSet(TSmsDataCodingScheme::TSmsAlphabet);
   469 
   470     IMPORT_C virtual void CopyL(const CSmsMessageSettings& aSettings);
   471 
   472 	TUint32 MessageFlags() const;
   473 	void SetMessageFlags(TUint32 aMsgFlags);
   474 	inline TBool LastSegmentDeliveryReport() const;
   475 	inline void SetLastSegmentDeliveryReport(TBool);
   476 
   477 	inline void SetUseServiceCenterTimeStampForDate(TBool aUseServiceCenterTimestamp);
   478 	inline TBool UseServiceCenterTimeStampForDate() const;
   479 
   480 protected:
   481 
   482 	CSmsMessageSettings();
   483 
   484 private:
   485 
   486 	TUint32 iMsgFlags;
   487 	TSmsPIDConversion iMessageConversion;
   488 	TSmsDataCodingScheme::TSmsAlphabet iAlphabet;
   489 	TTimeIntervalMinutes iValidityPeriod;
   490 	TSmsFirstOctet::TSmsValidityPeriodFormat iValidityPeriodFormat;
   491 	};
   492 
   493 /** 
   494 The SMS Service settings.
   495 
   496 An SMS service entry stores an object of this type in its message store. These
   497 settings define the default settings for mobile originated messages (SMS-SUBMIT
   498 type messages). They also provide some global settings that are applied to all
   499 messages, both outward going and received messages.
   500 
   501 The SMS service also uses this class to store the set of avilable Servive Centre
   502 numbers. The default Service Centre is defined from this set.
   503 
   504 @publishedAll
   505 @released
   506 */
   507 NONSHARABLE_CLASS(CSmsSettings): public CSmsMessageSettings
   508 	{
   509 public:
   510 
   511 /**
   512 Defines the ways in which status reports that are received by the watcher may
   513 be handled.
   514 
   515 This can be applied to both SMS-STATUS-REPORT type messages and Special Messages
   516 (e.g. Voice Mail Indication messages).
   517 */
   518 	enum TSmsReportHandling
   519 		{
   520 /** 
   521 The reports are put in the inbox and made invisible. 
   522 */
   523 		EMoveReportToInboxInvisible,
   524 /** 
   525 The reports are put in the inbox and made visible.
   526 */
   527 		EMoveReportToInboxVisible,
   528 /**
   529 The reports are deleted.
   530 */
   531 		EDiscardReport,
   532 /** 
   533 Not supported.
   534 */
   535 		EDoNotWatchForReport,
   536 /**
   537 Reports are put in the inbox and made invisible. The status report 
   538 is matched against the sent mesasge and its summary info updated.
   539 */
   540 		EMoveReportToInboxInvisibleAndMatch,
   541 /**
   542 Reports are put in the inbox and made visible. The status report 
   543 is matched against the sent mesasge and its summary info updated.
   544 */
   545 		EMoveReportToInboxVisibleAndMatch,
   546 /**
   547 Reports are deleted. The status report is matched against the sent
   548 mesasge and its summary info updated.
   549 */
   550 		EDiscardReportAndMatch
   551 		};
   552 
   553 /** 
   554 Sets whether the service settings should be used to update the communications 
   555 database. 
   556 
   557 If the update is specified, it is done when the Service settings are stored into
   558 the message store.
   559 */
   560 	enum TSmsSettingsCommDbAction
   561 		{
   562 /** 
   563 The comms database should not be updated.
   564 */
   565 		ENone,
   566 /** 
   567 Use the Service settings to update the comms datebase.
   568 */
   569 		EStoreToCommDb
   570 		};
   571 
   572 /** Defines the SMS bearer.
   573 Modes: GSM */
   574 enum TMobileSmsBearer
   575 	{
   576 	/** SMS messages will only be sent over a packet-switched (GPRS) network. */
   577 		ESmsBearerPacketOnly,
   578 	/** SMS messages will only be sent over a circuit-switched (GSM) network. */
   579 		ESmsBearerCircuitOnly,
   580 	/** SMS messages will be sent over the packet-switched (GPRS) network if possible, 
   581 	otherwise over circuit-switched (GSM) network. */
   582 		ESmsBearerPacketPreferred,
   583 	/** SMS messages will be sent over the circuit-switched (GSM) network if possible, 
   584 	otherwise over packet-switched (GPRS) network. */
   585 		ESmsBearerCircuitPreferred
   586 	};
   587 
   588 public:
   589 
   590 	IMPORT_C static CSmsSettings* NewL();
   591 	IMPORT_C static CSmsSettings* NewLC();
   592 	IMPORT_C virtual ~CSmsSettings();
   593 
   594 	IMPORT_C TInt ServiceCenterCount() const;
   595 	IMPORT_C CSmsServiceCenter& GetServiceCenter(TInt aIndex) const;
   596 	IMPORT_C void AddServiceCenterL(const TDesC& aName,const TDesC& aNumber);
   597 	IMPORT_C void RemoveServiceCenter(TInt aIndex);
   598 	IMPORT_C TInt DefaultServiceCenter() const;
   599 	IMPORT_C void SetDefaultServiceCenter(TInt aDefaultSC);
   600 	inline TSmsDelivery Delivery() const;
   601 	inline void SetDelivery(TSmsDelivery);
   602 
   603 	inline TBool ReplyQuoted() const;
   604 	inline void SetReplyQuoted(TBool);
   605 
   606     IMPORT_C void CopyL(const CSmsSettings& aSmsSettings);
   607 
   608 	inline TSmsReportHandling StatusReportHandling() const;
   609 	inline void SetStatusReportHandling(TSmsReportHandling aStatusReportHandling);
   610 	inline TSmsReportHandling SpecialMessageHandling() const;
   611 	inline void SetSpecialMessageHandling(TSmsReportHandling aSpecialMessageHandling);
   612 
   613 	inline void SetCommDbAction(TSmsSettingsCommDbAction aCommDbAction);
   614 	inline TSmsSettingsCommDbAction CommDbAction() const;
   615 
   616 	inline void SetSmsBearerAction(TSmsSettingsCommDbAction aSmsBearerAction);
   617 	inline TSmsSettingsCommDbAction SmsBearerAction() const;
   618 
   619 	inline void SetSmsBearer(TMobileSmsBearer aSmsBearer);
   620 	inline TMobileSmsBearer SmsBearer() const;
   621 
   622 	inline void SetClass2Folder(TMsvId aId);
   623 	inline TMsvId Class2Folder() const;
   624 
   625 	inline void SetDescriptionLength(TInt aLength);
   626 	inline TInt DescriptionLength() const;
   627 
   628 	inline TBool DiscardUnknownPortMessage() const;
   629 	inline void SetDiscardUnknownPortMessage(TBool aDeleteMessage);
   630 	TUint32 SettingsFlags() const;
   631 	void SetSettingsFlags(TUint32 aSetFlags);
   632 
   633 	void RemoveSCAddresses();
   634 	void StoreToCommDbL() const;
   635 
   636 private:
   637 
   638 	CSmsSettings();
   639 	void ConstructL();
   640 
   641 private:
   642 
   643 	TUint32 iSetFlags;
   644 	CArrayPtrFlat<CSmsServiceCenter> *iServiceCenters;
   645 	TSmsDelivery iDelivery;
   646 	TInt iDefaultSC;
   647 	TSmsReportHandling iStatusReportHandling;
   648 	TSmsReportHandling iSpecialMessageHandling;
   649 	TSmsSettingsCommDbAction iCommDbAction;
   650 	TSmsSettingsCommDbAction iSmsBearerAction;
   651 	TMobileSmsBearer iSmsBearer;
   652 	TMsvId iClass2Folder;
   653 	TInt iDescriptionLength;
   654 	};
   655 
   656 /** 
   657 Recipient information for an SMS message.
   658 
   659 A SMS-SUBMIT message may have several recipients
   660 
   661 @publishedAll
   662 @released
   663 */
   664 NONSHARABLE_CLASS(CSmsNumber): public CMsvRecipient
   665 	{
   666 public:
   667 
   668 /**
   669 Defines the status of an acknowledgement for a recipient.
   670 */
   671 	enum TSmsAckStatus
   672 		{
   673 /**
   674 An acknowledgement for this recipient has not been requested.
   675 */
   676 		ENoAckRequested		= 0,
   677 /**
   678 The delivery status for this recipient has been requested, but the status report
   679 has not yet been received.
   680 */
   681 		EPendingAck,
   682 /**
   683 A successful acknowledgement for this recipient has been received.
   684 */
   685 		EAckSuccessful,
   686 /**
   687 A failed acknowledgement for this recipient has been received.
   688 */
   689 		EAckError
   690 		};
   691 
   692 public:
   693 
   694 	IMPORT_C static CSmsNumber* NewL();
   695 	IMPORT_C static CSmsNumber* NewL(const CSmsNumber& aSmsNumber);
   696 	IMPORT_C virtual ~CSmsNumber();
   697 
   698 	IMPORT_C void InternalizeL(RReadStream& aStream);
   699 	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
   700 
   701 	IMPORT_C TPtrC Address() const;
   702 	IMPORT_C void SetAddressL(const TDesC& aAddress);
   703 	void SetEmailAddressL(const TDesC& aAddress, CSmsEmailFields* aEmailFields, const TDesC& aAlias);
   704 
   705 	IMPORT_C TPtrC Name() const;
   706 	IMPORT_C void SetNameL(const TDesC& aName);
   707 
   708 	inline TLogId LogId() const;
   709 	inline void SetLogId(TLogId aLogId);
   710 
   711 	IMPORT_C CSmsNumber& CopyL(const CSmsNumber& aSmsNumber);
   712 
   713 	IMPORT_C TSmsAckStatus AckStatus(TSmsAckType aAckType) const;
   714 	IMPORT_C void SetAckStatus(TSmsAckType aAckType, TSmsAckStatus aAckStatus);
   715 	
   716 private:
   717 
   718 	CSmsNumber();
   719 	TPtrC LimitStringSize(const TPtrC& aString, TInt aMaxLength) const;
   720 
   721 private:
   722 
   723 	HBufC* iNumber;
   724 	HBufC* iName;
   725 	TLogId iLogId;
   726 	TSmsAckStatus iDeliveryStatus;
   727 	};
   728 
   729 /** 
   730 Used to store Service Centre numbers and their associated name.
   731 
   732 @publishedAll
   733 @released
   734 */
   735 NONSHARABLE_CLASS (CSmsServiceCenter) : public CBase
   736 	{
   737 public:
   738 	IMPORT_C static CSmsServiceCenter* NewL();
   739 	IMPORT_C static CSmsServiceCenter* NewL(const CSmsServiceCenter& aSmsSC);
   740 	IMPORT_C ~CSmsServiceCenter();
   741 
   742 	IMPORT_C TPtrC Address() const;
   743 	IMPORT_C void SetAddressL(const TDesC& aAddress);
   744 
   745 	IMPORT_C TPtrC Name() const;
   746 	IMPORT_C void SetNameL(const TDesC& aName);
   747 	
   748 	IMPORT_C CSmsServiceCenter& CopyL(const CSmsServiceCenter& aSmsSc);
   749 
   750 private:
   751 	CSmsServiceCenter();
   752 	TPtrC LimitStringSize(const TPtrC& aString, TInt aMaxLength) const;
   753 	
   754 private:
   755 	HBufC* iNumber;
   756 	HBufC* iName;
   757 	};
   758 
   759 #include <smutset.inl>
   760 
   761 #endif // __SMUTSET_H__