homescreenpluginsrv/hspstools/inc/hspslogbus.h
author jake
Tue, 13 Apr 2010 15:07:27 +0300
branchv5backport
changeset 56 7b5c31fac191
parent 0 79c6a41cd166
permissions -rw-r--r--
Many of the components were not compilingm,because bld.inf had undefined flag #ifdef RD_CUSTOMIZABLE_AI. All the flags removed now. Components do not compile right away. E.g. many icons are missing and need to be copied from Symbian3. See example from MCSPlugin. Shortcut plugin does not need to be compiled as MCSPlugin replaces it.

/*
* Copyright (c) 2008 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:  Header for Base class for log busses.
*
*/


#ifndef HSPS_LOGBUS_H
#define HSPS_LOGBUS_H

// INCLUDES
#include <e32std.h>
#include <e32base.h>

// CLASS DECLARATION

/**
 * Base class for log busses. Not instanciable.
 * 
 * @lib hspsTools.lib
 * @since S60 5.0
 * @ingroup group_homescreenpluginservice_tools
 */
class ChspsLogBus : public CBase, TDes16Overflow, TDes8Overflow
    {
public:
    /**
     * Destructor.
     */
    IMPORT_C ~ChspsLogBus();

    /**
     * Log formattable 16bit string.
     * 
     * @since S60 5.0
     * @param aFmt  String to be logged. May contain format specifiers, but
     *              those must match with additional arguments given.
     *        ...   Data to be inserted to formatted string.
     */    
    IMPORT_C void LogText( TRefByValue<const TDesC16> aFmt, ... );

    /**
     * Log formattable 8bit string.
     * 
     * @since S60 5.0
     * @param aFmt  String to be logged. May contain format specifiers, but
     *              those must match with additional arguments given.
     *        ...   Data to be inserted to formatted string.
     */    
    IMPORT_C void LogText( TRefByValue<const TDesC8> aFmt, ... );    
    
protected:
    /**
     * This method must be overwritten in inherited class (implementation).
     * Implementation must log given string using logging channel of
     * it's choice.
     * 
     * @param aMessage Message to be logged.
     */    
    virtual void _LogText( const TDesC& aMessage ) = 0;

    /**
     * This method is used to query max. line length from inheriting object.
     * Default implementation returns 128.
     * This value is used to crop descriptors before _LogText is called.
     * 
     * @return  TInt    Max line length supported by this log bus.
     */    
    virtual TInt MaxLineLen() const;    
    
    /**
     * Constructor for performing 1st stage construction.
     */
    IMPORT_C ChspsLogBus();    
    
private: // Methods.
    /**
     * Create a heap descriptor using given arguments.
     * 
     * @param   aFmt    Descriptor
     * @param   aList   Variable length argument list.
     * @return  HBufC*  Pointer to created heap descriptor. OWNERSHIP TRANSFERRED
     *                  TO CALLER.
     */    
    HBufC* FormatMessage( TRefByValue<const TDesC16> aFmt, VA_LIST aList );

    /**
     * From TDes16Overflow.
     * 
     * Handles the overflow.
    
     * This function is called when the TDes16::AppendFormat() 
     * variant that takes an overflow handler argument, fails.    
     * 
     * @param aDes  The 16-bit modifiable descriptor whose overflow results in the 
     *              call to this overflow handler.
     * 
     */    
    void Overflow( TDes16& aDes );    

    /**
     * Create a heap descriptor using given arguments.
     * 
     * @param   aFmt    Descriptor
     * @param   aList   Variable length argument list.
     * @return  HBufC*  Pointer to created heap descriptor. OWNERSHIP TRANSFERRED
     *                  TO CALLER.
     */    
    HBufC* FormatMessage( TRefByValue<const TDesC8> aFmt, VA_LIST aList );

    /**
     * From TDes8Overflow.
     * 
     * Handles the overflow.
    
     * This function is called when the TDes16::AppendFormat() 
     * variant that takes an overflow handler argument, fails.    
     * 
     * @param aDes  The 16-bit modifiable descriptor whose overflow results in the 
     *              call to this overflow handler.
     * 
     */    
    void Overflow( TDes8& aDes );     

    /**
     * Crops text according to max line and then calls
     * inherited class' _LogText. 
     * 
     * @param   aText   Message to be logged.
     */
    void CropAndLogText( const TDesC& aText );
    
private: // Data.    
    /**
     * Internal flag to indicate possible overflow.
     */
    TBool iOverflow;
    };

#endif // HSPS_LOGBUS_H