diff -r 41b775cdc0c8 -r 10c6e6d6e4d9 extras/calcsoft/src/CalcEnv.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extras/calcsoft/src/CalcEnv.cpp Wed Sep 01 12:29:54 2010 +0100 @@ -0,0 +1,572 @@ +/* +* 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: Global data class, CCalcAppEnv, derived from CBase +* This class maintain global data. e.g font, bitmap. +* +*/ + + + +// INCLUDE FILES +#include // resource reader +#include +#include +#include +#include // Fonts +#include + +//Extended Icon Skin Implementation +#include +#include +#include + +#include +#include +#include "CalcEnv.h" +#include "CalcAppUi.h" + +// LOCAL CONSTANTS AND MACROS + +// ================= MEMBER FUNCTIONS ======================= +// Two-phased constructor. +CCalcAppEnv* CCalcAppEnv::NewL +(CCalcAppUi* aAppUi) + { + CCalcAppEnv* self = new (ELeave) CCalcAppEnv(aAppUi); + CleanupStack::PushL(self); + self->ConstructAppEnvL(); + CleanupStack::Pop(self); + // Set to TLS(Thread Local Storage). + UserSvr::DllSetTls(67338721, self); + + return self; + } + +void CCalcAppEnv::InitializeAppUI(CCalcAppUi* aAppUi) + { + iAppUi = aAppUi; + } + + +// Destructor +CCalcAppEnv::~CCalcAppEnv() + { + // Text + delete iEditorOperArray; + delete iOutSheetOperArray; +#ifdef __SCALABLE_ICONS + delete iResultsLineBitmap; +#endif + + + // Bitmap + delete iDisplaySideLBitmap; + delete iDisplayCenterBitmap; + delete iDisplaySideRBitmap; + + delete iPaperBitmap; + for(TInt Cnt=0;Cnt<9;Cnt++) + { + delete iScalablePaperBitmap[Cnt]; + } + + // font + // free font for number and operator + CBitmapDevice* device = iEnv->ScreenDevice(); + device->ReleaseFont(iNumberShadowFont); + device->ReleaseFont(iNumberFont); + device->ReleaseFont(iOperatorShadowFont); + device->ReleaseFont(iOperatorFont); + device->ReleaseFont(iOutSheetOperatorFont); + + + //Extended Icon Skin Implementation + iAknsConstArray.Close(); + iAknsConstArrayForPaper.Close(); + } + + +// --------------------------------------------------------- +// CCalcAppEnv::Static +// Return value of thread-local storage. +// This value is set pointer of CCalcAppEnc class in CCalcAppEnv::NewL(). +// (other items were commented in a header). +// --------------------------------------------------------- +// +CCalcAppEnv* CCalcAppEnv::Static() + { + return REINTERPRET_CAST(CCalcAppEnv*, UserSvr::DllTls(67338721)); + } + + +// C++ default constructor can NOT contain any code, that +// might leave. +// + +CCalcAppEnv::CCalcAppEnv() + { + } + + +CCalcAppEnv::CCalcAppEnv +(CCalcAppUi* aAppUi) +: iAppUi(aAppUi) + { + } + +// Second-phase constructor +void CCalcAppEnv::ConstructAppEnvL() + { + iEnv = CEikonEnv::Static(); + + // Read char code for operator. + TResourceReader editOperRr; + iEnv ->CreateResourceReaderLC( + editOperRr, R_CALC_EDITOR_OPERATOR_ARRAY); + TResourceReader osheetOperRr; + iEnv->CreateResourceReaderLC( + osheetOperRr, R_CALC_OUTSHEET_OPERATOR_ARRAY); + + editOperRr.ReadInt16(); // Read count of items + osheetOperRr.ReadInt16(); // Read count of items + + iEditorOperArray = + new (ELeave) CDesCArrayFlat(KCalcCountOfOperatorType); + iOutSheetOperArray = + new (ELeave) CDesCArrayFlat(KCalcCountOfOperatorType); + + TChar editorOper; + TChar outSheetOper; + + for (TInt cnt(0); cnt < KCalcCountOfOperatorType; cnt++) + { + editorOper = editOperRr.ReadUint16(); + outSheetOper = osheetOperRr.ReadUint16(); + TBuf<1> editorOperBuf; + TBuf<1> outSheetOperBuf; + editorOperBuf.Append(editorOper); + outSheetOperBuf.Append(outSheetOper); + iEditorOperArray->AppendL(editorOperBuf); + iOutSheetOperArray->AppendL(outSheetOperBuf); + } + + CleanupStack::PopAndDestroy(2); // editOperRr, osheetOperRr + + + // TLocale::DecimalSeparator() must be used when decimal separator is get. + TLocale locale; + iDecimalSeparator = locale.DecimalSeparator(); + + TBuf<1> buf; + iEnv->ReadResourceL(buf, R_CALC_MINUS_INDICATOR); + iMinusIndicator = buf[0]; + iEnv->ReadResourceL(iMemoryIndicator, R_CALC_STTUS_SAVED_TO_MEM); + iEnv->ReadResourceL(iMemoryIndicatorShadow, R_CALC_STTUS_SAVED_TO_MEM_SHA); + + CEikApplication* app = iEnv->EikAppUi()->Application(); + TFileName bmpPath(app->BitmapStoreName()); + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + //Ext Icon Skinning implementation for Display + + AknsUtils::CreateIconL(skin,KAknsIIDQsnFrCalcDisplaySideL,bitmap,mask,bmpPath, + EMbmCalcsoftQsn_fr_calc_display_side_l, EMbmCalcsoftQsn_fr_calc_display_side_l_mask); + + iDisplaySideLBitmap = CGulIcon::NewL(bitmap, mask); + bitmap = NULL; + mask = NULL; + + + AknsUtils::CreateIconL(skin,KAknsIIDQsnFrCalcDisplayCenter,bitmap,mask,bmpPath, + EMbmCalcsoftQsn_fr_calc_display_center, EMbmCalcsoftQsn_fr_calc_display_center_mask); + + iDisplayCenterBitmap = CGulIcon::NewL(bitmap, mask); + bitmap = NULL; + mask = NULL; + + AknsUtils::CreateIconL(skin,KAknsIIDQsnFrCalcDisplaySideR,bitmap,mask,bmpPath, + EMbmCalcsoftQsn_fr_calc_display_side_r, EMbmCalcsoftQsn_fr_calc_display_side_r_mask); + + iDisplaySideRBitmap = CGulIcon::NewL(bitmap, mask); + + //Ext Icon Skinning implementation for Paper + bitmap = NULL; + mask = NULL; + AknsUtils::CreateIconL(skin,KAknsIIDQgnGrafCalcPaper,bitmap,mask,bmpPath, + EMbmCalcsoftQgn_graf_calc_paper,EMbmCalcsoftQgn_graf_calc_paper_mask); + iPaperBitmap = CGulIcon::NewL(bitmap, mask); + + bitmap = NULL; + mask = NULL; + +#ifdef __SCALABLE_ICONS + AknsUtils::CreateIconL(skin,KAknsIIDQgnGrafCalcResultsLine, bitmap,mask,bmpPath, + EMbmCalcsoftQgn_graf_calc_results_line,EMbmCalcsoftQgn_graf_calc_results_line_mask); + iResultsLineBitmap = CGulIcon::NewL(bitmap, mask); +#endif + bitmap = NULL; + mask = NULL; + iIsSkinChanged = EFalse; + UpdateAknConstArrayforPaper(); + LoadPaperBitmapsL(); + + UpdateAknConstArray(); + + LoadFuncMapBitmapL(); + + + } + + +// --------------------------------------------------------- +// CCalcAppEnv::LoadPaperBitmapsL +// Load bitmaps for Paper Pane. +// (other items were commented in a header). +// --------------------------------------------------------- +// + void CCalcAppEnv::LoadPaperBitmapsL() + { + CEikApplication* app = iEnv->EikAppUi()->Application(); + TFileName bmpPath(app->BitmapStoreName()); + TInt startBitmapId = EMbmCalcsoftQsn_fr_calc_paper_center; + TInt startMaskId = EMbmCalcsoftQsn_fr_calc_paper_center_mask; + TInt startIndex=0; + TInt count = 9; + TInt bmpId(startBitmapId); + TInt maskId(startMaskId); + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + for (TInt cnt(startIndex); cnt < (count + startIndex); cnt++) + { + + AknsUtils::CreateIconL(skin, (iAknsConstArrayForPaper)[cnt],bitmap,mask, + bmpPath, bmpId, maskId); + + if(!iIsSkinChanged) + { + iScalablePaperBitmap[cnt] = CGulIcon::NewL(bitmap, mask); + } + else + { + iScalablePaperBitmap[cnt]->SetBitmap(bitmap); + iScalablePaperBitmap[cnt]->SetMask(mask); + } + bmpId = bmpId + 2; + maskId = maskId + 2; + } + } + +// --------------------------------------------------------- +// CCalcAppEnv::LoadFuncMapBitmapL +// Load bitmaps for FunctionMap SubPane. +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CCalcAppEnv::LoadFuncMapBitmapL() + { + + CEikApplication* app = iEnv->EikAppUi()->Application(); + TFileName bmpPath(app->BitmapStoreName()); + + if(iIsSkinChanged) //EISkin2.6 + { + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + //Ext Icon Skinning implementation for Display + + AknsUtils::CreateIconL(skin,KAknsIIDQsnFrCalcDisplaySideL,bitmap,mask,bmpPath, + EMbmCalcsoftQsn_fr_calc_display_side_l, EMbmCalcsoftQsn_fr_calc_display_side_l_mask); + + iDisplaySideLBitmap->SetBitmap(bitmap); + iDisplaySideLBitmap->SetMask(mask); + + bitmap = NULL; + mask = NULL; + + + AknsUtils::CreateIconL(skin,KAknsIIDQsnFrCalcDisplayCenter,bitmap,mask,bmpPath, + EMbmCalcsoftQsn_fr_calc_display_center, EMbmCalcsoftQsn_fr_calc_display_center_mask); + + iDisplayCenterBitmap->SetBitmap(bitmap); + iDisplayCenterBitmap->SetMask(mask); + + bitmap = NULL; + mask = NULL; + + AknsUtils::CreateIconL(skin,KAknsIIDQsnFrCalcDisplaySideR,bitmap,mask,bmpPath, + EMbmCalcsoftQsn_fr_calc_display_side_r, EMbmCalcsoftQsn_fr_calc_display_side_r_mask); + + iDisplaySideRBitmap->SetBitmap(bitmap); + iDisplaySideRBitmap->SetMask(mask); + + //Ext Icon Skinning implementation for Paper + bitmap = NULL; + mask = NULL; + AknsUtils::CreateIconL(skin,KAknsIIDQgnGrafCalcPaper,bitmap,mask,bmpPath, + EMbmCalcsoftQgn_graf_calc_paper,EMbmCalcsoftQgn_graf_calc_paper_mask); + + iPaperBitmap->SetBitmap(bitmap); + iPaperBitmap->SetMask(mask); + bitmap = NULL; + mask = NULL; +#ifdef __SCALABLE_ICONS + AknsUtils::CreateIconL(skin,KAknsIIDQgnGrafCalcResultsLine, bitmap,mask,bmpPath, + EMbmCalcsoftQgn_graf_calc_results_line,EMbmCalcsoftQgn_graf_calc_results_line_mask); + + iResultsLineBitmap->SetBitmap(bitmap); + iResultsLineBitmap->SetMask(mask); +#endif + bitmap = NULL; + mask = NULL; + LoadPaperBitmapsL(); + } + + if(!iIsSkinChanged) + { + + + if( AknLayoutUtils::PenEnabled() ) + { + + + LoadBitmapForFuncMapL( + EMbmCalcsoftQgn_indi_calc_cancel, + EMbmCalcsoftQgn_indi_calc_cancel_mask, + 0, + KCountOfButtonsTouch, iUnpressedButtonBmp, ENORMAL); + } + + else + { + LoadBitmapForFuncMapL( + EMbmCalcsoftQgn_indi_calc_button_plus, + EMbmCalcsoftQgn_indi_calc_button_plus_mask, + 0, + KCountOfButtons, iUnpressedButtonBmp, ENORMAL); + + LoadBitmapForFuncMapL( + EMbmCalcsoftQgn_indi_calc_button_plus_pressed, + EMbmCalcsoftQgn_indi_calc_button_plus_pressed_mask, + 0, + KCountOfButtons, iPressedButtonBmp, EPRESSED); + + } + } + + } + +// --------------------------------------------------------- +// CCalcAppEnv::UpdateAknConstArrayForFuncmap +// Update array for function map. +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CCalcAppEnv::UpdateAknConstArrayForFuncMap() + { + UpdateAknConstArray(); + } + +// --------------------------------------------------------- +// CCalcAppEnv::LoadBitmapForFuncMapButtonL +// Load bitmaps for FunctionMap button. +// (other items were commented in a header). +// --------------------------------------------------------- +// + +void CCalcAppEnv::LoadBitmapForFuncMapL(TInt aStartBitmapId, TInt aStartMaskId, TInt aStartIndex, + TInt aCount, CGulIcon* aBitmapArray[], ButtonType aType) + { + CEikApplication* app = iEnv->EikAppUi()->Application(); + TFileName bmpPath(app->BitmapStoreName()); + TInt bmpId(aStartBitmapId); + TInt maskId(aStartMaskId); + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + // Get the text color of theme + TRgb iconColor; + AknsUtils::GetCachedColor( skin, iconColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG29 ); + + for (TInt cnt(aStartIndex); cnt < (aCount + aStartIndex); cnt++) + { + switch(aType) + { + case EPRESSED: + { + if(!AknLayoutUtils::PenEnabled() ) + { + AknsUtils::CreateIconL(skin,(iAknsConstArray)[cnt + KCalcCountOfButtonPressed],bitmap,mask, + bmpPath, bmpId, maskId); + + } + } + break; + case ENORMAL: + { + if(!AknLayoutUtils::PenEnabled() ) + { + AknsUtils::CreateIconL(skin,(iAknsConstArray)[cnt],bitmap,mask, + bmpPath, bmpId, maskId); + } + else + { + AknsUtils::CreateIconL(skin,(iAknsConstArray)[cnt]/*KAknsIIDQgnIndiCalcAdd*/,bitmap,mask, + bmpPath, bmpId, maskId); + // Set the color of icons + AknIconUtils::SetIconColor( bitmap, iconColor ); + } + + } + break; + case EACTIVE_INACTIVE: + { + AknsUtils::CreateIconL(skin,(iAknsConstArray)[cnt + KCalcCountOfButtonInactive],bitmap,mask, + bmpPath, bmpId, maskId); + } + break; + default: + break; + + } + + CGulIcon* icon = CGulIcon::NewL(bitmap, mask); + aBitmapArray[cnt] = icon; + + bmpId = bmpId + 2; + maskId = maskId + 2; + } + + } + +//--------------------------------------------------------- +// CCalcAppEnv::UpdateAknConstArrayforPaper +//Updates the array with avkon skin constant Ids for paper bitmaps. +// --------------------------------------------------------- +// + void CCalcAppEnv::UpdateAknConstArrayforPaper() + { + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperCenter); + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperCornerTl); + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperCornerTr); + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperCornerBl); + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperCornerBr); + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperSideT); + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperSideB); + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperSideL); + iAknsConstArrayForPaper.Append(KAknsIIDQsnFrCalcPaperSideR); + + } + +//--------------------------------------------------------- +// CCalcAppEnv::UpdateAknConstArray +//Updates the array with avkon skin constant Ids for bitmaps. +// --------------------------------------------------------- +// +void CCalcAppEnv::UpdateAknConstArray() + { + iAknsConstArray.Reset(); + if( AknLayoutUtils::PenEnabled() ) + { + iAknsConstArray.Append( KAknsIIDQgnIndiCalcCancel ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcSeven ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcFour ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcOne ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcZero ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcSquareroot ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcEight ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcFive ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcTwo ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcSeparator ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcPercent ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcNine ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcSix ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcThree ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcSign ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcDivide ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcMultiply ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcSubtract ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcAdd ); + iAknsConstArray.Append( KAknsIIDQgnIndiCalcEquals ); + } + else + { + //Akn Const for +, -, *, /....etc 0-9 + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonPlus); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonMinus); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonMultiply); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonDivide); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonSign); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonEquals); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonSquareroot); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonPercent); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonUp); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonDown); + + + //Akn Const for pressed +, -, *, /....etc 10-19 + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonPlusPressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonMinusPressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonMultiplyPressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonDividePressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonSignPressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonEqualsPressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonSquarerootPressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonPercentPressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonUpPressed); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonDownPressed); + + //Akn Const for Active/ Inactive icons 20-24 + /*iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonSignInactive); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonSignInactive); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonSquarerootInactive); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonPercentInactive); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonUpInactive); + iAknsConstArray.Append(KAknsIIDQgnIndiCalcButtonDownInactive);*/ + //} + } + } +//EISkin2.6 +//----------------------------------------------------------- +//CCalcAppEnv::LoadFuncMapBitmapSkinChangeL +//Loads the function map Icons when the skin changes +//----------------------------------------------------------- +// +void CCalcAppEnv::LoadFuncMapBitmapSkinChangeL() + { + iIsSkinChanged = ETrue; + LoadFuncMapBitmapL(); + } + + +//----------------------------------------------------------- +//CCalcAppEnv::SetSkinChangedValue +//Sets if the skin is changed or not +//----------------------------------------------------------- + +void CCalcAppEnv::SetSkinChangedValue(TBool aValue) +{ + iIsSkinChanged = aValue; +} +// End of File