phoneapp/phoneuiview/src/cphonecontactcontroller.cpp
changeset 0 5f000ab63145
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/src/cphonecontactcontroller.cpp	Mon Jan 18 20:18:27 2010 +0200
@@ -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