cbs/CbsServer/ServerInc/CCbsRecDecoder.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:45:17 +0300
branchRCL_3
changeset 19 7d48bed6ce0c
parent 0 ff3b6d0fd310
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2003 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:  This file contains the header file of the CCbsRecDecoder class
*
*/


#ifndef CCBSRECDECODER_H
#define CCBSRECDECODER_H

//  INCLUDES

#include <e32base.h>
#include <f32file.h>

// FORWARD DECLARATIONS

class CCnvCharacterSetConverter;
class CCbsRecMessage;
class CCbsRecWcdmaMessage;
class CCbsMessage;

// CLASS DECLARATION

/**
*   CCbsRecDecoder handles decoding of message contents.
*
*   CbsServer receives messages stored in 8-bit descriptors
*   from ETel. This class converts them into 16-bit descriptors
*   and decodes the message representation into UCS-2 (which
*   is used by Symbian OS internally). 
*  
*/
class CCbsRecDecoder : public CBase
    {
    public:  // Constructors and destructor
        
        /**
        *   Two-phased constructor.
        *
        *   @returns                    New instance of CCbsRecDecoder.
        */
         static CCbsRecDecoder* NewL();
        
        /**
        *   Destructor.
        */
        virtual ~CCbsRecDecoder();

    public:  // New functions

        /**
        *   Decodes message page into Unicode representation.
        *
        *   If the message has a language indication prefixed
        *   in the message body, the indication is removed.
        *
        *   Compressed messages are not supported.
        *   
        *   Leave reasons:
        *   KErrNotSupported    Message compressed or of unsupported character
        *                       coding.
        *   KErrNoMemory        OOM.
        *   KErrGeneral         Failed due to other reasons.
        *
        *   @param aMessage Message page.
        */
        void DecodeL( CCbsMessage& aMessage );
      
    private:  // New functions

        // Default constructor.
        CCbsRecDecoder();

        // Prohibited copy constructor.
        CCbsRecDecoder( const CCbsRecDecoder& );

        // Prohibited assignment operator.
        CCbsRecDecoder& operator=( const CCbsRecDecoder& );

        /**
        *   2nd-phase constructor. 
        */
        void ConstructL();

        /**
        *   Decodes the given message's content.
        *
        *   @param aMessage             CB message
        */
        void DoDecodeL( CCbsMessage& aMessage );

        /**
        *   Decodes 8-bit and Unicode message representations.
        *
        *   @param aMsg                 CB message encoded in UCS2
        */
        void UnicodeDecodeL( CCbsMessage& aMsg );

        /**
        *   Decodes 7-bit message representation.
        *
        *   @param aMsg                 CB message encoded in 7-bit
        */
        void DefaultAlphabetDecodeL( CCbsMessage& aMsg );
        
        /**
        *   Decodes 8-bit message representation.
        *
        *   @param aMsg                 CB message encoded in 8-bit
        */
        void EightbitAlphabetDecodeL( CCbsMessage& aMsg );

        /**
        *   Removes the trailing CRs from a message.
        *
        *   @param aText                Text from which the CR is to be removed
        */
        TPtrC RemoveTrailingCR( const TDesC& aText );
        
        /**
        *   Removes trailing CRs and LFs from a 7-bit Cell info message.
        *
        *   @param aText                Text from which the CR is to be removed
        *   @return                     Text with no CRs or LFs        
        */
        TPtrC8 RemoveTrailingControlChars( const TDesC8& aText );
        
   private:    // Data
        // Own: character converter for 8-bit and UCS2 encodings
        CCnvCharacterSetConverter* iConverter;

        // File server session
        RFs iFs;
    };

#endif      // CBSRECDECODER_H
            
// End of File