applayerpluginsandutils/bookmarksupport/src/bkmrkdb.h
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/bookmarksupport/src/bkmrkdb.h	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,177 @@
+// 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 manipulating bookmarks and bookmark folders.
+// @internalComponent
+// 
+//
+
+#ifndef __BKMRKDB_H__
+#define __BKMRKDB_H__
+
+#include <centralrepository.h>
+#include <bautils.h>
+#include <bookmarkdatabase.h>
+#include "bkmrkattachment.h"
+#include "bkmrkwatcher.h"
+#include "propertyreg.h"
+#include "propertylist.h"
+
+typedef RArray<CBookmarkBase*>			TBkmrkList;
+
+/**
+Internal representation for the bookmark database. The database object creates the connection 
+to the repositories and is the entry point for browsing the boomark tree. It is also responsible 
+for all database-wide properties.
+*/
+class CBookmarkDb: public CRepositoryAccessor, public MBkmrkWatcherObserver
+	{
+public:
+	class TProperty
+		{
+	public:
+		TUid iId;
+		Bookmark::TPropertyType iDataType;
+		};
+public:
+	static CBookmarkDb* NewL(Bookmark::TVisibility aVisibility, MBookmarkObserver* aObserver);
+	~CBookmarkDb();
+
+	TBool IsTreeConstructed();
+	void ConstructTreeL();
+	
+	void RefreshL();
+
+	CBookmarkFolder& RootL();
+
+	CBookmarkBase* FindItem(Bookmark::TItemId aItem);
+	CBookmarkFolder* FindFolder(const TDesC& aFolderName);
+
+	CBookmark& CreateBookmarkL(CBookmarkFolder& aParent);
+	CBookmarkFolder& CreateFolderL(const TDesC& aFolderName, CBookmarkFolder& aParent);
+
+	void DeleteItemL(Bookmark::TItemId aItem, TBool aRecursive);
+
+	void RemoveBookmarkL(CBookmark* aBookmark);
+	void RemoveFolderL(CBookmarkFolder* aFolder);
+
+	const TDesC8& IconL(Bookmark::TAttachmentId aIconId);
+	Bookmark::TAttachmentId CreateIconL(const TDesC8& aData);
+	TInt DeleteIconL(Bookmark::TAttachmentId aIconId);
+
+	TVersion Version();
+	Bookmark::TVisibility Visibility();
+	
+	void SetHome(CBookmark* aHome);
+	CBookmark* Home();
+
+	const TDesC& HomePageText() const;
+	void SetHomePageTextL(const TDesC& aHomePageText);
+
+	const TDesC8& SearchUri() const;
+	void SetSearchUriL(const TDesC8& aUri);
+
+	TUint32 DefaultProxy() const;
+	void SetDefaultProxy(TUint32 aServiceId);
+
+	TUint32 DefaultNap() const;
+	void SetDefaultNap(TUint32 aNetworkId);
+
+	CRepository& FolderRepository();
+	CRepository& BookmarkRepository();
+
+	TBool IsLoading();
+	TBool FindUnloadedFolder(const TDesC& aFolderName);
+
+	// custom properties
+	CPropertyReg& PropertyRegister();
+	CPropertyList& CustomProperties();
+
+	// From MRepositoryAccessor
+	void CommitL();
+	TUint32 IndexBase();
+	void SetIdFromIndexBase(TUint32 aIndexBase);
+	void TransSaveL();
+	void TransNewL();
+	void TransLoadL();
+	void TransRemoveL();
+
+	// From MBkmrkWatcherObserver
+	void BWONotify(TBkmrkWatcherType aType);
+	
+	
+	void CreateDefaultRepositoriesL ();	
+private:
+	CBookmarkDb(MBookmarkObserver* aObserver);
+	void ConstructL(Bookmark::TVisibility aVisibility);
+	void InitialiseRepL(CRepository& aRepository);
+	
+	void Reset();
+	void LoadBookmarkListL(CRepository& aRepository, TBkmrkList& aList, Bookmark::TType aType, TBool aLoadAll);
+	void AddItemsToFolderTreeL(TBkmrkList& aList);
+	TBool RemoveFolderIfPublicL(CBookmarkFolder& aFolder);
+	void LoadTreeL();
+	void ResetTree();
+	void ResetIcons();
+
+	void LoadIconsL();
+
+	TBool HasOpenHandles();
+
+	TInt FindIcon(Bookmark::TAttachmentId aIconId);
+
+	TBool CheckAccessL(CBookmarkBase& aItem);
+	
+	static void ResetAndDestroyBkmrkList ( TAny* aPtr );
+	TBool HasDataInRepositoryL ();
+private:
+	Bookmark::TVisibility	iVisibility;	// the visibility level for the database
+	MBookmarkObserver*		iObserver;		// if set, points to an observer that is notified when changes occur to the database
+
+	CPropertyReg* 			iPropertyRegister;		// Register for custom properties
+	CPropertyList*			iCustomProperties;
+
+	CRepository*			iDatabaseRepository;	// the database config settings
+	CBkmrkWatcher*			iDatabaseWatcher;
+	CRepository*			iFolderRepository;		// the folder repository
+	CBkmrkWatcher*			iFolderWatcher;
+	CRepository*			iBookmarkRepository;	// the bookmark repository
+	CBkmrkWatcher*			iBookmarkWatcher;
+	CRepository*			iIconRepository;		// the icon repository
+	CBkmrkWatcher*			iIconWatcher;
+
+	CBookmarkFolder*		iRoot;			// the root folder
+	CBookmark*				iHome;			// the currently set home page
+	TInt					iHomeId;
+	HBufC*					iHomeText;
+	HBufC8*					iSearchUri;
+	TInt					iDefaultProxy;
+	TInt					iDefaultNap;
+
+	TBool					iLoading;
+	TBkmrkList				iFolderList;			// a list of all the folders in ID order
+	TBkmrkList				iBookmarkList;			// a list of all the bookmarks in ID order
+	TBkmrkAccessorList		iDeletedList;			// a list of all the bookmarks items that have been deleted
+	CDesCArrayFlat* 		iUnloadedFolderList;	// a list of folder names not loaded but that need to be checked for uniqueness
+
+
+	TBool						iTreeSync;
+	TBool						iConfigSync;
+	TBool						iIconSync;
+	RArray<CBkmrkAttachment*> 	iIconList;
+	
+	TBool 						iBkmrkDbInitialized;
+	TBool						iTreeConstructed;
+	};
+
+#endif //__BKMRKDB_H__