photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandleraddtocontainer.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:45:44 +0200
changeset 0 4e91876724a2
child 2 7d9067c6fcb1
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* 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) tags command handler 
     * @param aMediaListProvider object that provides the media list.
     */
    IMPORT_C static CGlxCommandHandlerAddToContainer* NewAddToTagCommandHandlerL(
        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();

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);

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

    /** See @ref CGlxCommandHandler::PopulateToolbar*/
	void PopulateToolbarL();   

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__