--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/src/cphonecontactcontroller.cpp Wed Sep 01 12:30:10 2010 +0100
@@ -0,0 +1,246 @@
+/*
+* Copyright (c) 2002-2005 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: Contact Controller
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "cphonecontactcontroller.h"
+#include <cphonecntsaveaddtoname.h>
+#include <cphcntsingleitemfetch.h>
+#include <cphonecntfactory.h>
+#include <eikenv.h>
+#include <aknappui.h>
+#include <cphcntrfshandler.h>
+#include "phonelogger.h"
+
+
+// CONSTANTS
+
+// Library containing contact matcher.
+_LIT( KPhoneCntFinderLibrary, "phonecntfinder.dll" );
+
+// Ordinal position of function to create instance of CPhoneCntFactory.
+const TInt KPhoneCntFinderOrdinal = 1;
+
+// ================= MEMBER FUNCTIONS =======================
+
+CPhoneContactController* CPhoneContactController::NewL()
+ {
+ CPhoneContactController* self =
+ new ( ELeave ) CPhoneContactController();
+
+ return self;
+ }
+
+CPhoneContactController::~CPhoneContactController()
+ {
+ delete iFactory;
+ iLibrary.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::ContinueConstructL
+// -----------------------------------------------------------------------------
+//
+TInt CPhoneContactController::ContinueConstructL( TInt aSteps )
+ {
+ __PHONELOG( EBasic, EPhoneUIView,
+ "CPhoneViewController::ContinueConstructL()" );
+ if ( aSteps == KConstructAll )
+ {
+ aSteps = ConstructionSteps();
+ }
+
+ // Perform as many steps as required..
+ for ( ; aSteps > 0; aSteps-- )
+ {
+ DoStepL();
+
+ // If we do not need any steps, stop.
+ if ( !ConstructionSteps() )
+ {
+ break;
+ }
+ }
+
+ return ConstructionSteps();
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::ConstructionSteps
+// -----------------------------------------------------------------------------
+//
+TInt CPhoneContactController::ConstructionSteps() const
+ {
+ return TInt( EStepDone - iCurrentStep );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneContactController::CreateSingleItemFetchL
+// ---------------------------------------------------------------------------
+//
+CPhCntSingleItemFetch* CPhoneContactController::CreateSingleItemFetchL()
+ {
+ ConstructCreateFactoryL();
+
+ return iFactory->CreateSingleItemFetchL();
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::CreateSaveAddToNameL
+// -----------------------------------------------------------------------------
+//
+CPhoneCntSaveAddToName* CPhoneContactController::CreateSaveAddToNameL()
+ {
+ ConstructCreateFactoryL();
+
+ return iFactory->CreateSaveAddToNameL();
+ }
+
+
+CPhoneContactController::CPhoneContactController()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::DoStepL
+// -----------------------------------------------------------------------------
+//
+void CPhoneContactController::DoStepL()
+ {
+ // If all steps have been completed, then there is
+ // nothing to do.
+ if ( iCurrentStep == EStepDone )
+ {
+ return;
+ }
+
+ // Perform one step; if it doesn't leave, then we have done it.
+ switch ( iCurrentStep )
+ {
+ case EStepLoadLibrary:
+ ConstructLoadLibraryL();
+ break;
+
+ case EStepCreateFactory:
+ ConstructCreateFactoryL();
+ break;
+
+ case EStepDone:
+ default:
+ return;
+ }
+
+ // Next step
+ iCurrentStep = NextStep( iCurrentStep );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::NextStep
+// -----------------------------------------------------------------------------
+//
+CPhoneContactController::TStep
+ CPhoneContactController::NextStep( TStep aStep )
+ {
+ TStep result = EStepDone;
+
+ switch ( aStep )
+ {
+ case EStepLoadLibrary:
+ result = EStepCreateFactory;
+ break;
+
+ case EStepCreateFactory:
+ result = EStepDone;
+ break;
+
+ case EStepDone:
+ result = EStepDone;
+ break;
+
+ default:
+ break;
+ }
+
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::ConstructLoadLibraryL
+// -----------------------------------------------------------------------------
+//
+void CPhoneContactController::ConstructLoadLibraryL()
+ {
+ if ( !iLibrary.Handle() )
+ {
+ User::LeaveIfError( iLibrary.Load( KPhoneCntFinderLibrary ) );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::ConstructCreateFactoryL
+// -----------------------------------------------------------------------------
+//
+void CPhoneContactController::ConstructCreateFactoryL()
+ {
+ __PHONELOG( EBasic, EPhoneUIView,
+ "CPhoneContactController::ConstructCreateFactoryL()" );
+ if ( !iFactory )
+ {
+ ConstructLoadLibraryL();
+
+ TInt res = iLibrary.Lookup( KPhoneCntFinderOrdinal )();
+ iFactory = (CPhCntFactory*)res;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::CreatePhoneBookServiceL
+// -----------------------------------------------------------------------------
+//
+void CPhoneContactController::CreatePhoneBookServiceL()
+ {
+ __PHONELOG( EBasic, EPhoneUIView,
+ "CPhoneContactController::CreatePhoneBookServiceL()" );
+ if ( iFactory )
+ {
+ iFactory->CreatePhonebookServicesL();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::CreateRfsHandlerL
+// -----------------------------------------------------------------------------
+//
+CPhCntRfsHandler* CPhoneContactController::CreateRfsHandlerL()
+ {
+ ConstructCreateFactoryL();
+
+ return iFactory->CreateRfsHandlerL();
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneContactController::CreateSpeedDialMonitorL
+// -----------------------------------------------------------------------------
+//
+CPhCntSpeedDialMonitor* CPhoneContactController::CreateSpeedDialMonitorL()
+ {
+ ConstructCreateFactoryL();
+
+ return iFactory->CreateSpeedDialMonitorL();
+ }
+// End of File