diff -r 3fec62e6e7fc -r 90fe62538f66 systemswuis/touchscreencalib/src/TouchScreenCalibView.cpp --- a/systemswuis/touchscreencalib/src/TouchScreenCalibView.cpp Thu Aug 19 09:55:50 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,569 +0,0 @@ -/* -* Copyright (c) 2006 - 2007 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 class is the container class of the CTouchScreenCalibView. -* Is used to show tap target animation. -* -*/ - - -// SYSTEM INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// USER INCLUDES -#include "TouchScreenCalibView.h" -#include "TouchScreenCalibDefines.h" -#include "TouchScreenCalibAppUi.h" - -// CONSTANTS -_LIT( KTargetAnimationResource, "z:TouchScreenCalib_anim.rsc" ); - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::ConstructL() -// Symbian 2nd phase constructor can leave. -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::ConstructL() - { - TRACES("CTouchScreenCalibView::ConstructL()"); - - CreateWindowL(); - - iAnimImageRect.iAnimImageRect1 = iTouchScreenCalibAppUi->GetAnimImageRect(1); - iAnimImageRect.iAnimImageRect2 = iTouchScreenCalibAppUi->GetAnimImageRect(2); - iAnimImageRect.iAnimImageRect3 = iTouchScreenCalibAppUi->GetAnimImageRect(3); - iAnimImageRect.iAnimImageRect4 = iTouchScreenCalibAppUi->GetAnimImageRect(4); - - // Parse filename of bitmaps - _LIT( KDirAndFile, "z:TouchScreenCalib.mif" ); - TParse* fp1 = new(ELeave) TParse(); - fp1->Set(KDirAndFile, &KDC_APP_BITMAP_DIR, NULL); - TFileName fileName( fp1->FullName() ); - TRACES1("CTouchScreenCalibImage::CreateIconL(): Image: %S", &(fp1->FullName()) ); - delete fp1; - - AknIconUtils::CreateIconL( iBitmap, - iBitmapMask, - fileName, - EMbmTouchscreencalibQgn_graf_screencalib, - EMbmTouchscreencalibQgn_graf_screencalib_mask); - - iAvkonAppUi->StatusPane()->MakeVisible(EFalse); - - TRACES("CTouchScreenCalibView::ConstructL(): Animation loading started"); - iAnim = CAknBitmapAnimation::NewL(); - iAnim->SetContainerWindowL( *this ); - iAnim->SetScaleModeForAnimationFrames(EAspectRatioPreservedAndUnusedSpaceRemoved); - TResourceReader rr; - RConeResourceLoader loader( *iCoeEnv ); - - TParse* fp = new(ELeave) TParse(); - fp->Set(KTargetAnimationResource, &KDC_APP_RESOURCE_DIR, NULL); - TRACES1("CTouchScreenCalibView::ConstructL(): Animated target resource path: %S", &fp->FullName()); - TFileName name( fp->FullName() ); - delete fp; - TInt fileError = loader.Open( name ); - if ( fileError == KErrNone ) - { - CleanupClosePushL( loader ); - iCoeEnv->CreateResourceReaderLC(rr, R_SHUTDOWN_ANIM); - TRAPD(err, iAnim->ConstructFromResourceL( rr )); - if( err == KErrNone ) - { - TResourceReader timeReader; - iCoeEnv->CreateResourceReaderLC(timeReader, R_ANIM_DURATION); - CleanupStack::PopAndDestroy(); // pop timeReader - iAnim->SetPosition(TPoint(0,0)); - iAnim->SetSize(TSize(0,0)); - TRACES("CTouchScreenCalibView::ConstructL(): animation succesfully loaded"); - } - else - { - TRACES("CTouchScreenCalibView::ConstructL(): animation loading failed"); - } - CleanupStack::PopAndDestroy(); //pop rr - TRACES("CTouchScreenCalibView::ConstructL(): animation loading ended"); - CleanupStack::PopAndDestroy(); //pop loader - } - else - { - TRACES("CTouchScreenCalibView::ConstructL(): resource file loading failed"); - } - - SetRect(iAvkonAppUi->ApplicationRect()); - ActivateL(); - - iFont = AknLayoutUtils::FontFromId(EAknLogicalFontSecondaryFont); - iText = new( ELeave ) CArrayPtrFlat( 20 ); - - TApaTask self(iCoeEnv->WsSession()); - self.SetWgId(iCoeEnv->RootWin().Identifier()); - self.BringToForeground(); - - if (iTouchScreenCalibAppUi->FirstBoot()) - { - Window().SetOrdinalPosition( 0, ECoeWinPriorityAlwaysAtFront + 10000 ); - } - else - { - Window().SetOrdinalPosition( 0, ECoeWinPriorityHigh + 1 ); - } - iTouchFeedback = MTouchFeedback::Instance(); - - TRACES("CTouchScreenCalibView::ConstructL(): ConstructL ended"); - } - -// ----------------------------------------------------------------------------- -// CTouchScreenCalibView::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CTouchScreenCalibView* CTouchScreenCalibView::NewL( CTouchScreenCalibAppUi* aTouchScreenCalibAppUi ) - { - TRACES("CTouchScreenCalibView::NewL()"); - CTouchScreenCalibView* self = new (ELeave) CTouchScreenCalibView( aTouchScreenCalibAppUi ); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CTouchScreenCalibView::CTouchScreenCalibView() -// --------------------------------------------------------- -CTouchScreenCalibView::CTouchScreenCalibView( CTouchScreenCalibAppUi* aTouchScreenCalibAppUi ) : - iTouchScreenCalibAppUi( aTouchScreenCalibAppUi ), - iAnimationShowing( EFalse ), - iAnimationCancelled ( EFalse ), - iText( NULL ), - iCalibrationCompleted( EFalse ) - { - TRACES("CTouchScreenCalibView::CTouchScreenCalibView()"); - TRACES("CTouchScreenCalibView::CTouchScreenCalibView(): End"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::UpdateL( TAknLayoutText aTextLayout ) -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::UpdateL( TAknLayoutText aTextLayout ) - { - TRACES("CTouchScreenCalibView::UpdateL()"); - - TRect rect = iTouchScreenCalibAppUi->GetAnimImageRect(); - - SetTextL(aTextLayout); - EndAnimation(); - DrawDeferred(); - - TPoint pos = TPoint(rect.iTl.iX, rect.iTl.iY); - TSize size = TSize(rect.iBr.iX-rect.iTl.iX, rect.iBr.iY-rect.iTl.iY); - iAnim->SetPosition(pos); - iAnim->SetSize(size); - - TRAPD(err, iAnim->StartAnimationL()); - if ( err != KErrNone ) - { - TRACES("CTouchScreenCalibView::UpdateL(): Starting animation failed"); - } - - TRACES("CTouchScreenCalibView::UpdateL(): End"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::DrawEndingBackground() -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::DrawEndingBackground() - { - TRACES("CTouchScreenCalibView::DrawEndingBackground()"); - iCalibrationCompleted = ETrue; - SetRect( iAvkonAppUi->ApplicationRect() ); - EndAnimation(); - DrawNow(); - TRACES("CTouchScreenCalibView::DrawEndingBackground(): End"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::EndTargetAnimation() -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::EndTargetAnimation() - { - TRACES("CTouchScreenCalibView::EndTargetAnimation()"); - EndAnimation(); - DrawNow(); - TRACES("CTouchScreenCalibView::EndTargetAnimation(): End"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::~CTouchScreenCalibView() -// --------------------------------------------------------------------------- -CTouchScreenCalibView::~CTouchScreenCalibView() - { - TRACES("CTouchScreenCalibView::~CTouchScreenCalibView() begin"); - - if( iAnim ) - { - if( iAnimationShowing ) - { - iAnim->CancelAnimation(); - TRACES("CTouchScreenCalibView::~CTouchScreenCalibView() animation cancelled"); - } - } - delete iAnim; - TRACES("CTouchScreenCalibView::~CTouchScreenCalibView() iAnim deleted"); - - if ( iText ) - { - iText->ResetAndDestroy(); - delete iText; - iText = NULL; - } - - delete iBitmap; - delete iBitmapMask; - - TRACES("CTouchScreenCalibView::~CTouchScreenCalibView() end"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::ComponentControl(TInt aIndex) -// --------------------------------------------------------------------------- -CCoeControl* CTouchScreenCalibView::ComponentControl(TInt aIndex) const - { - switch ( aIndex ) - { - case 0: - { - return iAnim; - } - default: - { - return NULL; - } - } - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::CountComponentControls() -// --------------------------------------------------------------------------- -TInt CTouchScreenCalibView::CountComponentControls() const - { - return iAnim ? 1 : 0; // return nbr of controls inside this container - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::Draw(const TRect& aRect) const -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::Draw(const TRect& ) const - { - TRACES("CTouchScreenCalibView::Draw()"); - DrawBackground(); - if (!iCalibrationCompleted) - { - DrawText(); - ShowImage(iAnimImageRect.iAnimImageRect1); - ShowImage(iAnimImageRect.iAnimImageRect2); - ShowImage(iAnimImageRect.iAnimImageRect3); - ShowImage(iAnimImageRect.iAnimImageRect4); - } - TRACES("CTouchScreenCalibView::Draw(): End"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::SizeChanged() -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::SizeChanged() - { - if( iAnim ) - { - iAnim->SetRect(Rect()); - } - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::EndAnimation() -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::EndAnimation() - { - TRACES("CTouchScreenCalibView::EndAnimation()"); - iAnim->CancelAnimation(); - TRACES("CTouchScreenCalibView::EndAnimation(): End"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::HandleControlEventL(...) -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::HandleControlEventL( - CCoeControl* , - TCoeEvent ) - { - //pure virtual from MCoeControlObserver - TRACES("CTouchScreenCalibView::HandleControlEventL()"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::OfferKeyEventL(...) -// --------------------------------------------------------------------------- -TKeyResponse CTouchScreenCalibView::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType) - { - TRACES("CTouchScreenCalibView::OfferKeyEventL()"); - iTouchScreenCalibAppUi->HandleKeyL( aKeyEvent, aType ); - TRACES("CTouchScreenCalibView::OfferKeyEventL(): End: return EKeyWasConsumed"); - return EKeyWasConsumed; - } - -// ---------------------------------------------------- -// CTouchScreenCalibView::HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) -// ---------------------------------------------------- -TKeyResponse CTouchScreenCalibView::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType ) - { - TRACES("CTouchScreenCalibView::HandleKeyEventL()"); - iTouchScreenCalibAppUi->HandleKeyL( aKeyEvent, aType ); - TRACES("CTouchScreenCalibView::HandleKeyEventL(): End: return EKeyWasConsumed"); - return EKeyWasConsumed; - } - -// ---------------------------------------------------- -// CTouchScreenCalibView::HandlePointerEventL(const TPointerEvent& aPointerEvent) -// ---------------------------------------------------- -void CTouchScreenCalibView::HandlePointerEventL(const TPointerEvent& aPointerEvent) - { - TRACES("CTouchScreenCalibView::HandlePointerEventL()"); - if (aPointerEvent.iType == TPointerEvent::EButton1Up) - { - TRACES("CTouchScreenCalibView::HandlePointerEventL(): EButton1Up"); - TRACES1("CTouchScreenCalibView::HandlePointerEventL(): X = %d",aPointerEvent.iPosition.iX); - TRACES1("CTouchScreenCalibView::HandlePointerEventL(): Y = %d",aPointerEvent.iPosition.iY); - - TPoint pos; - - pos.iX = aPointerEvent.iPosition.iX; - pos.iY = aPointerEvent.iPosition.iY; - if (Validate(pos)) - { - iTouchFeedback->InstantFeedback( ETouchFeedbackBasic ); - iTouchScreenCalibAppUi->HandlePointerL( pos ); - } - } - TRACES("CTouchScreenCalibView::HandlePointerEventL(): End --------------- Waiting for next event -------------"); - } - -// ---------------------------------------------------- -// CTouchScreenCalibView::Validate(TPoint aPos) -// ---------------------------------------------------- -TBool CTouchScreenCalibView::Validate(TPoint aPos) - { - TRACES("CTouchScreenCalibView::Validate()"); - TInt retval( EFalse ); - - if ((aPos.iX > iTouchScreenCalibAppUi->GetAnimImageRect().iTl.iX) && - (aPos.iX < iTouchScreenCalibAppUi->GetAnimImageRect().iBr.iX) && - (aPos.iY > iTouchScreenCalibAppUi->GetAnimImageRect().iTl.iY) && - (aPos.iY < iTouchScreenCalibAppUi->GetAnimImageRect().iBr.iY)) - { - retval = ETrue; - } - TRACES1("CTouchScreenCalibView::Validate(): End: Return %d",retval); - return retval; - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::DrawBackground() const -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::DrawBackground() const - { - TRACES("CTouchScreenCalibView::DrawBackground()"); - CWindowGc& gc = SystemGc(); - TRect rect = iAvkonAppUi->ApplicationRect(); - gc.SetPenStyle(CGraphicsContext::ENullPen); - gc.SetBrushColor(KRgbWhite); - gc.SetBrushStyle(CGraphicsContext::ESolidBrush); - gc.DrawRect(rect); - ControlEnv()->WsSession().Flush(); // force draw of the context - TRACES("CTouchScreenCalibView::DrawBackground(): End"); - } - -// --------------------------------------------------------------------------- -// CTouchScreenCalibView::DrawText() -// --------------------------------------------------------------------------- -void CTouchScreenCalibView::DrawText() const - { - TRACES("CTouchScreenCalibView::DrawText()"); - - CWindowGc& gc = SystemGc(); - - gc.SetPenStyle(CGraphicsContext::ENullPen); - - gc.UseFont( iFont ); - - gc.SetBrushStyle(CGraphicsContext::ENullBrush); - - TPoint position( 0, 0 ); - TPoint topLeft; - position = iTextTopLeft; - - for ( TInt index = 0 ; - index < iText->Count(); - index++, position.iY += iTextBaselineOffset ) - { - HBufC* text = (*iText)[ index ]; - if ( text ) - { - topLeft = TPoint( position.iX, position.iY - iTextBaselineOffset ); - gc.SetPenColor(iTextColor); - TRACES2("CTouchScreenCalibView::DrawText(): TopLeft: %d, %d", topLeft.iX, topLeft.iY); - gc.DrawText( *text, - TRect( topLeft, iTextSize ), - iTextBaselineOffset, - iTextAlignment ); - } - } - ControlEnv()->WsSession().Flush(); // force draw of the context - gc.DiscardFont(); - TRACES("CTouchScreenCalibView::DrawText(): End"); - } - -// ----------------------------------------------------------------------------- -// CTouchScreenCalibView::SetTextL(TAknLayoutText aTextLayout) -// ----------------------------------------------------------------------------- -void CTouchScreenCalibView::SetTextL(TAknLayoutText aTextLayout) - { - TRACES("CTouchScreenCalibView::SetTextL()"); - - TInt textLineWidth; - - TRACES2("CTouchScreenCalibView::SetTextL(): Text rect top: X:%d Y:%d",aTextLayout.TextRect().iTl.iX, aTextLayout.TextRect().iTl.iY); - TRACES2("CTouchScreenCalibView::SetTextL(): Text rect:bot: X:%d Y:%d",aTextLayout.TextRect().iBr.iX, aTextLayout.TextRect().iBr.iY); - - textLineWidth = aTextLayout.TextRect().Width(); - - iTextTopLeft = TPoint(aTextLayout.TextRect().iTl.iX, aTextLayout.TextRect().iTl.iY); - - iTextBaselineOffset = iFont->HeightInPixels() * 4 / 3; - - iTextSize = TSize(textLineWidth, iTextBaselineOffset + iFont->DescentInPixels()); - - iTextColor = aTextLayout.Color(); - - iTextAlignment = CGraphicsContext::ECenter; - - HBufC* mainText1 = StringLoader::LoadLC(R_QTN_TOUCH_SCREEN_CALI_INSTR_GEN, - iTouchScreenCalibAppUi->GetCalibrationStep()); - - HBufC* mainText2; - if (iTouchScreenCalibAppUi->FirstBoot()) - { - mainText2 = CEikonEnv::Static()->AllocReadResourceLC(R_QTN_TOUCH_SCREEN_CALI_INSTR_RES ); - } - else - { - mainText2 = CEikonEnv::Static()->AllocReadResourceLC(R_QTN_TOUCH_SCREEN_CALI_INSTR_CAN ); - } - - TBuf<256> text; - text.Copy( mainText1->Des() ); - _LIT(KLineChange, "\n"); - text.Append(KLineChange); - text.Append(mainText2->Des()); - - TRACES1("CTouchScreenCalibView::SetTextL(): text: %S",&text); - - CArrayFix* wrappedArray = - new( ELeave ) CArrayFixFlat( 10 ); - CleanupStack::PushL( wrappedArray ); - - HBufC* dataToDestroy = - AknBidiTextUtils::ConvertToVisualAndWrapToArrayL( - text, textLineWidth, *iFont, *wrappedArray - ); - - TInt numLines( wrappedArray->Count() ); - TRACES1("CTouchScreenCalibView::SetTextL(): Number of lines: %d",numLines ); - - if ( iText ) - { - iText->ResetAndDestroy(); - delete iText; - iText = NULL; - } - iText = new( ELeave ) CArrayPtrFlat( 20 ); - - for ( TInt i = 0 ; i < numLines ; i++ ) - { - HBufC* line = (*wrappedArray)[i].AllocLC(); - TInt lineLength = line->Length(); - TRACES1("CTouchScreenCalibView::SetTextL(): lineLength: %d",lineLength); - if(!lineLength) - { - iText->AppendL( NULL ); - CleanupStack::PopAndDestroy(line); // line - } - else - { - iText->AppendL( line ); - CleanupStack::Pop(line); // line - } - } - iText->AppendL( NULL ); - - // If the last char was newline, add one extra, since - // wrapping automatically removes it. - if ( text[ text.Length() - 1 ] == '\n' ) - { - iText->AppendL( NULL ); - } - - CleanupStack::PopAndDestroy(wrappedArray); // wrappedArray - delete dataToDestroy; - - CleanupStack::PopAndDestroy(2); //mainText1, mainText2 - TRACES("CTouchScreenCalibView::SetTextL(); End"); - } - -// ----------------------------------------------------------------------------- -// CTouchScreenCalibView::ShowImage(TRect aRect) -// ----------------------------------------------------------------------------- -void CTouchScreenCalibView::ShowImage(TRect aRect) const - { - TRACES("CTouchScreenCalibView::ShowImage()"); - CWindowGc& gc = SystemGc(); - AknIconUtils::SetSize( iBitmap, aRect.Size(), EAspectRatioPreservedAndUnusedSpaceRemoved ); - gc.SetPenStyle(CGraphicsContext::ENullPen); - gc.SetBrushColor(KRgbRed); - gc.SetBrushStyle(CGraphicsContext::ESolidBrush); - gc.DrawRect(aRect); - gc.BitBlt( TPoint(aRect.iTl.iX, aRect.iTl.iY), iBitmap ); // CWindowGc member function - ControlEnv()->WsSession().Flush(); // force draw of the context - TRACES("CTouchScreenCalibView::ShowImage(): End"); - } - -// ----------------------------------------------------------------------------- -// CTouchScreenCalibView::SetWinPriority() -// ----------------------------------------------------------------------------- -void CTouchScreenCalibView::SetWinPriority(TInt aPriority) - { - TRACES("CTouchScreenCalibView::SetWinPriority()"); - Window().SetOrdinalPosition( 0, aPriority ); - TRACES("CTouchScreenCalibView::SetWinPriority(): End"); - } - -// End of File