diff -r aaeeca1f15af -r e8d784ac1a4b src/screensaverview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/screensaverview.cpp Wed Sep 01 12:30:40 2010 +0100 @@ -0,0 +1,283 @@ +/* +* Copyright (c) 2004 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: Screensaver view class implementation. +* +*/ + + + +#include +#include + +#include "ScreensaverUtils.h" +#include "screensaverview.h" +#include "screensaverappui.h" +#include "screensaverplugin.h" +#include "screensaverutility.h" +#include "screensaverctrlmovingtext.h" +#include "screensaverctrlnone.h" +#include "screensaverctrlplugin.h" +#include "screensaverengine.h" +#include "screensavershareddatai.h" + +const TUid KBigClockScreensaverPluginImplUid = { 0x2002E6DE }; + +// ----------------------------------------------------------------------------- +// CScreensaverView::NewLC +// add this NewLC code called by UI +// ----------------------------------------------------------------------------- +// +CScreensaverView* CScreensaverView::NewL() + { + CScreensaverView* self = new( ELeave ) CScreensaverView(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::CScreensaverView +// ----------------------------------------------------------------------------- +// +CScreensaverView::CScreensaverView() + { + } + + +// ----------------------------------------------------------------------------- +// CScreensaverView::~CScreensaverView +// ----------------------------------------------------------------------------- +// +CScreensaverView::~CScreensaverView( ) + { + DestroyDisplayObject(); + } + + +// ----------------------------------------------------------------------------- +// CScreensaverView::ConstructL +// ----------------------------------------------------------------------------- +// +void CScreensaverView::ConstructL( ) + { + // Let CAknView do its stuff + BaseConstructL(); + + SetDisplayObject( PslnSettingScreensaverType() ); + } + + +// ----------------------------------------------------------------------------- +// CScreensaverView::CreateDisplayObjectL +// ----------------------------------------------------------------------------- +// +void CScreensaverView::CreateDisplayObjectL( TDisplayObjectType aType ) + { + SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::CreateDisplayObjectL "),aType); + + DestroyDisplayObject(); + + switch( aType ) + { + case EDisplayPlugin: + { + iControl = CScreensaverCtrlPlugin::NewL(); + CScreensaverCtrlPlugin* pluginCtrl = + STATIC_CAST( CScreensaverCtrlPlugin*, iControl ); + if ( pluginCtrl->PluginImplementationUid() == + KBigClockScreensaverPluginImplUid ) + { + iIsContentless = ETrue; + } + break; + } + case EDisplayTime: + case EDisplayText: +#ifdef USE_DATE_AND_TEXT + { + iControl = CScreensaverCtrlMovingText::NewL( aType ); + break; + } +#endif + case EDisplayNone: + { + iControl = CScreensaverCtrlNone::NewL(); + // iIsContentless = ETrue; + break; + } + + default: + { + break; + } + } + + iCurrentControlType = aType; + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::SetDisplayObject +// ----------------------------------------------------------------------------- +// +void CScreensaverView::SetDisplayObject( TDisplayObjectType aType ) + { + SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::SetDisplayObject ")); + + TRAPD( error, CreateDisplayObjectL( aType ) ); + + if(error == KErrNone) + return; + + SCRLOGGER_WRITE("ResetDisplayObject() setting default screensaver"); + + TRAP_IGNORE( CreateDisplayObjectL( DefaultScreensaverType() ) ); + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::CreatePreviewDisplayObjectL +// ----------------------------------------------------------------------------- +// +void CScreensaverView::CreatePreviewDisplayObjectL() + { + SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::CreatePreviewDisplayObjectL ")); + TRAPD( error, CreateDisplayObjectL( PslnSettingScreensaverType() ) ); + + if(error == KErrNone) + { + Model().SharedDataInterface()->SetScreensaverPreviewState( + EScreenSaverPreviewLoaded ); + return; + } + + Model().SharedDataInterface()->SetScreensaverPreviewState( + EScreenSaverPreviewError ); + } + +// --------------------------------------------------------------------------- +// CScreensaverView::IsContentlessScreensaver +// --------------------------------------------------------------------------- +// +TBool CScreensaverView::IsContentlessScreensaver() const + { + return iIsContentless; + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::Id +// ----------------------------------------------------------------------------- +// +TUid CScreensaverView::Id( ) const + { + return KUidScreensaverView; + } + + +// ----------------------------------------------------------------------------- +// CScreensaverView::DoActivateL +// ----------------------------------------------------------------------------- +// +void CScreensaverView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, + TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/) + { + } + + +// ----------------------------------------------------------------------------- +// CScreensaverView::DoDeactivate +// ----------------------------------------------------------------------------- +// +void CScreensaverView::DoDeactivate( ) + { + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::ShowDisplayObject +// ----------------------------------------------------------------------------- +// +void CScreensaverView::ShowDisplayObject() + { + SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::ShowDisplayObject ")); + + iControl->StartDrawObject(); + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::HideDisplayObject +// ----------------------------------------------------------------------------- +// +void CScreensaverView::HideDisplayObject() + { + SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::HideDisplayObject ")); + iControl->StopDrawObject(); + + if ( !IsContentlessScreensaver() ) + { + ScreensaverUtility::SendToBackground(); + } + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::UpdateAndRefresh +// Updates indicators and refreshes the display +// ----------------------------------------------------------------------------- +// +void CScreensaverView::UpdateAndRefresh( ) + { + SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::UpdateAndRefresh ")); + iControl->Refresh(); + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::DefaultScreensaverType +// ----------------------------------------------------------------------------- +// +TDisplayObjectType CScreensaverView::DefaultScreensaverType() + { + return Model().SharedDataInterface()->DefaultScreensaverType(); + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::PslnSettingScreensaverType +// ----------------------------------------------------------------------------- +// +TDisplayObjectType CScreensaverView::PslnSettingScreensaverType() + { + return Model().SharedDataInterface()->DisplayObjectType(); + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::Model +// ----------------------------------------------------------------------------- +// +CScreensaverEngine& CScreensaverView::Model() const + { + return STATIC_CAST( CScreensaverAppUi*, CCoeEnv::Static()->AppUi() )->Model(); + } + +// ----------------------------------------------------------------------------- +// CScreensaverView::DestroyDisplayObject +// ----------------------------------------------------------------------------- +// +void CScreensaverView::DestroyDisplayObject() + { + SCRLOGGER_WRITEF(_L("SCR: CScreensaverView::DestroyDisplayObject ")); + if( iControl ) + { + delete iControl; + iControl = NULL; + } + iIsContentless = EFalse; + } +// End of file