photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandleraddtocontainer.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Feb 2010 22:51:01 +0200
branchRCL_3
changeset 9 6b87b143d312
parent 3 9a9c174934f5
child 25 191387a8b767
permissions -rw-r--r--
Revision: 201003 Kit: 201007

/*
* 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:    Add to container commmand handler
*
*/




#ifndef __C_GLXCOMMANDHANDLERADDTOCONTAINER_H__
#define __C_GLXCOMMANDHANDLERADDTOCONTAINER_H__

#include <e32base.h>
#include <glxmpxcommandcommandhandler.h>

class MGlxMediaListProvider;

class CEikAppUi;

/**
 * Command handler for adding to a container.
 * @author Alex Birkett, Aki Vanhatalo 
 * @internal reviewed 05/06/2007 by Dave Schofield
 */
NONSHARABLE_CLASS( CGlxCommandHandlerAddToContainer )
    : public CGlxMpxCommandCommandHandler
	{
public:
	/** 
	 * Create add to album command handler 
	 * @param aMediaListProvider object that provides the media list.
	 */
    IMPORT_C static CGlxCommandHandlerAddToContainer* NewAddToAlbumCommandHandlerL(
        MGlxMediaListProvider* aMediaListProvider, TBool aHasToolbarItem);

	/** 
	 * Create add to album command handler for singleclick
	 * @param aMediaListProvider object that provides the media list.
	 */
    IMPORT_C static CGlxCommandHandlerAddToContainer* NewAddToAlbumSingleClickCommandHandlerL(
            MGlxMediaListProvider* aMediaListProvider, TBool aHasToolbarItem);

     /** 
     * Create add (to) tags command handler 
     * @param aMediaListProvider object that provides the media list.
     */
    IMPORT_C static CGlxCommandHandlerAddToContainer* NewAddToTagCommandHandlerL(
        MGlxMediaListProvider* aMediaListProvider, TBool aHasToolbarItem);

     /** 
     * Create add (to) tags command handler for singleclick
     * @param aMediaListProvider object that provides the media list.
     */
    IMPORT_C static CGlxCommandHandlerAddToContainer* NewAddToTagSingleClickCommandHandlerL(
            MGlxMediaListProvider* aMediaListProvider, TBool aHasToolbarItem);

    /** 
    * Create add (to) Favourites command handler 
    * @param aMediaListProvider object that provides the media list.
    */
   IMPORT_C static CGlxCommandHandlerAddToContainer* NewAddToFavCommandHandlerL(
       MGlxMediaListProvider* aMediaListProvider, TBool aHasToolbarItem);

   /** 
     * Two-phase constructor: 
     * Prefer NewAddToAlbumCommandHandlerL or NewAddToTagsCommandHandlerL
     * @param aMediaListProvider object that provides the media list.
     * @param aCommand The command to handle.
     */
	IMPORT_C static CGlxCommandHandlerAddToContainer* NewL(MGlxMediaListProvider* aMediaListProvider,
	                                                       TInt aCommandId, TBool aHasToolbarItem );
	    
    /** Destructor */
	IMPORT_C ~CGlxCommandHandlerAddToContainer();
	
	// from MProgressDialogCallback
	void DialogDismissedL(TInt aButtonId);

protected: // From CGlxMediaListCommandHandler

    /** See @ref CGlxMpxCommandCommandHandler::CreateCommandL */
	virtual CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aList,
	    TBool& aConsume) const;    

    /** See @ref CGlxMpxCommandCommandHandler::CompletionTextL */
    virtual HBufC* CompletionTextL() const;

	/** See @ref CGlxMpxCommandCommandHandler::DoHandleCommandCompleteL */
	virtual void DoHandleCommandCompleteL(TAny* aSessionId,
	        CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList);
	
	virtual TBool OkToExit() const;

    /** See @ref CGlxCommandHandler::DoActivateL */
    void DoActivateL(TInt aViewId);

    /** See @ref CGlxCommandHandler::PopulateToolbar*/
	void PopulateToolbarL();  
	
	/** See @ref CGlxCommandHandler::DoIsDisabled*/ 
	TBool DoIsDisabled(TInt aCommandId, MGlxMediaList& aList) const;
private:
	/** 
	 * Second phase constructor
	 * @param aCommand The command to handle.
	 */
	void ConstructL(TInt aCommandId);

	
    /** 
     * First phase constructor 
     * @aMediaListProvider object that provides the media list.
     */
	CGlxCommandHandlerAddToContainer(MGlxMediaListProvider* aMediaListProvider, TBool aHasToolbarItem );
	
private:
    // Resource offset
	TInt iResourceOffset;
	
	// Container Command Id
	TInt iCommandId;

	// Target containers selection count
	static TInt iSelectionCount;

	// Popup Completion Status Flag
	mutable TBool iIsProcessOngoing;
	
	};

#endif // __C_GLXCOMMANDHANDLERADDTOCONTAINER_H__