contactextensions/predefinedcontacts/inc/PdcEngine.h
branchRCL_3
changeset 20 f4a778e096c2
parent 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactextensions/predefinedcontacts/inc/PdcEngine.h	Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,159 @@
+/*
+* 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:    Predefined contacts engine (state machine)
+*
+*/
+
+#ifndef C_PDCENGINE_H
+#define C_PDCENGINE_H
+
+// System includes
+#include <e32std.h>						//for iErrorArray
+#include <e32base.h>                    // CActive
+#include <f32file.h>                    // RFs 
+#include <MVPbkContactStoreObserver.h>  // MVPbkContactStoreObserver
+#include <flogger.h>
+
+// Forward declarations
+class CVPbkContactManager;
+class CPdcVCardImporter;
+class CPdcXmlImporter;
+class CPdcData;
+class MVPbkContactStore;
+class CVPbkContactLinkArray;
+class CPdcContactDeletion;
+
+/**
+ *  Predefined Contacts engine
+ *  This class as a state machine for the reading of the
+ *  predefined contacts from file, and adding the
+ *  contacts to the contacts database by the delegation of
+ *  the tasks to the relevent classes.
+ */ 
+NONSHARABLE_CLASS( CPdcEngine ): public CActive,
+    public MVPbkContactStoreObserver
+    {
+public:
+    /**
+     * Current state of the engine is
+     * represented by an enumeration.
+     */
+    enum TPdcEngineState
+        {
+        EOpeningContacts,
+        EDeleteOldContacts,
+        EGettingFileLocation,
+        EReadingVCards,
+        EReadingXML,
+        EUpdateData,
+        EDeleteStoredContact,
+        EFinish
+        };
+
+public:    
+    /**
+    * Symbian 1st phase constructor
+    * @return Self pointer to CPdcEngine pushed to
+    * the cleanup stack.
+    */
+    static CPdcEngine* NewLC();
+
+    /**
+    * Destructor.
+    */
+    virtual ~CPdcEngine();
+
+public:
+    /**
+    * Checks if the predefined contacts need to be added.
+    * @return ETrue if the predefined contacts need to be added
+    */
+    TBool PredefinedContactsNeedAddingL();
+    
+    /**
+    * Starts the asyncronous process of reading and adding the
+    * predefined contacts to the contact model
+    */
+    void AddPredefinedContactsL();
+    
+    /**
+    * Starts the asyncronous process of reading and adding the
+    * predefined contacts to the contact model
+    * @param aStatus  TRequestStatus of caller (called by ECom
+    *                 plugin starting mechanism.
+    */
+    void AddPredefinedContactsL( TRequestStatus& aStatus );
+
+private: // C++ constructor and the Symbian second-phase constructor
+    CPdcEngine();
+    void ConstructL();
+
+private: // private member functions
+    void SelfComplete();
+    
+    void DeleteContactsL();
+    void GetFileLocationL();
+    void ReadVCardsL();
+    void ReadXmlL();
+    void UpdateDataL();
+    void Finish( TInt aError );
+    
+    void DisplayErrorNoteL( TInt aError, TInt aErrorPosition,
+            TBool errorCannotReserve );
+    
+    /**
+    *CPdcEngine::DeleteStoredContactsL
+    * Called when error occur iwhile reading XML or vcard file.
+    */
+	  void DeleteStoredContactsL();
+	  
+private: // From CActive
+    void DoCancel();
+	void RunL();
+	TInt RunError( TInt aError );
+	
+private: // from MVPbkContactStoreObserver
+    void StoreReady( MVPbkContactStore& aContactStore );
+    void StoreUnavailable( MVPbkContactStore& aContactStore, TInt aReason );
+    void HandleStoreEventL( MVPbkContactStore& aContactStore, 
+                                      TVPbkContactStoreEvent aStoreEvent );
+
+private: // data
+    /// Current state of engine
+    TPdcEngineState iEngineState;
+    /// File system
+    RFs iFs;
+    /// Own: Contact manager
+    CVPbkContactManager* iContactManager;
+    /// Own: Contact store
+    MVPbkContactStore* iContactStore;
+    /// Own: directory containing predefined contacts
+    HBufC* iFileDirectory;
+    /// Own: vCard importer
+    CPdcVCardImporter* iVCardImporter;
+    /// Own: Xml importer 
+    CPdcXmlImporter* iXmlImporter;
+    /// Own: Data checker
+    CPdcData* iPdcData;
+    /// Own: Ids of the contacts that have been added
+    CVPbkContactLinkArray* iLinkArray;
+    /// Own: Contact bulk deleter 
+    CPdcContactDeletion* iContactDeleter;
+    /// Ref: TRequestStatus of caller
+    TRequestStatus* iCallerStatus;
+    /// Judge the type of deletion operator
+    TBool iDeletedStoredContact;
+    };
+
+#endif // C_PDCENGINE_H