applayerpluginsandutils/bookmarksupport/src/propertyreg.h
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/bookmarksupport/src/propertyreg.h	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,78 @@
+// Copyright (c) 2005-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:
+// Classes for registering custom properties.
+// @internalComponent
+// 
+//
+
+#ifndef __PROPERTYREG_H__
+#define __PROPERTYREG_H__
+
+#include "customproperty.h"
+
+typedef RArray<TAny*> TCustomPropertyList;
+
+/**
+The client can register custom properties for bookmark items and the database. There are three sets of 
+registered properties: database properties, folder properties and bookmark properties. This class is 
+responsible for handling the registration and checking the registration of these properties.
+*/
+class CPropertyReg: public CBase
+	{
+public:
+	enum TPropertyGroup
+		{
+		EGroupDatabase,
+		EGroupFolder,
+		EGroupBookmark
+		};
+public:
+	static CPropertyReg* NewL();
+	~CPropertyReg();
+	
+	void RefreshL();
+	void CommitL();
+	
+	void RegisterPropertyL(TPropertyGroup aGroup, TUid aCustomId, Bookmark::TPropertyType aDataType);
+	TInt DeregisterPropertyL(TPropertyGroup aGroup, TUid aCustomId);
+	TInt PropertyIndex(TPropertyGroup aGroup, TUid aPropertyId, Bookmark::TPropertyType aType);
+	TInt GetPropertyType(TPropertyGroup aGroup, TInt aPropertyIndex, Bookmark::TPropertyType& aType);
+	
+private:
+	CPropertyReg();
+	void ConstructL();
+	void Reset();
+	
+	TUint32 AssignIdL(TPropertyGroup aGroup);
+
+	TInt FindProperty(TPropertyList& aList, TUid aPropertyId);
+	
+	void UpdateValueListItemL(TCustomPropertyList& aValueList, TInt aIndex, Bookmark::TPropertyType aType, const TAny* aValue);
+	
+	TPropertyList& List(TPropertyGroup aGroup);
+	
+	void LoadPropertyListL(TPropertyList& aList, TUint32 aPropertyStart);
+	void LoadPropertiesL();
+	
+private:
+	CRepository*	iDatabaseRepository;
+	
+	TPropertyList	iDatabaseProperties;
+	TPropertyList	iFolderProperties;
+	TPropertyList	iBookmarkProperties;
+	
+	TBkmrkAccessorList iDeletedList;
+	};
+
+#endif //__PROPERTYREG_H__