diff -r f7f0874bfe7d -r 74c9f037fd5d engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h Fri Mar 19 09:28:59 2010 +0200 @@ -0,0 +1,302 @@ +/* +* Copyright (c) 2008-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: +* +*/ + + + +/** + * @author Simon Brooks, Alex Birkett + */ + +/** + * @internal reviewed 10/07/2007 by M Byrne + */ + +#ifndef _C_GLXDATASOURCEMDS_H_ +#define _C_GLXDATASOURCEMDS_H_ + +// INCLUDES +#include +#include + +#include +#include +#include + +#ifdef USE_S60_TNM +#include +#include +#include +#include + +#include "mthumbnailfetchrequestobserver.h" +#endif + +#include "glxdatasource.h" + +// FORWARD DECLARATIONS +class CGlxRequest; + +#ifndef USE_S60_TNM +class CGlxtnThumbnailCreator; +class CGlxtnThumbnailDatabase; +#endif + +// CONSTANTS + +// CLASS DECLARATION + +/** + * CGlxDataSourceMde class + * + * Data Source Mde is a Meta Data Data Source. + * @lib GlxDataSourceMde.lib + * @ingroup collection_component_design + */ +class CGlxDataSourceMde : public CGlxDataSource, + public MMdESessionObserver, + public MMdEObjectObserver, + public MMdEObjectPresentObserver, + public MMdERelationObserver, + public MMdERelationPresentObserver +#ifdef USE_S60_TNM + , public MThumbnailManagerObserver +#else + , public MGlxtnThumbnailStorageObserver +#endif + { +public: + static CGlxDataSourceMde* NewL(); + +private: + ~CGlxDataSourceMde(); + + CGlxDataSourceMde(); + + void ConstructL(); + +public: + // from CGlxDataSource + CGlxDataSourceTask* CreateTaskL(CGlxRequest* aRequest, MGlxDataSourceRequestObserver& aObserver); + +#ifdef USE_S60_TNM +public: + void FetchThumbnailL(CGlxRequest* aRequest, MThumbnailFetchRequestObserver& aObserver); + TInt CancelFetchThumbnail(); +#else +private: + // from MGlxtnThumbnailStorageObserver + /** + * Notify that a given thumbnail is available in storage. + * @param aId Media item ID. + * @param aSize Requested thumbnail size. + */ + void ThumbnailAvailable(const TGlxMediaId& aId, const TSize& aSize); + /** + * Notify that a given thumbnail is available in storage. + * @param aId Media item ID. + * @param aSize Thumbnail size. + */ + void BackgroundThumbnailError(const TGlxMediaId& aId, TInt aError); +#endif + +private: + /** + * from MMdESessionObserver + */ + void HandleSessionOpened(CMdESession& aSession, TInt aError); + + void HandleSessionError(CMdESession& aSession, TInt aError); + +private: // MMdEObjectObserver + /** + * See @ref MMdEObjectObserver::HandleObjectNotification + */ + void HandleObjectNotification(CMdESession& aSession, + TObserverNotificationType aType, + const RArray& aObjectIdArray); + +private: // MMdEObjectPresentObserver + /** + * See @ref MMdEObjectPresentObserver::HandleObjectPresentNotification + */ + void HandleObjectPresentNotification(CMdESession& aSession, + TBool aPresent, const RArray& aObjectIdArray); + +private: // MMdERelationObserver + /** + * See @ref MMdERelationObserver::HandleRelationNotification + */ + void HandleRelationNotification(CMdESession& aSession, + TObserverNotificationType aType, + const RArray& aRelationIdArray); + +private: //MMdERelationPresentObserver + /** + * See @ref MMdERelationPresentObserver::HandleRelationPresentNotification + */ + void HandleRelationPresentNotification(CMdESession& aSession, + TBool aPresent, const RArray& aRelationIdArray); + +#ifdef USE_S60_TNM + // from MThumbnailManagerObserver + void ThumbnailPreviewReady( MThumbnailData& aThumbnail, + TThumbnailRequestId aId ); + + void ThumbnailReady( TInt aError, MThumbnailData& aThumbnail, + TThumbnailRequestId aId ); +#endif + +private: + void BackgroundThumbnailMessageL(const TGlxMediaId& aId, const TSize& aSize, TInt aError); + + void DoSessionInitL(); + + void AddMdEObserversL(); + + void ProcessUpdateArray(const RArray& aArray, TMPXChangeEventType aType, TBool aIsObject); + + void ProcessItemUpdateL(); + + static TInt ProcessItemUpdate(TAny* aPtr); + void CreateSessionL(); + + static TInt CreateSession(TAny* aPtr); + + void PrepareMonthsL(); + void TaskCompletedL(); + + void TaskStartedL(); + +public: + inline CMdESession& Session() const; + +#ifndef USE_S60_TNM + inline CGlxtnThumbnailCreator& ThumbnailCreator() const; + + inline CGlxtnThumbnailDatabase& ThumbnailDatabase() const; +#endif + + inline RFs& FileServerSession(); + + inline const TGlxMediaId& CameraAlbumId() const; + + inline const TGlxMediaId& FavoritesId() const; + + inline CMdENamespaceDef* NamespaceDef() const; + + inline CMdEObjectDef& ObjectDef() const; + + inline CMdEObjectDef& ImageDef() const; + + inline CMdEObjectDef& VideoDef() const; + + inline CMdEObjectDef& AlbumDef() const; + + inline CMdEObjectDef& MediaDef() const; + inline CMdEObjectDef& TagDef() const; + + /** + * Return object definition used to describe months. + * @return object definition used to describe months. + */ + inline CMdEObjectDef& MonthDef() const; + + inline CMdERelationDef& ContainsDef() const; + + inline CMdERelationDef& ContainsLocationDef() const; + + /** + * Get the location definition. + * @return location definition. + */ + inline CMdEObjectDef& LocationDef() const; + + TContainerType ContainerType(CMdEObject* aObject); + + TContainerType ContainerType(CMdEObjectDef* aObjectDef); + + TItemType ItemType(CMdEObject* aObject); + + const TGlxMediaId GetMonthIdL(const TTime& aMonth); + + TBool SameMonth(const TTime& aOldDate, const TTime& aNewDate); + + TBool ContainerIsLeft(CMdEObjectDef& aObjectDef); + +private: +#ifdef USE_S60_TNM + MThumbnailFetchRequestObserver* iTnFetchObserver; + CThumbnailManager* iTnEngine; + CFbsBitmap* iTnThumbnail; + CFbsBitmap* iThumbnail; + TThumbnailRequestId iTnThumbnailCbId; + TBool iTnRequestInProgress; + TInt iTnHandle; + TGlxMediaId iMediaId; + + TTime iStartTime; + TTime iStopTime; +#else + CGlxtnThumbnailCreator* iThumbnailCreator; + CGlxtnThumbnailDatabase* iThumbnailDatabase; +#endif + + CMdESession* iSession; + RFs iFs; + TBool iSessionOpen; + TGlxMediaId iCameraAlbumId; + TGlxMediaId iFavoritesId; + + CMdENamespaceDef* iNameSpaceDef; + CMdEObjectDef* iObjectDef; + CMdEObjectDef* iImageDef; + CMdEObjectDef* iVideoDef; + CMdEObjectDef* iAlbumDef; + CMdEObjectDef* iMediaDef; + CMdEObjectDef* iTagDef; + CMdEObjectDef* iMonthDef; + /** + * Location object definition. + */ + CMdEObjectDef* iLocationDef; + CMdERelationDef* iContainsDef; + CMdERelationDef* iContainsLocationDef; + + RArray iMonthArray; + RArray iMonthList; + TTime iFirstMonth; + TTime iLastMonth; + + CAsyncCallBack* iUpdateCallback; + + CAsyncCallBack* iCreateSessionCallback; + + struct TUpdateData + { + TItemId iId; + TMPXChangeEventType iType; + TBool iIsObject; + }; + + RArray iUpdateData; + TBool iPauseUpdate; + TInt iDeletedCount; + }; + +#include "glxdatasourcemds.inl" + +#endif //_C_GLXDATASOURCEMDE_H_