/** 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: Define CCalcHistory class. This class is handled historical * line of the calculator. **/// INCLUDE FILES#include "CalcEditline.h" #include "CalcHistory.h" // LOCAL CONSTANTS AND MACROS // ================= MEMBER FUNCTIONS =======================// C++ default constructor can NOT contain any code, that// might leave.//CCalcHistory::CCalcHistory(): iNewestIndex(KCalcMaxHistoryLines - 1) { iHistory[iNewestIndex].AllClear(); }// DestructorCCalcHistory::~CCalcHistory() { }// Assignment operator// This inplementation depends on how to have history data. // Refer to description of member data, CCalcHistory.h // const TCalcEditLine& CCalcHistory::operator[] (TInt aIndex) // Get (aIndex + 1)th latest history line { TInt lineIndex(iNewestIndex - aIndex); if ( lineIndex < 0 ) { lineIndex += KCalcMaxHistoryLines; } return iHistory[lineIndex]; }// ---------------------------------------------------------// CCalcHistory::Count// Return count of histoical lines.// (other items were commented in a header).// ---------------------------------------------------------//TInt CCalcHistory::Count() const { return iCount; }// ---------------------------------------------------------// CCalcHistory::Add// This inplementation depends on how to have history data. // Refer to description of member data, CCalcHistory.h // (other items were commented in a header).// ---------------------------------------------------------//void CCalcHistory::Add (const TCalcEditLine aLine) { if ( iNewestIndex == (KCalcMaxHistoryLines - 1) ) { iNewestIndex = 0; } else { iNewestIndex++; } if ( iCount < KCalcMaxHistoryLines ) { iCount++; } iHistory[iNewestIndex] = aLine; }// ---------------------------------------------------------// CCalcHistory::ClearHistory// Clear calculation history.// (other items were commented in a header).// ---------------------------------------------------------//void CCalcHistory::ClearHistory() { iCount = 0; iNewestIndex = KCalcMaxHistoryLines - 1; for (TInt cnt(0); cnt < KCalcMaxHistoryLines; cnt++) { iHistory[cnt].AllClear(); } }// ---------------------------------------------------------// CCalcHistory::NotifyChangeDecimal// Call when decimal separator is changed.// (other items were commented in a header).// ---------------------------------------------------------//void CCalcHistory::NotifyChangeDecimal(TChar aOld, TChar aNew) { for (TInt cnt(0); cnt < iCount; cnt++) { iHistory[cnt].ChangeDecimal(aOld, aNew); } }// End of File