williamr@2: // Copyright (c) 2006-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@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // This file defines the container class CSmsNonIEOperation and its specialisations. williamr@2: // The classes provide interfaces that allow the client to operate on a number williamr@2: // of features which are not associated with Information Elements. williamr@2: // williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: */ williamr@2: williamr@2: #ifndef __GSMUNONIEOPERATIONS_ williamr@2: #define __GSMUNONIEOPERATIONS_ williamr@2: williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: /** williamr@2: * SMS Stack clients use specialisations of this class to configure a SMS Message with parameters which are not williamr@2: * a type of Information Element. williamr@2: * williamr@2: * Each parameter that uses this interface is supported by a class derived from CSmsNonIEOperation. williamr@2: * The derived class operates on the CSmsMessage, allowing the client to add, remove and access these parameters williamr@2: * inside the CSmsMessage. williamr@2: * williamr@2: * The client gets access to an operations class using the following interface: williamr@2: * williamr@2: * CSmsNonIEOperation& CSmsMessage::GetOperationsForNonIEL(TSmsNonIEIdentifier aId); williamr@2: * williamr@2: * When the CSmsMessage is deleted, all its associated CSmsNonIEOperations classes are also deleted and references to williamr@2: * them become stale. Each instance of the CSmsNonIEOperation Class is an attribute of the CSmsMessage itself. williamr@2: * williamr@2: * @publishedAll williamr@2: */ williamr@2: class CSmsNonIEOperation : public CBase williamr@2: { williamr@2: public: williamr@2: static CSmsNonIEOperation* NewL(TSmsNonIEIdentifier aId, CSmsMessage& aMessage); williamr@2: IMPORT_C TSmsNonIEIdentifier Id() const; williamr@2: virtual ~CSmsNonIEOperation(){}; williamr@2: protected: williamr@2: virtual TBool MessageTypeSupported() const; williamr@2: virtual void ValidateOperationL() const {}; williamr@2: private: williamr@2: void ConstructL(); williamr@2: private: williamr@2: TSmsNonIEIdentifier iId; williamr@2: protected: williamr@2: CSmsMessage& iMessage; williamr@2: CSmsNonIEOperation(TSmsNonIEIdentifier aId, CSmsMessage& aMessage); williamr@2: void operator=(const CSmsNonIEOperation&); williamr@2: TBool operator==(const CSmsNonIEOperation&); williamr@2: }; williamr@2: williamr@2: class CSmsCtrlNonIEOperation : public CSmsNonIEOperation williamr@2: { williamr@2: protected: williamr@2: CSmsCtrlNonIEOperation(TSmsNonIEIdentifier aId, CSmsMessage& aMessage); williamr@2: ~CSmsCtrlNonIEOperation(){}; williamr@2: void operator=(const CSmsCtrlNonIEOperation&); williamr@2: TBool operator==(const CSmsCtrlNonIEOperation&); williamr@2: }; williamr@2: williamr@2: class CSmsTPSRROperations : public CSmsCtrlNonIEOperation williamr@2: { williamr@2: public: williamr@2: CSmsTPSRROperations(TSmsNonIEIdentifier aId, CSmsMessage& aMessage); williamr@2: ~CSmsTPSRROperations() {}; williamr@2: IMPORT_C TInt GetStatusReport(TUint aSegmentSequenceNum) const; williamr@2: IMPORT_C void SetLastSegmentStatusReportL(TBool aEnable); williamr@2: IMPORT_C TInt SetSegmentStatusReportL(TUint aSegmentSequenceNum, TBool aEnable); williamr@2: IMPORT_C void SetSchemeL(); williamr@2: IMPORT_C TSmsStatusReportScheme GetScheme() const; williamr@2: IMPORT_C void ResetSchemeL(); williamr@2: IMPORT_C void SetDefaultL(TBool aEnable); williamr@2: protected: williamr@2: void ValidateOperationL() const; williamr@2: void operator=(const CSmsTPSRROperations&); williamr@2: TBool operator==(const CSmsTPSRROperations&); williamr@2: }; williamr@2: williamr@2: /** williamr@2: * This class will store the incomplete class 0 message information. williamr@2: * williamr@2: * williamr@2: * The object of this class will be stored inside CSmsMessageAdditionalAttributes class. williamr@2: * This class will provide 2 exported functions which will allow the caller of this class williamr@2: * to get/set incomplete class 0 message information. williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: class CIncompleteClass0MessageInfo : public CSmsNonIEOperation williamr@2: { williamr@2: public: williamr@2: CIncompleteClass0MessageInfo(TSmsNonIEIdentifier aId, CSmsMessage& aMessage); williamr@2: IMPORT_C void GetIncompleteMessageInfoL(TInt& aStartPos, TInt& aEndPos, TBool& aIsLastIncompleteMessage); williamr@2: IMPORT_C void SetIncompleteMessageInfoL(TInt aStartPos, TInt aEndPos, TBool aIsLastIncompleteMessage); williamr@2: TInt Version(); williamr@2: void SetVersion(TInt aVersion); williamr@2: void InternalizeL(RReadStream& aStream); williamr@2: void ExternalizeL(RWriteStream& aStream) const; williamr@2: williamr@2: protected: williamr@2: TBool MessageTypeSupported() const; williamr@2: void ValidateOperationL() const; williamr@2: void operator=(const CIncompleteClass0MessageInfo&); williamr@2: TBool operator==(const CIncompleteClass0MessageInfo&); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * Incomplete Class 0 Message versions williamr@2: */ williamr@2: enum TSmsIncompleteClass0MessageVersion williamr@2: { williamr@2: /** The default value. */ williamr@2: ESmsIncompleteClass0MessageV0, williamr@2: // for all other versions the corresponding enum values would be added i.e. ESmsIncompleteClass0MessageV1, etc. williamr@2: EMaxSmsIncompleteClass0MessageV williamr@2: }; williamr@2: williamr@2: private: williamr@2: /** williamr@2: * iVersion is the version of CIncompleteClass0MessageInfo. This parameter will be williamr@2: * used to identify what iAdditionalInfo points to for that particular williamr@2: * version of CIncompleteClass0MessageInfo williamr@2: */ williamr@2: TInt iVersion; williamr@2: williamr@2: TInt iStartPos; williamr@2: TInt iEndPos; williamr@2: TBool iIsLastIncompleteMessage; williamr@2: }; williamr@2: williamr@2: #endif