messagingappbase/smsmtm/clientmtm/inc/SMUTSET.H
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
equal deleted inserted replaced
23:238255e8b033 25:84d9eb65b26f
     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 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 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 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__