phonebookengines_old/contactsmodel/cntsrv/inc/CntSpeedDials.h
changeset 40 b46a585f6909
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/cntsrv/inc/CntSpeedDials.h	Fri Jun 11 13:29:23 2010 +0300
@@ -0,0 +1,92 @@
+// Copyright (c) 1997-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:
+//
+
+#ifndef __CNTSERVERSPEEDDIALS_H__
+#define __CNTSERVERSPEEDDIALS_H__
+
+#include <e32base.h>
+#include <cntdef.h>
+
+const TUid KUidCntSpeedDialStream = { 0x10009EF7 };
+
+class CDictionaryFileStore;
+class CCntServerSpeedDialTable;
+
+/** Manages a collection of speed-dial tables. */
+class CCntServerSpeedDialManager : public CBase
+	{
+public:
+	CCntServerSpeedDialManager();
+	~CCntServerSpeedDialManager();
+	CCntServerSpeedDialTable& TableL(const TDesC& aDatabase);
+	TBool DeleteTable(const TDesC& aDatabase);
+
+	void StoreL(CDictionaryFileStore& aStore) const;
+	void RestoreL(CDictionaryFileStore& aStore);
+	static TUid SpeedDialFieldUidFromSpeedDialPosition(TInt aSpeedDialPosition);
+private: 
+	RPointerArray<CCntServerSpeedDialTable> iSpeedDials;
+	};
+
+
+/** A speed-dial table. */
+class CCntServerSpeedDialTable : public CBase
+	{
+public:
+	static CCntServerSpeedDialTable* NewL(const TDesC& aDatabase);
+	~CCntServerSpeedDialTable();
+	inline const TDesC& Database() const;
+	TContactItemId SpeedDialContactItem(TInt aIndex, TDes& aPhoneNumber) const;
+	CArrayFix<TInt>* SpeedDialIndicesForContactIdLC(TContactItemId aContactId);
+	void SetSpeedDialL(TInt aIndex, TContactItemId aContactId, const TSpeedDialPhoneNumber& aPhoneNumber);
+		
+	void InternalizeL(RReadStream& aStream);
+	void ExternalizeL(RWriteStream& aStream) const;
+private:
+	CCntServerSpeedDialTable();
+	void ConstructL(const TDesC& aDatabase);
+private: 
+	/** An individual speed-dial entry. */
+	class CSpeedDial : public CBase
+		{
+	public:
+		CSpeedDial();
+		static CSpeedDial* NewL(TContactItemId aContactId, const TSpeedDialPhoneNumber& aPhoneNumber);
+		~CSpeedDial();
+		inline TContactItemId ContactId() const;
+		void PhoneNumber(TSpeedDialPhoneNumber& aSpeedNumber) const;
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL(RWriteStream& aStream) const;
+		void Reset();
+		void SetL(TContactItemId aContactId, const TSpeedDialPhoneNumber& aPhoneNumber);
+	private: 
+		CSpeedDial(TContactItemId aContactId, const TSpeedDialPhoneNumber& aPhoneNumber);
+		void ConstructL();
+	private: 
+		TContactItemId iContactId;
+		HBufC* iPhoneNumber;
+		};
+private:
+	TFixedArray<CSpeedDial,KCntMaxSpeedDialIndex> iSpeedDialTable;
+	HBufC* iDatabaseFile;
+	};
+
+
+inline const TDesC& CCntServerSpeedDialTable::Database() const { return *iDatabaseFile; }
+inline TContactItemId CCntServerSpeedDialTable::CSpeedDial::ContactId() const { return iContactId; }
+
+
+
+#endif