epoc32/include/app/smuthdr.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.
williamr@2
     1
// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@4
    14
// SMUTHDR.H
williamr@2
    15
//
williamr@4
    16
/**
williamr@4
    17
 * @file 
williamr@4
    18
 * @publishedAll
williamr@4
    19
 * @released
williamr@4
    20
 */
williamr@2
    21
#ifndef __SMUTHDR_H__
williamr@2
    22
#define __SMUTHDR_H__
williamr@2
    23
williamr@2
    24
#include <e32base.h>
williamr@2
    25
#include <gsmubuf.h>
williamr@2
    26
#include <bif.h>
williamr@2
    27
#include <gsmupdu.h>
williamr@2
    28
#include <msvstd.h>
williamr@2
    29
#include <smutset.h>
williamr@2
    30
williamr@4
    31
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS  
williamr@4
    32
#include <tmsvsmsentry.h>
williamr@4
    33
#endif
williamr@4
    34
williamr@2
    35
class RMsvReadStream;
williamr@2
    36
class RMsvWriteStream;
williamr@2
    37
class CMsvStore;
williamr@2
    38
class CSmsEmailFields;
williamr@2
    39
williamr@2
    40
/** 
williamr@2
    41
The SMS MTM encapsulation of an SMS message.
williamr@2
    42
williamr@2
    43
This class allows a messaging client to access the lower-level message encapsulation 
williamr@2
    44
used by the SMS stack.
williamr@2
    45
williamr@2
    46
It also provides functionality to restore and store an SMS message from/to the
williamr@2
    47
message store.
williamr@2
    48
williamr@2
    49
An SMS message is encapsulated in a Protocol Data Unit (PDU). In GSM there are 
williamr@2
    50
six types of SMS message PDU. In the descriptions below, SC means Service Center 
williamr@2
    51
and MS means Mobile Station (the phone).
williamr@2
    52
williamr@2
    53
1. SMS-DELIVER - sent from SC to MS
williamr@2
    54
williamr@2
    55
2. SMS-DELIVER-REPORT - sent from MS to SC
williamr@2
    56
williamr@2
    57
3. SMS-SUBMIT - sent from MS to SC
williamr@2
    58
williamr@2
    59
4. SMS-SUBMIT-REPORT - sent from SC to MS
williamr@2
    60
williamr@2
    61
5. SMS-STATUS-REPORT - sent from SC to MS
williamr@2
    62
williamr@2
    63
6. SMS-COMMAND - sent from MS to SC
williamr@2
    64
williamr@2
    65
@publishedAll
williamr@2
    66
@released
williamr@2
    67
*/
williamr@4
    68
