diff -r 5f0182e07bfb -r 5456b4e8b3a8 idlehomescreen/xmluirendering/uiengine/src/xnappuiadapterimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnappuiadapterimpl.cpp Wed Sep 01 12:32:46 2010 +0100 @@ -0,0 +1,350 @@ +/* +* Copyright (c) 2002-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: Implementation for Avkon adapter +* +*/ + +// System includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// User includes +#include "xnappuiadapter.h" +#include "xnuiengine.h" +#include "xnviewmanager.h" +#include "xnviewadapter.h" +#include "xnuistatelistener.h" +#include "xnbackgroundmanager.h" +#include "hscontentcontrolfactory.h" +#include "xneditor.h" +#include "xnwallpaperview.h" +#include "xneffectmanager.h" +#include "xnwaitdialog.h" +#include "xnitemactivator.h" + +#include "xnappuiadapterimpl.h" + +#include "debug.h" + +// Constants +_LIT( KResourceDrive, "z:" ); +_LIT( KResourceFile, "xnuiengine.rsc" ); + +// ============================= LOCAL FUNCTIONS =============================== + +// ============================ MEMBER FUNCTIONS =============================== +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::NewL() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CXnAppUiAdapterImpl* CXnAppUiAdapterImpl::NewL( TUid aApplicationUid, + CXnAppUiAdapter& aAdapter ) + { + return new ( ELeave ) CXnAppUiAdapterImpl( aApplicationUid, aAdapter ); + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::CXnAppUiAdapterImpl +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CXnAppUiAdapterImpl::CXnAppUiAdapterImpl( TUid aApplicationUid, + CXnAppUiAdapter& aAdapter ) + : iAdapter( aAdapter ), iApplicationUid( aApplicationUid ) + { + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::ConstructL +// Second-phase constructor +// ----------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::ConstructL() + { + __PRINTS( "*** CXnAppUiAdapterImpl::ConstructL" ); + __TIME_MARK( time ); + + const TInt KMaxUidLength( 10 ); + _LIT8( KUint, "%u" ); + TBuf8< KMaxUidLength > uid; + uid.Format( KUint, iApplicationUid.iUid ); + + HSPluginSettingsIf::CHomescreenSettings::InitializeL( uid ); + + TFileName resFile; + resFile.Append( KResourceDrive ); + resFile.Append( KDC_APP_RESOURCE_DIR ); + resFile.Append( KResourceFile ); + BaflUtils::NearestLanguageFile( CCoeEnv::Static()->FsSession(), + resFile ); + + iResourceOffset = CCoeEnv::Static()->AddResourceFileL( resFile ); + + iContentControlFactory = CHsContentControlFactory::NewL( iAdapter ); + + iUiStateListener = CXnUiStateListener::NewL( iAdapter ); + + iViewManager = CXnViewManager::NewL( iAdapter ); + + iUiEngine = CXnUiEngine::NewL( iAdapter ); + + iViewManager->SetUiEngine( *iUiEngine ); + + // iViewAdapter is owned by CAknViewAppUi + iViewAdapter = CXnViewAdapter::NewL( iAdapter ); + + iViewManager->LoadUiL(); + + iCcProviderClient = CHsCcProviderClient::NewL( iViewManager->Editor() ); + + CXnWallpaperView* wallpaper = CXnWallpaperView::NewL( *iUiEngine ); + CleanupStack::PushL( wallpaper ); + + // wallpaper view is owned by CAknViewAppUi + iAdapter.AddViewL( wallpaper ); + CleanupStack::Pop( wallpaper ); + + iEffectManager = CXnEffectManager::NewL( iAdapter ); + + iBackupRestoreObserver = CXnPropertySubscriber::NewL( + KUidSystemCategory, conn::KUidBackupRestoreKey, *this ); + + iActivator = CXnItemActivator::NewL( iAdapter ); + + __TIME_ENDMARK( "CXnAppUiAdapterImpl::ConstructL, done", time ); + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::ReloadUiL +// Reloads UI when application root configuration is changed +// ----------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::ReloadUiL() + { + // If the UI hasn't been loaded yet, ignore the event + if( !iViewAdapter || !iViewManager ) + { + return; + } + + __PRINTS( "*** CXnAppUiAdapterImpl::ReloadUiL" ); + __TIME_MARK( time ); + + delete iActivator; + iActivator = NULL; + + iViewAdapter->ReloadUiL(); + + iViewManager->ReloadUiL(); + + iActivator = CXnItemActivator::NewL( iAdapter ); + + __TIME_ENDMARK( "CXnAppUiAdapterImpl::ReloadUiL, done", time ); + } + +// ----------------------------------------------------------------------------- +// Destructor +// +// ----------------------------------------------------------------------------- +// +CXnAppUiAdapterImpl::~CXnAppUiAdapterImpl() + { + if ( iBURWaitDialog ) + { + TRAP_IGNORE( iBURWaitDialog->ProcessFinishedL(); ); + } + + delete iActivator; + + delete iBackupRestoreObserver; + + delete iUiEngine; + + delete iUiStateListener; + + delete iViewManager; + + delete iCcProviderClient; + + delete iEffectManager; + + CCoeEnv::Static()->DeleteResourceFile( iResourceOffset ) ; + HSPluginSettingsIf::CHomescreenSettings::UnInitialize(); + + delete iContentControlFactory; + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::UiEngine +// Gets UI engine +// ----------------------------------------------------------------------------- +// +CXnUiEngine& CXnAppUiAdapterImpl::UiEngine() const + { + return *iUiEngine; + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::ViewAdapter +// Gets view adapter +// ----------------------------------------------------------------------------- +// +CXnViewAdapter& CXnAppUiAdapterImpl::ViewAdapter() const + { + return *iViewAdapter; + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::ViewManager +// Gets view manager +// ----------------------------------------------------------------------------- +// +CXnViewManager& CXnAppUiAdapterImpl::ViewManager() const + { + return *iViewManager; + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::UiStateListener +// Gets UI state listener +// ----------------------------------------------------------------------------- +// +CXnUiStateListener& CXnAppUiAdapterImpl::UiStateListener() const + { + return *iUiStateListener; + } + + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::HsContentController +// Gets Content control UI interface +// ----------------------------------------------------------------------------- +// +MHsContentControlUi* CXnAppUiAdapterImpl::HsContentController( + const TDesC8& aType ) const + { + return iContentControlFactory->GetHsContentController( aType ); + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::HsContentControlFactory +// Gets Content control factory +// ----------------------------------------------------------------------------- +// +CHsContentControlFactory* CXnAppUiAdapterImpl::HsContentControlFactory() + { + return iContentControlFactory; + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::EffectManager +// Get effect manager. +// ----------------------------------------------------------------------------- +// +CXnEffectManager* CXnAppUiAdapterImpl::EffectManager() const + { + return iEffectManager; + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::HsContentControlSrv +// Gets Content control server interface +// ----------------------------------------------------------------------------- +// +MHsContentControl* CXnAppUiAdapterImpl::HsContentControlSrv() const + { + return iCcProviderClient; + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::ItemActivator +// Gets Item activator +// ----------------------------------------------------------------------------- +// +CXnItemActivator& CXnAppUiAdapterImpl::ItemActivator() const + { + return *iActivator; + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::HandleResourceChangeL +// Handles resource changes +// ----------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::HandleResourceChangeL( TInt aType ) + { + iUiStateListener->HandleResourceChangeL( aType ); + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::DisplayWaitDialogL +// Displays wait dialog during backup/restore. +// ----------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::DisplayWaitDialogL() + { + if ( !iBURWaitDialog ) + { + iBURWaitDialog = new( ELeave ) CXnWaitDialog( + reinterpret_cast( &iBURWaitDialog ), ETrue ); + iBURWaitDialog->SetCallback( this ); + iBURWaitDialog->ExecuteLD( R_BACKUP_RESTORE_WAIT_DIALOG ); + } + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::BackupRestoreEvent +// Property changed notification callback +// ----------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::PropertyChangedL( const TUint32 aKey, + const TInt aValue ) + { + const TUint mask( conn::KBURPartTypeMask ^ conn::EBURNormal ); + if ( aKey == conn::KUidBackupRestoreKey ) + { + if ( aValue & mask ) + { + // Any type of backup or restore operation started + DisplayWaitDialogL(); + } + else if ( iBURWaitDialog ) + { + // Any type of backup or restore operation ended + iBURWaitDialog->ProcessFinishedL(); + // ProcessFinishedL() will NULL iBURWaitDialog + } + } + } + +// ---------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::DialogDismissedL() +// Callback method from MProgressDialogCallback interface. +// ---------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::DialogDismissedL(TInt /*aButtonId*/) + { + // No implementation required. + } + +// End of file