contactextensions/predefinedcontacts/src/PdcMain.cpp
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactextensions/predefinedcontacts/src/PdcMain.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 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:    Entry point for executable, creates and then runs the
+*                predefined contacts engine.
+*
+*/
+
+// System includes
+#include <e32base.h>        // CActiveScheduler, CTrapCleanup
+
+// User includes
+#include "PdcEngine.h"      // CPdcEngine
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Leaving main functions, creates the predefined contacts engine
+// and starts the active scheduler.
+// ---------------------------------------------------------------------------
+//
+void StartPdcEngineL()
+	{
+    // Create and install the active scheduler		
+	CActiveScheduler* activeScheduler	= new (ELeave) CActiveScheduler();
+	CleanupStack::PushL( activeScheduler );
+	CActiveScheduler::Install( activeScheduler );
+	
+	// Create the engine
+	CPdcEngine* engine = CPdcEngine::NewLC();
+	
+	RProcess::Rendezvous(KErrNone);
+	
+	// Check if the predefined contacts need to be added to contacts
+	if ( engine->PredefinedContactsNeedAddingL() )
+	    {
+	    // Begin the process of adding the predefined contacts
+	    engine->AddPredefinedContactsL();
+	    
+	    // Start the active scheduler, the active scheduler is stopped
+	    // by the engine, when the adding of the predefined contacts
+	    // has finished.
+	    CActiveScheduler::Start();
+	    }
+	
+	// Cleanup.
+	CleanupStack::PopAndDestroy( engine );	
+	CleanupStack::PopAndDestroy( activeScheduler );
+	}
+
+// ---------------------------------------------------------------------------
+// Main function of the predefined contacts executable.
+// ---------------------------------------------------------------------------
+//
+TInt E32Main()
+    {
+    __UHEAP_MARK;
+    
+    // Create the  cleanup stack   
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    if( !cleanup )
+    	{
+    	return KErrNoMemory;
+    	}
+    
+    // Start the engine
+    TRAPD( err, StartPdcEngineL() );
+
+    // Cleanup.
+    delete cleanup;
+    
+    __UHEAP_MARKEND;
+    
+    return err;
+    }
+    
+