photosgallery/viewframework/dataprovider/inc/glxdetailsboundcommand.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:45:44 +0200
changeset 0 4e91876724a2
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:    Command Binding Class
*
*/




#ifndef _GLXDETAILSBOUNDCOMMAND_H_
#define _GLXDETAILSBOUNDCOMMAND_H_

#include <eikmenup.h>                   // helper class for extending CEikMenuPaneItem without breaking binary
#include <mglxmedialistprovider.h>      // Interface to allow a class that owns a media list to share access to it

class CGlxCommandHandlerAddToContainer; // Command handler for adding to a container
class CAknAppUi;
/** Error Id EMPY-7MKDHP **/ 
class MGlxMetadataDialogObserver ;		// call back to  details dailog

/**
 * MGlxBoundCommand
 */    
class MGlxBoundCommand
    {
public:
	/**
 	 * Destructor
	 */
    virtual ~MGlxBoundCommand() {};
    
   	/**
 	 * OfferCommandL
 	 * Handles user commands
 	 * @param aCommandId the command need to handle
	 */
    virtual TBool OfferCommandL( TInt aCommandId , MGlxMediaList& aMedialist) = 0;
    
   	/**
 	 * InitMenuL
 	 * Initialises a menu pane
 	 * @param aMenu representation of the menu pane
	 */
    virtual void InitMenuL( CEikMenuPane& aMenu ) const = 0;
    
    /**
     * HideLocationMenuItem
     * Hides Location Menu option
     * @param aMenu representation of the menu pane
     */
    virtual void HideLocationMenuItem( CEikMenuPane& aMenu ) const = 0;

    
    /**
    * Close the MGlxBoundCommand object.
    */ 
    virtual void Close() = 0;
    
    /**
     * Changes the Middle softkey command.
     */ 
    virtual void ChangeMskL() = 0;

    /**
     * Sets the Dailogs Observer
     */
    /** Error Id EMPY-7MKDHP **/ 
    virtual void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver ) = 0;

    };

/**
 * CGlxTitleBoundCommand
 */    
NONSHARABLE_CLASS( CGlxTitleBoundCommand ) : public CBase, public MGlxBoundCommand
	{
public:

	/**
 	 * Two phase construction
	 */
	IMPORT_C static CGlxTitleBoundCommand* NewL();

	/**
	 * Two phase construction
	 */
	static CGlxTitleBoundCommand* NewLC();
	
	/**
	* Destructor
	*/
	~CGlxTitleBoundCommand();
private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt aCommandId ,MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& aMenu ) const;
	void HideLocationMenuItem( CEikMenuPane& aMenu ) const;
	void Close();
	void ChangeMskL();
   	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
    /** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
    /**
    * ModifyTitleL
    * @param aData new title to be modified
    */  
    void ModifyTitleL(const TDesC& aData );

private://data

	MGlxMediaList* iMedialist;
	
	};
 
/**
 * CGlxTagsBoundCommand
 */	   	
NONSHARABLE_CLASS( CGlxTagsBoundCommand ) : public CBase, public MGlxBoundCommand, public MGlxMediaListProvider
	{
public:

	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxTagsBoundCommand* NewL();
	
	/**
	 * Two phase construction
	 */
	static CGlxTagsBoundCommand* NewLC();
	
	/**
	*ConstructL
	*/
	void ConstructL();
	
	/**
	* Destructor
	*/
	~CGlxTagsBoundCommand();
	
	/**
	*SetMediaList
	*@param aMedialist medialist
	*/
	void SetMediaList(MGlxMediaList* aMedialist);
	
	//From MGlxMediaListProvider
	 MGlxMediaList& MediaList();
private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt aCommandId, MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& aMenu ) const;
   void HideLocationMenuItem( CEikMenuPane& aMenu ) const;
	void Close();
	void ChangeMskL();
	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
    /** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
private:
	CGlxCommandHandlerAddToContainer* 	iAddToTag; //own
	MGlxMediaList* iMedialist;
	};	
 
/**
 * CGlxDescriptionBoundCommand
 */
NONSHARABLE_CLASS( CGlxDescriptionBoundCommand ) : public CBase, public MGlxBoundCommand
	{
public:

	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxDescriptionBoundCommand* NewL();
	
	/**
	 * Two phase construction
	 */
	static CGlxDescriptionBoundCommand* NewLC();
	
	/**
	* Destructor
	*/
	~CGlxDescriptionBoundCommand();
private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt aCommandId , MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& aMenu ) const;
    void HideLocationMenuItem( CEikMenuPane& aMenu ) const;	
	void Close();
	void ChangeMskL();
	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
    /** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
    /**
    * ModifyDescriptionL
    * @param aData new description to be modified
    */	
	void ModifyDescriptionL(const TDesC& aData );
	
private:
	MGlxMediaList* iMedialist;

	};
	
/**
 * CGlxLocationBoundCommand
 */
NONSHARABLE_CLASS( CGlxLocationBoundCommand ) : public CBase, public MGlxBoundCommand
	{
public:

	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxLocationBoundCommand* NewL();

	/**
	 * Two phase construction
	 */
	static CGlxLocationBoundCommand* NewLC();
	
	/**
	* Destructor
	*/
	~CGlxLocationBoundCommand();
private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt aCommandId , MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& aMenu ) const;
    void HideLocationMenuItem( CEikMenuPane& aMenu ) const;	
	void Close();
	void ChangeMskL();
	
    /**
    * RemoveLocationL
    * removes location information of an image
    */  
	void RemoveLocationL();	

    /**
    * SetDetailsDailogObserver
    * Sets detail dailog observer
    */
    /** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver(MGlxMetadataDialogObserver& aObserver) ;

private:
	MGlxMediaList* iMedialist;
	
    /// The AppUI. Not owned
    CAknAppUi* iAppUi;
    
    TBool iOnNaviKeySelect;

    MGlxMetadataDialogObserver*		iDialogObserver ;
	};

	
/**
 * CGlxAlbumsBoundCommand
 */
NONSHARABLE_CLASS( CGlxAlbumsBoundCommand ) : public CBase, public MGlxBoundCommand, public MGlxMediaListProvider
	{
public:

	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxAlbumsBoundCommand* NewL();
	
	/**
	 * Two phase construction
	 */
	static CGlxAlbumsBoundCommand* NewLC();
	
	/**
	*ConstructL
	*/
	void ConstructL();
	
	/**
	* Destructor
	*/
	~CGlxAlbumsBoundCommand();
	
	/**
	*SetMediaList
	*@param aMedialist medialist
	*/
	void SetMediaList(MGlxMediaList* aMedialist);
	
	//From MGlxMediaListProvider
 	MGlxMediaList& MediaList();

private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt aCommandId, MGlxMediaList& aMedialist );
	void InitMenuL( CEikMenuPane& aMenu ) const;
    void HideLocationMenuItem( CEikMenuPane& aMenu ) const;	
	void Close();
	void ChangeMskL();
	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
	/** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
private:
	CGlxCommandHandlerAddToContainer* 	iAddToAlbum; //own
	MGlxMediaList* iMedialist;

	};
	
	
/**
 * CGlxResolutionBoundCommand
 */
NONSHARABLE_CLASS( CGlxResolutionBoundCommand ) : public CBase, public MGlxBoundCommand
	{
public:
	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxResolutionBoundCommand* NewL();

	/**
	 * Two phase construction
	 */
	static CGlxResolutionBoundCommand* NewLC();

	/**
	* Destructor
	*/
	~CGlxResolutionBoundCommand();
private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt /*aCommandId*/ , MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& /*aMenu*/ ) const;
    void HideLocationMenuItem( CEikMenuPane& aMenu ) const;	
	void Close();
	void ChangeMskL();
	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
	/** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
	};

/**
 * CGlxUsageRightsBoundCommand
 */
NONSHARABLE_CLASS( CGlxDurationBoundCommand ) : public CBase, public MGlxBoundCommand
	{
public:
	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxDurationBoundCommand* NewL();

	/**
	 * Two phase construction
	 */
	static CGlxDurationBoundCommand* NewLC();
	/**
	* Destructor
	*/
	~CGlxDurationBoundCommand();

private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt /*aCommandId*/ , MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& /*aMenu*/ ) const;
    void HideLocationMenuItem( CEikMenuPane& aMenu ) const;	
	void Close();
	void ChangeMskL();
	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
	/** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
	};


/**
 * CGlxUsageRightsBoundCommand
 */
NONSHARABLE_CLASS( CGlxUsageRightsBoundCommand ) : public CBase, public MGlxBoundCommand
	{
public:
	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxUsageRightsBoundCommand* NewL();

	/**
	 * Two phase construction
	 */
	static CGlxUsageRightsBoundCommand* NewLC();
	
	/**
	* SetMediaList
	* @param aMedialist medialist
	*/
	void SetMediaList(MGlxMediaList* aMedialist);
	
	/**
	* MediaList
	* @return MGlxMediaList main medialist
	*/
 	MGlxMediaList& MediaList();
 	
	/**
	* Destructor
	*/
 	~CGlxUsageRightsBoundCommand();
private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt aCommandId , MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& aMenu ) const;
    void HideLocationMenuItem( CEikMenuPane& aMenu ) const;	
	void Close();
	void ChangeMskL();
	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
	/** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
    /**
     * Launches the DRM view associated with the media.
     */
	void LaunchDRMViewL();
	
private:
	MGlxMediaList* iMedialist;

	};
	
/**
 * CGlxDateAndTimeBoundCommand
 */
NONSHARABLE_CLASS( CGlxDateAndTimeBoundCommand ) : public CBase, public MGlxBoundCommand
	{
public:
	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxDateAndTimeBoundCommand* NewL();

	/**
	 * Two phase construction
	 */
	static CGlxDateAndTimeBoundCommand* NewLC();

	/**
	* Destructor
	*/
	~CGlxDateAndTimeBoundCommand();
private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt aCommandId , MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& aMenu ) const;
    void HideLocationMenuItem( CEikMenuPane& aMenu ) const;	
	void Close();
	void ChangeMskL();
	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
	/** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
	};
	
/**
 * CGlxFileSizeBoundCommand
 */
NONSHARABLE_CLASS( CGlxFileSizeBoundCommand ) : public CBase, public MGlxBoundCommand
	{
public:
	/**
	 * Two phase construction
	 */
	IMPORT_C static CGlxFileSizeBoundCommand* NewL();

	/**
	 * Two phase construction
	 */
	static CGlxFileSizeBoundCommand* NewLC();

	/**
	* Destructor
	*/
	~CGlxFileSizeBoundCommand();
private:
	// From MGlxBoundCommand
	TBool OfferCommandL( TInt aCommandId , MGlxMediaList& aMedialist);
	void InitMenuL( CEikMenuPane& aMenu ) const;
    void HideLocationMenuItem( CEikMenuPane& aMenu ) const;	
	void Close();
	void ChangeMskL();
	/**
    * SetDetailsDailogObserver
    * @param aObserver details dailog observer
    */
	/** Error Id EMPY-7MKDHP **/
	void SetDetailsDailogObserver( MGlxMetadataDialogObserver& aObserver );
	};

#endif // _GLXDETAILSBOUNDCOMMAND_H_