upnpavcontroller/upnpavcontrollerhelper/inc/upnpitemresolver.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:52:00 +0200
changeset 0 7f85d04be362
child 38 5360b7ddc251
permissions -rw-r--r--
Revision: 200947 Kit: 200951

/*
* Copyright (c) 2005-2007 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:      Tool for resolving local or remote items
*
*/






#ifndef UPNPITEMRESOLVER_H
#define UPNPITEMRESOLVER_H

//  INCLUDES
#include <e32base.h>

// FORWARD DECLARATIONS
class MUPnPAVController;
class MUPnPAVBrowsingSession;
class MUPnPResourceSelector;
class MUPnPItemResolverObserver;
class CUpnpItem;
class CUpnpElement;

// CLASS DECLARATION

/**
* An interface for resolving either remote or local content.
* The interface takes in some identification of the content,
* resolves the content and asynchronously notifies when the
* content is available. The content itself is provided by
* CUpnpItem, which contains item metadata, resource and URI,
* and it can be used directly in AVController interface to
* play content on remote renderer or download content.
*
* @lib upnpavcontrollerhelper.lib
* @since S60 3.2
*/
class MUPnPItemResolver
    {

public: // construction/destruction


    /**
     * virtual destructor
     * for deleting the resolver implementation using the API pointer
     */
    virtual ~MUPnPItemResolver()  {}


public: // the interface

    /**
     * Starts resolving an object id using given session.
     * given Callback is notified when result objects are available,
     * or in case of an error.
     * @since S60 3.2
     * @param aObserver interface that will receive result callback
     * @param aSelector selects the desider resource
     */
    virtual void ResolveL(
        MUPnPItemResolverObserver& aObserver ) = 0;

    /**
     * access to the resolved item.
     * Note that if the object represents an item, it is not necessarily
     * safe to query the resource in this item, instead you should use
     * this item to query all metadata.
     * Use this method after receiving MetadataBrowseComplete( KErrNone )
     * @return reference to the item with the given ID
     */
    virtual const CUpnpItem& Item() const = 0;

    /**
     * access to the pointed item's resource.
     * The resource may be in the original or in the pointed item.
     * This is the easiest and recommended way for accessing the
     * resource.
     * example:
     * const TDesC& uri = browseUtil->Res().Value();
     * Use this method after receiving MetadataBrowseComplete( KErrNone )
     * @return reference to the upnp element of <res> type.
     */
    virtual const CUpnpElement& Resource() const = 0;

    };

#endif  // UPNPITEMRESOLVER_H

// End of File