upnpframework/upnpmusicadapter/inc/upnpmpxhelper.h
changeset 0 7f85d04be362
child 9 0b99b84ce2a1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpframework/upnpmusicadapter/inc/upnpmpxhelper.h	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,206 @@
+/*
+* Copyright (c) 2006 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:  Helper class for some common MPX routines
+*
+*/
+
+
+#ifndef C_UPNPMPXHELPER_H
+#define C_UPNPMPXHELPER_H
+
+// INCLUDES
+#include <e32base.h>
+#include "mpxmediatorobserver.h" // base class
+#include "mpxcollectionobserver.h" // base class
+
+// FORWARD DECLARATIONS
+class CMPXMedia;
+class MUPnPMpxHelperObserver;
+class MMPXHarvesterUtility;
+class MMPXCollectionUtility;
+class CMPXCollectionMediator;
+
+
+/**
+ * A helper class for some common MPX routines
+ *
+ * @lib upnpmusicadapter.lib
+ * @since S60 v3.1
+ */
+class CUPnPMpxHelper : public CBase
+    , public MMPXMediatorObserver
+    , public MMPXCollectionObserver
+    {
+
+public:
+
+    /**
+     * 1st phase constructor
+     *
+     * @param aModeId mode passed to MPX framework
+     * @return a new CUPnPPlayListFiller instance
+     * @since Series 60 3.1
+     */
+    static CUPnPMpxHelper* NewL( const TUid& aModeId );
+
+    /**
+     * Destructor
+     *
+     * @since Series 60 3.1
+     */
+    virtual ~CUPnPMpxHelper();
+
+public: // the interface
+
+    /**
+     * Add a song or a playlist synchronously.
+     * Note: does not take ownership of aMedia object. Caller must
+     * delete aMedia after calling this method.
+     * see mpxcollectionhelper in mpxmusicplayer
+     * @param aMedia representation of the media to be added
+     */
+    void AddTrackL( CMPXMedia* aMedia );
+
+    /**
+     * add a song or a playlist asynchronously.
+     * Note: does not take ownership of aMedia object. Caller must
+     * delete aMedia after calling this method.
+     * see mpxcollectionuihelper in mpxmusicplayer
+     * @param aMedia representation of the media to be added
+     * @param aObserver the observer interface
+     */
+    void AddPlaylistL( CMPXMedia* aMedia );
+
+    /**
+     * Open the collection in embedded mode with a Media Object.
+     * see mpxcollectionuihelper in mpxmusicplayer
+     * @param aHostId Host Process UID to identify this embedded instance
+     * @param aMedia Media Object to open
+     */
+    void AddAndOpenL( const TUid& aHostId, CMPXMedia& aMedia );
+
+protected:
+
+    /**
+     * Retrieve collection from URI
+     */
+    TInt FindCollectionIdL( const TDesC& aUri );
+
+    /**
+     * retrieve information for the required attributes
+     */
+    void FillInPlaylistDetailsL( CMPXMedia& aMedia );
+
+    /**
+     * see MMPXMediatorObserver
+     */
+    void HandleMediatorPathUpdatedL(
+        CMPXMedia*& /*aMedia*/, TUid /*aOldPath*/ ) {}
+
+    /**
+     * see MMPXCollectionObserver
+     */
+    void HandleCollectionMediaL(
+        const CMPXMedia& /*aMedia*/, TInt /*aError*/) {}
+
+    /**
+     * see MMPXCollectionObserver
+     */
+    void HandleCollectionMessageL(
+        const TMPXCollectionMessage& /*aMessage*/ ) {}
+
+    /**
+     * see MMPXCollectionObserver
+     */
+    void HandleCollectionMessageL(
+        const CMPXMessage& /*aMsg*/ ) {}
+
+    /**
+     * see MMPXCollectionObserver
+     */
+    void HandleOpenL(
+        const CMPXMedia& /*aEntries*/,
+        TInt /*aIndex*/, TBool /*aComplete*/, TInt /*aError*/ ) {}
+
+    /**
+     * see MMPXCollectionObserver
+     */
+    void HandleOpenL(
+        const CMPXCollectionPlaylist& /*aPlaylist*/,
+        TInt /*aError*/ ) {}
+
+    /**
+     * see MMPXCollectionObserver
+     */
+    void HandleCommandComplete(
+        CMPXCommand* /*aCommandResult*/, TInt /*aError*/) {}
+
+private: // private methods
+
+    /**
+     * constructor
+     */
+    CUPnPMpxHelper::CUPnPMpxHelper();
+
+    /**
+     * 2nd phase constructor
+     */
+    void CUPnPMpxHelper::ConstructL( const TUid& aModeId );
+
+private: // members
+
+    /**
+     * MPX harvester utility
+     */
+    MMPXHarvesterUtility*       iHarvester;
+
+    /**
+     * MPX collection utility
+     */
+    MMPXCollectionUtility*      iCollectionUtil;
+
+    /**
+     * MPX collection mediator
+     */
+    CMPXCollectionMediator*     iMediator;
+
+    /**
+     * temporarily stored observer for async operations
+     * NOT OWNED
+     */
+    MUPnPMpxHelperObserver*     iObserver;
+
+    };
+
+/**
+ * Callback ingterface for async methods in CUPnPMpxHelper
+ */
+class MUPnPMpxHelperObserver
+    {
+public:
+
+    /**
+     * async response for AddL
+     */
+    void HandleAddComplete( TInt aError );
+
+    /**
+     * async response for OpenL
+     */
+    void HandleOpenComplete( TInt aError );
+
+    };
+
+#endif // C_UPNPMPXHELPER_H
+