diff -r 000000000000 -r 4e1aa6a622a0 sysstatemgmt/systemstateplugins/conditionevaluator/src/cndsystemwideproperty.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndsystemwideproperty.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,64 @@ +// 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: +// Provides the implementation to evaluate the condition on SwP +// +// + +/** + @internalComponent +*/ + +#include "cndsystemwideproperty.h" +#include + +CCndSwp::CCndSwp(const TConditionCheckType aConditionCheckType, + const TUint aKey, const TInt aCndValue): iConditionCheckType(aConditionCheckType), + iKey(aKey), + iCndValue(aCndValue) + { + + } + +CCndSwp::~CCndSwp() + { + + } + +CCndSwp* CCndSwp::NewL(const TConditionCheckType aConditionCheckType, + const TUint aKey, const TInt aCndValue) + { + CCndSwp* self = new (ELeave)CCndSwp(aConditionCheckType,aKey, aCndValue); + return self; + } + +TBool CCndSwp::EvaluateL() const + { + TInt value = 0; + + RSsmSystemWideProperty property; + User::LeaveIfError(property.Connect(iKey)); + User::LeaveIfError(property.GetValue(value)); + property.Close(); + + TBool retVal = EFalse; + if (iConditionCheckType == ECompareValue) + { + retVal = (value == iCndValue); + } + else + { + retVal = ((value & iCndValue) == iCndValue); + } + return retVal; + }