diff -r 45459746d5e8 -r 27f2d7aec52a engine/collectionframework/datasource/plugins/glxdatasourcemde/inc/glxdatasourcetaskmdecommand.h --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde/inc/glxdatasourcetaskmdecommand.h Mon Sep 27 15:13:20 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,315 +0,0 @@ -/* -* Copyright (c) 2006 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 _C_GLXDATASOURCETASKMDECOMMAND_H_ -#define _C_GLXDATASOURCETASKMDECOMMAND_H_ - -/** - * @internal reviewed 10/07/2007 by M Byrne - */ - - -// INCLUDES -#include -#include -#include -#include -#include -#include -#include "glxdatasourcetaskmde.h" - -// FORWARD DECLARATIONS -class CGlxDataSourceMde; -class CGlxRequest; -class CMdENamespaceDef; -class CMdEObjectDef; -class CMdEObjectQuery; -class CMdERelationDef; -class CMdERelationQuery; -class CMdESession; - -// CONSTANTS - -// CLASS DECLARATION - -/** - * CGlxDataSourceTaskMdeCommand class - * - */ -NONSHARABLE_CLASS( CGlxDataSourceTaskMdeCommand ) : public CGlxDataSourceTaskMde, - public MGlxCommandParserCallback - - { -public: // Constructors / Destructors - /** - * Constructor. - * @param aRequest request to be executed. - * @param aObserver observer to be informed when task has completed. - * @param aDataSource data source to be used by this object. - */ - CGlxDataSourceTaskMdeCommand(CGlxCommandRequest* aRequest, MGlxDataSourceRequestObserver& aObserver, - CGlxDataSource* aDataSource); - - /** - * Symbian 2nd stage constructor - * See @ref CGlxDataSourceTaskMde::ConstructL - */ - void ConstructL(); - - /** - * Destructor - */ - ~CGlxDataSourceTaskMdeCommand(); - -private: // From MGlxCommandParserCallback - - /** - * See @ref MGlxCommandParserCallback::AddContainerL - */ - void AddContainerL(const TDesC& aContainerName); - - /** - * See @ref MGlxCommandParserCallback::AddToContainerL - */ - void AddToContainerL(const RArray& aSourceIds, const RArray& aTargetContainers); - - /** - * See @ref MGlxCommandParserCallback::AddToContainerL - */ - void AddToContainerL(const TDesC& aSourceUri, const RArray& aTargetContainers); - - /** - * See @ref MGlxCommandParserCallback::CopyL - */ - void CopyL(const RArray& aSourceIds, const TDesC& aDrive); - - /** - * See @ref MGlxCommandParserCallback::MoveL - */ - void MoveL(const RArray& aSourceIds, const TDesC& aDrive); - - /** - * See @ref MGlxCommandParserCallback::RemoveFromContainerL - */ - void RemoveFromContainerL(const RArray& aItemIds, const TGlxMediaId& aContainerId); - - /** - * See @ref MGlxCommandParserCallback::DeleteL - */ - void DeleteL(const RArray& aItemIds); - - /** - * See @ref MGlxCommandParserCallback::RenameL - */ - void RenameL(const TGlxMediaId& aSourceItemId, const TDesC& aTitle); - - /** - * See @ref MGlxCommandParserCallback::SetDescriptionL - */ - void SetDescriptionL(const RArray& aItemIds, const TDesC& aDescription); - - /** - * See @ref MGlxCommandParserCallback::SetCaptureLocationL - */ - void SetCaptureLocationL(const RArray& aItemIds, const TCoordinate& aCoordinate); - - /** - * See @ref MGlxCommandParserCallback::ThumbnailCleanupL - */ - void ThumbnailCleanupL(); - -private: // from CGlxDataSourceTaskMde - - /** - * See @ref CGlxDataSourceTaskMde::DoHandleQueryCompletedL - */ - void DoHandleQueryCompletedL(CMdEQuery& aQuery); - - /** - * See @ref CGlxDataSourceTaskMde::DoNextQueryL - */ - void DoNextQueryL(); - -private: - - /** - * Enumeration to describe file operations - * (Copy or Move) - */ - enum TFileOperation - { - ECopy, - EMove - }; - - /** - * Perform a file operation (copy or move). - * @param aSourceIds an array of media ids to copy or move. - * @param aDrive destination drive. - * @param aFileOperation file operation to perform (either a copy or a move) - */ - void FileOperationL(const TArray& aSourceIds, const TDesC& aDrive, TFileOperation aFileOperation); - - /** - * Gets the container id for a given media id. - * If aMedia id is KGlxCollectionRootId (0) then container id - * is determined using the collection id. E.g. if the aMediaId - * is KGlxCollectionRootId and the collection uid is - * KGlxCollectionPluginCameraImplementationUid - * then the camera album id is returned by the method. - * When aMedia id is not equal to KGlxCollectionRootId, (the - * vast majority of cases) the container id returned by the method - * will be the same as the media id passed in. - * - * @param aMediaId should be either a valid container id or KGlxCollectionRootId - * @return a container id. - */ - TMdEItemId ContainerItemId(const TGlxMediaId& aMediaId); - - /** - * Uses the PathInfo class to determine the 'root' path for - * a given drive. The 'root' path is C:\data for the C drive and - * x:\ for all other drives (where x is a drive letter) - * @param aDrive the drive for which the root path is required. - * @param aRootPath on return contains the root path. - */ - void RootPath(const TDesC& aDrive, TDes& aRootPath); - - /** - * Copies items from a TGlxMedia array to a TItemId array. - * @param aDestArray destination array. (It is the callers responsibility to ensure that aDestArray is on - * the cleanup stack should this be required) - * @param aSourceArray source array. - */ - void CopyArrayL(RArray& aDestArray, const RArray& aSourceArray); - - /** - * Sends progress messages to the client - * @param aCurrentStep number of currently completed steps. - * @param aStepCount number of total steps to completion. - */ - void SendProgressMessageL(TInt aCurrentStep, TInt aStepCount); - - /** - * Returns the container object definition (either album or tag) - * the container object definition is calculated based on the - * collection plug-in id associated with the task. - * @param aContainerObjectDef a pointer to the container object - * definition associated with the collection plugin if the - * function completes with out error. The caller does not take - * ownership of the pointer. - * @return KErrNone if the collection plug-in has a container - * object definition associated with it or a system wide - * error code. - */ - TInt ContainerObjectDef(CMdEObjectDef*& aContainerObjectDef); - - /** - * Handle the completion of a 'add to container' query. - * @param aQuery Query that has been completed. - */ - void DoHandleAddToContainerQueryCompletedL(CMdEQuery& aQuery); - - /** - * Handle the completion of a 'add container' query. - * @param aQuery Query that has been completed. - */ - void DoHandleAddContainerQueryCompletedL(CMdEQuery& aQuery); - - /** - * Handle the completion of a 'delete containers' query. - * @param aQuery Query that has been completed. - */ - void DoHandleDeleteContainersQueryCompletedL(CMdEQuery& aQuery); - - /** - * Handle the completion of a 'delete items' query. - * @param aQuery Query that has been completed. - */ - void DoHandleDeleteItemsQueryCompletedL(CMdEQuery& aQuery); - - - /** - * Handle the completion of a 'rename' query. - * @param aQuery Query that has been completed. - */ - void DoHandleRenameQueryCompletedL(CMdEQuery& aQuery); - - /** - * Handle the completion of a 'rename container' query. - * @param aQuery Query that has been completed. - */ - void DoHandleRenameConainerQueryCompletedL(CMdEQuery& aQuery); - - /** - * Appends a query to the query queue that determines the number - * of container objects that have the title aTitle. This - * method is used to check to see if a container with a - * specific title exists. The container type is determined - * using the ContainerObjectDef() method - * @aQueryType the query type. - * @aTitle title to search for. - */ - void AppendContainerTitleCountQueryL(const TGlxQueryType& aQueryType, const TDesC& aTitle); - -private: // from CGlxDataSourceTask - /** - * See @ref CGlxDataSourceTask::ExecuteRequestL - */ - void ExecuteRequestL(); - -private: - /** - * Default name space definition. - */ - CMdENamespaceDef* iDefaultNameSpaceDef; - - /** - * Collection uid. - */ - TUid iCollectionUid; - - /** - * Before new relations are added to the database, a check must be made to see if - * identical relations already exist. This is done asynchronously so they need to - * be stored temporarily as a member variable. - */ - RArray iLeftIds; - - /** - * Before new relations are added to the database, a check must be made to see if - * identical relations already exist. This is done asynchronously so they need to - * be stored temporarily as a member variable. - */ - RArray iRightIds; - - /** - * Used to store object titles while asynchronous operations are in progress. - * (owned) - */ - HBufC* iTitle; - - /** - * Used to store the object to rename while asynchronous operations are in progress. - * (owned) - */ - CMdEObject* iObjectToRename; - }; - -#endif //_C_GLXDATASOURCETASKMDECOMMAND_H_