--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/metadatautility/Src/MetaDataParserDcf.cpp Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,191 @@
+/*
+* Copyright (c) 2004 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: This class implements an 3gp metadata parser as specified in
+* www.3gpp.org (specification 3GPP TS 26.244 V6.0.0).
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <Oma2Agent.h>
+#include "MetaDataParserDcf.h"
+#ifdef _DEBUG
+#include <e32svr.h>
+#endif
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMetaDataParserDcf::CMetaDataParserDcf
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CMetaDataParserDcf::CMetaDataParserDcf()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMetaDataParserDcf::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CMetaDataParserDcf::ConstructL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMetaDataParserDcf::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CMetaDataParserDcf* CMetaDataParserDcf::NewL()
+ {
+#ifdef _DEBUG
+ RDebug::Print(_L("CMetaDataParserDcf::NewL"));
+#endif
+ CMetaDataParserDcf* self = new( ELeave ) CMetaDataParserDcf;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// Destructor
+CMetaDataParserDcf::~CMetaDataParserDcf()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMetaDataParserDcf::ParseL
+// -----------------------------------------------------------------------------
+//
+void CMetaDataParserDcf::ParseL(
+ const RArray<TMetaDataFieldId>& aWantedFields,
+ CMetaDataFieldContainer& aContainer )
+ {
+#ifdef _DEBUG
+ RDebug::Print(_L("CMetaDataParserDcf::ParseL"));
+#endif
+ iContainer = &aContainer;
+
+ if ( aWantedFields.Count() == 0 )
+ {
+ ReadMetaDataEntryL(ContentAccess::ETitle, EMetaDataSongTitle);
+ ReadMetaDataEntryL(ContentAccess::EDescription, EMetaDataComment);
+ ReadMetaDataEntryL(ContentAccess::EAuthor, EMetaDataComposer);
+ ReadMetaDataEntryL(ContentAccess::EContentURI, EMetaDataUrl);
+ ReadMetaDataEntryL(EPerformer, EMetaDataArtist);
+ ReadMetaDataEntryL(EAlbumTitle, EMetaDataAlbum);
+ ReadMetaDataEntryL(EAlbumTrack, EMetaDataAlbumTrack);
+ ReadMetaDataEntryL(EContentVendor, EMetaDataVendor);
+ ReadMetaDataEntryL(ECopyright, EMetaDataCopyright);
+ ReadMetaDataEntryL(EGenre, EMetaDataGenre);
+ ReadMetaDataEntryL(ERatingInfo, EMetaDataRating);
+ }
+ else
+ {
+ // Look for it in the wanted field array
+ TInt count( aWantedFields.Count() );
+ for ( TInt i = 0; i < count; i++ )
+ {
+ switch ( aWantedFields[ i ] )
+ {
+ case EMetaDataSongTitle:
+ ReadMetaDataEntryL(ContentAccess::ETitle, EMetaDataSongTitle);
+ break;
+ case EMetaDataComment:
+ ReadMetaDataEntryL(ContentAccess::EDescription, EMetaDataComment);
+ break;
+ case EMetaDataComposer:
+ ReadMetaDataEntryL(ContentAccess::EAuthor, EMetaDataComposer);
+ break;
+ case EMetaDataUrl:
+ ReadMetaDataEntryL(ContentAccess::EContentURI, EMetaDataUrl);
+ break;
+ case EMetaDataArtist:
+ ReadMetaDataEntryL(EPerformer, EMetaDataArtist);
+ break;
+ case EMetaDataAlbum:
+ ReadMetaDataEntryL(EAlbumTitle, EMetaDataAlbum);
+ break;
+ case EMetaDataAlbumTrack:
+ ReadMetaDataEntryL(EAlbumTrack, EMetaDataAlbumTrack);
+ break;
+ case EMetaDataVendor:
+ ReadMetaDataEntryL(EContentVendor, EMetaDataVendor);
+ break;
+ case EMetaDataCopyright:
+ ReadMetaDataEntryL(ECopyright, EMetaDataCopyright);
+ break;
+ case EMetaDataGenre:
+ ReadMetaDataEntryL(EGenre, EMetaDataGenre);
+ break;
+ case EMetaDataRating:
+ ReadMetaDataEntryL(ERatingInfo, EMetaDataRating);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMetaDataParserDcf::InitializeFileL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CMetaDataParserDcf::InitializeFileL(CMetaDataSource* aSource)
+ {
+#ifdef _DEBUG
+ RDebug::Print(_L("CMetaDataParserDcf::InitializeFileL"));
+#endif
+ iSource = aSource;
+ ValidateL();
+#ifdef _DEBUG
+ RDebug::Print(_L("CMetaDataParserDcf::InitializeFileL - Done"));
+#endif
+ }
+
+// -----------------------------------------------------------------------------
+// CMetaDataParserDcf::ValidateL
+// -----------------------------------------------------------------------------
+//
+TBool CMetaDataParserDcf::ValidateL()
+ {
+ iExists = ETrue;
+ return ETrue;
+ }
+
+void CMetaDataParserDcf::ReadMetaDataEntryL(TInt aEntryName,
+ TMetaDataFieldId aFieldId)
+ {
+ TInt err = KErrNone;
+ TBuf <256> headerValue;
+ err = ((CMetaDataSourceFile*)iSource)->GetStringAttribute(aEntryName, headerValue);
+
+ if(err != KErrNone)
+ {
+ return;
+ }
+ TPtrC info = StripTrailingZeroes(headerValue);
+ if(info.Length() > 0)
+ {
+ iContainer->AppendL( aFieldId, info );
+ }
+}
+
+// End of File