pimprotocols/phonebooksync/inc/WriteContactToICC.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimprotocols/phonebooksync/inc/WriteContactToICC.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,148 @@
+// Copyright (c) 2002-2009 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:
+// Header file for the Active Object responsible for writting to the ICC.
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef __WRITECONTACTTOICC_H__
+#define __WRITECONTACTTOICC_H__
+
+#include <e32base.h>
+#include <mpbutil.h>
+#include <etelmm.h>
+#include <etelsat.h>
+#include <satcs.h>
+
+#include "phbksyncsvr.h"
+#include "SyncEngineServer.h"
+
+
+/**
+ *  This class is responsible for implementing the state machine required to write 
+ *  phonebook entries to ICC.
+ */
+class CWriteContactToICC : public CActive
+	{
+private:
+	enum TPBSyncIccWrite
+		{
+		EPBSyncIccWriteIdle,
+		EPBSyncIccWriteWaitForIccWrite,
+		EPBSyncIccWriteWaitForCancel,
+		EPBSyncIccWriteDeleteOldSlot
+		};
+
+	enum TTypeOfWrite
+		{
+		EWriteAddNew,
+		EWriteEdit,
+		EWriteEditSlotNumber
+		};
+
+public:
+	static CWriteContactToICC* NewL(CSyncEngineSession& aSession,
+									TInt aBufferSize,
+									CPhoneBookManager& aPhonebookManager,
+									RMobilePhone& aPhone,
+									TUid aPhonebookUid,
+									const RMessage2& aClientMessage);
+	~CWriteContactToICC();
+
+	void DoIccWriteL();
+
+	inline TUid PhonebookUid() const;
+	inline const RMessage2& ClientMessage() const;
+	inline TInt SlotNum() const;
+
+	void DoCancel();
+
+protected:
+	void RunL();
+	TInt RunError(TInt aError);
+
+private:
+	CWriteContactToICC(CSyncEngineSession& aSession,
+					   CPhoneBookManager& aPhonebookManager,
+					   RMobilePhone& aPhone,
+					   TUid aPhonebookUid,
+					   const RMessage2& aClientMessage);
+	void ConstructL(TInt aBufferSize);
+
+	TUint8 ConvertTonNpiByte(RMobilePhone::TMobileTON aTon);
+	void EncodeICCEntryL();
+
+
+	CSyncEngineSession&  iSession;
+	CPhoneBookManager&  iPhonebookManager;
+	RMobilePhone&  iPhone;
+	TUid iPhonebookUid;
+	RMessage2 iClientMessage;
+
+	CBufBase*  iIccEntryBuf;
+	TPtr8  iIccEntryPtr;
+	CSyncContactICCEntry*  iIccEntry;
+
+	HBufC8*  iPhonebookData;
+	TPtr8  iPhonebookDataPtr;
+	TInt  iOldSlot;
+
+	TTypeOfWrite  iTypeOfWrite;
+	TPBSyncIccWrite  iIccWriteState;
+	RMobilePhoneBookStore  iPhonebookStore;
+	RMobilePhoneBookStore::TMobilePhoneBookInfoV5  iPhBkInfoV5;
+	CPhoneBookBuffer*  iPhonebookBuffer;
+	TBool  iIsUsedSlot;
+	};
+
+
+/**
+ *  Return the ICC phonebook UID. 
+ *
+ *  @return The UID of the phonebook being used by this Active Object.
+ */
+inline TUid CWriteContactToICC::PhonebookUid() const
+	{
+	return iPhonebookUid;
+	} // CWriteContactToICC::PhonebookUid
+
+
+/**
+ *  Return the client message handle. 
+ *
+ *  @return  A reference to the client message request being used by this
+ *           Active Object.
+ */
+inline const RMessage2& CWriteContactToICC::ClientMessage() const
+	{
+	return iClientMessage;
+	} // CWriteContactToICC::ClientMessage
+
+
+/**
+ *  Return the slot number of the newly written entry. 
+ *
+ *  @return The slot number.
+ */
+inline TInt CWriteContactToICC::SlotNum() const
+	{
+	return iIccEntry->iSlotNum;
+	} // CWriteContactToICC::SlotNum
+
+
+#endif // __WRITECONTACTTOICC_H__