diff -r 000000000000 -r d0791faffa3f mtpdataproviders/mtpfileandfolderdp/src/cmtpfiledpconfigmgr.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mtpdataproviders/mtpfileandfolderdp/src/cmtpfiledpconfigmgr.cpp Tue Feb 02 01:11:40 2010 +0200 @@ -0,0 +1,117 @@ +// Copyright (c) 2006-2009 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: +// + +#include +#include + +#include "cmtpfiledpconfigmgr.h" + +#include +#include + + +#define UNUSED_VAR(v) (v = v) + +CMTPFileDpConfigMgr* CMTPFileDpConfigMgr::NewL(MMTPDataProviderFramework& aFramework) + { + CMTPFileDpConfigMgr* self = new (ELeave) CMTPFileDpConfigMgr(aFramework); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CMTPFileDpConfigMgr::CMTPFileDpConfigMgr(MMTPDataProviderFramework& aFramework) : + iFramework(aFramework) + { + } + +void CMTPFileDpConfigMgr::ConstructL() + { + iResourceId = iFramework.DataProviderConfig().UintValue(MMTPDataProviderConfig::EOpaqueResource); + + RResourceFile resFile; + CleanupClosePushL(resFile); + + resFile.OpenL(iFramework.Fs(), iFramework.DataProviderConfig().DesCValue(MMTPDataProviderConfig::EResourceFileName)); + HBufC8* res = resFile.AllocReadLC(iResourceId); + + TResourceReader reader; + reader.SetBuffer(res); + + // WORD - enumeration_iteration_length + iEnumItrLength = reader.ReadInt16(); + + // Do not read format_exclusion_list and extension_map + // to conserve memory - instead read it in dynamically when requested + + CleanupStack::PopAndDestroy(res); + CleanupStack::PopAndDestroy(&resFile); + } + +CMTPFileDpConfigMgr::~CMTPFileDpConfigMgr() + { + } + +TUint CMTPFileDpConfigMgr::UintValueL(TParameter aParam) const + { + __ASSERT_DEBUG(aParam == CMTPFileDpConfigMgr::EEnumerationIterationLength, User::Invariant()); + UNUSED_VAR(aParam); + return iEnumItrLength; + } + +void CMTPFileDpConfigMgr::GetArrayValueL(TParameter aParam, RArray& aArray) const + { + __ASSERT_DEBUG(aParam == CMTPFileDpConfigMgr::EFormatExclusionList, User::Invariant()); + UNUSED_VAR(aParam); + ReadFormatExclusionListL(aArray); + } + +void CMTPFileDpConfigMgr::ReadFormatExclusionListL(RArray& aArray) const + { + RResourceFile resFile; + CleanupClosePushL(resFile); + + resFile.OpenL(iFramework.Fs(), iFramework.DataProviderConfig().DesCValue(MMTPDataProviderConfig::EResourceFileName)); + HBufC8* res = resFile.AllocReadLC(iResourceId); + + TResourceReader reader; + reader.SetBuffer(res); + + // WORD - enumeration_iteration_length, skip it + reader.ReadInt16(); + + // WORD - length of format_exclusion_list + TInt16 len = reader.ReadInt16(); + + TInt err(KErrNone); + // WORD[] - of len items + while(len--) + { + err = aArray.InsertInOrder(TUint(reader.ReadUint16())); + if( (err != KErrNone) && (err != KErrAlreadyExists) ) + { + User::Leave(err); + } + } + + CleanupStack::PopAndDestroy(res); + CleanupStack::PopAndDestroy(&resFile); + } + +TInt CMTPFileDpConfigMgr::FormatCompare(const TUint& aFirst, const TUint& aSecond) + { + return (aFirst - aSecond); + }