williamr@2: // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@4: // SMUTHDR.H williamr@2: // williamr@4: /** williamr@4: * @file williamr@4: * @publishedAll williamr@4: * @released williamr@4: */ williamr@2: #ifndef __SMUTHDR_H__ williamr@2: #define __SMUTHDR_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@4: #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS williamr@4: #include williamr@4: #endif williamr@4: williamr@2: class RMsvReadStream; williamr@2: class RMsvWriteStream; williamr@2: class CMsvStore; williamr@2: class CSmsEmailFields; williamr@2: williamr@2: /** williamr@2: The SMS MTM encapsulation of an SMS message. williamr@2: williamr@2: This class allows a messaging client to access the lower-level message encapsulation williamr@2: used by the SMS stack. williamr@2: williamr@2: It also provides functionality to restore and store an SMS message from/to the williamr@2: message store. williamr@2: williamr@2: An SMS message is encapsulated in a Protocol Data Unit (PDU). In GSM there are williamr@2: six types of SMS message PDU. In the descriptions below, SC means Service Center williamr@2: and MS means Mobile Station (the phone). williamr@2: williamr@2: 1. SMS-DELIVER - sent from SC to MS williamr@2: williamr@2: 2. SMS-DELIVER-REPORT - sent from MS to SC williamr@2: williamr@2: 3. SMS-SUBMIT - sent from MS to SC williamr@2: williamr@2: 4. SMS-SUBMIT-REPORT - sent from SC to MS williamr@2: williamr@2: 5. SMS-STATUS-REPORT - sent from SC to MS williamr@2: williamr@2: 6. SMS-COMMAND - sent from MS to SC williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@4: NONSHARABLE_CLASS (CSmsHeader) : public CBase williamr@2: { williamr@2: public: williamr@2: williamr@2: IMPORT_C static CSmsHeader* NewL(CSmsPDU::TSmsPDUType aType,CEditableText& aText); williamr@2: IMPORT_C static CSmsHeader* NewL(CSmsPDU::TSmsPDUType aType,CEditableText& aText,RFs& aFs); williamr@2: IMPORT_C static CSmsHeader* NewL(CSmsMessage* aMessage); williamr@2: IMPORT_C ~CSmsHeader(); williamr@2: williamr@2: inline CSmsPDU::TSmsPDUType Type() const; williamr@2: williamr@2: inline CSmsSubmit& Submit(); williamr@2: inline const CSmsSubmit& Submit() const; williamr@2: inline CSmsDeliver& Deliver(); williamr@2: inline const CSmsDeliver& Deliver() const; williamr@2: inline CSmsCommand& Command(); williamr@2: inline const CSmsCommand& Command() const; williamr@2: inline CSmsStatusReport& StatusReport(); williamr@2: inline const CSmsStatusReport& StatusReport() const; williamr@2: williamr@2: inline CSmsMessage& Message(); williamr@2: inline const CSmsMessage& Message() const; williamr@2: williamr@2: inline TBool ReplyPathProvided() const; williamr@2: inline void SetReplyPathProvided(TBool aReplyPathProvided); williamr@2: williamr@2: inline TBioMsgIdType BioMsgIdType() const; williamr@2: inline void SetBioMsgIdType(TBioMsgIdType aBioMsgIdType = EBioMsgIdNbs); williamr@2: williamr@2: inline TPtrC ServiceCenterAddress() const; williamr@2: inline void SetServiceCenterAddressL(const TDesC& aAddress); williamr@2: williamr@2: IMPORT_C void SetSmsSettingsL(const CSmsMessageSettings& aSmsSettings); williamr@2: IMPORT_C void GetSmsSettingsL(CSmsMessageSettings& aSmsSettings) const; williamr@2: williamr@2: inline const CArrayPtrFlat& Recipients() const; williamr@2: inline CArrayPtrFlat& Recipients(); williamr@2: williamr@2: inline void SetFromAddressL(const TDesC& aAddress); williamr@2: inline TPtrC FromAddress() const; williamr@2: williamr@2: TPtrC ReplyAddressL() const; williamr@2: williamr@2: IMPORT_C void SetEmailFieldsL(const CSmsEmailFields& aEmailFields); williamr@2: void SetReplyEmailFieldsL(const CSmsEmailFields& aEmailFields, const TDesC& aReplySubjectFormat); williamr@2: void SetForwardEmailFieldsL(const CSmsEmailFields& aEmailFields, const TDesC& aForwardSubjectFormat); williamr@2: IMPORT_C const CSmsEmailFields& EmailFields() const; williamr@2: williamr@2: IMPORT_C void InternalizeL( RMsvReadStream& aStream); williamr@2: IMPORT_C void ExternalizeL( RMsvWriteStream& aStream) const; williamr@2: williamr@2: IMPORT_C void RestoreL(CMsvStore& aStore); williamr@2: IMPORT_C void StoreL(CMsvStore& aStore) const; williamr@2: williamr@2: IMPORT_C TBool ContainsSmsHeaderL(const CMsvStore& aStore); williamr@4: williamr@2: williamr@2: private: williamr@2: CSmsHeader(CSmsMessage* aSmsMessage = NULL); williamr@2: void ConstructL(CSmsPDU::TSmsPDUType aType, CEditableText& aText); williamr@2: void ConstructL(CSmsPDU::TSmsPDUType aType, CEditableText& aText, RFs& aFs); williamr@2: void ConstructL(); williamr@2: williamr@2: enum TSmsHeaderFlags williamr@2: { williamr@2: ESmsHeaderNoFlags = 0x00, williamr@2: ESmsHeaderReplyPathProvided = 0x01, williamr@2: ESmsHeaderCanConcatenate = 0x02 williamr@2: }; williamr@2: williamr@2: TBool CanConcatenate() const; williamr@2: void SetCanConcatenate(TBool aCanConcatenate); williamr@2: williamr@2: void SetEmailReplyForwardSubjectL(CSmsEmailFields* aEmailFields, const TDesC& aSubject, const TDesC& aSubjectFormat); williamr@4: williamr@4: #if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB) williamr@4: void StoreDbL(CMsvStore& aStore) const; williamr@4: void ReStoreDBL(CMsvStore& aStore); williamr@4: void GetRecipientL(TDesC16& aRecipientStrList); williamr@4: TInt ConvertToTInt(TDesC16& aStr); williamr@4: #endif williamr@4: williamr@2: private: williamr@2: CArrayPtrFlat iRecipients; williamr@2: CSmsMessage* iMessage; williamr@2: TUint32 iFlags; williamr@2: RFs iFs; williamr@2: williamr@2: // iBioMsgIdType is only used during sending and will be ignored if the williamr@2: // TMsvEntry.iBioType == 0. The default is EBioMsgIdNbs. williamr@2: TBioMsgIdType iBioMsgIdType; williamr@2: CSmsEmailFields* iEmailFields; williamr@2: TBool iCloseFs; williamr@2: }; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif // __SMUTHDR_H__ williamr@4: