/*
* Copyright (c) 2002 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:  Interface for players which shows picture.
*
*/


#ifndef MMMAGUIPLAYER_H
#define MMMAGUIPLAYER_H

#include "cmmaplayerevent.h"

//  FORWARD DECLARATIONS
class MMMADisplay;
class CFbsBitmap;
class MMMASnapshot;
class MMAFunctionServer;
class CMIDToolkit;

//  CLASS DEFINITION
/**
    Interface for players which shows picture. Player will be notified
    throw this interface when display state is changed.
*/
NONSHARABLE_CLASS(MMMAGuiPlayer)
{
protected:  // Constructors and destructors
    /**
     * Do not allow delete through this interface
     */
    virtual ~MMMAGuiPlayer() {};

public:     // Abstract methods
    /**
     * Sets display to the player. Player must likely will create window
     * for the display. Called when display is available for the player.
     *
     * @param aDisplay Display which can be used.
     */
    virtual void SetDisplayL(MMMADisplay* aDisplay) = 0;

    /**
     * Returns size of the content. Content size may not available
     * before player is initialized.
     *
     * @return Size of the source content.
     */
    virtual TSize SourceSize() = 0;

    /**
     * Returns inferface that is used for taking snapshots from the player.
     * Method can leave if player creates a snapshoter object when this
     * method is called.
     *
     * @return Interface for taking snaphots.
     */
    virtual MMMASnapshot* SnapshoterL() = 0;

    /**
     * Method sends event to the Java. This can be used to notify errors
     * to the Java side.
     *
     * @param aEventType Type of the event.
     * @param aStringEventData Data of the event.
     */
    virtual void NotifyWithStringEvent(CMMAPlayerEvent::TEventType aEventType,
                                       const TDesC& aStringEventData) = 0;

    // No data in MClass!!

};

#endif // MMMAGUIPLAYER_H
