diff -r 047f208ea78f -r 8dc8494f1e0e loggingservices/eventlogger/test/src/t_logutil3.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loggingservices/eventlogger/test/src/t_logutil3.cpp Wed Sep 15 14:05:58 2010 +0300 @@ -0,0 +1,85 @@ +// Copyright (c) 2010 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 "t_logutil3.h" +#include +#include +#include +#include +#include "LOGREPDEFS.H" + +static void LoadSettingsFromResourceFileL(TInt& aContactMatchCount, TLogContactNameFormat& aContactNameFormat) + { + _LIT(KLogResourceFile,"z:\\private\\101f401d\\logserv.rsc"); + TFileName fileName(KLogResourceFile); + + RFs fs; + CleanupClosePushL(fs); + User::LeaveIfError(fs.Connect()); + BaflUtils::NearestLanguageFile(fs, fileName); + + // Open resource file + RResourceFile rscFile; + CleanupClosePushL(rscFile); + rscFile.OpenL(fs, fileName);//OpenL() requires AllFiles capability + + TResourceReader reader; + + HBufC8* buf = rscFile.AllocReadLC(R_LOG_CONTACT_MATCH_COUNT); + reader.SetBuffer(buf); + aContactMatchCount = reader.ReadInt16(); + CleanupStack::PopAndDestroy(buf); + + buf = rscFile.AllocReadLC(R_LOG_CONTACT_NAME_FORMAT); + reader.SetBuffer(buf); + aContactNameFormat = static_cast (reader.ReadInt16()); + CleanupStack::PopAndDestroy(buf); + + CleanupStack::PopAndDestroy(&rscFile); + CleanupStack::PopAndDestroy(&fs); + } + +//This function reads logeng repository file and returns the integer value of the given key. +static TInt LogGetRepositoryValueL(CRepository& aRepository, TInt aKey) + { + TInt val = -1; + User::LeaveIfError(aRepository.Get(aKey, val)); + return val; + } + +//The function opens the LogEng repository (KUidLogengRepository) and gets the values of +//KContactMatchCountRepKey and KContactNameFormatRepKey resources. +//If it is impossible to read the values from the repository, then they will be loaded from LogServ resource file. +void LogGetContactmatchCountAndNameFormatL(TInt& aContactMatchCount, TLogContactNameFormat& aContactNameFormat) + { + CRepository* repository = NULL; + TRAPD(err, repository = CRepository::NewL(KUidLogengRepository)); + if(err == KErrCorrupt) + { + __ASSERT_DEBUG(!repository, User::Invariant()); + User::Leave(err); + } + else if(err == KErrNone) + { + CleanupStack::PushL(repository); + aContactMatchCount = LogGetRepositoryValueL(*repository, KContactMatchCountRepKey); + aContactNameFormat = static_cast (LogGetRepositoryValueL(*repository, KContactNameFormatRepKey)); + CleanupStack::PopAndDestroy(repository); + } + else + { + __ASSERT_DEBUG(!repository, User::Invariant()); + LoadSettingsFromResourceFileL(aContactMatchCount, aContactNameFormat); + } + }