os/mm/mmlibs/mmfw/src/ControllerFramework/MMFFormatImplementationInformationBody.cpp
Update contrib.
1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
17 #include "MMFFormatImplementationInformationBody.h"
19 const TInt KDesCArrayGranularity = 1;
21 CMMFFormatImplementationInformation::CBody* CMMFFormatImplementationInformation::CBody::NewL()
23 CMMFFormatImplementationInformation::CBody* self = CMMFFormatImplementationInformation::CBody::NewLC();
24 CleanupStack::Pop(self);
28 CMMFFormatImplementationInformation::CBody* CMMFFormatImplementationInformation::CBody::NewLC()
30 CMMFFormatImplementationInformation::CBody* self = new(ELeave) CMMFFormatImplementationInformation::CBody();
31 CleanupStack::PushL(self);
36 CMMFFormatImplementationInformation::CBody::CBody()
40 CMMFFormatImplementationInformation::CBody::~CBody()
42 delete iFileExtensions;
47 void CMMFFormatImplementationInformation::CBody::ConstructL()
49 // Create the descriptor arrays
50 iFileExtensions = new(ELeave) CDesC8ArrayFlat(KDesCArrayGranularity);
51 iMimeTypes = new(ELeave) CDesC8ArrayFlat(KDesCArrayGranularity);
52 iHeaderData = new(ELeave) CDesC8ArrayFlat(KDesCArrayGranularity);
55 void CMMFFormatImplementationInformation::CBody::AddFileExtensionL(const TDesC8& aData)
57 // Insert the new file extension into the array
58 iFileExtensions->InsertIsqL(aData, ECmpFolded);//ensures there are no repeated entries
61 void CMMFFormatImplementationInformation::CBody::AddMimeTypeL(const TDesC8& aData)
63 // Insert the new file extension into the array
65 if (iMimeTypes->Find(aData, position) != 0)
66 iMimeTypes->AppendL(aData);//ensures there are no repeated entries
69 void CMMFFormatImplementationInformation::CBody::AddHeaderDataL(const TDesC8& aData)
71 // Insert the new file extension into the array, only if its not empty
72 if (aData.Length() > 0)
74 iHeaderData->InsertIsqL(aData, ECmpFolded);//ensures there are no repeated entries
78 void CMMFFormatImplementationInformation::CBody::SetSupportsCustomInterfaces(const TBool aSupportsCustomInterfaces)
80 iSupportsCustomInterfaces = aSupportsCustomInterfaces;
83 const CDesC8Array& CMMFFormatImplementationInformation::CBody::SupportedFileExtensions() const
85 return *iFileExtensions;
88 const CDesC8Array& CMMFFormatImplementationInformation::CBody::SupportedMimeTypes() const
93 const CDesC8Array& CMMFFormatImplementationInformation::CBody::SupportedHeaderData() const
99 TBool CMMFFormatImplementationInformation::CBody::SupportsFileExtension(const TDesC8& aFileExtension) const
102 TInt error = iFileExtensions->FindIsq(aFileExtension, position, ECmpFolded);
103 return (error==KErrNone);
106 TBool CMMFFormatImplementationInformation::CBody::SupportsMimeType(const TDesC8& aMimeType) const
109 TInt error = iMimeTypes->Find(aMimeType, position, ECmpFolded);
110 return (error==KErrNone);
113 TBool CMMFFormatImplementationInformation::CBody::SupportsHeaderDataL(const TDesC8& aHeaderData) const
115 TBool matchFound = EFalse;
116 // Search aHeaderData for each chunk of header data in iHeaderData
117 for (TInt i=0; i<iHeaderData->Count(); i++)
119 TPtrC8 headerData = (*iHeaderData)[i];
120 // search for match section in the main buffer.
121 // ...by putting it in wildcards!
122 HBufC8* wildMatch = HBufC8::NewLC( headerData.Length() + 1) ;
123 TPtr8 wildMatchPtr = wildMatch->Des() ;
124 wildMatchPtr.Copy( headerData ) ;
126 wildMatchPtr.Append( KStar ) ;
127 if (aHeaderData.MatchF(*wildMatch) != KErrNotFound)
131 CleanupStack::PopAndDestroy(wildMatch);//wildMatch
138 TBool CMMFFormatImplementationInformation::CBody::SupportsCustomInterfaces() const
140 return iSupportsCustomInterfaces;