diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/Application/src/CPbk2AppViewFactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/Application/src/CPbk2AppViewFactory.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,167 @@ +/* +* Copyright (c) 2005-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: Phonebook 2 application view factory. +* +*/ + + +// INCLUDE FILES +#include "CPbk2AppViewFactory.h" + +// Phonebook 2 +#include "CPbk2AppUi.h" +#include "CPbk2ContactInfoAppView.h" +#include "CPbk2SettingsView.h" +#include +#include +#include +#include + +// Debugging headers +#include + +/// Unnamed namespace for local definitions +namespace { + +#ifdef _DEBUG + +enum TPanicCode + { + EPanicUnknownViewId = 1, + EPanicViewIdMismatch + }; + +void Panic(TPanicCode aReason) + { + _LIT( KPanicText, "CPbk2AppViewFactory" ); + User::Panic(KPanicText,aReason); + } + +#endif // _DEBUG + +} /// namespace + + +// -------------------------------------------------------------------------- +// CPbk2AppViewFactory::CPbk2AppViewFactory +// -------------------------------------------------------------------------- +// +inline CPbk2AppViewFactory::CPbk2AppViewFactory( CPbk2AppUi& aAppUi ): + iAppUi( aAppUi ) + { + } + +// -------------------------------------------------------------------------- +// CPbk2AppViewFactory::~CPbk2AppViewFactory +// -------------------------------------------------------------------------- +// +CPbk2AppViewFactory::~CPbk2AppViewFactory() + { + Release( iExtensionManager ); + } + +// -------------------------------------------------------------------------- +// CPbk2AppViewFactory::NewL +// -------------------------------------------------------------------------- +// +CPbk2AppViewFactory* CPbk2AppViewFactory::NewL( CPbk2AppUi& aAppUi ) + { + CPbk2AppViewFactory* self = NewLC( aAppUi ); + CleanupStack::Pop( self ); + return self; + } + +// -------------------------------------------------------------------------- +// CPbk2AppViewFactory::NewLC +// -------------------------------------------------------------------------- +// +CPbk2AppViewFactory* CPbk2AppViewFactory::NewLC( CPbk2AppUi& aAppUi ) + { + CPbk2AppViewFactory* self = new ( ELeave ) CPbk2AppViewFactory( aAppUi ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// -------------------------------------------------------------------------- +// CPbk2AppViewFactory::ConstructL +// -------------------------------------------------------------------------- +// +inline void CPbk2AppViewFactory::ConstructL() + { + iExtensionManager = CPbk2UIExtensionManager::InstanceL(); + } + +// -------------------------------------------------------------------------- +// CPbk2AppViewFactory::CreateAppViewL +// -------------------------------------------------------------------------- +// +CAknView* CPbk2AppViewFactory::CreateAppViewL( TUid aId ) + { + PBK2_PROFILE_START(Pbk2Profile::EAppViewFactoryCreateAppViewL); + CAknView* view = NULL; + + // Create the view object + switch ( aId.iUid ) + { + case EPbk2ContactInfoViewId: + { + PBK2_PROFILE_START + ( Pbk2Profile::EAppViewFactoryContactInfoAppViewNewL ); + view = CPbk2ContactInfoAppView::NewL + ( iAppUi.ApplicationServices().ContactManager() ); + PBK2_PROFILE_END + ( Pbk2Profile::EAppViewFactoryContactInfoAppViewNewL ); + break; + } + case EPbk2SettingsViewId: + { + PBK2_PROFILE_START + ( Pbk2Profile::EAppViewFactorySettingsAppViewNewL ); + view = CPbk2SettingsView::NewL(); + PBK2_PROFILE_END + ( Pbk2Profile::EAppViewFactorySettingsAppViewNewL ); + break; + } + default: + { + // If the view is not created by any of the cases above, + // we know that the view is brought by some extension because + // the views are created based on the view graph definition + view = iExtensionManager->FactoryL()-> + CreatePhonebook2ViewL( aId ); + break; + } + } + + __ASSERT_DEBUG( view, Panic( EPanicUnknownViewId ) ); + __ASSERT_DEBUG( view->Id() == aId, Panic( EPanicViewIdMismatch ) ); + + // Return the created view object + PBK2_PROFILE_END(Pbk2Profile::EAppViewFactoryCreateAppViewL); + return view; + } + +// -------------------------------------------------------------------------- +// CPbk2AppViewFactory::CreateAppViewLC +// -------------------------------------------------------------------------- +// +CAknView* CPbk2AppViewFactory::CreateAppViewLC( TUid aId ) + { + CAknView* view = CreateAppViewL( aId ); + CleanupStack::PushL( view ); + return view; + } + +// End of File