NONSHARABLE_CLASS (CSmsHeader) : public CBase
williamr@2
    69
	{
williamr@2
    70
public:
williamr@2
    71
williamr@2
    72
	IMPORT_C static CSmsHeader* NewL(CSmsPDU::TSmsPDUType aType,CEditableText& aText);
williamr@2
    73
	IMPORT_C static CSmsHeader* NewL(CSmsPDU::TSmsPDUType aType,CEditableText& aText,RFs& aFs);
williamr@2
    74
	IMPORT_C static CSmsHeader* NewL(CSmsMessage* aMessage);
williamr@2
    75
	IMPORT_C ~CSmsHeader();
williamr@2
    76
williamr@2
    77
	inline CSmsPDU::TSmsPDUType Type() const;
williamr@2
    78
williamr@2
    79
	inline CSmsSubmit& Submit();
williamr@2
    80
	inline const CSmsSubmit& Submit() const;
williamr@2
    81
	inline CSmsDeliver& Deliver();
williamr@2
    82
	inline const CSmsDeliver& Deliver() const;
williamr@2
    83
	inline CSmsCommand& Command();
williamr@2
    84
	inline const CSmsCommand& Command() const;
williamr@2
    85
	inline CSmsStatusReport& StatusReport();
williamr@2
    86
	inline const CSmsStatusReport& StatusReport() const;
williamr@2
    87
	
williamr@2
    88
	inline CSmsMessage& Message();
williamr@2
    89
	inline const CSmsMessage& Message() const;
williamr@2
    90
williamr@2
    91
	inline TBool ReplyPathProvided() const;
williamr@2
    92
	inline void SetReplyPathProvided(TBool aReplyPathProvided);
williamr@2
    93
williamr@2
    94
	inline TBioMsgIdType BioMsgIdType() const;
williamr@2
    95
	inline void SetBioMsgIdType(TBioMsgIdType aBioMsgIdType = EBioMsgIdNbs);
williamr@2
    96
	
williamr@2
    97
	inline TPtrC ServiceCenterAddress() const;
williamr@2
    98
	inline void SetServiceCenterAddressL(const TDesC& aAddress);
williamr@2
    99
williamr@2
   100
	IMPORT_C void SetSmsSettingsL(const CSmsMessageSettings& aSmsSettings);
williamr@2
   101
	IMPORT_C void GetSmsSettingsL(CSmsMessageSettings& aSmsSettings) const;
williamr@2
   102
williamr@2
   103
	inline const CArrayPtrFlat<CSmsNumber>& Recipients() const;
williamr@2
   104
	inline CArrayPtrFlat<CSmsNumber>& Recipients();
williamr@2
   105
williamr@2
   106
	inline void SetFromAddressL(const TDesC& aAddress);
williamr@2
   107
	inline TPtrC FromAddress() const;
williamr@2
   108
	
williamr@2
   109
	TPtrC ReplyAddressL() const;
williamr@2
   110
	
williamr@2
   111
	IMPORT_C void SetEmailFieldsL(const CSmsEmailFields& aEmailFields);
williamr@2
   112
	void SetReplyEmailFieldsL(const CSmsEmailFields& aEmailFields, const TDesC& aReplySubjectFormat);
williamr@2
   113
	void SetForwardEmailFieldsL(const CSmsEmailFields& aEmailFields, const TDesC& aForwardSubjectFormat);
williamr@2
   114
	IMPORT_C const CSmsEmailFields& EmailFields() const;
williamr@2
   115
williamr@2
   116
	IMPORT_C void InternalizeL( RMsvReadStream& aStream);
williamr@2
   117
	IMPORT_C void ExternalizeL( RMsvWriteStream& aStream) const;
williamr@2
   118
williamr@2
   119
	IMPORT_C void RestoreL(CMsvStore& aStore);
williamr@2
   120
	IMPORT_C void StoreL(CMsvStore& aStore) const;
williamr@2
   121
williamr@2
   122
	IMPORT_C  TBool ContainsSmsHeaderL(const CMsvStore& aStore); 
williamr@4
   123
williamr@2
   124
	
williamr@2
   125
private:
williamr@2
   126
	CSmsHeader(CSmsMessage* aSmsMessage = NULL);
williamr@2
   127
	void ConstructL(CSmsPDU::TSmsPDUType aType, CEditableText& aText);
williamr@2
   128
	void ConstructL(CSmsPDU::TSmsPDUType aType, CEditableText& aText, RFs& aFs);
williamr@2
   129
	void ConstructL();
williamr@2
   130
williamr@2
   131
	enum TSmsHeaderFlags
williamr@2
   132
		{
williamr@2
   133
		ESmsHeaderNoFlags			= 0x00,
williamr@2
   134
		ESmsHeaderReplyPathProvided = 0x01,
williamr@2
   135
		ESmsHeaderCanConcatenate	= 0x02
williamr@2
   136
		};
williamr@2
   137
williamr@2
   138
	TBool CanConcatenate() const;
williamr@2
   139
	void SetCanConcatenate(TBool aCanConcatenate);
williamr@2
   140
	
williamr@2
   141
	void SetEmailReplyForwardSubjectL(CSmsEmailFields* aEmailFields, const TDesC& aSubject, const TDesC& aSubjectFormat);
williamr@4
   142
williamr@4
   143
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
williamr@4
   144
	void StoreDbL(CMsvStore& aStore) const;
williamr@4
   145
	void ReStoreDBL(CMsvStore& aStore);
williamr@4
   146
	void GetRecipientL(TDesC16& aRecipientStrList);
williamr@4
   147
	TInt ConvertToTInt(TDesC16& aStr);
williamr@4
   148
#endif
williamr@4
   149
williamr@2
   150
private:
williamr@2
   151
	CArrayPtrFlat<CSmsNumber> iRecipients;
williamr@2
   152
	CSmsMessage* iMessage;
williamr@2
   153
	TUint32 iFlags;
williamr@2
   154
	RFs iFs;
williamr@2
   155
williamr@2
   156
	// iBioMsgIdType is only used during sending and will be ignored if the 
williamr@2
   157
	// TMsvEntry.iBioType == 0. The default is EBioMsgIdNbs.
williamr@2
   158
	TBioMsgIdType iBioMsgIdType;
williamr@2
   159
	CSmsEmailFields*	iEmailFields;
williamr@2
   160
	TBool			iCloseFs;
williamr@2
   161
	};
williamr@2
   162
	
williamr@2
   163
#include <smuthdr.inl>
williamr@2
   164
williamr@2
   165
#endif	// __SMUTHDR_H__
williamr@4
   166