mpxplugins/serviceplugins/playlistplugins/m3uplaylistplugin/src/mpxm3uplaylistplugin.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpxplugins/serviceplugins/playlistplugins/m3uplaylistplugin/src/mpxm3uplaylistplugin.cpp Thu Dec 17 08:45:05 2009 +0200
@@ -0,0 +1,178 @@
+/*
+* 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: Implementation of m3u playlist plugin interface
+*
+* CMPXM3uPlaylistPlugin delegates the responsibilities for m3u playlist file
+* import and export to CMPXM3uPlaylistImporter and CMPXM3uPlaylistExporter
+* respectively.
+*
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32cmn.h>
+#include <implementationproxy.h>
+#include <mpxlog.h>
+#include <mpxmediageneraldefs.h>
+#include <mpxplaylistpluginobserver.h>
+#include "mpxm3uplaylistimporter.h"
+#include "mpxm3uplaylistexporter.h"
+#include "mpxm3uplaylistplugin.h"
+#include "mpxm3uplaylistdefs.h"
+#include "mpxm3uplaylistdefs.hrh"
+
+
+// ============================ MEMBER FUNCTIONS ==============================
+// ----------------------------------------------------------------------------
+// Constructor.
+// ----------------------------------------------------------------------------
+CMPXM3uPlaylistPlugin::CMPXM3uPlaylistPlugin()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// 2nd phase constructor
+// ----------------------------------------------------------------------------
+void CMPXM3uPlaylistPlugin::ConstructL()
+ {
+ iRequiredAttributes.AppendL(KMPXMediaGeneralUri);
+
+ iOptionalAttributes.AppendL(KMPXMediaGeneralTitle);
+ iOptionalAttributes.AppendL(KMPXMediaGeneralDuration);
+ }
+
+// ----------------------------------------------------------------------------
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+CMPXM3uPlaylistPlugin* CMPXM3uPlaylistPlugin::NewL(TAny* /*aInitParams*/)
+ {
+ CMPXM3uPlaylistPlugin* self=new(ELeave)CMPXM3uPlaylistPlugin();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// Destructor.
+// ----------------------------------------------------------------------------
+CMPXM3uPlaylistPlugin::~CMPXM3uPlaylistPlugin()
+ {
+ delete iImporter;
+ delete iExporter;
+ iRequiredAttributes.Close();
+ iOptionalAttributes.Close();
+ }
+
+// ----------------------------------------------------------------------------
+// Internalize a playlist
+// ----------------------------------------------------------------------------
+void CMPXM3uPlaylistPlugin::InternalizePlaylistL(
+ TRequestStatus& aStatus,
+ const TDesC& aPlaylistUri)
+ {
+ MPX_DEBUG1("CMPXM3uPlaylistPlugin::InternalizePlaylist(aPlaylistUri)");
+
+ // instantiate a new CMPXM3uPlaylistImporter to handle this request.
+ delete iImporter;
+ iImporter = NULL;
+
+ // processing starts as soon as object is instantiated. When request completes,
+ // client is notified through MMPXPlaylistPlugibObserver interface
+ iImporter =
+ CMPXM3uPlaylistImporter::NewL(
+ iFs, iObserver, aPlaylistUri, *iTopCharacterSet, *iAvailableCharacterSet, aStatus );
+ }
+
+// ----------------------------------------------------------------------------
+// Externalize a playlist
+// ----------------------------------------------------------------------------
+void CMPXM3uPlaylistPlugin::ExternalizePlaylistL(
+ TRequestStatus& aStatus,
+ const CMPXMedia& aPlaylist,
+ const TDesC& aFilePath)
+ {
+ MPX_DEBUG1("CMPXM3uPlaylistPlugin::ExternalizePlaylistL");
+
+ // instantiate a new CMPXM3uPlaylistExporter to handle this request
+ delete iExporter;
+ iExporter = NULL;
+
+ // processing starts as soon as object is instantiated. When request completes,
+ // client is notified through MMPXPlaylistPlugibObserver interface
+ iExporter =
+ CMPXM3uPlaylistExporter::NewL(
+ iFs, iObserver, aPlaylist, aFilePath, aStatus );
+ }
+
+// ----------------------------------------------------------------------------
+// Required attributes for the medias in the playlist in order to
+// externalize them to a playlist.
+// ----------------------------------------------------------------------------
+const TArray<TMPXAttribute> CMPXM3uPlaylistPlugin::RequiredAttributes() const
+ {
+ return iRequiredAttributes.Array();
+ }
+
+// ----------------------------------------------------------------------------
+// Optional attributes for the medias in the playlist for externalizing
+// them to a playlist
+// ----------------------------------------------------------------------------
+const TArray<TMPXAttribute> CMPXM3uPlaylistPlugin::OptionalAttributes() const
+ {
+ return iOptionalAttributes.Array();
+ }
+
+// ----------------------------------------------------------------------------
+// Returns the file extension the plugin handles
+// ----------------------------------------------------------------------------
+const TDesC& CMPXM3uPlaylistPlugin::FileExtension() const
+ {
+ return KMPXM3UExtension();
+ }
+
+// ----------------------------------------------------------------------------
+// cancel a client request
+// ----------------------------------------------------------------------------
+void CMPXM3uPlaylistPlugin::Cancel()
+ {
+ if ( iImporter )
+ {
+ iImporter->Cancel();
+ }
+
+ if ( iExporter )
+ {
+ iExporter->Cancel();
+ }
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// ----------------------------------------------------------------------------
+// The list of implementations
+// ----------------------------------------------------------------------------
+const TImplementationProxy ImplementationTable[] =
+ { IMPLEMENTATION_PROXY_ENTRY(KMPXM3uPlaylistImplUid, CMPXM3uPlaylistPlugin::NewL) };
+
+// ----------------------------------------------------------------------------
+// The proxy of implementations
+// ----------------------------------------------------------------------------
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+ {
+ aTableCount=sizeof(ImplementationTable)/sizeof(TImplementationProxy);
+ return ImplementationTable;
+ }
+
+// End of file