diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrentry/src/cesmrentryprocessor.cpp --- a/meetingrequest/mrentry/src/cesmrentryprocessor.cpp Mon Mar 15 12:39:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,955 +0,0 @@ -/* -* 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 : ESMR entry processor implementation -* Version : %version: e003sa40#13 % -* -*/ - - -// INCLUDE FILES -#include "emailtrace.h" -#include "cesmrentryprocessor.h" -#include "cesmrcaldbmgr.h" -#include "cesmrmeetingrequestentry.h" -#include "cesmrconflictchecker.h" -#include "esmrhelper.h" -#include "esmrinternaluid.h" -#include "cesmrfsmailboxutils.h" - -// -#include "esmrdef.h" -// -#include -#include -#include -#include -#include -#include -#include -#include -#include -// -#include "FreestyleEmailUiConstants.h" -#include "cesmrrecurrenceinfohandler.h" -// -#include "esmrentryhelper.h" -#include "tesmrinputparams.h" - -/// Unnamed namespace for local definitions -namespace { - -// Definition for first item index -const TInt KFirstEntryIndex = 0; - -// Definition for zero interval -const TInt KZeroInterval = 0; - -#ifdef _DEBUG - -// Definition for module panic text -_LIT( KESMRProcessorPanicTxt, "ESMREntryProcessor" ); - -/** - * ESMREntryProcessor panic codes - */ -enum TESMREntryProcessorPanic - { - // Input entry array is empty - EESMRProcessorEmptyEntryArray = 1, - // Too many input entries - EESMRProcessorTooManyEntries = 2, - // entries are not processed - EESMRProcessorEntriesNotProcessed, - // View mode for policy resolving - // cannot be check. - EESMRProcessorCannotCheckViewMode, - }; - -/** - * Raises panic. - * @param aPanic Panic code - */ -void Panic(TESMREntryProcessorPanic aPanic) - { - - User::Panic( KESMRProcessorPanicTxt(), - aPanic); - } - -/** - * Logs scenatio data - * @param aData Reference to scenario data. - */ -void LogScenatioData( - const TESMRScenarioData& /*aScenarioData*/ ) - { - - - - - } - -#endif // _DEBUG - -/** - * Cleanup operation for RPointerArray. - * - * @param aArray Pointer to RPointerArray. - */ -void CalEntryPointerArrayCleanup( TAny* aArray ) - { - RPointerArray* entryArray = - static_cast*>( aArray ); - - entryArray->ResetAndDestroy(); - entryArray->Close(); - } - -/** - * Sets child entry's start and end time. - * - * @param aChild Reference to child entry - * @param aParent Reference to parent entry - * @param aChildEnd Child entry's start time - */ -void SetInstanceStartAndEndL( - CCalEntry& aChild, - const CCalEntry& aParent, - const TCalTime& aChildStart ) - { - TTime parentStart( aParent.StartTimeL().TimeUtcL() ); - TTime parentEnd( aParent.EndTimeL().TimeUtcL() ); - TTime childStart( aChildStart.TimeUtcL() ); - const TTime KNullTime( Time::NullTTime() ); - - if ( KNullTime == parentStart || - KNullTime == parentEnd || - KNullTime == childStart ) - { - // Invalid time --> Leaving - User::Leave( KErrArgument ); - } - - TTimeIntervalMicroSeconds duration( KZeroInterval ); - duration = parentEnd.MicroSecondsFrom( parentStart ); - TCalTime childEnd; - childEnd.SetTimeUtcL( childStart + duration ); - - aChild.SetStartAndEndTimeL( aChildStart, childEnd ); - } - -void CheckRepeatUntilValidityL( - CCalEntry& aEntry, - const TCalTime& aInstanceTime ) - { - - if ( ESMREntryHelper::IsRepeatingMeetingL(aEntry) && - !ESMREntryHelper::IsModifyingEntryL(aEntry) ) - { - TCalRRule originalRRule; - if ( aEntry.GetRRuleL( originalRRule ) ) - { - TCalTime endTime = aEntry.EndTimeL(); - TCalTime startTime = aEntry.StartTimeL(); - - TTimeIntervalMicroSeconds duration = - endTime.TimeLocalL().MicroSecondsFrom( - startTime.TimeLocalL() ); - - TTime instanceEndTime( aInstanceTime.TimeLocalL() ); - instanceEndTime += duration; - TCalTime repeatUntilTime = originalRRule.Until(); - - TDateTime repeat = repeatUntilTime.TimeLocalL().DateTime(); - TDateTime instanceEndDatetime = instanceEndTime.DateTime(); - - if ( repeatUntilTime.TimeLocalL() < instanceEndTime ) - { - // reset the recurrence so, that the repeat until - // time is included in repeat range. This is done, - // because when setting the instance start and end - // time, the CCalEntry implementation clears the - // recurrence information if the end time is - // after repeat until end time. - // CCalEntry forces the repeat until time to be - // same than last entry's start time when storing the - // entry to db. Reason uknown. - TCalRRule rRule; - rRule.SetDtStart( originalRRule.DtStart() ); - rRule.SetType( originalRRule.Type() ); - - TCalTime newUntil; - newUntil.SetTimeLocalL( instanceEndTime ); - rRule.SetUntil( newUntil ); - rRule.SetInterval( originalRRule.Interval() ); - aEntry.SetRRuleL( rRule ); - } - } - } - } - -} // namespace - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::CESMREntryProcessor -// --------------------------------------------------------------------------- -// -inline CESMREntryProcessor::CESMREntryProcessor( - CMRMailboxUtils& aMRMailboxUtils, - MESMRCalDbMgr& aDbMgr ) -: iMRMailboxUtils( aMRMailboxUtils ), - iDbMgr( aDbMgr ) - { - FUNC_LOG; - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::~CESMREntryProcessor -// --------------------------------------------------------------------------- -// -EXPORT_C CESMREntryProcessor::~CESMREntryProcessor() - { - FUNC_LOG; - delete iESMREntry; - delete iMbUtils; - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::ConstructL -// --------------------------------------------------------------------------- -// -void CESMREntryProcessor::ConstructL() - { - FUNC_LOG; - iMbUtils = - CESMRFsMailboxUtils::NewL( iMRMailboxUtils ); - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::NewL -// --------------------------------------------------------------------------- -// -EXPORT_C CESMREntryProcessor* CESMREntryProcessor::NewL( - CMRMailboxUtils& aMRMailboxUtils, - MESMRCalDbMgr& aDbMgr ) - { - FUNC_LOG; - - CESMREntryProcessor* self = - new (ELeave) CESMREntryProcessor( - aMRMailboxUtils, aDbMgr ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - - return self; - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::ExtensionUid -// --------------------------------------------------------------------------- -// -EXPORT_C TUid CESMREntryProcessor::ExtensionUid() - { - FUNC_LOG; - return TUid::Uid( KESMRMREntryProcessorUid ); - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::ProcessL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::ProcessL( - const MAgnEntryUi::TAgnEntryUiInParams* aParams, - RPointerArray* aEntries ) - { - FUNC_LOG; - - iParams = aParams; - ProcessL( aEntries ); - CheckViewModeL(); - - if ( !IsDataOk() ) - { - // Data is not ok --> Leave - User::Leave( KErrArgument ); - } - - // Check mail parameters - if ( iParams ) - { - CCalEntry* entry = &iESMREntry->Entry(); - if(entry) - { - TBool recurrent(EFalse); - recurrent = iESMREntry->IsRecurrentEventL(); - - if(recurrent) - { - if ( !ESMREntryHelper::IsModifyingEntryL(*entry) ) - { - iESMREntry->SetModifyingRuleL( MESMRMeetingRequestEntry::EESMRAllInSeries ); - - SetPhoneOwnerToOwnEntryL(); - } - } - } - } - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::ProcessL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::ProcessL( - RPointerArray* aEntries ) - { - FUNC_LOG; - - __ASSERT_DEBUG( aEntries->Count() > 0, - Panic( EESMRProcessorEmptyEntryArray ) ); - - iMREntries = aEntries; - - // Set initial values to scenario data - iScenData.iRole = EESMRRoleUndef; - iScenData.iViewMode = EESMRViewUndef; - iScenData.iCallingApp = EESMRAppUndef; - - SetPhoneOwnerL(); - CreateESMREntryL(); - CheckOrganizerL(); - - iESMREntry->SetModifyingRuleL( - MESMRMeetingRequestEntry::EESMRThisOnly ); - - if ( iParams && MAgnEntryUi::ECreateNewEntry == iParams->iEditorMode ) - { - iESMREntry->SetDefaultValuesToEntryL(); - } - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::ProcessL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::ProcessL( - CCalInstance& aInstance ) - { - FUNC_LOG; - - RPointerArray entries; - CleanupStack::PushL( - TCleanupItem( - CalEntryPointerArrayCleanup, - &entries ) ); - - // Fetches parent entry. We need to construct entry with - // correct time. - CCalEntry &entry = aInstance.Entry(); - CCalEntry* instanceEntry = ESMRHelper::CopyEntryL( - entry, - entry.MethodL(), - ESMRHelper::ECopyFull ); - - entries.Append(instanceEntry); - - // Setting start and end time for child entry - CheckRepeatUntilValidityL( - *instanceEntry, - aInstance.StartTimeL() ); - - SetInstanceStartAndEndL( - *instanceEntry, - entry, - aInstance.StartTimeL() ); - - // Filling child with correct data - // This can be replaced withCCalenInterimUtils2::PopulateChildFromParentL - // after its memory leak has been fixed. - ESMRHelper::PopulateChildFromParentL( - *instanceEntry, - entry ); - - ProcessL( &entries ); - - if ( !iESMREntry ) - { - User::Leave( KErrArgument ); - } - - // Mark only this entry to be affected. - iESMREntry->SetModifyingRuleL( - MESMRMeetingRequestEntry::EESMRThisOnly ); - - CleanupStack::PopAndDestroy( &entries ); - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::SwitchToForwardL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::SwitchToForwardL() - { - FUNC_LOG; - - if ( !iESMREntry ) - { - // No entries has been processed yet. - User::Leave( KErrNotReady ); - } - - iESMREntry->SwitchToForwardL(); - - // Rest of the scenario data remains as it is - iScenData.iViewMode = EESMRForwardMR; - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::SwitchToViewL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::SwitchToEditL() - { - FUNC_LOG; - - if ( !iESMREntry ) - { - // No entries has been processed yet. - User::Leave( KErrNotReady ); - } - - iESMREntry->SwitchToOrginalL(); - - // Rest of the scenario data remains as it is - iScenData.iViewMode = EESMREditMR; - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::SwitchToViewL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::SwitchToViewL() - { - FUNC_LOG; - - if ( !iESMREntry ) - { - // No entries has been processed yet. - User::Leave( KErrNotReady ); - } - - iESMREntry->SwitchToOrginalL(); - - // Rest of the scenario data remains as it is - iScenData.iViewMode = EESMRViewMR; - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::SwitchToTrackL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::SwitchToTrackL() - { - FUNC_LOG; - - if ( !iESMREntry ) - { - // No entries has been processed yet. - User::Leave( KErrNotReady ); - } - - iESMREntry->SwitchToOrginalL(); - - // Rest of the scenario data remains as it is - iScenData.iViewMode = EESMRTrackingViewMR; - iScenData.iRole = EESMRRoleOrganizer; - iScenData.iEntryType = EESMREventTypeAppt; - - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::ESMREntryL -// --------------------------------------------------------------------------- -// -EXPORT_C MESMRMeetingRequestEntry& CESMREntryProcessor::ESMREntryL() - { - FUNC_LOG; - CreateESMREntryL(); - return *iESMREntry; - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::ResetL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::ResetL() - { - FUNC_LOG; - - iScenData.iRole = EESMRRoleUndef; - iScenData.iViewMode = EESMRViewUndef; - iScenData.iCallingApp = EESMRAppUndef; - - delete iESMREntry; - iESMREntry = NULL; - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::ProcessOutputParametersL -// --------------------------------------------------------------------------- -// -EXPORT_C void CESMREntryProcessor::ProcessOutputParametersL( - MAgnEntryUi::TAgnEntryUiOutParams& aOutParams, - TESMRCommand aCommand ) - { - FUNC_LOG; - - __ASSERT_DEBUG( iESMREntry, Panic(EESMRProcessorEntriesNotProcessed) ); - - if ( !iParams || - EESMRForwardMR == iScenData.iViewMode || - EESMRViewUndef == iScenData.iViewMode ) - { - // No input parameters supplied --> Output parameters cannot be set - return; - } - - TBool handlingInstanceOnly( - iESMREntry->IsRecurrentEventL() && - MESMRCalEntry::EESMRThisOnly == iESMREntry->RecurrenceModRule() ); - - switch ( aCommand ) - { - case EESMRCmdSendMR: - case EESMRCmdSendMRUpdate: - case EESMRCmdSaveMR: - case EESMRCmdAcceptMR: - case EESMRCmdTentativeMR: - { - aOutParams.iAction = MAgnEntryUi::EMeetingSaved; - if ( handlingInstanceOnly ) - { - aOutParams.iAction = MAgnEntryUi::EInstanceRescheduled; - } - } - break; - - case EESMRCmdDeclineMR: - case EESMRCmdDeleteMR: - { - aOutParams.iAction = MAgnEntryUi::EMeetingDeleted; - if ( handlingInstanceOnly ) - { - aOutParams.iAction = MAgnEntryUi::EInstanceDeleted; - } - } - break; - - default: - { - aOutParams.iAction = MAgnEntryUi::ENoAction; - } - break; - } - - if ( handlingInstanceOnly ) - { - aOutParams.iNewInstanceDate = - iESMREntry->Entry().StartTimeL(); - } - else if ( MAgnEntryUi::ENoAction != aOutParams.iAction ) - { - // Copy entry details to input entry - CCalEntry& baseEntry = *((*iMREntries)[KFirstEntryIndex]); - baseEntry.CopyFromL( iESMREntry->Entry() ); - - TCalTime instanceTime = iESMREntry->Entry().StartTimeL(); - - if ( MESMRCalEntry::EESMRAllInSeries == iESMREntry->RecurrenceModRule() ) - { - // For recurrent event there might be exceptions - // and therefore the first possible start time - // is set to putput params - TCalTime end; - CESMRRecurrenceInfoHandler* recurrenceHandler = - CESMRRecurrenceInfoHandler::NewLC( iESMREntry->Entry() ); - - recurrenceHandler->GetFirstInstanceTimeL( - instanceTime, - end ); - - CleanupStack::PopAndDestroy( recurrenceHandler ); - recurrenceHandler = NULL; - aOutParams.iNewInstanceDate = instanceTime; - } - else - { - aOutParams.iNewInstanceDate.SetTimeLocalL( - iESMREntry->Entry().StartTimeL().TimeLocalL() ); - } - } - else - { - aOutParams.iNewInstanceDate.SetTimeLocalL( Time::NullTTime() ); - } - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::SetPhoneOwnerL -// --------------------------------------------------------------------------- -// -void CESMREntryProcessor::SetPhoneOwnerL() - { - FUNC_LOG; - - TInt count( iMREntries->Count() ); - for ( TInt i( 0 ); i < count; ++i ) - { - // Set phone owner for all entries - CCalEntry& entry = *( (*iMREntries)[i] ); - - TESMRInputParams* inputParams = NULL; - if ( iParams ) - { - inputParams = (TESMRInputParams*)(iParams->iSpare); - } - - TInt err(KErrNone); - if ( inputParams && - inputParams->iMailClient && - inputParams->iMailMessage ) - { - err = iMbUtils->SetPhoneOwnerL( - entry, - *(inputParams->iMailClient), - *(inputParams->iMailMessage) ); - } - else if ( iParams ) - { - err = iMbUtils->SetPhoneOwnerL( - entry, - iParams->iMailBoxId ); - } - else - { - err = iMbUtils->SetPhoneOwnerL( entry ); - } - - if ( KErrNone != err ) - { - User::Leave( KErrArgument ); - } - } - - // set iOwnerRole, use entry at index zero: - CCalEntry& baseEntry = *( (*iMREntries)[KFirstEntryIndex] ); - if ( iMRMailboxUtils.IsOrganizerL( baseEntry ) ) - { - iScenData.iRole = EESMRRoleOrganizer; - } - else - { - // We are not organizer. Let's see if we are in attendee list - // or not. - CCalAttendee* thisAttendee = - iMRMailboxUtils.ThisAttendeeL( baseEntry ); - if ( thisAttendee ) - { - switch ( thisAttendee->RoleL() ) - { - case CCalAttendee::EOptParticipant: - { - iScenData.iRole = EESMRRoleOptionalAttendee; - break; - } - case CCalAttendee::ENonParticipant: - { - iScenData.iRole = EESMRRoleNonParticipant; - break; - } - case CCalAttendee::EReqParticipant: // fall through - case CCalAttendee::EChair: // fall through - default: - { // Note: chair MUST NOT be interpreted as organizer - // Req.participant is not correct either but has less - // side effects. - iScenData.iRole = EESMRRoleRequiredAttendee; - break; - } - } - } - else - { - // Phone owner cannot be set --> Leave - User::Leave( KErrCorrupt ); - } - } - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::CheckViewModeL -// --------------------------------------------------------------------------- -// -void CESMREntryProcessor::CheckViewModeL() - { - FUNC_LOG; - - // View mode cannot be checked - __ASSERT_DEBUG( - iESMREntry, - Panic(EESMRProcessorCannotCheckViewMode) ); - - TInt32 callingAppUid = iParams->iCallingApp.iUid; - switch ( callingAppUid ) - { - case KUidCalendarApplication: - { - iScenData.iCallingApp = EESMRAppCalendar; - iScenData.iViewMode = EESMRViewMR; - if ( MAgnEntryUi::EViewEntry == iParams->iEditorMode ) - { - if ( iESMREntry->IsAllDayEventL() ) - { - iScenData.iViewMode = EESMRViewAllDayMR; - } - } - else - { - iScenData.iViewMode = EESMREditMR; - } - break; - } - case KUidMceMailApplication: - case KUidEsMailApplication: - case KUidBVAApplication: - { - iScenData.iCallingApp = EESMRAppESEmail; - iScenData.iViewMode = EESMRViewMR; - - if ( iESMREntry->IsAllDayEventL() ) - { - iScenData.iViewMode = EESMRViewAllDayMR; - } - break; - } - default: - { - //error situation, should never come here - // Setting data to undef --> will leave later on. - iScenData.iViewMode = EESMRViewUndef; - break; - } - } - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::SetPhoneOwnerL -// --------------------------------------------------------------------------- -// -TBool CESMREntryProcessor::IsDataOk() const - { - FUNC_LOG; - -#ifdef _DEBUG - LogScenatioData( iScenData ); -#endif - - TBool retVal(ETrue); - - // Check that all values has been set and there is no - // undefined values. Policies cannot be resolved, if - // scenario data is undefined. - if ( EESMRRoleUndef == iScenData.iRole || - EESMRViewUndef == iScenData.iViewMode || - EESMRAppUndef == iScenData.iCallingApp ) - { - retVal = EFalse; - } - - - - return retVal; - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::CreateESMREntryL -// --------------------------------------------------------------------------- -// -void CESMREntryProcessor::CreateESMREntryL() - { - FUNC_LOG; - - __ASSERT_DEBUG( iMREntries, Panic(EESMRProcessorEntriesNotProcessed) ); - - if ( !iESMREntry ) - { - // ES MR Entry is created - CCalEntry& base = *((*iMREntries)[KFirstEntryIndex]); - HBufC* description = NULL; - TRAPD( err, description = base.DescriptionL().AllocL() ); - CleanupStack::PushL( description ); - if ( KErrNone != err ) - { - User::Leave( KErrCorrupt ); - } - CleanupStack::PopAndDestroy( description ); - description = NULL; - - CCalEntry* entry = - ESMRHelper::CopyEntryLC( - base, - base.MethodL(), - ESMRHelper::ECopyFull ); - - CESMRConflictChecker* conflictChecker = - CESMRConflictChecker::NewL(iDbMgr); - CleanupStack::PushL( conflictChecker ); - - RPointerArray conflicts; - CleanupStack::PushL( - TCleanupItem( - CalEntryPointerArrayCleanup, - &conflicts ) ); - - conflictChecker->FindConflictsL( *entry, conflicts ); - TBool conflictsExists( conflicts.Count() ); - - if ( iParams && - KUidCalendarApplication == iParams->iCallingApp.iUid ) - { - // Setting start and end time for child entry - CheckRepeatUntilValidityL( - *entry, - iParams->iInstanceDate ); - - SetInstanceStartAndEndL( - *entry, - base, - iParams->iInstanceDate ); - } - - TESMRInputParams* inputParams = NULL; - if ( iParams ) - { - inputParams = (TESMRInputParams*)(iParams->iSpare); - } - - iESMREntry = - CESMRMeetingRequestEntry::NewL( - *entry, - iMRMailboxUtils, - iDbMgr, - conflictsExists, - inputParams ); - - CleanupStack::PopAndDestroy(); // conflicts - CleanupStack::PopAndDestroy( conflictChecker ); - CleanupStack::PopAndDestroy( entry ); - - SetPhoneOwnerToOwnEntryL(); - } - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::CheckOrganizerL -// --------------------------------------------------------------------------- -// -void CESMREntryProcessor::CheckOrganizerL() - { - FUNC_LOG; - - __ASSERT_DEBUG( iMREntries, Panic(EESMRProcessorEntriesNotProcessed) ); - - if ( EESMRRoleOrganizer == iScenData.iRole ) - { - CCalEntry& entry = *((*iMREntries)[KFirstEntryIndex]); - - CCalUser *phoneOwner = entry.PhoneOwnerL(); - - if ( !phoneOwner ) - { - User::Leave( KErrCorrupt ); - } - - CCalUser* organizer = ESMRHelper::CopyUserLC( *phoneOwner ); - - // Ownership is transferred - entry.SetOrganizerL( organizer ); - CleanupStack::Pop( organizer ); - } - - } - -// --------------------------------------------------------------------------- -// CESMREntryProcessor::SetPhoneOwnerToOwnEntryL -// --------------------------------------------------------------------------- -// -void CESMREntryProcessor::SetPhoneOwnerToOwnEntryL() - { - FUNC_LOG; - - // Phone owner cannot be checked - __ASSERT_DEBUG( - iESMREntry, - Panic(EESMRProcessorEntriesNotProcessed) ); - - TESMRInputParams* inputParams = NULL; - if ( iParams ) - { - inputParams = (TESMRInputParams*)(iParams->iSpare); - } - - TInt err(KErrNone); - if ( inputParams && - inputParams->iMailClient && - inputParams->iMailMessage ) - { - err = iMbUtils->SetPhoneOwnerL( - iESMREntry->Entry(), - *(inputParams->iMailClient), - *(inputParams->iMailMessage) ); - } - else if ( iParams ) - { - err = iMbUtils->SetPhoneOwnerL( - iESMREntry->Entry(), - iParams->iMailBoxId ); - } - else - { - err = iMbUtils->SetPhoneOwnerL( iESMREntry->Entry() ); - } - - User::LeaveIfError( err ); - - } - -// EOF -