diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrpolicy/mrcalentryresolver/src/cmrcalentrypolicyresolver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrpolicy/mrcalentryresolver/src/cmrcalentrypolicyresolver.cpp Wed Mar 31 21:08:33 2010 +0300 @@ -0,0 +1,170 @@ +/* +* Copyright (c) 2007-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: MR Cal Entry policy resolver ECom plugin implementation +* +*/ + + +#include "cmrcalentrypolicyresolver.h" +#include "cmrpolicyresourceiterator.h" +#include "cesmrpolicy.h" +#include "esmrhelper.h" +#include "tesmrscenariodata.h" + +#include +#include + +#include "emailtrace.h" + +namespace // codescanner::namespace + { + _LIT( KPolicyResourceFile, "bccaleventpolicies.rsc" ); + } + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CMRCalEntryPolicyResolver::CMRCalEntryPolicyResolver +// --------------------------------------------------------------------------- +// +CMRCalEntryPolicyResolver::CMRCalEntryPolicyResolver() + { + FUNC_LOG; + // Do nothing + } + +// --------------------------------------------------------------------------- +// CMRCalEntryPolicyResolver::~CMRCalEntryPolicyResolver +// --------------------------------------------------------------------------- +// +CMRCalEntryPolicyResolver::~CMRCalEntryPolicyResolver() + { + FUNC_LOG; + + delete iIterator; + } + +// --------------------------------------------------------------------------- +// CMRCalEntryPolicyResolver::NewL +// --------------------------------------------------------------------------- +// +CMRCalEntryPolicyResolver* CMRCalEntryPolicyResolver::NewL() + { + FUNC_LOG; + CMRCalEntryPolicyResolver* self = new (ELeave) CMRCalEntryPolicyResolver; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CMRCalEntryPolicyResolver::ResolveL +// --------------------------------------------------------------------------- +// +CESMRPolicy* CMRCalEntryPolicyResolver::ResolveL( const TESMRScenarioData& aScenData ) + { + iIterator->Reset(); + + CESMRPolicy* policy = NULL; + + while ( !policy && iIterator->HasNext() ) + { + policy = iIterator->NextPolicyLC(); + + if ( MatchesL( *policy, aScenData ) ) + { + CleanupStack::Pop( policy ); + } + else + { + CleanupStack::PopAndDestroy( policy ); + policy = NULL; + } + } + + if ( !policy ) + { + User::Leave( KErrNotFound ); + } + + return policy; + } + +// --------------------------------------------------------------------------- +// CMRCalEntryPolicyResolver::SupportsTypeL +// --------------------------------------------------------------------------- +// +TBool CMRCalEntryPolicyResolver::SupportsTypeL( TESMRCalendarEventType aType ) + { + switch ( aType ) + { + case EESMREventTypeAppt: + case EESMREventTypeETodo: + case EESMREventTypeEEvent: + case EESMREventTypeEReminder: + case EESMREventTypeEAnniv: + { + return ETrue; + } + default: + { + return EFalse; + } + } + } + +// --------------------------------------------------------------------------- +// CMRCalEntryPolicyResolver::MatchesL +// --------------------------------------------------------------------------- +// +TBool CMRCalEntryPolicyResolver::MatchesL( + const CESMRPolicy& aPolicy, + const TESMRScenarioData& aScenData ) + { + FUNC_LOG; + TBool matches( ETrue ); + + if ( aPolicy.ViewMode() != aScenData.iViewMode + || aPolicy.EventType() != aScenData.iEntryType + || aPolicy.AllowedApp() != aScenData.iCallingApp ) + { + matches = EFalse; + } + + return matches; + } + +// --------------------------------------------------------------------------- +// CMRCalEntryPolicyResolver::ConstructL +// --------------------------------------------------------------------------- +// +void CMRCalEntryPolicyResolver::ConstructL() + { + FUNC_LOG; + + TFileName resource; + User::LeaveIfError( ESMRHelper::LocateResourceFile( + KPolicyResourceFile, + KDC_RESOURCE_FILES_DIR, + resource, + NULL ) ); + + iIterator = CMRPolicyResourceIterator::NewL( + resource, + R_BCCALEVENT_POLICIES ); + } + +// EOF +