diff -r 000000000000 -r 05e9090e2422 layouts/cdl/CdlEngine/src/CdlUserPackageExplorer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/layouts/cdl/CdlEngine/src/CdlUserPackageExplorer.cpp Thu Dec 17 09:14:12 2009 +0200 @@ -0,0 +1,54 @@ +/* +* Copyright (c) 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 "CdlUserPackageExplorer.h" + +#include + + +EXPORT_C CCdlUserPackageExplorer::~CCdlUserPackageExplorer() + { + iLanguageDowngradePath.Close(); + } + +EXPORT_C void CCdlUserPackageExplorer::ConstructL() + { + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + BaflUtils::GetDowngradePathL(fs, User::Language(), iLanguageDowngradePath); + CleanupStack::PopAndDestroy(); // fs + } + +EXPORT_C TCdlInstanceComparison CCdlUserPackageExplorer::Compare(const CDL_User_Package::CInstance& aFirst, + const CDL_User_Package::CInstance& aSecond) const + { + if (aFirst.uid() != aSecond.uid()) + return ECdlInstancesNotComparable; + + if (LanguageRank(aFirst.language()) <= LanguageRank(aSecond.language())) + return EFirstCdlInstanceBetter; + else + return ESecondCdlInstanceBetter; + } + +TInt CCdlUserPackageExplorer::LanguageRank(TLanguage aLang) const + { + TInt rank = iLanguageDowngradePath.Find(aLang); + if (rank == KErrNotFound) + rank = iLanguageDowngradePath.Count(); + return rank; + }