--- a/extras/calcsoft/src/CalcOutSheet.cpp Thu Aug 19 09:56:23 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,821 +0,0 @@
-/*
-* 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: The OutputSheet sub-pane class, CCalcOutputSheet.
-* Derived from CCoeControl.
-* The CCalcOutputSheet displays histroy data.
-* History data is scroll up and down.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <AknUtils.h>
-#include <Calcsoft.rsg>
-#include <applayout.cdl.h>
-#include <AknsDrawUtils.h>
-#include <layoutmetadata.cdl.h>
-#include "CalcEnv.h"
-#include "CalcCont.h"
-#include "CalcOutSheet.h"
-#include "CalcDoc.h"
-#include "CalcEditline.h"
-#include "CalcAppUi.h"
-#include "CalcHistory.h"
-#include "CalcDrawingConst.laf"
-#include "fbs.h"
-#include <AknIconUtils.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <AknsBasicBackgroundControlContext.h>
-#include <AknFepInternalCRKeys.h>
-
-
-#include <eiksbfrm.h>
-#include <eikscrlb.h>
-
-// LOCAL CONSTANTS AND MACROS
-
-// ================= MEMBER FUNCTIONS =======================
-
-// Two-phased constructor.
-CCalcOutputSheet* CCalcOutputSheet::NewL(
- CCalcContainer* aContainer)
- {
- CCalcOutputSheet* self = new (ELeave) CCalcOutputSheet();
- CleanupStack::PushL(self);
- self->ConstructL(aContainer);
- CleanupStack::Pop(self);
- return self;
- }
-
-// Destructor
-CCalcOutputSheet::~CCalcOutputSheet()
- {
- delete iOpSheetContext;
- if(iOperatorLayout)
- {
- iOperatorLayout->Reset();
- delete iOperatorLayout;
- }
- if(iOperandLayout)
- {
- iOperandLayout->Reset();
- delete iOperandLayout;
- }
- if(iEqualLineLayout)
- {
- iEqualLineLayout->Reset();
- delete iEqualLineLayout;
- }
- if(iResultsLineLayout)
- {
- iResultsLineLayout->Reset();
- delete iResultsLineLayout;
- }
- if (iCRKey)
- {
- delete iCRKey;
- iCRKey = NULL;
- }
-
- //Delete the scrollbar frame
- if(iSBFrame)
- {
- delete iSBFrame;
- iSBFrame = NULL;
- }
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::ScrollToBottomL
-// Scroll to bottom line.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::ScrollToBottomL()
- {
- iScrollOffset = 0;
-
- //If scrollbar is present, update the scrollbar as well
- if( AknLayoutUtils::PenEnabled() )
- {
- UpdateScrollIndicatorL();
- }
- DrawNow();
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::NotifyClearHistory
-// Called after clearing calculation history.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::NotifyClearHistoryL()
- {
- iScrollOffset = 0;
- if( AknLayoutUtils::PenEnabled() )
- {
- UpdateScrollIndicatorL();
- }
- DrawNow();
- }
-
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::CanUp
-// Check whether scroll-up can be done or not.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TBool CCalcOutputSheet::CanUp() const
- {
- // The number of lines of the history which a document has is got.
- TInt historyLine(iCalcHistory->Count());
- if ( (iCalcOutputSheetLines + iScrollOffset) < historyLine )
- {
- return ETrue;
- }
- return EFalse;
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::CanDown
-// Check whether scroll-down can be done or not.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TBool CCalcOutputSheet::CanDown() const
- {
- // The number of lines of the history which a document has is got.
- return (iScrollOffset != 0);
- }
-
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::ScrollUp
-// history is scrolled up.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::ScrollUp()
- {
-
- if (CanUp())
- {
- iScrollOffset++;
- DrawNow();
- }
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::ScrollDown
-// history is scrolled down.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::ScrollDown()
- {
-
- if (CanDown())
- {
- iScrollOffset--;
- DrawNow();
- }
- }
-
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-CCalcOutputSheet::CCalcOutputSheet()
- {
- }
-
-// default constructor can leave.
-void CCalcOutputSheet::ConstructL
- (CCalcContainer* aContainer)
-
- {
- SetContainerWindowL(*aContainer);
-
- iCalcContainer = aContainer;
-
- iCalcAppEnv = CCalcAppEnv::Static();
- iCalcPaper = iCalcAppEnv->PaperBitmap();
- iCalcAppEnv->ScalablePaperBitmaps(iCalcScalablePaper);
-#ifdef __SCALABLE_ICONS
- iCalcResultsLine = iCalcAppEnv->ResultsLineBitmap();
-#endif
-
- CCalcAppUi* appui = iCalcAppEnv->AppUi();
- CCalcDocument* calcDocument =
- STATIC_CAST(CCalcDocument*, appui->Document());
- iCalcHistory = calcDocument->History();
- TAknLayoutScalableParameterLimits listLimits;
- listLimits = AknLayoutScalable_Apps::list_calc_item_pane_ParamLimits();
- iCalcOutputSheetLines = (listLimits.LastRow()-listLimits.FirstRow()) + 1;
- iOpSheetContext = CAknsBasicBackgroundControlContext::NewL(KAknsIIDQsnFrCalcPaper , TRect(0,0,0,0), EFalse);
- iOperatorLayout = new(ELeave)CArrayFixFlat<TAknLayoutText>(iCalcOutputSheetLines);
- iOperandLayout = new(ELeave)CArrayFixFlat<TAknLayoutText>(iCalcOutputSheetLines);
- iResultsLineLayout = new(ELeave)CArrayFixFlat<TAknLayoutRect>(iCalcOutputSheetLines-1);
- iEqualLineLayout = new(ELeave)CArrayFixFlat<TAknLayoutRect>(iCalcOutputSheetLines-1);
- iUiLanguage = User::Language();
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::SizeChanged
-// Set size of control.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::SizeChanged()
- {
- TRAP_IGNORE( SizeChangedOutSheetL() );
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::SizeChanged
-// Set size of control.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::SizeChangedOutSheetL()
- {
- TRect parentRect(iCalcContainer->Rect());
-
- TAknLayoutScalableParameterLimits listLimits;
- if(AknLayoutUtils::PenEnabled())
- {
- listLimits = AknLayoutScalable_Apps::list_calc_item_pane_ParamLimits(enTouch_enabled);
- }
- else
- {
- listLimits = AknLayoutScalable_Apps::list_calc_item_pane_ParamLimits(enTouch_disabled);
- }
- iCalcOutputSheetLines = (listLimits.LastRow()-listLimits.FirstRow()) + 1;
- iOperatorLayout->ResizeL(iCalcOutputSheetLines);
- iOperandLayout->ResizeL(iCalcOutputSheetLines);
- iResultsLineLayout->ResizeL(iCalcOutputSheetLines-1);
- iEqualLineLayout->ResizeL(iCalcOutputSheetLines-1);
-
- iOperatorLayout->Reset();
- iOperandLayout->Reset();
- iResultsLineLayout->Reset();
- iEqualLineLayout->Reset();
-
- TAknLayoutRect rectParent;
- TAknWindowLineLayout layoutOfParentResultsLine;
- TAknLayoutRect rectListCalcPane;
-
-
-
- if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
- {
- TAknWindowLineLayout calcPaperPane;
-
- //For Touch UI Layouts, different configuration
- if( AknLayoutUtils::PenEnabled() )
- {
- if (Layout_Meta_Data::IsLandscapeOrientation())
- {
- calcPaperPane = AknLayoutScalable_Apps::calc_paper_pane(enTouch_with_lsc).LayoutLine();
- }
- else
- {
- calcPaperPane = AknLayoutScalable_Apps::calc_paper_pane(enTouch_with_prt).LayoutLine();
- }
- }
- else
- {
- calcPaperPane = AknLayoutScalable_Apps::calc_paper_pane(enTouch_disabled).LayoutLine();
- }
- TAknLayoutRect rectcalcPaperPane;
- rectcalcPaperPane.LayoutRect(parentRect,calcPaperPane);
- iSBBrPoint = rectcalcPaperPane.Rect().iBr;
- TAknWindowLineLayout layoutListCalcPane;
- if( AknLayoutUtils::PenEnabled() )
- {
- layoutListCalcPane = AknLayoutScalable_Apps::list_calc_pane(enTouch_enabled).LayoutLine();
- }
- else
- {
- layoutListCalcPane = AknLayoutScalable_Apps::list_calc_pane(enTouch_disabled).LayoutLine();
- }
-
- rectListCalcPane.LayoutRect(rectcalcPaperPane.Rect(),layoutListCalcPane);
- }
-
- TInt nTimes=(iCalcOutputSheetLines-1);
- for (TInt cnt(0); cnt < iCalcOutputSheetLines; cnt++)
- {
- if (AknLayoutUtils::ScalableLayoutInterfaceAvailable())
- {
- if(AknLayoutUtils::PenEnabled())
- {
- if (Layout_Meta_Data::IsLandscapeOrientation())
- {
- layoutOfParentResultsLine = AknLayoutScalable_Apps::list_calc_item_pane(nTimes,enTouch_enabled).LayoutLine();
- }
- else
- {
- layoutOfParentResultsLine = AknLayoutScalable_Apps::list_calc_item_pane(nTimes,enTouch_enabled).LayoutLine();
- }
-
- }
- else
- {
- layoutOfParentResultsLine = AknLayoutScalable_Apps::list_calc_item_pane(nTimes,enTouch_disabled).LayoutLine();
- }
-
-
- rectParent.LayoutRect(rectListCalcPane.Rect(),layoutOfParentResultsLine) ;
-
- TAknLayoutText operatorLayout;
- TAknLayoutText operendLayout;
- if(AknLayoutUtils::PenEnabled())
- {
- operatorLayout.LayoutText(rectParent.Rect(),AknLayoutScalable_Apps::list_calc_item_pane_t2(enTouch_with_prt).LayoutLine(),iCalcAppEnv->OutSheetOperatorFont());
- iOperatorLayout->AppendL(operatorLayout);
-
- operendLayout.LayoutText(rectParent.Rect(),AknLayoutScalable_Apps::list_calc_item_pane_t1(enTouch_with_lsc).LayoutLine(),iCalcAppEnv->OutSheetOperatorFont());
- iOperandLayout->AppendL(operendLayout);
- }
- else
- {
- operatorLayout.LayoutText(rectParent.Rect(),AknLayoutScalable_Apps::list_calc_item_pane_t2(enTouch_disabled).LayoutLine(),iCalcAppEnv->OutSheetOperatorFont());
- iOperatorLayout->AppendL(operatorLayout);
-
- operendLayout.LayoutText(rectParent.Rect(),AknLayoutScalable_Apps::list_calc_item_pane_t1(enTouch_disabled).LayoutLine(),iCalcAppEnv->OutSheetOperatorFont());
- iOperandLayout->AppendL(operendLayout);
- }
-
- // aCustomFont
- --nTimes;
-
- }
-
- else
- {
-
-
- //Scalable UI.
-
- TAknLayoutText operatorLayout;
- TAknLayoutText operendLayout;
- operatorLayout.LayoutText(parentRect,AppLayout::Calculator_texts_Line_8(nTimes),iCalcAppEnv->OutSheetOperatorFont()); // aCustomFont
- iOperatorLayout->AppendL(operatorLayout);
-
- operendLayout.LayoutText(parentRect,AppLayout::Calculator_texts_Line_7(nTimes), NULL);
- iOperandLayout->AppendL(operendLayout);
- --nTimes;
- }
- }
-
- //Scalable UI.
- nTimes = iCalcOutputSheetLines - 2;
- for (TInt ii(0); ii < (iCalcOutputSheetLines - 1); ii++)
- {
-
-
- if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
- {
-#ifdef __SCALABLE_ICONS
- layoutOfParentResultsLine = AknLayoutScalable_Apps::list_calc_item_pane(nTimes).LayoutLine();
-
- rectParent.LayoutRect(rectListCalcPane.Rect(),layoutOfParentResultsLine) ;
- TAknWindowLineLayout layoutOfResultsLine = AknLayoutScalable_Apps::list_calc_item_pane_g1().LayoutLine();
- TAknLayoutRect lineLayout;
- lineLayout.LayoutRect(rectParent.Rect(),layoutOfResultsLine);
- iResultsLineLayout->AppendL(lineLayout);
-#else
- TAknLayoutRect lineLayout;
- lineLayout.LayoutRect(parentRect,AppLayout::Calculator_elements_Line_3(nTimes));
- iEqualLineLayout->AppendL(lineLayout);
-#endif
- }
- else
- {
- TAknLayoutRect lineLayout;
- lineLayout.LayoutRect(parentRect,AppLayout::Calculator_elements_Line_3(nTimes));
- iEqualLineLayout->AppendL(lineLayout);
- }
-
- --nTimes;
- }
-
- TAknLayoutRect paperRect;
- if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
- {
- TAknLayoutRect rectCalcPaperPane;
- TAknLayoutRect rectbgCalcPaperPane;
- //Different configuration for Touch Layouts
- if( AknLayoutUtils::PenEnabled() )
- {
- //In landscape mode different configuration is needed
- if (Layout_Meta_Data::IsLandscapeOrientation())
- {
- rectCalcPaperPane.LayoutRect(parentRect,AknLayoutScalable_Apps::calc_paper_pane(enTouch_with_lsc).LayoutLine());
- }
- else
- {
- rectCalcPaperPane.LayoutRect(parentRect,AknLayoutScalable_Apps::calc_paper_pane(enTouch_with_prt).LayoutLine());
- }
- rectbgCalcPaperPane.LayoutRect(rectCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane(enTouch_enabled).LayoutLine());
- }
- else
- {
- rectCalcPaperPane.LayoutRect(parentRect,AknLayoutScalable_Apps::calc_paper_pane(enTouch_disabled).LayoutLine());
- rectbgCalcPaperPane.LayoutRect(rectCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane().LayoutLine());
- }
-
- iPaperPaneRect = rectCalcPaperPane;
-
-
- iCalcPaperLayout[0].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane_g1().LayoutLine());
- iCalcPaperLayout[1].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane_g2().LayoutLine());
- iCalcPaperLayout[2].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane_g3().LayoutLine());
- iCalcPaperLayout[3].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane_g4().LayoutLine());
- iCalcPaperLayout[4].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane_g5().LayoutLine());
- iCalcPaperLayout[5].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane_g6().LayoutLine());
- iCalcPaperLayout[6].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane_g7().LayoutLine());
- iCalcPaperLayout[7].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::bg_calc_paper_pane_g8().LayoutLine());
- iCalcPaperLayout[8].LayoutRect(rectbgCalcPaperPane.Rect(),AknLayoutScalable_Apps::calc_bg_paper_pane_g9().LayoutLine());
- }
-
- iOpSheetContext->SetRect(Rect());
-
- //Only for touch UI, scrollbars are present
- if( AknLayoutUtils::PenEnabled() )
- {
- UpdateScrollIndicatorL();
- }
- else
- {
- if(iSBFrame)
- {
- delete(iSBFrame);
- iSBFrame = NULL;
- }
-
- }
-
- }
-
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::UpdateScrollIndicatorL
-// Creates and updates the scrollbar
-// (other items were commented in a header).
-// ---------------------------------------------------------
-void CCalcOutputSheet::UpdateScrollIndicatorL()
- {
-
- if( !AknLayoutUtils::PenEnabled() )
- {
- return;
- }
-
- TAknLayoutRect rectCalcScrollPane;
-
- //Get the layout information for the scrollbar
- if( AknLayoutUtils::PenEnabled() )
- {
- if (Layout_Meta_Data::IsLandscapeOrientation())
- {
- rectCalcScrollPane.LayoutRect(iPaperPaneRect.Rect(),AknLayoutScalable_Apps::scroll_pane_cp024().LayoutLine());
- }
- else
- {
- rectCalcScrollPane.LayoutRect(iPaperPaneRect.Rect(),AknLayoutScalable_Apps::scroll_pane_cp024().LayoutLine());
- }
-
- }
- //Create scrollbar if not created already
- if ( !iSBFrame )
- {
- //Make this class as the observer class as well
- iSBFrame = new( ELeave ) CEikScrollBarFrame( this,this, ETrue );
-
- // Decide which type of scrollbar is to be shown
- CAknAppUi* appUi = iAvkonAppUi;
- if (AknLayoutUtils::DefaultScrollBarType(appUi) == CEikScrollBarFrame::EDoubleSpan)
- {
- // For EDoubleSpan type scrollbar
- iSBFrame->CreateDoubleSpanScrollBarsL(ETrue, EFalse); // non-window owning scrollbar
- iSBFrame->SetTypeOfVScrollBar(CEikScrollBarFrame::EDoubleSpan);
- }
- else
- {
- // For EArrowHead type scrollbar
- iSBFrame->SetTypeOfVScrollBar(CEikScrollBarFrame::EArrowHead);
- }
- iSBFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EOff);
- }
-
- TEikScrollBarModel hSbarModel;
- TEikScrollBarModel vSbarModel;
-
- //By default span is one if only one page is present
- if(iCalcHistory->Count() < iCalcOutputSheetLines)
- {
- vSbarModel.iScrollSpan = 1;
- vSbarModel.iThumbPosition = 0;
-
- }
- else
- {
- //span calculator if no of lines exceeds one page
- vSbarModel.iScrollSpan = 1 + iCalcHistory->Count() - iCalcOutputSheetLines;
- }
-
- iPrevThumbPosition = vSbarModel.iThumbPosition = vSbarModel.iScrollSpan - 1;
- vSbarModel.iThumbSpan = 1;
-
- TRect clientRect( iAvkonAppUi->ClientRect() );
- TRect rec(rectCalcScrollPane.Rect());
- TPoint point = rectCalcScrollPane.Rect().iBr;
- TInt width = rectCalcScrollPane.Rect().Width();
- TInt rightPointRectX = iSBBrPoint.iX;
- TInt pointRectX = point.iX;
- TInt pointRectY = point.iY;
- pointRectX = rightPointRectX;
- TPoint newPoint;
- newPoint.SetXY( pointRectX, pointRectY );
- TRect rect;
- rect.SetRect( rec.iTl, newPoint );
-
- TEikScrollBarFrameLayout layout;
- layout.iTilingMode = TEikScrollBarFrameLayout::EInclusiveRectConstant;
-
- if (iSBFrame->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan)
- {
- // For EDoubleSpan type scrollbar
- if (vSbarModel.iThumbPosition + vSbarModel.iThumbSpan > vSbarModel.iScrollSpan)
- {
- // Not let scrollbar values overflow
- vSbarModel.iThumbPosition = vSbarModel.iScrollSpan - vSbarModel.iThumbSpan;
- }
-
- TAknDoubleSpanScrollBarModel hDsSbarModel(hSbarModel);
- TAknDoubleSpanScrollBarModel vDsSbarModel(vSbarModel);
-
- if (iCalcHistory->Count() <= iCalcOutputSheetLines )
- {
- iSBFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EOff);
- }
- else
- {
- iSBFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EOn);
- }
-
- iSBFrame->TileL(&hDsSbarModel, &vDsSbarModel, clientRect, rect, layout);
- iSBFrame->SetVFocusPosToThumbPos(vDsSbarModel.FocusPosition());
- }
- else
- {
- iSBFrame->TileL( &hSbarModel, &vSbarModel, clientRect, rect, layout );
- iSBFrame->SetVFocusPosToThumbPos( vSbarModel.iThumbPosition );
- }
- }
-
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::Draw
-// Drawing frame and history.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::Draw
- (const TRect& aRect) const
- {
-
- CWindowGc& gc = SystemGc();
- gc.Clear(aRect);
- gc.SetClippingRect(aRect);
- TRect rect(Rect());
-
-
-
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
- AknsDrawUtils::Background( AknsUtils:: SkinInstance(), AknsDrawUtils::ControlContext(this), this, gc, rect );
-
-
- gc.SetBrushStyle(CGraphicsContext::ENullBrush);
- gc.SetPenStyle(CGraphicsContext::ENullPen);
- //set the size of the bitmap. SVG-T upgrade.
- CAknsItemData* idata = NULL;
- if (skin)
- {
- idata = skin->GetCachedItemData( KAknsIIDQsnFrCalcPaper);
- }
-
- if ( idata && idata->Type() == EAknsITImageTable )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {//when touch input,the paper become bigger,so it needs only one paper
- AknIconUtils::SetSize(iCalcScalablePaper[0]->Bitmap(),iCalcPaperLayout[0].Rect().Size(),EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iCalcScalablePaper[0]->Mask(),iCalcPaperLayout[0].Rect().Size(),EAspectRatioNotPreserved);
- iCalcPaperLayout[0].DrawImage(gc, iCalcScalablePaper[0]->Bitmap(),iCalcScalablePaper[0]->Mask());
- }
- else
- {
- for(TInt Cnt=0;Cnt < 9; Cnt++)
- {
- AknIconUtils::SetSize(iCalcScalablePaper[Cnt]->Bitmap(),iCalcPaperLayout[Cnt].Rect().Size(),EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iCalcScalablePaper[Cnt]->Mask(),iCalcPaperLayout[Cnt].Rect().Size(),EAspectRatioNotPreserved);
- iCalcPaperLayout[Cnt].DrawImage(gc, iCalcScalablePaper[Cnt]->Bitmap(),iCalcScalablePaper[Cnt]->Mask());
- }
- }
- }
- else
- {
- // Make outsheet displayed in Jingmask is the same size as in other themes
- // when there is a scrollbar on outsheet.
- if ( AknLayoutUtils::PenEnabled() )
- {
- AknsDrawUtils::Background( AknsUtils:: SkinInstance(), iOpSheetContext, this, gc, iCalcPaperLayout[0].Rect() );
- }
- else
- {
- AknsDrawUtils::Background( AknsUtils:: SkinInstance(), iOpSheetContext, this, gc, rect );
- }
- }
-
-
- for (TInt loop(iCalcOutputSheetLines - 1); loop >= 0; loop--)
- {
- const TCalcEditLine& history = (*iCalcHistory)[loop + iScrollOffset];
- TCalcEditLine::TCalcOperatorType operatorType(
- history.Operator());
-
- if (loop < iCalcOutputSheetLines - 1)
- {
- // When an operator is Equal, a line is drawn at an upper end.
- if (TCalcEditLine::ECalcEqual == operatorType)
- {
- TRgb ResultsLineolor;
- TInt error1 = AknsUtils::GetCachedColor( skin, ResultsLineolor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG29);
- if(error1 == KErrNone)
- {
- AknIconUtils::SetIconColor(iCalcResultsLine->Bitmap(),ResultsLineolor);
- }
- if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
- {
-#ifdef __SCALABLE_ICONS
- TAknLayoutRect& lineLayout = iResultsLineLayout->At(loop);
- AknIconUtils::SetSize(iCalcResultsLine->Bitmap(),lineLayout.Rect().Size(),EAspectRatioNotPreserved);
- AknIconUtils::SetSize(iCalcResultsLine->Mask(),lineLayout.Rect().Size(),EAspectRatioNotPreserved);
- lineLayout.DrawImage(gc, iCalcResultsLine->Bitmap(),iCalcResultsLine->Mask());
-#else
- TAknLayoutRect& equalLineLayout= iEqualLineLayout->At(loop);
- TRect rectLine = equalLineLayout.Rect();
- equalLineLayout.DrawRect(gc);
-#endif
- }
- else
- {
- TAknLayoutRect& equalLineLayout= iEqualLineLayout->At(loop);
- TRect rectLine = equalLineLayout.Rect();
- equalLineLayout.DrawRect(gc);
- }
- }
- }
- TRgb color;
- TInt error = AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG29);
- if(error == KErrNone)
- {
- gc.SetPenColor(color);
- }
-
- //change TBuf<10> to TBuf<KCalcMaxNumberWidth>
- TBuf<KCalcMaxNumberWidth> keyvalue;
-
- keyvalue.Append(history.NumberString());
- AknTextUtils::LanguageSpecificNumberConversion (keyvalue);
- // An operand's drawing
- TAknLayoutText& operendLayout = iOperandLayout->At(loop);
-
- if ( iUiLanguage == ELangFarsi || iUiLanguage == ELangHindi ||
- iUiLanguage == ELangUrdu || iUiLanguage == ELangArabic )
- {
- if( iUiLanguage == ELangUrdu || iUiLanguage == ELangArabic )
- {
- TInt len = keyvalue.Length();
- TInt pos = KErrNotFound;
- TBuf<1> ch;
- ch.Append(iCalcAppEnv->MinusIndicator());
- if( (pos = keyvalue.Locate(iCalcAppEnv->MinusIndicator())) != KErrNotFound &&
- pos == keyvalue.LocateReverse(iCalcAppEnv->MinusIndicator()))
- {
- keyvalue.Delete( pos, 1 );
- keyvalue.Insert( 0, ch );
- }
- }
- operendLayout.DrawText(gc,keyvalue,EFalse,color);
- }
- else
- {
- operendLayout.DrawText(gc,history.NumberString(),EFalse,color);
- }
- // An operator's drawing
- TPtrC operatorString(
- iCalcAppEnv->OutSheetOperator(operatorType));
- TAknLayoutText& operatorLayout = iOperatorLayout->At(loop);
- operatorLayout.DrawText(gc, operatorString , EFalse, color);
- }
-
-
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::HandleScrollEventL
-// Handles the events from the scrollbar
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::HandleScrollEventL(CEikScrollBar* aScrollBar, TEikScrollEvent aEventType)
- {
- //Only on page up/down,scroll up/down and drag events
- if((aEventType == EEikScrollPageDown) || (aEventType == EEikScrollPageUp) ||
- (aEventType == EEikScrollThumbDragVert) || (aEventType == EEikScrollUp) ||
- (aEventType == EEikScrollDown))
-
- {
- //Get the current position from the scroll bar
-
- if(iPrevThumbPosition >aScrollBar->ThumbPosition() )
- {
- //Move the scroll bar n times up
- while(iPrevThumbPosition != aScrollBar->ThumbPosition())
- {
- ScrollUp();
- iPrevThumbPosition--;
- }
- }
- else
- {
- //Move the scroll bar n times down
- while( iPrevThumbPosition != aScrollBar->ThumbPosition() )
- {
- ScrollDown();
- iPrevThumbPosition++;
- }
- }
-
- DrawNow();
- }
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::HandleResourceChange
-// Handles the events that needs to be taken care after resource change
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::HandleResourceChange(TInt aType)
-{
- TRAP_IGNORE(HandleResourceChangeOutSheetL(aType) );
- }
-
-// ---------------------------------------------------------
-// CCalcOutputSheet::HandleResourceChangeOutSheetL
-// Handles the events that needs to be taken care after resource change
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcOutputSheet::HandleResourceChangeOutSheetL(TInt aType)
-
-{
-
- if ( aType == KEikDynamicLayoutVariantSwitch )
- {
- if (AknLayoutUtils::PenEnabled())
- {
- ScrollToBottomL();
- }
- }
- if ( aType == KAknsMessageSkinChange )
- {
- if (AknLayoutUtils::PenEnabled())
- {
- delete (iSBFrame);
- iSBFrame = NULL;
-
- UpdateScrollIndicatorL();
- }
- }
-}
-// End of File