diff -r cd2816114bd1 -r e64954c2c8e2 meetingrequest/mrentry/src/cesmrmeetingrequestentry.cpp --- a/meetingrequest/mrentry/src/cesmrmeetingrequestentry.cpp Wed Apr 14 15:42:15 2010 +0300 +++ b/meetingrequest/mrentry/src/cesmrmeetingrequestentry.cpp Tue Apr 27 16:20:14 2010 +0300 @@ -29,7 +29,7 @@ #include "mmrinfoobject.h" #include "mmrattendee.h" -#include "CFSMailMessage.h" +#include "cfsmailmessage.h" #include "esmrconfig.hrh" #include "cesmrfeaturesettings.h" @@ -42,12 +42,12 @@ #include #include #include -#include +#include #include #include #include #include -#include +#include #include #include #include @@ -241,16 +241,22 @@ CleanupStack::PopAndDestroy( newDescription ); __ASSERT_DEBUG( iEntry->PhoneOwnerL(), Panic( EESMRPhoneOwnerNotSet) ); - + CESMRFeatureSettings* settings = CESMRFeatureSettings::NewL(); if ( settings->FeatureSupported( CESMRFeatureSettings::EMRUIMeetingRequestViewerCmailOnly ) ) { // Meeting request viewer available only from email. - // Remove attachments from entry. + // Remove attachments from entry. iRemoveAttachments = ETrue; } delete settings; + + if ( CurrentPluginL() == EESMRActiveSync ) + { + // Set correct calendar database + SetDefaultDatabaseL(); + } } // --------------------------------------------------------------------------- @@ -383,7 +389,7 @@ __ASSERT_DEBUG( iEntry, Panic(EESMREntryNotExist ) ); TBool canSetRecurrence( ETrue ); - + if ( iEntry->EntryTypeL() == CCalEntry::EAppt && ESMREntryHelper::IsRepeatingMeetingL(*iEntry) && (!ESMREntryHelper::IsModifyingEntryL(*iEntry) && @@ -640,15 +646,15 @@ } } } - else if ( ERecurrenceNot != orginalRecurrence && + else if ( ERecurrenceNot != orginalRecurrence && aTypeChanging && !modifyingEntry ) { - // if entry( in the memory) is a recurrent event + // if entry( in the memory) is a recurrent event // ,and if entry type is changing, and not in modifying status then EESMRAllInSeries iRecurrenceModRule = EESMRAllInSeries ; return; } - + iRecurrenceModRule = aRule; } @@ -872,7 +878,7 @@ TBool CESMRMeetingRequestEntry::IsEntryTypeChangedL() const { FUNC_LOG; - + return iTypeChanged; } @@ -1461,7 +1467,15 @@ currentTimeUtc.UniversalTime(); TTime startTimeUtc = iEntry->StartTimeL().TimeUtcL(); - + + if( IsRecurrentEventL() && + IsOpenedFromMail() && + EESMRAllInSeries == iRecurrenceModRule ) + { + // Get recurrence + TESMRRecurrenceValue recValue( ERecurrenceNot ); + GetRecurrenceL( recValue, startTimeUtc ); + } return (startTimeUtc < currentTimeUtc); } @@ -1665,7 +1679,7 @@ { // Remove attachments from the entry TInt count( entry->AttachmentCountL() ); - + for ( TInt i = 0; i < count; ++i ) { CCalAttachment* attachment = entry->AttachmentL( i ); @@ -1817,7 +1831,7 @@ aStartupParams.iCalEntry = iESMRInputParams->iCalEntry; aStartupParams.iMRInfoObject = iESMRInputParams->iMRInfoObject; aStartupParams.iMailMessage = iESMRInputParams->iMailMessage; - aStartupParams.iMailClient = iESMRInputParams->iMailClient; + aStartupParams.iMailClient = iESMRInputParams->iMailClient; aStartupParams.iSpare = iESMRInputParams->iSpare; } return retValue; @@ -2158,14 +2172,14 @@ CCalInstance* instance = InstanceL(); CleanupStack::PushL( instance ); - + TCalCollectionId colId = instance->InstanceIdL().iCollectionId; CleanupStack::PopAndDestroy( instance ); - + conflictCheckker->FindInstancesForEntryL( aStart, aEnd, *iEntry, - colId, + colId, entries ); if ( entries.Count() ) @@ -2245,11 +2259,11 @@ // CESMRMeetingRequestEntry::SupportsCapabilityL // --------------------------------------------------------------------------- // -TBool CESMRMeetingRequestEntry::SupportsCapabilityL( +TBool CESMRMeetingRequestEntry::SupportsCapabilityL( MESMRCalEntry::TMREntryCapability aCapability ) const { TBool retValue( EFalse ); - + switch( aCapability ) { case MESMRCalEntry::EMRCapabilityAttachments: @@ -2260,11 +2274,11 @@ retValue = fsMbUtils->DefaultMailboxSupportCapabilityL( CESMRFsMailboxUtils::EMRCapabilityAttachment ); - CleanupStack::PopAndDestroy( fsMbUtils ); + CleanupStack::PopAndDestroy( fsMbUtils ); } break; } - + return retValue; } @@ -2275,22 +2289,22 @@ TBool CESMRMeetingRequestEntry::ContainsRemoteAttachmentsL() { FUNC_LOG; - + TBool retValue( EFalse ); - + TInt attachmentCount( iEntry->AttachmentCountL() ); - + for ( TInt i(0); i < attachmentCount && !retValue; ++i ) { - CCalAttachment* attachment = iEntry->AttachmentL(i); + CCalAttachment* attachment = iEntry->AttachmentL(i); CCalAttachment::TType type( attachment->Type() ); - + if ( CCalAttachment::EFile != type ) { retValue = ETrue; - } + } } - + return retValue; } @@ -2320,8 +2334,39 @@ void CESMRMeetingRequestEntry::SetTypeChanged( TBool aTypeChanged ) { FUNC_LOG; - + iTypeChanged = aTypeChanged; } +// --------------------------------------------------------------------------- +// CESMRMeetingRequestEntry::SetDefaultDatabaseL +// --------------------------------------------------------------------------- +// +void CESMRMeetingRequestEntry::SetDefaultDatabaseL() + { + FUNC_LOG; + + if ( !IsStoredL() ) + { + // If entry has not been stored, set database manager to use correct + // database supported by plugin sync solution. + CESMRFsMailboxUtils* fsMbUtils = + CESMRFsMailboxUtils::NewL( iMRMailboxUtils ); + CleanupStack::PushL( fsMbUtils ); + TCalFileId aDbId( KNullFileId ); + fsMbUtils->GetCalendarDatabaseIdL( CurrentPluginL(), aDbId ); + CleanupStack::PopAndDestroy( fsMbUtils ); + + if ( aDbId != KNullFileId ) + { + iCalDb.SetCurCalendarByDbIdL( aDbId ); + } + else if ( CurrentPluginL() == EESMRActiveSync ) + { + _LIT( KMfeDb, "Mail for Exchange" ); + iCalDb.SetCurCalendarByNameL( KMfeDb ); + } + } + } + // EOF