--- a/omads/omadsextensions/adapters/sms/inc/VMessageParser.h Tue Feb 02 00:02:49 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,352 +0,0 @@
-/*
-* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: CVMessageParser header
-*
-*/
-
-
-#ifndef VMESSAGEPARSER_H
-#define VMESSAGEPARSER_H
-
-#include "OMADSFolderObject.h"
-
-
-// CONSTANTS
-_LIT(KVMsgTagBegin, "BEGIN:");
-_LIT(KVMsgTagEnd, "END:");
-_LIT(KVMsgTagStatus, "X-IRMC-STATUS:");
-_LIT(KVMsgTagBox, "X-IRMC-BOX:");
-_LIT(KVMsgTagVersion, "VERSION:");
-_LIT(KVMsgTagName, "N:");
-_LIT(KVMsgTagTelephone, "TEL:");
-_LIT(KVMsgTagDateTime, "X-NOK-DT:");
-_LIT(KVMsgTagDate, "Date:");
-_LIT(KVMsgSectionVMsg, "VMSG");
-_LIT(KVMsgSectionVCard, "VCARD");
-_LIT(KVMsgSectionVEnv, "VENV");
-_LIT(KVMsgSectionVBody, "VBODY");
-_LIT(KVMsgSectionEndVBody, "END:VBODY");
-_LIT(KVMsgLineFeed, "\n");
-_LIT(KDesNoData, "");
-_LIT(KVMsgVersion, "1.1");
-_LIT(KVMsgVCardVersion, "2.1");
-_LIT(KVMsgStatusRead, "READ");
-_LIT(KVMsgStatusUnread, "UNREAD");
-_LIT(KVMsgStatusSent, "SENT");
-_LIT(KVMsgStatusUnsent, "UNSENT");
-_LIT(KFolderInbox, "INBOX");
-_LIT(KFolderOutbox, "OUTBOX");
-_LIT(KFolderDraft, "DRAFT");
-_LIT(KFolderSent, "SENT");
-_LIT(KFolderMyFolders, "MY FOLDERS");
-_LIT(KFolderUnspesified, "");
-const TInt KIndentStepSize = 1;
-
-
-// FORWARD DECLARATIONS
-class CRichText;
-
-// CLASS DECLARATION
-
-const TInt KNameMaxLength = 32;
-const TInt KNumberMaxLength = 48;
-
-/**
-* Class CVMessageParser
-* Helper class for converting SMS message information to/from text/x-VMessage.
-*/
-class CVMessageParser: public CBase
- {
-public: // Data types
-
- struct TTelephoneNumber
- {
- TBuf<KNameMaxLength> iName;
- TBuf<KNumberMaxLength> iNumber;
- };
-
-public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- */
- static CVMessageParser* NewL();
-
- /**
- * Two-phased constructor leaving item to clenup stack
- */
- static CVMessageParser* NewLC();
-
- /**
- * Destructor.
- */
- ~CVMessageParser();
-
-private: // Private constructors
-
- /**
- * C++ default constructor.
- * C++ default constructor can NOT contain any code, that
- * might leave.
- */
- CVMessageParser();
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
-public: // New functions
-
- /**
- * This function decodes received text/x-vMessage and stores the data
- * to member variables of this class.
- *
- * @param aMessage IN: buffer containing received text/x-vMessage
- * @return TInt Result, Length of SMS message body or negative error code.
- */
- TInt ParseMessageL( const TDesC8& aMessage );
-
- /**
- * This function constructs a text/x-vMessage based on the data stored
- * to member variables of this class.
- *
- * @param aMessage OUT: dynamic buffer where text/x-vMessage is constructed
- */
- void ConstructMessageL( CBufBase& aMessage );
-
- /**
- * Initialises all variables to with default values
- */
- void ResetAll();
-
- /**
- * Loads message body data to given rich text object
- *
- * @param aMsgBody where to load the data
- */
- void LoadMessageBodyL( CRichText& aMsgBody );
-
- /**
- * Stores message body data from given rich text object
- *
- * @param aMsgBody where from store the data
- */
- void StoreMessageBodyL( CRichText& aMsgBody );
-
- /**
- * Parses telephone number and name from the string containing number and possibly contact name
- *
- * @param aNumberSring IN: String from which to parse the number (like "Abc Pqr <+0123456789>")
- * @param aNumberStore OUT: Variable where to store the output data
- * @return TBool ETrue if operation was successful
- */
- TBool ParseTelephoneNumber(const TDesC& aNumberString, TTelephoneNumber& aNumberStore);
-
-private: // Internal functions used by ReadMessage()
-
- /**
- * Reads and decodes text/x-VMessage header.
- *
- * @return TInt KErrNone or negative error code
- */
- TInt ReadMessageHeader();
-
- /**
- * Reads and decodes envelope part of text/x-VMessage header.
- * There can be multiple envelopes, which are handled recursively.
- *
- * @return TInt KErrNone or negative error code
- */
- TInt ReadEnvelope();
-
- /**
- * Reads and parses time stamp field found from vMessage starting from the current read position.
- * Note that this field is optional.
- *
- * @param aTimetstamp IN: Timestamp field found from vMessage
- * @param aUniversalTime OUT: Parsed timestand as universal time
- * @return TInt KErrNone if operation succeeded
- */
- TInt ReadTaggedTimeStamp( TTime& aUniversalTime );
-
- /**
- * Reads and decodes text/x-VMessage body.
- *
- * @return TInt Length of message body or negative value in error case
- */
- TInt ReadMessageBodyL();
-
- /**
- * Raeds VCARD section of text/x-vMessage - contains cotact information
- *
- * @param aResult telephone number and contact name found is stored here
- * @return TInt Result
- */
- TInt ReadVCard(TTelephoneNumber& aResult);
-
- /**
- * Searches next given message tag with given value from text/x-VMessage
- *
- * @param aMsgTag IN: Message tag to be found
- * @param aValue IN: Expected value of the message tag to be found
- * @return TInt Result, Starting point of the message tag. KErrNotFound if not found.
- */
- TInt FindMessageTagWithValue( const TDesC& aMsgTag, const TDesC& aValue );
-
- /**
- * Searches next given message tag from text/x-VMessage and gets it's value
- * Value is expected to start from tag and end to newline.
- *
- * @param aMsgTag IN: Message tag to be found
- * @param aValue OUT: Value of the message tag
- * @param aMoveReadPosition IN: whether moving start point of seach for the next field forward or not
- * @return TInt Result, Starting point of the message tag. KErrNotFound if not found.
- */
- TInt GetMessageTagValue( const TDesC& aMsgTag, TDes& aValue, TBool aMoveReadBufPos = ETrue );
-
- /**
- * Stores a portion of message data from text/x-vMessage to local descriptor varķable.
- * Conversion from TDes8 to TDes16 is done and sufficient length of local descriptor
- * is checked - no more bytes than maximum length of the descriptor will be copied.
- *
- * @param aStart IN: Start point of data to be copied in text/x-vMessage
- * @param aLength IN: Length of data to be copied
- * @param aLocalStore OUT: Place where the data will be copied
- */
- void StoreMessageDataField(TInt aStart, TInt aLength, TDes& aLocalStore);
-
-private: // Internal functions used by WriteMessageL()
-
- /**
- * Writes message properties to text/x-VMessage header.
- */
- void WriteMessagePropertiesL();
-
- /**
- * Writes message VCARD information to text/x-VMessage header.
- */
- void WriteMessageVCARDL(const TDesC& aName, const TDesC& aNumber);
-
- /**
- * Writes message envelope information to text/x-VMessage header.
- */
- void WriteMessageEnvelopeL();
-
- /**
- * Writes tagged timestamp field to vMessage in format
- * X-NOK-DT:yyyymmddThhmmssZ (universal time format)
- *
- * @param aUniversalTime IN: Time value to be used
- */
- void WriteTaggedTimestampL( TTime aUniversalTime );
-
- /**
- * Writes message body to text/x-VMessage.
- */
- void WriteMessageBodyL();
-
- /**
- * Writes one line to text/x-vMessage
- *
- * @param aMsgTag IN: Message tag to use
- * @param aMsgTagData IN: Message tag value to use
- * @param aIndent IN: Whether indentication is used or not
- */
- void WriteMessageLineL( const TDesC& aMsgTag, const TDesC& aMsgTagData, TBool aIndent = EFalse );
-
- /**
- * Writes given data to text/x-vMessage.
- * Size of pre-allocated dynamic buffer is checked and new size allocated if necessary.
- *
- * @param aDate IN: Data to be written
- */
- void WriteToMessageL( const TDesC& aData );
-
- /**
- * Gets currect indentication level for writing message line.
- *
- * @param aMsgTag IN: Message tag used in the line
- */
- TInt GetIndentLevel( const TDesC& aMsgTag );
-
- /**
- * Fills fixed size buffer with given data in safe way so that max size will not be exeeded.
- *
- * @param aData IN: Input data
- * @param aBuffer OUT: Buffer to fill
- */
- void AssignDataToBuffer( const TDesC& aData, TDes& aBuffer );
-
-
-
-
-
-public: // Public member variables. Contain text/x-vMessage data.
-
-
- /**
- * Actual message body is stored here
- */
- HBufC* iMessageBody;
-
- /**
- * Message time stamp in universal time
- */
- TTime iUniversalTime;
-
- /**
- * Message time stamp in home time
- */
- TTime iHomeTime;
-
- /**
- * Message folder name
- */
- TBuf<KMaxFolderNameLength> iFolder;
-
- /**
- * Message status
- */
- TBuf<8> iStatus;
-
- /**
- * Sender phone number
- */
- TTelephoneNumber iSender;
-
- /**
- * Recipient phone numbers
- */
- RArray<TTelephoneNumber> iRecipients;
-
-private: // Internal member variables
-
- /**
- * Internal variables used for parsing vMessage
- */
- TInt iReadBufPosition;
- TPtrC iReadBuf;
-
- /**
- * Internal variables used for constructing vMessage
- */
- TInt iWriteBufPosition;
- TInt iWriteBufSize;
- TInt iWriteIndentLevel;
- CBufBase* iWriteBuf;
-
- };
-
-#endif // VMESSAGEPARSER_H