diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/bookmarksupport/src/bkmrkdb.h --- /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 +#include +#include +#include "bkmrkattachment.h" +#include "bkmrkwatcher.h" +#include "propertyreg.h" +#include "propertylist.h" + +typedef RArray 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 iIconList; + + TBool iBkmrkDbInitialized; + TBool iTreeConstructed; + }; + +#endif //__BKMRKDB_H__