diff -r 000000000000 -r f979ecb2b13e meetingui/meetingrequestviewers/src/CMRDataFillerBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingui/meetingrequestviewers/src/CMRDataFillerBase.cpp Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,400 @@ +/* +* Copyright (c) 2005 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: Implementation of base class for meeting request data fillers +* +*/ + + + + +// INCLUDE FILES +#include "CMRDataFillerBase.h" +#include "MMRModelInterface.h" +#include "MRViewersPanic.h" +#include "CMRStringFormatter.h" +#include "MREntryConsultant.h" +#include +#include +#include // CCoeEnv +#include // StringLoader +#include // resouce identifiers +#include // CRichBio +#include // Calendar entry API V2 +#include +#include // Resource strings for meeting request +#include // resource string loading utils +#include // CCalAlarm +#include + +// CONSTANTS +/// Unnamed namespace for local definitions +namespace { + +_LIT( KPanicMsg, "~CMRDataFillerBase" ); + +void Panic( TPanicCode aReason ) + { + User::Panic( KPanicMsg, aReason ); + } + +} // namespace + + +// ============================ MEMBER FUNCTIONS =============================== + +CMRDataFillerBase::~CMRDataFillerBase() + { + delete iStringFormatter; + } + +void CMRDataFillerBase::AddItemL( + CRichBio& aViewer, + TInt aLabelRes, + const TDesC& aValue ) + { + // Empty fields are not shown. + if ( aValue.Length() ) + { + aViewer.AddItemL( *StringLoader::LoadLC( aLabelRes, &iCoeEnv ), + aValue ); + CleanupStack::PopAndDestroy(); // (label text) + } + } + +void CMRDataFillerBase::AddItemL( + CRichBio& aViewer, + TInt aLabelRes, + TInt aValueRes ) + { + aViewer.AddItemL( *StringLoader::LoadLC( aLabelRes, &iCoeEnv ), + *StringLoader::LoadLC( aValueRes, &iCoeEnv ) ); + CleanupStack::PopAndDestroy(2); // (label and value text) + } + +// ----------------------------------------------------------------------------- +// ?classname::?classname +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CMRDataFillerBase::CMRDataFillerBase( + CRichBio& aRichBio, + MMRModelInterface& aModel, + CCoeEnv& aCoeEnv, + CMRMailboxUtils& aUtils, + MAgnEntryUi::TAgnEntryUiInParams& aParams ) + : iCoeEnv( aCoeEnv ), + iModel( aModel ), + iRichBio( aRichBio ), + iUtils( aUtils ), + iParams( aParams ) + { + } + +// ----------------------------------------------------------------------------- +// ?classname::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CMRDataFillerBase::ConstructL() + { + iStringFormatter = CMRStringFormatter::NewL( iCoeEnv ); + } + +void CMRDataFillerBase::FillViewerWithDataL() + { + iEntry = iModel.CombinedEntry(); + __ASSERT_DEBUG( iEntry, Panic( ECombinedCalEntryNull ) ); + + // call templated method + DoFillViewerL(); + } + +void CMRDataFillerBase::RefreshViewerL() + { + iRichBio.Reset(); + FillViewerWithDataL(); + } + +TBool CMRDataFillerBase::MeetingOnSameDayL() + { + return !MREntryConsultant::SpansManyDaysL( iEntry->StartTimeL(), + iEntry->EndTimeL() ); + } + +void CMRDataFillerBase::FillOrganiserDataL() + { + AddItemL( iRichBio, + R_QTN_MAIL_MTG_ORGANISER, + iEntry->OrganizerL()->Address() ); + } + +void CMRDataFillerBase::FillWhenDataL() + { + HBufC* string = iStringFormatter->WhenStringLC( iEntry->StartTimeL(), + iEntry->EndTimeL() ); + AddItemL( iRichBio, R_QTN_MAIL_MTG_DATE, *string ); + CleanupStack::PopAndDestroy( string ); + } + +void CMRDataFillerBase::FillStartTimeDataL() + { + HBufC* string = iStringFormatter->DateStringLC( iEntry->StartTimeL() ); + AddItemL( iRichBio, R_QTN_SM_CAL_STARTTIME, *string ); + CleanupStack::PopAndDestroy( string ); + } + +void CMRDataFillerBase::FillEndTimeDataL() + { + HBufC* string = iStringFormatter->DateStringLC( iEntry->EndTimeL() ); + AddItemL( iRichBio, R_QTN_SM_CAL_ENDTIME, *string ); + CleanupStack::PopAndDestroy( string ); + } + +void CMRDataFillerBase::FillLocationDataL() + { + AddItemL( iRichBio,R_QTN_SM_CAL_LOCATION,iEntry->LocationL()); + } + +void CMRDataFillerBase::FillDescriptionDataL() + { + AddItemL( iRichBio,R_QTN_SM_CAL_DESCRIPTION,iEntry->DescriptionL()); + } + +TInt CMRDataFillerBase::GetAttendeeStatusL( const CCalAttendee& aAttendee ) + { + TInt retVal( 0 ); + + CCalAttendee::TCalStatus status = aAttendee.StatusL(); + + switch( status ) + { + case CCalAttendee::ENeedsAction: + { + retVal = R_QTN_MAIL_MTG_PLS_RESPOND; + break; + } + case CCalAttendee::EAccepted: // fall through + case CCalAttendee::EConfirmed: + { + retVal = R_QTN_MAIL_MTG_ACCEPTED; + break; + } + case CCalAttendee::ETentative: + { + retVal = R_QTN_MAIL_MTG_TENTATIVE; + break; + } + case CCalAttendee::EDeclined: + { + retVal = R_QTN_MAIL_MTG_DECLINE; + break; + } + default: + { + break; + } + } + + return retVal; + } + +void CMRDataFillerBase::FillStatusDataL() + { + CCalAttendee* attendee = iUtils.ThisAttendeeL( *iEntry ); + if ( attendee ) + { + TInt retVal = GetAttendeeStatusL( *attendee ); + if ( retVal != 0 ) + { + AddItemL( iRichBio, R_QTN_MAIL_MTG_STATUS, retVal ); + } + } + } + +TInt CMRDataFillerBase::GetAttendanceStatusL( const CCalAttendee& aAttendee ) + { + TInt retVal( 0 ); + + CCalAttendee::TCalRole role = aAttendee.RoleL(); + + switch( role ) + { + case CCalAttendee::EReqParticipant: + { + retVal = R_QTN_MAIL_MTG_REQUIRED; + break; + } + case CCalAttendee::EOptParticipant: + { + retVal = R_QTN_MAIL_MTG_OPTIONAL; + break; + } + case CCalAttendee::ENonParticipant: + { + retVal = R_QTN_MAIL_MTG_OPTIONAL; + break; + } + case CCalAttendee::EChair: + { + retVal = R_QTN_MAIL_MTG_REQUIRED; + break; + } + default: + { + break; + } + } + return retVal; + } + + +void CMRDataFillerBase::FillAttendanceDataL() + { + CCalAttendee* attendee = iUtils.ThisAttendeeL( *iEntry ); + if ( attendee ) + { + TInt retVal = GetAttendanceStatusL( *attendee ); + if ( retVal != 0 ) + { + AddItemL( iRichBio, R_QTN_MAIL_MTG_ATTENDANCE, retVal ); + } + } + } + +void CMRDataFillerBase::FillAlarmTimeDataL() + { + CCalAlarm* alarm = iEntry->AlarmL(); // ownership transferred + if ( alarm ) + { + CleanupStack::PushL( alarm ); + TTime alarmTime = iEntry->StartTimeL().TimeLocalL() - + alarm->TimeOffset(); + HBufC* string = iStringFormatter->TimeStringLC( alarmTime ); + AddItemL( iRichBio, R_QTN_SM_CAL_ALARMTIME, *string ); + CleanupStack::PopAndDestroy( 2, alarm ); // string, alarm + } + } + +void CMRDataFillerBase::FillAlarmDateDataL() + { + CCalAlarm* alarm = iEntry->AlarmL(); // ownership transferred + if ( alarm ) + { + CleanupStack::PushL( alarm ); + TTime alarmTime = iEntry->StartTimeL().TimeLocalL() - + alarm->TimeOffset(); + HBufC* string = iStringFormatter->DateStringLC( alarmTime ); + AddItemL( iRichBio, R_QTN_SM_CAL_ALARMDATE, *string ); + CleanupStack::PopAndDestroy( 2, alarm ); // string, alarm + } + } + +TInt CMRDataFillerBase::GetRepeatingEntryRuleL() + { + TCalRRule calRule; + + TInt retVal( 0 ); + + if ( iEntry->GetRRuleL( calRule ) ) + { + TCalRRule::TType repeatType( calRule.Type() ); + + switch ( repeatType ) + { + case TCalRRule::EDaily: + { + retVal = R_QTN_SM_CAL_RPT_DAILY; + break; + } + case TCalRRule::EWeekly: + { + retVal = R_QTN_SM_CAL_RPT_WEEKLY; + break; + } + case TCalRRule::EMonthly: + { + retVal = R_QTN_SM_CAL_RPT_MONTHLY; + break; + } + case TCalRRule::EYearly: + { + retVal = R_QTN_SM_CAL_RPT_YEARLY; + break; + } + default: + { + retVal = R_QTN_SM_CAL_RPT_DAILY; + break; + } + } + } + return retVal; + } + +void CMRDataFillerBase::FillRepeatRuleDataL() + { + TInt retVal = GetRepeatingEntryRuleL(); + if ( retVal ) + { + AddItemL( iRichBio,R_QTN_SM_CAL_REPEAT, retVal ); + } + } + +void CMRDataFillerBase::FillRepeatUntilDataL() + { + TCalRRule calRule; + if ( iEntry->GetRRuleL( calRule ) ) + { + HBufC* string = iStringFormatter->DateStringLC( calRule.Until() ); + AddItemL( iRichBio, R_QTN_SM_CAL_REPEAT_UNTIL, *string ); + CleanupStack::PopAndDestroy( string ); + } + } + +void CMRDataFillerBase::FillSynchronisationDataL() + { + CCalEntry::TReplicationStatus replicationStatus; + + replicationStatus = iEntry->ReplicationStatusL(); + + TInt replicationVal; + + switch( replicationStatus ) + { + case CCalEntry::EOpen: + { + replicationVal = R_QTN_SM_CAL_CONF_PUBLIC; + break; + } + case CCalEntry::EPrivate: + { + replicationVal = R_QTN_SM_CAL_CONF_PRIVATE; + break; + } + case CCalEntry::ERestricted: + { + replicationVal = R_QTN_SM_CAL_CONF_NO_SYNC; + break; + } + default: + { + replicationVal = R_QTN_SM_CAL_CONF_PUBLIC; + } + } + AddItemL( iRichBio,R_QTN_SM_CAL_CONFIDENTIALITY, replicationVal ); + } + +// End of File +