# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1273582635 -10800 # Node ID e8f259fad1419c63b53a7e13b6f6d6fce74b050e # Parent e64954c2c8e26c18bf2ab861065318820557f396 Revision: 201017 Kit: 201019 diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailclientapi/src/emailfolder.cpp --- a/emailservices/emailclientapi/src/emailfolder.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailclientapi/src/emailfolder.cpp Tue May 11 15:57:15 2010 +0300 @@ -178,11 +178,13 @@ const CFSMailFolder* fsfolder = folders[i]; const TEntryId id = fsfolder->GetFolderId().Id(); const TFolderId folderId( id, iFolderId.iMailboxId.iId ); - MEmailFolder* folder = CEmailFolder::NewL( iPluginData, folderId, folders[i]); + MEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i]); aSubfolders.AppendL( folder ); + CleanupStack::Pop( folder ); // asubfolders took ownership + folders[i] = NULL; } - CleanupStack::Pop(); // folders - folders.Close(); + CleanupStack::Pop( &folders ); // folders + folders.Close(); // aSubfolders took ownership return res; } diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailclientapi/src/emailmailbox.cpp --- a/emailservices/emailclientapi/src/emailmailbox.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailclientapi/src/emailmailbox.cpp Tue May 11 15:57:15 2010 +0300 @@ -243,7 +243,11 @@ EFSMsgDataEnvelope); CleanupStack::PushL( fsMessage ); - CEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); + + CEmailMessage* message = NULL; + + if ( fsMessage ) + message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); CleanupStack::Pop(); // fsMessage return message; diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailclientapi/src/emailmessage.cpp --- a/emailservices/emailclientapi/src/emailmessage.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailclientapi/src/emailmessage.cpp Tue May 11 15:57:15 2010 +0300 @@ -505,12 +505,12 @@ RPointerArray parts; CleanupResetAndDestroyPushL( parts ); - iPluginMessage->ChildPartsL(parts); + iPluginMessage->ChildPartsL( parts ); TInt count( parts.Count() ); if( count == 0 ) { /* No content, return NULL */ - CleanupStack::Pop(); // parts + CleanupStack::PopAndDestroy( &parts ); // in case heap allocated but not used return NULL; } CFSMailMessagePart* part = parts[0]; @@ -524,7 +524,8 @@ if ( contentType.Equals( KFSMailContentTypeTextPlain ) || contentType.Equals( KFSMailContentTypeTextHtml ) ) { - iTextContent = CEmailTextContent::NewL(iPluginData, msgContentId, part, EAPIOwns ); + iTextContent = CEmailTextContent::NewL(iPluginData, msgContentId, part, EAPIOwns ); + parts[0] = NULL; // ownership of part transferred } else if ( contentType.Equals( KFSMailContentTypeMultipartMixed ) || contentType.Equals( KFSMailContentTypeMultipartAlternative ) || @@ -533,13 +534,10 @@ contentType.Equals( KFSMailContentTypeMultipartParallel ) ) { iContent = CEmailMultipart::NewL(iPluginData, msgContentId, part, EAPIOwns); + parts[0] = NULL; // ownership of part transferred } - if ( count == 2 ) - { - CFSMailMessagePart* part = parts[1]; - const TDesC& contentType = part->GetContentType(); - } - CleanupStack::Pop(); // parts + + CleanupStack::PopAndDestroy( &parts ); // parts if (iTextContent) { diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailclientapi/src/emailmessagesearch.cpp --- a/emailservices/emailclientapi/src/emailmessagesearch.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailclientapi/src/emailmessagesearch.cpp Tue May 11 15:57:15 2010 +0300 @@ -226,6 +226,7 @@ iObserver = &aObserver; const TFSMailMsgId fsMailboxId( iPluginData.Uid(), iMailboxId.iId ); RArray folderIds; + CleanupClosePushL( folderIds ); /** Search API */ @@ -263,6 +264,7 @@ *this ); // Gate is kept closed as search is asynchronous. Gate will be reopen after search is completed, i.e. // CEmailMessageSearchAsync::SearchCompleted. + CleanupStack::PopAndDestroy( &folderIds ); } /** @@ -359,7 +361,7 @@ /** * Asks client if search engine should change search priority */ -void CEmailMessageSearchAsync::ClientRequiredSearchPriority(TInt *apRequiredSearchPriority) +void CEmailMessageSearchAsync::ClientRequiredSearchPriority(TInt * /* apRequiredSearchPriority */ ) { return; } diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailframework/commonlib/src/CFSMailBox.cpp --- a/emailservices/emailframework/commonlib/src/CFSMailBox.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailframework/commonlib/src/CFSMailBox.cpp Tue May 11 15:57:15 2010 +0300 @@ -439,7 +439,7 @@ // remove outbox, drafts folder from folder list RArray folderIds; - folderIds.Reset(); + CleanupClosePushL( folderIds ); for(TInt i=0;iGetFolderId(); @@ -451,7 +451,7 @@ // start search plugin->SearchL( GetId(), folderIds, aSearchStrings, aSortCriteria, aSearchObserver ); - folderIds.Reset(); + CleanupStack::PopAndDestroy( &folderIds ); } } diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailframework/commonlib/src/CFSMailMessagePart.cpp --- a/emailservices/emailframework/commonlib/src/CFSMailMessagePart.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailframework/commonlib/src/CFSMailMessagePart.cpp Tue May 11 15:57:15 2010 +0300 @@ -402,16 +402,19 @@ if(plugin != NULL) { RPointerArray parts; - RArray partIds; - plugin->ChildPartsL(GetMailBoxId(),GetFolderId(),GetMessageId(),GetPartId(),parts); + CleanupResetAndDestroyPushL( parts ); + plugin->ChildPartsL(GetMailBoxId(),GetFolderId(),GetMessageId(),GetPartId(),parts); + RArray partIds; + CleanupClosePushL( partIds ); + partIds.ReserveL( 1 + parts.Count() ); for(TInt i=0;iGetMessageId()); + partIds.AppendL( parts[i]->GetMessageId() ); } - partIds.Append(GetPartId()); + partIds.AppendL( GetPartId() ); plugin->RemovePartContentL(GetMailBoxId(), GetFolderId(), GetMessageId(), partIds); - parts.ResetAndDestroy(); - partIds.Reset(); + CleanupStack::PopAndDestroy( &partIds ); + CleanupStack::PopAndDestroy( &parts ); } } @@ -432,12 +435,12 @@ { // get attachment list RPointerArray attachments; - attachments.Reset(); + CleanupResetAndDestroyPushL( attachments ); DoAttachmentListL(attachments); // copy attachment part ids RArray ids; - ids.Reset(); + CleanupClosePushL( ids ); for(TInt i=0;iGetPartId()); @@ -450,8 +453,8 @@ } // clean tables - attachments.ResetAndDestroy(); - ids.Reset(); + CleanupStack::PopAndDestroy( &ids ); + CleanupStack::PopAndDestroy( &attachments ); } } diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailframework/data/fsmailbrandmanager.rss --- a/emailservices/emailframework/data/fsmailbrandmanager.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailframework/data/fsmailbrandmanager.rss Tue May 11 15:57:15 2010 +0300 @@ -400,7 +400,6 @@ brand_id_match_strings = { - BRAND_MATCH_STRING { text = "btinternet.com"; }, BRAND_MATCH_STRING { text = "btopenworld.com"; }, BRAND_MATCH_STRING { text = "talk21.com"; } }; @@ -423,6 +422,19 @@ red = 0xff; green = 0x30; blue = 0x20; alpha = 0xff; } }; }, + BRAND { + // Definition of btinternet.com brand with default icon + brand_id_match_strings = + { + BRAND_MATCH_STRING { text = "btinternet.com"; } + }; + + texts = + { + BRANDABLE_TEXT { id = EFSMailboxName; text = "BT Internet"; } + }; + }, + BRAND { // Definition of ... Yahoo! Mail brand diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailframework/src/CFSMailClient.cpp --- a/emailservices/emailframework/src/CFSMailClient.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailframework/src/CFSMailClient.cpp Tue May 11 15:57:15 2010 +0300 @@ -33,24 +33,28 @@ { FUNC_LOG; - CFSMailClient* client = Instance(); - if(!client) - { - client = new (ELeave) CFSMailClient(); - CleanupStack:: PushL(client); - client->ConstructL(aConfiguration); - TInt err = Dll::SetTls(static_cast(client)); - User::LeaveIfError(err); - } - else - { - CleanupStack:: PushL(client); - } + CFSMailClient* client = Instance(); + if( !client ) + { + client = new (ELeave) CFSMailClient(); + // The new client needs to be deleted rather than closed, up until + // the TLS has been set properly. + CleanupStack::PushL( client ); + client->ConstructL( aConfiguration ); + TInt err = Dll::SetTls( static_cast( client )); + User::LeaveIfError( err ); + // Now that the TLS has been set, we no longer want the new client + // to be deleted if there's a problem, so pop it off the cleanup + // stack (it will be pushed back on for closing below). + CleanupStack::Pop( client ); + } - client->IncReferenceCount(); - - return client; - + // Increment reference count before calling CleanupClosePushL so that + // the reference count is correct if CleanupClosePushL leaves. + client->IncReferenceCount(); + CleanupClosePushL( *client ); + + return client; } // ----------------------------------------------------------------------------- diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailserver/cmailhandlerplugin/inc/cmailcpssettings.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpssettings.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpssettings.h Tue May 11 15:57:15 2010 +0300 @@ -293,7 +293,9 @@ // array of mailboxes RArray iMailboxArray; // Internal configuration data - TInt32 iConfigData; + TInt32 iConfigData; + // large buffer for reading cenrep data + TBuf iCenrepText; }; #endif /*CMAILCPSSETTINGS_H_*/ diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp Tue May 11 15:57:15 2010 +0300 @@ -1179,7 +1179,10 @@ void CMailCpsIf::SetUpdateNeeded( const TInt aInstance, const TBool aValue ) { FUNC_LOG; - iInstIdList[aInstance].iUpdateNeeded = aValue; + if ( aInstance >= 0 && aInstance < GetWidgetInstanceCount() ) + { + iInstIdList[aInstance].iUpdateNeeded = aValue; + } } // --------------------------------------------------------------------------- @@ -1189,6 +1192,11 @@ TBool CMailCpsIf::UpdateNeeded( const TInt aInstance ) { FUNC_LOG; - return iInstIdList[aInstance].iUpdateNeeded; + TBool rVal( EFalse ); + if ( aInstance >= 0 && aInstance < GetWidgetInstanceCount() ) + { + rVal = iInstIdList[aInstance].iUpdateNeeded; + } + return rVal; } diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp Tue May 11 15:57:15 2010 +0300 @@ -546,38 +546,43 @@ TInt CMailCpsSettings::GetSettingToAssociate( const TDesC& aContentId ) { FUNC_LOG; - TInt ret(KErrNotFound); + TInt ret( KErrNotFound ); - for (TInt i = 0; i < KMaxMailboxCount; i++) + for ( TInt i = 0; i < KMaxMailboxCount; i++ ) { - TBuf value; - TUint32 key(KCMailWidgetContentIdBase+i); - iCenRep->Get( key, value ); - TInt result = value.Compare(aContentId); - if (!result) + TUint32 key( KCMailWidgetContentIdBase+ i ); + TInt err = iCenRep->Get( key, iCenrepText ); + if ( err == KErrNone ) { - ret = i; - break; - } - } - if (ret < 0 ) - { - for (TInt i = 0; i < KMaxMailboxCount; i++) - { - TBuf value; - TUint32 key(KCMailWidgetContentIdBase+i); - iCenRep->Get( key, value ); - TInt result = value.Compare(KDissociated); - if (!result) + if ( iCenrepText.Compare( aContentId ) == 0 ) { ret = i; break; } } } + + if ( ret < 0 ) + { + for ( TInt i = 0; i < KMaxMailboxCount; i++ ) + { + TUint32 key( KCMailWidgetContentIdBase + i ); + TInt err = iCenRep->Get( key, iCenrepText ); + if ( err == KErrNone ) + { + if ( iCenrepText.Compare( KDissociated ) == 0 ) + { + ret = i; + break; + } + } + } + } + return ret; } + // --------------------------------------------------------------------------- // CMailCpsSettings::Associated // --------------------------------------------------------------------------- @@ -585,20 +590,22 @@ TBool CMailCpsSettings::Associated( const TDesC& aContentId ) { FUNC_LOG; - TBool ret(EFalse); + TBool ret( EFalse ); - for (TInt i = 0; i < KMaxMailboxCount; i++) + for ( TInt i = 0; i < KMaxMailboxCount; i++ ) { - TBuf value; - TUint32 key(KCMailWidgetContentIdBase+i); - iCenRep->Get( key, value ); - TInt result = value.Compare(aContentId); - if (!result) + TUint32 key( KCMailWidgetContentIdBase + i ); + TInt err = iCenRep->Get( key, iCenrepText ); + if ( err == KErrNone ) { - ret = ETrue; - break; + if ( iCenrepText.Compare( aContentId ) == 0 ) + { + ret = ETrue; + break; + } } } + return ret; } @@ -670,30 +677,39 @@ return ret; } + // --------------------------------------------------------------------------- -// CMailCpsSettings::GetSettingToAssociate +// CMailCpsSettings::GetMailboxUidByContentId // --------------------------------------------------------------------------- // TUint CMailCpsSettings::GetMailboxUidByContentId( const TDesC& aContentId ) { FUNC_LOG; - TInt ret(KErrNone); - for (TInt i = 0; i < KMaxMailboxCount; i++) + + TInt ret( KErrNone ); + for ( TInt i = 0; i < KMaxMailboxCount; i++ ) { - TBuf cid; - TUint32 key(KCMailWidgetContentIdBase+i); - iCenRep->Get( key, cid ); - TInt result = cid.Compare(aContentId); - if (!result) + TUint32 key( KCMailWidgetContentIdBase + i ); + TInt err = iCenRep->Get( key, iCenrepText ); + if ( err == KErrNone ) { - TUint32 key2(KCMailMailboxIdBase+i); - iCenRep->Get( key2, ret ); - break; + if ( iCenrepText.Compare( aContentId ) == 0 ) + { + TUint32 key2( KCMailMailboxIdBase + i ); + err = iCenRep->Get( key2, ret ); + if ( err == KErrNone ) + { + break; + } + } } } + return ret; } + + // --------------------------------------------------------------------------- // CMailCpsSettings::GetPluginUidByContentId // --------------------------------------------------------------------------- @@ -701,23 +717,30 @@ TUint CMailCpsSettings::GetPluginUidByContentId( const TDesC& aContentId ) { FUNC_LOG; - TInt ret(KErrNone); - for (TInt i = 0; i < KMaxMailboxCount; i++) + + TInt ret( KErrNone ); + for ( TInt i = 0; i < KMaxMailboxCount; i++ ) { - TBuf cid; - TUint32 key(KCMailWidgetContentIdBase+i); - iCenRep->Get( key, cid ); - TInt result = cid.Compare(aContentId); - if (!result) + TUint32 key( KCMailWidgetContentIdBase + i ); + TInt err = iCenRep->Get( key, iCenrepText ); + if ( err == KErrNone ) { - TUint32 key2(KCMailPluginIdBase+i); - iCenRep->Get( key2, ret ); - break; + if ( iCenrepText.Compare( aContentId ) == 0 ) + { + TUint32 key2( KCMailPluginIdBase + i ); + err = iCenRep->Get( key2, ret ); + if ( err == KErrNone ) + { + break; + } + } } } + return ret; } + // --------------------------------------------------------------------------- // CMailCpsSettings::Configuration // --------------------------------------------------------------------------- @@ -748,68 +771,77 @@ void CMailCpsSettings::ToggleWidgetNewMailIconL( TBool aIconOn, const TFSMailMsgId& aMailBox ) { FUNC_LOG; - TBuf mailbox; - mailbox.Num(aMailBox.Id()); - - TBuf str; - str.Copy(KStartSeparator); - str.Append(mailbox); - str.Append(KEndSeparator); - - TBuf stored; - TUint32 key(KCMailMailboxesWithNewMail); - iCenRep->Get( key, stored ); + + _LIT( KFormat, "%S%d%S" ); + const TInt KStrLen = 64; + + TBuf mailbox; + mailbox.Format( KFormat, &KStartSeparator, aMailBox.Id(), &KEndSeparator ); - TInt result = stored.Find(str); + TUint32 key( KCMailMailboxesWithNewMail ); + TInt err = iCenRep->Get( key, iCenrepText ); + + if ( err == KErrNone ) + { + TInt pos = iCenrepText.Find( mailbox ); - if (aIconOn) - { - if (result < 0) // Not found + if ( aIconOn ) { - stored.Append(str); - iCenRep->Set( key, stored ); + if ( pos < 0 ) // Not found + { + iCenrepText.Append( mailbox ); + iCenRep->Set( key, iCenrepText ); + } } - } - else - { - if (result >= 0) + else { - stored.Delete(result, str.Length()); - iCenRep->Set( key, stored ); + if ( pos >= 0 ) + { + iCenrepText.Delete( pos, mailbox.Length() ); + iCenRep->Set( key, iCenrepText ); + } } } } + + // ----------------------------------------------------------------------------- // CMailCpsSettings::GetNewMailStateL // ----------------------------------------------------------------------------- TBool CMailCpsSettings::GetNewMailStateL( const TFSMailMsgId& aMailBox, TInt aUnreadCount ) { FUNC_LOG; + + _LIT( KFormat, "%S%d%S" ); + const TInt KStrLen = 64; + + TBool ret(EFalse); if ( aUnreadCount ) { - TBuf mailbox; - mailbox.Num(aMailBox.Id()); - - TBuf str; - str.Copy(KStartSeparator); - str.Append(mailbox); - str.Append(KEndSeparator); + TBuf mailbox; + mailbox.Format( KFormat, &KStartSeparator, aMailBox.Id(), &KEndSeparator ); - TBuf stored; - TUint32 key(KCMailMailboxesWithNewMail); - iCenRep->Get( key, stored ); - - TInt result = stored.Find(str); - if (result >= 0) + TUint32 key( KCMailMailboxesWithNewMail ); + TInt err = iCenRep->Get( key, iCenrepText ); + if ( err == KErrNone ) { - ret = ETrue; + TInt pos = iCenrepText.Find( mailbox ); + if ( pos >= 0 ) + { + ret = ETrue; + } } } else { ToggleWidgetNewMailIconL( EFalse, aMailBox ); } + return ret; } + + + + diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/BWINS/basepluginU.DEF --- a/emailservices/emailstore/base_plugin/BWINS/basepluginU.DEF Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/BWINS/basepluginU.DEF Tue May 11 15:57:15 2010 +0300 @@ -193,4 +193,6 @@ ?Load2LC@CResourceLoader@@QAEPAVHBufC16@@H@Z @ 192 NONAME ; class HBufC16 * CResourceLoader::Load2LC(int) ?Load2L@CResourceLoader@@QAEPAVHBufC16@@HABVTDesC16@@@Z @ 193 NONAME ; class HBufC16 * CResourceLoader::Load2L(int, class TDesC16 const &) ?CalendarFileName@CBasePlugin@@MBEABVTDesC16@@XZ @ 194 NONAME ; class TDesC16 const & CBasePlugin::CalendarFileName(void) const + ?StartOp@CDelayedOp@@QAEXXZ @ 195 NONAME ; void CDelayedOp::StartOp(void) + ?DeleteDelayedOpsManager@CBasePlugin@@QAEXXZ @ 196 NONAME ; void CBasePlugin::DeleteDelayedOpsManager(void) diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/EABI/basepluginU.DEF --- a/emailservices/emailstore/base_plugin/EABI/basepluginU.DEF Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/EABI/basepluginU.DEF Tue May 11 15:57:15 2010 +0300 @@ -297,4 +297,6 @@ _ZN15CResourceLoader7Load2LCEiRK7TDesC16 @ 296 NONAME _ZN15CResourceLoader7Load2LCEii @ 297 NONAME _ZNK11CBasePlugin16CalendarFileNameEv @ 298 NONAME + _ZN10CDelayedOp7StartOpEv @ 299 NONAME + _ZN11CBasePlugin23DeleteDelayedOpsManagerEv @ 300 NONAME diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/group/BasePlugin.mmp --- a/emailservices/emailstore/base_plugin/group/BasePlugin.mmp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/group/BasePlugin.mmp Tue May 11 15:57:15 2010 +0300 @@ -62,7 +62,7 @@ SOURCE basepluginfetch.cpp SOURCE baseplugindelayedops.cpp SOURCE basepluginresourceloader.cpp -SOURCE NestedAO.cpp + // ************************************* // OTHER STUFF diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/inc/BasePlugin.h --- a/emailservices/emailstore/base_plugin/inc/BasePlugin.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/inc/BasePlugin.h Tue May 11 15:57:15 2010 +0300 @@ -90,6 +90,12 @@ // CFSMailPlugin // public: + /** + * This methoed must be called before destruction of + * CBasePlugin derived class. To fix bug EIZU-7XVF2Z. + */ + IMPORT_C void DeleteDelayedOpsManager(); + IMPORT_C virtual void ListMailBoxesL( RArray& aMailboxes ); diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/inc/NestedAO.h --- a/emailservices/emailstore/base_plugin/inc/NestedAO.h Tue Apr 27 16:20:14 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -/* -* ============================================================================ -* Name : NestedAO.h -* Part of : Base Plugin -* -* Description: -* Class used to implement nested active object used to handle deletion -* of large number of messages by breaking them into smaller chunks -* Version: -* -* Copyright (C) 2010 Nokia Corporation. -* This material, including documentation and any related -* computer programs, is protected by copyright controlled by -* Nokia Corporation. All rights are reserved. Copying, -* including reproducing, storing, adapting or translating, any -* or all of this material requires the prior written consent of -* Nokia Corporation. This material also contains confidential -* information which may not be disclosed to others without the -* prior written consent of Nokia Corporation. -* ============================================================================ -*/ - -#ifndef __NESTED_AO_H__ -#define __NESTED_AO_H__ - -// Include Files - - -#include - - -class MDeletionHandler - { -public: - enum TState - { - EInProgress, - EFree - }; - //Deletes messages from aStartIndex KSizeOfChunk at a time - virtual TBool DeleteMessagesInChunksL( TInt aStartIndex ) = 0; - }; -//Time interval between issuing 2 requests to delete messages -const TInt KWaitIntervalInMicroSecs=500; -//Maximum number of messages deleted in one go -const TInt KSizeOfChunk=10; - -NONSHARABLE_CLASS ( CNestedAO ) : public CTimer - { - public: - - static CNestedAO* NewL( MDeletionHandler& aDeletionHandler ); - virtual ~CNestedAO(); - // -------------------------------------------------------------------------- - // CNestedAO::DeleteMessagesAsync - // Used to delete messages asynchronously - // Deleting a small number of messages at a time - // ------------ - void DeleteMessagesAsync(); - // -------------------------------------------------------------------------- - // CNestedAO::Rc - // Used to return the iStatus return value - // ------------ - TInt Rc() { return iRc; } - - private: - CNestedAO( MDeletionHandler& aDeletionHandler ); - void ConstructL(); - - // inherited from CActive - virtual void RunL(); - virtual void DoCancel(); - // -------------------------------------------------------------------------- - // CNestedAO::Stop - // Stops the scheduler from running - // Called after all messages are processed - // or in error condition - // ------------ - void Stop(); - - private: - CActiveSchedulerWait* iNestedWait; - MDeletionHandler& iDeletionHandler; - TInt iDeletionIndex; - TInt iRc; - }; - - -#endif //__NESTED_AO_H__ diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/inc/baseplugincommonutils.h --- a/emailservices/emailstore/base_plugin/inc/baseplugincommonutils.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/inc/baseplugincommonutils.h Tue May 11 15:57:15 2010 +0300 @@ -49,4 +49,31 @@ CleanupResetAndDestroyClose::PushL(aRef); } +/** +* Cleanup support for owning pointer arrays +*/ + +template +class CleanupResetAndDestroy +{ +private: + inline static void ResetAndDestroy( TAny *aPtr ) + { + reinterpret_cast( aPtr )->ResetAndDestroy(); + }; +public: + inline static void PushL( T& aItem ) + { + TCleanupItem item( &CleanupResetAndDestroy::ResetAndDestroy, &aItem ); + CleanupStack::PushL( item ); + }; +} ; + +template +inline void CleanupResetAndDestroyPushL( T& aRef ) + { + CleanupResetAndDestroy::PushL( aRef ); + } + + #endif diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/inc/baseplugindelayedops.h --- a/emailservices/emailstore/base_plugin/inc/baseplugindelayedops.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/inc/baseplugindelayedops.h Tue May 11 15:57:15 2010 +0300 @@ -68,22 +68,25 @@ * The base class for the delayed operations. All of the delayed operations must * derive from it. */ -class CDelayedOp : public CAsyncOneShot +class CDelayedOp : public CActive { public: - + IMPORT_C virtual ~CDelayedOp(); IMPORT_C void SetContext( CBasePlugin& aPlugin, MDelayedOpsManager& aManager ); - + + IMPORT_C void StartOp(); + /** * Derived classes must implement their asynchronous processing in this * method. The GetPlugin method can only be used from within this method. + * Returns boolean: ETrue if op is yielding and needs to be called again, or EFalse if op is done. */ - virtual void ExecuteOpL() = 0; + virtual TBool ExecuteOpL() = 0; protected: diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/inc/baseplugindelayedopsprivate.h --- a/emailservices/emailstore/base_plugin/inc/baseplugindelayedopsprivate.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/inc/baseplugindelayedopsprivate.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,6 @@ #include "baseplugindelayedops.h" -#include "NestedAO.h" /** * Lets the user enqueue and dequeue asynchronous jobs for handling @@ -70,7 +69,7 @@ /** * */ -NONSHARABLE_CLASS( CDelayedDeleteMessagesOp ) : public CDelayedOp, public MDeletionHandler +NONSHARABLE_CLASS( CDelayedDeleteMessagesOp ) : public CDelayedOp { public: @@ -88,12 +87,8 @@ virtual ~CDelayedDeleteMessagesOp(); //CDelayedOp::ExecuteOpL - virtual void ExecuteOpL(); - - //From MDeletionHandler - //Used to delete messages in chunks starting from aStartIndex - TBool DeleteMessagesInChunksL( TInt aStartIndex ); - + virtual TBool ExecuteOpL(); + private: void ConstructL( const RArray& aMessages ); @@ -105,14 +100,14 @@ CDelayedDeleteMessagesOp( const CDelayedDeleteMessagesOp& ); CDelayedDeleteMessagesOp& operator= ( const CDelayedDeleteMessagesOp& ); - + private: TMsgStoreId iMailBoxId; TMsgStoreId iFolderId; RArray iMessages; TBool iImmediateDelete; - TState iState; + TInt iIndex; __LOG_DECLARATION }; @@ -142,7 +137,7 @@ virtual ~CDelayedSetContentOp(); //CDelayedOp::ExecuteOpL - virtual void ExecuteOpL(); + virtual TBool ExecuteOpL(); private: diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/src/BasePlugin.cpp --- a/emailservices/emailstore/base_plugin/src/BasePlugin.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/src/BasePlugin.cpp Tue May 11 15:57:15 2010 +0300 @@ -1152,6 +1152,15 @@ CleanupStack::PopAndDestroy( &folders ); } +/** + * This methoed must be called before destruction of + * CBasePlugin derived class. To fix bug EIZU-7XVF2Z. + */ +EXPORT_C void CBasePlugin::DeleteDelayedOpsManager() + { + delete iDelayedOpsManager; + iDelayedOpsManager = NULL; + } /** * diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/src/NestedAO.cpp --- a/emailservices/emailstore/base_plugin/src/NestedAO.cpp Tue Apr 27 16:20:14 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* -* ============================================================================== -* Name : NestedAO.cpp -* Part of : Base Plugin -* Description : Implementation of a nested active object used to handle deletion -* of large number of messages by breaking them into smaller chunks -* Version : -* -* Copyright (c) 2005 - 2010 Nokia Corporation. -* This material, including documentation and any related -* computer programs, is protected by copyright controlled by -* Nokia Corporation. All rights are reserved. Copying, -* including reproducing, storing, adapting or translating, any -* or all of this material requires the prior written consent of -* Nokia Corporation. This material also contains confidential -* information which may not be disclosed to others without the -* prior written consent of Nokia Corporation. -* ============================================================================== -*/ -// Include Files -// - - -#include "NestedAO.h" -#include "baseplugindelayedops.h" -#include "baseplugindelayedopsprivate.h" - -//Class CNestedAO - -// -------------------------------------------------------------------------- -// CNestedAO::NewL -// ------------ -CNestedAO* CNestedAO::NewL( MDeletionHandler& aDeletionHandler ) - { - CNestedAO* self = new(ELeave) CNestedAO( aDeletionHandler ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } -// -------------------------------------------------------------------------- -// CNestedAO::CNestedAO -// ------------ -CNestedAO::CNestedAO( MDeletionHandler& aDeletionHandler ) - : CTimer( EPriorityIdle ), iDeletionHandler( aDeletionHandler ), iRc( KErrNone ) - { - } -// -------------------------------------------------------------------------- -// CNestedAO::ConstructL() -// ------------ -void CNestedAO::ConstructL() - { - CTimer::ConstructL(); - iNestedWait = new( ELeave ) CActiveSchedulerWait(); - CActiveScheduler::Add( this ); - } -// -------------------------------------------------------------------------- -// CNestedAO::~CNestedAO -// ------------ -CNestedAO::~CNestedAO() - { - Cancel(); - delete iNestedWait; - } -// -------------------------------------------------------------------------- -// CNestedAO::DeleteMessagesAsync -// Used to delete messages asynchronously -// Deleting a small number of messages at a time -// ------------ -void CNestedAO::DeleteMessagesAsync() - { - iDeletionIndex = 0; - After( KWaitIntervalInMicroSecs ); //to invoke RunL after 100 microseconds - iNestedWait->Start(); - } -// -------------------------------------------------------------------------- -// CNestedAO::DoCancel -// ------------ -void CNestedAO::DoCancel() - { - iRc = KErrCancel; - Stop(); - } -// -------------------------------------------------------------------------- -// CNestedAO::RunL -// ------------ -void CNestedAO::RunL() - { - iRc = iStatus.Int(); - if ( iStatus.Int() == KErrNone ) - { - TBool done = iDeletionHandler.DeleteMessagesInChunksL( iDeletionIndex ); - if( !done ) - { - //Increment deletionidex - iDeletionIndex+=KSizeOfChunk; - After( KWaitIntervalInMicroSecs ); - } - else - { - Stop(); - } - } - else - { - Stop(); - } - } - -// -------------------------------------------------------------------------- -// CNestedAO::Stop -// Stops the scheduler from running -// Called after all messages are processed -// or in error condition -// ------------ -void CNestedAO::Stop() - { - if( iNestedWait->IsStarted() ) - { - // Stop the nested active scheduler (flow-of-control will pick up immediately following the - // call to iWait.Start(). - iNestedWait->AsyncStop(); - } // end if - } diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/base_plugin/src/baseplugindelayedops.cpp --- a/emailservices/emailstore/base_plugin/src/baseplugindelayedops.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/src/baseplugindelayedops.cpp Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,6 @@ #include "baseplugindelayedops.h" #include "baseplugindelayedopsprivate.h" -#include "NestedAO.h" /////////////////////////////////////////////////// // CDelayedOp // @@ -46,9 +45,21 @@ /** * */ +/*public*/ EXPORT_C void CDelayedOp::StartOp() + { + iStatus = KRequestPending; + SetActive(); + TRequestStatus* pStatus = &iStatus; + User::RequestComplete( pStatus, KErrNone ); + } + +/** + * + */ /*protected*/ EXPORT_C CDelayedOp::CDelayedOp() - : CAsyncOneShot( CActive::EPriorityIdle ) + : CActive( CActive::EPriorityIdle ) { + CActiveScheduler::Add( this ); } /** @@ -57,7 +68,9 @@ /*private virtual*/ EXPORT_C void CDelayedOp::RunL() { __LOG_ENTER_SUPPRESS( "Run" ); - TRAPD( err, ExecuteOpL() ); + TBool again( EFalse ); + + TRAPD( err, again = ExecuteOpL() ); if ( KErrNone != err ) { @@ -65,9 +78,16 @@ "Error while executing delayed operation: %d.", err ); } - //self-destroy. - iManager->DequeueOp( *this ); - delete this; + if ( again ) + { + StartOp(); + } + else + { + //self-destroy. + iManager->DequeueOp( *this ); + delete this; + } } /** @@ -123,7 +143,7 @@ { iDelayedOps.AppendL( aOp ); aOp->SetContext( iPlugin, *this ); - aOp->Call(); + aOp->StartOp(); } /** @@ -231,63 +251,6 @@ /** * */ -/*public virtual*/TBool CDelayedDeleteMessagesOp::DeleteMessagesInChunksL( TInt aStartIndex ) - { - __LOG_ENTER( "DeleteMessagesInChunksL" ); - TBool done=EFalse; - TInt endIndex; - if( aStartIndex + KSizeOfChunk < iMessages.Count() ) - { - endIndex = aStartIndex + KSizeOfChunk; - } - else - { - endIndex = iMessages.Count(); - done=ETrue; - } - CMailboxInfo& mailBoxInfo - = GetPlugin().GetMailboxInfoL( iMailBoxId ); - CMsgStoreMailBox& mailBox = mailBoxInfo(); - - for ( TInt i = aStartIndex; i < endIndex; ++i ) - { - TMsgStoreId msgId = iMessages[i]; - - if ( EFalse == iImmediateDelete ) - { - //try to find the message in the deleted items folder. - CMsgStoreMessage* theMessage = NULL; - TRAP_IGNORE( theMessage = mailBox.FetchMessageL( - msgId, mailBoxInfo.iRootFolders.iFolders[EFSDeleted] ) ); - - if ( NULL == theMessage ) - { - //if not in deleted items then move it there. - __LOG_WRITE8_FORMAT1_INFO("Moving message 0x%X to the deleted items.", msgId ); - mailBox.MoveMessageL( - msgId, KMsgStoreInvalidId, - mailBoxInfo.iRootFolders.iFolders[EFSDeleted] ); - } - else - { - //in deleted items, really delete it. - __LOG_WRITE8_FORMAT1_INFO( "Deleting message 0x%X.", msgId ); - - delete theMessage; - mailBox.DeleteMessageL( msgId, iFolderId ); - } - } - else - { - mailBox.DeleteMessageL( msgId, iFolderId ); - } - } - __LOG_EXIT; - return done; - } -/** - * - */ /*private*/ void CDelayedDeleteMessagesOp::ConstructL( const RArray& aMessages ) @@ -320,33 +283,67 @@ TMsgStoreId aMailBoxId, TMsgStoreId aFolderId ) : - iMailBoxId( aMailBoxId ), iFolderId( aFolderId ), - iImmediateDelete( EFalse ), iState ( EFree ) + iMailBoxId( aMailBoxId ), iFolderId( aFolderId ) { } /** * */ -/*private*/ void CDelayedDeleteMessagesOp::ExecuteOpL() +/*private*/ TBool CDelayedDeleteMessagesOp::ExecuteOpL() { __LOG_ENTER( "ExecuteOpL" ); - if ( iState != EFree ) + + //Maximum number of messages deleted in one go + const TInt KNumOfDeletesBeforeYield = 30; + + TBool runAgain = ETrue; + TInt endIndex = iIndex + KNumOfDeletesBeforeYield; + + if( endIndex >= iMessages.Count() ) { - //this code becomes re-entrant now because we use nested AS. - // so if we are already authenticating, return right away. - return; + endIndex = iMessages.Count(); + runAgain = EFalse; // last time, no need to run again. } - iState=EInProgress; - CNestedAO* nestedAO = CNestedAO::NewL( *this ); - //this is a blocking call with nested active scheduler - //This method makes a callback periodically to DeleteMessagesInChunks - //to delete the messages one chunk at a time - nestedAO->DeleteMessagesAsync(); - //continue execution here - delete nestedAO; - iState = EFree; + + CMailboxInfo& mailBoxInfo = GetPlugin().GetMailboxInfoL( iMailBoxId ); + CMsgStoreMailBox& mailBox = mailBoxInfo(); + + for ( ; iIndex < endIndex; iIndex++ ) + { + TMsgStoreId msgId = iMessages[iIndex]; + + if ( EFalse == iImmediateDelete ) + { + //try to find the message in the deleted items folder. + CMsgStoreMessage* theMessage = NULL; + TRAP_IGNORE( theMessage = mailBox.FetchMessageL( + msgId, mailBoxInfo.iRootFolders.iFolders[ EFSDeleted ] ) ); + + if ( NULL == theMessage ) + { + //if not in deleted items then move it there. + __LOG_WRITE8_FORMAT1_INFO("Moving message 0x%X to the deleted items.", msgId ); + mailBox.MoveMessageL( msgId, KMsgStoreInvalidId, + mailBoxInfo.iRootFolders.iFolders[ EFSDeleted ] ); + } + else + { + //in deleted items, really delete it. + __LOG_WRITE8_FORMAT1_INFO( "Deleting message 0x%X.", msgId ); + + delete theMessage; + mailBox.DeleteMessageL( msgId, iFolderId ); + } + } + else + { + mailBox.DeleteMessageL( msgId, iFolderId ); + } + } + __LOG_EXIT; + return runAgain; } @@ -419,7 +416,7 @@ /** * CDelayedOp::ExecuteOpL */ -/*public virtual*/ void CDelayedSetContentOp::ExecuteOpL() +/*public virtual*/ TBool CDelayedSetContentOp::ExecuteOpL() { __LOG_ENTER( "ExecuteOpL" ) @@ -446,8 +443,10 @@ "Updated the properties of part 0x%X.", part->Id() ) } - CleanupStack::PopAndDestroy( part ); + CleanupStack::PopAndDestroy( part ); + __LOG_EXIT + return EFalse; } /** diff -r e64954c2c8e2 -r e8f259fad141 emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp --- a/emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp Tue May 11 15:57:15 2010 +0300 @@ -2724,11 +2724,12 @@ aMessage.ReadL( aIndex, length16Pckg, position ); position += length16Pckg.Length(); - HBufC8* buf8 = HBufC8::NewL( length16 ); - aArray.Append( buf8 ); + HBufC8* buf8 = HBufC8::NewLC( length16 ); TPtr8 buf8Ptr( buf8->Des() ); aMessage.ReadL( aIndex, buf8Ptr, position ); buf8->Des().SetLength( length16 ); + aArray.AppendL( buf8 ); + CleanupStack::Pop(buf8); position += length16; } // end while } @@ -2755,7 +2756,7 @@ if ( readBuf.MaxLength() < length16 ) { - readBuf.ReAlloc( length16 ); + readBuf.ReAllocL( length16 ); } aMessage.ReadL( aIndex, readBuf, position ); @@ -2763,7 +2764,9 @@ const TUint16* valuePtr = reinterpret_cast( readBuf.Ptr() ); TPtrC valueDes( valuePtr, length16 / 2 ); - aArray.Append( valueDes.AllocL() ); + HBufC *p = valueDes.AllocLC(); + aArray.AppendL( p ); + CleanupStack::Pop( p ); position += length16; } // end while diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/data/FreestyleEmailUi.rss --- a/emailuis/emailui/data/FreestyleEmailUi.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/data/FreestyleEmailUi.rss Tue May 11 15:57:15 2010 +0300 @@ -1548,7 +1548,6 @@ MENU_ITEM { command = EFsEmailUiCmdActionsForward; txt = qtn_fse_message_list_options_forward; }, MENU_ITEM { command = EFsEmailUiCmdMailActions; txt = qtn_cmail_message_list_options_actions; cascade=r_fsemailui_maillist_submenu_mail_actions;}, MENU_ITEM { command = EFsEmailUiCmdSync; txt = qtn_cmail_message_list_options_send_receive; }, - MENU_ITEM { command = EFsEmailUiCmdCancelSync; txt = qtn_fse_launcher_options_cancel_sync; }, MENU_ITEM { command = EFsEmailUiCmdMarkingMode; txt = qtn_fse_message_list_options_mark; }, MENU_ITEM { command = EFsEmailUiCmdSettings; txt = qtn_fse_message_list_options_settings; }, MENU_ITEM { command = EFsEmailUiCmdHelp; txt = qtn_options_help; }, @@ -1941,11 +1940,6 @@ items = { MENU_ITEM { command = EFsEmailUiCmdSelect; txt = text_softkey_select; }, - MENU_ITEM { command = EFsEmailUiCmdGoOnline; txt = qtn_fse_launcher_options_go_online; }, - MENU_ITEM { command = EFsEmailUiCmdGoOffline; txt = qtn_fse_launcher_options_go_offline; }, - MENU_ITEM { command = EFsEmailUiCmdActionsCollapseAll; txt = qtn_fse_message_list_options_collapse_all; }, - MENU_ITEM { command = EFsEmailUiCmdActionsExpandAll; txt = qtn_fse_message_list_options_expand_all; }, - MENU_ITEM { command = EFsEmailUiCmdSettings; txt = qtn_fse_folder_list_options_folder_settings; }, MENU_ITEM { command = EFsEmailUiCmdHelp; txt = qtn_options_help; }, MENU_ITEM { command = EFsEmailUiCmdExit; txt = qtn_options_exit; } }; diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/data/html/header.js --- a/emailuis/emailui/data/html/header.js Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/data/html/header.js Tue May 11 15:57:15 2010 +0300 @@ -4,48 +4,48 @@ var setScrollPositionInterval; function collapseHeader(sendEvent) { - if (sendEvent) { - location.href = "cmail://collapseHeader/"; - } + if (sendEvent) { + location.href = "cmail://collapseHeader/"; + } collapsed = true; - handleHeaderDisplay( "header_table", "table_initial" ); - updateHeader(); - } + handleHeaderDisplay('expanded_header', 'collapsed_header'); + updateHeader(); + } function expandHeader(sendEvent) { - if (sendEvent) { - location.href = "cmail://expandHeader/"; - } - collapsed = false; - handleHeaderDisplay( "table_initial", "header_table" ) - parent.document.getElementById('email_frameSet').rows = "40%, *"; - } + if (sendEvent) { + location.href = "cmail://expandHeader/"; + } + collapsed = false; + handleHeaderDisplay('collapsed_header', 'expanded_header'); + updateHeader(); + } function updateHeader() { var rows = "40%, *"; - if (collapsed) { - if (displayImagesHidden || (parent.header_frame.g_autoLoadImages != 0) || (parent.hiddenCount == 0)) { + if (collapsed) { + if (displayImagesHidden || (parent.header_frame.g_autoLoadImages != 0) || (parent.hiddenCount == 0)) { rows = "10%, *"; } else { rows = "17%, *"; - } - } + } + } parent.document.getElementById('email_frameSet').rows = rows; } function handleHeaderDisplay( tableToHide, tableToShow ) { - document.getElementById(tableToShow).style.display = ""; - document.getElementById(tableToHide).style.display = "none"; - } + document.getElementById(tableToHide).style.display = 'none'; + document.getElementById(tableToShow).style.display = ''; + } function init(scrollPos) { - if (document.getElementById("table_initial").style.display != "none") { - collapseHeader(false); - } else { - expandHeader(false); - } + if (document.getElementById('collapsed_header').style.display != 'none') { + collapseHeader(false); + } else { + expandHeader(false); + } window.scrollTo(0, scrollPos); - setScrollPositionInterval = setInterval("updateScrollPosition()", 500); + setScrollPositionInterval = setInterval("updateScrollPosition()", 500); } function displayImagesButtonPressed() { diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleEmailUiContactHandler.h --- a/emailuis/emailui/inc/FreestyleEmailUiContactHandler.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiContactHandler.h Tue May 11 15:57:15 2010 +0300 @@ -187,7 +187,7 @@ * @param aMailBox = current mailbox, needed to know which MRU list to use */ void SearchMatchesL( const TDesC& aText, MFSEmailUiContactHandlerObserver* aObserver, - CFSMailBox* aMailBox ); + CFSMailBox* aMailBox, TInt aMode = -1 ); /** * Reset the status of contact Handlers, cancel all active asynchronous calls. This should be called diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleEmailUiHtmlViewerContainer.h --- a/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerContainer.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerContainer.h Tue May 11 15:57:15 2010 +0300 @@ -25,8 +25,6 @@ #include #include -#include - #include "FreestyleEmailUiAknStatusIndicator.h" #include "FreestyleEmailDownloadInformationMediator.h" #include "freestyleemailcenrepkeys.h" @@ -36,9 +34,9 @@ class CFreestyleEmailUiAppUi; class CFreestyleMessageHeaderURLEventHandler; struct TAttachmentData; - class CFsEmailUiHtmlViewerContainer; class MTouchFeedback; +class CFindItemEngine; /** * Single key listener @@ -262,6 +260,18 @@ // Inform that maillist model has updated void MailListModelUpdatedL(); + // Zoom handling + void ZoomInL(); + void ZoomOutL(); + TInt ZoomLevelL() const; + void SetZoomLevelL( const TInt aZoomLevel ); + TInt MaxZoomLevel() const; + +private: + + static TInt DoZoom( TAny* aPtr ); + void DoZoomL(); + private: // from CEUiHtmlViewerSettings::MObserver /** @@ -271,6 +281,8 @@ private: + void CreateBrowserControlInterfaceL(); + // Second phase constructor. void ConstructL(); // C++ constructor. @@ -324,7 +336,6 @@ const TDesC& aFileName, CFSMailMessagePart& aHtmlBodyPart ); HBufC8* GetCharacterSetL( CFSMailMessagePart& aHtmlBodyPart ); TBool IsMessageBodyURLL(const TDesC& aUrl); - void CreateHyperlinksFromUrlsL( RBuf& aSource ); TInt TotalLengthOfItems( CFindItemEngine& aItemEngine ) const; //Returns ETrue of clicking on a link requires a browser to be launched @@ -340,6 +351,8 @@ TRect CalcAttachmentStatusRect(); void TouchFeedback(); + + void WriteToFileL( const TDesC& aFileName, RBuf& aHtmlText ); private: // data @@ -381,7 +394,27 @@ TBool iHeaderExpanded; // tactile feed back -- not owned MTouchFeedback* iTouchFeedBack; + + TInt iZoomLevel; }; +/** +* PlainTextToHtmlConverter +* +* PlainTextToHtmlConverter converts plain text to html. It adds html entities +* and hyperlinks. +*/ +NONSHARABLE_CLASS (PlainTextToHtmlConverter) + { + private: + PlainTextToHtmlConverter(); + + public: + static void PlainTextToHtmlL(const TDesC& aPlainText, RBuf& aHtmlText); + + private: + static void ConvertTextL(const TDesC& aSource, RBuf& aTarget); + static void ConvertUrlL(const TDesC& aSource, RBuf& aTarget); + }; #endif // __FREESTYLEEMAILUI_HTML_VIEWER_CONTAINER_H__ diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleEmailUiHtmlViewerView.h --- a/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerView.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerView.h Tue May 11 15:57:15 2010 +0300 @@ -219,7 +219,6 @@ void DynInitZoomMenuL( CEikMenuPane* aMenuPane ); TInt ZoomLevelIndexL(); void SetZoomLevelIndexL( TInt aIndex ); - void RestoreZoomLevelL(); void SaveEmailAsContactL( const TDesC& aEmailAddress ); //new functions for support of HTML viewer @@ -339,6 +338,9 @@ CFlagSelectionNoteHandler* iFlagSelectionHandler; TBool iNextOrPrevMessageSelected; TBool iMessageIsDeleted; + + // Id of last deleted message + TFSMailMsgId iLastDeletedMessageID; }; //////////////////////////////////////// diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h --- a/emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h Tue May 11 15:57:15 2010 +0300 @@ -181,6 +181,8 @@ // From base class CFsEmailUiViewBase void GetParentLayoutsL( RPointerArray& aLayoutArray ) const; + void FadeOut(TBool aDirectionOut); + /** * Called when flip state changes. */ diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleEmailUiLayoutData.h --- a/emailuis/emailui/inc/FreestyleEmailUiLayoutData.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiLayoutData.h Tue May 11 15:57:15 2010 +0300 @@ -341,8 +341,7 @@ static const TInt KMaxPcsMatches = 50; // Predictive contact search popup colors -static const TRgb KPcsPopupHighlightColor( 0,200,200 ); -static const TRgb KPcsPopupDimmedFontColor( 192,192,192 ); +const TInt KPcsPopupDimmedFontTransparency = 100; //Icon sizes static const TInt KListTextureNodeExpandedSize = 14; diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleEmailUiLayoutHandler.h --- a/emailuis/emailui/inc/FreestyleEmailUiLayoutHandler.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiLayoutHandler.h Tue May 11 15:57:15 2010 +0300 @@ -234,8 +234,7 @@ // Predictive contact search popup TInt MaxPcsMatches() const; - TRgb PcsPopupHighlightColor() const; - TRgb PcsPopupDimmedFontColor() const; + TInt PcsPopupDimmedFontTransparency() const; //To retrieve respecitve Icon Sizes TInt ListTextureNodeExpandedSize() const; diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h --- a/emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h Tue May 11 15:57:15 2010 +0300 @@ -268,6 +268,19 @@ // { friend class CMailListUpdater; +private: + + // Refresh state + enum TRefreshState + { + ERefreshNone, + // Full refresh needed. Update model and redraw entire list. + EFullRefreshNeeded, + // Partial refresh needed. + EPartialRefreshNeeded, + // Focus to the beginning. + EFocusChangeNeeded + }; public: static CFSEmailUiMailListVisualiser* NewL(CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aMailListControlGroup); static CFSEmailUiMailListVisualiser* NewLC(CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aMailListControlGroup); @@ -442,6 +455,9 @@ const TDesC8& aCustomMessage ); void ChildDoDeactivate(); void GetParentLayoutsL( RPointerArray& aLayoutArray ) const; + + void FadeOut(TBool aDirectionOut); + /** * @see CFsEmailUiViewBase::SetStatusBarLayout */ diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleEmailUiViewBase.h --- a/emailuis/emailui/inc/FreestyleEmailUiViewBase.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiViewBase.h Tue May 11 15:57:15 2010 +0300 @@ -100,6 +100,8 @@ */ void DoTransition( TBool aDirectionOut ); + virtual void FadeOut(TBool aDirectionOut); + /** * Prepares application exit. This is called by AppUi during cleanup before AppUi's destructor */ diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/FreestyleMessageHeaderHTML.h --- a/emailuis/emailui/inc/FreestyleMessageHeaderHTML.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleMessageHeaderHTML.h Tue May 11 15:57:15 2010 +0300 @@ -92,8 +92,11 @@ * takes care of the urls and marks them as hotspots */ void WriteSubjectL(TDesC& aText ) const; - + + void ExportCollapseButtonL() const; + void ExportTimeAndExpandButtonL() const; void ExportSubjectL() const; + void ExportSubjectCollapsedL() const; void ExportFromL() const; void ExportToL() const; void ExportCcL() const; @@ -118,22 +121,22 @@ void AddImageL( const TDesC8& aImageUrl ) const; void AddImageL( const TDesC8& aImageId, const TDesC8& aImageUrl, const TDesC8& aImageEvent ) const; - void StartHeaderTableL( const TDesC8& aTableId ) const; + void StartHeaderTableL( const TDesC8& aTableId, TBool aVisible ) const; void EndHeaderTableL() const; void StartTableL( const TDesC8& aTableId ) const; void EndTableL() const; - - void AddShowDetailL() const; - + HBufC8* ClickImageEventL( const TDesC8& aImageName ) const; void AddJavascriptL() const; HBufC8* HeadingTextLC( TInt aId ) const; HBufC8* HeadingTextLC( TInt aId, TInt aSize ) const; - - void ExportInitialTableL() const; + + void ExportCollapsedHeaderTableL() const; + void ExportExpandedHeaderTableL() const; + /** * Function for generating follow up icon's HTML code. * Returns NULL if no follow up flags are set. diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/ncsaddressinputfield.h --- a/emailuis/emailui/inc/ncsaddressinputfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/ncsaddressinputfield.h Tue May 11 15:57:15 2010 +0300 @@ -158,7 +158,7 @@ void FixSemicolonAtTheEndL(); - void SetCursorVisible( TBool aCursorVisible ); + void SetPhysicsEmulationOngoing( TBool aPhysOngoing ); public: // from CoeControl diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/ncscomposeviewcontainer.h --- a/emailuis/emailui/inc/ncscomposeviewcontainer.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/ncscomposeviewcontainer.h Tue May 11 15:57:15 2010 +0300 @@ -739,6 +739,7 @@ TInt iVisibleAreaHeight; TInt iTotalMoveY; TInt iSeparatorHeight; + TInt iHeaderHeight; }; diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/ncseditor.h --- a/emailuis/emailui/inc/ncseditor.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/ncseditor.h Tue May 11 15:57:15 2010 +0300 @@ -102,6 +102,10 @@ void UpdateCustomDrawer(); + void SetPhysicsEmulationOngoing( TBool aPhysOngoing ); + + TBool IsPhysicsEmulationOngoing() const; + #ifdef _DEBUG void DebugDump(); #endif @@ -180,6 +184,9 @@ // Caption text for virtual ITU-T HBufC* iCaptionText; + + // flag to indicate is there physics based dragging or flicking ongoing + TBool iPhysOngoing; }; diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/ncspopuplistbox.h --- a/emailuis/emailui/inc/ncspopuplistbox.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/ncspopuplistbox.h Tue May 11 15:57:15 2010 +0300 @@ -62,7 +62,7 @@ * * @param aText */ - void InitAndSearchL( const TDesC& aText ); + void InitAndSearchL( const TDesC& aText, TInt aMode = -1 ); // Destructor virtual ~CNcsPopupListBox(); @@ -93,7 +93,7 @@ * * @param aText */ - void SetSearchTextL( const TDesC& aText ); + void SetSearchTextL( const TDesC& aText, TInt aMode = -1 ); /* * diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/inc/ncssubjectfield.h --- a/emailuis/emailui/inc/ncssubjectfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/inc/ncssubjectfield.h Tue May 11 15:57:15 2010 +0300 @@ -95,7 +95,7 @@ void EnableKineticScrollingL(CAknPhysics* aPhysics ); - void SetCursorVisible( TBool aCursorVisible ); + void SetPhysicsEmulationOngoing( TBool aPhysOngoing ); public: // from CoeControl /** diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp --- a/emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp Tue May 11 15:57:15 2010 +0300 @@ -242,7 +242,7 @@ countObject.iSaveRequestedCount > 0 ) { TFsEmailUiUtility::SetDownloadSave( ETrue ); - TFsEmailUiUtility::ShowFilesSavedToFolderNoteL( countObject.iSaveRequestedCount ); + TFsEmailUiUtility::ShowFilesSavedToFolderNoteL( countObject.iDownloadsCompletedCount /*iSaveRequestedCount*/ ); // Fix: ESLX-84ACJ9 } // Show "Download completed" if necessary else if ( CompletionNotesInUseL() && completedDownloadsToNotify ) @@ -397,14 +397,7 @@ { if ( iObserverArray[i].iObserver == aObserver && iObserverArray[i].iMessageId == aMessageId ) { - - TDownloadCount countObject( aMessageId ); - TInt idx = iDownloadCountArray.Find( countObject, - TIdentityRelation(EqualMessageId) ); - if ( idx == KErrNotFound ) - { - RemoveObserver(i); - } + RemoveObserver(i); } } } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiAppui.cpp --- a/emailuis/emailui/src/FreestyleEmailUiAppui.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiAppui.cpp Tue May 11 15:57:15 2010 +0300 @@ -1316,7 +1316,7 @@ TAdvancedPointerEvent* pointerEvent(aEvent.Pointer()); iLastPointerPosition = pointerEvent->iParentPosition; } - + TInt key = aEvent.Key()->iScanCode; // // to disable voice commands during creating new mail message @@ -1361,7 +1361,7 @@ { iCurrentActiveView->HandleAppForegroundEventL( EFalse ); } - // in case the popupmenu is shown propagate event to it + // in case the popupmenu is shown propagate event to it if( iFolderListVisualiser && iFolderListVisualiser->IsPopupShown() ) { iFolderListVisualiser->HandleAppForegroundEventL( EFalse ); @@ -1384,7 +1384,7 @@ { iStatusIndicator->HandleForegroundEventL(); } - // in case the popupmenu is shown propagate event to it + // in case the popupmenu is shown propagate event to it if( iFolderListVisualiser && iFolderListVisualiser->IsPopupShown() ) { iFolderListVisualiser->HandleAppForegroundEventL( ETrue ); @@ -1454,7 +1454,7 @@ case KEikDynamicLayoutVariantSwitch: iEnv->NotifyLayoutChangedL(); break; - case KAknsMessageSkinChange: + case KAknsMessageSkinChange: iEnv->NotifySkinChangedL(); break; } @@ -1473,12 +1473,12 @@ // { // CAlfEnv::Static()->NotifySkinChangedL(); // } - + if ( aType == KEikDynamicLayoutVariantSwitch ) { // Changing layout for status pane (just in case it is not switched // correctly), fix for HMNN-82BAGR error - // it's not related with skin change so "moved up" TJOS-83DELP fix + // it's not related with skin change so "moved up" TJOS-83DELP fix TBool landscape(Layout_Meta_Data::IsLandscapeOrientation()); CEikStatusPane* statusPane = StatusPane(); if(landscape) @@ -1494,7 +1494,7 @@ { statusPane->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT); } - } + } } if( aType == KEikDynamicLayoutVariantSwitch || aType == KAknsMessageSkinChange ) @@ -2199,7 +2199,7 @@ TIMESTAMP( "Sync error" ); if ( iManualMailBoxSync ) { - /* + /* * As a fix to TJOS-82ZFCW, this general popup is no longer needed * // since error id is not provided by plugin, lets popup general note * HBufC* text = StringLoader::LoadL( R_FS_MSERVER_TEXT_UNABLE_TO_COMPLETE ); @@ -2308,9 +2308,9 @@ } // Handle mail deleted event in Html view list, as the mails might become obsolete // Pass sync finished event there too in order to dismiss status dialogs - else if ( iHtmlViewerView && (aEvent == TFSEventMailDeleted || + else if ( iHtmlViewerView && (aEvent == TFSEventMailDeleted || aEvent == TFSEventMailDeletedFromViewer || - aEvent == TFSEventMailboxSyncStateChanged || + aEvent == TFSEventMailboxSyncStateChanged || aEvent == TFSEventNewMail) && iCurrentActiveView->Id() == HtmlViewerId) { iHtmlViewerView->HandleMailBoxEventL( aEvent, aMailbox, aParam1, aParam2, aParam3 ); @@ -2540,6 +2540,7 @@ if ( iConnectionStatusVisible ) { + // Get connection status of the current mailbox TFSMailBoxStatus connectionStatus = EFSMailBoxOffline; TSSMailSyncState syncState = Idle; @@ -2549,9 +2550,10 @@ connectionStatus = mb->GetMailBoxStatus(); syncState = mb->CurrentSyncState(); } + TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); CEikStatusPaneBase::TPaneCapabilities subPaneTitle = - StatusPane()->PaneCapabilities( titlePaneUid ); + StatusPane()->PaneCapabilities( titlePaneUid ); if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() ) { diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiContactHandler.cpp --- a/emailuis/emailui/src/FreestyleEmailUiContactHandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiContactHandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -430,7 +430,8 @@ // --------------------------------------------------------------------------- // void CFSEmailUiContactHandler::SearchMatchesL( const TDesC& aText, - MFSEmailUiContactHandlerObserver* aObserver, CFSMailBox* aMailBox ) + MFSEmailUiContactHandlerObserver* aObserver, CFSMailBox* aMailBox, + TInt aMode ) { FUNC_LOG; if ( (iState == EContactHandlerIdle) || @@ -441,6 +442,10 @@ iClsListHandler->SetCurrentMailboxL( aMailBox ); + if( aMode != EModeUndefined ) + { + iClsListHandler->InputModeChangedL( (TKeyboardModes)aMode ); + } //Async call, CallBack is ArrayUpdatedL (when error: OperationErrorL) iClsListHandler->SearchMatchesL( aText ); } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp --- a/emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp Tue May 11 15:57:15 2010 +0300 @@ -224,6 +224,7 @@ FUNC_LOG; BaseConstructL( R_FSEMAILUI_FOLDER_LIST_VIEW ); + this->HideToolbar(); iFirstStartCompleted = EFalse; } @@ -236,6 +237,8 @@ void CFSEmailUiFolderListVisualiser::DoFirstStartL() { FUNC_LOG; + HideToolbar(); + iControl = CFSEmailUiFolderListControl::NewL( iEnv, *this ); iModel = new (ELeave) CFSEmailUiFolderListModel(); @@ -1157,24 +1160,9 @@ aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); } - // OFFLINE/ONLINE MENU SELECTION - if( iMoveOrCopyInitiated ) - { - TFSMailBoxStatus onlineStatus = iAppUi.GetActiveMailbox()->GetMailBoxStatus(); - aMenuPane->SetItemDimmed( EFsEmailUiCmdGoOnline, onlineStatus == EFSMailBoxOnline ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdGoOffline, onlineStatus == EFSMailBoxOffline ); - } - else - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdGoOnline, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdGoOffline, ETrue ); - } - // select option aMenuPane->SetItemDimmed( EFsEmailUiCmdSelect, iModel->Count() == 0 ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsCollapseAll, AllNodesCollapsed() ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsExpandAll, AllNodesExpanded() ); } // Add shortcut hints @@ -2616,7 +2604,18 @@ if( iFullScreen ) { AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, iScreenRect ); - iScreenRect.SetRect( 0, 0, iScreenRect.Width(), iScreenRect.Height() ); + TRect noToolbar; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, noToolbar); + + + if(!Layout_Meta_Data::IsLandscapeOrientation()) + { + iScreenRect.SetRect( 0, 0, iScreenRect.Width(),iScreenRect.Height() + noToolbar.Height() ); + } + else + { + iScreenRect.SetRect( 0, 0, noToolbar.Width(),iScreenRect.Height()); + } } else { @@ -3005,6 +3004,7 @@ { FUNC_LOG; //Toolbar()->SetItemDimmed(EFsEmailUiTbCmdSelect, ( iModel == NULL ) || ( iModel->Count() == 0 ), ETrue ); + HideToolbar(); Toolbar()->SetItemDimmed( EFsEmailUiTbCmdExpandAll, AllNodesExpanded(), ETrue ); Toolbar()->SetItemDimmed( EFsEmailUiTbCmdCollapseAll, AllNodesCollapsed(), ETrue ); } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiGlobalSettingsListView.cpp --- a/emailuis/emailui/src/FreestyleEmailUiGlobalSettingsListView.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiGlobalSettingsListView.cpp Tue May 11 15:57:15 2010 +0300 @@ -131,18 +131,10 @@ // remove help support in pf5250 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); } - - // Dim "Open" or "Change" depending on the focused item - TInt focusedId = iGlobalSettingsSettingItemList->FocusedItemId(); - if ( focusedId == EGlobalSettingsActiveIdle ) - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdChange, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdOpen, ETrue ); - } - + // Dim "Open" and "Change" + aMenuPane->SetItemDimmed( EFsEmailUiCmdChange, ETrue ); + aMenuPane->SetItemDimmed( EFsEmailUiCmdOpen, ETrue ); + // Add shortcut hints iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, CFSEmailUiShortcutBinding::EContextSettings ); diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiHtmlViewerContainer.cpp --- a/emailuis/emailui/src/FreestyleEmailUiHtmlViewerContainer.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiHtmlViewerContainer.cpp Tue May 11 15:57:15 2010 +0300 @@ -26,6 +26,7 @@ #include #include #include +#include // #include "cfsmailmessage.h" @@ -79,9 +80,6 @@ _LIT( KHtmlGreaterThan, ">" ); _LIT( KHtmlAmpersand, "&" ); _LIT( KHtmlQuotation, """ ); -// _LIT( KHtmlLinkTag, "" ); -// _LIT( KHtmlLinkTagWWW, "" ); -// _LIT( KHtmlLinkEndTag, "" ); _LIT( KURLTypeBody, "body"); _LIT( KURLDisplayImages, "cmail://displayImages/" ); @@ -93,13 +91,10 @@ const TText KLessThan = 0x3c; const TText KAmpersand = 0x26; const TText KQuotation = 0x22; -// const TText KCharacterSpace = 0x20; const TText KSOH = 0x01; // Start Of Heading -// const TText KCR = 0x0d; // Carriage Return const TText KLF = 0x0a; // Line Feed -// const TText KHT = 0x09; // Horizontal Tab const TText KUnicodeNewLineCharacter = 0x2028; -const TText KUnicodeParagraphCharacter = 0x2029; +const TText KUnicodeParagraphCharacter = 0x2029; const TReal KOverlayButtonMarginX = 0.01; // 1% const TReal KOverlayButtonMarginY = 0.01; // 1% const TReal KOverlayButtonSizeP = 0.15; // 15% @@ -109,6 +104,12 @@ const TInt KStatusIndicatorHeight = 50; const TInt KStatusIndicatorXMargin = 50; +// CONSTANTS +// Zoom levels available on the UI +const TInt KZoomLevels[] = { 75, 100, 125, 150 }; +const TInt KZoomLevelCount = sizeof( KZoomLevels ) / sizeof( TInt ); +const TInt KZoomLevelIndex100 = 100; // 100 in array KZoomLevels + // CEUiHtmlViewerSettingsKeyListener // --------------------------------------------------------------------------- @@ -290,7 +291,8 @@ iAppUi( aAppUi ), iView( aView ), iFs( iCoeEnv->FsSession() ), - iFirstTime( ETrue ) + iFirstTime( ETrue ), + iZoomLevel( KZoomLevelIndex100 ) { FUNC_LOG; } @@ -340,6 +342,140 @@ ResetContent(); } +void CFsEmailUiHtmlViewerContainer::ZoomInL() + { + SetZoomLevelL( ZoomLevelL() + 1 ); + } + +void CFsEmailUiHtmlViewerContainer::ZoomOutL() + { + SetZoomLevelL( ZoomLevelL() - 1 ); + } + +TInt CFsEmailUiHtmlViewerContainer::ZoomLevelL() const + { + FUNC_LOG; + TInt zoomLevelIdx = iBrCtlInterface->BrowserSettingL( + TBrCtlDefs::ESettingsCurrentZoomLevelIndex ); + + // Behaviour of zooming in Browser Control Interface is different in version 7.1 + // than in previous versions and we need to support both. In older versions there + // are 4 preset zoom levels while version 7.1 can zoom to any percent. + RArray* zoomLevels = iBrCtlInterface->ZoomLevels(); + + if ( !zoomLevels || !zoomLevels->Count() || ( *zoomLevels )[0] != KZoomLevels[0] ) + { + // new browser: + // BrowserControlIf gives zoom level percentage insted of index to array + TBool found = EFalse; + + for ( TInt i = 0 ; i < KZoomLevelCount && !found ; ++i ) + { + if ( zoomLevelIdx == KZoomLevels[i] ) + { + zoomLevelIdx = i; + found = ETrue; + } + } + + if ( !found ) + { + zoomLevelIdx = KErrNotFound; + } + } + return zoomLevelIdx; + } + +void CFsEmailUiHtmlViewerContainer::SetZoomLevelL( const TInt aZoomLevel ) + { + FUNC_LOG; + TInt newValue = KMinTInt; + + // Behaviour of zooming in Browser Control Interface is different in version 7.1 + // than in previous versions and we need to support both. In older versions there + // are 4 preset zoom levels while version 7.1 can zoom to any percent. + RArray* zoomLevels = iBrCtlInterface->ZoomLevels(); + + if ( !zoomLevels || !zoomLevels->Count() || ( *zoomLevels )[0] != KZoomLevels[0] ) + { + // new browser: + // BrowserControlIf takes zoom level percentage insted of index to array + if ( aZoomLevel >= 0 && aZoomLevel < KZoomLevelCount ) + { + newValue = KZoomLevels[aZoomLevel]; + } + } + else + { + // old browser + newValue = aZoomLevel; + } + + iZoomLevel = ( newValue > KMinTInt ) ? newValue : aZoomLevel; + iBrCtlInterface->SetBrowserSettingL( + TBrCtlDefs::ESettingsCurrentZoomLevelIndex, iZoomLevel ); + } + +TInt CFsEmailUiHtmlViewerContainer::DoZoom( TAny* aPtr ) + { + TRAPD( error, reinterpret_cast( aPtr )->DoZoomL() ); + return error; + } + +void CFsEmailUiHtmlViewerContainer::DoZoomL() + { + iBrCtlInterface->SetBrowserSettingL( + TBrCtlDefs::ESettingsCurrentZoomLevelIndex, iZoomLevel ); + } + +TInt CFsEmailUiHtmlViewerContainer::MaxZoomLevel() const + { + return KZoomLevelCount; + } + + +void CFsEmailUiHtmlViewerContainer::CreateBrowserControlInterfaceL() + { + FUNC_LOG; + + if ( iBrCtlInterface ) + { + delete iBrCtlInterface; + iBrCtlInterface = NULL; + } + + TUint brCtlCapabilities = TBrCtlDefs::ECapabilityClientResolveEmbeddedURL | + TBrCtlDefs::ECapabilityDisplayScrollBar | + TBrCtlDefs::ECapabilityClientNotifyURL | + TBrCtlDefs::ECapabilityLoadHttpFw | + TBrCtlDefs::ECapabilityCursorNavigation | + TBrCtlDefs::ECapabilityPinchZoom | + TBrCtlDefs::ECapabilityFitToScreen; + + // Set browsercontrol to whole screen + TRect rect( TPoint(), Size() ); + + iBrCtlInterface = CreateBrowserControlL( + this, // aParent + rect, // aRect + brCtlCapabilities, // aBrCtlCapabilities + TBrCtlDefs::ECommandIdBase, // aCommandIdBase + NULL, // aBrCtlSoftkeysObserver + this, // aBrCtlLinkResolver + this, // aBrCtlSpecialLoadObserver + NULL, // aBrCtlLayoutObserver + NULL, // aBrCtlDialogsProvider + this, // aBrCtlWindowObserver + NULL // aBrCtlDownloadObserver + ); + + iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsEmbedded, ETrue ); + iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsAutoLoadImages, iViewerSettings->AutoLoadImages() ); + iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsPageOverview, EFalse ); + iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsTextWrapEnabled, ETrue ); + iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsFontSize, TBrCtlDefs::EFontSizeLevelLarger ); + } + void CFsEmailUiHtmlViewerContainer::ConstructL() { FUNC_LOG; @@ -351,45 +487,23 @@ BaflUtils::EnsurePathExistsL( iFs, iTempHtmlFolderPath ); SetHTMLResourceFlagFullName(); EnsureHTMLResourceL(); - + CreateWindowL(); - SetRect( iView.ContainerRect() ); - - TUint brCtlCapabilities = TBrCtlDefs::ECapabilityClientResolveEmbeddedURL | - TBrCtlDefs::ECapabilityDisplayScrollBar | - TBrCtlDefs::ECapabilityClientNotifyURL | - TBrCtlDefs::ECapabilityLoadHttpFw | - TBrCtlDefs::ECapabilityCursorNavigation | - TBrCtlDefs::ECapabilityPinchZoom; + +#if defined( BRDO_MULTITOUCH_ENABLED_FF ) && !defined ( __WINSCW__ ) + //Enable advance pointer info for multi-touch. + Window().EnableAdvancedPointers(); +#endif - // Set browsercontrol to whole screen - TRect rect( TPoint(), Size() ); - - iBrCtlInterface = CreateBrowserControlL( - this, // aParent - rect, // aRect - brCtlCapabilities, // aBrCtlCapabilities - TBrCtlDefs::ECommandIdBase, // aCommandIdBase - NULL, // aBrCtlSoftkeysObserver - this, // aBrCtlLinkResolver - this, // aBrCtlSpecialLoadObserver - NULL, // aBrCtlLayoutObserver - NULL, // aBrCtlDialogsProvider - this, // aBrCtlWindowObserver - NULL // aBrCtlDownloadObserver - ); + + SetRect( iView.ContainerRect() ); + CreateBrowserControlInterfaceL(); - iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsEmbedded, ETrue ); - iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsAutoLoadImages, iViewerSettings->AutoLoadImages() ); - iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsPageOverview, EFalse ); - iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsTextWrapEnabled, ETrue ); - iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsFontSize, TBrCtlDefs::EFontSizeLevelLarger ); - iEventHandler = CFreestyleMessageHeaderURLEventHandler::NewL( iAppUi, iView ); - + TRect nextButtonRect = OverlayButtonRect( EFalse ); - iOverlayControlNext = COverlayControl::NewL( this, this, nextButtonRect, - EMbmFreestyleemailuiQgn_indi_cmail_arrow_next, + iOverlayControlNext = COverlayControl::NewL( this, this, nextButtonRect, + EMbmFreestyleemailuiQgn_indi_cmail_arrow_next, EMbmFreestyleemailuiQgn_indi_cmail_arrow_next_mask ); TRect prevButtonRect = OverlayButtonRect( ETrue ); @@ -411,7 +525,7 @@ CCoeControl::MakeVisible( aVisible ); } -void CFsEmailUiHtmlViewerContainer::HandleOverlayPointerEventL( COverlayControl* aControl, +void CFsEmailUiHtmlViewerContainer::HandleOverlayPointerEventL( COverlayControl* aControl, const TPointerEvent& aEvent ) { if( aEvent.iType == TPointerEvent::EButton1Up ) @@ -439,7 +553,7 @@ nextAvailable = iAppUi.IsNextMsgAvailable( currentMsgId, tmpMsgId, tmpMsgFolderId ); prevAvailable = iAppUi.IsPreviousMsgAvailable( currentMsgId, tmpMsgId, tmpMsgFolderId ); } - + if( iOverlayControlPrev ) { iOverlayControlPrev->SetRect( OverlayButtonRect( ETrue ) ); @@ -457,7 +571,7 @@ { TRect rect = Rect(); TSize size = rect.Size(); - + TBool landscape = size.iWidth > size.iHeight; TInt buttonSize; @@ -471,7 +585,7 @@ } rect.iBr.iY = size.iHeight * (1-KOverlayButtonMarginY); - + if( aLeft ) { rect.iTl.iX = size.iWidth * KOverlayButtonMarginX; @@ -482,7 +596,7 @@ rect.iBr.iX = size.iWidth * (1 - KOverlayButtonMarginX); rect.iTl.iX = rect.iBr.iX - buttonSize; } - + rect.iTl.iY = rect.iBr.iY - buttonSize; return rect; } @@ -525,23 +639,23 @@ // Cancel any browser fetch operation, just in case the browser is still // loading a previous message (since we are about to overwrite it). CancelFetch(); - + TPath headerHtmlFile; headerHtmlFile.Copy( iHtmlFolderPath ); headerHtmlFile.Append( KHeaderHtmlFile ); - + // insert email header into email.html file // CFreestyleMessageHeaderHTML will replace contents of email.html // So, no need to clear the contents if(aResetScrollPos) { - iScrollPosition = 0; + iScrollPosition = 0; } const TInt visibleWidth(iAppUi.ClientRect().Width()); CFreestyleMessageHeaderHTML::ExportL( *iMessage, iFs, headerHtmlFile, visibleWidth, iScrollPosition, iViewerSettings->AutoLoadImages() || iAppUi.DisplayImagesCache().Contains(*iMessage), iHeaderExpanded ); - + // Remove all previously created files from temporary HTML folder EmptyTempHtmlFolderL(); @@ -562,8 +676,11 @@ { emailHtmlFile.Append( KMessageHtmlRTLFile ); } + + CreateBrowserControlInterfaceL(); + LoadContentFromFileL( emailHtmlFile ); - + UpdateOverlayButtons( ETrue ); } @@ -576,12 +693,12 @@ FUNC_LOG; if ( iBrCtlInterface ) { - TRAP_IGNORE( + TRAP_IGNORE( iBrCtlInterface->HandleCommandL( ( TInt )TBrCtlDefs::ECommandIdBase + ( TInt )TBrCtlDefs::ECommandFreeMemory ) ); if (aDisconnect) { - TRAP_IGNORE( + TRAP_IGNORE( iBrCtlInterface->HandleCommandL( ( TInt )TBrCtlDefs::ECommandIdBase + ( TInt )TBrCtlDefs::ECommandDisconnect ) ); } @@ -640,7 +757,7 @@ { return 4; } - else + else { return 3; } @@ -677,9 +794,9 @@ { iBrCtlInterface->SetRect( rect ); } - + UpdateOverlayButtons( IsVisible() ); - + if ( iStatusIndicator ) { TRect rect = CalcAttachmentStatusRect(); @@ -695,7 +812,7 @@ const TKeyEvent& aKeyEvent, TEventCode aType ) { FUNC_LOG; - + TKeyResponse retVal = EKeyWasNotConsumed; // Handle keyboard shortcuts already on key down event as all keys @@ -713,9 +830,19 @@ } } - else if ( iBrCtlInterface && retVal == EKeyWasNotConsumed ) + if ( iBrCtlInterface && retVal == EKeyWasNotConsumed ) { - retVal = iBrCtlInterface->OfferKeyEventL( aKeyEvent, aType ); + TKeyEvent event = aKeyEvent; + if ( iBrCtlInterface->FocusedElementType() == TBrCtlDefs::EElementButton + && ( aKeyEvent.iScanCode == EStdKeyNkpEnter + || aKeyEvent.iScanCode == EStdKeyEnter ) ) + { + // Enter key events are converted to selection key event in + // order to get browser to handle them in similar way. + event.iScanCode = EStdKeyDevice3; + event.iCode = aKeyEvent.iCode ? EKeyDevice3 : 0; + } + retVal = iBrCtlInterface->OfferKeyEventL( event, aType ); } iView.SetMskL(); @@ -806,7 +933,7 @@ { iAppUi.DownloadInfoMediator()->StopObserving( this ); } - + if ( iMessage && linkContent ) { CFSMailMessagePart* part = iMessage->ChildPartL( aPart.iMessagePartId ); @@ -820,10 +947,10 @@ CleanupStack::PopAndDestroy( &contentFile ); CleanupStack::PopAndDestroy( part ); } - + if ( iMessage ) { - LoadContentFromMailMessageL( iMessage, EFalse ); + LoadContentFromMailMessageL( iMessage, EFalse ); UpdateOverlayButtons( ETrue ); } } @@ -907,7 +1034,7 @@ else { return iEventHandler->HandleEventL( aUrl ); - } + } } } @@ -954,7 +1081,7 @@ // void CFsEmailUiHtmlViewerContainer::SetTempHtmlFolderPath() { - FUNC_LOG; + FUNC_LOG; iTempHtmlFolderPath.Copy( iHtmlFolderPath ); iTempHtmlFolderPath.Append( KTempHtmlPath ); } @@ -991,7 +1118,7 @@ RFile htmlFile = aHtmlBodyPart.GetContentFileL(); CleanupClosePushL( htmlFile ); - + // Read content from given source file HBufC8* content = ReadContentFromFileLC( htmlFile ); @@ -1014,14 +1141,14 @@ TFileName targetFileName; targetFileName.Copy( iTempHtmlFolderPath ); targetFileName.Append( aHtmlFileName ); - + HBufC* content = HBufC::NewLC( aTextBodyPart.FetchedContentSize() ); TPtr contentPtr( content->Des() ); - + aTextBodyPart.GetContentToBufferL( contentPtr, 0 ); - + ConvertToHTML( *content, targetFileName, aTextBodyPart ); - + CleanupStack::PopAndDestroy( content ); } @@ -1050,11 +1177,11 @@ const TDesC& aFileName, CFSMailMessagePart& aHtmlBodyPart ) { FUNC_LOG; - + RBuf8 buffer; buffer.CreateL( aContent ); buffer.CleanupClosePushL(); - + if ( SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, buffer.Size(), EDriveC ) ) { // Can not write the data, there's not enough free space on disk. @@ -1064,12 +1191,12 @@ { RFile targetFile; CleanupClosePushL( targetFile ); - + User::LeaveIfError( targetFile.Replace( iFs, aFileName, EFileWrite ) ); // Try to find initial html tag (both '' tag anywhere in // the begining of file (KMaxCharsToSearch) AND there is charset // parameter available @@ -1084,34 +1211,34 @@ { HBufC8* charSet = GetCharacterSetL( aHtmlBodyPart ); CleanupStack::PushL( charSet ); - + User::LeaveIfError( targetFile.Write( KHtmlHeader1 ) ); User::LeaveIfError( targetFile.Write( *charSet ) ); User::LeaveIfError( targetFile.Write( KHtmlHeader2 ) ); CleanupStack::PopAndDestroy( charSet ); } - else + else { // Charset tag not found in html body - + if ( buffer.Left( KMaxCharsToSearch ).FindF( KCharsetTag8 ) == KErrNotFound ) { TInt startPos(0); if ( ( startPos = buffer.Left( KMaxCharsToSearch ).FindF( KHeadTag ) ) != KErrNotFound ) - { - + { + HBufC8* charSet = GetCharacterSetL( aHtmlBodyPart ); CleanupStack::PushL( charSet ); - + HBufC8* metaBuffer = HBufC8::NewLC( charSet->Des().Length() + KHtmlHeader3().Length() ); TPtr8 metaHeader( metaBuffer->Des() ); - metaHeader.AppendFormat( KHtmlHeader3, charSet ); - TInt maxLength = buffer.Length() + metaHeader.Length(); + metaHeader.AppendFormat( KHtmlHeader3, charSet ); + TInt maxLength = buffer.Length() + metaHeader.Length(); buffer.ReAllocL( maxLength ); - + startPos += KHeadTag().Length(); buffer.Insert( startPos, metaHeader ); - + CleanupStack::PopAndDestroy( metaBuffer ); CleanupStack::PopAndDestroy( charSet ); } @@ -1244,14 +1371,14 @@ partData.iMailBoxId = iMessage->GetMailBoxId(); partData.iFolderId = iMessage->GetFolderId(); partData.iMessageId = iMessage->GetMessageId(); - + partData.iMessagePartId = aAttachment.GetPartId(); if ( iAppUi.DownloadInfoMediator() && iAppUi.DownloadInfoMediator()->IsDownloadableL( partData ) ) { ASSERT( iLinkContents.Count() == iMessageParts.Count() ); - + // Append message part details and embedded link content interface // to corresponding arrays so that the content can be returned // when the download is completed. @@ -1260,7 +1387,7 @@ { iLinkContents.Remove( iLinkContents.Count() - 1 ); } - + ASSERT( iLinkContents.Count() == iMessageParts.Count() ); if(!iView.GetAsyncFetchStatus()) { @@ -1277,7 +1404,7 @@ { FUNC_LOG; iHtmlResourceFlagPath.Copy( iHtmlFolderPath ); - iHtmlResourceFlagPath.Append( KHtmlFlagFile ); + iHtmlResourceFlagPath.Append( KHtmlFlagFile ); } void CFsEmailUiHtmlViewerContainer::EnableHTMLResourceFlagL() @@ -1306,11 +1433,11 @@ htmlFolderPathInZ.Append( privatePath ); htmlFolderPathInZ.Append( KHtmlPath ); - + CDir* dirList; TPath listSpec; listSpec.Copy( htmlFolderPathInZ ); - + listSpec.Append( _L("*.*") ); User::LeaveIfError( iFs.GetDir( listSpec, KEntryAttMaskSupported, ESortByName, dirList ) ); CleanupStack::PushL( dirList ); @@ -1319,28 +1446,28 @@ TPath sourceFileFullName; sourceFileFullName.Copy( htmlFolderPathInZ ); sourceFileFullName.Append( (*dirList)[i].iName ); - + TBool isFolder( EFalse ); BaflUtils::IsFolder( iFs, sourceFileFullName, isFolder); if ( isFolder ) { - break; + break; } - + TPath targetFileFullName; targetFileFullName.Copy( iHtmlFolderPath ); targetFileFullName.Append( (*dirList)[i].iName ); - BaflUtils::DeleteFile( iFs, targetFileFullName ); - + BaflUtils::DeleteFile( iFs, targetFileFullName ); + BaflUtils::CopyFile( iFs, sourceFileFullName, targetFileFullName); - } + } CleanupStack::PopAndDestroy( dirList ); } void CFsEmailUiHtmlViewerContainer::EnsureHTMLResourceL() { FUNC_LOG; - + if ( !HTMLResourceFlagEnabled() ) { CopyHTMLResourceL(); @@ -1352,203 +1479,24 @@ // Writes buffer content to given file after adding tags // --------------------------------------------------------------------------- // -// void CFsEmailUiHtmlViewerContainer::ConvertToHTML( const TDesC& aContent, const TDesC& aFileName, CFSMailMessagePart& /*aTextBodyPart*/ ) { FUNC_LOG; - const TInt KBodyTextChunkSize = 2048; - + if ( SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, aContent.Size(), EDriveC ) ) - { - // Can not write the data, there's not enough free space on disk. - User::Leave( KErrDiskFull ); - } - else { - RBuf bodyBuf; - bodyBuf.CreateL( aContent.Size() + KBodyTextChunkSize ); - bodyBuf.CleanupClosePushL(); - bodyBuf.Insert( 0, aContent); - TInt maxlength = bodyBuf.MaxSize(); - - TInt position( 0 ); - TBool EndOfString( EFalse ); - - while ( !EndOfString ) - { - TInt startPosition = position; - TPtr segment( bodyBuf.MidTPtr( startPosition ) ); - TInt i = 0; - - while(i < segment.Length()) - { - TInt currentPos = position + i; - TText ch = segment[i]; - - switch( ch ) - { - case KSOH: // end of line for IMAP and POP - bodyBuf.Delete( currentPos, 1 ); - maxlength = maxlength + KHtmlLineBreakCRLF().Length(); - bodyBuf.ReAlloc( maxlength ); - bodyBuf.Insert( currentPos, KHtmlLineBreakCRLF ); - i += KHtmlLineBreakCRLF().Length(); - segment.Set( bodyBuf.MidTPtr( startPosition ) ); - break; - case KLF: // line feed - case KUnicodeNewLineCharacter: - case KUnicodeParagraphCharacter: - maxlength = maxlength + KHtmlLineBreak().Length(); - bodyBuf.ReAlloc( maxlength ); - bodyBuf.Insert( currentPos, KHtmlLineBreak ); - i += KHtmlLineBreak().Length() + 1; - segment.Set( bodyBuf.MidTPtr( startPosition ) ); - break; - case KQuotation: - bodyBuf.Delete( currentPos, 1 ); - maxlength = maxlength + KHtmlQuotation().Length(); - bodyBuf.ReAlloc( maxlength ); - bodyBuf.Insert( currentPos, KHtmlQuotation ); - i += KHtmlQuotation().Length(); - segment.Set( bodyBuf.MidTPtr( startPosition ) ); - break; - case KAmpersand: - bodyBuf.Delete( currentPos, 1 ); - maxlength = maxlength + KHtmlAmpersand().Length(); - bodyBuf.ReAlloc( maxlength ); - bodyBuf.Insert( currentPos, KHtmlAmpersand ); - i += KHtmlAmpersand().Length(); - segment.Set( bodyBuf.MidTPtr( startPosition ) ); - break; - case KGreaterThan: - bodyBuf.Delete( currentPos, 1 ); - maxlength = maxlength + KHtmlGreaterThan().Length(); - bodyBuf.ReAlloc( maxlength ); - bodyBuf.Insert( currentPos, KHtmlGreaterThan ); - i += KHtmlGreaterThan().Length(); - segment.Set( bodyBuf.MidTPtr( startPosition ) ); - break; - case KLessThan: - bodyBuf.Delete( currentPos, 1 ); - maxlength = maxlength + KHtmlLessThan().Length(); - bodyBuf.ReAlloc( maxlength ); - bodyBuf.Insert( currentPos, KHtmlLessThan ); - i += KHtmlLessThan().Length(); - segment.Set( bodyBuf.MidTPtr( startPosition ) ); - break; - default: - i++; - break; - } - } - position += segment.Length(); - if ( ( bodyBuf.Length() - position ) <= 0 ) - { - EndOfString = ETrue; - } - } - - CreateHyperlinksFromUrlsL( bodyBuf ); + // Can not write the data, there's not enough free space on disk. + User::Leave( KErrDiskFull ); + } + + RBuf htmlText; + CleanupClosePushL( htmlText ); - HBufC8* content8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( bodyBuf ); - CleanupStack::PushL( content8 ); - - RFile targetFile; - CleanupClosePushL( targetFile ); - User::LeaveIfError( targetFile.Replace( iFs, aFileName, EFileWrite ) ); - - RBuf8 messageHeader; - _LIT( KCharsetUtf8, "UTF-8" ); - TInt bufSize = KHtmlHeader1().Length() + KCharsetUtf8().Length() + KHtmlHeader2().Length(); - messageHeader.CreateL( bufSize ); - messageHeader.CleanupClosePushL(); + PlainTextToHtmlConverter::PlainTextToHtmlL( aContent, htmlText ); + WriteToFileL( aFileName, htmlText ); - messageHeader.Append( KHtmlHeader1 ); - messageHeader.Append( KCharsetUtf8 ); - messageHeader.Append( KHtmlHeader2 ); - - RFileWriteStream fileStream( targetFile ); - fileStream.PushL(); - fileStream.WriteL( messageHeader.Ptr(), messageHeader.Length() ); - - TInt bufPos( 0 ); - TInt bufTotalSize = content8->Size(); - - while ( bufPos < bufTotalSize ) - { - TInt segmentLength = content8->Mid( bufPos ).Length(); - fileStream.WriteL( content8->Mid( bufPos ).Ptr(), segmentLength ); - bufPos += segmentLength; - } - - fileStream.CommitL(); - - CleanupStack::PopAndDestroy( &fileStream ); - CleanupStack::PopAndDestroy( &messageHeader ); - CleanupStack::PopAndDestroy( &targetFile ); - CleanupStack::PopAndDestroy( content8 ); - CleanupStack::PopAndDestroy( &bodyBuf ); // calls bodyBuf.Close(); - -// - } - } - -// --------------------------------------------------------------------------- -// Finds and html formats hyperlinks in a document -// --------------------------------------------------------------------------- -// -// -void CFsEmailUiHtmlViewerContainer::CreateHyperlinksFromUrlsL( RBuf& aSource ) - { - FUNC_LOG; - const TInt searhCases( CFindItemEngine::EFindItemSearchURLBin ); - CFindItemEngine* itemEngine = CFindItemEngine::NewL( aSource, CFindItemEngine::TFindItemSearchCase( searhCases ) ); - CleanupStack::PushL ( itemEngine ); - if ( itemEngine->ItemCount() > 0 ) - { - _LIT( KSchemeDelimiter, "://" ); - _LIT( KUrlFormat, "%S" ); - _LIT( KUrlFormatWithHttp, "%S" ); - - const TInt sourceLength( aSource.Length() ); - // Allocate enough space for the final result - aSource.ReAllocL( sourceLength + TotalLengthOfItems( *itemEngine ) + KUrlFormatWithHttp().Length() * itemEngine->ItemCount() ); - aSource.SetMax(); - // Organize buffer so that original data is in the back of the aSource - aSource.RightTPtr( sourceLength ).Copy( aSource.Left( sourceLength ) ); - // Set source to new original data's position - const TPtrC source( aSource.RightTPtr( sourceLength ) ); - // Set target to aSource's beginning - TPtr target( aSource.MidTPtr( 0 ) ); - // Reset length, we now have an empty buffer to fill - target.SetLength( 0 ); - - TInt currentSourcePosition( 0 ); - CFindItemEngine::SFoundItem item; - for ( TBool available( itemEngine->Item( item ) ); available; available = itemEngine->NextItem( item ) ) - { - target.Append( source.Mid( currentSourcePosition, item.iStartPos - currentSourcePosition ) ); - const TPtrC url( source.Mid( item.iStartPos, item.iLength ) ); - TPtrC format( KUrlFormat() ); - if ( url.FindF( KSchemeDelimiter() ) == KErrNotFound ) - { - format.Set( KUrlFormatWithHttp() ); - } - HBufC* formatBuffer = HBufC::NewLC( format.Length() + url.Length() * 2 ); - formatBuffer->Des().Format( format, &url, &url ); - target.Append( *formatBuffer ); - CleanupStack::PopAndDestroy(); // formatBuffer - currentSourcePosition = item.iStartPos + item.iLength; - } - // Append characters that are left in buffer - if ( currentSourcePosition < sourceLength ) - { - target.Append( source.Mid( currentSourcePosition, sourceLength - currentSourcePosition ) ); - } - aSource.SetLength( target.Length() ); - } - CleanupStack::PopAndDestroy(); // itemEngine + CleanupStack::PopAndDestroy( &htmlText ); } @@ -1573,15 +1521,15 @@ HBufC8* CFsEmailUiHtmlViewerContainer::GetCharacterSetL( CFSMailMessagePart& aHtmlBodyPart ) { FUNC_LOG; - + CDesCArray& contentTypeArray( aHtmlBodyPart.ContentTypeParameters() ); - HBufC8* charSet = KNullDesC8().AllocLC(); - + HBufC8* charSet = KNullDesC8().AllocLC(); + for ( TInt i = 0; i < contentTypeArray.Count(); i++ ) { TPtrC contentEntry( contentTypeArray.MdcaPoint( i ) ); if ( ( contentEntry.FindF( KCharsetTag ) != KErrNotFound ) && - contentTypeArray.Count() >= ( i+1) ) + contentTypeArray.Count() >= ( i+1) ) { TPtrC value( contentTypeArray.MdcaPoint( i+1 ) ); if ( value.Length() ) @@ -1595,7 +1543,7 @@ } i++; } - + CleanupStack::Pop( charSet ); return charSet; } @@ -1617,8 +1565,8 @@ FUNC_LOG; if ( iBrCtlInterface ) { - TRAP_IGNORE( iBrCtlInterface->HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + (TInt)TBrCtlDefs::ECommandIdBase )); - } + TRAP_IGNORE( iBrCtlInterface->HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + (TInt)TBrCtlDefs::ECommandIdBase )); + } } void CFsEmailUiHtmlViewerContainer::ClearCacheAndLoadEmptyContent() @@ -1626,11 +1574,11 @@ FUNC_LOG; if ( iBrCtlInterface ) { - iBrCtlInterface->ClearCache(); + iBrCtlInterface->ClearCache(); TUid uid; uid.iUid = KCharacterSetIdentifierUtf8; TRAP_IGNORE( iBrCtlInterface->LoadDataL(KHTMLDataScheme, KHTMLEmptyContent, _L8("text/html"), uid) ); - } + } } void CFsEmailUiHtmlViewerContainer::HandleResourceChange( TInt aType ) @@ -1651,20 +1599,20 @@ TPath headerHtmlFile; headerHtmlFile.Copy( iHtmlFolderPath ); headerHtmlFile.Append( KHeaderHtmlFile ); - + TRAP_IGNORE( CFreestyleMessageHeaderHTML::ExportL( *iMessage, iFs, headerHtmlFile, iAppUi.ClientRect().Width(), iScrollPosition, iViewerSettings->AutoLoadImages() || iAppUi.DisplayImagesCache().Contains(*iMessage), iHeaderExpanded ) ) - - + + if(!iEventHandler->IsMenuVisible()) { TRAP_IGNORE( ReloadPageL() ); } else { - //Load page asynchronously after dismissing menu + //Load page asynchronously after dismissing menu //this is outdated call because it cancels Action menu which is no longer used in 9.2 // iEventHandler->DismissMenuAndReload(); } @@ -1677,8 +1625,8 @@ ( TInt )TBrCtlDefs::ECommandReload ) ); } -void CFsEmailUiHtmlViewerContainer::ShowAttachmentDownloadStatusL( - TFSProgress::TFSProgressStatus aProgressStatus, +void CFsEmailUiHtmlViewerContainer::ShowAttachmentDownloadStatusL( + TFSProgress::TFSProgressStatus aProgressStatus, const TAttachmentData& aAttachmentData ) { TBool freshDraw = EFalse; @@ -1699,18 +1647,18 @@ TRect rect = CalcAttachmentStatusRect(); iStatusIndicator = CFreestyleEmailUiAknStatusIndicator::NewL( rect, this ); freshDraw = ETrue; - } - - if ( !iStatusIndicator->IsVisible() - || ( aAttachmentData.downloadProgress == KNone ) + } + + if ( !iStatusIndicator->IsVisible() + || ( aAttachmentData.downloadProgress == KNone ) || ( aProgressStatus == TFSProgress::EFSStatus_RequestCancelled ) ) { freshDraw = ETrue; } - + TInt duration = KStatusIndicatorDefaultDuration; - if ( ( aAttachmentData.downloadProgress == TFSProgress::EFSStatus_RequestComplete ) - || ( aProgressStatus == TFSProgress::EFSStatus_RequestCancelled ) + if ( ( aAttachmentData.downloadProgress == TFSProgress::EFSStatus_RequestComplete ) + || ( aProgressStatus == TFSProgress::EFSStatus_RequestCancelled ) || ( aAttachmentData.downloadProgress == KComplete ) ) { duration = KStatusIndicatorAutomaticHidingDuration; @@ -1728,22 +1676,22 @@ CArrayFix* intArray = new (ELeave) CArrayFixFlat( 1 ); CleanupStack::PushL( intArray ); intArray->AppendL( aAttachmentData.downloadProgress ); - + statusText = StringLoader::LoadL( R_FSE_VIEWER_ATTACHMENTS_LIST_DOWNLOAD, - *descArray, + *descArray, *intArray ); CleanupStack::PopAndDestroy( intArray ); CleanupStack::PopAndDestroy( descArray ); CleanupStack::PushL( statusText ); } break; - + case TFSProgress::EFSStatus_RequestCancelled: { statusText = aAttachmentData.fileName.AllocLC(); } break; - + default: statusText = KNullDesC().AllocLC(); break; @@ -1778,7 +1726,7 @@ } } } - + CleanupStack::Pop( statusText ); } @@ -1824,7 +1772,7 @@ TRect rect = Rect(); TPoint topLeft = rect.iTl; TPoint bottomRight = rect.iBr; - + TPoint statusTopLeft( topLeft.iX + KStatusIndicatorXMargin, bottomRight.iY - KStatusIndicatorHeight + 1 ); TPoint statusBottomRight( bottomRight.iX - KStatusIndicatorXMargin, bottomRight.iY ); return TRect( statusTopLeft, statusBottomRight ); @@ -1832,13 +1780,13 @@ void CFsEmailUiHtmlViewerContainer::TouchFeedback() { - iTouchFeedBack->InstantFeedback(this, ETouchFeedbackBasic); + iTouchFeedBack->InstantFeedback(this, ETouchFeedbackBasic); } /** * The body fetch link is cmail://body/fetch. Look for the URL separator * and the presence of cmail and body on the url. - * @param aUrl + * @param aUrl * return ETrue for a valid body URL */ TBool CFsEmailUiHtmlViewerContainer::IsMessageBodyURLL(const TDesC& aUrl) @@ -1875,11 +1823,11 @@ { TouchFeedback(); iHeaderExpanded = ETrue; - return ETrue; + return ETrue; } else if (aUrl.Left(index).CompareF(KURLSchemeCmail) == 0) { - TInt bodyIndex = aUrl.Find(KURLTypeBody); + TInt bodyIndex = aUrl.Find(KURLTypeBody); if (bodyIndex == KErrNotFound) { return EFalse; @@ -1896,24 +1844,24 @@ { TPtrC16 temp = data.Mid(separator+1); TLex lex(temp); - lex.Val(iScrollPosition); + lex.Val(iScrollPosition); } return ETrue; } - + } else { return EFalse; } } - } + } // --------------------------------------------------------------------------- // From MBrCtlWindowObserver // --------------------------------------------------------------------------- // -CBrCtlInterface* CFsEmailUiHtmlViewerContainer::OpenWindowL( TDesC& /*aUrl*/, TDesC* /*aTargetName*/, +CBrCtlInterface* CFsEmailUiHtmlViewerContainer::OpenWindowL( TDesC& /*aUrl*/, TDesC* /*aTargetName*/, TBool /*aUserInitiated*/, TAny* /*aReserved*/ ) { return iBrCtlInterface; @@ -1932,10 +1880,10 @@ // From MBrCtlWindowObserver // --------------------------------------------------------------------------- // -void CFsEmailUiHtmlViewerContainer::HandleWindowCommandL( const TDesC& /*aTargetName*/, +void CFsEmailUiHtmlViewerContainer::HandleWindowCommandL( const TDesC& /*aTargetName*/, TBrCtlWindowCommand /*aCommand*/ ) { - + } // --------------------------------------------------------------------------- @@ -1948,7 +1896,7 @@ // look for file:/// _LIT( KFileLink, "file:///"); _LIT( KUrlLink, "http"); - + // This might be linking to header.html or body.html frames // Ignore them. if ( aUrl.Left( KFileLink().Length() ).CompareF( KFileLink ) == 0 ) @@ -1957,7 +1905,7 @@ // Replace all slash character with backslash characters HBufC* embeddedUrl = aUrl.AllocLC(); TPtr ptr = embeddedUrl->Des(); - + _LIT( KBackslash, "\\" ); for ( TInt pos = ptr.Locate('/'); pos >= 0; pos = ptr.Locate('/') ) { @@ -1967,14 +1915,14 @@ // Check whether given url refers to file in the html folder TInt pos = embeddedUrl->FindF( iHtmlFolderPath ); CleanupStack::PopAndDestroy( embeddedUrl ); - pos >= 0 ? launchBrowser = EFalse : ETrue; + pos >= 0 ? launchBrowser = EFalse : ETrue; } // Ignore links starting with cmail:// else if ( aUrl.Left( KURLSchemeCmail().Length() ).CompareF( KURLSchemeCmail ) == 0 ) { launchBrowser = EFalse; } - // THAA-82BEAZ - show popup first + // THAA-82BEAZ - show popup first else if ( aUrl.Left(KUrlLink().Length() ).CompareF( KUrlLink ) == 0 ) { launchBrowser = EFalse; @@ -1998,7 +1946,7 @@ void CFsEmailUiHtmlViewerContainer::PrepareBodyHtmlL( const TDesC& aFileName ) { - + if( iMessage ) { CFSMailMessagePart* htmlBodyPart = iMessage->HtmlBodyPartL(); @@ -2013,7 +1961,7 @@ else { CFSMailMessagePart* textBodyPart = iMessage->PlainTextBodyPartL(); - + if ( textBodyPart ) { CleanupStack::PushL( textBodyPart ); @@ -2065,3 +2013,178 @@ UpdateOverlayButtons( IsVisible() ); } + +void CFsEmailUiHtmlViewerContainer::WriteToFileL(const TDesC& aFileName, RBuf& aHtmlText) + { + _LIT( KCharsetUtf8, "UTF-8" ); + + HBufC8* content8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( aHtmlText ); + CleanupStack::PushL( content8 ); + + RFile targetFile; + CleanupClosePushL( targetFile ); + User::LeaveIfError( targetFile.Replace( iFs, aFileName, EFileWrite ) ); + + RBuf8 messageHeader; + TInt bufSize = KHtmlHeader1().Length() + KCharsetUtf8().Length() + KHtmlHeader2().Length(); + messageHeader.CreateL( bufSize ); + messageHeader.CleanupClosePushL(); + + messageHeader.Append( KHtmlHeader1 ); + messageHeader.Append( KCharsetUtf8 ); + messageHeader.Append( KHtmlHeader2 ); + + RFileWriteStream fileStream( targetFile ); + fileStream.PushL(); + fileStream.WriteL( messageHeader.Ptr(), messageHeader.Length() ); + + TInt bufPos( 0 ); + TInt bufTotalSize = content8->Size(); + + while ( bufPos < bufTotalSize ) + { + TInt segmentLength = content8->Mid( bufPos ).Length(); + fileStream.WriteL( content8->Mid( bufPos ).Ptr(), segmentLength ); + bufPos += segmentLength; + } + + fileStream.CommitL(); + + CleanupStack::PopAndDestroy( &fileStream ); + CleanupStack::PopAndDestroy( &messageHeader ); + CleanupStack::PopAndDestroy( &targetFile ); + CleanupStack::PopAndDestroy( content8 ); + } + + + +/****************************************************************************** + * class PlainTextToHtmlConverter + ******************************************************************************/ + + + +// ----------------------------------------------------------------------------- +// PlainTextToHtmlConverter::PlainTextToHtmlL +// +// ----------------------------------------------------------------------------- +// +void PlainTextToHtmlConverter::PlainTextToHtmlL(const TDesC& aPlainText, RBuf& aHtmlText) + { + const TInt KAllocSize = 1024; + + aHtmlText.Close(); + aHtmlText.Create( aPlainText.Length() + KAllocSize ); + + const TInt searhCases( CFindItemEngine::EFindItemSearchURLBin ); + CFindItemEngine* itemEngine = CFindItemEngine::NewL( aPlainText, CFindItemEngine::TFindItemSearchCase( searhCases ) ); + CleanupStack::PushL ( itemEngine ); + + TInt currentPos = 0; + CFindItemEngine::SFoundItem item; + for ( TBool available(itemEngine->Item(item)); available; available=itemEngine->NextItem(item) ) + { + if ( item.iStartPos < currentPos ) + { + break; + } + + TPtrC textPtr = aPlainText.Mid( currentPos, item.iStartPos-currentPos ); + ConvertTextL( textPtr, aHtmlText ); + + TPtrC urlPtr = aPlainText.Mid( item.iStartPos, item.iLength ); + ConvertUrlL( urlPtr, aHtmlText); + + currentPos = item.iStartPos + item.iLength; + } + + TInt len = aPlainText.Length(); + if ( currentPos < len ) + { + TPtrC textPtr = aPlainText.Mid( currentPos ); + ConvertTextL( textPtr, aHtmlText ); + } + + CleanupStack::PopAndDestroy( itemEngine ); + } + + +// ----------------------------------------------------------------------------- +// PlainTextToHtmlConverter::ConvertTextL +// +// ----------------------------------------------------------------------------- +// +void PlainTextToHtmlConverter::ConvertTextL(const TDesC& aSource, RBuf& aTarget) + { + const TInt KAllocSize = 1024; + const TInt KEntitySize = 32; + + TInt count = aSource.Length(); + for ( TInt i=0; i= aTarget.MaxLength() ) + { + aTarget.ReAllocL( aTarget.MaxLength() + KAllocSize ); + } + + TText ch = aSource[i]; + switch( ch ) + { + case KSOH: // end of line for IMAP and POP + aTarget.Append( KHtmlLineBreakCRLF ); + break; + case KLF: // line feed + case KUnicodeNewLineCharacter: + case KUnicodeParagraphCharacter: + aTarget.Append(KHtmlLineBreak); + break; + case KQuotation: + aTarget.Append( KHtmlQuotation ); + break; + case KAmpersand: + aTarget.Append( KHtmlAmpersand ); + break; + case KGreaterThan: + aTarget.Append( KHtmlGreaterThan ); + break; + case KLessThan: + aTarget.Append( KHtmlLessThan ); + break; + default: + aTarget.Append( ch ); + break; + } + } + } + + +// ----------------------------------------------------------------------------- +// PlainTextToHtmlConverter::ConvertUrlL +// +// ----------------------------------------------------------------------------- +// +void PlainTextToHtmlConverter::ConvertUrlL(const TDesC& aSource, RBuf& aTarget) + { + _LIT( KSchemeDelimiter, "://" ); + _LIT( KUrlFormat, "%S" ); + _LIT( KUrlFormatWithHttp, "%S" ); + + TPtrC format( KUrlFormat() ); + if ( aSource.FindF( KSchemeDelimiter() ) == KErrNotFound ) + { + format.Set( KUrlFormatWithHttp() ); + } + + HBufC* formatBuffer = HBufC::NewLC( format.Length() + aSource.Length() * 2 ); + formatBuffer->Des().Format( format, &aSource, &aSource ); + + TInt len = formatBuffer->Des().Length(); + if ( aTarget.Length() + len >= aTarget.MaxLength() ) + { + aTarget.ReAllocL( aTarget.MaxLength() + len ); + } + + aTarget.Append( *formatBuffer ); + + CleanupStack::PopAndDestroy( formatBuffer ); + } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp --- a/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp Tue May 11 15:57:15 2010 +0300 @@ -64,10 +64,6 @@ #include "FreestyleMessageHeaderURL.h" #include "FreestyleEmailUiAknStatusIndicator.h" #include -// CONSTANTS -// Zoom levels available on the UI -const TInt KZoomLevels[] = { 75, 100, 125, 150 }; -const TInt KZoomLevelCount = sizeof( KZoomLevels ) / sizeof( TInt ); CFsEmailUiHtmlViewerView* CFsEmailUiHtmlViewerView::NewL( CAlfEnv& aEnv, @@ -292,14 +288,12 @@ break; case EFsEmailUiCmdZoomIn: { - TUint zoomLevelIdx = ZoomLevelIndexL(); - SetZoomLevelIndexL( zoomLevelIdx + 1 ); + iContainer->ZoomInL(); } break; case EFsEmailUiCmdZoomOut: { - TUint zoomLevelIdx = ZoomLevelIndexL(); - SetZoomLevelIndexL( zoomLevelIdx - 1 ); + iContainer->ZoomOutL(); } break; case EFsEmailUiCmdHelp: @@ -388,11 +382,12 @@ break; default: { + /* -- pinch zoom only -- if ( aCommand >= EFsEmailUiCmdZoomSmall ) { - TUint zoomLevelIndex = aCommand - EFsEmailUiCmdZoomSmall; - SetZoomLevelIndexL( zoomLevelIndex ); + iContainer->SetZoomLevelL( aCommand - EFsEmailUiCmdZoomSmall ); } + */ } break; } @@ -953,7 +948,9 @@ if ( aResourceId == R_FSEMAILUI_HTMLVIEWER_MENUPANE ) { - + // Pinch zoom only + aMenuPane->SetItemDimmed( EFsEmailUiCmdZoomLevel, ETrue ); + if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) ) { // remove help support in pf5250 @@ -1194,6 +1191,12 @@ return; } + TFSMailMsgId currentMsgId = iMessage->GetMessageId(); + if ( iLastDeletedMessageID == currentMsgId ) + { + return; + } + TInt reallyDelete( ETrue ); if ( iAppUi.GetCRHandler()->WarnBeforeDelete() && @@ -1216,7 +1219,7 @@ RArray msgIds; CleanupClosePushL( msgIds ); - TFSMailMsgId currentMsgId = iMessage->GetMessageId(); + msgIds.Append( currentMsgId ); TFSMailMsgId mailBox = iMessage->GetMailBoxId(); TFSMailMsgId folderId = iMessage->GetFolderId(); @@ -1231,6 +1234,7 @@ prevMsgFolderId ); //Delete the message + iLastDeletedMessageID = iMessage->GetMessageId(); iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds ); CleanupStack::PopAndDestroy( &msgIds ); @@ -1238,7 +1242,6 @@ SendEventToAppUiL( TFSEventMailDeletedFromViewer ); - if ( iAppUi.CurrentActiveView()->Id() == HtmlViewerId ) { //Open the previous message or navigate back to list viewer @@ -1322,92 +1325,21 @@ void CFsEmailUiHtmlViewerView::DynInitZoomMenuL( CEikMenuPane* aMenuPane ) { - FUNC_LOG; - TInt zoomLevelIdx = ZoomLevelIndexL(); + FUNC_LOG; + /* -- Pinch zoom only -- + TInt zoomLevelIdx = iContainer->ZoomLevelL(); // Set the radio button state to match current zoom level - if ( zoomLevelIdx >= 0 && zoomLevelIdx < KZoomLevelCount ) + if ( zoomLevelIdx >= 0 && zoomLevelIdx < iContainer->MaxZoomLevel() ) { TInt curZoomLevel = zoomLevelIdx + EFsEmailUiCmdZoomSmall; aMenuPane->SetItemButtonState( curZoomLevel, EEikMenuItemSymbolOn ); } - } - -TInt CFsEmailUiHtmlViewerView::ZoomLevelIndexL() - { - FUNC_LOG; - TInt zoomLevelIdx = iContainer->BrowserControlIf()->BrowserSettingL( - TBrCtlDefs::ESettingsCurrentZoomLevelIndex ); - - // Behaviour of zooming in Browser Control Interface is different in version 7.1 - // than in previous versions and we need to support both. In older versions there - // are 4 preset zoom levels while version 7.1 can zoom to any percent. - RArray* zoomLevels = iContainer->BrowserControlIf()->ZoomLevels(); - - if ( !zoomLevels || !zoomLevels->Count() || ( *zoomLevels )[0] != KZoomLevels[0] ) - { - // new browser: - // BrowserControlIf gives zoom level percentage insted of index to array - TBool found = EFalse; - - for ( TInt i = 0 ; i < KZoomLevelCount && !found ; ++i ) - { - if ( zoomLevelIdx == KZoomLevels[i] ) - { - zoomLevelIdx = i; - found = ETrue; - } - } - - if ( !found ) - { - zoomLevelIdx = KErrNotFound; - } - } - - return zoomLevelIdx; - } - -void CFsEmailUiHtmlViewerView::SetZoomLevelIndexL( TInt aIndex ) - { - FUNC_LOG; - TInt newValue = KMinTInt; - - // Behaviour of zooming in Browser Control Interface is different in version 7.1 - // than in previous versions and we need to support both. In older versions there - // are 4 preset zoom levels while version 7.1 can zoom to any percent. - RArray* zoomLevels = iContainer->BrowserControlIf()->ZoomLevels(); - - if ( !zoomLevels || !zoomLevels->Count() || ( *zoomLevels )[0] != KZoomLevels[0] ) - { - // new browser: - // BrowserControlIf takes zoom level percentage insted of index to array - if ( aIndex >= 0 && aIndex < KZoomLevelCount ) - { - newValue = KZoomLevels[aIndex]; - } - } - else - { - // old browser - newValue = aIndex; - } - - if ( newValue > KMinTInt ) - { - iContainer->BrowserControlIf()->SetBrowserSettingL( - TBrCtlDefs::ESettingsCurrentZoomLevelIndex, newValue ); - } - } - -// ----------------------------------------------------------------------------- -// CFsEmailUiHtmlViewerView::RestoreZoomLevelL() -// ----------------------------------------------------------------------------- -// -void CFsEmailUiHtmlViewerView::RestoreZoomLevelL() - { - FUNC_LOG; - SetZoomLevelIndexL( ZoomLevelIndexL() ); + */ + aMenuPane->SetItemDimmed( EFsEmailUiCmdZoomSmall, ETrue ); + aMenuPane->SetItemDimmed( EFsEmailUiCmdZoomNormal, ETrue ); + aMenuPane->SetItemDimmed( EFsEmailUiCmdZoomLarge, ETrue ); + aMenuPane->SetItemDimmed( EFsEmailUiCmdZoom150Percent, ETrue ); } // ----------------------------------------------------------------------------- @@ -1645,7 +1577,6 @@ void CFsEmailUiHtmlViewerView::DownloadAttachmentL( const TAttachmentData& aAttachment ) { - iAppUi.DownloadInfoMediator()->AddObserver( this, aAttachment.partData.iMessageId ); iAttachmentsListModel->StartDownloadL(aAttachment); } @@ -1794,12 +1725,6 @@ iContainer->ShowAttachmentDownloadStatusL( aEvent.iProgressStatus, *attachment ); } - - if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete || - aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestCancelled) - { - iAppUi.DownloadInfoMediator()->StopObserving( this, aPart.iMessageId ); - } } void CFsEmailUiHtmlViewerView::RequestResponseL( const TFSProgress& aEvent, const TPartData& aPart ) @@ -1981,11 +1906,6 @@ iAppUi.MoveToNextMsgL( currentMsgId, nextMsgId ); // Next message is displayed in this view through doactivate, because view is re-activate by mail list - - if ( iContainer ) - { - RestoreZoomLevelL(); - } } } } @@ -2033,11 +1953,6 @@ iAppUi.MoveToPreviousMsgL( currentMsgId, prevMsgId ); // Previous message is displayed in this view through doactivate, because view is re-activate by mail list - - if ( iContainer ) - { - RestoreZoomLevelL(); - } } } } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp --- a/emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp Tue May 11 15:57:15 2010 +0300 @@ -713,6 +713,7 @@ { FUNC_LOG; iScrollbar->MakeVisible(EFalse); + FadeOut(ETrue); // hide CAlfVisuals on deactivation } void CFSEmailUiLauncherGridVisualiser::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane) @@ -1839,6 +1840,20 @@ aLayoutArray.AppendL( iParentLayout ); } +// hide or show CAlfVisuals ( used for activation or deactivation ) +void CFSEmailUiLauncherGridVisualiser::FadeOut(TBool aDirectionOut) + { + if ( iParentLayout != NULL ) + { + TAlfTimedValue timedValue( 0, 0 ); + if ( !aDirectionOut ) + { + timedValue.SetTarget( 1, 0 ); + } + iParentLayout->SetOpacity( timedValue ); + } + } + // ----------------------------------------------------------------------------- // CFSEmailUiLauncherGridVisualiser::ShowMailboxSelectionQueryL // ----------------------------------------------------------------------------- diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp --- a/emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -1070,21 +1070,12 @@ } // ----------------------------------------------------------------------------- -// CFSEmailUiLayoutHandler::PcsPopupHighlightColor +// CFSEmailUiLayoutHandler::PcsPopupDimmedFontTransparency // ----------------------------------------------------------------------------- -TRgb CFSEmailUiLayoutHandler::PcsPopupHighlightColor() const +TInt CFSEmailUiLayoutHandler::PcsPopupDimmedFontTransparency() const { FUNC_LOG; - return KPcsPopupHighlightColor; - } - -// ----------------------------------------------------------------------------- -// CFSEmailUiLayoutHandler::PcsPopupDimmedFontColor -// ----------------------------------------------------------------------------- -TRgb CFSEmailUiLayoutHandler::PcsPopupDimmedFontColor() const - { - FUNC_LOG; - return KPcsPopupDimmedFontColor; + return KPcsPopupDimmedFontTransparency; } // ----------------------------------------------------------------------------- diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp --- a/emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp Tue May 11 15:57:15 2010 +0300 @@ -556,10 +556,12 @@ CFSEmailUiMailListVisualiser::~CFSEmailUiMailListVisualiser() { FUNC_LOG; +/* if (iExtension) { iAppUi.GetMailClient()->ReleaseExtension(iExtension); } +*/ SafeDelete(iMailListModelUpdater); SafeDelete(iMailFolder); delete iTouchManager; @@ -1370,9 +1372,16 @@ TRect clientRect = iAppUi.ClientRect(); iScreenAnchorLayout->SetSize( clientRect.Size() ); SetMailListLayoutAnchors(); - ScaleControlBarL(); - SetListAndCtrlBarFocusL(); - + //if the view is already active don't update the icons so they won't "blink" + //when the view is activated. + if(!iThisViewActive) + { + ScaleControlBarL(); + SetListAndCtrlBarFocusL(); + } + + FadeOut(EFalse); // we can show now CAlfVisuals from CurrentView (to show Folders before updating emails) + // Update mail list settings and date formats, is done every time // the user might have changed these in settings, so the list needs to refresh // Store previous modes @@ -1387,9 +1396,13 @@ UpdateMailListTimeDateSettings(); // Check for changed settings, in that case a complete list refresh is needed - TBool refreshNeeded(EFalse); - if ( aCustomMessageId == KStartListWithFolderIdFromHomeScreen - || iSkinChanged + TRefreshState refreshState = ERefreshNone; + if (aCustomMessageId == KStartListWithFolderIdFromHomeScreen) + { + refreshState = EFocusChangeNeeded; + } + + if ( iSkinChanged || iDateChanged || iListMode != prevListMode || iNodesInUse != prevNodesmode @@ -1400,7 +1413,7 @@ || prevDateFormats.iDateSeparator.GetNumericValue() != iDateFormats.iDateSeparator.GetNumericValue() || prevDateFormats.iTimeSeparator.GetNumericValue() != iDateFormats.iTimeSeparator.GetNumericValue() ) { - refreshNeeded = ETrue; + refreshState = EFullRefreshNeeded; iSkinChanged = EFalse; iDateChanged = EFalse; } @@ -1543,7 +1556,7 @@ iFolderListButton->SetTextL( *newFolderName ); CleanupStack::PopAndDestroy( newFolderName ); iMailList->SetFocusedItemL( KFsTreeNoneID ); - refreshNeeded = ETrue; + refreshState = EFullRefreshNeeded; } // Set mailbox name to status pane @@ -1557,7 +1570,7 @@ ConnectionIconHandling(); // REBUILD TREE LIST IF NECESSARY - if ( refreshNeeded ) + if ( refreshState == EFullRefreshNeeded ) { // Try to maintain previously active item if possible. // This is of course not possible if folder has changed. @@ -1581,6 +1594,18 @@ UpdateMailListModelAsyncL(); } } + else if(refreshState == EFocusChangeNeeded) + {//Move focus to the beginning of the list + TInt firstIndex(0); + TFsTreeItemId firstItemId = iMailList->Child( KFsTreeRootID, firstIndex ); + iMailTreeListVisualizer->SetFocusedItemL( firstItemId, EFalse ); + //if the view is already active don't update the list so it won't "blink" + //when the view is activated. + if(!iThisViewActive) + { + iMailList->ShowListL(); + } + } // THE CORRECT FOLDER IS ALREADY OPEN. CHECK IF SOME PARTIAL UPDATE IS NEEDED. else { @@ -1673,6 +1698,7 @@ iMailTreeListVisualizer->NotifyControlVisibilityChange( EFalse ); } iThisViewActive = EFalse; + FadeOut(ETrue); // hide CAlfVisuals on deactivation } // --------------------------------------------------------------------------- @@ -1780,44 +1806,6 @@ // MAIN MENU *************************************************************************** if ( aResourceId == R_FSEMAILUI_MAILLIST_MENUPANE ) { - // Sync/cancel sync - CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox(); - TBool supportsSync = activeMailbox->HasCapability( EFSMBoxCapaSupportsSync ); - TFSMailBoxStatus onlineStatus = activeMailbox->GetMailBoxStatus(); - if ( onlineStatus == EFSMailBoxOnline && - KIpsPlgImap4PluginUid == activeMailbox->GetId().PluginId() ) - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue ); - } - - // flag to hide or show SyncButton - TBool hideSync = GetLatestSyncState(); - if(activeMailbox->CurrentSyncState()==StartingSync) hideSync=EFalse; - - // hide or show options: Sync/cancel sync - if ( !supportsSync ) - { - // POP3 behaviour - if( onlineStatus == EFSMailBoxOnline || iMailListModelUpdater->IsUpdating() ) - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdCancelSync, EFalse ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdCancelSync, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, EFalse ); - } - } - else if ( hideSync || iMailListModelUpdater->IsUpdating() ) - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdCancelSync, ETrue ); - } - // Saves a focus visibility. iLastFocus = EFalse; if( iFocusedControl == EMailListComponent && IsFocusShown() ) @@ -2226,13 +2214,10 @@ // Change background to marking mode DisplayMarkingModeBgL( ETrue ); // Hide drop down menu buttons - if( Layout_Meta_Data::IsLandscapeOrientation() ) - { - iNewEmailButton->SetDimmed(); - iFolderListButton->SetDimmed(); - iSortButton->SetDimmed(); - } - else + iNewEmailButton->SetDimmed(); + iFolderListButton->SetDimmed(); + iSortButton->SetDimmed(); + if( !Layout_Meta_Data::IsLandscapeOrientation() ) { TRect rect(0,0,0,0); iControlBarControl->SetRectL( rect ); @@ -4059,13 +4044,12 @@ TBool supportsSync = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaSupportsSync ); if ( supportsSync ) { - //If synchronizing is ongoing and a new sync is started we ignore it - if(!GetLatestSyncState()) + // If synchronizing is ongoing and a new sync is started we ignore it + if( !GetLatestSyncState() ) { iAppUi.SyncActiveMailBoxL(); // Sync was started by the user - ManualMailBoxSync(ETrue); - iAppUi.ManualMailBoxSync( ETrue ); + ManualMailBoxSync( ETrue ); } } else @@ -4075,24 +4059,7 @@ } } break; - case EFsEmailUiCmdCancelSync: - { - TBool supportsSync = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaSupportsSync ); - if ( supportsSync ) - { - iAppUi.StopActiveMailBoxSyncL(); - // Sync was started by the user - ManualMailBoxSync(ETrue); - iAppUi.ManualMailBoxSync( ETrue ); - } - else - { - //POP3 - iAppUi.GetActiveMailbox()->GoOfflineL(); - } - } - break; - case EFsEmailUiCmdGoOffline: + case EFsEmailUiCmdGoOffline: { iAppUi.GetActiveMailbox()->GoOfflineL(); } @@ -4100,7 +4067,6 @@ case EFsEmailUiCmdGoOnline: { CFSMailBox* mb = iAppUi.GetActiveMailbox(); - iAppUi.ManualMailBoxSync( ETrue ); mb->GoOnlineL(); } break; @@ -7220,8 +7186,9 @@ iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsRead, !IsMarkAsReadAvailableL() ); // Check support for object mail iten moving - TBool supportsMoving = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaMoveToFolder ); - iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsMoveMessage, !supportsMoving ); + iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsMoveMessage, + !(iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaMoveToFolder ) + && iMailFolder->SupportsMoveFromL( iMailFolder->GetFolderType() ) ) ); // Hide / show follow up TBool supportsFlag = TFsEmailUiUtility::IsFollowUpSupported( *iAppUi.GetActiveMailbox() ); @@ -8039,6 +8006,25 @@ aLayoutArray.AppendL( iControlBarControl->Visual() ); } +// hide or show CAlfVisuals ( used for activation or deactivation ) +void CFSEmailUiMailListVisualiser::FadeOut(TBool aDirectionOut) + { + FUNC_LOG; + TAlfTimedValue timedValue( 0, 0 ); + if ( !aDirectionOut ) + { + timedValue.SetTarget( 1, 0 ); + } + if ( iScreenAnchorLayout != NULL ) + { + iScreenAnchorLayout->SetOpacity( timedValue ); + } + if (iControlBarControl && iControlBarControl->Visual() != NULL ) + { + iControlBarControl->Visual()->SetOpacity( timedValue ); + } + } + // Sets aActiveMailboxId and aActiveFolderId from iMailFolder if available TInt CFSEmailUiMailListVisualiser::GetActiveFolderId(TFSMailMsgId& aActiveMailboxId, TFSMailMsgId& aActiveFolderId) const { diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/FreestyleEmailUiUtilities.cpp --- a/emailuis/emailui/src/FreestyleEmailUiUtilities.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiUtilities.cpp Tue May 11 15:57:15 2010 +0300 @@ -1522,6 +1522,7 @@ { FUNC_LOG; RPointerArray attachments; + CleanupResetAndDestroyClosePushL( attachments ); aMsg.AttachmentListL( attachments ); TBool found = EFalse; for ( TInt i=0; i\n" ); _LIT8( KDisplayImagesLeftToRight, - "
%S
" ); + "\n
%S
" ); _LIT8( KDisplayImagesRightToLeft, - "
%S
" ); + "\n
%S
" ); _LIT8 ( KProtocolIdentifier, "://" ); const TInt KMaxEventLength( 256 ); const TInt KFreestyleMessageHeaderHTMLRightMarginInPx( 10 ); @@ -239,15 +240,8 @@ void CFreestyleMessageHeaderHTML::ExportHTMLBodyL() const { HTMLBodyStartL(); - ExportInitialTableL(); - StartHeaderTableL( KHeaderTableName ); - ExportFromL(); - ExportToL(); - ExportCcL(); - ExportBccL(); - ExportSentTimeL(); - ExportSubjectL(); - EndHeaderTableL(); + ExportCollapsedHeaderTableL(); + ExportExpandedHeaderTableL(); ExportAttachmentsL(); ExportDisplayImagesTableL(); HTMLBodyEndL(); @@ -298,128 +292,27 @@ iWriteStream.CommitL(); } -void CFreestyleMessageHeaderHTML::ExportInitialTableL() const +void CFreestyleMessageHeaderHTML::ExportCollapsedHeaderTableL() const { - // set the width, using the visible screen width - TBuf8 tableWidth; - tableWidth.AppendNum( iVisibleWidth ); - - if (iExpanded) - { - iWriteStream.WriteL(_L8("\n")); - } - else - { - iWriteStream.WriteL(_L8("
\n")); - } - - - // start first row: table with the sent info and the '+' icon - iWriteStream.WriteL(_L8("\n")); +void CFreestyleMessageHeaderHTML::ExportExpandedHeaderTableL() const + { + StartHeaderTableL( KExpandedHeaderTableName, iExpanded ); + ExportCollapseButtonL(); + ExportFromL(); + ExportToL(); + ExportCcL(); + ExportBccL(); + ExportSentTimeL(); + ExportSubjectL(); + EndHeaderTableL(); + } - //============================= - // start second row which contains subject - iWriteStream.WriteL(_L8("\n")); - iWriteStream.WriteL(_L8("\n")); // finish subject row - - // end table_initial - iWriteStream.WriteL(_L8("
\n")); - - iWriteStream.WriteL(_L8("\n")); - - // add Sent time and date - iWriteStream.WriteL(_L8("\n")); - - // add "show details" image on the same line as Sent time and date - iWriteStream.WriteL(_L8("\n")); - - - // finish first row - iWriteStream.WriteL(_L8("\n")); - iWriteStream.WriteL(_L8("
")); - - HBufC* dateText = TFsEmailUiUtility::DateTextFromMsgLC( &iMailMessage ); - HBufC* timeText = TFsEmailUiUtility::TimeTextFromMsgLC( &iMailMessage ); + StartHeaderTableL( KCollapsedHeaderTableName, !iExpanded ); + ExportTimeAndExpandButtonL(); + ExportSubjectCollapsedL(); + EndHeaderTableL(); + } - TInt len = dateText->Length() + KSentLineDateAndTimeSeparatorText().Length() + timeText->Length(); - HBufC* sentTimeText = HBufC::NewLC( len ); - TPtr sentTimeTextPtr = sentTimeText->Des(); - sentTimeTextPtr.Append( *dateText ); - sentTimeTextPtr.Append( KSentLineDateAndTimeSeparatorText ); - sentTimeTextPtr.Append( *timeText ); - HBufC8* sentTimeText8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( sentTimeTextPtr ); - CleanupStack::PushL( sentTimeText8 ); - iWriteStream.WriteL( *sentTimeText8 ); - CleanupStack::PopAndDestroy( sentTimeText8 ); - CleanupStack::PopAndDestroy( sentTimeText ); - CleanupStack::PopAndDestroy( timeText ); - CleanupStack::PopAndDestroy( dateText ); - - iWriteStream.WriteL(_L8("
")); - - HBufC* subject = iMailMessage.GetSubject().Alloc(); - /* - * Writes the subject to iWriteStream and also - * takes care of the urls and marks them as hotspots - */ - WriteSubjectL(*subject); - - iWriteStream.WriteL(_L8("")); - - // Write icons (if necessary). - HBufC8* followUp = HTMLHeaderFollowUpIconLC( EFalse ); - HBufC8* priority = HTMLHeaderPriorityIconLC( EFalse ); - - if ( priority ) - { - iWriteStream.WriteL( *priority ); - CleanupStack::PopAndDestroy( priority); - } - - if ( followUp ) - { - iWriteStream.WriteL( *followUp ); - CleanupStack::PopAndDestroy( followUp ); - } - - iWriteStream.WriteL(_L8("
\n")); - - iWriteStream.CommitL(); - } // ----------------------------------------------------------------------------- // CFreestyleMessageHeaderHTML::WriteSubjectL // Writes the subject to iWriteStream and also @@ -706,6 +599,105 @@ iWriteStream.CommitL(); } +void CFreestyleMessageHeaderHTML::ExportCollapseButtonL() const + { + TBuf8 tableWidth; + tableWidth.AppendNum( iVisibleWidth ); + + // Add "Collapse" button as its own table with its own width + iWriteStream.WriteL( _L8("\n") ); + iWriteStream.WriteL( _L8("\n") ); + iWriteStream.WriteL( _L8("\n") ); + + iWriteStream.WriteL( _L8("\n") ); + + iWriteStream.WriteL( _L8("\n")); + iWriteStream.WriteL( _L8("
\n") ); + } + else + { + iWriteStream.WriteL( _L8(" align=\"left\"") ); + iWriteStream.WriteL( _L8(" style=\"padding-left: 10px;\">\n") ); + } + iWriteStream.WriteL( _L8("") ); + iWriteStream.WriteL( _L8("
\n")); + iWriteStream.CommitL(); + } + +void CFreestyleMessageHeaderHTML::ExportTimeAndExpandButtonL() const + { + // set the width, using the visible screen width + TBuf8 tableWidth; + tableWidth.AppendNum( iVisibleWidth ); + + // start first row: table with the sent info and the '+' icon + iWriteStream.WriteL(_L8("\n")); + + iWriteStream.WriteL(_L8("\n")); + + // add Sent time and date + iWriteStream.WriteL(_L8("\n")); + + // Add "expand" button on the same line as Sent time and date + iWriteStream.WriteL(_L8("\n")); + + // finish first row + iWriteStream.WriteL(_L8("\n")); + iWriteStream.WriteL(_L8("
")); + + HBufC* dateText = TFsEmailUiUtility::DateTextFromMsgLC( &iMailMessage ); + HBufC* timeText = TFsEmailUiUtility::TimeTextFromMsgLC( &iMailMessage ); + + TInt len = dateText->Length() + KSentLineDateAndTimeSeparatorText().Length() + timeText->Length(); + HBufC* sentTimeText = HBufC::NewLC( len ); + TPtr sentTimeTextPtr = sentTimeText->Des(); + sentTimeTextPtr.Append( *dateText ); + sentTimeTextPtr.Append( KSentLineDateAndTimeSeparatorText ); + sentTimeTextPtr.Append( *timeText ); + HBufC8* sentTimeText8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( sentTimeTextPtr ); + CleanupStack::PushL( sentTimeText8 ); + iWriteStream.WriteL( *sentTimeText8 ); + CleanupStack::PopAndDestroy( sentTimeText8 ); + CleanupStack::PopAndDestroy( sentTimeText ); + CleanupStack::PopAndDestroy( timeText ); + CleanupStack::PopAndDestroy( dateText ); + + iWriteStream.WriteL(_L8("\n")); + } + else + { + iWriteStream.WriteL(_L8(" align=\"left\"")); + iWriteStream.WriteL(_L8(" style=\"padding-left: 10px;\">\n")); + } + iWriteStream.WriteL(_L8("")); + iWriteStream.WriteL(_L8("
\n")); + iWriteStream.CommitL(); + } + void CFreestyleMessageHeaderHTML::ExportSubjectL() const { iWriteStream.WriteL( _L8("\n")); + iWriteStream.WriteL(_L8("")); + + HBufC* subject = iMailMessage.GetSubject().Alloc(); + /* + * Writes the subject to iWriteStream and also + * takes care of the urls and marks them as hotspots + */ + WriteSubjectL(*subject); + + iWriteStream.WriteL(_L8("")); + + // Write icons (if necessary). + HBufC8* followUp = HTMLHeaderFollowUpIconLC( EFalse ); + HBufC8* priority = HTMLHeaderPriorityIconLC( EFalse ); + + if ( priority ) + { + iWriteStream.WriteL( *priority ); + CleanupStack::PopAndDestroy( priority); + } + + if ( followUp ) + { + iWriteStream.WriteL( *followUp ); + CleanupStack::PopAndDestroy( followUp ); + } + + iWriteStream.WriteL(_L8("\n")); // finish subject row + iWriteStream.CommitL(); + } + void CFreestyleMessageHeaderHTML::ExportFromL() const { RPointerArray froms; @@ -1053,42 +1088,13 @@ iWriteStream.CommitL(); } -void CFreestyleMessageHeaderHTML::StartHeaderTableL( const TDesC8& aTableId ) const +void CFreestyleMessageHeaderHTML::StartHeaderTableL( const TDesC8& aTableId, + TBool /*aVisible*/ ) const { iWriteStream.WriteL( _L8("\n") ); - } - else - { - iWriteStream.WriteL( _L8("\" border=\"0\" width=\"100%\" style=\"display: none\">\n") ); - } - - TBuf8 tableWidth; - tableWidth.AppendNum( iVisibleWidth ); - - // Add "hide details" image as its own table with its own width - iWriteStream.WriteL( _L8("\n")); + iWriteStream.WriteL( aTableId ); + iWriteStream.WriteL( _L8("\" border=\"0\" width=\"100%\"") ); + iWriteStream.WriteL( _L8(">\n") ); iWriteStream.CommitL(); } @@ -1111,15 +1117,6 @@ iWriteStream.CommitL(); } -void CFreestyleMessageHeaderHTML::AddShowDetailL() const - { - HBufC8* event = ClickImageEventL( KDetailImageName ); - CleanupStack::PushL( event ); - AddImageL( KDetailImageName, KShowDetailIconFileName, *event ); - CleanupStack::PopAndDestroy( event ); - iWriteStream.CommitL(); - } - HBufC8* CFreestyleMessageHeaderHTML::ClickImageEventL( const TDesC8& aImageName ) const { TBuf8 event; @@ -1147,14 +1144,6 @@ event.Append( KBccImageName ); event.Append( _L8("')\"") ); } - else if ( aImageName.Compare( KDetailImageName ) == 0 ) - { - event.Append( _L8("onClick=\"toggleHeader('") ); - event.Append( KHeaderTableName ); - event.Append( _L8("', '") ); - event.Append( KDetailImageName ); - event.Append( _L8("')\"") ); - } else if ( aImageName.Compare( KAttachmentImageName ) == 0 ) { event.Append( _L8("onClick=\"toggleField('") ); @@ -1228,8 +1217,15 @@ // Note: since the text in the body is too small at "normal" level, // we have the text size level in the browser set to "Larger" which is 20% larger than the specified size // the "larger" size affects all text which includes the header. - iWriteStream.WriteL( _L8("td { font-family:arial,sans-serif ; font-size:75% }\n")); + iWriteStream.WriteL( _L8("td { font-family:arial,sans-serif ; font-size:75% }\n") ); iWriteStream.WriteL( _L8(".button { background: url('btn_middle.png') repeat-x top left; border: 1px solid #546284; height: 32px; font-size:19px; font-weight: bold; color: #344a6c; font-family:arial,sans-serif; }\n") ); + iWriteStream.WriteL( _L8("input { color: black; position: relative; border: 0; cursor: pointer; overflow: visible; }\n") ); + iWriteStream.WriteL( _L8("input.expand { width: 55px; height: 36px; background: transparent url('")); + iWriteStream.WriteL( KExpandHeaderIconFileName ); + iWriteStream.WriteL( _L8("') no-repeat top left; }\n") ); + iWriteStream.WriteL( _L8("input.collapse { width: 55px; height: 36px; background: transparent url('")); + iWriteStream.WriteL( KCollapseHeaderIconFileName ); + iWriteStream.WriteL( _L8("') no-repeat top left; }\n") ); iWriteStream.WriteL( _L8("\n") ); iWriteStream.CommitL(); } @@ -1248,4 +1244,3 @@ } - diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/OverlayControl.cpp --- a/emailuis/emailui/src/OverlayControl.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/OverlayControl.cpp Tue May 11 15:57:15 2010 +0300 @@ -73,7 +73,7 @@ if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { // Give feedback to user (vibration) - iTouchFeedBack->InstantFeedback( this, ETouchFeedbackBasic ); + iTouchFeedBack->InstantFeedback( this, ETouchFeedbackBasicButton ); SetPointerCapture( ETrue ); } CCoeControl::HandlePointerEventL( aPointerEvent ); diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/ncsaddressinputfield.cpp --- a/emailuis/emailui/src/ncsaddressinputfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/ncsaddressinputfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -290,7 +290,7 @@ FUNC_LOG; // keep the button in view as long as possible - if( iButton ) + if( iButton && iParentControl->IsVisible() ) { const TRect rect( Rect() ); const TRect buttonRect( iButton->Rect() ); @@ -463,7 +463,11 @@ } else { - TRAP_IGNORE( iTextEditor->HandleTextChangedL() ); + if ( iTextEditor->SelectionLength()== 0 ) + { + TRAP_IGNORE( iTextEditor->HandleTextChangedL() ); + } + iTextEditor->SetFocus( EFalse ); TRAP_IGNORE( iAddressPopupList->ClosePopupContactListL() ); } @@ -862,9 +866,10 @@ { iPhysics = aPhysics; iTextEditor->EnableKineticScrollingL( aPhysics ); + iTextEditor->TextLayout()->RestrictScrollToTopsOfLines( ETrue ); } -void CNcsAddressInputField::SetCursorVisible( TBool aCursorVisible ) +void CNcsAddressInputField::SetPhysicsEmulationOngoing( TBool aPhysOngoing ) { - iTextEditor->SetCursorVisible( aCursorVisible ); + iTextEditor->SetPhysicsEmulationOngoing( aPhysOngoing ); } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/ncscomposeview.cpp --- a/emailuis/emailui/src/ncscomposeview.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/ncscomposeview.cpp Tue May 11 15:57:15 2010 +0300 @@ -1629,7 +1629,8 @@ TFsEmailUiUtility::CreatePlainTextPartL( *iNewMessage, iNewMessageTextPart ); InitFieldsL(); - IncludeMessageTextL(); + TBool spaceInBegin = ETrue; + IncludeMessageTextL(spaceInBegin); AttachmentsListControl()->Model()->Clear(); GetAttachmentsFromMailL(); SetAttachmentLabelContentL(); diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/ncscomposeviewcontainer.cpp --- a/emailuis/emailui/src/ncscomposeviewcontainer.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/ncscomposeviewcontainer.cpp Tue May 11 15:57:15 2010 +0300 @@ -54,6 +54,8 @@ #include "FreestyleEmailUiCLSItem.h" +const TInt KHeaderVisibilityThreshold = -100; + // ========================= MEMBER FUNCTIONS ================================== // --------------------------------------------------------------------------- @@ -362,8 +364,8 @@ { // If user started dragging, cancel hotspot actions iIsDragging = ETrue; - iMessageField->SetCursorVisible( EFalse ); - iReadOnlyQuoteField->SetCursorVisible( EFalse ); + iMessageField->SetPhysicsEmulationOngoing( ETrue ); + iReadOnlyQuoteField->SetPhysicsEmulationOngoing( ETrue ); iHeader->SetPhysicsEmulationOngoing( ETrue ); } } @@ -789,11 +791,11 @@ } // update some layout variables - TRect headerRect = iHeader->Rect(); + iHeaderHeight = iHeader->Rect().Height(); TRect bodyRect = iMessageField->Rect(); TRect quoteRect = iReadOnlyQuoteField->Rect(); - iTotalComposerHeight = headerRect.Height() + iSeparatorHeight * 2 + + iTotalComposerHeight = iHeaderHeight + iSeparatorHeight * 2 + bodyRect.Height() + quoteRect.Height(); iVisibleAreaHeight = Rect().Height(); @@ -998,7 +1000,8 @@ TEdwinEvent aEventType ) { FUNC_LOG; - if ( aEdwin == iMessageField || aEdwin == iReadOnlyQuoteField ) + if (( aEdwin == iMessageField || aEdwin == iReadOnlyQuoteField ) && + ( !iPhysics || iPhysics->OngoingPhysicsAction() == CAknPhysics::EAknPhysicsActionNone )) { if ( aEventType == MEikEdwinObserver::EEventTextUpdate || aEventType == MEikEdwinObserver::EEventNavigation ) @@ -1916,7 +1919,19 @@ { headerPos.iY += moveY; iHeader->SetPosition( headerPos ); - + + // set header invisible if it is not in visible area + // this is done to prevent drawing of header when it is not necessary + if ( headerPos.iY + iHeaderHeight <= KHeaderVisibilityThreshold && iHeader->IsVisible() ) + { + iHeader->MakeVisible( EFalse ); + } + // set header visible if it is in visible area + else if ( headerPos.iY + iHeaderHeight > KHeaderVisibilityThreshold && !iHeader->IsVisible() ) + { + iHeader->MakeVisible( ETrue ); + } + TPoint msgPos( iMessageField->Position() ); msgPos.iY += moveY; iMessageField->SetPosition( msgPos ); @@ -1931,7 +1946,7 @@ iSeparatorLineYPos += moveY; UpdateScrollBar(); - DrawNow(); + DrawDeferred(); } } else @@ -1950,8 +1965,15 @@ { FUNC_LOG; TInt scrollOffset = aNewPosition.iY - iVisibleAreaHeight / 2; + + // when the composer view is overlapped by other view for instance task switcher or screensaver + // physics sends a faulty event to move the composer view down. + // This action is ignored here. + if (aNewPosition.iY != 0) + { Scroll( scrollOffset, aDrawNow ); } + } // ----------------------------------------------------------------------------- // CNcsComposeViewContainer::PhysicEmulationEnded @@ -1962,8 +1984,8 @@ { FUNC_LOG; iIsFlicking = EFalse; - iMessageField->SetCursorVisible( ETrue ); - iReadOnlyQuoteField->SetCursorVisible( ETrue ); + iMessageField->SetPhysicsEmulationOngoing( EFalse ); + iReadOnlyQuoteField->SetPhysicsEmulationOngoing( EFalse ); iHeader->SetPhysicsEmulationOngoing( EFalse ); } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/ncseditor.cpp --- a/emailuis/emailui/src/ncseditor.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/ncseditor.cpp Tue May 11 15:57:15 2010 +0300 @@ -650,3 +650,15 @@ caps.MergeWith(caps2); return caps; } + + +void CNcsEditor::SetPhysicsEmulationOngoing( TBool aPhysOngoing ) + { + iPhysOngoing = aPhysOngoing; + this->SetCursorVisible( !aPhysOngoing ); + } + +TBool CNcsEditor::IsPhysicsEmulationOngoing() const + { + return iPhysOngoing; + } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/ncseditorcustomdraw.cpp --- a/emailuis/emailui/src/ncseditorcustomdraw.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/ncseditorcustomdraw.cpp Tue May 11 15:57:15 2010 +0300 @@ -82,13 +82,15 @@ TRect& aDrawn ) const { FUNC_LOG; + TRect drawRect( aParam.iDrawRect ); + if ( iPrevBrX == 0 ) { - const_cast(this)->iPrevBrX = aParam.iDrawRect.iBr.iX; + const_cast(this)->iPrevBrX = drawRect.iBr.iX; } // draw background if text selection is ongoing - if ( iEditor->SelectionLength() ) + if ( !iEditor->IsPhysicsEmulationOngoing() ) { iCustomDrawer->DrawBackground( aParam, aBackground, aDrawn ); } @@ -96,29 +98,34 @@ { aDrawn = aParam.iDrawRect; } - - if ( aParam.iDrawRect.iTl.iX < iPrevBrX ) + + if ( drawRect.iTl.iY == 0 ) + { + drawRect.iTl.iY = drawRect.Height() - iLineHeigth; + } + + if ( drawRect.iTl.iX < iPrevBrX ) { aParam.iGc.SetPenColor( iLineColor ); TInt margin( 0 ); - if ( aParam.iDrawRect.Height() < iLineHeigth || - aParam.iDrawRect.Height() == iLineOffset ) + if ( drawRect.Height() < iLineHeigth || + drawRect.Height() == iLineOffset ) { margin = 1; } - TRect currentRect( aParam.iDrawRect.iTl , TPoint( aParam.iDrawRect.iBr.iX, aParam.iDrawRect.iTl.iY + iLineOffset - margin )); + TRect currentRect( drawRect.iTl , TPoint( drawRect.iBr.iX, drawRect.iTl.iY + iLineOffset - margin )); - while ( currentRect.iBr.iY <= aParam.iDrawRect.iBr.iY ) + while ( currentRect.iBr.iY <= drawRect.iBr.iY ) { - if ( currentRect.iTl.iY >= aParam.iDrawRect.iTl.iY ) + if ( currentRect.iTl.iY >= drawRect.iTl.iY ) { aParam.iGc.DrawLine( TPoint( currentRect.iTl.iX, currentRect.iBr.iY), currentRect.iBr ); } currentRect.Move( 0, iLineHeigth ); } - const_cast(this)->iPrevBrX = aParam.iDrawRect.iBr.iX; + const_cast(this)->iPrevBrX = drawRect.iBr.iX; } } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/ncsheadercontainer.cpp --- a/emailuis/emailui/src/ncsheadercontainer.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/ncsheadercontainer.cpp Tue May 11 15:57:15 2010 +0300 @@ -1178,7 +1178,7 @@ if( !iAacListBox->IsVisible() ) { iAacListBox->SetPopupMaxRect( CalculatePopupRect() ); - iAacListBox->InitAndSearchL( aMatchString ); + iAacListBox->InitAndSearchL( aMatchString, 1 ); iAacListBox->ActivateL(); } else @@ -2054,8 +2054,8 @@ // void CNcsHeaderContainer::SetPhysicsEmulationOngoing( TBool aPhysOngoing ) { - iToField->SetCursorVisible( !aPhysOngoing ); - iCcField->SetCursorVisible( !aPhysOngoing ); - iBccField->SetCursorVisible( !aPhysOngoing ); - iSubjectField->SetCursorVisible( !aPhysOngoing ); + iToField->SetPhysicsEmulationOngoing( aPhysOngoing ); + iCcField->SetPhysicsEmulationOngoing( aPhysOngoing ); + iBccField->SetPhysicsEmulationOngoing( aPhysOngoing ); + iSubjectField->SetPhysicsEmulationOngoing( aPhysOngoing ); } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/ncspopuplistbox.cpp --- a/emailuis/emailui/src/ncspopuplistbox.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/ncspopuplistbox.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,7 +23,6 @@ #include // R_FSE_EDITOR_ADDRESS_LIST_REMOTE_LOOKUP_SEARCH #include // StringLoader #include -#include //For LanguageNotSupported errorNote #include #include #include @@ -111,10 +110,10 @@ // ----------------------------------------------------------------------------- // CNcsPopupListBox::InitAndSearchL // ----------------------------------------------------------------------------- -void CNcsPopupListBox::InitAndSearchL( const TDesC& aText ) +void CNcsPopupListBox::InitAndSearchL( const TDesC& aText, TInt aMode ) { FUNC_LOG; - SetSearchTextL( aText ); + SetSearchTextL( aText, aMode ); RPointerArray emptyArray; CleanupClosePushL( emptyArray ); OperationCompleteL( ESearchContacts, emptyArray ); @@ -246,7 +245,7 @@ TListBoxEvent aEventType ) { if ( aEventType == EEventItemClicked || - aEventType == EEventItemSingleClicked ) + aEventType == EEventItemSingleClicked ) { iHeaderContainer.DoPopupSelectL(); } @@ -302,7 +301,7 @@ // CNcsPopupListBox::SetSearchTextL // ----------------------------------------------------------------------------- // -void CNcsPopupListBox::SetSearchTextL( const TDesC& aText ) +void CNcsPopupListBox::SetSearchTextL( const TDesC& aText, TInt aMode ) { FUNC_LOG; delete iCurrentSearchText; @@ -312,7 +311,7 @@ { if ( iContactHandler ) { - iContactHandler->SearchMatchesL( aText, this, &iMailBox ); + iContactHandler->SearchMatchesL( aText, this, &iMailBox, aMode ); } } } @@ -692,13 +691,16 @@ CNcsPopupListBox& tmpListBox = const_cast( iListBox ); const TInt scrollbarBreadth = tmpListBox.ScrollBarFrame()-> ScrollBarBreadth( CEikScrollBar::EVertical ); - if ( AknLayoutUtils::LayoutMirrored() ) + if ( scrollbarBreadth > 0 ) { - itemRect.iTl.iX = iListBox.Rect().iTl.iX + scrollbarBreadth; - } - else - { - itemRect.iBr.iX = iListBox.Rect().iBr.iX - scrollbarBreadth; + if ( AknLayoutUtils::LayoutMirrored() ) + { + itemRect.iTl.iX = iListBox.Rect().iTl.iX + scrollbarBreadth; + } + else + { + itemRect.iBr.iX = iListBox.Rect().iBr.iX - scrollbarBreadth; + } } } @@ -769,12 +771,14 @@ aItemIndex--; } - // change color to gray if match doesn't have email address. - if( clsItemArray[aItemIndex]->EmailAddress().Compare( KNullDesC ) == 0 ) - { - TRgb dimmedColor = iListBox.LayoutHandler().PcsPopupDimmedFontColor(); - iGc->SetPenColor( dimmedColor ); - } + // Change text transparency if match doesn't have email address. + if ( clsItemArray[aItemIndex]->EmailAddress().Compare( KNullDesC ) == 0 ) + { + const TInt KTransparency = + iListBox.LayoutHandler().PcsPopupDimmedFontTransparency(); + textColor.SetAlpha( KTransparency ); + iGc->SetPenColor( textColor ); + } // For now, we support underlining the matching part only if the // text is written completely with left-to-right script diff -r e64954c2c8e2 -r e8f259fad141 emailuis/emailui/src/ncssubjectfield.cpp --- a/emailuis/emailui/src/ncssubjectfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/emailui/src/ncssubjectfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -600,9 +600,10 @@ void CNcsSubjectField::EnableKineticScrollingL(CAknPhysics* aPhysics) { iTextEditor->EnableKineticScrollingL(aPhysics); + iTextEditor->TextLayout()->RestrictScrollToTopsOfLines( ETrue ); } -void CNcsSubjectField::SetCursorVisible( TBool aCursorVisible ) +void CNcsSubjectField::SetPhysicsEmulationOngoing( TBool aPhysOngoing ) { - iTextEditor->SetCursorVisible( aCursorVisible ); + iTextEditor->SetPhysicsEmulationOngoing( aPhysOngoing ); } diff -r e64954c2c8e2 -r e8f259fad141 emailuis/uicomponents/src/fstreevisualizerbase.cpp --- a/emailuis/uicomponents/src/fstreevisualizerbase.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/emailuis/uicomponents/src/fstreevisualizerbase.cpp Tue May 11 15:57:15 2010 +0300 @@ -2535,7 +2535,11 @@ void CFsTreeVisualizerBase::SetItemsAlwaysExtendedL(TBool aAlwaysExtended) { FUNC_LOG; - if (iFlags.IsSet(EItemsAlwaysExtended) != aAlwaysExtended ) + // Do not change this to: IsItemsAlwaysExtended() != aAlwaysExtended, because + // it will not work. TBool is defined as TInt and thus this comparison + // comes out as TInt != TInt, which always evaluates true in this case. + if ( ( IsItemsAlwaysExtended() && !aAlwaysExtended ) || + ( !IsItemsAlwaysExtended() && aAlwaysExtended ) ) { iFlags.Assign(EItemsAlwaysExtended, aAlwaysExtended); TFsTreeIterator treeIter( diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h --- a/ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h Tue May 11 15:57:15 2010 +0300 @@ -42,6 +42,7 @@ class CIpsPlgSmtpService; class CIpsPlgSyncStateHandler; class CIpsPlgEventHandler; +class CIpsPlgOperationWait; /** * FreestyleIpsServices plugin class @@ -611,8 +612,15 @@ const TFSMailMsgId& aMailBoxId, const TFSMailMsgId& aOriginalMessageId, const TDesC& aHeaderDescriptor ); - -private: + + /** + * Resolves the possible signature text to be added to message body. + * + * @return Pointer to the descriptor containing the signature text, or + * NULL if signature adding is not set or signature text is + * of zero length. Ownership to caller. + */ + HBufC* ResolveSignatureTextL( const TFSMailMsgId& aMailBoxId ); /** * Maps symbian msv api's folder type to fs folder type @@ -712,6 +720,10 @@ // delete draft synchronously CActiveSchedulerWait iWait; // + + CIpsPlgOperationWait* iWaitDeleteMessage; + CMsvEntry* icEntry; + CMsvOperation* iMsvOpDeleteMessage; }; #endif /* IPSPLGSOSBASEPLUGIN_H */ diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssosplugin/src/ipsplgeventhandler.cpp --- a/ipsservices/ipssosplugin/src/ipsplgeventhandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssosplugin/src/ipsplgeventhandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -1196,12 +1196,7 @@ // --------------------------------------------------------------------------- TUid CIpsPlgEventHandler::MtmId() const { - TUid ret = KSenduiMtmImap4Uid; - if ( iBasePlugin.MtmId().iUid == KIpsPlgPop3PluginUidValue ) - { - ret = KSenduiMtmPop3Uid; - } - return ret; + return iBasePlugin.MtmId(); } // // ---------------------------------------------------------------------------- @@ -1329,6 +1324,7 @@ } RPointerArray observers; + CleanupClosePushL( observers ); // not owning classes MailboxObserversL( aAccount, observers ); if ( find != KErrNotFound ) @@ -1342,7 +1338,7 @@ obs->SetKeyAndActivateL( aSettingKey, observers ); iIPSSettingsObservers.AppendL( obs ); } - observers.Close(); + CleanupStack::PopAndDestroy( &observers ); } // ---------------------------------------------------------------------------- diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssosplugin/src/ipsplgimap4plugin.cpp --- a/ipsservices/ipssosplugin/src/ipsplgimap4plugin.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssosplugin/src/ipsplgimap4plugin.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,6 +19,7 @@ #include "emailtrace.h" #include "ipsplgheaders.h" +#include // CleanupResetAndDestroyPushL const TInt KConnectOpPriority = CActive::EPriorityStandard; @@ -663,7 +664,7 @@ if( folder ) { CleanupStack::PushL( folder ); - aFolderList.Append( folder ); + aFolderList.AppendL( folder ); CleanupStack::Pop( folder ); } @@ -673,7 +674,7 @@ if( folder ) { CleanupStack::PushL( folder ); - aFolderList.Append( folder ); + aFolderList.AppendL( folder ); CleanupStack::Pop( folder ); } @@ -683,7 +684,7 @@ if( folder ) { CleanupStack::PushL( folder ); - aFolderList.Append( folder ); + aFolderList.AppendL( folder ); CleanupStack::Pop( folder ); } diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp --- a/ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp Tue May 11 15:57:15 2010 +0300 @@ -30,6 +30,7 @@ _LIT8( KRequest, "REQUEST" ); _LIT8( KResponse, "RESPONSE" ); _LIT8( KCancel, "CANCEL" ); +_LIT( KLineFeed, "\r\n"); #ifdef __WINS__ _LIT( KEmulatorIMEI, "123456789012345" ); @@ -64,6 +65,22 @@ CIpsPlgSosBasePlugin::~CIpsPlgSosBasePlugin() { FUNC_LOG; + if ( iMsvOpDeleteMessage ) + { + iMsvOpDeleteMessage->Cancel(); + } + + if ( iWaitDeleteMessage ) + { + iWaitDeleteMessage->Cancel(); + } + + delete iMsvOpDeleteMessage; + iMsvOpDeleteMessage = NULL; + delete iWaitDeleteMessage; + iWaitDeleteMessage = NULL; + delete icEntry; + icEntry = NULL; if ( iWait.IsStarted() ) { iWait.AsyncStop(); @@ -1743,7 +1760,7 @@ void CIpsPlgSosBasePlugin::DeleteMessagesByUidL( const TFSMailMsgId& /*aMailBoxId*/, const TFSMailMsgId& /*aFolderId*/, - const RArray& aMessages ) + const RArray& aMessages ) { FUNC_LOG; CMsvEntrySelection* sel=new(ELeave) CMsvEntrySelection; @@ -1754,49 +1771,93 @@ TMsvId service; TMsvEntry parentEntry; - - for(TInt i=0; iGetEntry( aMessages[i].Id(), service, tEntry ); - - //make sure that only messages get deleted. - if( tEntry.iType == KUidMsvMessageEntry ) + if ( iMsvOpDeleteMessage ) { - iSession->GetEntry( tEntry.Parent( ), service, parentEntry ); - - CMsvEntry *cEntry = CMsvEntry::NewL( - *iSession, tEntry.Id(), TMsvSelectionOrdering() ); - CleanupStack::PushL( cEntry ); - CIpsPlgOperationWait* wait = CIpsPlgOperationWait::NewLC( ); - // Sets bit 32 of iMtmData1, used when msg deleted in Offline - // and status hasn't updated to server (client entry still exists) - tEntry.SetLocallyDeleted( ETrue ); - CMsvOperation* msvOp = cEntry->ChangeL( tEntry, wait->iStatus ); - CleanupStack::PushL(msvOp); - wait->Start(); - sel->AppendL( tEntry.Id() ); - CleanupStack::PopAndDestroy( 3, cEntry ); + iMsvOpDeleteMessage->Cancel(); + } + + if ( iWaitDeleteMessage ) + { + iWaitDeleteMessage->Cancel(); } - } - - CIpsPlgSingleOpWatcher* watcher = CIpsPlgSingleOpWatcher::NewL( *this ); - CleanupStack::PushL( watcher ); - CMsvOperation* op = CIpsPlgDeleteRemote::NewL( *iSession, - watcher->iStatus, *sel ); - watcher->SetOperation( op ); - - // make draft deletion synchronous so that empty drafts are not left after application close - if ( parentEntry.Id() == KMsvDraftEntryIdValue && count == 1 ) - { - iWait.Start(); - CleanupStack::PopAndDestroy( watcher ); + + delete iMsvOpDeleteMessage; + iMsvOpDeleteMessage = NULL; + delete iWaitDeleteMessage; + iWaitDeleteMessage = NULL; + delete icEntry; + icEntry = NULL; } else { - iOperations.AppendL( watcher ); - CleanupStack::Pop( watcher ); + for( TInt i = 0; i < count; i++ ) + { + iSession->GetEntry( aMessages[i].Id(), service, tEntry ); + + //make sure that only messages get deleted. + if( tEntry.iType == KUidMsvMessageEntry ) + { + if(iMsvOpDeleteMessage) + { + iMsvOpDeleteMessage->Cancel(); + delete iMsvOpDeleteMessage; + iMsvOpDeleteMessage = NULL; + } + + if ( iWaitDeleteMessage ) + { + iWaitDeleteMessage->Cancel(); + delete iWaitDeleteMessage; + iWaitDeleteMessage = NULL; + } + + delete icEntry; + icEntry = NULL; + + iSession->GetEntry( tEntry.Parent( ), service, parentEntry ); + + icEntry = CMsvEntry::NewL( + *iSession, tEntry.Id(), TMsvSelectionOrdering() ); + + + // priority slightly increased not to pause the function longer than needed + iWaitDeleteMessage = CIpsPlgOperationWait::NewL( CActive::EPriorityStandard+1 ); + // Sets bit 32 of iMtmData1, used when msg deleted in Offline + // and status hasn't updated to server (client entry still exists) + tEntry.SetLocallyDeleted( ETrue ); + + iMsvOpDeleteMessage = icEntry->ChangeL( tEntry, + iWaitDeleteMessage->iStatus ); + + iWaitDeleteMessage->Start(); + + sel->AppendL( tEntry.Id() ); + } + } + + CIpsPlgSingleOpWatcher* watcher = CIpsPlgSingleOpWatcher::NewLC( *this ); + + CMsvOperation* op = CIpsPlgDeleteRemote::NewL( *iSession, + watcher->iStatus, *sel ); + watcher->SetOperation( op ); + + // make draft deletion synchronous so that empty drafts are not left after application close + if ( parentEntry.Id() == KMsvDraftEntryIdValue && count == 1 ) + { + iWait.Start(); + CleanupStack::PopAndDestroy( watcher ); + } + else + { + iOperations.AppendL( watcher ); + CleanupStack::Pop( watcher ); + } } - + CleanupStack::PopAndDestroy( sel ); } @@ -2177,14 +2238,37 @@ textBodyPart->FetchedContentSize() ); TPtr bPtr( body->Des() ); origMsgTextBodyPart->GetContentToBufferL( bPtr, 0 ); - HBufC* content = HBufC::NewLC( - hPtr.Length() + bPtr.Length() ); - TPtr cPtr( content->Des() ); + TInt contentLength = hPtr.Length() + bPtr.Length() + + KLineFeed().Length(); + HBufC* signatureText = NULL; + // if signature resolving leaves, ignore it, i.e., + // continue without signature adding + TRAP_IGNORE( signatureText = + ResolveSignatureTextL( aMailBoxId ) ); + if ( signatureText ) + { + CleanupStack::PushL( signatureText ); + contentLength += signatureText->Length() + + KLineFeed().Length(); + } + HBufC* content = HBufC::NewLC( contentLength ); + TPtr cPtr( content->Des() ); + if ( signatureText ) + { + cPtr.Append( *signatureText ); + // extra empty line between signature and original txt + cPtr.Append( KLineFeed ); + } + cPtr.Append( KLineFeed ); cPtr.Append( hPtr ); cPtr.Append( bPtr ); textBodyPart->SetContent( cPtr ); textBodyPart->SaveL(); CleanupStack::PopAndDestroy( content ); + if ( signatureText ) + { + CleanupStack::PopAndDestroy( signatureText ); + } CleanupStack::PopAndDestroy( body ); CleanupStack::PopAndDestroy( origMsgTextBodyPart ); } @@ -2196,6 +2280,25 @@ // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- +HBufC* CIpsPlgSosBasePlugin::ResolveSignatureTextL( + const TFSMailMsgId& aMailBoxId ) + { + FUNC_LOG; + HBufC* signatureText = NULL; + + if ( iSettingsApi && iSession ) + { + TMsvEntry entry; + TMsvId serv; + iSession->GetEntry( aMailBoxId.Id(), serv, entry ); + signatureText = iSettingsApi->SignatureTextL( entry ); + } + + return signatureText; + } + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- void CIpsPlgSosBasePlugin::DisconnectL( const TFSMailMsgId& aMailBoxId, MFSMailRequestObserver& aObserver, diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssossettings/bwins/ipssossettingsu.def --- a/ipsservices/ipssossettings/bwins/ipssossettingsu.def Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssossettings/bwins/ipssossettingsu.def Tue May 11 15:57:15 2010 +0300 @@ -71,4 +71,5 @@ ?UpdateMode@CIpsSetDataExtension@@QBE?AW4TIpsSetDataAoUpdateModes@@XZ @ 70 NONAME ; enum TIpsSetDataAoUpdateModes CIpsSetDataExtension::UpdateMode(void) const ?NewLC@CIpsSetDataExtension@@SAPAV1@XZ @ 71 NONAME ; class CIpsSetDataExtension * CIpsSetDataExtension::NewLC(void) ?Protocol@CIpsSetDataExtension@@QBE?AVTUid@@XZ @ 72 NONAME ; class TUid CIpsSetDataExtension::Protocol(void) const + ?SignatureTextL@CIpsSetDataApi@@QAEPAVHBufC16@@ABVTMsvEntry@@@Z @ 73 NONAME ; class HBufC16 * CIpsSetDataApi::SignatureTextL(class TMsvEntry const &) diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssossettings/eabi/IPSSOSSETTINGSU.DEF --- a/ipsservices/ipssossettings/eabi/IPSSOSSETTINGSU.DEF Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssossettings/eabi/IPSSOSSETTINGSU.DEF Tue May 11 15:57:15 2010 +0300 @@ -122,4 +122,5 @@ _ZTV27CIpsSetUiSubscriptionDialog @ 121 NONAME _ZTV31CSubscriptionDialogActiveHelper @ 122 NONAME _ZTV9CIpsSetUi @ 123 NONAME + _ZN14CIpsSetDataApi14SignatureTextLERK9TMsvEntry @ 124 NONAME diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssossettings/inc/ipssetdataapi.h --- a/ipsservices/ipssossettings/inc/ipssetdataapi.h Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssossettings/inc/ipssetdataapi.h Tue May 11 15:57:15 2010 +0300 @@ -167,6 +167,17 @@ TMsvEntry& aService, const TDesC& aMailboxName ); + /** + * Returns pointer to descriptor containing signature text if signature + * has been set to be added to outgoing mails. Otherwise returns NULL + * pointer. + * Ownership of the descriptor is passed to the caller. + * @param aService Service entry for which signature text setting is + * * resolved. + * @return Pointer to descriptor containing the signature text. + */ + IMPORT_C HBufC* SignatureTextL( const TMsvEntry& aService ); + private: /** diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssossettings/inc/ipssetuiitemaccesspoint.h --- a/ipsservices/ipssossettings/inc/ipssetuiitemaccesspoint.h Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssossettings/inc/ipssetuiitemaccesspoint.h Tue May 11 15:57:15 2010 +0300 @@ -109,6 +109,13 @@ * @return HBufC* Access point name */ HBufC* AccessPointNameLC( TInt aIndex ); + + /** + * Returns Wap index based on its Id. + * + * @return Index of the wap. + */ + void InitializeSelectionL(); protected: // Constructors @@ -149,14 +156,7 @@ * @param aBearerFilter Filter for supported bearers. */ void InitializeL( const TInt aBearerFilter ); - - /** - * Returns Wap index based on its Id. - * - * @return Index of the wap. - */ - void InitializeSelectionL(); - + /** * Returns Wap index based on its Id. * diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssossettings/inc/ipssetutilsconsts.h --- a/ipsservices/ipssossettings/inc/ipssetutilsconsts.h Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssossettings/inc/ipssetutilsconsts.h Tue May 11 15:57:15 2010 +0300 @@ -110,7 +110,8 @@ // default values for ipssetdataextension // cmail has different default value -const TInt KIpsSetExtDefaultAlwaysOnlineState = EMailAoOff; +//The default value for sync interval is 1 hour, so ao state should be always on. +const TInt KIpsSetExtDefaultAlwaysOnlineState = EMailAoAlways; // const TInt KIpsSetExtDefaultEmailNotificationState = EMailEmnOff; const TBool KIpsSetExtDefaultHideMsgs = EFalse; diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssossettings/src/ipssetdataapi.cpp --- a/ipsservices/ipssossettings/src/ipssetdataapi.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssossettings/src/ipssetdataapi.cpp Tue May 11 15:57:15 2010 +0300 @@ -30,6 +30,7 @@ #include // RTelServer #include // RMobilePhone #include +#include #include "ipssetdatastorer.h" #include "ipssetdata.h" @@ -45,7 +46,7 @@ #include "ipssetwizardadapter.h" #include "ipssetwizardsettingscenrepkeys.h" - +#include "ipssetdatasignature.h" const TInt KIpsDataApiMaxPassLen = 256; const TInt KWizardDataPopIndicator = 0; @@ -735,6 +736,31 @@ CleanupStack::PopAndDestroy( 2, settingsData ); // dataManager } + +// ---------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +EXPORT_C HBufC* CIpsSetDataApi::SignatureTextL( const TMsvEntry& aService ) + { + FUNC_LOG; + HBufC* signatureText( NULL ); + CIpsSetData* settingsData = CIpsSetData::NewLC(); + CIpsSetDataManager* dataManager = CIpsSetDataManager::NewLC( iSession ); + dataManager->LoadEmailSettingsL( aService, *settingsData ); + // the IncludeSignature returns zero in case that inclusion is ON.. + if ( !settingsData->IncludeSignature() ) + { + CRichText* rText = settingsData->Signature().iRichText; + if ( rText ) + { + signatureText = HBufC::NewL( KIpsSetUiMaxSettingsSignatureLength ); + TPtr sPtr = signatureText->Des(); + rText->Extract( sPtr, 0, KIpsSetUiMaxSettingsSignatureLength ); + } + } + CleanupStack::PopAndDestroy( 2, settingsData ); // dataManager + return signatureText; + } + // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- void CIpsSetDataApi::GetImapChildFoldersL( diff -r e64954c2c8e2 -r e8f259fad141 ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp --- a/ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp Tue May 11 15:57:15 2010 +0300 @@ -26,6 +26,7 @@ // #include // CRepository #include +#include #include "ipssetwizardadapter.h" #include "ipssetdatamanager.h" @@ -414,7 +415,56 @@ aSetData.SetUserAuthentication( CIpsSetData::EUseIncoming ); iap = SetIAPByNameL( iRecomendedAP ); - aSetData.SetIapL( iap, iap ); + + TBool setIAP = ETrue; + //if IAP isn't set by SettingWizard, we try to get the SNAP. + if ( iap.iIAP <= 0 ) + { + //Use SNAP when we got it and it does contain access point. + //For other situations as below, we set 'ask when need' or default IAP + //1. defConnValue.iType == ECmDefConnAskOnce + //2. Got SNAP, but it does not contain any acess point + //3. Got default IAP when defConnValue.iType == ECmDefConnConnectionMethod + iap.iDialogPref = ECommDbDialogPrefPrompt; + iap.iIAP = 0; + + RCmManager cmmgr; + cmmgr.OpenLC(); + TCmDefConnValue defConnValue; + cmmgr.ReadDefConnL( defConnValue ); + //Check default connection is destination or connection method + if ( defConnValue.iType == ECmDefConnDestination ) + { + //Get SNAP from cmmgr + RCmDestination destination; + CleanupClosePushL( destination ); + destination = cmmgr.DestinationL( defConnValue.iId ); + //check if SNAP has IAPs + if ( destination.ConnectionMethodCount() > 0 ) + { + //if SNAP contain access point, we use SNAP + CImIAPPreferences* iapPref = CImIAPPreferences::NewLC(); + iapPref->SetSNAPL( defConnValue.iId ); + + aSetData.SetIapL( *iapPref, *iapPref ); + CleanupStack::PopAndDestroy( iapPref ); + + setIAP = EFalse; + } + CleanupStack::PopAndDestroy( &destination ); + } + else if( defConnValue.iType == ECmDefConnConnectionMethod ) + { + iap.iDialogPref = ECommDbDialogPrefDoNotPrompt; + iap.iIAP = defConnValue.iId; + } + CleanupStack::PopAndDestroy( &cmmgr ); + } + //If no valid IAP or destination, set zero. + if ( setIAP ) + { + aSetData.SetIapL( iap, iap ); + } // EIpsSetDataOutSecurityAuth // EIpsSetDataOutSecurityAuth } @@ -517,6 +567,8 @@ TImIAPChoice iap; TBuf buf; CIpsSetUiItemAccessPoint* ipsSetAP = CIpsSetUiItemAccessPoint::NewLC(); + //Initial IAP list + ipsSetAP->InitializeSelectionL(); // iapcount = ipsSetAP->iIapList.Count(); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mragnversit2/inc/esmrcleanuppointerarray.inl --- a/meetingrequest/mragnversit2/inc/esmrcleanuppointerarray.inl Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mragnversit2/inc/esmrcleanuppointerarray.inl Tue May 11 15:57:15 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -12,7 +12,7 @@ * Contributors: * * Description: A class for simplifying cleanup of RPointerArrays -* +* * */ @@ -23,19 +23,19 @@ @param aRef The RPointerArray to be cleaned up. @internalTechnology */ -template +template inline void TCleanupPointerArray::PushL(T& aRef) { CleanupStack::PushL(TCleanupItem(&ResetAndDestroy, &aRef)); } - + /** Takes a pointer to an RPointerArray and calls ResetAndDestroy on it. @param aPtr The RPointerArray @internalTechnology */ template -inline void TCleanupPointerArray::ResetAndDestroy(TAny* aPtr) +inline void TCleanupPointerArray::ResetAndDestroy(TAny* aPtr) { reinterpret_cast(aPtr)->ResetAndDestroy(); } @@ -52,4 +52,4 @@ TCleanupPointerArray::PushL(aRef); } -// End of file. \ No newline at end of file +// End of file. diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcplugincreatenewmrcmd.h --- a/meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcplugincreatenewmrcmd.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcplugincreatenewmrcmd.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #include "mmrbcplugincommand.h" #include -#include +#include class MCalenServices; class CESMRViewerController; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcpluginnewcaleventcommand.h --- a/meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcpluginnewcaleventcommand.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcpluginnewcaleventcommand.h Tue May 11 15:57:15 2010 +0300 @@ -23,8 +23,8 @@ #include #include -#include -#include +#include +#include class MCalenServices; class CESMRViewerController; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcpluginopenmrviewercmd.h --- a/meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcpluginopenmrviewercmd.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/bcmrevent/inc/cmrbcpluginopenmrviewercmd.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #include "mmrbcplugincommand.h" #include -#include +#include class MCalenServices; class CESMRViewerController; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/bcmrevent/src/cmrbcplugincmdhandler.cpp --- a/meetingrequest/mrbcplugin/bcmrevent/src/cmrbcplugincmdhandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/bcmrevent/src/cmrbcplugincmdhandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,7 +24,7 @@ #include "cmrbcpluginnewcaleventcommand.h" #include -#include +#include #include #include #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/bcmrevent/src/cmrbcplugincreatenewmrcmd.cpp --- a/meetingrequest/mrbcplugin/bcmrevent/src/cmrbcplugincreatenewmrcmd.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/bcmrevent/src/cmrbcplugincreatenewmrcmd.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,14 +23,14 @@ #include #include -#include -#include +#include +#include #include #include #include #include #include -#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/bcmrevent/src/cmrbcpluginnewcaleventcommand.cpp --- a/meetingrequest/mrbcplugin/bcmrevent/src/cmrbcpluginnewcaleventcommand.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/bcmrevent/src/cmrbcpluginnewcaleventcommand.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,10 +29,10 @@ #include #include #include -#include +#include #include -#include -#include +#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/bcmrevent/src/cmrbcpluginopenmrviewercmd.cpp --- a/meetingrequest/mrbcplugin/bcmrevent/src/cmrbcpluginopenmrviewercmd.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/bcmrevent/src/cmrbcpluginopenmrviewercmd.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,14 +24,14 @@ #include #include -#include -#include +#include +#include #include #include #include #include #include -#include +#include #include #include #include @@ -92,7 +92,7 @@ } } -//TODO:- displace after nokia provide RIGHT CalenActionUiUtils::FindPossibleInstance + CCalInstance* FindPossibleInstanceL( const TCalenInstanceId& aId, CCalInstanceView& aInstanceView ) { diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/group/mrbcplugin.mmp --- a/meetingrequest/mrbcplugin/group/mrbcplugin.mmp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/group/mrbcplugin.mmp Tue May 11 15:57:15 2010 +0300 @@ -57,7 +57,7 @@ LIBRARY eikcoctl.lib LIBRARY calinterimapi.lib LIBRARY caleninterimutils2.lib -LIBRARY FeatDiscovery.lib +LIBRARY featdiscovery.lib #if defined( ENABLE_TRACES ) && defined( TRACE_INTO_FILE ) LIBRARY flogger.lib diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrbcplugin/src/cmrbcplugin.cpp --- a/meetingrequest/mrbcplugin/src/cmrbcplugin.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrbcplugin/src/cmrbcplugin.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,10 +29,10 @@ #include #include #include -#include +#include #include #include -#include +#include #include #include #include @@ -150,7 +150,7 @@ } break; } - + default: { enabled = EFalse; @@ -482,7 +482,7 @@ { CMRBCEventPlugin* eventPlugin = PluginByUidL( TUid::Uid( KMRBCMREventPluginImplementationUID ) ); - + if ( eventPlugin ) { cmdHandler = eventPlugin->CommandHandler(); @@ -494,7 +494,7 @@ for ( TInt i(0); i < pluginCount && !cmdHandler; ++i ) { TMRBCPluginCommand pluginCommand; - + TInt err = iPluginResources[i]->Command( aCommand, pluginCommand ); if ( KErrNone == err ) { @@ -502,10 +502,10 @@ if ( pluginCommand.CheckEntryType() ) { iEntryLoader->UpdateEntryFromDatabaseL(); - + TBCPluginEventType eventType( EventTypeL( *iServices, iEntryLoader->Entry() ) ); - + if ( iPluginResources[i]->SupportsType( eventType) && IsCommandSupportedForEntryTypeL( aCommand, eventType ) ) { @@ -529,7 +529,7 @@ CMRBCEventPlugin* CMRBCPlugin::PluginByUidL( TUid aUid ) { CMRBCEventPlugin* plugin = NULL; - + for ( TInt i = 0; i < iPluginResources.Count() && !plugin; ++i ) { if ( iPluginResources[ i ]->PluginImplUid() == aUid ) @@ -537,7 +537,7 @@ plugin = &( iPluginResources[ i ]->PluginL() ); } } - + return plugin; } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcalremoteattachment/api/inc/ccalremoteattachmentapi.h --- a/meetingrequest/mrcalremoteattachment/api/inc/ccalremoteattachmentapi.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcalremoteattachment/api/inc/ccalremoteattachmentapi.h Tue May 11 15:57:15 2010 +0300 @@ -79,7 +79,7 @@ TUid iDtor_ID_Key; }; -#include +#include "ccalremoteattachmentapi.inl" #endif // CCALREMOTEATTACHMENTAPI_H diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcalremoteattachment/api/inc/ccalremoteattachmentapi.inl --- a/meetingrequest/mrcalremoteattachment/api/inc/ccalremoteattachmentapi.inl Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcalremoteattachment/api/inc/ccalremoteattachmentapi.inl Tue May 11 15:57:15 2010 +0300 @@ -11,11 +11,11 @@ * * Contributors: * -* Description: +* Description: * */ -#include +#include "calremoteattachmentapidefs.h" #include // simple wrapper class with array deletion on close @@ -37,19 +37,19 @@ const TDesC8& aUri ) { TAny* ptr( NULL ); - + RImplInfoPtrArrayCalRemoteAttachment implArray; CleanupClosePushL( implArray ); - REComSession::ListImplementationsL( + REComSession::ListImplementationsL( TUid::Uid( KCalRemoteAttachmentAPIInterface ), implArray ); - + TInt implCount( implArray.Count() ); if ( !implCount ) { User::Leave( KErrNotFound ); } - + for ( TInt i(0); i < implCount && !ptr; ++i ) { TPtrC8 datatype( implArray[i]->DataType() ); @@ -59,10 +59,10 @@ TUid implUid = implArray[i]->ImplementationUid(); ptr = REComSession::CreateImplementationL( implUid, keyOffset, - NULL ); + NULL ); } } - + User::LeaveIfNull( ptr ); CleanupStack::PopAndDestroy( &implArray ); return reinterpret_cast(ptr); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcalremoteattachment/api/inc/mcalremoteattachmentinfo.h --- a/meetingrequest/mrcalremoteattachment/api/inc/mcalremoteattachmentinfo.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcalremoteattachment/api/inc/mcalremoteattachmentinfo.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define MCALREMOTEATTACHMENTINFO_H #include -#include +#include "mcalremoteattachment.h" /** * MCalRemoteAttachmentInfo encapsulates calendar entry attachment information. diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcalremoteattachment/remoteattachment/inc/ccalremoteattachmentinfo.h --- a/meetingrequest/mrcalremoteattachment/remoteattachment/inc/ccalremoteattachmentinfo.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcalremoteattachment/remoteattachment/inc/ccalremoteattachmentinfo.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define CCALREMOTEATTACHMENTINFO_H #include -#include +#include "mcalremoteattachmentinfo.h" class CCalRemoteAttachment; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcasplugin/inc/cesmrcaspluginimpl.h --- a/meetingrequest/mrcasplugin/inc/cesmrcaspluginimpl.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcasplugin/inc/cesmrcaspluginimpl.h Tue May 11 15:57:15 2010 +0300 @@ -24,7 +24,7 @@ #include "cfsccontactactionplugin.h" #include "mfscreasoncallback.h" #include "cesmrcascontactaction.h" -#include +#include #include #include "mfsccontactsetobserver.h" // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcasplugin/inc/cesmrcaspluginuilauncher.h --- a/meetingrequest/mrcasplugin/inc/cesmrcaspluginuilauncher.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcasplugin/inc/cesmrcaspluginuilauncher.h Tue May 11 15:57:15 2010 +0300 @@ -20,7 +20,7 @@ #define CESMRCASPLUGINUILAUNCHER_H #include -#include +#include #include class CCalSession; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcasplugin/src/cesmrcascontactaction.cpp --- a/meetingrequest/mrcasplugin/src/cesmrcascontactaction.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcasplugin/src/cesmrcascontactaction.cpp Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ #include "emailtrace.h" #include "cesmrcascontactaction.h" -#include +#include #include // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcasplugin/src/cesmrcasplugincontactretriever.cpp --- a/meetingrequest/mrcasplugin/src/cesmrcasplugincontactretriever.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcasplugin/src/cesmrcasplugincontactretriever.cpp Tue May 11 15:57:15 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : Implementation of the class CESMRCasPluginImpl. - * Version : %version: e002sa33#6 % << Don't touch! Updated by Synergy at check-out. + * Version : %version: e002sa32#6.1.1 % << Don't touch! Updated by Synergy at check-out. * */ @@ -27,7 +27,7 @@ #include #include -#include +#include #include #include @@ -39,10 +39,10 @@ #include "mfsccontactsetobserver.h" #include "tfsccontactactionpluginparams.h" // -#include -#include -#include -#include +#include +#include +#include +#include // Unnamed namespace for local definitions namespace { // codescanner::namespace diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcasplugin/src/cesmrcaspluginimpl.cpp --- a/meetingrequest/mrcasplugin/src/cesmrcaspluginimpl.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcasplugin/src/cesmrcaspluginimpl.cpp Tue May 11 15:57:15 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : Implementation of the class CESMRCasPluginImpl. - * Version : %version: e002sa33#9 % << Don't touch! Updated by Synergy at check-out. + * Version : %version: e002sa32#9.1.1 % << Don't touch! Updated by Synergy at check-out. * */ @@ -27,17 +27,17 @@ #include #include -#include +#include #include #include #include #include -#include +#include #include #include -#include -#include +#include +#include #include // #include "mfscactionutils.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcasplugin/src/cesmrcaspluginuilauncher.cpp --- a/meetingrequest/mrcasplugin/src/cesmrcaspluginuilauncher.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcasplugin/src/cesmrcaspluginuilauncher.cpp Tue May 11 15:57:15 2010 +0300 @@ -25,22 +25,22 @@ #include // #include "tfsccontactactionpluginparams.h" -#include -#include +#include +#include #include #include #include -#include +#include #include #include "mfscactionutils.h" // -#include +#include #include #include #include #include "esmrcommands.h" #include -#include +#include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcmailremoteattachmentplugin/group/mrcmailremoteattachmentplugin.mmp --- a/meetingrequest/mrcmailremoteattachmentplugin/group/mrcmailremoteattachmentplugin.mmp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcmailremoteattachmentplugin/group/mrcmailremoteattachmentplugin.mmp Tue May 11 15:57:15 2010 +0300 @@ -41,9 +41,6 @@ USERINCLUDE ../../../inc APP_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom //TODO: Remove when Cmail headers are fixed - - SOURCEPATH ../data/ START RESOURCE mrcmailremoteattachmentplugin.rss diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcommon/inc/esmrentryhelper.h --- a/meetingrequest/mrcommon/inc/esmrentryhelper.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcommon/inc/esmrentryhelper.h Tue May 11 15:57:15 2010 +0300 @@ -21,7 +21,7 @@ #include "esmrdef.h" #include -#include +#include class CCalEntry; class CCalAttendee; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcommon/src/esmrentryhelper.cpp --- a/meetingrequest/mrcommon/src/esmrentryhelper.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcommon/src/esmrentryhelper.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,9 +29,9 @@ #include #include #include -#include +#include #include -#include +#include // unnamed naespace for local definitions namespace { // codescanner::namespace diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcommon/src/esmrhelper.cpp --- a/meetingrequest/mrcommon/src/esmrhelper.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcommon/src/esmrhelper.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,8 +29,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include @@ -39,8 +39,8 @@ #include #include #include -#include -#include +#include +#include #include // hardcoded paths removal #include @@ -1553,8 +1553,6 @@ } case CCalEntry::ETodo: { - // Todo has only due date => Adding date from that, - // Hour, minute and second as default values tempStart = aSourceEntry.StartTimeL().TimeLocalL().DateTime(); tempStart.SetHour( KDefaultMeetingStartHour ); tempStart.SetMinute( 0 ); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrcommon/src/nmrglobalfeaturesettings.cpp --- a/meetingrequest/mrcommon/src/nmrglobalfeaturesettings.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrcommon/src/nmrglobalfeaturesettings.cpp Tue May 11 15:57:15 2010 +0300 @@ -17,7 +17,7 @@ #include "nmrglobalfeaturesettings.h" -#include +#include #include using namespace NMRGlobalFeatureSettings; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrdb/inc/cesmrentrycmditeratorao.h --- a/meetingrequest/mrdb/inc/cesmrentrycmditeratorao.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrdb/inc/cesmrentrycmditeratorao.h Tue May 11 15:57:15 2010 +0300 @@ -20,7 +20,7 @@ // INCLUDE FILES #include -#include +#include // FORWARD DECLARATIONS class MESMRCalDbMgr; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrdb/src/cesmrcaldbmgr.cpp --- a/meetingrequest/mrdb/src/cesmrcaldbmgr.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrdb/src/cesmrcaldbmgr.cpp Tue May 11 15:57:15 2010 +0300 @@ -36,9 +36,9 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/data/esmrgui.rss --- a/meetingrequest/mrgui/data/esmrgui.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/data/esmrgui.rss Tue May 11 15:57:15 2010 +0300 @@ -22,9 +22,9 @@ #include #include #include -#include -#include -#include // for service commands +#include +#include +#include // for service commands #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/data/mrguiattachmentresources.rss --- a/meetingrequest/mrgui/data/mrguiattachmentresources.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/data/mrguiattachmentresources.rss Tue May 11 15:57:15 2010 +0300 @@ -16,7 +16,7 @@ */ #include -#include +#include RESOURCE AVKON_LIST_QUERY r_attachment_type_query_dialog { @@ -33,7 +33,6 @@ AVKON_LIST_QUERY_LIST { }; - // TODO: loc string heading = "Select Option"; }; } @@ -183,11 +182,11 @@ } RESOURCE TBUF r_meet_req_attachment_file_kilobyte { - buf = qtn_meet_req_note_attachment_progress_kilobyte; // TODO: qtn_meet_req_attachment_file_kilobyte; + buf = qtn_meet_req_attachment_file_kilobyte; } RESOURCE TBUF r_meet_req_attachment_file_megabyte { - buf = qtn_meet_req_note_attachment_progress_megabyte; //TODO: qtn_meet_req_attachment_file_megabyte; + buf = qtn_meet_req_attachment_file_megabyte; } RESOURCE TBUF r_qtn_meet_req_info_already_attached { @@ -223,7 +222,7 @@ */ RESOURCE TBUF r_qtn_meet_req_attachments_download_prefix { - buf = "#%0N% %1U"; //TODO: qtn_meet_req_attachments_download_prefix; + buf = qtn_meet_req_attachments_download_prefix; } RESOURCE TBUF r_meet_req_info_cannot_open_attachment { diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/group/esmrgui.mmp --- a/meetingrequest/mrgui/group/esmrgui.mmp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/group/esmrgui.mmp Tue May 11 15:57:15 2010 +0300 @@ -146,7 +146,7 @@ LIBRARY commonui.lib LIBRARY npdlib.lib LIBRARY lbs.lib -LIBRARY FeatDiscovery.lib +LIBRARY featdiscovery.lib LIBRARY gdi.lib #ifdef RD_USE_MYLOCATIONUI diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/inc/cesmraddressinfohandler.h --- a/meetingrequest/mrgui/inc/cesmraddressinfohandler.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/inc/cesmraddressinfohandler.h Tue May 11 15:57:15 2010 +0300 @@ -22,8 +22,8 @@ // Includes #include -#include -#include +#include +#include #include "resmrstatic.h" #include "cesmrcontactmanagerhandler.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/inc/cesmreditordialog.h --- a/meetingrequest/mrgui/inc/cesmreditordialog.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/inc/cesmreditordialog.h Tue May 11 15:57:15 2010 +0300 @@ -18,9 +18,9 @@ #ifndef CESMREDITORDIALOG_H #define CESMREDITORDIALOG_H -#include +#include #include -#include +#include #include "mesmruibase.h" #include "mesmrresponseobserver.h" #include "mesmrfieldeventobserver.h" @@ -263,7 +263,6 @@ * Indicates if location has been modified. */ TBool iLocationModified; - // TODO: Take this into use when implementing the toolbar /// Own: Toolbar handler CMRToolbar* iToolbar; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/inc/cesmrresponsedialog.h --- a/meetingrequest/mrgui/inc/cesmrresponsedialog.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/inc/cesmrresponsedialog.h Tue May 11 15:57:15 2010 +0300 @@ -20,7 +20,7 @@ #define CESMRRESPONSEDIALOG_H // INCLUDES -#include +#include // FORWARD DECLARATIONS class CAknsBasicBackgroundControlContext; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/inc/cesmrtrackingviewdialog.h --- a/meetingrequest/mrgui/inc/cesmrtrackingviewdialog.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/inc/cesmrtrackingviewdialog.h Tue May 11 15:57:15 2010 +0300 @@ -12,14 +12,14 @@ * Contributors: * * Description : ESMR tracking viewe dialog -* Version : %version: e002sa33#7 % +* Version : %version: e002sa32#7.1.1 % * */ #ifndef CESMRTRACKINGVIEWDIALOG_H #define CESMRTRACKINGVIEWDIALOG_H // SYSTEM INCLUDE -#include +#include #include //#include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/inc/cesmrview.h --- a/meetingrequest/mrgui/inc/cesmrview.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/inc/cesmrview.h Tue May 11 15:57:15 2010 +0300 @@ -184,11 +184,6 @@ TInt aResourceId, CEikMenuPane* aMenuPane ); - /* - * Relayouts view by calling size changed. - */ - void ReLayout(); - /** * Processes event. * @param aEvent Reference to event to be processed @@ -255,6 +250,7 @@ void LaunchHelpL( const TDesC& aContext ); void SetTitlePaneObserver(); TRect CalculateAttachmentIndicatorLayout(); + TRect ContainerRect() const; private: // data diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/inc/cesmrviewerdialog.h --- a/meetingrequest/mrgui/inc/cesmrviewerdialog.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/inc/cesmrviewerdialog.h Tue May 11 15:57:15 2010 +0300 @@ -17,9 +17,9 @@ #ifndef CESMRVIEWERDIALOG_H #define CESMRVIEWERDIALOG_H -#include +#include #include -#include +#include #include "mesmruibase.h" #include "mesmrresponseobserver.h" #include "resmrstatic.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/inc/cmrlistpane.h --- a/meetingrequest/mrgui/inc/cmrlistpane.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/inc/cmrlistpane.h Tue May 11 15:57:15 2010 +0300 @@ -38,7 +38,7 @@ class MTouchFeedback; // CLASS DECLARATIONS -NONSHARABLE_CLASS( CMRListPane ) : +NONSHARABLE_CLASS( CMRListPane ) : public CCoeControl, public MAknLongTapDetectorCallBack, public MMRPhysicsObserver, @@ -47,26 +47,26 @@ public: // Creation and destruction /** * Static constructor. - * + * * @return New instance of this class */ static CMRListPane* NewL( const CCoeControl& aParent, MESMRFieldStorage& aFactory, - TAknDoubleSpanScrollBarModel& aScrollModel, - CAknDoubleSpanScrollBar& aScroll, + TAknDoubleSpanScrollBarModel& aScrollModel, + CAknDoubleSpanScrollBar& aScroll, MMRScrollBarObserver& aScrollBarObserver ); /** * Destructor */ ~CMRListPane(); - + public: // Interface /** * Initializes all fields. Needed when theme changes */ void InitializeL(); - + /** * InternalizeL is used to obtain the data from current CCalEntry. * CCalEntry is wrapped inside MESMRCalEntry object. This call is @@ -86,7 +86,7 @@ * @see MESMRCalEntry */ void ExternalizeL( MESMRCalEntry& aEntry, TBool aForceValidation = EFalse ); - + /** * Disables or enables relayouting. * @@ -98,57 +98,57 @@ * Scroll the list to put the responeArea at the top and * set the focus on it */ - void InitialScrollL(); // TODO: Fix me. - + void InitialScrollL(); + /** * Return focused field. * @return Focused list item or NULL if no focused item */ CESMRField* FocusedField() const; - + /** * Sets the field focused based on the given field id. * @param aFieldId Id of the field to be focused */ void SetControlFocusedL( TESMREntryFieldId aFieldId ); - + /** * Return clicked list item. * @return Clicked list item or NULL if no valid clicked item */ CESMRField* ClickedField() const; - + /** * Sets field to be visible in the list. * * @param aField - id of the field. */ void ShowControl( TESMREntryFieldId aFieldId ); - + /** * Is field visible or not. * * @return Boolean ETrue/EFalse */ TBool IsControlVisible( TESMREntryFieldId aFieldId ); - + /** * Get response field type of current event. * @Return TESMREntryFieldId */ TESMREntryFieldId GetResponseFieldsFieldId(); - + /** * Activates new fields which has been added into the storage * after list pane construction. */ void ReActivateL(); - + public: // MMRFieldContainerObserver void ScrollFieldsUp( TInt aPx ); void ScrollFieldsDown( TInt aPx ); void UpdateScrollBarAndPhysics(); - + public: // From CCoeControl TKeyResponse OfferKeyEventL( const TKeyEvent &aKeyEvent, TEventCode aType ); @@ -159,32 +159,32 @@ CCoeControl* ComponentControl( TInt aIndex) const; void HandlePointerEventL( const TPointerEvent &aPointerEvent ); void ActivateL(); - + private: // From MMRPhysicsObserver void PhysicsEmulationEnded(); void UpdateScrollBarDuringOngoingPhysics(); - + private: // From MAknLongTapDetectorCallBack void HandleLongTapEventL( - const TPoint& aPenEventLocation, + const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ); - + private: // Implementation CMRListPane( MESMRFieldStorage& aFactory, - TAknDoubleSpanScrollBarModel& aScrollModel, - CAknDoubleSpanScrollBar& aScroll, + TAknDoubleSpanScrollBarModel& aScrollModel, + CAknDoubleSpanScrollBar& aScroll, MMRScrollBarObserver& aScrollBarObserver ); void ConstructL( const CCoeControl& aParent ); void DoUpdateScrollBar( TInt aFocusPosition = KErrNotFound ); TInt UpdatedFocusPosition(); - void SetFocusAfterPointerEventL( + void SetFocusAfterPointerEventL( const TPointerEvent &aPointerEvent ); void UpdateClickedField( const TPointerEvent &aPointerEvent ); TBool HiddenFocus(); void ForwardReceivedPointerEventsToChildrenL(); void HandleTactileFeedback( const TTouchLogicalFeedback& aType ); TBool FeedbackScrollMarginExceeded( TInt aMargin ); - + private: // Data /// Ref: Storage for list items. MESMRFieldStorage& iFactory; @@ -200,16 +200,16 @@ CMRListPanePhysics* iPhysics; /// Ref: Observer for updating scroll bar revents MMRScrollBarObserver& iScrollBarObserver; - /// Not owned: A field which got a pointer down event, + /// Not owned: A field which got a pointer down event, /// nulled when focus is changed via keyboard CESMRField* iClickedField; /// Own: Boolean for disabling SizeChanged handling TBool iDisableSizeChanged; /// Own: Boolean to check, if physics action is ongoing or not TBool iPhysicsActionOngoing; - /// Own: Record if the long tapping event have been comsumed, if yes, + /// Own: Record if the long tapping event have been comsumed, if yes, /// then do not handle signal pointer event anymore. - TBool iLongTapEventConsumed; + TBool iLongTapEventInProgess; /// Ref: Reference to tactile feedback MTouchFeedback* iTactileFeedback; /// Own: This records vertical scroll index for tactile feedback @@ -217,6 +217,6 @@ /// Own: This records default field height for tactile feedback during scroll TInt iDefaultFieldHeight; }; - + #endif // CMRLISTPANE_H // End of file diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/loc/mrui.loc --- a/meetingrequest/mrgui/loc/mrui.loc Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/loc/mrui.loc Tue May 11 15:57:15 2010 +0300 @@ -1246,7 +1246,7 @@ // l: fscal_editor_field_text_2 // r: TB9.2 // -#define qtn_meet_req_attachment_file_less_than_kilobyte "%0U (< 1 kB)" +#define qtn_meet_req_attachment_file_less_than_kilobyte "%0U (Max. 1 kB)" // d: Heading text for forwarding this occurence or series list popup query // l: heading_pane_t1 diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/bwins/esmrfieldbuildercommonu.def --- a/meetingrequest/mrgui/mrfieldbuildercommon/bwins/esmrfieldbuildercommonu.def Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/bwins/esmrfieldbuildercommonu.def Tue May 11 15:57:15 2010 +0300 @@ -14,7 +14,7 @@ ?GetSelectedLink@CESMRRichTextViewer@@QBEPBVCESMRRichTextLink@@XZ @ 13 NONAME ; class CESMRRichTextLink const * CESMRRichTextViewer::GetSelectedLink(void) const ?FieldViewMode@CESMRField@@QBE?AW4TESMRFieldType@@XZ @ 14 NONAME ; enum TESMRFieldType CESMRField::FieldViewMode(void) const ?FocusChanged@CESMRRichTextViewer@@UAEXW4TDrawNow@@@Z @ 15 NONAME ; void CESMRRichTextViewer::FocusChanged(enum TDrawNow) - ?HandlePointerEventL@CESMRField@@EAEXABUTPointerEvent@@@Z @ 16 NONAME ; void CESMRField::HandlePointerEventL(struct TPointerEvent const &) + ?HandlePointerEventL@CESMRField@@MAEXABUTPointerEvent@@@Z @ 16 NONAME ; void CESMRField::HandlePointerEventL(struct TPointerEvent const &) ??1CESMREditor@@UAE@XZ @ 17 NONAME ; CESMREditor::~CESMREditor(void) ?NewL@CESMRRichTextViewer@@SAPAV1@PBVCCoeControl@@@Z @ 18 NONAME ; class CESMRRichTextViewer * CESMRRichTextViewer::NewL(class CCoeControl const *) ?SetListObserver@CESMRField@@UAEXPAVMESMRListObserver@@@Z @ 19 NONAME ; void CESMRField::SetListObserver(class MESMRListObserver *) @@ -117,4 +117,6 @@ ?GetLimitLength@CESMREditor@@QBEHXZ @ 116 NONAME ; int CESMREditor::GetLimitLength(void) const ?SetFieldMode@CESMRField@@QAEXW4TESMRFieldMode@@@Z @ 117 NONAME ; void CESMRField::SetFieldMode(enum TESMRFieldMode) ?ResetActionMenuL@CESMRRichTextViewer@@QBEXXZ @ 118 NONAME ; void CESMRRichTextViewer::ResetActionMenuL(void) const + ?SupportsLongTapFunctionalityL@CESMRField@@UAEHABUTPointerEvent@@@Z @ 119 NONAME ; int CESMRField::SupportsLongTapFunctionalityL(struct TPointerEvent const &) + ?PointerEventOccuresOnALinkL@CESMRRichTextViewer@@QAEHABUTPointerEvent@@@Z @ 120 NONAME ; int CESMRRichTextViewer::PointerEventOccuresOnALinkL(struct TPointerEvent const &) diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/eabi/esmrfieldbuildercommonu.def --- a/meetingrequest/mrgui/mrfieldbuildercommon/eabi/esmrfieldbuildercommonu.def Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/eabi/esmrfieldbuildercommonu.def Tue May 11 15:57:15 2010 +0300 @@ -147,4 +147,5 @@ _ZThn8_N15CMRAttachmentUiD1Ev @ 146 NONAME _ZN19CESMRRichTextViewer12SetFocusLinkEi @ 147 NONAME _ZNK19CESMRRichTextViewer12GetFocusLinkEv @ 148 NONAME - + _ZN10CESMRField29SupportsLongTapFunctionalityLERK13TPointerEvent @ 149 NONAME + _ZN19CESMRRichTextViewer27PointerEventOccuresOnALinkLERK13TPointerEvent @ 150 NONAME diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/inc/cesmrfield.h --- a/meetingrequest/mrgui/mrfieldbuildercommon/inc/cesmrfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/inc/cesmrfield.h Tue May 11 15:57:15 2010 +0300 @@ -297,20 +297,20 @@ * Tests if field control has been activated. */ IMPORT_C TBool IsFieldActivated() const; - + /** * Provides possibility for field to dynamically * intialize context menu. - * + * * @param aResourceId Context menu resource ID * @param aMenuPane Pointer to menu pane */ IMPORT_C virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); - + /** - * Setter for field view mode. Enumeration TESMRFieldType + * Setter for field view mode. Enumeration TESMRFieldType * lists possible view modes. * @param aViewMode View mode of the field */ @@ -321,25 +321,33 @@ * @return Field view mode */ IMPORT_C TESMRFieldType FieldViewMode() const; - + /** * Updates field extension control and takes ownership * @param aControl Pointer to extension control. */ IMPORT_C void UpdateExtControlL( CCoeControl* aControl ); - + /** - * Set field as locked field(can't be deleted or edited) + * Set field as locked field(can't be deleted or edited) */ IMPORT_C void virtual LockL(); - + /** * Get lock status of the field - * @return ETrue shows field locked EFalse shows field not locked + * @return ETrue shows field locked EFalse shows field not locked */ IMPORT_C TBool IsLocked(); + /** + * Finds out if field supports longtap functionality or not + * @param aPointerEvent, where the event actually occured + * @return ETrue if field supports longtap functionality + */ + IMPORT_C virtual TBool SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ); + protected: /** @@ -416,7 +424,7 @@ IMPORT_C virtual CCoeControl* ComponentControl( TInt aInd ) const; IMPORT_C virtual TSize MinimumSize(); -private: // From base class CCoeControl +protected: // From base class CCoeControl /** * Implements pointer event handling for fields. @@ -447,13 +455,13 @@ * Returns the event observer interface */ IMPORT_C MESMRFieldEventObserver* EventObserver() const; - + /** * Initiates tactile feedback when called */ IMPORT_C void HandleTactileFeedbackL(); - - + + private: void AquireTactileFeedback(); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/inc/cesmrrichtextviewer.h --- a/meetingrequest/mrgui/mrfieldbuildercommon/inc/cesmrrichtextviewer.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/inc/cesmrrichtextviewer.h Tue May 11 15:57:15 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : CEikRichTextEditor based Rich Text viewer -* Version : %version: e002sa32#19 % +* Version : %version: e002sa32#19.1.1 % * */ @@ -217,7 +217,7 @@ * Applies the layout changes to the rich text component. */ IMPORT_C void ApplyLayoutChangesL(); - + /* * Set selected link according to the index in the array. * @param aLinkIndex the index of link need to be selected. @@ -230,6 +230,13 @@ */ IMPORT_C TInt GetFocusLink( ) const; + /* + * Finds out if given pointer event occured on a link + * @param aPointerEvent, the event to which the possible link areas are compared to + * @return TBool, ETrue if pointer event occured on a link + */ + IMPORT_C TBool PointerEventOccuresOnALinkL( const TPointerEvent &aPointerEvent ); + protected: // From MEikCommandObserver /** diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/inc/cmrattachmentprogressinfo.h --- a/meetingrequest/mrgui/mrfieldbuildercommon/inc/cmrattachmentprogressinfo.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/inc/cmrattachmentprogressinfo.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define CMRATTACHMENTPROGRESSINFO_H // INCLUDES -#include +#include #include #include "cmrfilemanager.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/inc/cmrattachmentui.h --- a/meetingrequest/mrgui/mrfieldbuildercommon/inc/cmrattachmentui.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/inc/cmrattachmentui.h Tue May 11 15:57:15 2010 +0300 @@ -21,10 +21,10 @@ // INCLUDES #include #include // RFs -#include // TMediaFileType -#include // MProgressDialogCallback -#include -#include +#include // TMediaFileType +#include // MProgressDialogCallback +#include +#include // FORWARD DECLARATIONS class MESMRCalEntry; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrfield.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -30,8 +30,8 @@ #include #include #include -#include -#include +#include +#include #include // ======== MEMBER FUNCTIONS ======== @@ -77,8 +77,6 @@ FUNC_LOG; iExtControl = aControl; - // TODO: This should be made in ConstructL instead as soon we - // get rid of old CESMRLayoutManager. iBackground = CMRBackground::NewL(); this->SetBackground( iBackground ); } @@ -825,6 +823,7 @@ // EXPORT_C void CESMRField::LockL() { + FUNC_LOG; iLocked = ETrue; } @@ -834,9 +833,21 @@ // EXPORT_C TBool CESMRField::IsLocked() { + FUNC_LOG; return iLocked; } +// --------------------------------------------------------------------------- +// CESMRField::SupportsLongTapFunctionalityL +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CESMRField::SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ) + { + FUNC_LOG; + // Subclasses may override for field specific actions + return EFalse; + } // --------------------------------------------------------------------------- // CESMRField::HandleTactileFeedbackL @@ -847,7 +858,7 @@ FUNC_LOG; AquireTactileFeedback(); - + if ( iTactileFeedback && iTactileFeedback->FeedbackEnabledForThisApp() ) { iTactileFeedback->InstantFeedback( ETouchFeedbackBasic ); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrrichtextviewer.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrrichtextviewer.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrrichtextviewer.cpp Tue May 11 15:57:15 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : CEikRichTextEditor based Rich Text viewer -* Version : %version: e002sa33#40 % +* Version : %version: e002sa32#41 % * */ @@ -720,7 +720,7 @@ { return linkIndex; } - + TCursorSelection currentSelection = Selection(); for ( TInt i = 0; i < iLinkList.Count(); ++i ) @@ -743,6 +743,40 @@ } // ----------------------------------------------------------------------------- +// CESMRRichTextViewer::PointerEventOccuresOnALinkL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CESMRRichTextViewer::PointerEventOccuresOnALinkL( + const TPointerEvent &aPointerEvent ) + { + FUNC_LOG; + TBool ret( EFalse ); + + RRegion linkArea; + CleanupClosePushL( linkArea ); + + // Find matching link + TInt count( iLinkList.Count() ); + + for ( TInt i = 0; i < count; ++i ) + { + CESMRRichTextLink* link = iLinkList[ i ]; + GetLinkAreaL( linkArea, *link ); + + if ( linkArea.Contains( aPointerEvent.iPosition ) ) + { + ret = ETrue; + break; + } + } + + CleanupStack::PopAndDestroy( &linkArea ); + + return ret; + } + + +// ----------------------------------------------------------------------------- // CESMRRichTextViewer::CESMRRichTextViewer // ----------------------------------------------------------------------------- // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/src/cmrattachmentprogressinfo.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cmrattachmentprogressinfo.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cmrattachmentprogressinfo.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include // Unnamed namespace for local definitions namespace { // codescanner::namespace diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/src/cmrattachmentui.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cmrattachmentui.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cmrattachmentui.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,20 +23,20 @@ #include "cesmrglobalnote.h" #include "esmrhelper.h" -#include +#include #include #include #include -#include -#include +#include +#include #include #include #include #include -#include +#include #include #include -#include +#include #include "emailtrace.h" @@ -471,8 +471,6 @@ { FUNC_LOG; - // TODO: Launch attachment view - // read attachments from calentry and populate the listbox } // --------------------------------------------------------------------------- @@ -593,7 +591,6 @@ isProtected = ccp->IsClosedFileL( aFile ); if ( isProtected ) { - // TODO: Add suitable note to cesmrglobalnote.cpp CESMRGlobalNote::ExecuteL ( CESMRGlobalNote::EESMRAlarmAlreadyPassed ); } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/src/cmrbackground.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cmrbackground.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cmrbackground.cpp Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ #include "cmrbackground.h" #include "nmrglobalfeaturesettings.h" -#include +#include // unnamed namespace for local definitions @@ -121,15 +121,6 @@ } } } - // TODO: Need to be removed after ui designer says that it can be removed. - // else - // { - // if( ctrl.FieldMode() == EESMRFieldModeEdit ) - // { - // // Not focused editor field - // DrawFocus( aGc, rect, aControl, EEditorFieldNoFocus ); - // } - // } } } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuildercommon/src/cmrgrid.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cmrgrid.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cmrgrid.cpp Tue May 11 15:57:15 2010 +0300 @@ -21,17 +21,17 @@ #include "nmrlayoutmanager.h" #include "esmrhelper.h" -#include -#include -#include -#include +#include +#include +#include +#include #include -#include -#include +#include +#include #include #include #include -#include +#include #include #include #include @@ -235,7 +235,6 @@ // The order of the items should be in line with // CMRAttachmentUi::ResolveAttachmentTypeL switch case items. - // TODO: update texts to be read from resource HBufC* textImage = StringLoader::LoadLC( R_QTN_MEET_REQ_ATTACHMENT_TYPE_IMAGE ); gridItemArray->AppendL( _L("0\tImage") /*textImage*/ ); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrsubjectfield.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrsubjectfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrsubjectfield.h Tue May 11 15:57:15 2010 +0300 @@ -21,7 +21,7 @@ #include #include -#include +#include #include "cesmrfield.h" #include "nmrbitmapmanager.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerdescriptionfield.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerdescriptionfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerdescriptionfield.h Tue May 11 15:57:15 2010 +0300 @@ -47,7 +47,7 @@ // Destructor ~CESMRViewerDescriptionField(); -public: // From CESMRField +protected: // From CESMRField void InternalizeL( MESMRCalEntry& aEntry ); void InitializeL(); void GetCursorLineVerticalPos( TInt& aUpper, TInt& aLower ); @@ -55,6 +55,8 @@ TBool ExecuteGenericCommandL( TInt aCommand ); void SetOutlineFocusL( TBool aFocus ); void HandleLongtapEventL( const TPoint& aPosition ); + TBool SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ); public: // From CCoeControl TKeyResponse OfferKeyEventL(const TKeyEvent& aEvent, TEventCode aType ); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerdetailedsubjectfield.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerdetailedsubjectfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerdetailedsubjectfield.h Tue May 11 15:57:15 2010 +0300 @@ -48,7 +48,7 @@ * @return Pointer to created object, */ static CESMRViewerDetailedSubjectField* NewL( ); - + /** * C++ Destructor. */ @@ -62,19 +62,21 @@ void SetTitlePaneObserver( MESMRTitlePaneObserver* aObserver ); -public: // From CESMRField +protected: // From CESMRField TSize MinimumSize(); void InternalizeL( MESMRCalEntry& aEntry ); void InitializeL(); void ListObserverSet(); TBool ExecuteGenericCommandL( TInt aCommand ); void SetOutlineFocusL( TBool aFocus ); - void GetCursorLineVerticalPos(TInt& aUpper, TInt& aLower); + void GetCursorLineVerticalPos(TInt& aUpper, TInt& aLower); void HandleLongtapEventL( const TPoint& aPosition ); void LockL(); - + TBool SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ); + public: // From CCoeControl - TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent, + TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent, TEventCode aType ); TInt CountComponentControls() const; CCoeControl* ComponentControl( TInt aInd ) const; @@ -86,7 +88,7 @@ CEikEdwin* aEdwin, TEdwinSizeEvent aType, TSize aSize ); - + protected: // From CESMRRichTextViewer TBool HandleRichTextLinkSelection( const CESMRRichTextLink* aLink ); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerlocationfield.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerlocationfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrviewerlocationfield.h Tue May 11 15:57:15 2010 +0300 @@ -54,7 +54,7 @@ */ ~CESMRViewerLocationField( ); - public:// From CESMRField + protected:// From CESMRField void InternalizeL( MESMRCalEntry& aEntry ); TSize MinimumSize(); void InitializeL(); @@ -64,10 +64,13 @@ void HandleLongtapEventL( const TPoint& aPosition ); void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); void LockL(); + TBool SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ); + protected: TBool HandleSingletapEventL( const TPoint& aPosition ); - public: // From CCoeControl + protected: // From CCoeControl TKeyResponse OfferKeyEventL(const TKeyEvent& aEvent, TEventCode aType ); TInt CountComponentControls() const; CCoeControl* ComponentControl( TInt aInd ) const; @@ -75,11 +78,11 @@ void SetContainerWindowL( const CCoeControl& aContainer ); void GetCursorLineVerticalPos(TInt& aUpper, TInt& aLower); - public: // From MEikEdwinSizeObserver + protected: // From MEikEdwinSizeObserver TBool HandleEdwinSizeEventL( CEikEdwin* aEdwin, TEdwinSizeEvent aType, TSize aSize ); - public: // From MCoeControlObserver + protected: // From MCoeControlObserver void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType); private: // Implementation diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmralarmonofffield.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmralarmonofffield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmralarmonofffield.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #ifndef CMRALARMONOFFFIELD_H #define CMRALARMONOFFFIELD_H -#include "CESMRfield.h" +#include "cesmrfield.h" #include "mmrabsolutealarmcontroller.h" class CMRLabel; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmropenattachmentcommand.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmropenattachmentcommand.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmropenattachmentcommand.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define CMROPENATTACHMENTCOMMAND_H #include -#include +#include #include "cmrattachmentcommand.h" // Forward declarations diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrremoveattachmentcommand.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrremoveattachmentcommand.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrremoveattachmentcommand.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define CMRREMOVEATTACHMENTCOMMAND_H #include -#include +#include #include "cmrattachmentcommand.h" // Forward declarations diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrsaveandopenattachmentcommand.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrsaveandopenattachmentcommand.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrsaveandopenattachmentcommand.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define CMRSAVEANDOPENATTACHMENTCOMMAND_H #include -#include +#include #include "cmrattachmentcommand.h" // Forward declarations diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrviewerattachmentfield.h --- a/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrviewerattachmentfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cmrviewerattachmentfield.h Tue May 11 15:57:15 2010 +0300 @@ -40,7 +40,7 @@ /** * CMRViewerAttachmentsField is entry viewer attachment field */ -NONSHARABLE_CLASS( CMRViewerAttachmentsField ): +NONSHARABLE_CLASS( CMRViewerAttachmentsField ): public CESMRField, public MEikEdwinSizeObserver, public MESMRRichTextObserver @@ -70,20 +70,22 @@ TInt aResourceId, CEikMenuPane* aMenuPane ); void LockL(); - + TBool SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ); + protected: // From CCoeControl TInt CountComponentControls() const; CCoeControl* ComponentControl( TInt aInd ) const; void SizeChanged(); TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); void SetContainerWindowL( const CCoeControl& aControl ); - + protected: // From MEikEdwinSizeObserver TBool HandleEdwinSizeEventL( CEikEdwin* aEdwin, TEdwinSizeEvent aType, TSize aDesirableEdwinSize); - -public: // From MESMRRichTextObserver + +protected: // From MESMRRichTextObserver TBool HandleRichTextLinkSelection( const CESMRRichTextLink* aLink ); - + private: // Implementation CMRViewerAttachmentsField(); void ConstructL(); @@ -98,7 +100,8 @@ void DynInitMenuPaneForCurrentAttachmentL( CEikMenuPane* aMenuPane ); TBool IsAttachmentDownloadInProgress( const CCalAttachment& aAttachment ); - + TInt MaxTextLengthInPixelsL(); + private: //data // Own: Field icon CMRImage* iFieldIcon; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmralarmfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmralarmfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmralarmfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -35,7 +35,7 @@ // #include "esmrdef.h" // -#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrcheckbox.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrcheckbox.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrcheckbox.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,7 +29,7 @@ #include "cesmrgenericfieldevent.h" #include -#include +#include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrdatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrdatefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrdatefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -26,7 +26,7 @@ #include "nmrcolormanager.h" #include "nmrbitmapmanager.h" -#include +#include #include // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrdescriptionfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrdescriptionfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrdescriptionfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,10 +29,10 @@ // #include -#include +#include #include -#include -#include +#include +#include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrlocationfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrlocationfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrlocationfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : ESMR location field implementation - * Version : %version: e002sa32#53 % + * Version : %version: e002sa32#53.1.1 % * */ @@ -34,10 +34,10 @@ #include "mesmrlistobserver.h" #include -#include +#include #include #include -#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriority.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriority.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriority.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #include "emailtrace.h" #include "cesmrpriority.h" #include -#include +#include // --------------------------------------------------------------------------- // CESMRPriority::CESMRPriority diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriorityfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriorityfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriorityfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -27,12 +27,12 @@ #include #include -#include +#include #include #include #include -#include -#include +#include +#include #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrrepeatuntil.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrrepeatuntil.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrrepeatuntil.cpp Tue May 11 15:57:15 2010 +0300 @@ -26,9 +26,9 @@ #include "nmrbitmapmanager.h" #include -#include +#include #include -#include +#include #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsingletimefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsingletimefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsingletimefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,7 +24,7 @@ #include "nmrcolormanager.h" #include "nmrbitmapmanager.h" -#include +#include #include #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsubjectfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsubjectfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsubjectfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -27,10 +27,10 @@ #include "mesmrlistobserver.h" #include -#include -#include +#include +#include #include -#include +#include #include #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsyncfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsyncfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsyncfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,10 +23,10 @@ #include "nmrlayoutmanager.h" #include -#include +#include #include #include -#include +#include #include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrtextitem.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrtextitem.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrtextitem.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #include "cesmrtextitem.h" #include -#include +#include // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -26,8 +26,8 @@ #include #include #include -#include -#include +#include +#include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmtimefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmtimefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmtimefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -82,7 +82,7 @@ iLabel->SetParent( this ); CESMRField::ConstructL( iLabel ); // ownership transfered - iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapAlarmClock ); //TODO: Is this correct icon + iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapAlarmClock ); iIcon->SetParent( this ); } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerdescriptionfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerdescriptionfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerdescriptionfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -85,7 +85,7 @@ NMRLayoutManager::GetLayoutText( Rect(), NMRLayoutManager::EMRTextLayoutMultiRowTextEditor ); iRichTextViewer->SetFontL( layoutText.Font() ); iRichTextViewer->ApplyLayoutChangesL(); - + if ( IsFocused() ) { iRichTextViewer->FocusChanged( EDrawNow ); @@ -205,18 +205,22 @@ Rect(), NMRLayoutManager::EMRTextLayoutTextEditor ); - // Failures are ignored. - TRAP_IGNORE( - // Try setting font + // Failures are ignored. + TRAP_IGNORE( + // Try setting font iRichTextViewer->SetFontL( text.Font() ); // Try applying changes iRichTextViewer->ApplyLayoutChangesL(); ); + iRichTextViewer->SetRect( + TRect( viewerRect.iTl, + TSize( viewerRect.Width(), iSize.iHeight ) ) ); + if ( iRichTextViewer->Size().iWidth != richTextViewerWidth ) { - // Most of this case is screen orientation, in this case we need to - // Record the index of focusing link, after updating link array, then + // Most of this case is screen orientation, in this case we need to + // Record the index of focusing link, after updating link array, then // reset the focusing to original one. TInt focusingIndex = iRichTextViewer->GetFocusLink(); if ( KErrNotFound != focusingIndex ) @@ -225,7 +229,7 @@ //wake up current contact menu selection by calling this iRichTextViewer->FocusChanged(ENoDrawNow); } - } + } } // --------------------------------------------------------------------------- @@ -402,14 +406,14 @@ const TPoint& aPosition ) { FUNC_LOG; - + if ( iRichTextViewer->Rect().Contains( aPosition ) ) { if( iRichTextViewer->LinkSelectedL() ) { - HandleTactileFeedbackL(); + HandleTactileFeedbackL(); } - + } } @@ -580,5 +584,26 @@ return *iUrlParser; } +// --------------------------------------------------------------------------- +// CESMRViewerDescriptionField::SupportsLongTapFunctionalityL +// --------------------------------------------------------------------------- +// +TBool CESMRViewerDescriptionField::SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ) + { + FUNC_LOG; + TBool ret( EFalse ); + + if ( iRichTextViewer->Rect().Contains( aPointerEvent.iPosition ) ) + { + if( iRichTextViewer->PointerEventOccuresOnALinkL( aPointerEvent ) ) + { + ret = ETrue; + } + } + + return ret; + } + //EOF diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerdetailedsubjectfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerdetailedsubjectfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerdetailedsubjectfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -117,7 +117,7 @@ FUNC_LOG; iFieldIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapOccasion ); iFieldIcon->SetParent( this ); - + iRichTextViewer = CESMRRichTextViewer::NewL( this ); CESMRField::ConstructL( iRichTextViewer ); // ownership transferred iRichTextViewer->SetEdwinSizeObserver( this ); @@ -143,17 +143,17 @@ TSize CESMRViewerDetailedSubjectField::MinimumSize() { TRect parentRect( Parent()->Rect() ); - - TRect fieldRect = + + TRect fieldRect = NMRLayoutManager::GetFieldLayoutRect( parentRect, 1 ).Rect(); - TRect viewerRect( NMRLayoutManager::GetLayoutText( - fieldRect, + TRect viewerRect( NMRLayoutManager::GetLayoutText( + fieldRect, NMRLayoutManager::EMRTextLayoutTextEditor ).TextRect() ); - + // Adjust field size so that there's room for expandable editor. fieldRect.Resize( 0, iSize.iHeight - viewerRect.Height() ); - + return fieldRect.Size(); } @@ -166,13 +166,13 @@ { FUNC_LOG; // Setting Font for the rich text viewer - TAknLayoutText text = NMRLayoutManager::GetLayoutText( - Rect(), + TAknLayoutText text = NMRLayoutManager::GetLayoutText( + Rect(), NMRLayoutManager::EMRTextLayoutTextEditor ); - + iRichTextViewer->SetFontL( text.Font() ); iRichTextViewer->ApplyLayoutChangesL(); - + // This is called so theme changes will apply when changing theme "on the fly" if ( IsFocused() ) { @@ -193,24 +193,24 @@ aEntry.Type() ); CCalEntry& entry = aEntry.Entry(); - + if( !IsLocked() ) { if( entry.PriorityL() == EFSCalenMRPriorityHigh ) { - iPriorityIcon = CMRImage::NewL( + iPriorityIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapPriorityHigh, ETrue ); iPriorityIcon->SetParent( this ); } if( entry.PriorityL() == EFSCalenMRPriorityLow ) { - iPriorityIcon = CMRImage::NewL( + iPriorityIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapPriorityLow, ETrue ); iPriorityIcon->SetParent( this ); } } - - + + if ( MESMRCalEntry::EESMRCalEntryMeetingRequest == entryType ) { MESMRMeetingRequestEntry* mrEntry = @@ -261,14 +261,14 @@ // if the entry isn't anniversary let's change the icon. if ( CCalEntry::EAnniv != aEntry.Entry().EntryTypeL() ) - { + { delete iFieldIcon; iFieldIcon = NULL; iFieldIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapSubject ); iFieldIcon->SetParent( this ); - DrawDeferred(); + DrawDeferred(); } iDisableRedraw = ETrue; } @@ -290,22 +290,22 @@ // --------------------------------------------------------------------------- // TBool CESMRViewerDetailedSubjectField::HandleEdwinSizeEventL( - CEikEdwin* aEdwin, - TEdwinSizeEvent /*aType*/, + CEikEdwin* aEdwin, + TEdwinSizeEvent /*aType*/, TSize aSize ) { FUNC_LOG; TBool reDraw( EFalse ); - + // Let's save the required size for the iRichTextViewer iSize = aSize; - + if ( iObserver && aEdwin == iRichTextViewer ) { iObserver->ControlSizeChanged( this ); reDraw = ETrue; } - + return reDraw; } @@ -337,12 +337,12 @@ iRichTextViewer->LinkSelectedL(); isUsed = ETrue; } - else if ( aCommand == EAknCmdOpen ) - { + else if ( aCommand == EAknCmdOpen ) + { if ( IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); isUsed = ETrue; @@ -360,12 +360,12 @@ FUNC_LOG; CESMRField::SetOutlineFocusL ( aFocus ); iRichTextViewer->SetFocus( aFocus ); - + if( aFocus ) { SetMiddleSoftkeyL(); } - + else { //need to tell action menu that focus has changed @@ -382,7 +382,7 @@ TInt& aLower ) { FUNC_LOG; - + aLower = iRichTextViewer->CurrentLineNumber() * iRichTextViewer->RowHeight(); aUpper = aLower - iRichTextViewer->RowHeight(); } @@ -395,7 +395,7 @@ const TPoint& aPosition ) { FUNC_LOG; - + if ( iRichTextViewer->Rect().Contains( aPosition ) ) { iRichTextViewer->LinkSelectedL(); @@ -413,9 +413,9 @@ { return; } - + CESMRField::LockL(); - + delete iPriorityIcon; iPriorityIcon = NULL; iPriorityIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -445,7 +445,7 @@ } } - + // --------------------------------------------------------------------------- // CESMRViewerDetailedSubjectField::HandleRichTextLinkSelection // --------------------------------------------------------------------------- @@ -456,7 +456,7 @@ TBool result = EFalse; // No implementation yet: waiting for UI spec. - + return result; } @@ -476,12 +476,12 @@ { ++count; } - + if ( iPriorityIcon ) { ++count; } - + return count; } @@ -489,7 +489,7 @@ // CESMRViewerDetailedSubjectField::ComponentControl // --------------------------------------------------------------------------- // -CCoeControl* CESMRViewerDetailedSubjectField::ComponentControl( +CCoeControl* CESMRViewerDetailedSubjectField::ComponentControl( TInt aIndex ) const { switch ( aIndex ) @@ -500,7 +500,7 @@ return iRichTextViewer; case 2: return iPriorityIcon; - + default: return NULL; } @@ -516,24 +516,24 @@ TInt richTextViewerWidth = iRichTextViewer->Size().iWidth; TRect rect( Rect() ); - TAknLayoutRect rowLayoutRect( + TAknLayoutRect rowLayoutRect( NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ) ); TRect rowRect( rowLayoutRect.Rect() ); - + // Layouting field icon if( iFieldIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowAColumnGraphic ) ); AknLayoutUtils::LayoutControl( iFieldIcon, rowRect, iconLayout ); } - + // Layouting priority icon if( iPriorityIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iPriorityIcon, rowRect, iconLayout ); } @@ -542,32 +542,32 @@ if( iPriorityIcon ) { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, + viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); } else { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, + viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, NMRLayoutManager::EMRTextLayoutTextEditor ); } - + // Layouting viewer field TRect viewerRect( viewerLayoutText.TextRect() ); // Resize height according to actual height required by edwin. viewerRect.Resize( 0, iSize.iHeight - viewerRect.Height() ); - iRichTextViewer->SetRect( viewerRect ); - + iRichTextViewer->SetRect( viewerRect ); + // Layouting focus - TRect bgRect( viewerRect ); - + TRect bgRect( viewerRect ); + // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); SetFocusRect( bgRect ); - - // Failures are ignored. - TRAP_IGNORE( - // Try setting font + + // Failures are ignored. + TRAP_IGNORE( + // Try setting font iRichTextViewer->SetFontL( viewerLayoutText.Font() ); // Try applying changes iRichTextViewer->ApplyLayoutChangesL(); @@ -575,8 +575,8 @@ if ( iRichTextViewer->Size().iWidth != richTextViewerWidth ) { - // Most of this case is screen orientation, in this case we need to - // Record the index of focusing link, after updating link array, then + // Most of this case is screen orientation, in this case we need to + // Record the index of focusing link, after updating link array, then // reset the focusing to original one. TInt focusingIndex = iRichTextViewer->GetFocusLink(); if ( KErrNotFound != focusingIndex ) @@ -592,12 +592,33 @@ // CESMRViewerDetailedSubjectField::SetContainerWindowL // --------------------------------------------------------------------------- // -void CESMRViewerDetailedSubjectField::SetContainerWindowL( +void CESMRViewerDetailedSubjectField::SetContainerWindowL( const CCoeControl& aContainer ) { CCoeControl::SetContainerWindowL( aContainer ); - iRichTextViewer->SetContainerWindowL( aContainer ); + iRichTextViewer->SetContainerWindowL( aContainer ); iRichTextViewer->SetParent( this ); } +// --------------------------------------------------------------------------- +// CESMRViewerDetailedSubjectField::SupportsLongTapFunctionalityL +// --------------------------------------------------------------------------- +// +TBool CESMRViewerDetailedSubjectField::SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ) + { + FUNC_LOG; + TBool ret( EFalse ); + + if ( iRichTextViewer->Rect().Contains( aPointerEvent.iPosition ) ) + { + if( iRichTextViewer->PointerEventOccuresOnALinkL( aPointerEvent ) ) + { + ret = ETrue; + } + } + + return ret; + } + //EOF diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerlocationfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerlocationfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerlocationfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -235,19 +235,6 @@ break; } - case EAknCmdOpen: - { - // Open command is handled only when field is locked - if ( IsLocked() ) - { - HandleTactileFeedbackL(); - - CESMRGlobalNote::ExecuteL( - CESMRGlobalNote::EESMRUnableToEdit ); - isUsed = ETrue; - } - break; - } default: { break; @@ -406,8 +393,8 @@ if ( iRichTextViewer->Size().iWidth != richTextViewerWidth ) { - // Most of this case is screen orientation, in this case we need to - // Record the index of focusing link, after updating link array, then + // Most of this case is screen orientation, in this case we need to + // Record the index of focusing link, after updating link array, then // reset the focusing to original one. TInt focusingIndex = iRichTextViewer->GetFocusLink(); if ( KErrNotFound != focusingIndex ) @@ -416,7 +403,7 @@ //wake up current contact menu selection by calling this iRichTextViewer->FocusChanged(ENoDrawNow); } - } + } } // --------------------------------------------------------------------------- @@ -565,32 +552,41 @@ { TBool ret( EFalse ); - if( iLocked ) + // Button events are handled by HandleControlEvent. + // Tap on link is handled by rich text viewer. + if ( !iFieldButton->Rect().Contains( aPosition ) + && !iRichTextViewer->GetSelectedLink() ) { HandleTactileFeedbackL(); - CESMRGlobalNote::ExecuteL( - CESMRGlobalNote::EESMRUnableToEdit ); + NotifyEventL( EAknSoftkeyContextOptions ); - // Field locked, let's consume the event + // Event is always consumed, if we come inside this if-clause ret = ETrue; } - else - { - // Button events are handled by HandleControlEvent. - // Tap on link is handled by rich text viewer. - if ( !iFieldButton->Rect().Contains( aPosition ) - && !iRichTextViewer->GetSelectedLink() ) - { - NotifyEventL( EAknSoftkeyContextOptions ); - - ret = ETrue; - - HandleTactileFeedbackL(); - } - } return ret; } +// --------------------------------------------------------------------------- +// CESMRViewerLocationField::SupportsLongTapFunctionalityL +// --------------------------------------------------------------------------- +// +TBool CESMRViewerLocationField::SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ) + { + FUNC_LOG; + TBool ret( EFalse ); + + if ( iRichTextViewer->Rect().Contains( aPointerEvent.iPosition ) ) + { + if( iRichTextViewer->PointerEventOccuresOnALinkL( aPointerEvent ) ) + { + ret = ETrue; + } + } + + return ret; + } + //EOF diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerpriorityfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerpriorityfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerpriorityfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -27,7 +27,7 @@ #include #include -#include +#include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencedatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencedatefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencedatefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -28,8 +28,8 @@ #include #include #include -#include -#include +#include +#include #include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,8 +29,8 @@ #include #include #include -#include -#include +#include +#include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstartdatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstartdatefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstartdatefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -34,10 +34,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include // ======== LOCAL FUNCTIONS ======== namespace // codescanner::namespace diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstopdatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstopdatefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstopdatefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -26,7 +26,7 @@ #include "cesmrglobalnote.h" #include -#include +#include #include #include #include @@ -34,8 +34,8 @@ #include #include #include -#include -#include +#include +#include #include "esmrfieldbuilderdef.h" // ======== LOCAL FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewersyncfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewersyncfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewersyncfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,8 +24,8 @@ #include "cesmrglobalnote.h" #include -#include -#include +#include +#include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewertimefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewertimefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewertimefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -31,10 +31,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmralarmonofffield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmralarmonofffield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmralarmonofffield.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,10 +24,10 @@ #include "mesmrfieldvalidator.h" #include "nmrlayoutmanager.h" -#include +#include #include #include -#include +#include // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentcommandhandler.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentcommandhandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentcommandhandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -36,8 +36,8 @@ #include #include #include -#include -#include +#include +#include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentsfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentsfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentsfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -27,14 +27,14 @@ #include "cesmrrichtextlink.h" #include "cmrattachmentcommandhandler.h" -#include +#include #include #include -#include +#include #include #include #include -#include +#include // DEBUG #include "emailtrace.h" @@ -44,7 +44,6 @@ namespace { // codescanner::namespace //CONSTANTS -// TODO: Read default text from resource _LIT( KAddAttachment, "Add attachment" ); _LIT( KNewLine, "\f" ); @@ -141,7 +140,6 @@ iRichTextViewer->SetLinkObserver (this ); iRichTextViewer->SetParent( this ); - // TODO: read from resource iTitle->SetTextL( KAddAttachment ); // Draw bg instead of using skin bg @@ -479,7 +477,7 @@ TBool CMRAttachmentsField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - // TODO: Changes from other fields have to be implemented here + TBool handled( EFalse ); // From cesmrattachmentfield @@ -620,7 +618,6 @@ delete attachmentSize; attachmentSize = NULL; - // TODO: correct icon zise to correct one. Ask from UI specifier. TSize iconSize( 20, 20); maxLineWidth -= iconSize.iWidth; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrmulticalenfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrmulticalenfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrmulticalenfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -26,12 +26,12 @@ #include "cesmrglobalnote.h" #include #include -#include +#include #include #include -#include +#include #include -#include +#include // DEBUG #include "emailtrace.h" #include "cesmrcaldbmgr.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmropenattachmentcommand.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmropenattachmentcommand.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmropenattachmentcommand.cpp Tue May 11 15:57:15 2010 +0300 @@ -20,10 +20,10 @@ #include #include #include -#include +#include #include -#include -#include +#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveandopenattachmentcommand.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveandopenattachmentcommand.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveandopenattachmentcommand.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,12 +19,12 @@ #include #include #include -#include +#include #include #include -#include +#include #include -#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveattachmentcommand.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveattachmentcommand.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveattachmentcommand.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,12 +19,12 @@ #include #include #include -#include +#include #include #include -#include +#include #include -#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrtimecontainer.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrtimecontainer.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrtimecontainer.cpp Tue May 11 15:57:15 2010 +0300 @@ -26,10 +26,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrunifiededitorfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrunifiededitorfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrunifiededitorfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -25,12 +25,12 @@ #include "cesmrglobalnote.h" #include -#include +#include #include #include -#include +#include #include -#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrviewerattachmentfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrviewerattachmentfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrviewerattachmentfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -30,14 +30,14 @@ #include "mcalremoteattachmentoperation.h" #include "cesmrglobalnote.h" -#include +#include #include #include -#include +#include #include #include #include -#include +#include #include // DEBUG @@ -263,7 +263,7 @@ { ++count; } - + if ( iLockIcon ) { ++count; @@ -302,7 +302,7 @@ FUNC_LOG; TRect rect( Rect() ); - TAknLayoutRect rowLayoutRect( + TAknLayoutRect rowLayoutRect( NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ) ); TRect rowRect( rowLayoutRect.Rect() ); @@ -318,22 +318,22 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rowRect, iconLayout ); } - + // Layouting viewer rect TAknLayoutText viewerLayoutText; if( iLockIcon ) { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, + viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); } else { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, + viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, NMRLayoutManager::EMRTextLayoutTextEditor ); } @@ -342,7 +342,7 @@ // Resize height according to actual height required by edwin. viewerRect.Resize( 0, iSize.iHeight - viewerRect.Height() ); iRichTextViewer->SetRect( viewerRect ); - + // Layouting focus TRect bgRect( 0, 0, 0, 0 ); if( iAttachmentCount > 1 ) @@ -364,7 +364,7 @@ // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); SetFocusRect( bgRect ); - + // Failures are ignored. TRAP_IGNORE( // Set font @@ -458,7 +458,7 @@ TBool CMRViewerAttachmentsField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - // TODO: Changes from other fields have to be implemented here + TBool handled( EFalse ); //handle locked field first @@ -468,7 +468,7 @@ aCommand == EAknCmdOpen ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); return ETrue; @@ -489,7 +489,7 @@ iAttachmentCommandHandler->HandleAttachmentCommandL( aCommand, *currentLink ); - + HandleTactileFeedbackL(); } else @@ -497,7 +497,7 @@ iAttachmentCommandHandler->HandleRemoteAttachmentCommandL( aCommand, *currentLink ); - + HandleTactileFeedbackL(); } @@ -538,7 +538,7 @@ { TRAP_IGNORE( NotifyEventL( EMRLaunchAttachmentContextMenu )); ret = ETrue; - + TRAP_IGNORE( HandleTactileFeedbackL() ); } @@ -576,56 +576,51 @@ attachmentLinks.ReserveL( iAttachmentCount ); for ( TInt i = 0; i < iAttachmentCount; ++i ) { - CCalAttachment* att = iEntry->Entry().AttachmentL( i ); // Ownership not gained + CCalAttachment* attachment = iEntry->Entry().AttachmentL( i ); // Ownership not gained - // Reducing space required by file size information from - // max line width, so that file name can be trimmed to correct - // length - TInt maxLineWidth = layoutText.TextRect().Width(); - const CFont* font = layoutText.Font(); + const CFont* font = layoutText.Font(); + TInt maxFileNameLengthInPixels( MaxTextLengthInPixelsL() ); - HBufC* attachmentSize = AttachmentNameAndSizeL( KNullDesC(), *att ); - TInt attachmentSizeLength = attachmentSize->Length(); - maxLineWidth -= font->TextWidthInPixels( *attachmentSize ); - delete attachmentSize; - attachmentSize = NULL; + // Size information needs to be reduced from max filename length + HBufC* attachmentSizeOnly( + AttachmentNameAndSizeL( KNullDesC(), *attachment ) ); + TInt sizeInformationLengthInPixels( + font->TextWidthInPixels( *attachmentSizeOnly ) ); + maxFileNameLengthInPixels -= sizeInformationLengthInPixels; - // TODO: correct icon zise to correct one. Ask from UI specifier. - TSize iconSize( 20, 20); - maxLineWidth -= iconSize.iWidth; - - // Trimming file name to fit to one line - TPtrC text = att->Label(); - HBufC* clippedTextHBufC = ClipTextLC( text, *font, maxLineWidth ); - TPtr clippedText = clippedTextHBufC->Des(); - clippedText.Trim(); + // Trimming file name to fit to one line + TPtrC text = attachment->Label(); + HBufC* clippedTextHBufC = ClipTextLC( + text, *font, maxFileNameLengthInPixels ); + TPtr clippedText = clippedTextHBufC->Des(); + clippedText.Trim(); if ( clippedText.Length() > 0 ) { - // Creating rich text link - CESMRRichTextLink* link = CESMRRichTextLink::NewL( - buffer.Length(), - clippedText.Length() + attachmentSizeLength, - text, - CESMRRichTextLink::ETypeAttachment, - CESMRRichTextLink::ETriggerKeyRight ); - CleanupStack::PushL( link ); - attachmentLinks.AppendL( link ); - CleanupStack::Pop( link ); + HBufC* buf = AttachmentNameAndSizeL( clippedText, *attachment ); + CleanupStack::PushL( buf ); - HBufC* buf = AttachmentNameAndSizeL( clippedText, *att ); - CleanupStack::PushL( buf ); + // Creating rich text link + CESMRRichTextLink* link = CESMRRichTextLink::NewL( + buffer.Length(), + buf->Length(), + text, + CESMRRichTextLink::ETypeAttachment, + CESMRRichTextLink::ETriggerKeyRight ); + CleanupStack::PushL( link ); + attachmentLinks.AppendL( link ); + CleanupStack::Pop( link ); - // Append attachment name and size with line feed to buffer - buffer.ReAllocL( buffer.Length() + - clippedText.Length() + - buf->Length() + - KNewLine().Length() ); + // Append attachment name and size with line feed to buffer + buffer.ReAllocL( buffer.Length() + + clippedText.Length() + + buf->Length() + + KNewLine().Length() ); - buffer.Append( buf->Des() ); - buffer.Append( KNewLine ); + buffer.Append( buf->Des() ); + buffer.Append( KNewLine ); - CleanupStack::PopAndDestroy( buf ); + CleanupStack::PopAndDestroy( buf ); } CleanupStack::PopAndDestroy( clippedTextHBufC ); @@ -744,7 +739,7 @@ attachmentStrings->AppendL( aDes ); stringholder = StringLoader::LoadLC( - R_MEET_REQ_ATTACHMENT_FILE_LESS_THAN_KILOBYTE , + R_MEET_REQ_ATTACHMENT_FILE_LESS_THAN_KILOBYTE , *attachmentStrings ); } else @@ -959,7 +954,7 @@ FUNC_LOG; TInt commandInProgress( iAttachmentCommandHandler->CurrentCommandInProgress() ); - + // Get selected attachment CCalAttachment* selectedAttachment = NULL; @@ -980,21 +975,21 @@ ASSERT( selectedAttachment ); - + /* * Case 1: Download in progress */ if( commandInProgress ) { - // A) If selected attachment is remote attachment and download is in progress + // A) If selected attachment is remote attachment and download is in progress // or attachment is queued for downloading - if( selectedAttachment->Type() == CCalAttachment::EUri && + if( selectedAttachment->Type() == CCalAttachment::EUri && EESMRViewerSaveAllAttachments == commandInProgress ) { aMenuPane->SetItemDimmed( EESMRViewerOpenAttachment, ETrue ); - + aMenuPane->SetItemDimmed( EESMRViewerSaveAttachment, ETrue ); @@ -1003,7 +998,7 @@ EESMRViewerSaveAllAttachments, ETrue ); } - + // B) If selected attachment is local attachment else if( selectedAttachment->Type() == CCalAttachment::EFile ) { @@ -1011,7 +1006,7 @@ aMenuPane->SetItemDimmed( EESMRViewerCancelAttachmentDownload, ETrue ); - + // If attachment count is one, hide 'Save All' also if ( iAttachmentCount == 1 ) { @@ -1020,11 +1015,11 @@ ETrue ); } } - + // C) If selected attachment is Uri, and some other command is in progress // than save all - else if( selectedAttachment->Type() == CCalAttachment::EUri && - commandInProgress != EESMRViewerSaveAllAttachments ) + else if( selectedAttachment->Type() == CCalAttachment::EUri && + commandInProgress != EESMRViewerSaveAllAttachments ) { // If this attachment is the one being downloaded if( IsAttachmentDownloadInProgress( *selectedAttachment ) ) @@ -1032,25 +1027,25 @@ aMenuPane->SetItemDimmed( EESMRViewerOpenAttachment, ETrue ); - + aMenuPane->SetItemDimmed( EESMRViewerSaveAttachment, ETrue ); - + aMenuPane->SetItemDimmed( EESMRViewerSaveAllAttachments, ETrue ); } - - + + // if this attacment is not the one being downloaded else - { + { // Always hide cancel attachment download item aMenuPane->SetItemDimmed( EESMRViewerCancelAttachmentDownload, ETrue ); - + // If attachment count is one, hide 'Save All' also if ( iAttachmentCount == 1 ) { @@ -1061,7 +1056,7 @@ } } } - + /* * Case 2: No download in progress */ @@ -1071,7 +1066,7 @@ aMenuPane->SetItemDimmed( EESMRViewerCancelAttachmentDownload, ETrue ); - + // If attachment count is one, hide 'Save All' also if ( iAttachmentCount == 1 ) { @@ -1086,16 +1081,16 @@ // CMRViewerAttachmentsField::IsAttachmentDownloadInProgress // --------------------------------------------------------------------------- // -TBool CMRViewerAttachmentsField::IsAttachmentDownloadInProgress( +TBool CMRViewerAttachmentsField::IsAttachmentDownloadInProgress( const CCalAttachment& aAttachment ) { TBool ret( EFalse ); - + RPointerArray& remoteOperations( iAttachmentCommandHandler->RemoteOperations() ); TPtrC currentAttachmentName( aAttachment.Label() ); - + TInt downloadOperationCount( remoteOperations.Count() ); if ( downloadOperationCount ) { @@ -1106,7 +1101,7 @@ remoteOperations[i]->AttachmentInformation(); TPtrC label( attachInfo.AttachmentLabel() ); - + if ( label.Compare( currentAttachmentName ) == 0 ) { ret = ETrue; @@ -1117,4 +1112,53 @@ return ret; } +// --------------------------------------------------------------------------- +// CMRViewerAttachmentsField::SupportsLongTapFunctionalityL +// --------------------------------------------------------------------------- +// +TBool CMRViewerAttachmentsField::SupportsLongTapFunctionalityL( + const TPointerEvent &aPointerEvent ) + { + FUNC_LOG; + TBool ret( EFalse ); + + if ( iRichTextViewer->Rect().Contains( aPointerEvent.iPosition ) ) + { + if( iRichTextViewer->PointerEventOccuresOnALinkL( aPointerEvent ) ) + { + ret = ETrue; + } + } + + return ret; + } + +// --------------------------------------------------------------------------- +// CMRViewerAttachmentsField::MaxTextLengthInPixelsL +// --------------------------------------------------------------------------- +// +TInt CMRViewerAttachmentsField::MaxTextLengthInPixelsL() + { + FUNC_LOG; + /* + * RichTextViewer length cannot be used here directly, since + * this value is not always available. Value needs to be calculated. + */ + TRect tempFieldRect( TPoint( 0, 0 ), MinimumSize() ); + + // Rich Text viewer width is the same as other common rich text components + // width + TAknLayoutRect rowLayoutRect( + NMRLayoutManager::GetFieldRowLayoutRect( tempFieldRect, 1 ) ); + TRect rowRect( rowLayoutRect.Rect() ); + + TAknLayoutText layoutText( NMRLayoutManager::GetLayoutText( + rowRect, + NMRLayoutManager::EMRTextLayoutTextEditor ) ); + + TRect tempRichTextViewerRect( layoutText.TextRect() ); + + return tempRichTextViewerRect.Width(); + } + //EOF diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclsitem.h --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclsitem.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclsitem.h Tue May 11 15:57:15 2010 +0300 @@ -23,7 +23,7 @@ #include #include -#include // TPsMatchLocation +#include // TPsMatchLocation // FORWARD DECLARATIONS class MVPbkContactLink; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclslistshandler.h --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclslistshandler.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclslistshandler.h Tue May 11 15:57:15 2010 +0300 @@ -22,8 +22,8 @@ #include #include // TContactItemId #include // MDesCArray -#include -#include +#include +#include #include "cesmrclsitem.h" #include "resmrstatic.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclsmatchobserver.h --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclsmatchobserver.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclsmatchobserver.h Tue May 11 15:57:15 2010 +0300 @@ -23,9 +23,9 @@ #include #include -#include -#include -#include +#include +#include +#include // FORWARD DECLARATIONS class CRepository; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrncseditor.h --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrncseditor.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrncseditor.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define CESMRNCSEDITOR_H #include -#include +#include /** * CESMRNcsEditor is a specialised CEikRichTextEditor for diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrviewerattendeesfield.h --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrviewerattendeesfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrviewerattendeesfield.h Tue May 11 15:57:15 2010 +0300 @@ -49,7 +49,7 @@ */ ~CESMRViewerAttendeesField( ); -public: // From CCoeControl +protected: // From CCoeControl TInt CountComponentControls( ) const; CCoeControl* ComponentControl( TInt aInd ) const; void SizeChanged( ); @@ -57,7 +57,7 @@ void SetContainerWindowL(const CCoeControl& aContainer); TSize MinimumSize(); -public: // From CESMRField +protected: // From CESMRField void InitializeL(); void SetOutlineFocusL( TBool aFocus ); void InternalizeL( MESMRCalEntry& aEntry ); @@ -65,13 +65,12 @@ void GetCursorLineVerticalPos(TInt& aUpper, TInt& aLower); void ListObserverSet( ); TBool ExecuteGenericCommandL( TInt aCommand ); - void HandleLongtapEventL( const TPoint& aPosition ); -public: // From MEikEdwinSizeObserver +protected: // From MEikEdwinSizeObserver TBool HandleEdwinSizeEventL(CEikEdwin* aEdwin, TEdwinSizeEvent aType, TSize aDesirableEdwinSize ); -public: // From MESMRRichTextObserver +protected: // From MESMRRichTextObserver TBool HandleRichTextLinkSelection(const CESMRRichTextLink* aLink ); private: // Implementation @@ -87,14 +86,14 @@ CMRLabel* iTitle; // Not own: Container for all the attendees CESMRRichTextViewer* iRichTextViewer; - // Size of the field when after field has expanded. + // Size of the field after field has been expanded. TSize iExpandedSize; // Size of the title TSize iTitleSize; // Inofrmation about attendee type CCalAttendee::TCalRole iRole; // Not owned. Attendee list. - RPointerArray iCalAttendees; + RPointerArray iCalAttendees; // Show all attendees. TBool iShowAllAttendees; }; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrviewerfromfield.h --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrviewerfromfield.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrviewerfromfield.h Tue May 11 15:57:15 2010 +0300 @@ -35,7 +35,7 @@ * Field for showing the "from" information. In other words this field shows * that who sent/organized this meeting request. */ -NONSHARABLE_CLASS( CESMRViewerFromField ) : public CESMRField, +NONSHARABLE_CLASS( CESMRViewerFromField ) : public CESMRField, MEikEdwinSizeObserver { public: @@ -45,39 +45,38 @@ * @return New viewer from field object */ static CESMRViewerFromField* NewL( ); - + /** * C++ Destructor. */ ~CESMRViewerFromField( ); - - public: // From CESMRField + + protected: // From CESMRField void InternalizeL( MESMRCalEntry& aEntry ); void InitializeL(); TBool ExecuteGenericCommandL( TInt aCommand ); void SetOutlineFocusL( TBool aFocus ); - void HandleLongtapEventL( const TPoint& aPosition ); - - public: // From CCoeControl + + protected: // From CCoeControl TKeyResponse OfferKeyEventL( - const TKeyEvent& aEvent, + const TKeyEvent& aEvent, TEventCode aType ); TInt CountComponentControls() const; CCoeControl* ComponentControl( TInt aInd ) const; void SizeChanged(); TSize MinimumSize(); void SetContainerWindowL(const CCoeControl& aContainer); - - public: // From MEikEdwinSizeObserver - TBool HandleEdwinSizeEventL( - CEikEdwin* aEdwin, + + protected: // From MEikEdwinSizeObserver + TBool HandleEdwinSizeEventL( + CEikEdwin* aEdwin, TEdwinSizeEvent aType, TSize aSize ); - + private: // Implementation CESMRViewerFromField( ); void ConstructL( ); - + private: // data // Not own: Actual text of this field, not owned CESMRRichTextViewer* iRichTextViewer; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/resmrpluginextensionstatic.h --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/resmrpluginextensionstatic.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/resmrpluginextensionstatic.h Tue May 11 15:57:15 2010 +0300 @@ -21,7 +21,7 @@ #include // -#include "CFSMailClient.h" +#include "cfsmailclient.h" // class TESMRPluginExtensionData; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/CESMRFieldBuilderPluginExtension.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/CESMRFieldBuilderPluginExtension.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/CESMRFieldBuilderPluginExtension.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,9 +29,9 @@ #include "cesmrresponsefield.h" #include "cesmrviewerfromfield.h" #include "cesmrfieldbuilderinterface.h" -#include "CFSMailCommon.h" +#include "cfsmailcommon.h" -#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrattendeefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrattendeefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrattendeefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -17,7 +17,7 @@ #include "cesmrattendeefield.h" // #include "esmrcommands.h" -#include "CFSMailClient.h" +#include "cfsmailclient.h" // #include "cesmrncspopuplistbox.h" #include "cesmrncsemailaddressobject.h" @@ -31,9 +31,9 @@ #include "cmrimage.h" #include "cmrbutton.h" -#include +#include #include -#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclsitem.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclsitem.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclsitem.cpp Tue May 11 15:57:15 2010 +0300 @@ -20,7 +20,7 @@ #include "cesmrclsitem.h"// CESMRClsItem #include "esmrfieldbuilderdef.h" -#include +#include // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclslistshandler.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclslistshandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclslistshandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -20,20 +20,20 @@ #include // CEikonEnv #include // CRepository -#include // KCRUidAknFep -#include // CPbkContactEngine -#include // CPbkContactItem, TPbkContactItemField +#include // KCRUidAknFep +#include // CPbkContactEngine +#include // CPbkContactItem, TPbkContactItemField #include // CAknErrorNote // -#include "CFSMailBox.h" // cfsmailbox +#include "cfsmailbox.h" // cfsmailbox // -#include -#include -#include -#include +#include +#include +#include +#include #include // TLanguage -#include +#include #include "mesmrclslistsobserver.h" #include "cesmrclsmatchobserver.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclsmatchobserver.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclsmatchobserver.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrclsmatchobserver.cpp Tue May 11 15:57:15 2010 +0300 @@ -22,17 +22,17 @@ #include "esmrfieldbuilderdef.h" // for PCS support -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include // CRepository -#include // KCRUidAknFep, KAknFepPredTxtFlag -#include +#include // KCRUidAknFep, KAknFepPredTxtFlag +#include //Constants diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrconflictpopup.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrconflictpopup.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrconflictpopup.cpp Tue May 11 15:57:15 2010 +0300 @@ -18,8 +18,8 @@ #include "mesmrcalentry.h" #include "mesmrmeetingrequestentry.h" -#include -#include +#include +#include #include #include #include @@ -230,10 +230,6 @@ CEikonEnv::Static()-> // codescanner::eikonenvstatic HandleError(error); } - - // TODO: use XML layout data. Use this one popup_preview_text_window - /*iNote->SetPositionAndAlignment( CESMRLayoutManager::ConflictPopupPosition(), - EHLeftVCenter );*/ iNote->ShowInfoPopupNote(); } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrinputmodeobserver.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrinputmodeobserver.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrinputmodeobserver.cpp Tue May 11 15:57:15 2010 +0300 @@ -21,10 +21,10 @@ #include "cesmrclslistshandler.h" #include // TUid -#include // KCRUidAknFep, KAknFepPredTxtFlag +#include // KCRUidAknFep, KAknFepPredTxtFlag #include // CRepository -#include // PCS TKeyboardModes enum +#include // PCS TKeyboardModes enum #include // Unnamed namespace for local definitions diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncsaifeditor.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncsaifeditor.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncsaifeditor.cpp Tue May 11 15:57:15 2010 +0300 @@ -18,12 +18,12 @@ #include "emailtrace.h" #include "cesmrncsaifeditor.h" -#include +#include #include #include #include -#include -#include +#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncseditor.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncseditor.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncseditor.cpp Tue May 11 15:57:15 2010 +0300 @@ -22,13 +22,13 @@ #include #include // CAknEnv #include -#include // AknLayoutUtils +#include // AknLayoutUtils #include -#include -#include -#include -#include +#include +#include +#include +#include // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncspopuplistbox.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncspopuplistbox.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncspopuplistbox.cpp Tue May 11 15:57:15 2010 +0300 @@ -22,11 +22,11 @@ #include "nmrcolormanager.h" #include -#include -#include // StringLoader +#include +#include // StringLoader #include //text truncation -#include //line wrapping and mirroring +#include //line wrapping and mirroring #include //xml layout data for applications #include //xml layout data of avkon components #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrresponsefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrresponsefield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrresponsefield.cpp Tue May 11 15:57:15 2010 +0300 @@ -25,7 +25,7 @@ #include "cesmrlistquery.h" #include -#include +#include #include // DEBUG diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrtrackingfieldlabel.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrtrackingfieldlabel.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrtrackingfieldlabel.cpp Tue May 11 15:57:15 2010 +0300 @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include // ======== MEMBER FUNCTIONS ======== @@ -76,11 +76,7 @@ void CESMRTrackingFieldLabel::InitializeL() { FUNC_LOG; - // TODO: Do not use old layout manager anymore - //iTitleSize = iLayout->FieldSize ( EESMRFieldAttendeeLabel ); - - // TODO: use XML Data - //iTitle->SetFont( iLayout->Font (iCoeEnv, EESMRFieldAttendeeLabel ) ); + } // --------------------------------------------------------------------------- diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrtrackstatus.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrtrackstatus.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrtrackstatus.cpp Tue May 11 15:57:15 2010 +0300 @@ -32,11 +32,11 @@ #include #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include @@ -45,10 +45,6 @@ // DEBUG #include "emailtrace.h" -// TODO: THIS WHOLE CLASS NEEDS TO BE REIMPLEMENTED USING XML LAYOUT DATA -// IF THIS IS TAKEN INTO USE - - // ======== MEMBER FUNCTIONS ======== // --------------------------------------------------------------------------- @@ -142,18 +138,6 @@ } iAddress = attendee[currentIndex]->Address().AllocL(); } - - // TODO: set font with XML data - //const CFont* font = iLayout->Font (iCoeEnv, iFieldId ); - //TInt maxLineWidth = iLabel->Size().iWidth; - //maxLineWidth -= KIconSize.iWidth; - - //HBufC* clippedTextHBufC = ClipTextLC( text, *font, maxLineWidth ); - //TPtr clippedText = clippedTextHBufC->Des(); - //clippedText.Trim(); - //iLabel->SetTextL( clippedText ); - //CleanupStack::PopAndDestroy( clippedTextHBufC ); - //clippedTextHBufC = NULL; NMRBitmapManager::TMRBitmapId bitmapId; @@ -303,29 +287,10 @@ if( aFocused ) { - // TODO: correct this User::LeaveIfError( NMRBitmapManager::GetSkinBasedBitmap( NMRBitmapManager::EMRBitmapRightClickArrow, iActionMenuIcon, iActionMenuIconMask, TSize(20, 20) ) ); - - // TODO: USE XML LAYOUT DATA AND CMRIMAGE - // Even if creating mask failed, bitmap can be used (background is just not displayed correctly) - /*if( iActionMenuIcon ) - { - iIcon = new (ELeave) CEikImage; - iIcon->SetPictureOwnedExternally(ETrue); - iIcon->SetPicture( iActionMenuIcon, iActionMenuIconMask ); - - TRect rect = Rect ( );*/ - - // TODO: use layout data - /*TInt iconTopMargin = ( rect.Height() - KIconSize.iHeight ) / 2; - TPoint iconPos( rect.iBr.iX - KIconSize.iWidth - KIconBorderMargin, - rect.iBr.iY - iconTopMargin - KIconSize.iHeight); - iIcon->SetPosition ( iconPos ); - iIcon->SetSize ( KIconSize );*/ - //} } } @@ -340,14 +305,6 @@ if ( iIcon ) { TRect rect = Rect ( ); - // TODO: use XML layout - /* - TInt iconTopMargin = ( rect.Height() - KIconSize.iHeight ) / 2; - TPoint iconPos( rect.iBr.iX - KIconSize.iWidth - KIconBorderMargin, - rect.iBr.iY - iconTopMargin - KIconSize.iHeight); - - iIcon->SetPosition ( iconPos ); - iIcon->SetSize ( KIconSize );*/ } } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerattendeesfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerattendeesfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerattendeesfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -251,10 +251,10 @@ TRect bgRect( 0, 0, 0, 0 ); if( iCalAttendees.Count() > 1 ) { - bgRect.SetRect( - TPoint( viewerRect.iTl.iX, - viewerRect.iTl.iY - FocusMargin() ), - TPoint( viewerRect.iBr.iX, + bgRect.SetRect( + TPoint( viewerRect.iTl.iX, + viewerRect.iTl.iY - FocusMargin() ), + TPoint( viewerRect.iBr.iX, viewerRect.iBr.iY + FocusMargin() ) ); } else @@ -268,11 +268,11 @@ // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); SetFocusRect( bgRect ); - + iRichTextViewer->SetRect( viewerRect ); - // Failures are ignored. - TRAP_IGNORE( + // Failures are ignored. + TRAP_IGNORE( iRichTextViewer->SetFontL( viewerLayoutText.Font() ); if( iCalAttendees.Count() > 0 ) { @@ -280,15 +280,15 @@ } iRichTextViewer->ApplyLayoutChangesL(); ); - + // Update AttendeesList only if iRichTextViewer width was changed. // This happens when screen orientation changes e.g. This check // also prevents recursive calls to UpdateAttendeesListL since // it causes edwin size changed event. if ( iRichTextViewer->Size().iWidth != richTextViewerWidth ) { - // Most of this case is screen orientation, in this case we need to - // Record the index of focusing link, after updating link array, then + // Most of this case is screen orientation, in this case we need to + // Record the index of focusing link, after updating link array, then // reset the focusing to original one. TInt focusingIndex = iRichTextViewer->GetFocusLink(); // Ignore leave, there's nothing we can do if leave occurs. @@ -360,7 +360,6 @@ { // Parent rect will be list area later --> no need to calculate it manually. TRect parentRect = Parent()->Rect(); - // TODO: Remove this after new list area is completed. See previous comment. TRect contentRect = NMRLayoutManager::GetLayoutRect( parentRect, NMRLayoutManager::EMRLayoutListArea ).Rect(); // We have two lines; title and richtextviewer. @@ -408,21 +407,6 @@ } // ----------------------------------------------------------------------------- -// CESMRViewerAttendeesField::HandleLongtapEventL -// ----------------------------------------------------------------------------- -// -void CESMRViewerAttendeesField::HandleLongtapEventL( const TPoint& aPosition ) - { - FUNC_LOG; - - if ( iRichTextViewer->Rect().Contains( aPosition ) ) - { - iRichTextViewer->LinkSelectedL(); - HandleTactileFeedbackL(); - } - } - -// ----------------------------------------------------------------------------- // CESMRViewerAttendeesField::HandleEdwinSizeEventL // ----------------------------------------------------------------------------- // @@ -547,7 +531,6 @@ NMRLayoutManager::EMRTextLayoutTextEditor ); const CFont* font = text.Font(); - // TODO: correct icon zise to correct one. Ask from UI specifier. TSize iconSize( 20, 20); TInt maxLineWidth = iRichTextViewer->LayoutWidth(); @@ -678,21 +661,21 @@ FUNC_LOG; // Calculates the line spacing based on default one line layout data TInt lineSpacing( 0 ); - + TRect rect( Rect() ); - + TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); TRect rowRect = rowLayoutRect.Rect(); - TAknLayoutText labelLayout = - NMRLayoutManager::GetLayoutText( + TAknLayoutText labelLayout = + NMRLayoutManager::GetLayoutText( rect, NMRLayoutManager::EMRTextLayoutTextEditor ); - + TRect defaultTextRect = labelLayout.TextRect(); - + TInt difference = rowRect.Height() - defaultTextRect.Height(); - + lineSpacing = difference * 2; return lineSpacing; @@ -707,28 +690,28 @@ FUNC_LOG; // Calculates focus margin based on default one line layout data TInt focusMagin( 0 ); - + TRect rect( Rect() ); - + TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); TRect rowRect = rowLayoutRect.Rect(); - TAknLayoutText labelLayout = - NMRLayoutManager::GetLayoutText( + TAknLayoutText labelLayout = + NMRLayoutManager::GetLayoutText( rect, NMRLayoutManager::EMRTextLayoutTextEditor ); - + TRect defaultTextRect = labelLayout.TextRect(); - - TAknLayoutRect bgLayoutRect = - NMRLayoutManager::GetLayoutRect( + + TAknLayoutRect bgLayoutRect = + NMRLayoutManager::GetLayoutRect( rect, NMRLayoutManager::EMRLayoutTextEditorBg ); TRect defaultBgRect( bgLayoutRect.Rect() ); TInt difference = defaultBgRect.Height() - defaultTextRect.Height(); - + focusMagin = TReal( difference / 2 ); - + return focusMagin; } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerfromfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerfromfield.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerfromfield.cpp Tue May 11 15:57:15 2010 +0300 @@ -25,10 +25,10 @@ #include #include -#include +#include #include #include -#include +#include #include // DEBUG @@ -73,7 +73,7 @@ Rect(), NMRLayoutManager::EMRTextLayoutMultiRowTextEditor ); iRichTextViewer->SetFontL( editorRect.Font() ); iRichTextViewer->ApplyLayoutChangesL(); - + const CFont* topicFont = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont, NULL ); iFieldTopic->SetFont( topicFont ); @@ -157,9 +157,9 @@ editorRect.TextRect().iTl.iX, editorRect.TextRect().iTl.iY ); TSize prefSize( editorRect.TextRect().Width(), iExpandedSize.iHeight ); TRect viewerRect( tlPoint, prefSize ); - // Failures are ignored. - TRAP_IGNORE( - // Try setting font + // Failures are ignored. + TRAP_IGNORE( + // Try setting font iRichTextViewer->SetFontL( editorRect.Font() ); // Try applying changes iRichTextViewer->ApplyLayoutChangesL(); @@ -346,21 +346,6 @@ } // --------------------------------------------------------------------------- -// CESMRViewerFromField::HandleLongtapEventL -// --------------------------------------------------------------------------- -// -void CESMRViewerFromField::HandleLongtapEventL( const TPoint& aPosition ) - { - FUNC_LOG; - - if ( iRichTextViewer->Rect().Contains( aPosition ) ) - { - iRichTextViewer->LinkSelectedL(); - HandleTactileFeedbackL(); - } - } - -// --------------------------------------------------------------------------- // CESMRViewerFromField::SetContainerWindowL() // --------------------------------------------------------------------------- // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrlocationplugin/inc/cesmrlocationpluginimpl.h --- a/meetingrequest/mrgui/mrlocationplugin/inc/cesmrlocationpluginimpl.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrlocationplugin/inc/cesmrlocationpluginimpl.h Tue May 11 15:57:15 2010 +0300 @@ -22,7 +22,7 @@ #include // -#include "aknserverapp.h" +#include "AknServerApp.h" // #include "cesmrlocationplugin.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/mrlocationplugin/src/cesmrlocationpluginimpl.cpp --- a/meetingrequest/mrgui/mrlocationplugin/src/cesmrlocationpluginimpl.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/mrlocationplugin/src/cesmrlocationpluginimpl.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,8 +23,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmraddressinfohandler.cpp --- a/meetingrequest/mrgui/src/cesmraddressinfohandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmraddressinfohandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -20,22 +20,22 @@ #include "cesmraddressinfohandler.h" #include -#include -#include -#include +#include +#include +#include #include #include #include //Virtual Phonebook -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include "cesmrdynamicitemselectionlist.h" #include "cesmrlocationpluginhandler.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrdynamicitemselectionlist.cpp --- a/meetingrequest/mrgui/src/cesmrdynamicitemselectionlist.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrdynamicitemselectionlist.cpp Tue May 11 15:57:15 2010 +0300 @@ -21,7 +21,7 @@ #include "cesmrdynamicitemselectionlist.h" #include -#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmreditordialog.cpp --- a/meetingrequest/mrgui/src/cesmreditordialog.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmreditordialog.cpp Tue May 11 15:57:15 2010 +0300 @@ -51,21 +51,21 @@ #include #include #include -#include +#include #include -#include -#include -#include +#include +#include +#include #include -#include +#include #include -#include -#include +#include +#include #include #include -#include +#include #include -#include +#include // DEBUG #include "emailtrace.h" @@ -1811,7 +1811,7 @@ void CESMREditorDialog::DynInitToolbarL ( TInt /*aResourceId*/, CAknToolbar* /*aToolbar*/ ) { - // TODO: Not implemented yet + } // --------------------------------------------------------------------------- diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrlocationpluginhandler.cpp --- a/meetingrequest/mrgui/src/cesmrlocationpluginhandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrlocationpluginhandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,16 +19,16 @@ #include "esmrconfig.hrh" #include -#include -#include +#include +#include #include // #include "cesmrurlparserplugin.h" // -#include -#include -#include -#include +#include +#include +#include +#include #include #ifdef RD_USE_MYLOCATIONUI diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrmeetingtimevalidator.cpp --- a/meetingrequest/mrgui/src/cesmrmeetingtimevalidator.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrmeetingtimevalidator.cpp Tue May 11 15:57:15 2010 +0300 @@ -30,7 +30,7 @@ #include "mesmrfieldeventqueue.h" #include "mmrabsolutealarmcontroller.h" #include "cesmrgenericfieldevent.h" -#include "cesmrrecurrenceinfoHandler.h" +#include "cesmrrecurrenceinfohandler.h" // Unnamed namespace for local definitions namespace { // codescanner::namespace diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrresponsedialog.cpp --- a/meetingrequest/mrgui/src/cesmrresponsedialog.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrresponsedialog.cpp Tue May 11 15:57:15 2010 +0300 @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrtitlepane.cpp --- a/meetingrequest/mrgui/src/cesmrtitlepane.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrtitlepane.cpp Tue May 11 15:57:15 2010 +0300 @@ -22,14 +22,14 @@ // #include "esmrdef.h" // -#include +#include #include -#include -#include +#include +#include #include -#include +#include #include -#include +#include #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrtrackingview.cpp --- a/meetingrequest/mrgui/src/cesmrtrackingview.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrtrackingview.cpp Tue May 11 15:57:15 2010 +0300 @@ -30,19 +30,19 @@ #include #include -#include -#include +#include +#include #include #include #include -#include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrtrackingviewdialog.cpp --- a/meetingrequest/mrgui/src/cesmrtrackingviewdialog.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrtrackingviewdialog.cpp Tue May 11 15:57:15 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : ESMR tracking view dialog -* Version : %version: e002sa33#15 % +* Version : %version: e002sa32#15.1.1 % * */ @@ -20,10 +20,10 @@ #include "cesmrtrackingviewdialog.h" // SYSTEM INCLUDE -#include -#include +#include +#include #include -#include +#include // #include "cesmrpolicy.h" // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmruifactory.cpp --- a/meetingrequest/mrgui/src/cesmruifactory.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmruifactory.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrview.cpp --- a/meetingrequest/mrgui/src/cesmrview.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrview.cpp Tue May 11 15:57:15 2010 +0300 @@ -15,10 +15,6 @@ * */ -// custom sw help files not avilable in Cmail -//#include //for custom_sw helps -//#include //for custom_sw helps -// #include "cesmrview.h" #include "mesmrmeetingrequestentry.h" #include "esmrinternaluid.h" @@ -40,17 +36,17 @@ #include #include -#include -#include +#include +#include #include #include #include -#include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include @@ -62,10 +58,6 @@ #include "emailtrace.h" - -// Removed profiling. - - // ======== MEMBER FUNCTIONS ======== // --------------------------------------------------------------------------- @@ -214,7 +206,7 @@ delete iAttachmentIndicator; iAttachmentIndicator = NULL; - ReLayout(); + SizeChanged(); } } break; @@ -317,9 +309,7 @@ else { // Only viewer from Mail supported - // TODO: Change to KFS_VIEWER_HLP_MR_RECEIVED - // when help id is released on wk9 platform - LaunchHelpL( KFS_VIEWER_HLP_MEETING_REQ_VIEW ); + LaunchHelpL( KFS_VIEWER_HLP_MR_RECEIVED ); } } else if ( mrEntry->RoleL() == EESMRRoleOrganizer ) @@ -664,8 +654,13 @@ { return; } - - TRect containerRect( Rect() ); + + // Remove possible intersection with toolbar from container rect + TRect containerRect( ContainerRect() ); + + // Now toolbar does not intersect with view, so it must not be taken + // into account when calculating other component layouts. + containerRect.SetRect( TPoint( 0, 0 ), containerRect.Size() ); // Get the rect of stripe. TAknLayoutRect stripeLayoutRect = @@ -682,14 +677,11 @@ TRect listareaRect( listareaLayoutRect.Rect() ); // List panes default rect needs to be modified due to - // possible toolbar, scrollbar and calendar indication stripe + // scrollbar and calendar indication stripe // Remove stripe width from list pane width listareaRect.iTl.iX += iStripeRect.Width(); - // Remove toolbar width from list pane width - listareaRect.iBr.iX -= iToolbar.Rect().Width(); - if( iScrollBar ) { TAknLayoutRect scrollareaLayoutRect = @@ -699,9 +691,6 @@ // Scroll bar's height is always the same as listpane's height scrollareaRect.SetHeight( listareaRect.Height() ); - // Scrollbar needs to be moved to the left side of possible - // toolbar - scrollareaRect.Move( -iToolbar.Rect().Width(), 0 ); iScrollBar->SetRect( scrollareaRect ); // Remove scroll bar width from list area's width @@ -744,8 +733,7 @@ scrollWidth = iScrollBar->Rect().Width(); } - naviArrowRightRect.Move( - -( iToolbar.Rect().Width() + scrollWidth ), 0 ); + naviArrowRightRect.Move( scrollWidth, 0 ); iNaviArrowRight->SetRect( naviArrowRightRect ); } @@ -766,9 +754,7 @@ // The listPane's area should be: // X: Should subtract the width of stripe - // Y: Should subtract the height of MRToolbar listareaRect.iTl.iX += iStripeRect.Width(); - listareaRect.iBr.iY -= iToolbar.Rect().Height(); iListPane->SetRect( listareaRect ); @@ -799,10 +785,6 @@ // stripe width in portrait naviArrowLeftRect.Move( iStripeRect.Width(), 0 ); - // Left arrow needs to be moved up the amount of - // possible toolbar height in portrait - naviArrowLeftRect.Move( 0, -iToolbar.Rect().Height() ); - iNaviArrowLeft->SetRect( naviArrowLeftRect ); } @@ -817,11 +799,6 @@ // stripe width in portrait naviArrowRightRect.Move( iStripeRect.Width(), 0 ); - // Right arrow needs to be moved up the amount of - // possible toolbar height in portrait - naviArrowRightRect.Move( 0, -iToolbar.Rect().Height() ); - - iNaviArrowRight->SetRect( naviArrowRightRect ); } } @@ -996,7 +973,6 @@ case KAknLocalZoomLayoutSwitch: { SizeChanged(); - DrawNow(); break; } default: @@ -1108,16 +1084,6 @@ } // --------------------------------------------------------------------------- -// CESMRView::ReLayout -// --------------------------------------------------------------------------- -// -void CESMRView::ReLayout() - { - FUNC_LOG; - SizeChanged(); - } - -// --------------------------------------------------------------------------- // CESMRView::ProcessEventL // --------------------------------------------------------------------------- // @@ -1161,7 +1127,7 @@ iAttachmentIndicator->SetTextL( value->StringValue() ); iAttachmentIndicator->MakeVisible( ETrue ); - ReLayout(); + SizeChanged(); } } } @@ -1172,7 +1138,7 @@ // TRect CESMRView::CalculateAttachmentIndicatorLayout() { - TRect containerRect( Rect() ); + TRect containerRect( ContainerRect() ); TAknLayoutRect naviArrowLeftLayoutRect = NMRLayoutManager::GetLayoutRect( containerRect, @@ -1194,20 +1160,17 @@ scrollWidth = iScrollBar->Rect().Width(); } - naviArrowRightRect.Move( - -( iToolbar.Rect().Width() + scrollWidth ), 0 ); + naviArrowRightRect.Move( scrollWidth, 0 ); } else { // Left arrow needs to be moved right the amount of // stripe width in portrait naviArrowLeftRect.Move( iStripeRect.Width(), 0 ); - naviArrowLeftRect.Move( 0, -iToolbar.Rect().Height() ); - + TRect naviArrowRightRect = naviArrowRightLayoutRect.Rect(); naviArrowRightRect.Move( iStripeRect.Width(), 0 ); - naviArrowRightRect.Move( 0, -iToolbar.Rect().Height() ); } // Get height for one row @@ -1217,9 +1180,6 @@ TRect rowRect( rowLayout.Rect() ); TRect attachmentIndicatorRect; - /*attachmentIndicatorRect.iTl = - TPoint( naviArrowLeftRect.iBr.iX, - naviArrowLeftRect.iBr.iY - rowRect.Height() ); */ attachmentIndicatorRect.iTl = TPoint( naviArrowLeftRect.iBr.iX, @@ -1232,4 +1192,32 @@ return attachmentIndicatorRect; } +// --------------------------------------------------------------------------- +// CESMRView::ContainerRect +// --------------------------------------------------------------------------- +// +TRect CESMRView::ContainerRect() const + { + // Remove possible intersection with toolbar from container rect + TRect containerRect( PositionRelativeToScreen(), Rect().Size() ); + TRect toolbar( iToolbar.Rect() ); + if ( containerRect.Intersects( toolbar ) ) + { + toolbar.Intersection( containerRect ); + if ( Layout_Meta_Data::IsLandscapeOrientation() ) + { + containerRect.SetWidth( containerRect.Width() - toolbar.Width() ); + } + else + { + containerRect.SetHeight( containerRect.Height() - toolbar.Height() ); + } + } + // Now toolbar does not intersect with view, so it must not be taken + // into account when calculating other component layouts. + containerRect.SetRect( TPoint( 0, 0 ), containerRect.Size() ); + + return containerRect; + } + // EOF diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cesmrviewerdialog.cpp --- a/meetingrequest/mrgui/src/cesmrviewerdialog.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrviewerdialog.cpp Tue May 11 15:57:15 2010 +0300 @@ -54,18 +54,18 @@ #include #include #include -#include +#include #include #include #include #include #include -#include -#include -#include +#include +#include +#include #include #include -#include +#include #include // DEBUG @@ -196,7 +196,7 @@ iTitlePane->Rollback(); delete iTitlePane; } - + delete iESMRSendUI; delete iLocationPluginHandler; delete iFeatures; @@ -240,8 +240,8 @@ iToolbar = CMRToolbar::NewL(); TRect clientRect; - AknLayoutUtils::LayoutMetricsRect( - AknLayoutUtils::EMainPane, + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EMainPane, clientRect ); TBool responseReady(EFalse); @@ -272,14 +272,14 @@ // Give the strategy to the iView // storage ownership is transferred to CESMRView - iView = CESMRView::NewL( - storage, - *calEntry, - clientRect, - *iFocusStrategy, + iView = CESMRView::NewL( + storage, + *calEntry, + clientRect, + *iFocusStrategy, *iToolbar, this ); - + iView->SetViewMode( EESMRViewMR ); if ( calEntry->Entry().SummaryL().Length() == 0 ) @@ -335,7 +335,7 @@ { iTitlePane = CESMRTitlePaneHandler::NewL( *iEikonEnv ); } - + HBufC* titleText = StringLoader::LoadLC( titleStringId, iCoeEnv ); iTitlePane->SetNewTitle( titleText ); CleanupStack::PopAndDestroy( titleText ); @@ -356,7 +356,7 @@ // Needs to be constructed here ConstructToolbarL(); - + switch ( iInfoProvider.EntryL()->Type() ) { case MESMRCalEntry::EESMRCalEntryMeetingRequest: @@ -364,9 +364,9 @@ iView->InitialScrollL(); MESMRMeetingRequestEntry* entry = - static_cast( + static_cast( iInfoProvider.EntryL() ); - + if ( entry->IsOpenedFromMail() ) { iView->SetNaviArrowStatus( @@ -622,10 +622,10 @@ } } } - - // If entry is recurring, we want to ask from user, if + + // If entry is recurring, we want to ask from user, if // single instance or whole series will be forwarded - if( aCommand == EESMRCmdForwardAsMail && + if( aCommand == EESMRCmdForwardAsMail && iInfoProvider.EntryL()->IsRecurrentEventL() ) { SetRecurrenceModRuleL( @@ -716,7 +716,7 @@ { iView->ProcessEditorCommandL( EMRCmdHideAttachmentIndicator ); } - break; + break; default: { if ( aCommand >= EESMRCmdActionMenuFirst && @@ -821,7 +821,7 @@ res = HandleMRExitL( aButtonId ); break; } - + default: { if(iExitTriggered) @@ -894,7 +894,7 @@ } } } - + return retValue; } @@ -931,7 +931,7 @@ TInt /*aResourceId*/, CAknToolbar* /*aToolbar*/ ) { - // TODO: Not implemented yet + } // --------------------------------------------------------------------------- @@ -1324,7 +1324,7 @@ { const CESMRPolicy& currentPolicy( iInfoProvider.PolicyProvider().CurrentPolicy() ); - + aMenuPane->SetItemDimmed( EESMRCmdMailDelete, !iCallback.IsCommandAvailable( @@ -1537,7 +1537,7 @@ static_cast( plugin->ExtensionL(uid) ); MESMRCalEntry* calEntry = iInfoProvider.EntryL(); - + if ( extension && MESMRCalEntry::EESMRCalEntryMeetingRequest == calEntry->Type()) { // Static cast is safe here. We know for sure that entry is MR @@ -1725,14 +1725,14 @@ void CESMRViewerDialog::HandleFieldEventL( const MESMRFieldEvent& aEvent ) { FUNC_LOG; - + MESMRFieldEvent::TEventType type( aEvent.Type() ); - + if ( MESMRFieldEvent::EESMRFieldCommandEvent == type ) { ProcessCommandEventL( aEvent ); } - else if ( MESMRFieldEvent::EESMRFieldChangeEvent == type ) + else if ( MESMRFieldEvent::EESMRFieldChangeEvent == type ) { ProcessFieldEventL( aEvent ); } @@ -1822,7 +1822,7 @@ mrEntry = static_cast( calEntry ); TBool openedFromEmail( mrEntry->IsOpenedFromMail() ); - + // If entry is opened from mail, contains remote attachments and // mailbox is MfE, we show the query. if ( openedFromEmail && mrEntry->ContainsRemoteAttachmentsL() && @@ -1856,28 +1856,28 @@ void CESMRViewerDialog::ConstructToolbarL() { FUNC_LOG; - if( iInfoProvider.EntryL()->Type() == + if( iInfoProvider.EntryL()->Type() == MESMRCalEntry::EESMRCalEntryMeetingRequest ) { MESMRMeetingRequestEntry* entry = - static_cast( + static_cast( iInfoProvider.EntryL() ); - - if( !entry->OccursInPastL() && - !entry->IsEntryOutOfDateL() && + + if( !entry->OccursInPastL() && + !entry->IsEntryOutOfDateL() && !entry->IsMeetingCancelledL() ) { if ( entry->RoleL()== EESMRRoleRequiredAttendee || entry->RoleL()== EESMRRoleOptionalAttendee ) { - TSize screenSize = + TSize screenSize = iEikonEnv->ScreenDevice()->SizeInPixels(); - + TBool isVGA( EFalse ); - if( ( screenSize.iHeight == KVGAOneSide || - screenSize.iWidth == KVGAOneSide ) && - ( screenSize.iHeight == KVGAOtherSide || - screenSize.iWidth == KVGAOtherSide ) && + if( ( screenSize.iHeight == KVGAOneSide || + screenSize.iWidth == KVGAOneSide ) && + ( screenSize.iHeight == KVGAOtherSide || + screenSize.iWidth == KVGAOtherSide ) && screenSize.iHeight != screenSize.iWidth ) { isVGA = ETrue; @@ -1892,12 +1892,12 @@ iToolbar->InitializeToolbarL( CMRToolbar::EMRViewerAttendee ); iToolbar->ShowToolbar( ETrue ); - + // Toolbar created, relayouting needed - iView->ReLayout(); + SizeChanged(); } } - } + } } } @@ -1908,7 +1908,7 @@ void CESMRViewerDialog::ProcessCommandEventL( const MESMRFieldEvent& aEvent ) { FUNC_LOG; - + TInt* command = static_cast< TInt* >( aEvent.Param( 0 ) ); switch ( *command ) @@ -1954,7 +1954,7 @@ { break; } - } + } } // --------------------------------------------------------------------------- @@ -1963,8 +1963,8 @@ // void CESMRViewerDialog::ProcessFieldEventL( const MESMRFieldEvent& aEvent ) { - FUNC_LOG; + FUNC_LOG; iView->ProcessEventL( aEvent ); } - + // EOF diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cmrattachmentindicator.cpp --- a/meetingrequest/mrgui/src/cmrattachmentindicator.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cmrattachmentindicator.cpp Tue May 11 15:57:15 2010 +0300 @@ -18,9 +18,9 @@ #include "cmrattachmentindicator.h" #include -#include -#include -#include +#include +#include +#include namespace { diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cmrfieldcontainer.cpp --- a/meetingrequest/mrgui/src/cmrfieldcontainer.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cmrfieldcontainer.cpp Tue May 11 15:57:15 2010 +0300 @@ -776,7 +776,6 @@ // Field is in edit mode if( field->FieldMode() == EESMRFieldModeEdit ) { - // TODO: CORRECT if broken TInt viewBottom( parentRect.iBr.iY ); TInt fieldUpper( 0 ); @@ -798,7 +797,7 @@ // scroll amount. if ( iFocusedFieldIndex == iFactory.Count()-1 ) { - px += KVerticalScrollMargin; // TODO: Fix me! K-value must be removed. + px += KVerticalScrollMargin; } // Scrollbar and physics update is done here diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cmrlistpane.cpp --- a/meetingrequest/mrgui/src/cmrlistpane.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cmrlistpane.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,7 +24,7 @@ #include "nmrlayoutmanager.h" #include -#include +#include #include //DEBUG @@ -65,7 +65,7 @@ // --------------------------------------------------------------------------- // CMRListPane::CMRListPane( MESMRFieldStorage& aFactory, - TAknDoubleSpanScrollBarModel& aScrollModel, + TAknDoubleSpanScrollBarModel& aScrollModel, CAknDoubleSpanScrollBar& aScroll, MMRScrollBarObserver& aScrollBarObserver ) : iFactory( aFactory ), @@ -94,14 +94,14 @@ // CMRListPane* CMRListPane::NewL( const CCoeControl& aParent, MESMRFieldStorage& aFactory, - TAknDoubleSpanScrollBarModel& aScrollModel, - CAknDoubleSpanScrollBar& aScroll, + TAknDoubleSpanScrollBarModel& aScrollModel, + CAknDoubleSpanScrollBar& aScroll, MMRScrollBarObserver& aScrollBarObserver ) { FUNC_LOG; - CMRListPane* self = new( ELeave )CMRListPane( - aFactory, - aScrollModel, + CMRListPane* self = new( ELeave )CMRListPane( + aFactory, + aScrollModel, aScroll, aScrollBarObserver ); CleanupStack::PushL( self ); @@ -123,7 +123,7 @@ iLongtapDetector = CAknLongTapDetector::NewL( this ); iLongtapDetector->SetLongTapDelay( KLongTapDelay ); iLongtapDetector->SetTimeDelayBeforeAnimation( KLongTapAnimationDelay ); - + iFieldContainer = CMRFieldContainer::NewL( iFactory, *this ); iFieldContainer->SetFieldContainerObserver( this ); @@ -156,7 +156,7 @@ { FUNC_LOG; iFactory.InternalizeL( aEntry ); - + // This is called to make sure everything is drawn correctly DrawDeferred(); } @@ -214,10 +214,7 @@ void CMRListPane::InitialScrollL() { FUNC_LOG; - // TODO: Fix or remove! L-Function called in non-leaving function! - // Suggestion: Move functionality to viewerdialog and use existing - // functions in listpane to do the required actions. - + // Check if the ResponseArea exist TESMREntryFieldId id = GetResponseFieldsFieldId(); @@ -272,7 +269,7 @@ { FUNC_LOG; return 1; // iFieldContainer - + } // --------------------------------------------------------------------------- @@ -296,13 +293,13 @@ { return; } - + TSize containerSize( iFieldContainer->MinimumSize() ); iFieldContainer->SetSize( containerSize ); - + // Physics: iPhysics->InitPhysics(); - + DoUpdateScrollBar(); } @@ -318,7 +315,7 @@ // First check if the focused item needs the key event response = FocusedField()->OfferKeyEventL( aKeyEvent, aType ); - + if ( aType == EEventKey && response == EKeyWasNotConsumed ) { @@ -328,7 +325,7 @@ case EStdKeyUpArrow: { response = iFieldContainer->MoveFocusUpL( HiddenFocus() ); - + // Focus changed via keyboard, iClickedItem is no // longer valid iClickedField = NULL; @@ -337,7 +334,7 @@ case EStdKeyDownArrow: { response = iFieldContainer->MoveFocusDownL( HiddenFocus() ); - + // Focus changed via keyboard, iClickedItem is no // longer valid iClickedField = NULL; @@ -349,7 +346,7 @@ } } } - + return response; } @@ -362,7 +359,7 @@ const TPoint& /* aPenEventScreenLocation */ ) { FUNC_LOG; - iLongTapEventConsumed = EFalse; + iLongTapEventInProgess = EFalse; // Long tap functionality may vary between fields // ==> Command field to execute action related to long tap TInt count( iFactory.Count() ); @@ -375,7 +372,7 @@ && field->Rect().Contains( aPenEventLocation ) ) { field->LongtapDetectedL( aPenEventLocation ); - iLongTapEventConsumed = ETrue; + iLongTapEventInProgess = ETrue; break; } } @@ -388,11 +385,11 @@ void CMRListPane::DoUpdateScrollBar( TInt aFocusPosition ) { FUNC_LOG; - // Set this lispane's size as scroll bar's window size + // Set this lispane's size as scroll bar's window size iScrollModel.SetWindowSize( iSize.iHeight ); // Set fieldcontainer's height as scrolbar's scroll span iScrollModel.SetScrollSpan( iFieldContainer->MinimumSize().iHeight ); - + // Update scrollbar focus position. if( aFocusPosition == KErrNotFound ) { @@ -407,7 +404,7 @@ // finally update the new thumb position to view's // iScrollBarThumbPosition member. - iScrollBarObserver.ScrollBarPositionChanged( + iScrollBarObserver.ScrollBarPositionChanged( iScroll.ThumbPosition() ); } @@ -460,10 +457,10 @@ FUNC_LOG; TPoint point = iFieldContainer->Position(); point.iY -= aPx; - + // This initializes Draw also iFieldContainer->SetPosition( point ); - + // Non-kinetic scrolling executed. Update // new position to physics. iPhysics->UpdateVerticalScrollIndex( UpdatedFocusPosition() ); @@ -480,7 +477,7 @@ FUNC_LOG; TPoint point = iFieldContainer->Position(); point.iY += aPx; - + // This initializes Draw also iFieldContainer->SetPosition( point ); // Non-kinetic scrolling executed. Update @@ -499,7 +496,7 @@ { // Update physics world size iPhysics->InitPhysics(); - + // Update scrollbar DoUpdateScrollBar(); } @@ -528,9 +525,8 @@ // TESMREntryFieldId CMRListPane::GetResponseFieldsFieldId() { - // TODO: Should be removed. This shouldn't be even a public function! CESMRField* rfield = iFactory.FieldById( EESMRFieldResponseArea ); - + if ( rfield && rfield->IsVisible() && !rfield->IsNonFocusing() ) { return EESMRFieldResponseArea; @@ -560,10 +556,10 @@ field->SetListObserver( iFieldContainer ); } } - + // This "for" circle can not be mixed with the above one, since the - // field->ActivateL() will call some functions which will traverse - // all the fields, but that time, not all the fields have set the + // field->ActivateL() will call some functions which will traverse + // all the fields, but that time, not all the fields have set the // container window. for ( TInt i = 0; i < count; ++i ) { @@ -586,40 +582,53 @@ { return; } - + + // If new down event is received, and + // iLongTapEventInProgess flag is still ETrue, we need to + // set it back to EFalse -> Long tap event cannot be in progress + // in this case anymore. + if( aPointerEvent.iType == TPointerEvent::EButton1Down && + iLongTapEventInProgess ) + { + iLongTapEventInProgess = EFalse; + } + // Forward all listpane related events to physics api first. if ( iPhysics->HandlePointerEventL( aPointerEvent, iPhysicsActionOngoing ) ) { DoUpdateScrollBar(); - // Physics in action. If long tap detection is active, + // Physics in action. If long tap detection is active, // it should be cancelled. if( iLongtapDetector->IsActive() ) { iLongtapDetector->Cancel(); } } - + if( !iPhysicsActionOngoing ) - { - // Offer pointer event to long tap detector if event occures within fields - if( iFieldContainer->Rect().Contains( aPointerEvent.iPosition ) ) + { + UpdateClickedField( aPointerEvent ); + + // Offer pointer event to long tap detector if field supports long tap + // functionality + if( ClickedField()->SupportsLongTapFunctionalityL( aPointerEvent ) ) { iLongtapDetector->PointerEventL( aPointerEvent ); } SetFocusAfterPointerEventL( aPointerEvent ); - - // If longtap event has been handled, then do not handle signal event anymore. - if( !iLongTapEventConsumed ) + + // If longtap event is in progress, do not pass events to coecontrol + if( !iLongTapEventInProgess ) { CCoeControl::HandlePointerEventL( aPointerEvent ); } - else + // Longtap event executed after up event -> + // Let's set iLongTapEventInProgess to EFalse + else if( aPointerEvent.iType == TPointerEvent::EButton1Up ) { - iLongTapEventConsumed = EFalse; + iLongTapEventInProgess = EFalse; } - - UpdateClickedField( aPointerEvent ); } } @@ -633,10 +642,10 @@ // This ActiveteL is required only for setting the initial position // of the field container. After setting the position, physics is // initialized with new values also. - + CCoeControl::ActivateL(); iFieldContainer->SetPosition( Position() ); - + // Physics: iPhysics->InitPhysics(); } @@ -667,12 +676,12 @@ // Update the new thumb position to view's // iScrollBarThumbPosition member. - iScrollBarObserver.ScrollBarPositionChanged( + iScrollBarObserver.ScrollBarPositionChanged( iScroll.ThumbPosition() ); - + iScroll.DrawDeferred(); - - if( FeedbackScrollMarginExceeded( + + if( FeedbackScrollMarginExceeded( Abs( verticalScrollIndex - iPreviousVerticalScrollIndex ) ) ) { HandleTactileFeedback( ETouchFeedbackSlider ); @@ -680,12 +689,12 @@ iPreviousVerticalScrollIndex = verticalScrollIndex; } } - + // --------------------------------------------------------------------------- // CESMRField::HandleTactileFeedback // --------------------------------------------------------------------------- // -void CMRListPane::HandleTactileFeedback( +void CMRListPane::HandleTactileFeedback( const TTouchLogicalFeedback& aType ) { FUNC_LOG; @@ -695,7 +704,7 @@ // Aquire tactile feedback pointer from TLS iTactileFeedback = MTouchFeedback::Instance(); } - + if ( iTactileFeedback && iTactileFeedback->FeedbackEnabledForThisApp() ) { iTactileFeedback->InstantFeedback( aType ); @@ -706,7 +715,7 @@ // CMRListPane::SetFocusAfterPointerEventL // --------------------------------------------------------------------------- // -void CMRListPane::SetFocusAfterPointerEventL( +void CMRListPane::SetFocusAfterPointerEventL( const TPointerEvent &aPointerEvent ) { FUNC_LOG; @@ -721,18 +730,18 @@ field->Rect().Contains( aPointerEvent.iPosition ) ) { CESMRField* focusedField = iFieldContainer->FocusedField(); - + if ( field != focusedField ) { TBool canLoseFocus( focusedField->OkToLoseFocusL( field->FieldId() ) ); - + if ( canLoseFocus ) { iFieldContainer->SetControlFocusedL( field->FieldId() ); } } - + break; } } @@ -750,7 +759,7 @@ for( TInt i = 0; i < fieldCount; ++i ) { - if( iFactory.Field( i )->Rect().Contains( + if( iFactory.Field( i )->Rect().Contains( aPointerEvent.iPosition ) ) { if( aPointerEvent.iType == TPointerEvent::EButton1Down ) @@ -769,25 +778,25 @@ { FUNC_LOG; TBool hiddenFocus( EFalse ); - + CESMRField* focusedField( iFieldContainer->FocusedField() ); - TInt focusedFieldIndex( IndexByFieldId( + TInt focusedFieldIndex( IndexByFieldId( iFactory, focusedField->FieldId() ) ); if ( focusedFieldIndex < iFactory.Count() ) { TRect focusedFieldRect( focusedField->Rect() ); TRect listPaneRect( Rect() ); - + TInt fieldTopY( focusedFieldRect.iTl.iY ); TInt fieldBottomY( focusedFieldRect.iBr.iY ); - + TInt listTopY( listPaneRect.iTl.iY ); TInt listBottomY( listPaneRect.iBr.iY ); - - if ( ( fieldBottomY > listBottomY || - fieldTopY < listTopY ) && - focusedFieldRect.Height() < listPaneRect.Height() ) + + if ( ( fieldBottomY > listBottomY || + fieldTopY < listTopY ) && + focusedFieldRect.Height() < listPaneRect.Height() ) { hiddenFocus = ETrue; } @@ -801,19 +810,20 @@ // TBool CMRListPane::FeedbackScrollMarginExceeded( TInt aMargin ) { + FUNC_LOG; /* * This compares given margin to default one row * field height, and returns ETrue if margin is exceeded. * Otherwise EFalse. */ TBool ret( EFalse ); - + if( !iDefaultFieldHeight ) { - TAknLayoutRect fieldLayoutRect( - NMRLayoutManager::GetFieldLayoutRect( + TAknLayoutRect fieldLayoutRect( + NMRLayoutManager::GetFieldLayoutRect( iFieldContainer->Rect(), 1 ) ); - + iDefaultFieldHeight = fieldLayoutRect.Rect().Height(); } @@ -821,7 +831,7 @@ { ret = ETrue; } - + return ret; } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cmrnaviarrow.cpp --- a/meetingrequest/mrgui/src/cmrnaviarrow.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cmrnaviarrow.cpp Tue May 11 15:57:15 2010 +0300 @@ -111,8 +111,7 @@ void CMRNaviArrow::InitNaviArrowsL() { FUNC_LOG; - // Button - // TODO: Icons id should be changed to correct one when available + CFbsBitmap* bitMapL( NULL ); CFbsBitmap* bitMapMaskL( NULL ); NMRBitmapManager::TMRBitmapId bitmapId; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cmrresponsedialogview.cpp --- a/meetingrequest/mrgui/src/cmrresponsedialogview.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cmrresponsedialogview.cpp Tue May 11 15:57:15 2010 +0300 @@ -16,10 +16,10 @@ */ #include "cmrresponsedialogview.h" // System includes -#include -#include +#include +#include #include -#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrgui/src/cmrtoolbar.cpp --- a/meetingrequest/mrgui/src/cmrtoolbar.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrgui/src/cmrtoolbar.cpp Tue May 11 15:57:15 2010 +0300 @@ -247,7 +247,7 @@ if( iToolbar && iToolbar->IsShown() ) { - rect = iToolbar->Rect(); + rect.SetRect( iToolbar->PositionRelativeToScreen(), iToolbar->Rect().Size() ); } return rect; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/inc/cesmrcontactmanagerhandler.h --- a/meetingrequest/mrguicommon/inc/cesmrcontactmanagerhandler.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/inc/cesmrcontactmanagerhandler.h Tue May 11 15:57:15 2010 +0300 @@ -21,8 +21,8 @@ #include -#include -#include +#include +#include class CVPbkContactManager; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/inc/cesmrcontactmenuhandler.h --- a/meetingrequest/mrguicommon/inc/cesmrcontactmenuhandler.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/inc/cesmrcontactmenuhandler.h Tue May 11 15:57:15 2010 +0300 @@ -22,8 +22,8 @@ #include #include "cesmrcontactmanagerhandler.h" -#include -#include +#include +#include // #include "mfsccontactactionserviceobserver.h" #include "fsccontactactionservicedefines.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/inc/cesmrglobalnote.h --- a/meetingrequest/mrguicommon/inc/cesmrglobalnote.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/inc/cesmrglobalnote.h Tue May 11 15:57:15 2010 +0300 @@ -21,7 +21,7 @@ // INCLUDES #include -#include +#include // #include "esmrdef.h" // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/inc/cmrbutton.h --- a/meetingrequest/mrguicommon/inc/cmrbutton.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/inc/cmrbutton.h Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ #ifndef CMRButton_H #define CMRButton_H -#include +#include #include #include "esmrfieldbuilderdef.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/inc/cmrimage.h --- a/meetingrequest/mrguicommon/inc/cmrimage.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/inc/cmrimage.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define CMRIMAGE_H //#include -#include +#include #include #include "esmrfieldbuilderdef.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/inc/nmrbitmapmanager.h --- a/meetingrequest/mrguicommon/inc/nmrbitmapmanager.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/inc/nmrbitmapmanager.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define NMRBITMAPMANAGER_H #include -#include +#include // FORWARD DECLARATIONS class CFbsBitmap; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/inc/nmrcolormanager.h --- a/meetingrequest/mrguicommon/inc/nmrcolormanager.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/inc/nmrcolormanager.h Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #define NMRCOLORMANAGER_H #include -#include +#include #include // TRgb // FORWARD DECLARATIONS diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/inc/nmrlayoutmanager.h --- a/meetingrequest/mrguicommon/inc/nmrlayoutmanager.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/inc/nmrlayoutmanager.h Tue May 11 15:57:15 2010 +0300 @@ -19,8 +19,8 @@ #define NMRLAYOUTMANAGER_H #include -#include -#include +#include +#include namespace NMRLayoutManager @@ -63,8 +63,6 @@ EMRLayoutCheckboxIcon, // Option 6 - // TODO: 24h time editor - // Option 7 EMRLayoutSingleRowAColumnGraphic, EMRLayoutSingleRowDColumnGraphic, diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmralarm.cpp --- a/meetingrequest/mrguicommon/src/cesmralarm.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmralarm.cpp Tue May 11 15:57:15 2010 +0300 @@ -17,7 +17,7 @@ #include "cesmralarm.h" -#include +#include // DEBUG #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrconfirmationquery.cpp --- a/meetingrequest/mrguicommon/src/cesmrconfirmationquery.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrconfirmationquery.cpp Tue May 11 15:57:15 2010 +0300 @@ -22,14 +22,14 @@ // #include "esmrdef.h" // -#include +#include #include #include #include #include #include -#include -#include //line wrapping and mirroring +#include +#include //line wrapping and mirroring #include //xml layout data for applications #include //xml layout data of avkon components #include "esmrhelper.h"//locateresourcefile diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrcontactlinkiterator.cpp --- a/meetingrequest/mrguicommon/src/cesmrcontactlinkiterator.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrcontactlinkiterator.cpp Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ #include "emailtrace.h" #include "cesmrcontactlinkiterator.h" -#include +#include // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrcontactmanagerhandler.cpp --- a/meetingrequest/mrguicommon/src/cesmrcontactmanagerhandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrcontactmanagerhandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,11 +19,11 @@ #include "emailtrace.h" #include "cesmrcontactmanagerhandler.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrcontactmenuhandler.cpp --- a/meetingrequest/mrguicommon/src/cesmrcontactmenuhandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrcontactmenuhandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -21,17 +21,17 @@ #include "cesmrcontactmenuurlhandler.h" #include "mmrcontactmenuobserver.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // #include "cfsccontactactionservice.h" @@ -41,9 +41,9 @@ #include "mfsccontactaction.h" #include "mfsccontactactionmenumodel.h" -#include -#include -#include +#include +#include +#include #include #include "esmrcommands.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrcontactmenuurlhandler.cpp --- a/meetingrequest/mrguicommon/src/cesmrcontactmenuurlhandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrcontactmenuurlhandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -31,14 +31,14 @@ #include #include #include -#include +#include #include #include #include -#include +#include #include // for intranet application opening -#include +#include #include #include @@ -201,7 +201,6 @@ // } - // TODO: correct to use XML layout NMRBitmapManager::GetSkinBasedBitmapLC( iconID, iconBitmap, iconMaskBitmap, TSize(20,20) ); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrglobalnote.cpp --- a/meetingrequest/mrguicommon/src/cesmrglobalnote.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrglobalnote.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,7 +23,7 @@ // #include "esmrdef.h" // -#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrlistquery.cpp --- a/meetingrequest/mrguicommon/src/cesmrlistquery.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrlistquery.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,10 +24,10 @@ // #include "esmrdef.h" // -#include +#include #include #include -#include +#include #include #include "esmrgui.hrh" @@ -784,7 +784,6 @@ CDesCArrayFlat* itemArray = new(ELeave)CDesCArrayFlat(2); CleanupStack::PushL(itemArray); - // Set title: TODO: Change title popupList->SetTitleL(*StringLoader::LoadLC( R_QTN_CALENDAR_TASK_CALENDAR_TITLE)); CleanupStack::PopAndDestroy(); // Resource string diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrrecurrence.cpp --- a/meetingrequest/mrguicommon/src/cesmrrecurrence.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrrecurrence.cpp Tue May 11 15:57:15 2010 +0300 @@ -16,7 +16,7 @@ */ #include "emailtrace.h" -#include +#include #include "cesmrrecurrence.h" // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cesmrsendui.cpp --- a/meetingrequest/mrguicommon/src/cesmrsendui.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cesmrsendui.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,27 +19,25 @@ #include "cesmrsendui.h" #include "esmrvcalexport.h" -#include +#include #include -#include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include -// hardcoded paths removal #include -// // Unnamed namespace for local definitions namespace { -// hardcoded paths removal from cmail + _LIT( KVCalAttachmentFile, "\\private\\10005901\\Calendar.vcs" ); -// + _LIT( KCalendarDatabaseFilePath, "c:Calendar" ); @@ -186,15 +184,13 @@ User::LeaveIfError( fs.Connect() ); CleanupClosePushL( fs ); // must share the handle between processes - User::LeaveIfError( fs.ShareProtected() ); - // hardcoded paths removal from cmail + User::LeaveIfError( fs.ShareProtected() ); TFileName fileName(PathInfo::PhoneMemoryRootPath().Left(2)); fileName.Append(KVCalAttachmentFile); fs.MkDirAll(fileName); - // RFile file; - User::LeaveIfError(file.Replace(// - fs,fileName,EFileWrite | EFileShareAny ));// + User::LeaveIfError(file.Replace( + fs,fileName,EFileWrite | EFileShareAny )); CleanupClosePushL(file); TInt spaceNeeded = vcal->Size(); if ( SysUtil::FFSSpaceBelowCriticalLevelL( &fs, spaceNeeded ) ) @@ -205,8 +201,8 @@ User::LeaveIfError(file.Write(*vcal)); - TParse parse;// - User::LeaveIfError(parse.SetNoWild(fileName,// + TParse parse; + User::LeaveIfError(parse.SetNoWild(fileName, NULL, NULL)); TRAPD(err, DoSendAsAttachmentHandleL(file)); diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cmrimage.cpp --- a/meetingrequest/mrguicommon/src/cmrimage.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cmrimage.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #include "esmrhelper.h" #include #include -#include +#include // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/cmrlabel.cpp --- a/meetingrequest/mrguicommon/src/cmrlabel.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/cmrlabel.cpp Tue May 11 15:57:15 2010 +0300 @@ -17,9 +17,9 @@ #include "cmrlabel.h" #include "nmrcolormanager.h" -#include -#include -#include +#include +#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/esmrvcalexport.cpp --- a/meetingrequest/mrguicommon/src/esmrvcalexport.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/esmrvcalexport.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,11 +23,11 @@ #include // r_qtn_meet_req_conflict_unnamed #include -#include +#include #include // For FeatureIds #include #include -#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/nmrbitmapmanager.cpp --- a/meetingrequest/mrguicommon/src/nmrbitmapmanager.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/nmrbitmapmanager.cpp Tue May 11 15:57:15 2010 +0300 @@ -18,9 +18,9 @@ #include "nmrbitmapmanager.h" #include "esmrhelper.h" -#include -#include -#include +#include +#include +#include #include #include @@ -153,12 +153,8 @@ } case EMRBitmapBrowser: { - // TODO: not available - // bitmapStruct.iItemId = KAknsIIDQgnMenuBrowserng; bitmapStruct.iFallbackIndex = EMbmEsmrguiQgn_menu_browserng; bitmapStruct.iFallbackMaskIndex = EMbmEsmrguiQgn_menu_browserng_mask; - - // TODO: remove me asap bitmapStruct.iItemId = KAknsIIDQgnMenuIntranet; break; } @@ -186,11 +182,6 @@ case EMRBitmapAlarmClock: { bitmapStruct.iItemId = KAknsIIDQgnIndiCalendarClockAlarm; - // TODO: use new icon - //bitmapStruct.iFallbackIndex = EMbmEsmrguiQgn_indi_calendar_clock_alarm; - //bitmapStruct.iFallbackMaskIndex = EMbmEsmrguiQgn_indi_calendar_clock_alarm_mask; - - // TODO: remove me asap, not in platform atm. bitmapStruct.iFallbackIndex = EMbmEsmrguiQgn_indi_cmail_meet_req_alarm; bitmapStruct.iFallbackMaskIndex = EMbmEsmrguiQgn_indi_cmail_meet_req_alarm_mask; break; @@ -420,8 +411,6 @@ bitmapStruct.iFallbackMaskIndex = EMbmEsmrguiQgn_prop_cmail_action_attachment_save_all_mask; break; } - - // TODO: Needs correct fallbacks case EMRBitmapInputCenter: { bitmapStruct.iItemId = KAknsIIDQsnFrInputCenter; @@ -484,9 +473,7 @@ bitmapStruct.iFallbackIndex = EMbmEsmrguiQsn_fr_list_corner_br; bitmapStruct.iFallbackMaskIndex = EMbmEsmrguiQsn_fr_list_corner_br_mask; break; - } - - // TODO: Needs correct fallbacks + } case EMRBitmapSetOptCenter: { bitmapStruct.iItemId = KAknsIIDQsnFrSetOptCenter; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/nmrcolormanager.cpp --- a/meetingrequest/mrguicommon/src/nmrcolormanager.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/nmrcolormanager.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,9 +19,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include @@ -99,10 +99,7 @@ { colorStruct.iColorGroup = KAknsIIDFsOtherColors; colorStruct.iColorIndex = EAknsCIFsOtherColorsCG1; - // TODO: Once feature confirmed by UI specifier, confirm the - // correct color } - // TODO: For testing purposes only; keep as last item during development case EMRLastColorItemId: { colorStruct.iColorGroup = KAknsIIDQsnTextColors; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrguicommon/src/nmrlayoutmanager.cpp --- a/meetingrequest/mrguicommon/src/nmrlayoutmanager.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrguicommon/src/nmrlayoutmanager.cpp Tue May 11 15:57:15 2010 +0300 @@ -17,7 +17,7 @@ #include "nmrlayoutmanager.h" -#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/data/2001846B.rss --- a/meetingrequest/mricalviewer/data/2001846B.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/data/2001846B.rss Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ // INCLUDES #include -#include +#include #include "esmrinternaluid.h" // RESOURCE DEFINITIONS diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/inc/cesmricalviewerremovemrfromcalcmd.h --- a/meetingrequest/mricalviewer/inc/cesmricalviewerremovemrfromcalcmd.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/inc/cesmricalviewerremovemrfromcalcmd.h Tue May 11 15:57:15 2010 +0300 @@ -25,7 +25,7 @@ #include "mesmricalviewerobserver.h" #include "esmricalviewerdefs.hrh" // -#include +#include class CFSMailClient; class CESMRUiLauncher; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/inc/cesmricalviewerresponsetomrcmd.h --- a/meetingrequest/mricalviewer/inc/cesmricalviewerresponsetomrcmd.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/inc/cesmricalviewerresponsetomrcmd.h Tue May 11 15:57:15 2010 +0300 @@ -26,7 +26,7 @@ #include "mesmricalviewercallback.h" #include "esmricalviewerdefs.hrh" // -#include +#include class CFSMailClient; class CESMRUiLauncher; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmricalviewercanviewmr.cpp --- a/meetingrequest/mricalviewer/src/cesmricalviewercanviewmr.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmricalviewercanviewmr.cpp Tue May 11 15:57:15 2010 +0300 @@ -21,8 +21,8 @@ #include "cesmricalviewercanviewmr.h" // #include "esmricalvieweropcodes.hrh" -#include "CFSMailCommon.h" -#include "CFSMailMessage.h" +#include "cfsmailcommon.h" +#include "cfsmailmessage.h" // // ======== MEMBER FUNCTIONS ======== diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmricalviewercmdhandler.cpp --- a/meetingrequest/mricalviewer/src/cesmricalviewercmdhandler.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmricalviewercmdhandler.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,7 +29,7 @@ #include // -#include "CFSMailClient.h" +#include "cfsmailclient.h" #include "esmricalvieweropcodes.hrh" #include "esmricalviewerdefs.hrh" // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmricalvieweremailasynccmd.cpp --- a/meetingrequest/mricalviewer/src/cesmricalvieweremailasynccmd.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmricalvieweremailasynccmd.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,7 +23,7 @@ // #include "esmricalvieweropcodes.hrh" #include -#include "CFSMailClient.h" +#include "cfsmailclient.h" // #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmricalviewerloadmrdatacmd.cpp --- a/meetingrequest/mricalviewer/src/cesmricalviewerloadmrdatacmd.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmricalviewerloadmrdatacmd.cpp Tue May 11 15:57:15 2010 +0300 @@ -22,7 +22,7 @@ // #include "esmricalvieweropcodes.hrh" #include -#include "CFSMailClient.h" +#include "cfsmailclient.h" // #include "cesmrmrinfoicalretriever.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmricalviewerremovemrfromcalcmd.cpp --- a/meetingrequest/mricalviewer/src/cesmricalviewerremovemrfromcalcmd.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmricalviewerremovemrfromcalcmd.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,7 +24,7 @@ // #include "esmricalvieweropcodes.hrh" #include -#include "CFSMailClient.h" +#include "cfsmailclient.h" // #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmricalviewerresolvemrmethodasync.cpp --- a/meetingrequest/mricalviewer/src/cesmricalviewerresolvemrmethodasync.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmricalviewerresolvemrmethodasync.cpp Tue May 11 15:57:15 2010 +0300 @@ -23,7 +23,7 @@ // #include "esmricalvieweropcodes.hrh" #include -#include "CFSMailClient.h" +#include "cfsmailclient.h" // #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmricalviewerresponsetomrcmd.cpp --- a/meetingrequest/mricalviewer/src/cesmricalviewerresponsetomrcmd.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmricalviewerresponsetomrcmd.cpp Tue May 11 15:57:15 2010 +0300 @@ -27,7 +27,7 @@ // #include "esmricalvieweropcodes.hrh" #include -#include "CFSMailClient.h" +#include "cfsmailclient.h" // #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmrimapicalretriever.cpp --- a/meetingrequest/mricalviewer/src/cesmrimapicalretriever.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmrimapicalretriever.cpp Tue May 11 15:57:15 2010 +0300 @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmrimapmailfetcher.cpp --- a/meetingrequest/mricalviewer/src/cesmrimapmailfetcher.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmrimapmailfetcher.cpp Tue May 11 15:57:15 2010 +0300 @@ -20,10 +20,10 @@ #include "cesmrimapmailfetcher.h" #include "esmricalviewerutils.h" // -#include "CFSMailClient.h" -#include "CFSMailFolder.h" -#include "CFSMailMessagePart.h" -#include "CFSMailCommon.h" +#include "cfsmailclient.h" +#include "cfsmailfolder.h" +#include "cfsmailmessagepart.h" +#include "cfsmailcommon.h" #include "esmricalvieweropcodes.hrh" // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmrmrinfoicalretriever.cpp --- a/meetingrequest/mricalviewer/src/cesmrmrinfoicalretriever.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmrmrinfoicalretriever.cpp Tue May 11 15:57:15 2010 +0300 @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include // Unnamed namespace for local definitions and functions diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/cesmruilauncher.cpp --- a/meetingrequest/mricalviewer/src/cesmruilauncher.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/cesmruilauncher.cpp Tue May 11 15:57:15 2010 +0300 @@ -27,7 +27,7 @@ #include // #include "FreestyleEmailUiConstants.h" -#include "CFSMailMessage.h" +#include "cfsmailmessage.h" #include "fsmtmsuids.h" #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mricalviewer/src/esmricalviewerutils.cpp --- a/meetingrequest/mricalviewer/src/esmricalviewerutils.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mricalviewer/src/esmricalviewerutils.cpp Tue May 11 15:57:15 2010 +0300 @@ -74,13 +74,6 @@ FUNC_LOG; TBool retValue( EFalse ); - // TODO: This needs to be updated - /*if ( aParams.iAttachmentInfo && - aParams.iAttachmentInfo->AttachmentCount() ) - { - retValue = ETrue; - } */ - return retValue; } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrmbutilsextension/data/2002137D.rss --- a/meetingrequest/mrmbutilsextension/data/2002137D.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrmbutilsextension/data/2002137D.rss Tue May 11 15:57:15 2010 +0300 @@ -16,7 +16,7 @@ */ #include -#include +#include #include "esmrinternaluid.h" // RESOURCE DEFINITIONS diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrmbutilsextension/inc/cmrmbutilsmailboxlistener.h --- a/meetingrequest/mrmbutilsextension/inc/cmrmbutilsmailboxlistener.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrmbutilsextension/inc/cmrmbutilsmailboxlistener.h Tue May 11 15:57:15 2010 +0300 @@ -18,8 +18,8 @@ #ifndef C_MRMBUTILSMAILBOXLISTENER_H #define C_MRMBUTILSMAILBOXLISTENER_H -#include "MFSMailEventObserver.h" -#include "CFSMailCommon.h" +#include "mfsmaileventobserver.h" +#include "cfsmailcommon.h" #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrmbutilsextension/src/cmrmbutilsextensionimpl.cpp --- a/meetingrequest/mrmbutilsextension/src/cmrmbutilsextensionimpl.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrmbutilsextension/src/cmrmbutilsextensionimpl.cpp Tue May 11 15:57:15 2010 +0300 @@ -19,7 +19,7 @@ #include "cmrmbutilsextensionimpl.h" #include "cmrmbutilsmailboxlistener.h" #include "cmrmbutilssettings.h" -#include "CFSMailClient.h" +#include "cfsmailclient.h" #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrmbutilsextension/src/cmrmbutilsmailboxlistener.cpp --- a/meetingrequest/mrmbutilsextension/src/cmrmbutilsmailboxlistener.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrmbutilsextension/src/cmrmbutilsmailboxlistener.cpp Tue May 11 15:57:15 2010 +0300 @@ -17,9 +17,9 @@ //INCLUDE FILES #include "cmrmbutilsmailboxlistener.h" -#include "CFSMailCommon.h" -#include "CFSMailClient.h" -#include "CFSMailBox.h" +#include "cfsmailcommon.h" +#include "cfsmailclient.h" +#include "cfsmailbox.h" #include "fsmtmsuids.h" #include "emailtrace.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrmbutilsextension/src/cmrmbutilssettings.cpp --- a/meetingrequest/mrmbutilsextension/src/cmrmbutilssettings.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrmbutilsextension/src/cmrmbutilssettings.cpp Tue May 11 15:57:15 2010 +0300 @@ -21,8 +21,8 @@ // #include "cmrmbutilssettings.h" #include "mrmbutilsextensioncrkeys.h" -#include "CFSMailBox.h" -#include "CFSMailClient.h" +#include "cfsmailbox.h" +#include "cfsmailclient.h" #include "emailtrace.h" #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrpolicy/mrcalentryresolver/data/policies/bccalanniversaryeditor.rss --- a/meetingrequest/mrpolicy/mrcalentryresolver/data/policies/bccalanniversaryeditor.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrpolicy/mrcalentryresolver/data/policies/bccalanniversaryeditor.rss Tue May 11 15:57:15 2010 +0300 @@ -27,7 +27,7 @@ policy_id = EESMRPolicyAnniversaryEditor; policy_mode = EESMREditMR; role_flags = KEESMRFlagOrganizer; - allowed_app = KEESMRFlagAppEsCalendar; // TODO: Should there be defined a new value for this? + allowed_app = KEESMRFlagAppEsCalendar; field_ids = r_bccal_anniversary_editor_fields; default_commands = r_bccal_anniversary_editor_def_commands; additional_commands = 0; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrprocessor/inc/mmrentryprocessor.h --- a/meetingrequest/mrprocessor/inc/mmrentryprocessor.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrprocessor/inc/mmrentryprocessor.h Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ #define M_MRENTRYPROCESSOR_H #include -#include +#include #include "esmrdef.h" #include "tesmrscenariodata.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrprocessor/mrcaleventplugin/inc/cmrcalentry.h --- a/meetingrequest/mrprocessor/mrcaleventplugin/inc/cmrcalentry.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrprocessor/mrcaleventplugin/inc/cmrcalentry.h Tue May 11 15:57:15 2010 +0300 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include "mesmrcalentry.h" class CCalEntry; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrprocessor/mrcaleventplugin/src/cmrcalentry.cpp --- a/meetingrequest/mrprocessor/mrcaleventplugin/src/cmrcalentry.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrprocessor/mrcaleventplugin/src/cmrcalentry.cpp Tue May 11 15:57:15 2010 +0300 @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include #include @@ -41,9 +41,9 @@ #include #include #include -#include +#include -#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrprocessor/mrcaleventplugin/src/cmrcaleventprocessor.cpp --- a/meetingrequest/mrprocessor/mrcaleventplugin/src/cmrcaleventprocessor.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrprocessor/mrcaleventplugin/src/cmrcaleventprocessor.cpp Tue May 11 15:57:15 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : ESMR entry processor implementation -* Version : %version: e002sa33#11 % +* Version : %version: 11.1.1 % * */ @@ -34,8 +34,8 @@ #include #include #include -#include -#include +#include +#include #include /// Unnamed namespace for local definitions diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrprocessor/mrprocessorplugin/src/cesmrentryprocessor.cpp --- a/meetingrequest/mrprocessor/mrprocessorplugin/src/cesmrentryprocessor.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrprocessor/mrprocessorplugin/src/cesmrentryprocessor.cpp Tue May 11 15:57:15 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : ESMR entry processor implementation -* Version : %version: e002sa33#14 % +* Version : %version: 14.1.1 % * */ @@ -37,9 +37,9 @@ #include #include #include -#include +#include #include -#include +#include #include /// Unnamed namespace for local definitions diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrtasks/mrtaskplugin/group/mrtaskplugin.mmp --- a/meetingrequest/mrtasks/mrtaskplugin/group/mrtaskplugin.mmp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrtasks/mrtaskplugin/group/mrtaskplugin.mmp Tue May 11 15:57:15 2010 +0300 @@ -59,8 +59,6 @@ APP_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom //TODO: Remove when Cmail headers are fixed - LIBRARY esmrcommon.lib LIBRARY esmrservices.lib LIBRARY mrguicommon.lib diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrtasks/mrtaskplugin/inc/cesmrfsemailmanager.h --- a/meetingrequest/mrtasks/mrtaskplugin/inc/cesmrfsemailmanager.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrtasks/mrtaskplugin/inc/cesmrfsemailmanager.h Tue May 11 15:57:15 2010 +0300 @@ -21,7 +21,7 @@ #include // -#include "CFSMailCommon.h" +#include "cfsmailcommon.h" #include "mmrinfoprocessor.h" #include "esmrdef.h" // diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrtasks/mrtaskplugin/src/cesmrfsemailmanager.cpp --- a/meetingrequest/mrtasks/mrtaskplugin/src/cesmrfsemailmanager.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrtasks/mrtaskplugin/src/cesmrfsemailmanager.cpp Tue May 11 15:57:15 2010 +0300 @@ -22,13 +22,13 @@ #include #include // -#include "CFSMailClient.h" -#include "CFSMailBox.h" -#include "CFSMailMessage.h" -#include "CFSMailMessagePart.h" +#include "cfsmailclient.h" +#include "cfsmailbox.h" +#include "cfsmailmessage.h" +#include "cfsmailmessagepart.h" #include "mmrinfoprocessor.h" -#include "CFSMailCommon.h" -#include "CFSMailPlugin.h" +#include "cfsmailcommon.h" +#include "cfsmailplugin.h" // #include #include "tesmrinputparams.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrtasks/mrtaskplugin/src/cesmrmailplaitextformatter.cpp --- a/meetingrequest/mrtasks/mrtaskplugin/src/cesmrmailplaitextformatter.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrtasks/mrtaskplugin/src/cesmrmailplaitextformatter.cpp Tue May 11 15:57:15 2010 +0300 @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrtasks/mrtaskplugin/src/cesmrsendmrfsmailreplytask.cpp --- a/meetingrequest/mrtasks/mrtaskplugin/src/cesmrsendmrfsmailreplytask.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrtasks/mrtaskplugin/src/cesmrsendmrfsmailreplytask.cpp Tue May 11 15:57:15 2010 +0300 @@ -24,7 +24,7 @@ #include #include // -#include "CFSMailMessage.h" +#include "cfsmailmessage.h" #include #include #include "FreestyleEmailUiConstants.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrtasks/mrtaskplugin/src/cesmrsendmrfsmailtask.cpp --- a/meetingrequest/mrtasks/mrtaskplugin/src/cesmrsendmrfsmailtask.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrtasks/mrtaskplugin/src/cesmrsendmrfsmailtask.cpp Tue May 11 15:57:15 2010 +0300 @@ -16,8 +16,8 @@ */ -#include "emailtrace.h" #include "cesmrsendmrfsmailtask.h" + #include "cesmrcaldbmgr.h" #include "mesmrmeetingrequestentry.h" #include "cesmrfsemailmanager.h" @@ -26,8 +26,7 @@ #include "cesmrcaluserutil.h" #include "cesmrguilistquery.h" #include "esmrhelper.h" - - +#include "cesmrfsmailboxutils.h" #include #include @@ -37,7 +36,8 @@ #include #include #include -#include + +#include "emailtrace.h" // Unnamed namespace for local definitions diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrtasks/mrtaskplugin/src/cmrtaskplugin.cpp --- a/meetingrequest/mrtasks/mrtaskplugin/src/cmrtaskplugin.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrtasks/mrtaskplugin/src/cmrtaskplugin.cpp Tue May 11 15:57:15 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2009 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" @@ -35,10 +35,10 @@ #include "esmrconfig.hrh" #include "cesmrcaldbmgr.h" // -#include "CFSMailCommon.h" -#include "CFSMailClient.h" -#include "CFSMailMessage.h" -#include "CFSMailBox.h" +#include "cfsmailcommon.h" +#include "cfsmailclient.h" +#include "cfsmailmessage.h" +#include "cfsmailbox.h" // @@ -104,7 +104,7 @@ // Queries response query from user. // --------------------------------------------------------------------------- // -HBufC* QuerySendResponseQueryFromUserLC( +HBufC* QuerySendResponseQueryFromUserL( TESMRCommand aCommand, TESMRResponseType& aResponseType, MESMRMeetingRequestEntry& aEntry ) @@ -177,7 +177,7 @@ CESMRResponseDialog::NewL( responseMessage ); CleanupStack::PushL( respDlg ); - TBool dialogRetValue( respDlg->ExecuteDlgLD() ); + TInt dialogRetValue( respDlg->ExecuteDlgLD() ); // Dialog has deleted itself --> Only pop from cleanup stack CleanupStack::Pop( respDlg ); @@ -186,15 +186,23 @@ aEntry.Entry().SetStatusL( CCalEntry::ETentative ); User::Leave( KErrCancel ); } - } - if ( responseMessage ) - { - CleanupStack::PushL( responseMessage ); + else if ( dialogRetValue == EAknCmdExit ) + { + aResponseType = EESMRResponseDontSend; + } + else if ( !responseMessage + && dialogRetValue == EESMRCmdSendMR ) + { + // Send command is triggered but response is empty + aResponseType = EESMRResponsePlain; + responseMessage = KNullDesC().AllocL(); + } } else - { - responseMessage = KNullDesC().AllocLC(); - } + { + responseMessage = KNullDesC().AllocL(); + } + return responseMessage; } @@ -249,7 +257,7 @@ MESMRMeetingRequestEntry& mrEntry = static_cast< MESMRMeetingRequestEntry& >( aEntry ); - + switch (aCommand) { case EESMRCmdAcceptMR: @@ -291,7 +299,7 @@ case EESMRCmdCalendarChange: task = CreateMoveMRToCurrentDBTaskL( mrEntry ); break; - + default: __ASSERT_DEBUG(EFalse, Panic(EESMRTaskFactoryInvalidTask) ); User::Leave( KErrNotSupported ); @@ -314,7 +322,7 @@ CESMRCombinedTask* task = NULL; TESMRRole role = aEntry.RoleL(); - + TBool syncObjectPresent( aEntry.IsSyncObjectPresent() ); TBool isStored( aEntry.IsStoredL() ); @@ -328,52 +336,60 @@ CleanupStack::PushL( task ); TESMRResponseType responseType( EESMRResponsePlain ); - HBufC* responseMessage = QuerySendResponseQueryFromUserLC( + HBufC* responseMessage = QuerySendResponseQueryFromUserL( aCommand, responseType, aEntry ); - - if ( !syncObjectPresent && EESMRCmdDeclineMR != aCommand) - { - // Entry is stored or deleted from calendar DB if - // sync object is not present - // Store MR task - AppendTaskL( *task, - CESMRStoreMRTask::NewL( - iCalDbMgr, - aEntry, - aEntry.MailboxUtils() ) ); - } + + // If response message is NULL, it means that user + // has cancelled response editing and wants to only exit + // application + if( responseMessage ) + { + CleanupStack::PushL( responseMessage ); + + if ( !syncObjectPresent && EESMRCmdDeclineMR != aCommand) + { + // Entry is stored or deleted from calendar DB if + // sync object is not present + // Store MR task + AppendTaskL( *task, + CESMRStoreMRTask::NewL( + iCalDbMgr, + aEntry, + aEntry.MailboxUtils() ) ); + } - if ( EESMRResponseDontSend != responseType || - aEntry.IsSyncObjectPresent() ) - { - // Send MR response via mail freestyle task - AppendTaskL( *task, - CESMRSendMRRespFSMailTask::NewL( - aCommand, - iCalDbMgr, - aEntry, - aEntry.MailboxUtils(), - responseType, - *responseMessage ) ); - } - CleanupStack::PopAndDestroy( responseMessage ); - - if ( !syncObjectPresent && EESMRCmdDeclineMR == aCommand && - isStored ) - { - // Entry is deleted from calendar DB if - // sync object is not present and entry exits in database - // Declined --> Delete MR from cal DB task - AppendTaskL( *task, - CESMRDeleteMRFromDbTask::NewL( - iCalDbMgr, - aEntry, - aEntry.MailboxUtils() ) ); - } + if ( EESMRResponseDontSend != responseType ) + { + // Send MR response via mail freestyle task + AppendTaskL( *task, + CESMRSendMRRespFSMailTask::NewL( + aCommand, + iCalDbMgr, + aEntry, + aEntry.MailboxUtils(), + responseType, + *responseMessage ) ); + } + + CleanupStack::PopAndDestroy( responseMessage ); - CleanupStack::Pop( task ); + if ( !syncObjectPresent && EESMRCmdDeclineMR == aCommand && + isStored ) + { + // Entry is deleted from calendar DB if + // sync object is not present and entry exits in database + // Declined --> Delete MR from cal DB task + AppendTaskL( *task, + CESMRDeleteMRFromDbTask::NewL( + iCalDbMgr, + aEntry, + aEntry.MailboxUtils() ) ); + } + } + + CleanupStack::Pop( task ); } else { @@ -417,7 +433,7 @@ aCommand == EESMRCmdSendMRUpdate ) { // Send MR response via mail task - AppendTaskL( *task, + AppendTaskL( *task, CESMRSendMRFSMailTask::NewL( iCalDbMgr, aEntry, @@ -562,7 +578,7 @@ if ( aEntry.AttendeeCountL( attendeeFlags ) && aEntry.IsSentL() && !aEntry.OccursInPastL() ) { - // if enrey doesn't need to send canellation, don't query + // If entry doesn't need to send cancellation, don't query if( aEntry.SendCanellationAvailable()) { // Meeting request contains attendees --> Cancellation message @@ -697,14 +713,14 @@ __ASSERT_DEBUG( EFalse, Panic( EESMRTaskFactoryIllegalTask ) ); User::Leave( KErrNotSupported ); } - + // Create combined task CESMRCombinedTask* task = CESMRCombinedTask::NewL( aEntry, CESMRCombinedTask::EESMRTrap ); - + CleanupStack::PushL( task ); - + if ( !aEntry.IsOpenedFromMail() ) { // When deleting from the calendar --> Store first modifying entry @@ -720,7 +736,7 @@ aEntry, aEntry.MailboxUtils() ) ); } - + // Delete entry from old db AppendTaskL( *task, @@ -728,7 +744,7 @@ iCalDbMgr, aEntry, aEntry.MailboxUtils() ) ); - + // Store entry to current db AppendTaskL( *task, @@ -736,7 +752,7 @@ iCalDbMgr, aEntry, aEntry.MailboxUtils() ) ); - + CleanupStack::Pop( task ); return task; } diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrurlparserplugin/group/esmrurlparserplugin.mmp --- a/meetingrequest/mrurlparserplugin/group/esmrurlparserplugin.mmp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrurlparserplugin/group/esmrurlparserplugin.mmp Tue May 11 15:57:15 2010 +0300 @@ -44,7 +44,7 @@ LIBRARY ecom.lib LIBRARY eposlandmarks.lib LIBRARY lbs.lib -LIBRARY CommonEngine.lib +LIBRARY commonengine.lib LIBRARY calinterimapi.lib LIBRARY inetprotutil.lib diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrurlparserplugin/src/cesmrurlparserpluginimpl.cpp --- a/meetingrequest/mrurlparserplugin/src/cesmrurlparserpluginimpl.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrurlparserplugin/src/cesmrurlparserpluginimpl.cpp Tue May 11 15:57:15 2010 +0300 @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrutils/inc/cesmrutils.h --- a/meetingrequest/mrutils/inc/cesmrutils.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrutils/inc/cesmrutils.h Tue May 11 15:57:15 2010 +0300 @@ -21,7 +21,7 @@ // INCLUDE FILES #include -#include +#include #include "esmrdef.h" // FORWARD DECLARATIONS diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrutils/inc/esmrutilsapiext.h --- a/meetingrequest/mrutils/inc/esmrutilsapiext.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrutils/inc/esmrutilsapiext.h Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ #ifndef ESMRUTILSAPIEXT_H #define ESMRUTILSAPIEXT_H -#include +#include /** * Extension API query function. diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrutilscalplugin/data/2001E27F.rss --- a/meetingrequest/mrutilscalplugin/data/2001E27F.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrutilscalplugin/data/2001E27F.rss Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ // INCLUDES #include -#include +#include #include "esmrinternaluid.h" // RESOURCE DEFINITIONS diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrutilscalplugin/inc/cesmrutilsimpl.h --- a/meetingrequest/mrutilscalplugin/inc/cesmrutilsimpl.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrutilscalplugin/inc/cesmrutilsimpl.h Tue May 11 15:57:15 2010 +0300 @@ -20,7 +20,7 @@ #define CESMRUTILSIMPL_H // INCLUDE FILES -#include +#include // FORWARD DECLARATIONS class CESMRUtils; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrviewer/inc/cesmrviewerctrl.h --- a/meetingrequest/mrviewer/inc/cesmrviewerctrl.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrviewer/inc/cesmrviewerctrl.h Tue May 11 15:57:15 2010 +0300 @@ -20,8 +20,8 @@ #define CESMRVIEWERCTRL_H // INCLUDES -#include -#include +#include +#include #include #include "mmrinfoprovider.h" diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrviewer/src/cesmrviewerctrl.cpp --- a/meetingrequest/mrviewer/src/cesmrviewerctrl.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrviewer/src/cesmrviewerctrl.cpp Tue May 11 15:57:15 2010 +0300 @@ -48,7 +48,7 @@ // From System // -#include +#include #include "esmrutilsapiext.h" // #include @@ -59,7 +59,7 @@ #include #include #include -#include +#include #include // CONSTANTS @@ -618,7 +618,7 @@ case EESMRCmdCalEntryUISend: // Send calendar entry item case EESMRCmdCalEntryUIAddParticipants: // Add participants to meeting item { - ASSERT( EFalse ); // TODO: implement when tasks are ready + ASSERT( EFalse ); } break; diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrviewercalplugin/data/2001E27E.rss --- a/meetingrequest/mrviewercalplugin/data/2001E27E.rss Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrviewercalplugin/data/2001E27E.rss Tue May 11 15:57:15 2010 +0300 @@ -18,7 +18,7 @@ // INCLUDES #include -#include +#include #include "esmrinternaluid.h" // RESOURCE DEFINITIONS diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrviewercalplugin/inc/caleneditorsplugin.h --- a/meetingrequest/mrviewercalplugin/inc/caleneditorsplugin.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrviewercalplugin/inc/caleneditorsplugin.h Tue May 11 15:57:15 2010 +0300 @@ -21,7 +21,7 @@ #include #include -#include +#include /** * Resolver for loading correct ECOM Implementation for diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrviewercalplugin/inc/cesmrviewersimpl.h --- a/meetingrequest/mrviewercalplugin/inc/cesmrviewersimpl.h Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrviewercalplugin/inc/cesmrviewersimpl.h Tue May 11 15:57:15 2010 +0300 @@ -20,7 +20,7 @@ #define CESMRVIEWERSIMPL_H // INCLUDES -#include +#include #include // FORWARD DECLARATIONS diff -r e64954c2c8e2 -r e8f259fad141 meetingrequest/mrviewercalplugin/src/cesmrviewersimpl.cpp --- a/meetingrequest/mrviewercalplugin/src/cesmrviewersimpl.cpp Tue Apr 27 16:20:14 2010 +0300 +++ b/meetingrequest/mrviewercalplugin/src/cesmrviewersimpl.cpp Tue May 11 15:57:15 2010 +0300 @@ -29,7 +29,7 @@ // From MR Mailbox Utils #include -#include +#include // From System #include
\n")); - iWriteStream.WriteL(_L8("\n")); - iWriteStream.WriteL( _L8("\n")); - - iWriteStream.WriteL( _L8("\n")); - - iWriteStream.WriteL( _L8("\n")); - iWriteStream.WriteL( _L8("