diff -r 8466d47a6819 -r 12c456ceeff2 emailuis/emailui/src/FreestyleMessageHeaderHTML.cpp
--- a/emailuis/emailui/src/FreestyleMessageHeaderHTML.cpp Thu Dec 17 08:39:21 2009 +0200
+++ b/emailuis/emailui/src/FreestyleMessageHeaderHTML.cpp Thu Jan 07 12:38:38 2010 +0200
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -46,7 +46,6 @@
_LIT8( KBccFieldName, "bcc_field");
_LIT8( KSentFieldName, "sent_field");
_LIT8( KSubjectFieldName, "subject_field");
-_LIT8( KAttachmentFieldName, "attachment_field");
_LIT8( KToImageName, "to_img");
_LIT8( KCcImageName, "cc_img");
@@ -58,34 +57,36 @@
_LIT8( KSpace8, " ");
_LIT8( KMetaHeader, "\n" );
-const TInt KMaxEventLength = 256;
+const TInt KMaxEventLength( 256 );
+const TInt KFreestyleMessageHeaderHTMLRightMarginInPx( 10 );
+const TInt KFreestyleMessageHeaderHTMLMaxBufferSizeForWidth( 5 );
-EXPORT_C CFreestyleMessageHeaderHTML* CFreestyleMessageHeaderHTML::NewL( CFSMailMessage& aMailMessage )
+EXPORT_C CFreestyleMessageHeaderHTML* CFreestyleMessageHeaderHTML::NewL( CFSMailMessage& aMailMessage, TInt aVisibleWidth )
{
- CFreestyleMessageHeaderHTML* self = new (ELeave) CFreestyleMessageHeaderHTML( aMailMessage );
+ CFreestyleMessageHeaderHTML* self = new (ELeave) CFreestyleMessageHeaderHTML( aMailMessage, aVisibleWidth );
self->ConstructL();
return self;
}
-EXPORT_C void CFreestyleMessageHeaderHTML::ExportL( CFSMailMessage& aMailMessage, RWriteStream& aWriteStream )
+EXPORT_C void CFreestyleMessageHeaderHTML::ExportL( CFSMailMessage& aMailMessage, RWriteStream& aWriteStream, TInt aVisibleWidth )
{
- CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage );
+ CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, aVisibleWidth );
CleanupStack::PushL( headerHtml );
headerHtml->ExportL( aWriteStream );
CleanupStack::PopAndDestroy( headerHtml );
}
-EXPORT_C void CFreestyleMessageHeaderHTML::ExportL( CFSMailMessage& aMailMessage, RFile& aFile )
+EXPORT_C void CFreestyleMessageHeaderHTML::ExportL( CFSMailMessage& aMailMessage, RFile& aFile, TInt aVisibleWidth )
{
- CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage );
+ CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, aVisibleWidth );
CleanupStack::PushL( headerHtml );
headerHtml->ExportL( aFile );
CleanupStack::PopAndDestroy( headerHtml );
}
-EXPORT_C void CFreestyleMessageHeaderHTML::ExportL( CFSMailMessage& aMailMessage, RFs& aFs, const TPath& aFilePath)
+EXPORT_C void CFreestyleMessageHeaderHTML::ExportL( CFSMailMessage& aMailMessage, RFs& aFs, const TPath& aFilePath, TInt aVisibleWidth )
{
- CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage );
+ CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, aVisibleWidth );
CleanupStack::PushL( headerHtml );
headerHtml->ExportL( aFs, aFilePath );
CleanupStack::PopAndDestroy( headerHtml );
@@ -122,11 +123,12 @@
CleanupStack::PopAndDestroy( &fwstream );
}
-CFreestyleMessageHeaderHTML::CFreestyleMessageHeaderHTML( CFSMailMessage& aMailMessage )
+CFreestyleMessageHeaderHTML::CFreestyleMessageHeaderHTML( CFSMailMessage& aMailMessage, TInt aVisibleWidth )
: iMailMessage( aMailMessage )
{
- }
-
+ iVisibleWidth = aVisibleWidth - KFreestyleMessageHeaderHTMLRightMarginInPx;
+ }
+
void CFreestyleMessageHeaderHTML::ConstructL()
{
iMailMessage.AttachmentListL( iAttachments );
@@ -184,10 +186,10 @@
ExportToL( aWriteStream );
ExportCcL( aWriteStream );
ExportBccL( aWriteStream );
- ExportAttachmentsL( aWriteStream );
ExportSentTimeL( aWriteStream );
ExportSubjectL( aWriteStream );
EndHeaderTableL( aWriteStream );
+ ExportAttachmentsL( aWriteStream );
HTMLBodyEndL( aWriteStream );
}
@@ -198,14 +200,24 @@
}
void CFreestyleMessageHeaderHTML::ExportInitialTableL( RWriteStream& aWriteStream ) const
{
- aWriteStream.WriteL(_L8("
\n"));
- aWriteStream.WriteL(_L8("\n"));
+
+ // set the width, using the visible screen width
+ TBuf8 tableWidth;
+ tableWidth.AppendNum( iVisibleWidth );
+ aWriteStream.WriteL(_L8("\n"));
+
- // Add "show details" image
- aWriteStream.WriteL(_L8(" | \n"));
-
- //Sent time
- aWriteStream.WriteL(_L8(""));
+ // start first row: table with the sent info and the '+' icon
+ aWriteStream.WriteL(_L8(" | \n"));
+
+ aWriteStream.WriteL(_L8("\n"));
+
+ // add Sent time and date
+ aWriteStream.WriteL(_L8(""));
HBufC* dateText = TFsEmailUiUtility::DateTextFromMsgLC( &iMailMessage );
HBufC* timeText = TFsEmailUiUtility::TimeTextFromMsgLC( &iMailMessage );
@@ -223,29 +235,32 @@
CleanupStack::PopAndDestroy( sentTimeText );
CleanupStack::PopAndDestroy( timeText );
CleanupStack::PopAndDestroy( dateText );
-
- aWriteStream.WriteL(_L8(" | \n \n"));
- aWriteStream.WriteL(_L8("\n"));
+
+ aWriteStream.WriteL(_L8("\n"));
+
+ // add "show details" image on the same line as Sent time and date
+ aWriteStream.WriteL(_L8(" | \n"));
+
+ // finish first row
+ aWriteStream.WriteL(_L8(" \n"));
+ aWriteStream.WriteL(_L8(" |
\n"));
- if ( iAttachments.Count() > 0 )
- {
- aWriteStream.WriteL(_L8(" | \n"));
- }
- else
- {
- aWriteStream.WriteL(_L8(" | \n"));
- }
- aWriteStream.WriteL(_L8(""));
- //Subject
+ //=============================
+ // start second row which contains subject
+ aWriteStream.WriteL(_L8("\n"));
+ aWriteStream.WriteL(_L8(""));
+
HBufC8* subject8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( iMailMessage.GetSubject() );
CleanupStack::PushL( subject8 );
aWriteStream.WriteL( *subject8 );
CleanupStack::PopAndDestroy( subject8 );
- aWriteStream.WriteL(_L8(" | \n \n |
\n"));
-
+ aWriteStream.WriteL(_L8("\n"));
+ aWriteStream.WriteL(_L8("
\n")); // finish subject row
+
+ // end table_initial
+ aWriteStream.WriteL(_L8("
\n"));
+
aWriteStream.CommitL();
}
void CFreestyleMessageHeaderHTML::HTMLBodyEndL( RWriteStream& aWriteStream ) const
@@ -258,7 +273,7 @@
{
aWriteStream.WriteL( _L8("\n") );
+ aWriteStream.WriteL( _L8("\">") );
aWriteStream.WriteL( _L8("") );
@@ -267,9 +282,11 @@
aWriteStream.WriteL( *subjectHeadingText );
CleanupStack::PopAndDestroy( subjectHeadingText );
aWriteStream.WriteL( _L8("") );
- aWriteStream.WriteL( _L8(" | \n") );
+ aWriteStream.WriteL( _L8("") );
aWriteStream.WriteL( _L8("
\n") );
- aWriteStream.WriteL( _L8("\n") );
+
+ // subject text
+ aWriteStream.WriteL( _L8("
") );
aWriteStream.WriteL( _L8("") );
HBufC8* subject8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( iMailMessage.GetSubject() );
@@ -277,8 +294,7 @@
aWriteStream.WriteL( *subject8 );
CleanupStack::PopAndDestroy( subject8 );
- aWriteStream.WriteL( _L8(" | \n") );
-
+ aWriteStream.WriteL( _L8("") );
aWriteStream.WriteL( _L8("
\n") );
aWriteStream.CommitL();
@@ -293,26 +309,30 @@
{
froms.AppendL( from );
}
- ExportEmailAddressesL(aWriteStream, FreestyleMessageHeaderURLFactory::EEmailAddressTypeFrom, froms );
+ ExportEmailAddressesL( aWriteStream, FreestyleMessageHeaderURLFactory::EEmailAddressTypeFrom, froms,
+ KFromFieldName, KFromTableName, R_FREESTYLE_EMAIL_UI_VIEWER_FROM );
CleanupStack::PopAndDestroy( &froms );
}
void CFreestyleMessageHeaderHTML::ExportToL( RWriteStream& aWriteStream ) const
{
RPointerArray& recipients = iMailMessage.GetToRecipients();
- ExportEmailAddressesL( aWriteStream, FreestyleMessageHeaderURLFactory::EEmailAddressTypeTo, recipients );
+ ExportEmailAddressesL( aWriteStream, FreestyleMessageHeaderURLFactory::EEmailAddressTypeTo, recipients,
+ KToFieldName, KToTableName, R_FREESTYLE_EMAIL_UI_VIEWER_TO );
}
void CFreestyleMessageHeaderHTML::ExportCcL( RWriteStream& aWriteStream ) const
{
RPointerArray& recipients = iMailMessage.GetCCRecipients();
- ExportEmailAddressesL( aWriteStream, FreestyleMessageHeaderURLFactory::EEmailAddressTypeCc, recipients );
+ ExportEmailAddressesL( aWriteStream, FreestyleMessageHeaderURLFactory::EEmailAddressTypeCc, recipients,
+ KCcFieldName, KCcTableName, R_FREESTYLE_EMAIL_UI_VIEWER_CC );
}
void CFreestyleMessageHeaderHTML::ExportBccL( RWriteStream& aWriteStream ) const
{
RPointerArray& recipients = iMailMessage.GetBCCRecipients();
- ExportEmailAddressesL( aWriteStream, FreestyleMessageHeaderURLFactory::EEmailAddressTypeBcc, recipients );
+ ExportEmailAddressesL( aWriteStream, FreestyleMessageHeaderURLFactory::EEmailAddressTypeBcc, recipients,
+ KBccFieldName, KBccTableName, R_FREESTYLE_EMAIL_UI_VIEWER_BCC );
}
void CFreestyleMessageHeaderHTML::ExportSentTimeL( RWriteStream& aWriteStream ) const
@@ -320,7 +340,7 @@
aWriteStream.WriteL( _L8("\n") );
+ aWriteStream.WriteL( _L8("\">") );
aWriteStream.WriteL( _L8("") );
@@ -329,10 +349,10 @@
aWriteStream.WriteL( *sentHeadingText );
CleanupStack::PopAndDestroy( sentHeadingText );
aWriteStream.WriteL( _L8("") );
- aWriteStream.WriteL( _L8(" | \n") );
+ aWriteStream.WriteL( _L8("") );
aWriteStream.WriteL( _L8("
\n") );
- aWriteStream.WriteL( _L8("\n") );
+ aWriteStream.WriteL( _L8("
") );
aWriteStream.WriteL( _L8("") );
HBufC* dateText = TFsEmailUiUtility::DateTextFromMsgLC( &iMailMessage );
@@ -352,7 +372,7 @@
CleanupStack::PopAndDestroy( timeText );
CleanupStack::PopAndDestroy( dateText );
- aWriteStream.WriteL( _L8(" | \n") );
+ aWriteStream.WriteL( _L8("") );
aWriteStream.WriteL( _L8("
\n") );
@@ -361,150 +381,77 @@
void CFreestyleMessageHeaderHTML::ExportAttachmentsL( RWriteStream& aWriteStream ) const
{
- if ( iAttachments.Count() > 0 )
+
+ TInt attachmentsCount( iAttachments.Count() );
+ if ( attachmentsCount )
{
- aWriteStream.WriteL( _L8("\n") );
-
- aWriteStream.WriteL( _L8("") );
- aWriteStream.WriteL( _L8("") );
+ // The attachments table consists of one row that contains 2 cells
+ // first cell contains the attachment icon
+ // second cell contains a table which contains the attachments list
- HBufC8* attachmentHeadingText = HeadingTextLC( R_FREESTYLE_EMAIL_UI_VIEWER_ATTACHMENT, iAttachments.Count());
- aWriteStream.WriteL( *attachmentHeadingText );
- CleanupStack::PopAndDestroy( attachmentHeadingText );
-
-
- aWriteStream.WriteL( _L8(":") );
- aWriteStream.WriteL( _L8(" | \n") );
- aWriteStream.WriteL( _L8("
\n") );
-
-
+ // start attachments table
+ aWriteStream.WriteL( _L8("\n") ); // width is set at 100% intentionally
+
+ // start row
+ aWriteStream.WriteL( _L8("\n") );
+
+ // add attachment icon
+ aWriteStream.WriteL( _L8(" | \n") );
+
+ // start table of attachments as a table within a cell
aWriteStream.WriteL( _L8("\n") );
- StartTableL( aWriteStream, KAttachmentTableName );
- for (TInt i=0; i\n"));
+ for (TInt i=0; i < attachmentsCount; i++)
{
AddAttachmentL( aWriteStream, *iAttachments[i] );
}
- EndTableL( aWriteStream );
+
+ aWriteStream.WriteL(_L8(" |
\n")); // end table_attachments_list
aWriteStream.WriteL( _L8("\n") );
-
+
aWriteStream.WriteL( _L8("\n") );
+ aWriteStream.WriteL(_L8("\n")); // end attachments table
}
}
-void CFreestyleMessageHeaderHTML::ExportEmailAddressesL( RWriteStream& aWriteStream,
- FreestyleMessageHeaderURLFactory::TEmailAddressType aEmailAddressType,
- const RPointerArray& aEmailAddresses ) const
+void CFreestyleMessageHeaderHTML::ExportEmailAddressesL( RWriteStream& aWriteStream,
+ FreestyleMessageHeaderURLFactory::TEmailAddressType aEmailAddressType,
+ const RPointerArray& aEmailAddresses,
+ const TDesC8& aRowId,
+ const TDesC8& /*aTableId*/,
+ TInt aHeaderTextResourceId ) const
{
- if (aEmailAddresses.Count() == 0)
- {
- return;
- }
-
- aWriteStream.WriteL( _L8("\n") );
-
-
- aWriteStream.WriteL( _L8("") );
- aWriteStream.WriteL( _L8("") );
-
- switch ( aEmailAddressType )
- {
- case FreestyleMessageHeaderURLFactory::EEmailAddressTypeFrom:
+ // begin table row
+ aWriteStream.WriteL( _L8("") );
+
+ // heading text
+ aWriteStream.WriteL( _L8(""));
+ HBufC8* headingText = HeadingTextLC( aHeaderTextResourceId );
+ aWriteStream.WriteL( *headingText );
+ CleanupStack::PopAndDestroy( headingText );
+ aWriteStream.WriteL( _L8(" | "));
+
+ aWriteStream.WriteL( _L8(" \n") ); // end table row
+
+ // add addresses, one address per row
+ TInt count( aEmailAddresses.Count() );
+ for (TInt i = 0; i < count; ++i )
{
- HBufC8* fromHeadingText = HeadingTextLC( R_FREESTYLE_EMAIL_UI_VIEWER_FROM );
- aWriteStream.WriteL( *fromHeadingText );
- CleanupStack::PopAndDestroy( fromHeadingText );
+ aWriteStream.WriteL( _L8("") );
+ AddEmailAddressL (aWriteStream, aEmailAddressType, *aEmailAddresses[i] );
+ aWriteStream.WriteL( _L8(" | \n") );
}
- break;
-
- case FreestyleMessageHeaderURLFactory::EEmailAddressTypeTo:
- {
- HBufC8* toHeadingText = HeadingTextLC( R_FREESTYLE_EMAIL_UI_VIEWER_TO );
- aWriteStream.WriteL( *toHeadingText );
- CleanupStack::PopAndDestroy( toHeadingText );
- }
- break;
- case FreestyleMessageHeaderURLFactory::EEmailAddressTypeCc:
- {
- HBufC8* ccHeadingText = HeadingTextLC( R_FREESTYLE_EMAIL_UI_VIEWER_CC );
- aWriteStream.WriteL( *ccHeadingText );
- CleanupStack::PopAndDestroy( ccHeadingText );
- }
- break;
-
- case FreestyleMessageHeaderURLFactory::EEmailAddressTypeBcc:
- {
- HBufC8* bccHeadingText = HeadingTextLC( R_FREESTYLE_EMAIL_UI_VIEWER_BCC );
- aWriteStream.WriteL( *bccHeadingText );
- CleanupStack::PopAndDestroy( bccHeadingText );
- }
- break;
-
- default:
- User::Leave( KErrNotSupported );
+ aWriteStream.CommitL();
}
- aWriteStream.WriteL( _L8("") );
- aWriteStream.WriteL( _L8(" | \n") );
- aWriteStream.WriteL( _L8("
\n") );
-
- aWriteStream.WriteL( _L8("\n") );
- aWriteStream.WriteL( _L8("") );
-
- switch ( aEmailAddressType )
- {
- case FreestyleMessageHeaderURLFactory::EEmailAddressTypeTo:
- StartTableL( aWriteStream, KToTableName );
- break;
-
- case FreestyleMessageHeaderURLFactory::EEmailAddressTypeCc:
- StartTableL( aWriteStream, KCcTableName );
- break;
-
- case FreestyleMessageHeaderURLFactory::EEmailAddressTypeBcc:
- StartTableL( aWriteStream, KBccTableName );
- break;
- case FreestyleMessageHeaderURLFactory::EEmailAddressTypeFrom:
- StartTableL( aWriteStream, KFromTableName );
- break;
-
- default:
- User::Leave( KErrNotSupported );
- }
- for ( TInt i=0; i") );
- AddEmailAddressL (aWriteStream, aEmailAddressType, *aEmailAddresses[i] );
- aWriteStream.WriteL( _L8(" | |
\n") );
- }
-
- EndTableL( aWriteStream );
- aWriteStream.WriteL( _L8("\n") );
- aWriteStream.WriteL( _L8("\n") );
- aWriteStream.CommitL();
}
void CFreestyleMessageHeaderHTML::AddEmailAddressL( RWriteStream& aWriteStream,
@@ -542,7 +489,7 @@
void CFreestyleMessageHeaderHTML::AddAttachmentL( RWriteStream& aWriteStream, CFSMailMessagePart& aAttachment ) const
{
- aWriteStream.WriteL( _L8("") );
+ aWriteStream.WriteL( _L8(" |
") ); // pad bottom to allow some space between the lines
TUint id = aAttachment.GetPartId().Id();
TBuf<32> itemId;
@@ -568,10 +515,10 @@
TUint sizeInKB = size / 1024;
if ( size % 1024 )
- {
- // round up
- ++sizeInKB;
- }
+ {
+ // round up
+ ++sizeInKB;
+ }
TBuf8<32> sizeText;
sizeText.Append( KSpace8 );
@@ -639,12 +586,21 @@
aWriteStream.WriteL( aTableId );
// use style="display:none" so that full header table is hidden initially
- aWriteStream.WriteL( _L8("\" border=\"0\" width=\"50%\" style=\"display: none\">\n") );
+ aWriteStream.WriteL( _L8("\" border=\"0\" width=\"100%\" style=\"display: none\">\n") );
+
- // Add "hide details" image
- aWriteStream.WriteL(_L8(" |
\n"));
- aWriteStream.WriteL(_L8(" | \n"));
- aWriteStream.WriteL(_L8("
\n"));
+ TBuf8 tableWidth;
+ tableWidth.AppendNum( iVisibleWidth );
+
+ // Add "hide details" image as its own table with its own width
+ aWriteStream.WriteL( _L8("\n"));
+ aWriteStream.WriteL(_L8("\n"));
+ aWriteStream.WriteL( _L8("\n"));
+ aWriteStream.WriteL( _L8(" | \n"));
+ aWriteStream.WriteL( _L8(" \n"));
+ aWriteStream.WriteL( _L8(" |
\n"));
aWriteStream.CommitL();
}
@@ -780,3 +736,6 @@
aWriteStream.WriteL( _L8("\n") );
aWriteStream.CommitL();
}
+
+
+