extras/calcsoft/inc/CalcEditline.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:29:54 +0100
branchRCL_3
changeset 21 10c6e6d6e4d9
parent 0 3ee3dfdd8d69
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002 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:  Helper class used by CalcDocument,CCalcContainer etc., 
*                TCalcEditLine.
*                The numerical value and the character sequence of the real 
*                number are held. Addition of a numerical character sequence 
*                and which clear operation are performed.
*
*/


#ifndef     CALCEDITLINE_H
#define     CALCEDITLINE_H


//  INCLUDES
#include <e32std.h>


//  Define maximum charactor number per line
const TInt KCalcMaxDigits(8);
const TInt KCalcMaxNumberWidth(11);
const TInt KCalcMaxEditNumberWidth( 10 );

//  CLASS DEFINITIONS 

/**
TCalcEditLine is Calculation data class.
A line data for 'Editor Sub-Pane'
*/
class   TCalcEditLine
    {
    public:
        enum TCalcOperatorType
            {
            ECalcAdd,
            ECalcSubtract,
            ECalcMultiply,
            ECalcDivide,
            ECalcEqual,
			ECalcSqrt,
			ECalcPercent,
            ECalcOperatorNone
            };    

    public:  // Constructors and destructor
        /**
        * C++ default constructor.
        */
        TCalcEditLine(); 
        
        /**
        * Destructor.
        */
        virtual ~TCalcEditLine(); 
        
        /**
        * Copy constructor.
        */
        TCalcEditLine(const TCalcEditLine& aEditLine); 
        
        /**
        * Assignment operator
        */
        const TCalcEditLine&  operator=(const TCalcEditLine& aEditLine);  

    public:     // New functions
        /**
        * Return string of number 
        * @return String of number.
        */
        inline const TPtrC NumberString() const;
        
        /**
        * Clear a line
        */
        void AllClear();
        
        /**
        * Delete last 1 digit from a line
        */
        void ClearL();
        
        /**
        * Clear number from a line
        */
        void ClearOperand();
        
        /**
        * Return number of a line  
        * @return TReal64 : Operand of a line
        */
        TReal64 NumberL() const;
        
        /**
        * Parameter aNumber is set to a line 
        * @param aNumber 
        */
        void SetNumber(TReal64 aNumber);
        
        /**
        * Append a charactor to number.
        * Leave may occur, KCalcErrEditorSpaceFull.
        * @param aInput : A input which is Appended 
        */
        void AppendL(TChar aInput);
        
		/**
		* Append any character to number before it is 
		* displayed inthe output sheet.
		* Leave may occur, KCalcErrEditorSpaceFull.
        * @param aInput : A char which is Appended 
        */
	    void AppendNumberStringL(TChar aChar);

        /**
        * Change sign of number
        */
        void ChangeSignL();
        
        /**
        * If number of editor is "iii.ddd000...", set number "iii.ddd".
        * Example: 
        *  Number of editor is "12",  number editor is set "12".
        *  Number of editor is "12." or "12.000...", number editor is set "12".
        *  Number of editor is "12.27", number editor is set "12.27".
        *  Number of editor is "12.27000...", number editor is set "12.27".
        * @param aLine : current editor
        */
        void TrimZeroL();  
        
        /**
        * Return operator type of a line.
        * @return TCalcOperatorType : ECalcAdd || ECalcSubtract || 
                                      ECalcMultiply || ECalcDivide ||
                                      ECalcEqual || ECalcOperatorNone
        */
        inline TCalcOperatorType Operator() const;
        
        
        /**
        * Set operator to a line
        * @param aType : operator enum
        */
        inline void SetOperator(const TCalcOperatorType& aType);

        /**
        * Check whether buffer of editline is "0" or not. 
        * @return ETrue :buffer of editline is "0".
        *         EFalse:buffer of editline is not "0".
        *         (Ex) If buffer is "0", return ETrue.
        *              If buffer is "0.0" or "2", return EFalse. 
        */
        TBool CheckZeroL() const;

        /**
        * Changing decimal separator.
        * @param aOld : Old decimal separator
        * @param aNew : New decimal separator  
        */
        void ChangeDecimal(TChar aOld, TChar aNew);
         

    private:    // New functions
        /**
        * Return count of digits.
        * @param aNumber : String of number
        * @return Count of digits. 
        *         E.g argument aNumber is "-226.89", return value is 5.
        */
        TInt NumberDigits() const;

    private:    // Data
        TBuf<KCalcMaxNumberWidth> iNumber; // Operand of a line
        TCalcOperatorType   iOperator; // Operator of a line 
    };

#include "CalcEditLine.inl"

#endif  // __CALCEDITLINE_H__

//  End of File