--- a/meetingrequest/mrtasks/src/cesmrmailplaitextformatter.cpp Mon Mar 15 12:39:10 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,492 +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: Implementation for plain text formatter for ES MR entries
-*
-*/
-
-#include "emailtrace.h"
-#include "cesmrmailplaitextformatter.h"
-
-#include <esmrtasks.rsg>
-#include <cmrmailboxutils.h>
-#include <StringLoader.h>
-#include <calentry.h>
-#include <caluser.h>
-#include <avkon.rsg>
-#include <utf.h>
-#include <data_caging_path_literals.hrh>
-#include "cesmrcaluserutil.h"
-#include "esmrhelper.h"
-#include <bautils.h>
-
-// Unnamed namespace for local definitions
-namespace {
-
-// Resource file name definition
-_LIT( KResourceFileName,"esmrtasks.rsc" );
-
-// Definition for new line
-_LIT( KNewLine,"\n" );
-
-_LIT( KWhiteSpace, " " );
-
-// Definition for first position
-const TInt KFirstPos( 0 );
-
-// Denition for amount of needed newlines
-const TInt KNewLinesNeeded = 5;
-
-// Definition for time string length (13:15)
-const TInt KTimeStringLength = 20;
-
-// Definition for date stinng length (31.12.2007)
-const TInt KDateStringLength = 20;
-
-}//namespace
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::CESMRMailPlainTextFormatter
-// ---------------------------------------------------------------------------
-//
-inline CESMRMailPlainTextFormatter::CESMRMailPlainTextFormatter(
- CMRMailboxUtils& aMailboxUtils ) :
- iMailboxUtils(aMailboxUtils)
- {
- FUNC_LOG;
- //do nothing
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::~CESMRMailPlainTextFormatter
-// ---------------------------------------------------------------------------
-//
-CESMRMailPlainTextFormatter::~CESMRMailPlainTextFormatter()
- {
- FUNC_LOG;
- if ( iResourceOffset )
- {
- CCoeEnv::Static()->DeleteResourceFile( iResourceOffset );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::NewL
-// ---------------------------------------------------------------------------
-//
-CESMRMailPlainTextFormatter* CESMRMailPlainTextFormatter::NewL(
- CMRMailboxUtils& aMailboxUtils )
- {
- FUNC_LOG;
- CESMRMailPlainTextFormatter* self = NewLC( aMailboxUtils );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::NewLC
-// ---------------------------------------------------------------------------
-//
-CESMRMailPlainTextFormatter* CESMRMailPlainTextFormatter::NewLC(
- CMRMailboxUtils& aMailboxUtils )
- {
- FUNC_LOG;
- CESMRMailPlainTextFormatter* self =
- new (ELeave) CESMRMailPlainTextFormatter(aMailboxUtils);
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CESMRMailPlainTextFormatter::ConstructL()
- {
- FUNC_LOG;
- CCoeEnv* coeEnv = CCoeEnv::Static();// codescanner::eikonenvstatic
-
- TFileName resourceFile;
- ESMRHelper::LocateResourceFile(
- KResourceFileName,
- KDC_RESOURCE_FILES_DIR,
- resourceFile,
- &coeEnv->FsSession());
-
- // Find the resource file for the nearest language
- BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resourceFile );
- iResourceOffset = coeEnv->AddResourceFileL( resourceFile );
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::Body16LC
-// ---------------------------------------------------------------------------
-//
-HBufC* CESMRMailPlainTextFormatter::Body16LC(
- CCalEntry& aEntry )
- {
- FUNC_LOG;
- HBufC* dateFormatString = StringLoader::LoadLC( R_QTN_DATE_USUAL );
-
- HBufC* timeFormatString = StringLoader::LoadLC( R_QTN_TIME_USUAL );
-
- TTime mrStartTime = aEntry.StartTimeL().TimeLocalL();
- TTime mrEndTime = aEntry.EndTimeL().TimeLocalL();
-
- TBuf<KTimeStringLength> startTimeStr, endTimeStr;
- TBuf<KDateStringLength> startDateStr, endDateStr;
-
- mrStartTime.FormatL( startTimeStr, *timeFormatString );
- mrStartTime.FormatL( startDateStr, *dateFormatString );
- mrEndTime.FormatL( endTimeStr, *timeFormatString );
- mrEndTime.FormatL( endDateStr, *dateFormatString );
-
- CleanupStack::PopAndDestroy( 2, dateFormatString );
-
- HBufC* subject =
- StringLoader::LoadLC(R_QTN_MEET_REQ_PLAIN_TEXT_SUBJECT);
-
- HBufC* location =
- StringLoader::LoadLC(R_QTN_MEET_REQ_PLAIN_TEXT_LOCATION);
-
- HBufC* startTime =
- StringLoader::LoadLC(R_QTN_MEET_REQ_PLAIN_TEXT_START_TIME);
-
- HBufC* endTime =
- StringLoader::LoadLC(R_QTN_MEET_REQ_PLAIN_TEXT_END_TIME);
-
- HBufC* description =
- StringLoader::LoadLC(R_QTN_MEET_REQ_PLAIN_TEXT_DESCRIPTION);
-
- HBufC* details =
- HBufC::NewLC( subject->Length() +
- location->Length() +
- startTime->Length() +
- endTime->Length() +
- description->Length() +
- aEntry.SummaryL().Length() +
- aEntry.LocationL().Length() +
- aEntry.DescriptionL().Length() +
- KNewLine().Length() * KNewLinesNeeded +
- KTimeStringLength * 2 + // start and end time
- KDateStringLength * 2 + // start and end date
- KWhiteSpace().Length() * 2 ); // start and end date times
-
- TPtr detailsPtr( details->Des() );
-
- detailsPtr.Append( *subject );
- detailsPtr.Append( aEntry.SummaryL() );
- detailsPtr.Append( KNewLine );
-
- detailsPtr.Append( *location );
- detailsPtr.Append( aEntry.LocationL() );
- detailsPtr.Append( KNewLine );
-
- detailsPtr.Append( *startTime );
- detailsPtr.Append( startDateStr );
- detailsPtr.Append( KWhiteSpace );
- detailsPtr.Append( startTimeStr );
- detailsPtr.Append( KNewLine );
-
- detailsPtr.Append( *endTime );
- detailsPtr.Append( endDateStr );
- detailsPtr.Append( KWhiteSpace );
- detailsPtr.Append( endTimeStr );
- detailsPtr.Append( KNewLine );
-
- detailsPtr.Append( *description );
- detailsPtr.Append( aEntry.DescriptionL() );
- detailsPtr.Append( KNewLine );
-
- CleanupStack::Pop( details );
-
- // subject, location, startTime, endTime, description
- CleanupStack::PopAndDestroy( 5, subject );
-
- CleanupStack::PushL( details );
- return details;
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::Body8LC
-// ---------------------------------------------------------------------------
-//
-HBufC8* CESMRMailPlainTextFormatter::Body8LC(
- CCalEntry& aEntry )
- {
- FUNC_LOG;
- HBufC* buf16 = Body16LC( aEntry );
- HBufC8* buf8 = HBufC8::NewLC( buf16->Length() );
- TPtr8 ptr8( buf8->Des() );
-
- TInt err = CnvUtfConverter::ConvertFromUnicodeToUtf8( ptr8, *buf16 );
- User::LeaveIfError( err );
- CleanupStack::Pop( buf8 );
- CleanupStack::PopAndDestroy( buf16 );
- CleanupStack::PushL( buf8 );
- return buf8;
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::Subject16LC
-// ---------------------------------------------------------------------------
-//
-HBufC* CESMRMailPlainTextFormatter::Subject16LC(
- CCalEntry& aEntry,
- TBool aIsForwarded,
- TBool aIsUpdate )
- {
- FUNC_LOG;
- CESMRCalUserUtil* caluserUtil = CESMRCalUserUtil::NewLC( aEntry );
- TESMRRole role = caluserUtil->PhoneOwnerRoleL();
- CleanupStack::PopAndDestroy( caluserUtil );
-
- // create prefix for subject:
- HBufC* prefix = SubjectLinePrefix16LC(
- aEntry,
- aIsForwarded,
- aIsUpdate ); //if returns NULL no need to CleanupStack::Pop later
-
- // user's email address is attached to subject if user is
- // responding to meeting request:
- HBufC* responseAddress = KNullDesC().AllocLC();
- if ( !aIsForwarded )
- {
- if ( EESMRRoleRequiredAttendee == role ||
- EESMRRoleOptionalAttendee == role ||
- EESMRRoleNonParticipant == role )
- {
- CleanupStack::PopAndDestroy( responseAddress );
- responseAddress = NULL;
-
- CCalUser* phoneOwner = aEntry.PhoneOwnerL();
- responseAddress = phoneOwner->Address().AllocLC();
- }
- }
-
- // count the subject line buffer length
- TInt subjectLineLength( aEntry.SummaryL().Length() );
-
- if (prefix)
- {
- subjectLineLength += prefix->Length();
- }
-
- if (responseAddress)
- {
- subjectLineLength += responseAddress->Length();
- }
-
- // create and fill the subject buffer
- HBufC* subjectLine =
- HBufC::NewLC( subjectLineLength );
- TPtr ptrSubject( subjectLine->Des() );
-
- if (responseAddress)
- {
- ptrSubject.Append(*responseAddress);
- }
-
- if (prefix)
- {
- ptrSubject.Copy( *prefix );
- }
-
- ptrSubject.Append( aEntry.SummaryL() );
-
- CleanupStack::Pop( subjectLine );
-
- if (prefix)
- {
- CleanupStack::PopAndDestroy( 2, prefix ); // responseAddress
- }
- else
- {
- CleanupStack::PopAndDestroy( responseAddress );
- }
- CleanupStack::PushL( subjectLine );
- return subjectLine;
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::Subject8LC
-// ---------------------------------------------------------------------------
-//
-HBufC8* CESMRMailPlainTextFormatter::Subject8LC(
- CCalEntry& aEntry,
- TBool aIsForwarded,
- TBool aIsUpdate )
- {
- FUNC_LOG;
- HBufC* buf16 = Subject16LC( aEntry, aIsForwarded, aIsUpdate );
- HBufC8* buf8 = HBufC8::NewLC( buf16->Length() );
- TPtr8 ptr8(buf8->Des() );
-
- TInt err = CnvUtfConverter::ConvertFromUnicodeToUtf8( ptr8, *buf16 );
- User::LeaveIfError( err );
- CleanupStack::Pop( buf8 );
- CleanupStack::PopAndDestroy( buf16 );
- CleanupStack::PushL( buf8 );
- return buf8;
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::SubjectLinePrefix16LC
-// ---------------------------------------------------------------------------
-//
-HBufC* CESMRMailPlainTextFormatter::SubjectLinePrefix16LC(
- CCalEntry& aEntry,
- TBool aIsForwarded,
- TBool aIsUpdate )
- {
- FUNC_LOG;
- HBufC* prefix = NULL;
-
- CESMRCalUserUtil* caluserUtil = CESMRCalUserUtil::NewLC( aEntry );
- TESMRRole role = caluserUtil->PhoneOwnerRoleL();
- CleanupStack::PopAndDestroy( caluserUtil );
- caluserUtil = NULL;
-
- if ( EESMRRoleOrganizer == role )
- {
- CCalEntry::TMethod method = aEntry.MethodL();
- if ( CCalEntry::EMethodCancel == method )
- {
- prefix =
- StringLoader::LoadLC( R_QTN_MEET_REQ_PLAIN_TEXT_CANCELLED );
- }
- else if ( CCalEntry::EMethodRequest == method &&
- (aIsUpdate || aIsForwarded) )
- {
- prefix =
- StringLoader::LoadLC( R_QTN_MEET_REQ_PLAIN_TEXT_UPDATE );
- }
- else
- {
- prefix =
- KNullDesC().AllocLC();
- }
- }
-
- else if ( EESMRRoleRequiredAttendee == role ||
- EESMRRoleOptionalAttendee == role ||
- EESMRRoleNonParticipant == role )
- {
- CCalAttendee* attendee =
- iMailboxUtils.ThisAttendeeL( aEntry );
-
- if ( attendee )
- {
- switch( attendee->StatusL() )
- {
- case CCalAttendee::EAccepted:
- prefix =
- StringLoader::LoadLC(
- R_QTN_MEET_REQ_PLAIN_TEXT_ACCEPTED );
- break;
- case CCalAttendee::ETentative:
- prefix =
- StringLoader::LoadLC(
- R_QTN_MEET_REQ_PLAIN_TEXT_TENTATIVE );
- break;
- case CCalAttendee::EDeclined:
- prefix =
- StringLoader::LoadLC(
- R_QTN_MEET_REQ_PLAIN_TEXT_DECLINED );
- break;
- default:
- prefix =
- KNullDesC().AllocLC();
- break;
- }
- }
- else
- {
- prefix =
- KNullDesC().AllocLC();
- }
- }
- return prefix;
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::UpdatedStringLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CESMRMailPlainTextFormatter::UpdatedStringLC()
- {
- FUNC_LOG;
- HBufC* updatedString =
- StringLoader::LoadLC( R_QTN_MEET_REQ_PLAIN_TEXT_UPDATE );
-
- return updatedString;
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::CanceledStringLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CESMRMailPlainTextFormatter::CanceledStringLC()
- {
- FUNC_LOG;
- HBufC* canceledString =
- StringLoader::LoadLC( R_QTN_MEET_REQ_PLAIN_TEXT_CANCELLED );
-
- return canceledString;
- }
-
-// ---------------------------------------------------------------------------
-// CESMRMailPlainTextFormatter::ReplyStringLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CESMRMailPlainTextFormatter::ReplyStringLC( CCalEntry& aEntry )
- {
- FUNC_LOG;
- HBufC* replyString = NULL;
- HBufC* replyStringPrefix =
- StringLoader::LoadLC( R_QTN_MEET_REQ_VIEWER_SUBJECT_PREFIX_REPL );
-
- TPtrC subject( aEntry.SummaryL() );
-
- TInt pos = subject.Find( *replyStringPrefix );
- if ( KErrNotFound == pos || KFirstPos != pos )
- {
- // There is no reply prefix already or reply prefix is not at the
- // beginning --> We need to add it to description
-
- // No need to put into cleanupstack because calling only non leaving
- // functions before exiting
- replyString = HBufC::NewL(
- replyStringPrefix->Length() + subject.Length() );
-
- TPtr ptrReply( replyString->Des() );
-
- ptrReply.Copy( *replyStringPrefix );
- ptrReply.Append( subject );
- }
- else
- {
- replyString = subject.AllocL();
- }
-
- CleanupStack::PopAndDestroy( replyStringPrefix );
- CleanupStack::PushL( replyString );
-
- return replyString;
- }
-
-// EOF