diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/src/camstartuplogo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/src/camstartuplogo.cpp Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,216 @@ +/* +* Copyright (c) 2010 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: CCoeControl to show a logo at camera application startup +* +*/ + +#include +#include +#include +#include +#include +#include "camlogging.h" +#include "camstartuplogo.h" + +_LIT(KCamBitmapFile, "z:\\resource\\apps\\cameraapp.mif"); +const TInt KStartupLogoOrdinalPriority( 2 ); + +// --------------------------------------------------------------------------- +// Two-phased constructor +// --------------------------------------------------------------------------- +// +CCamStartupLogo* CCamStartupLogo::NewL(CCamStartupLogoController& aController, + const TRect& aRect) + { + PRINT(_L("Camera => CCamStartupLogo::NewL")) + CCamStartupLogo* self = new (ELeave) CCamStartupLogo(aController, aRect); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + PRINT(_L("Camera <= CCamStartupLogo::NewL")) + return self; + } + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +// +CCamStartupLogo::CCamStartupLogo(CCamStartupLogoController& aController, + const TRect& aRect) + : iRect(aRect), iController(aController) + { + // No implementation needed + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CCamStartupLogo::~CCamStartupLogo() + { + iController.RemoveObserver(this); + + delete iLogo; + delete iLogoMask; + } + +// --------------------------------------------------------------------------- +// 2nd phase constructor +// --------------------------------------------------------------------------- +// +void CCamStartupLogo::ConstructL() + { + PRINT(_L("Camera => CCamStartupLogo::ConstructL")) + + iController.AddObserver(this); + + if (iController.State() == EStartupLogoVisible) + { + ShowL(); + } + + PRINT(_L("Camera <= CCamStartupLogo::ConstructL")) + } + +// --------------------------------------------------------------------------- +// CCamStartupLogo::StartupLogoControllerStateChanged +// --------------------------------------------------------------------------- +// +void CCamStartupLogo::StartupLogoControllerStateChanged( + TStartupLogoState aNewState) + { + PRINT(_L("Camera => CCamStartupLogo::StartupLogoControllerStateChanged")) + + if (aNewState == EStartupLogoNotVisible) + { + Hide(); + } + else if (aNewState == EStartupLogoVisible) + { + TRAP_IGNORE(ShowL()); + } + else + { + PRINT(_L("Camera <> StartupLogoControllerStateChanged - unknown state")) + } + + PRINT(_L("Camera <= CCamStartupLogo::StartupLogoControllerStateChanged")) + } + +// --------------------------------------------------------------------------- +// CCamStartupLogo::ShowL +// --------------------------------------------------------------------------- +// +void CCamStartupLogo::ShowL() + { + PRINT(_L("Camera => CCamStartupLogo::ShowL")) + + if (!iLogo || !iLogoMask) + { + delete iLogo; + iLogo = NULL; + delete iLogoMask; + iLogoMask = NULL; + + TTime t0; + t0.UniversalTime(); + + AknIconUtils::CreateIconL(iLogo, + iLogoMask, + KCamBitmapFile, + EMbmCameraappQgn_menu_cams, + EMbmCameraappQgn_menu_cams_mask); + + TSize logoSize(iRect.Size().iWidth/2, iRect.Size().iHeight/2); + AknIconUtils::SetSize(iLogo, logoSize); + + TTime t1; + t1.UniversalTime(); + + PRINT1(_L("Camera <> Startup icon load took %d us"), I64LOW(t1.MicroSecondsFrom(t0).Int64())) + } + + if (!iWindowCreated) + { + CreateWindowL(); + iWindowCreated = ETrue; + } + + if (!IsActivated()) + { + ActivateL(); + } + + SetExtentToWholeScreen(); + + MakeVisible(ETrue); + RDrawableWindow* window = DrawableWindow(); + if (window) + { + window->SetOrdinalPosition(0, KStartupLogoOrdinalPriority); + } + + PRINT(_L("Camera <= CCamStartupLogo::ShowL")) + } + +// --------------------------------------------------------------------------- +// CCamStartupLogo::Hide +// --------------------------------------------------------------------------- +// +void CCamStartupLogo::Hide() + { + PRINT(_L("Camera => CCamStartupLogo::Hide")) + + MakeVisible(EFalse); + + if (iWindowCreated) + { + CloseWindow(); + iWindowCreated = EFalse; + } + + delete iLogo; + iLogo = NULL; + delete iLogoMask; + iLogoMask = NULL; + + PRINT(_L("Camera <= CCamStartupLogo::Hide")) + } + +// --------------------------------------------------------------------------- +// CCamStartupLogo::Draw +// --------------------------------------------------------------------------- +// +void CCamStartupLogo::Draw(const TRect& /*aRect*/) const + { + PRINT(_L("Camera <> CCamStartupLogo::Draw")) + + CWindowGc& gc = SystemGc(); + + gc.SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + gc.SetBrushColor(TRgb::Color16MA(0xFF000000)); // opaque black + gc.SetPenStyle(CGraphicsContext::ENullPen); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush); + gc.DrawRect(Rect()); + + if (iLogo && iLogoMask) + { + TSize logoSize(iLogo->SizeInPixels()); + TPoint logoTl(iRect.Center().iX - logoSize.iWidth / 2, + iRect.Center().iY - logoSize.iHeight / 2); + gc.BitBltMasked(logoTl, iLogo, TRect(logoSize), iLogoMask, EFalse); + } + } +