# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1268401274 -7200 # Node ID f5907b1a1053961a5eee46e399880749d4de420a # Parent e1b6206813b45acbfb75b77d133344558ff6c40d Revision: 201007 Kit: 201008 diff -r e1b6206813b4 -r f5907b1a1053 email_plat/email_client_api/inc/emailclientapi.hrh --- a/email_plat/email_client_api/inc/emailclientapi.hrh Fri Feb 19 22:37:30 2010 +0200 +++ b/email_plat/email_client_api/inc/emailclientapi.hrh Fri Mar 12 15:41:14 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: Interface IDs for sub interfaces * */ @@ -24,9 +24,9 @@ // Interface ids (not ECom) for accessing "sub interfaces" via // MEmailInterface* CEmailInterfaceFactory::InterfaceL( const TInt aInterfaceId ) - // to be checked if all should be published to clients (some are not - // meant to be instantiated via factory method but by other means, e.g. - // user never instantiates mailbox from scratch but asks it from MEmailClientApi +// to be checked if all should be published to clients (some are not +// meant to be instantiated via factory method but by other means, e.g. +// user never instantiates mailbox from scratch but asks it from MEmailClientApi #define KEmailClientApiInterface 0x20022D63 #define KEmailIFUidMailbox 0x20022D64 diff -r e1b6206813b4 -r f5907b1a1053 email_plat/email_crkeys_api/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email_plat/email_crkeys_api/group/bld.inf Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,27 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Build information file for email crkeys interface +* +*/ + + +#include + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +../inc/commonemailcrkeys.h APP_LAYER_PLATFORM_EXPORT_PATH(commonemailcrkeys.h) + +// End of File diff -r e1b6206813b4 -r f5907b1a1053 email_plat/email_crkeys_api/inc/commonemailcrkeys.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email_plat/email_crkeys_api/inc/commonemailcrkeys.h Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,28 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* repository keys to track which mailbox has the latest new email +* +*/ + +#ifndef _COMMONEMAILCRKEYS_H_ +#define _COMMONEMAILCRKEYS_H_ + +// central repository key for email data +const TUid KCmailDataRepository = { 0x20029F4A }; + +// key for display text (mailbox name?) of email indicator popup +const TUint32 KCmailNewEmailDisplayText = 0x00000001 ; + +#endif // _COMMONEMAILCRKEYS_H_ diff -r e1b6206813b4 -r f5907b1a1053 email_plat/group/bld.inf --- a/email_plat/group/bld.inf Fri Feb 19 22:37:30 2010 +0200 +++ b/email_plat/group/bld.inf Fri Mar 12 15:41:14 2010 +0200 @@ -17,5 +17,6 @@ #include "../email_client_api/group/bld.inf" #include "../email_setup_plugin_api/group/bld.inf" +#include "../email_crkeys_api/group/bld.inf" // End of File diff -r e1b6206813b4 -r f5907b1a1053 email_pub/email_widget_api/tsrc/3rdpartyapitestplugin2/data/2002C324.rss --- a/email_pub/email_widget_api/tsrc/3rdpartyapitestplugin2/data/2002C324.rss Fri Feb 19 22:37:30 2010 +0200 +++ b/email_pub/email_widget_api/tsrc/3rdpartyapitestplugin2/data/2002C324.rss Fri Mar 12 15:41:14 2010 +0200 @@ -17,7 +17,7 @@ #include #include -#include "t_testpluginconst.hrh" +#include "../inc/t_testpluginconst.hrh" RESOURCE REGISTRY_INFO theInfo { diff -r e1b6206813b4 -r f5907b1a1053 email_pub/email_widget_api/tsrc/3rdpartyapitestplugin2/rom/3rdpartyapitestplugin2.iby --- a/email_pub/email_widget_api/tsrc/3rdpartyapitestplugin2/rom/3rdpartyapitestplugin2.iby Fri Feb 19 22:37:30 2010 +0200 +++ b/email_pub/email_widget_api/tsrc/3rdpartyapitestplugin2/rom/3rdpartyapitestplugin2.iby Fri Mar 12 15:41:14 2010 +0200 @@ -15,10 +15,10 @@ * */ -#ifndef THIRDPARTYAPITESTPLUGIN_IBY -#define THIRDPARTYAPITESTPLUGIN_IBY +#ifndef THIRDPARTYAPITESTPLUGIN2_IBY +#define THIRDPARTYAPITESTPLUGIN2_IBY #include ECOM_PLUGIN( testplugin2.dll, testplugin2.rsc ) -#endif // THIRDPARTYAPITESTPLUGIN_IBY +#endif // THIRDPARTYAPITESTPLUGIN2_IBY diff -r e1b6206813b4 -r f5907b1a1053 emailcontacts/contactactionservice/group/fsccontactactionservice.mmp --- a/emailcontacts/contactactionservice/group/fsccontactactionservice.mmp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailcontacts/contactactionservice/group/fsccontactactionservice.mmp Fri Mar 12 15:41:14 2010 +0200 @@ -90,7 +90,7 @@ LIBRARY numbergrouping.lib LIBRARY apgrfx.lib LIBRARY apparc.lib - +LIBRARY rcse.lib // Dependencies to Phonebook LIBRARY Pbk2Presentation.lib LIBRARY Pbk2CommonUi.lib diff -r e1b6206813b4 -r f5907b1a1053 emailcontacts/contactactionservice/src/cfscactionutils.cpp --- a/emailcontacts/contactactionservice/src/cfscactionutils.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailcontacts/contactactionservice/src/cfscactionutils.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -32,7 +32,7 @@ #include #include // Header neither in Cmail nor in the platform -//#include +#include // #include #include @@ -136,7 +136,7 @@ if ( iRCSEProfileRegistry != NULL ) { // - //delete iRCSEProfileRegistry; + delete iRCSEProfileRegistry; // } } @@ -1155,7 +1155,7 @@ RArray ids; CleanupClosePushL( ids ); // - //iRCSEProfileRegistry->GetAllIdsL( ids ); + iRCSEProfileRegistry->GetAllIdsL( ids ); // configured = ids.Count() > 0; CleanupStack::PopAndDestroy( &ids ); @@ -1252,12 +1252,12 @@ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) ) { // - //TRAP_IGNORE( iRCSEProfileRegistry = CRCSEProfileRegistry::NewL() ); + TRAP_IGNORE( iRCSEProfileRegistry = CRCSEProfileRegistry::NewL() ); // } // - iRCSEProfileRegistry = NULL; + //iRCSEProfileRegistry = NULL; // } diff -r e1b6206813b4 -r f5907b1a1053 emailcontacts/group/bld.inf --- a/emailcontacts/group/bld.inf Fri Feb 19 22:37:30 2010 +0200 +++ b/emailcontacts/group/bld.inf Fri Mar 12 15:41:14 2010 +0200 @@ -22,9 +22,9 @@ // #include "../contactactionservice/group/bld.inf" #include "../contactactionmenu/group/bld.inf" -#include "../remotecontactlookup/group/bld.inf" // // not needed in cmail +//#include "../remotecontactlookup/group/bld.inf" //#include "../fscuicontrols/group/bld.inf" //#include "../fsccombinedviewui/group/bld.inf" // diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailclientapi/group/emailclientapi.mmp --- a/emailservices/emailclientapi/group/emailclientapi.mmp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailclientapi/group/emailclientapi.mmp Fri Mar 12 15:41:14 2010 +0200 @@ -63,6 +63,7 @@ LIBRARY bafl.lib +LIBRARY cone.lib LIBRARY euser.lib LIBRARY ECom.lib LIBRARY FSFWCommonLib.lib @@ -70,7 +71,7 @@ LIBRARY efsrv.lib LIBRARY viewcli.lib LIBRARY estor.lib - +LIBRARY centralrepository.lib #ifdef TRACE_INTO_FILE LIBRARY flogger.lib #endif // TRACE_INTO_FILE diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailclientapi/inc/emailclientpluginmanager.h --- a/emailservices/emailclientapi/inc/emailclientpluginmanager.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailclientapi/inc/emailclientpluginmanager.h Fri Mar 12 15:41:14 2010 +0200 @@ -9,7 +9,7 @@ * Initial Contributors: * Nokia Corporation - initial contribution. * -* Contributors: +* Contributors: Definition for plugin manager interface * * Description: * diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailclientapi/inc/emailmailboxcache.h --- a/emailservices/emailclientapi/inc/emailmailboxcache.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailclientapi/inc/emailmailboxcache.h Fri Mar 12 15:41:14 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: Definition for mailbox cache * */ diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailclientapi/src/emailclientapiimpl.cpp --- a/emailservices/emailclientapi/src/emailclientapiimpl.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailclientapi/src/emailclientapiimpl.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -24,7 +24,9 @@ #include #include #endif // SYMBIAN_ENABLE_SPLIT_HEADERS - +#include // CCoeEnv +#include // CCoeAppUi +#include #include "emailclientapiimpl.h" #include "emailapiutils.h" #include "emailmailbox.h" @@ -35,6 +37,8 @@ #include "emailmailboxcache.h" #include "FreestyleEmailUiConstants.h" #include "emailclientapi.hrh" +#include "FreestyleEmailCenRepKeys.h" +#include "FreestyleEmailUiConstants.h" // --------------------------------------------------------------------------- // CEmailClientApi::MailboxL // --------------------------------------------------------------------------- @@ -136,17 +140,47 @@ // ----------------------------------------------------------------------------- void CEmailClientApi::LaunchEmailL( const TLaunchPolicy aPolicy ) { - if ( aPolicy != EDefault ) + if ( aPolicy == EShowLastUnseenMailbox) { - // no other launch policies supported - User::Leave( KErrNotSupported ); + CRepository* emailRepository = CRepository::NewL( KFreestyleEmailCenRep ); + CleanupStack::PushL(emailRepository); + TInt numberOfMailboxes(0); + TInt inboxId(0); + TInt pluginId(0); + emailRepository->Get(KNumberOfMailboxesWithNewEmails,numberOfMailboxes); + if(numberOfMailboxes > 0) + { + emailRepository->Get(KNumberOfMailboxesWithNewEmails+(numberOfMailboxes*2-1),pluginId); + emailRepository->Get(KNumberOfMailboxesWithNewEmails+(numberOfMailboxes*2),inboxId); + + TUid pluginUid = {pluginId}; + TMailListActivationData activationData; + + activationData.iMailBoxId.SetId(inboxId); + activationData.iMailBoxId.SetPluginId(pluginUid); + activationData.iFolderId.SetPluginId(pluginUid); + TPckgBuf pkgBuf(activationData); + + CCoeEnv::Static()->AppUi()->CreateActivateViewEventL( + TVwsViewId(KFSEmailUiUid, MailListId), KStartListWithFolderId, + pkgBuf ); + } + else + { + // We should never come here since the mailbox count should be more than 0 if launchemailL is called + // but just to be safe launch the email in launchergrid if something went wrong with the repository + const TUid dummy = {0}; + CCoeEnv::Static()->AppUi()->CreateActivateViewEventL(TVwsViewId(KFSEmailUiUid, AppGridId), + dummy, KNullDesC8() ); + } + CleanupStack::PopAndDestroy();//emailRepository } - const TUid dummy = {0}; - - CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC(); - viewSrvSession->ActivateView(TVwsViewId(KFSEmailUiUid, AppGridId), + else if ( aPolicy == EDefault ) + { + const TUid dummy = {0}; + CCoeEnv::Static()->AppUi()->CreateActivateViewEventL(TVwsViewId(KFSEmailUiUid, AppGridId), dummy, KNullDesC8() ); - CleanupStack::PopAndDestroy(); + } } // ----------------------------------------------------------------------------- diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailclientapi/src/emailmailbox.cpp --- a/emailservices/emailclientapi/src/emailmailbox.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailclientapi/src/emailmailbox.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 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" @@ -15,7 +15,7 @@ * */ -#include +#include #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS #include #include @@ -39,10 +39,14 @@ #include "emailclientapi.hrh" #include "FreestyleEmailUiConstants.h" +// Constants + +_LIT( KNewLine, "\n" ); + // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- -CEmailMailbox* CEmailMailbox::NewL( +CEmailMailbox* CEmailMailbox::NewL( CPluginData& aPluginData, const TMailboxId& aMailboxId ) { @@ -54,30 +58,30 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- -CEmailMailbox::CEmailMailbox( +CEmailMailbox::CEmailMailbox( CPluginData& aPluginData, const TMailboxId& aMailboxId ) : iPluginData( aPluginData ), iMailboxId( aMailboxId.iId ) - { + { } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- void CEmailMailbox::ConstructL() { iPlugin = iPluginData.ClaimInstanceL(); - iEventMapper = new ( ELeave ) TObserverEventMapper( + iEventMapper = new ( ELeave ) TObserverEventMapper( iPlugin, iPluginData.Uid(), iMailboxId ); iFsMailbox = iPlugin->GetMailBoxByUidL( FsMailboxId() ); - iSyncObserver = new (ELeave) CEmailMailbox::CEmailRequestObserver(); + iSyncObserver = new (ELeave) CEmailMailbox::CEmailRequestObserver(); } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- CEmailMailbox::~CEmailMailbox() { @@ -89,7 +93,7 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- TEmailTypeId CEmailMailbox::InterfaceId() const { @@ -97,7 +101,7 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- void CEmailMailbox::Release() { @@ -105,20 +109,20 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- TMailboxId CEmailMailbox::MailboxId() const { return iMailboxId; } - + // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- MEmailAddress* CEmailMailbox::AddressL() const { if ( !iAddress ) - { + { iAddress = CEmailAddress::NewL( MEmailAddress::ESender, EAPIOwns ); iAddress->SetDisplayNameL( iFsMailbox->GetName() ); @@ -128,7 +132,7 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- TPtrC CEmailMailbox::MailboxName() const { @@ -141,24 +145,24 @@ TFSMailMsgId CEmailMailbox::FsMailboxId() const { return FsMsgId( iPluginData, iMailboxId ); - } + } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- TInt CEmailMailbox::GetFoldersL( RFolderArray& aFolders ) const { TFSMailMsgId rootId = TFSMailMsgId(); RPointerArray folders; - CleanupResetAndDestroyPushL( folders ); - iPlugin->ListFoldersL( FsMailboxId(), rootId, folders ); + CleanupResetAndDestroyPushL( folders ); + iPlugin->ListFoldersL( FsMailboxId(), rootId, folders ); TInt res( folders.Count() ); for ( TInt i = 0; i < res; i++ ) { - const CFSMailFolder* fsfolder = folders[i]; + const CFSMailFolder* fsfolder = folders[i]; const TEntryId id = fsfolder->GetFolderId().Id(); const TFolderId folderId( id, iMailboxId ); - CEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i] ); + CEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i] ); aFolders.AppendL( folder ); CleanupStack::Pop(); // folder } @@ -169,7 +173,7 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- MEmailFolder* CEmailMailbox::FolderL( const TFolderId& aFolderId ) const { @@ -177,94 +181,82 @@ FsMsgId( iPluginData, iMailboxId ), FsMsgId( iPluginData, aFolderId ) ); CleanupStack::PushL( fsFolder ); - - CEmailFolder* folder = CEmailFolder::NewL( iPluginData, - aFolderId, fsFolder); + + CEmailFolder* folder = CEmailFolder::NewL( iPluginData, + aFolderId, fsFolder); CleanupStack::Pop(); // folder - - return folder; + + return folder; } - + // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- -MEmailFolder* CEmailMailbox::FolderByTypeL( +MEmailFolder* CEmailMailbox::FolderByTypeL( const TFolderType aFolderType ) const - { + { TFSMailMsgId fsFolderId; - + switch ( aFolderType ) - { + { case EInbox: - fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox ); + fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox ); case EOutbox: - fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSOutbox ); + fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSOutbox ); case EDrafts: - fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDraftsFolder ); + fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDraftsFolder ); case EDeleted: - fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDeleted ); + fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDeleted ); case ESent: - fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder ); + fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder ); case EOther: default: User::Leave( KErrNotFound ); break; } - + const TFolderId folderId( fsFolderId.Id(), iMailboxId ); - + CFSMailFolder* fsFolder = iPlugin->GetFolderByUidL( FsMsgId( iPluginData, iMailboxId ), fsFolderId ); CleanupStack::PushL( fsFolder ); - + CEmailFolder* folder = CEmailFolder::NewL( iPluginData, - folderId, + folderId, fsFolder ); - + CleanupStack::Pop(); - - return folder; + + return folder; } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- MEmailMessage* CEmailMailbox::MessageL( const TMessageId& aMessageId ) - { - CFSMailMessage *fsMessage = iPlugin->GetMessageByUidL( - FsMsgId( iPluginData, aMessageId.iFolderId.iMailboxId ), - FsMsgId( iPluginData, aMessageId.iFolderId ), - FsMsgId( iPluginData, aMessageId ), + { + CFSMailMessage *fsMessage = iPlugin->GetMessageByUidL( + FsMsgId( iPluginData, aMessageId.iFolderId.iMailboxId ), + FsMsgId( iPluginData, aMessageId.iFolderId ), + FsMsgId( iPluginData, aMessageId ), EFSMsgDataEnvelope); - CleanupStack::PushL( fsMessage ); + CleanupStack::PushL( fsMessage ); CEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); CleanupStack::Pop(); // fsMessage - + return message; } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- MEmailMessage* CEmailMailbox::CreateDraftMessageL() const { CFSMailMessage* fsMessage = iFsMailbox->CreateMessageToSend(); - CleanupStack::PushL( fsMessage ); - MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); - CleanupStack::Pop(); // fsMessage - - return message; - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -MEmailMessage* CEmailMailbox::CreateReplyMessageL( const TMessageId& aMessageId, const TBool aReplyToAll ) const - { - CFSMailMessage* fsMessage = iFsMailbox->CreateReplyMessage( FsMsgId( iPluginData, aMessageId ), aReplyToAll ); - CleanupStack::PushL( fsMessage ); + User::LeaveIfNull( fsMessage ); + CleanupStack::PushL( fsMessage ); MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); CleanupStack::Pop(); // fsMessage @@ -272,12 +264,13 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- -MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const - { - CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage( FsMsgId( iPluginData, aMessageId ) ); - CleanupStack::PushL( fsMessage ); +MEmailMessage* CEmailMailbox::CreateReplyMessageL( const TMessageId& aMessageId, const TBool aReplyToAll ) const + { + CFSMailMessage* fsMessage = iFsMailbox->CreateReplyMessage( FsMsgId( iPluginData, aMessageId ), aReplyToAll ); + User::LeaveIfNull( fsMessage ); + CleanupStack::PushL( fsMessage ); MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); CleanupStack::Pop(); // fsMessage @@ -285,16 +278,31 @@ } // ----------------------------------------------------------------------------- -// +// +// ----------------------------------------------------------------------------- +MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const + { + CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage( + FsMsgId( iPluginData, aMessageId ), KNewLine() ); + User::LeaveIfNull( fsMessage ); + CleanupStack::PushL( fsMessage ); + MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns ); + CleanupStack::Pop(); // fsMessage + + return message; + } + +// ----------------------------------------------------------------------------- +// // ----------------------------------------------------------------------------- void CEmailMailbox::SynchroniseL( MMailboxSyncObserver& aObserver ) { iSyncObserver->SetObserverL( &aObserver ); - iRequestId = iFsMailbox->RefreshNowL( *iSyncObserver ); + iRequestId = iFsMailbox->RefreshNowL( *iSyncObserver ); } - + // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- void CEmailMailbox::CancelSynchronise() { @@ -302,15 +310,15 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- void CEmailMailbox::RegisterObserverL( MMailboxContentObserver& aObserver ) { iEventMapper->AddObserverL( aObserver ); } - + // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- void CEmailMailbox::UnregisterObserver( MMailboxContentObserver& aObserver ) { @@ -318,32 +326,32 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- MEmailMessageSearchAsync* CEmailMailbox::MessageSearchL() { MEmailMessageSearchAsync* searchAPI = CEmailMessageSearchAsync::NewL( iPluginData, iMailboxId ); return searchAPI; } - + void CEmailMailbox::ShowInboxL() { TMailListActivationData mailListData; - + mailListData.iMailBoxId = FsMsgId(iPluginData, iMailboxId); - + TPckgBuf pkgOut( mailListData ); CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC(); viewSrvSession->ActivateView(TVwsViewId(KFSEmailUiUid, MailListId), KStartListWithFolderId, pkgOut); - CleanupStack::PopAndDestroy(); + CleanupStack::PopAndDestroy(); } void CEmailMailbox::EditNewMessageL() { TEditorLaunchParams editorLaunchData; editorLaunchData.iMailboxId = FsMsgId(iPluginData, iMailboxId); - editorLaunchData.iActivatedExternally = ETrue; - + editorLaunchData.iActivatedExternally = ETrue; + TPckgBuf pckgData( editorLaunchData ); CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC(); TUid command = TUid::Uid(KEditorCmdCreateNew); @@ -355,22 +363,22 @@ { CFSMailFolder* fsFolder = NULL; TFSMailMsgId fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox ); - + } */ // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- -CEmailMailbox::TObserverEventMapper::TObserverEventMapper( - CFSMailPlugin* aPlugin, +CEmailMailbox::TObserverEventMapper::TObserverEventMapper( + CFSMailPlugin* aPlugin, TUid aPluginUid, const TMailboxId& aMailboxId ) - : iPlugin( aPlugin ), + : iPlugin( aPlugin ), iFsMailboxId( aPluginUid.iUid, aMailboxId.iId ) { } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- CEmailMailbox::TObserverEventMapper::~TObserverEventMapper() { @@ -418,29 +426,29 @@ // Maps protocol a plugin event to client event // ----------------------------------------------------------------------------- void CEmailMailbox::TObserverEventMapper::EventL( - TFSMailEvent aEvent, - TFSMailMsgId aMailbox, - TAny* aParam1, - TAny* aParam2, + TFSMailEvent aEvent, + TFSMailMsgId aMailbox, + TAny* aParam1, + TAny* aParam2, TAny* aParam3 ) { const TEventMapFunc KMailboxEventHandlers[] = { CEmailMailbox::TObserverEventMapper::IgnoreEventL, - CEmailMailbox::TObserverEventMapper::IgnoreEventL, - CEmailMailbox::TObserverEventMapper::IgnoreEventL, - CEmailMailbox::TObserverEventMapper::IgnoreEventL, CEmailMailbox::TObserverEventMapper::IgnoreEventL, CEmailMailbox::TObserverEventMapper::IgnoreEventL, CEmailMailbox::TObserverEventMapper::IgnoreEventL, CEmailMailbox::TObserverEventMapper::IgnoreEventL, CEmailMailbox::TObserverEventMapper::IgnoreEventL, CEmailMailbox::TObserverEventMapper::IgnoreEventL, - CEmailMailbox::TObserverEventMapper::NewMessageL, + CEmailMailbox::TObserverEventMapper::IgnoreEventL, + CEmailMailbox::TObserverEventMapper::IgnoreEventL, + CEmailMailbox::TObserverEventMapper::IgnoreEventL, + CEmailMailbox::TObserverEventMapper::NewMessageL, CEmailMailbox::TObserverEventMapper::MessageChangedL, CEmailMailbox::TObserverEventMapper::MessageDeletedL, CEmailMailbox::TObserverEventMapper::MessageMoved, CEmailMailbox::TObserverEventMapper::MessageCopiedL, - CEmailMailbox::TObserverEventMapper::NewFolderL, + CEmailMailbox::TObserverEventMapper::NewFolderL, CEmailMailbox::TObserverEventMapper::FolderChangeL, CEmailMailbox::TObserverEventMapper::FoldersDeletedL, CEmailMailbox::TObserverEventMapper::FoldersMovedL, @@ -453,69 +461,69 @@ if ( index < sizeof( KMailboxEventHandlers ) / sizeof( KMailboxEventHandlers[ index ] ) ) { // call event handler function - TEventMapFunc method = KMailboxEventHandlers[ index ]; + TEventMapFunc method = KMailboxEventHandlers[ index ]; (this->*method)(id, aParam1,aParam2,aParam3 ); } } -void CEmailMailbox::TObserverEventMapper::IgnoreEventL( +void CEmailMailbox::TObserverEventMapper::IgnoreEventL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::NewMessageL( + +void CEmailMailbox::TObserverEventMapper::NewMessageL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::MessageChangedL( + +void CEmailMailbox::TObserverEventMapper::MessageChangedL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::MessageDeletedL( + +void CEmailMailbox::TObserverEventMapper::MessageDeletedL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::MessageMoved( + +void CEmailMailbox::TObserverEventMapper::MessageMoved( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::MessageCopiedL( + +void CEmailMailbox::TObserverEventMapper::MessageCopiedL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::NewFolderL( + +void CEmailMailbox::TObserverEventMapper::NewFolderL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::FolderChangeL( + +void CEmailMailbox::TObserverEventMapper::FolderChangeL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::FoldersDeletedL( + +void CEmailMailbox::TObserverEventMapper::FoldersDeletedL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::FoldersMovedL( + +void CEmailMailbox::TObserverEventMapper::FoldersMovedL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - -void CEmailMailbox::TObserverEventMapper::ExceptionL( + +void CEmailMailbox::TObserverEventMapper::ExceptionL( TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ ) { } - + // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- TBool CEmailMailbox::TObserverEventMapper::Equals( const MMailboxContentObserver& a1, const MMailboxContentObserver& a2 ) { @@ -524,7 +532,7 @@ CEmailMailbox::CEmailRequestObserver::CEmailRequestObserver() : iObserver( NULL ) - { + { } @@ -532,7 +540,7 @@ { if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete) { - iObserver->MailboxSynchronisedL(aEvent.iError); + iObserver->MailboxSynchronisedL(aEvent.iError); } } diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emaildebug/inc/emailtraceconfig.hrh --- a/emailservices/emaildebug/inc/emailtraceconfig.hrh Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emaildebug/inc/emailtraceconfig.hrh Fri Mar 12 15:41:14 2010 +0200 @@ -47,7 +47,7 @@ #endif // ENABLE_TRACES -#ifdef ENABLE_TIMESTAMP_TRACES +#ifdef __ENABLE_TIMESTAMP_TRACES #ifndef _DEBUG // Undefine error traces #undef ERROR_TRACE diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/commonlib/group/bld.inf --- a/emailservices/emailframework/commonlib/group/bld.inf Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailframework/commonlib/group/bld.inf Fri Mar 12 15:41:14 2010 +0200 @@ -30,6 +30,7 @@ ../inc/cemailextensionbase.h |../../../../inc/cemailextensionbase.h ../inc/cmrcalendarinfo.h |../../../../inc/cmrcalendarinfo.h ../inc/cmailmessageext.h |../../../../inc/cmailmessageext.h +../inc/cmailboxstateext.h |../../../../inc/cmailboxstateext.h ../inc/mmrattachment.h |../../../../inc/mmrattachment.h ../inc/mmrattendee.h |../../../../inc/mmrattendee.h diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/commonlib/inc/CFSMailMessagePart.h --- a/emailservices/emailframework/commonlib/inc/CFSMailMessagePart.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailframework/commonlib/inc/CFSMailMessagePart.h Fri Mar 12 15:41:14 2010 +0200 @@ -24,7 +24,7 @@ #include // -#include "CFSMailMessageBase.h" +#include "cfsmailmessagebase.h" #include "mmrinfoobject.h" // diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/commonlib/inc/cmailboxstateext.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailframework/commonlib/inc/cmailboxstateext.h Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,70 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Message extension interface +* +*/ + +#ifndef CMAILBOXSTATEEXT_H +#define CMAILBOXSTATEEXT_H + +#include "cemailextensionbase.h" +#include "CFSMailCommon.h" + +// interface UID value passed to CFSMailClient::ExtensionL +const TUid KEmailMailboxStateExtensionUid = { 0x2001E28B }; + +/** +* Data providider interface. +*/ +class MEmailMailboxState +{ +public: + /** + * Returns currently active folder and related mailbox that + * is currently being used. + * @param aActiveMailboxId id of currently active mailbox + * @param aActiveFolderId id of currently active mail folder + * @return Symbian OS error code + */ + virtual TInt GetActiveFolderId( + TFSMailMsgId& aActiveMailboxId, + TFSMailMsgId& aActiveFolderId ) const = 0; +}; + +/** + * Extension interface for passing UI context data to protocol plugins. + */ +class CMailboxStateExtension : public CEmailExtension +{ +public: + + /** + * Sets data provider interface + * @param aDataProvider data provider + */ + virtual void SetStateDataProvider( MEmailMailboxState* aDataProvider ) = 0; + +protected: + inline CMailboxStateExtension(); + +protected: + MEmailMailboxState* iDataProvider; +}; + +inline CMailboxStateExtension::CMailboxStateExtension() : + CEmailExtension( KEmailMailboxStateExtensionUid ) + { + } + +#endif // CMAILBOXSTATEEXT_H diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/commonlib/src/CFSMailBox.cpp --- a/emailservices/emailframework/commonlib/src/CFSMailBox.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailframework/commonlib/src/CFSMailBox.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -25,6 +25,8 @@ #include "cfsmailbox.h" #include "cfsmailrequestobserver.h" +#include "cmailboxstateext.h" + const TInt KMaxMruEntries( 150 ); // ================= MEMBER FUNCTIONS ========================================== @@ -844,6 +846,19 @@ CleanupStack::Pop(); // calInfo } } + else if ( aInterfaceUid == KEmailMailboxStateExtensionUid ) + { + if ( !extension ) + { + // check that plugin supports requested extension. + if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) ) + { + // request extension from plugin, leaves if not supported + extension = plugin->ExtensionL( aInterfaceUid ); + } + + } + } else { User::Leave( KErrNotSupported ); diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/data/microsoft.svg --- a/emailservices/emailframework/data/microsoft.svg Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailframework/data/microsoft.svg Fri Mar 12 15:41:14 2010 +0200 @@ -1,429 +1,44 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/inc/CFSMailBrandManagerImpl.h --- a/emailservices/emailframework/inc/CFSMailBrandManagerImpl.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailframework/inc/CFSMailBrandManagerImpl.h Fri Mar 12 15:41:14 2010 +0200 @@ -104,6 +104,13 @@ const TFSMailMsgId& aMailboxId, TDes& aIconIds ); + /** + * @see MFSMailBrandManager::GetGraphicIdsL + */ + TInt GetGraphicIdsL( TFSBrandElement aElement, + const TDesC& aBrandId, + TDes& aIconIds ); + private: /** diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/inc/MFSMailBrandManager.h --- a/emailservices/emailframework/inc/MFSMailBrandManager.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailframework/inc/MFSMailBrandManager.h Fri Mar 12 15:41:14 2010 +0200 @@ -142,7 +142,19 @@ virtual TInt GetGraphicIdsL( TFSBrandElement aElement, const TFSMailMsgId& aMailboxId, TDes& aIconIds ) = 0; - + + /** + * Returns branded graphic element of given type. + * + * @param aElementId brand element + * @param aBrandId Domain of email address. + * @param aIconIds Icon path and ids + * + * @return Error code + */ + virtual TInt GetGraphicIdsL( TFSBrandElement aElement, + const TDesC& aBrandId, + TDes& aIconIds ) = 0; }; diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/inc/emailversionnumbers.hrh --- a/emailservices/emailframework/inc/emailversionnumbers.hrh Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailframework/inc/emailversionnumbers.hrh Fri Mar 12 15:41:14 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description : Common email version number definitions -* Version : %version: 10.1.2 % +* Version : %version: 10.1.3 % * */ @@ -25,14 +25,14 @@ * version number both major and minor version are stored in separate 32 bit * location. */ -#define KEmailBinaryVersionNumber 10.4 +#define KEmailBinaryVersionNumber 10.5 /** ECom version number to be used in Cmail related ECom registeration * resource files. * NOTE: Version number in ECom registeration resource file is saved as one * byte, so 255 is the maximum version number. */ -#define KEmailEcomVersionNumber 4 +#define KEmailEcomVersionNumber 5 /** Binary paging setting (paged/non-paged) */ diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailframework/src/CFSMailBrandManagerImpl.cpp --- a/emailservices/emailframework/src/CFSMailBrandManagerImpl.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailframework/src/CFSMailBrandManagerImpl.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -288,6 +288,24 @@ } // ----------------------------------------------------------------------------- +// CFSMailBrandManagerImpl::GetGraphicIdsL +// ----------------------------------------------------------------------------- +TInt CFSMailBrandManagerImpl::GetGraphicIdsL( + TFSBrandElement aElement, + const TDesC& aBrandId, + TDes& aIconIds ) + { + FUNC_LOG; + + CFSMailBrand* brand = FindMatchingBrandL( aBrandId ); + if ( brand == NULL ) + { + return KErrNotFound; + } + return brand->GetGraphicIdsL( aElement, aIconIds ); + } + +// ----------------------------------------------------------------------------- // CFSMailBrandManagerImpl::GetTextL // ----------------------------------------------------------------------------- TPtrC CFSMailBrandManagerImpl::GetTextL( diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailinstallationinitiator/sis/makeEmailInstallationInitiatorSisx.bat --- a/emailservices/emailinstallationinitiator/sis/makeEmailInstallationInitiatorSisx.bat Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailinstallationinitiator/sis/makeEmailInstallationInitiatorSisx.bat Fri Mar 12 15:41:14 2010 +0200 @@ -12,8 +12,7 @@ REM * REM * Contributors: REM * -REM * Description: -REM * Script that creates and signs Email installation initiator sisx packages +REM * Description: Script that creates and signs Email installation initiator sisx packages REM * @echo ######################################################### diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/conf/20029F4A.txt Binary file emailservices/emailserver/cmailhandlerplugin/conf/20029F4A.txt has changed diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/conf/CommonemailCRKeys.confml Binary file emailservices/emailserver/cmailhandlerplugin/conf/CommonemailCRKeys.confml has changed diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/conf/CommonemailCRKeys_20029F4A.crml Binary file emailservices/emailserver/cmailhandlerplugin/conf/CommonemailCRKeys_20029F4A.crml has changed diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/group/bld.inf --- a/emailservices/emailserver/cmailhandlerplugin/group/bld.inf Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/group/bld.inf Fri Mar 12 15:41:14 2010 +0200 @@ -36,5 +36,15 @@ ../rom/cmailhandlerplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(cmailhandlerplugin.iby) ../rom/cmailhandlerpluginresources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(cmailhandlerpluginresources.iby) +// CONFML_EXPORT_PATH defined in platform_paths.hrh APP_LAYER_CONFML +../conf/CommonemailCRKeys.confml CONFML_EXPORT_PATH(CommonemailCRKeys.confml,s60) +../conf/CommonemailCRKeys_20029F4A.crml CRML_EXPORT_PATH(CommonemailCRKeys_20029F4A.crml,s60) +../inc/commonemailcrkeys.h |../../../../inc/commonemailcrkeys.h +// TEMP fiz for wk05/10 SDK, please remvve after wk07 +../conf/20029F4A.txt /epoc32/winscw/c/private/10202be9/20029F4A.txt +../conf/20029F4A.txt /epoc32/release/winscw/UDEB/Z/private/10202be9/20029F4A.txt +../conf/20029F4A.txt /epoc32/release/winscw/UREL/Z/private/10202be9/20029F4A.txt +../conf/20029F4A.txt /epoc32/data/Z/private/10202BE9/20029F4A.txt + diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/inc/PSSubscriber.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/PSSubscriber.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/PSSubscriber.h Fri Mar 12 15:41:14 2010 +0200 @@ -11,8 +11,7 @@ * * Contributors: * -* Description: -* Subscriber class for Publish & Subsribe events +* Description: Subscriber class for Publish & Subsribe events * */ diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h Fri Mar 12 15:41:14 2010 +0200 @@ -78,12 +78,6 @@ void UpdateMailboxesL(TInt aInstance, const TDesC& aContentId); /** - * Updates external (3rd party) account based on contentId - * @param aContentId specifies the widget and account related to it - */ - void UpdateExtAccountL( const TDesC& aContentId ); - - /** * */ void LaunchWidgetSettingsL( const TDesC& aContentId ); @@ -96,7 +90,7 @@ /** * */ - void LaunchEmailWizardL(); + void LaunchEmailWizardL( const TDesC& aContentId ); /** * Launches an application based on the given contentId * This method is for external (3rd party) accounts @@ -106,11 +100,6 @@ /** * - */ - TBool AssociateWidgetToSetting( const TDesC& aContentId ); - - /** - * */ void DissociateWidgetFromSettingL( const TDesC& aContentId ); @@ -128,11 +117,6 @@ * Return total number of 3rd party mailboxes in the system */ TInt TotalExtMailboxCountL(); - - /** - * - */ - void ManualAccountSelectionL( const TDesC& aContentId ); /** * Gets correct localised format for time (or date) string @@ -142,6 +126,16 @@ // From MEmailObserverListener void EmailObserverEvent( EmailInterface::MEmailData& aData ); + /** + * + */ + void SetWaitingForNewMailbox( const TDesC& aContentId ); + + /** + * + */ + void CleanWaitingForNewMailbox(); + protected: /** * From CFSNotificationHandlerBase @@ -228,11 +222,6 @@ const TInt aFirstRow ); /** - * Handles publishing of connection state icon - */ - void UpdateConnectStateL( const TInt aMailBoxNumber, const TInt aRowNumber ); - - /** * Handles publishing of mailbox icon */ void UpdateMailBoxIconL( const TInt aMailBoxNumber, @@ -245,11 +234,6 @@ void UpdateIndicatorIconL( const TInt aMailBoxNumber, const TInt aWidgetInstance, const TInt aRowNumber ); - - /** - * Handles publishing of empty message time string - */ -// void ClearMessageTimeL( const TInt aRowNumber ); // Event handling subroutines /** @@ -287,22 +271,6 @@ void HandleMailDeletedEventL( TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2 ); /** - * handles mail changed event - * @param aMailbox mailbox id - * @param aParam1 contains event specific parameters - * @param aParam2 contains event specific parameters - */ - void HandleMailChangedEventL( TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2 ); - - /** - * handles new folder event - * @param aMailbox mailbox id - * @param aParam1 contains event specific parameters - * @param aParam2 contains event specific parameters - */ - void HandleNewFolderEventL( TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2 ); - - /** * get count of unread messages in inbox * @param aMailbox mailbox id */ @@ -366,7 +334,9 @@ * */ void PublishMessageL( TInt aWidgetInstance, CFSMailMessage& aMessage, - const TDesC& aSenderName, const TDesC& aTime, TInt aFirstRow); + const TDesC& aSenderName, + const TDesC& aSubject, + const TDesC& aTime, TInt aFirstRow); /** * Checks if the given message is already know/published @@ -403,8 +373,6 @@ */ void SelectAndUpdateExtAccountsL( RPointerArray& aAccounts ); - TBool FirstBootL(); - /** * Checks whether aAccounts array has entries relating to plugin with id aPluginId * @param aPluginId 3rd party plugin identifier (implementation uid) @@ -438,7 +406,10 @@ // local cache of mailbox details RPointerArray iAccountsArray; // array of plugin proxies. One plugin proxy handles one 3rd party plugin and its accounts - RPointerArray iExternalPlugins; + RPointerArray iExternalPlugins; + // tells if email wizard is started from widget and it is still running + // and to which widget next added account is added. + HBufC* iWaitingForNewMailbox; }; #endif //__CMAILCPSHANDLER_H__ diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/inc/cmailcpsif.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpsif.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpsif.h Fri Mar 12 15:41:14 2010 +0200 @@ -61,10 +61,7 @@ */ void PublishActiveMailboxNameL( const TInt aInstance, const TInt aRowNumber, - const TDesC& aMailboxName, - const TInt aMailBoxCount, - TFSMailMsgId aMailBoxId, - TFSMailMsgId aFolderId ); + const TDesC& aMailboxName); /** * Publishes mailbox name to widget and action related to widget @@ -173,7 +170,7 @@ * */ TInt GetWidgetInstanceCount(); - + private: CMailCpsIf( CMailCpsHandler* aMailCpsHandler ); @@ -214,10 +211,7 @@ const TDesC& aContentId, const TDesC& aTextToAdd, const TDesC& aKey, - const TDesC8& aTrigger, - const TInt aMailBoxCount, - TFSMailMsgId aMailBoxId, - TFSMailMsgId aFolderId ); + const TDesC8& aTrigger); /** * Publishes image @@ -234,7 +228,8 @@ const TDesC8& aKey, TInt aBitmapId, TInt aBitmapMaskId, - TFSMailMsgId aMailBoxId ); + TFSMailMsgId aMailBoxId, + const TDesC& aBrandId ); /** * Removes a published entity from Content Publishing Service @@ -246,7 +241,7 @@ * */ TInt FindWidgetInstanceId(const TDesC& aContentId); - + /** * Resets all the published content values on HomeScreen database */ @@ -275,8 +270,6 @@ TUint iSetupUid; // is content allowed to publish TBool iAllowedToPublish[KMaxMailboxCount]; - // is widget inactive - TBool iInactive[KMaxMailboxCount]; // From configuration: are homescreen notifications observed or ignored TBool iIgnoreHsNotifications; }; diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/inc/cmailcpsifconsts.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpsifconsts.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpsifconsts.h Fri Mar 12 15:41:14 2010 +0200 @@ -58,9 +58,26 @@ _LIT(KContTypeSetupIcon, "ct_setup_icon"); _LIT8(KKeySetupIcon, "key_setup_icon"); +_LIT(KContTypeSetupBrandIcon1, "ct_setup_brand_icon_1"); +_LIT8(KKeySetupBrandIcon1, "key_setup_brand_icon_1"); +_LIT(KContTypeSetupBrandIcon2, "ct_setup_brand_icon_2"); +_LIT8(KKeySetupBrandIcon2, "key_setup_brand_icon_2"); +_LIT(KContTypeSetupBrandIcon3, "ct_setup_brand_icon_3"); +_LIT8(KKeySetupBrandIcon3, "key_setup_brand_icon_3"); +_LIT(KContTypeSetupBrandIcon4, "ct_setup_brand_icon_4"); +_LIT8(KKeySetupBrandIcon4, "key_setup_brand_icon_4"); + +_LIT(KSetupBrand1, "ovi.com"); +_LIT(KSetupBrand2, "yahoo.com"); +_LIT(KSetupBrand3, "hotmail.com"); +_LIT(KSetupBrand4, "gmail.com"); + _LIT(KContTypeBodyText, "ct_body_text_"); _LIT(KKeyBodyText, "key_body_text_"); +_LIT(KContTypeSubjectText, "ct_subject_text_"); +_LIT(KKeySubjectText, "key_subject_text_"); + _LIT(KContTypeIndicatorIcon, "ct_indicator_icon_"); _LIT8(KKeyIndicatorIcon, "key_indicator_icon_"); @@ -120,16 +137,14 @@ // constants for requesting notification _LIT( KPubData, "publisher"); _LIT( KActionName,"notify"); -_LIT8( KDeActive, "deactive"); -_LIT8( KActive, "active"); +_LIT8( KPluginStartup, "pluginstartup"); +_LIT8( KPluginShutdown, "pluginshutdown"); _LIT8( KSuspend , "suspend"); _LIT8( KResume, "resume"); -_LIT8( KInactive, "inactive"); -_LIT( KDeActive16, "deactive"); -_LIT( KActive16, "active"); +_LIT( KPluginStartup16, "pluginstartup"); +_LIT( KPluginShutdown16, "pluginshutdown"); _LIT( KSuspend16, "suspend"); _LIT( KResume16, "resume"); -_LIT( KInactive16, "inactive"); _LIT( KSettings16, "settings"); _LIT( KCPAll, "all"); _LIT8( KExecute, "execute" ); diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/inc/cmailcpssettings.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpssettings.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpssettings.h Fri Mar 12 15:41:14 2010 +0200 @@ -124,7 +124,8 @@ * * @return */ - TBool AssociateWidgetToSetting( const TDesC& aContentId ); + void AssociateWidgetToSetting( const TDesC& aContentId, + const TFSMailMsgId aMailbox ); /** * @@ -256,16 +257,14 @@ void GetExtMailboxNonZeroKeysL( RArray& aKeys ); /** - * - * @param aContentId + * Find next free CenRep key to store setting. + * @param aContentId Id of widget instance + */ + TInt GetSettingToAssociate( const TDesC& aContentId ); + + /** + * @param aKey */ - TBool IsAlreadyAssociated( const TDesC& aContentId ); - - /** - * - */ - TUint32 GetSettingToAssociate(); - CMailExternalAccount* GetExtMailboxL( TInt aKey ); private: // data diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/inc/cmailwidgetcenrepkeysinternal.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailwidgetcenrepkeysinternal.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailwidgetcenrepkeysinternal.h Fri Mar 12 15:41:14 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008 - 2010 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" @@ -26,9 +26,6 @@ // (see also constants below) const TUint32 KCmailCPConfiguration = 0x10000001; -// Key to store content ids of added email widgets -const TUint32 KCMailContentIdList = 0x10000002; - // 1st bit: whether email content publisher listens to commands/events sent by Homescreen framework // value == 0: default behaviour, events are handled as normal // value != 0: publisher ignores HS events diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/inc/commonemailcrkeys.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/commonemailcrkeys.h Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,28 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* repository keys to track which mailbox has the latest new email +* +*/ + +#ifndef _COMMONEMAILCRKEYS_H_ +#define _COMMONEMAILCRKEYS_H_ + +// central repository key for email data +const TUid KCmailDataRepository = { 0x20029F4A }; + +// key for display text (mailbox name?) of email indicator popup +const TUint32 KCmailNewEmailDisplayText = 0x00000001 ; + +#endif // _COMMONEMAILCRKEYS_H_ diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/rom/cmailhandlerplugin.iby --- a/emailservices/emailserver/cmailhandlerplugin/rom/cmailhandlerplugin.iby Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/rom/cmailhandlerplugin.iby Fri Mar 12 15:41:14 2010 +0200 @@ -28,6 +28,8 @@ ECOM_PLUGIN( cmailhandlerplugin.dll, cmailhandlerplugin.rsc ) SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,cmailhandlerplugin) +data=EPOCROOT##epoc32\data\Z\private\10202BE9\20029F4A.txt private\10202BE9\20029F4A.txt + #endif //FF_EMAIL_FRAMEWORK diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/src/PSSubscriber.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/PSSubscriber.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/src/PSSubscriber.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -11,8 +11,7 @@ * * Contributors: * -* Description: -* Subscriber class for Publish & Subsribe events +* Description: Subscriber class for Publish & Subsribe events */ #include diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 - 2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008 - 2010 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" @@ -22,8 +22,6 @@ #include #include #include -#include -#include #include #include #include @@ -50,7 +48,9 @@ // CMailCpsHandler::CMailCpsHandler // --------------------------------------------------------- // -CMailCpsHandler::CMailCpsHandler( MFSNotificationHandlerMgr& aOwner ) : CFSNotificationHandlerBase( aOwner ) +CMailCpsHandler::CMailCpsHandler( MFSNotificationHandlerMgr& aOwner ): + CFSNotificationHandlerBase( aOwner ), + iWaitingForNewMailbox(NULL) { FUNC_LOG; } @@ -78,9 +78,9 @@ FUNC_LOG; CFSNotificationHandlerBase::ConstructL(); - + iEnv = CEikonEnv::Static( ); - + SetObserving( ETrue ); // Instantiate helper classes @@ -128,7 +128,7 @@ // Get current configuration from settings interface, // and pass it on to actual publisher interface iLiwIf->SetConfiguration( iSettings->Configuration() ); - + TInt iiMax( iSettings->Mailboxes().Count() ); for ( TInt ii = 0; ii < iiMax; ii++ ) { @@ -152,24 +152,24 @@ CleanupStack::PushL( mailbox ); CMailMailboxDetails* mailboxDetails = CreateMailboxDetailsL( *mailbox ); CleanupStack::PushL( mailboxDetails ); - + TBuf cid; TInt next(1); // Check if same mailbox is already in iAccountsArray once or more for ( TInt i = 0; i < iAccountsArray.Count(); i++ ) - { + { TInt id = (TInt)iAccountsArray[i]->iMailboxId.Id(); if (id == mailboxId) { next++; } } - iSettings->GetContentId(mailboxId, next, cid); + iSettings->GetContentId(mailboxId, next, cid); mailboxDetails->SetWidgetInstance(cid); iAccountsArray.AppendL( mailboxDetails ); - CleanupStack::Pop( mailboxDetails ); - CleanupStack::PopAndDestroy( mailbox ); + CleanupStack::Pop( mailboxDetails ); + CleanupStack::PopAndDestroy( mailbox ); } } } @@ -296,7 +296,7 @@ { FUNC_LOG; // Create instance to return - CMailMailboxDetails* details = + CMailMailboxDetails* details = CMailMailboxDetails::NewL( aMailbox.GetId(), aMailbox.GetName() ); return details; } @@ -314,6 +314,7 @@ TRAP_IGNORE( InitializeExternalAccountsL() ); // Update widget contents after settings change TRAP_IGNORE( UpdateFullL() ); + CleanWaitingForNewMailbox(); } // --------------------------------------------------------- @@ -339,31 +340,54 @@ void CMailCpsHandler::UpdateMailboxesL(TInt aInstance, const TDesC& aContentId) { FUNC_LOG; - TInt row(1); // start from first row - TInt mailbox(0); - TBool found( EFalse ); - // try to find mailbox with matching contentId - for ( mailbox = 0; mailbox < iAccountsArray.Count(); mailbox++ ) + // Look up 3rd party plugin that handles this account + CMailPluginProxy* plugin = GetExtPluginL( aContentId ); + if ( plugin ) // handle external 3rd party accounts { - if ( !aContentId.Compare( *iAccountsArray[mailbox]->iWidgetInstance ) ) - { - INFO_1("iAccountsArray.Count() == %d", iAccountsArray.Count()); - found = ETrue; - break; - } + // Publish its data + plugin->UpdateAccountL( aContentId ); } + else // handle internal accounts + { + TInt row(1); // start from first row + TInt mailbox(0); + TBool found( EFalse ); + // try to find mailbox with matching contentId + for ( mailbox = 0; mailbox < iAccountsArray.Count(); mailbox++ ) + { + if ( !aContentId.Compare( *iAccountsArray[mailbox]->iWidgetInstance ) ) + { + INFO_1("iAccountsArray.Count() == %d", iAccountsArray.Count()); + found = ETrue; + break; + } + } - // if contentId found from array, update the mailbox - if ( found ) - { - // Update fields from left to right - UpdateMailBoxIconL( mailbox, aInstance, row ); - UpdateMailboxNameL( mailbox, aInstance, row ); - UpdateIndicatorIconL( mailbox, aInstance, row ); - row++; - UpdateMessagesL( mailbox, aInstance, 1, row); - row++; - UpdateMessagesL( mailbox, aInstance, 2, row); + // if contentId found from array, update the mailbox + if ( found ) + { + // Update fields from left to right + UpdateMailBoxIconL( mailbox, aInstance, row ); + UpdateMailboxNameL( mailbox, aInstance, row ); + UpdateIndicatorIconL( mailbox, aInstance, row ); + row++; + UpdateMessagesL( mailbox, aInstance, 1, row); + row++; + UpdateMessagesL( mailbox, aInstance, 2, row); + } + else + { + // Clean mailbox name + iLiwIf->PublishActiveMailboxNameL( aInstance, 1, KNullDesC ); + // Clean mailbox icon + TFSMailMsgId mailBoxId; // id not essential here + iLiwIf->PublishMailboxIconL( aInstance, 1, KNullIcon, mailBoxId); + // Clean indicator icon + iLiwIf->PublishIndicatorIconL( aInstance, 1, KNullIcon); + // Clean message rows + UpdateEmptyMessagesL( aInstance, 2 ); + UpdateEmptyMessagesL( aInstance, 3 ); + } } } @@ -384,7 +408,7 @@ mailBoxId = iAccountsArray[aMailBoxNumber]->iMailboxId; CFSMailBox* mailbox( NULL ); mailbox = MailClient().GetMailBoxByUidL( mailBoxId ); - + if(mailbox) { mailBoxFound = ETrue; @@ -393,7 +417,7 @@ TBuf accountName; accountName.Append(*iAccountsArray[aMailBoxNumber]->iMailboxName); - + TInt unreadCount(GetUnreadCountL(iAccountsArray[aMailBoxNumber]->iMailboxId)); if ( unreadCount > 0 ) { @@ -403,21 +427,19 @@ CDesCArrayFlat* strings = new CDesCArrayFlat( 1 ); CleanupStack::PushL( strings ); strings->AppendL( accountName ); // replace "%0U" with mailbox name - + CArrayFix* ints = new(ELeave) CArrayFixFlat( 1 ); CleanupStack::PushL( ints ); ints->AppendL( unreadCount ); // replace "%1N" with number of unread messages - - HBufC* mailboxAndCount = StringLoader::LoadLC( R_EMAILWIDGET_TEXT_MAILBOX_AND_MAILCOUNT, + + HBufC* mailboxAndCount = StringLoader::LoadLC( R_EMAILWIDGET_TEXT_MAILBOX_AND_MAILCOUNT, *strings, *ints ); - + iLiwIf->PublishActiveMailboxNameL( aWidgetInstance, - aRowNumber, *mailboxAndCount, - iAccountsArray.Count(), - mailBoxId, folderId); - + aRowNumber, *mailboxAndCount); + CleanupStack::PopAndDestroy(mailboxAndCount); CleanupStack::PopAndDestroy(ints); CleanupStack::PopAndDestroy(strings); @@ -425,12 +447,10 @@ else { // show only mailbox name - + iLiwIf->PublishActiveMailboxNameL( aWidgetInstance, - aRowNumber, accountName, - iAccountsArray.Count(), - mailBoxId, folderId); + aRowNumber, accountName); } } } @@ -438,12 +458,9 @@ { // Publishing empty descriptor for rows that should not contain // anything on widget UI. - iLiwIf->PublishActiveMailboxNameL( aWidgetInstance, + iLiwIf->PublishActiveMailboxNameL( aWidgetInstance, aRowNumber, - KNullDesC, - NULL, - mailBoxId, - folderId ); + KNullDesC); } } @@ -457,7 +474,7 @@ const TInt aMessageNumber, const TInt aRow ) { - FUNC_LOG; + FUNC_LOG; if ( aMailBoxNumber < iAccountsArray.Count() ) { @@ -479,7 +496,7 @@ CleanupStack::PushL( folder ); TInt msgCount = folder->GetMessageCount(); - + if(msgCount<1 || (msgCount == 1 && aRow == 3)) { UpdateEmptyMessagesL( aWidgetInstance, aRow ); @@ -496,22 +513,22 @@ TFSMailDetails details( EFSMsgDataEnvelope ); RArray sorting; CleanupClosePushL( sorting ); - + TFSMailSortCriteria sortCriteria; sortCriteria.iField = EFSMailSortByDate; sortCriteria.iOrder = EFSMailDescending; sorting.Append( sortCriteria ); - // List all or maximum number of messages + // List all or maximum number of messages MFSMailIterator* iterator = folder->ListMessagesL( details, sorting ); - CleanupDeletePushL( iterator ); // standard CleanupStack::PushL does not work with non-C-class pointer - + CleanupDeletePushL( iterator ); // standard CleanupStack::PushL does not work with non-C-class pointer + TFSMailMsgId dummy; iterator->NextL( dummy, aMessageNumber, folderMessages); TInt count (folderMessages.Count()); if(!count || (count == 1 && aRow == 3)) { UpdateEmptyMessagesL( aWidgetInstance, aRow ); - + CleanupStack::PopAndDestroy( iterator ); CleanupStack::PopAndDestroy( &sorting ); CleanupStack::PopAndDestroy( &folderMessages ); @@ -527,6 +544,8 @@ // Get sender information TBuf sender( NULL ); + TBuf subject( NULL ); + subject.Append(msg->GetSubject()); CFSMailAddress* fromAddress = msg->GetSender(); if ( fromAddress ) { @@ -539,20 +558,21 @@ sender.Append(fromAddress->GetEmailAddress()); } } - - // Get message time and format it correctly + + // Get message time and format it correctly TTime msgTime = msg->GetDate(); HBufC* timeString( NULL ); timeString = GetMessageTimeStringL( msgTime ); - CleanupDeletePushL( timeString ); - - // Publish message details - PublishMessageL( aWidgetInstance, + CleanupDeletePushL( timeString ); + + // Publish message details + PublishMessageL( aWidgetInstance, *msg, sender, + subject, *timeString, aRow ); - + CleanupStack::PopAndDestroy( timeString ); CleanupStack::PopAndDestroy( msg ); CleanupStack::PopAndDestroy( iterator ); @@ -575,43 +595,43 @@ // Get current local time TTime currentTime; currentTime.HomeTime(); - + // Get universal time offset and add it to message time - TLocale locale; + TLocale locale; TTimeIntervalSeconds universalTimeOffset( locale.UniversalTimeOffset() ); - aMessageTime += universalTimeOffset; - + aMessageTime += universalTimeOffset; + // If daylight saving is on, add one hour offset to message time if ( locale.QueryHomeHasDaylightSavingOn() ) { TTimeIntervalHours daylightSaving( 1 ); aMessageTime += daylightSaving; } - + // Get datetime objects and compare dates TDateTime currentDate = currentTime.DateTime(); TDateTime messageDate = aMessageTime.DateTime(); HBufC* formatString( NULL ); - - if ( currentDate.Year() == messageDate.Year() - && currentDate.Month() == messageDate.Month() + + if ( currentDate.Year() == messageDate.Year() + && currentDate.Month() == messageDate.Month() && currentDate.Day() == messageDate.Day()) { // Message arrived today - formatString = StringLoader::LoadLC( R_QTN_TIME_USUAL_WITH_ZERO ); + formatString = StringLoader::LoadLC( R_QTN_TIME_USUAL_WITH_ZERO ); } else { // Message arrived earlier than today formatString = StringLoader::LoadLC( R_QTN_DATE_WITHOUT_YEAR_WITH_ZERO ); } - + // Format time string using chosen time or date formatString TBuf timeString; TRAP_IGNORE( aMessageTime.FormatL( timeString, formatString->Des() ) ); CleanupStack::PopAndDestroy( formatString ); // If format fails, result is empty - + HBufC* result = timeString.Alloc(); TPtr ptr = result->Des(); AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr ); @@ -625,7 +645,8 @@ // --------------------------------------------------------- // void CMailCpsHandler::PublishMessageL( TInt aWidgetInstance, CFSMailMessage& aMessage, - const TDesC& aSenderName, const TDesC& aTime, TInt aRow ) + const TDesC& aSenderName, const TDesC& aSubject, + const TDesC& aTime, TInt aRow ) { FUNC_LOG; @@ -633,6 +654,7 @@ iLiwIf->PublishMailboxIconL( aWidgetInstance, aRow, GetMailIcon( &aMessage ), msgId ); iLiwIf->PublishMailDetailL( aWidgetInstance, aRow, aSenderName, ESender ); + iLiwIf->PublishMailDetailL( aWidgetInstance, aRow, aSubject, ESubject ); iLiwIf->PublishMailDetailL( aWidgetInstance, aRow, aTime, ETime ); } @@ -644,16 +666,22 @@ void CMailCpsHandler::UpdateEmptyMessagesL( const TInt aWidgetInstance, const TInt aRow ) { - FUNC_LOG; - + FUNC_LOG; + TFSMailMsgId mailBoxId; // id not essential here - + iLiwIf->PublishMailDetailL( aWidgetInstance, aRow, KNullDes, ESender); + iLiwIf->PublishMailDetailL( + aWidgetInstance, + aRow, + KNullDes, + ESubject); + iLiwIf->PublishMailboxIconL( aWidgetInstance, aRow, @@ -662,66 +690,42 @@ iLiwIf->PublishMailDetailL( aWidgetInstance, - aRow, + aRow, KNullDes, ETime); } -/* -// --------------------------------------------------------- -// CMailCpsHandler::UpdateConnectStateL -// --------------------------------------------------------- -// -void CMailCpsHandler::UpdateConnectStateL( const TInt aMailBoxNumber, const TInt aRowNumber ) - { - FUNC_LOG; - if ( aMailBoxNumber < iAccountsArray.Count() ) - { - TFSMailMsgId mailBoxId; - mailBoxId = iAccountsArray[aMailBoxNumber]->iMailboxId; - CFSMailBox* mailbox( NULL ); - mailbox = MailClient().GetMailBoxByUidL( mailBoxId ); - if(mailbox) - { - iLiwIf->PublishConnectIconL(mailbox->GetMailBoxStatus(), aRowNumber); - } - } - else - { - iLiwIf->PublishConnectIconL( EFSMailBoxOffline, aRowNumber ); - } - } -*/ + // --------------------------------------------------------- // CMailCpsHandler::UpdateMailBoxIconL // --------------------------------------------------------- // -void CMailCpsHandler::UpdateMailBoxIconL( const TInt aMailBoxNumber, +void CMailCpsHandler::UpdateMailBoxIconL( const TInt aMailBoxNumber, const TInt aWidgetInstance, const TInt aRowNumber ) { FUNC_LOG; - + TFSMailMsgId mailBoxId; // id required only for getting branded mailbox icon - + if ( aMailBoxNumber < iAccountsArray.Count() ) { mailBoxId = iAccountsArray[aMailBoxNumber]->iMailboxId; - iLiwIf->PublishMailboxIconL( aWidgetInstance, + iLiwIf->PublishMailboxIconL( aWidgetInstance, aRowNumber, EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account, mailBoxId); } else - { + { iLiwIf->PublishMailboxIconL( aWidgetInstance, aRowNumber, KNullIcon, mailBoxId); } } - + // --------------------------------------------------------- // CMailCpsHandler::UpdateIndicatorIconL // --------------------------------------------------------- // -void CMailCpsHandler::UpdateIndicatorIconL( const TInt aMailBoxNumber, +void CMailCpsHandler::UpdateIndicatorIconL( const TInt aMailBoxNumber, const TInt aWidgetInstance, const TInt aRowNumber ) @@ -731,51 +735,35 @@ if ( aMailBoxNumber < iAccountsArray.Count() ) { TFSMailMsgId mailBoxId; - mailBoxId = iAccountsArray[aMailBoxNumber]->iMailboxId; - + mailBoxId = iAccountsArray[aMailBoxNumber]->iMailboxId; + if ( iSettings->GetNewMailState( mailBoxId ) ) { iLiwIf->PublishIndicatorIconL( aWidgetInstance, aRowNumber, EMbmCmailhandlerpluginQgn_stat_message_mail_uni ); } - + else if( !IsOutboxEmptyL(mailBoxId) ) { iLiwIf->PublishIndicatorIconL( aWidgetInstance, - aRowNumber, + aRowNumber, EMbmCmailhandlerpluginQgn_indi_cmail_outbox_msg); } else - { + { iLiwIf->PublishIndicatorIconL( aWidgetInstance, aRowNumber, KNullIcon); } } else - { + { iLiwIf->PublishIndicatorIconL( aWidgetInstance, aRowNumber, KNullIcon); - } + } } - -/* -// --------------------------------------------------------- -// CMailCpsHandler::ClearMessageTimeL -// --------------------------------------------------------- -// -void CMailCpsHandler::ClearMessageTimeL( const TInt aRowNumber ) - { - FUNC_LOG; - - iLiwIf->PublishMailDetailL( - aRowNumber, - KNullDes, - ETime); - } -*/ // --------------------------------------------------------- // CMailCpsHandler::CapabilitiesToContinueL @@ -830,7 +818,7 @@ { case TFSEventNewMailbox: { -// HandleNewMailboxEventL( aMailbox ); + HandleNewMailboxEventL( aMailbox ); break; } case TFSEventMailboxRenamed: @@ -845,12 +833,6 @@ UpdateFullL(); break; } - case TFSEventMailboxSettingsChanged: - { -// HandleMailboxDeletedEventL( aMailbox ); -// HandleNewMailboxEventL( aMailbox ); - break; - } case TFSEventNewMail: { HandleNewMailEventL( aMailbox, aParam1, aParam2 ); @@ -863,20 +845,10 @@ UpdateFullL(); break; } - case TFSEventMailChanged: - { - HandleMailChangedEventL( aMailbox, aParam1, aParam2 ); - break; - } - case TFSEventNewFolder: - { - HandleNewFolderEventL( aMailbox, aParam1, aParam2 ); - break; - } default: { break; - } + } } } @@ -887,40 +859,10 @@ void CMailCpsHandler::HandleNewMailboxEventL( const TFSMailMsgId aMailbox ) { FUNC_LOG; - - // Check that max mailbox count is not already reached - const TInt iiMax( iAccountsArray.Count() ); - if( iiMax >= iSettings->MaxMailboxCount() ) + if (iWaitingForNewMailbox) { - return; - } - - // Check that mailbox is not already in widget - for ( TInt ii = 0; ii < iiMax; ii++ ) - { - if( iAccountsArray[ii]->iMailboxId.Id() == aMailbox.Id() ) - { - return; - } + iSettings->AssociateWidgetToSetting( iWaitingForNewMailbox->Des(), aMailbox ); } - - CFSMailBox* mailbox( NULL ); - mailbox = MailClient().GetMailBoxByUidL( aMailbox ); - if ( !mailbox ) - { - return; // nothing that could be done - } - else - { - CleanupStack::PushL( mailbox ); - CMailMailboxDetails* mailboxDetails = CreateMailboxDetailsL( *mailbox ); - CleanupStack::PushL( mailboxDetails ); - iAccountsArray.AppendL( mailboxDetails ); - CleanupStack::Pop( mailboxDetails ); - CleanupStack::PopAndDestroy( mailbox ); - } - - iSettings->AddMailboxL( aMailbox ); } // --------------------------------------------------------- @@ -980,15 +922,15 @@ TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2 ) { FUNC_LOG; - + iSettings->ToggleWidgetNewMailIconL( ETrue, aMailbox ); - + // Basic assertions if ( !aParam1 || !aParam2 ) { User::Leave( KErrArgument ); } - + // Find mailbox instance from array CMailMailboxDetails* mailbox = FindMailboxDetails( aMailbox ); if ( !mailbox ) @@ -1030,7 +972,7 @@ { msgId = (*newEntries)[ii]; - msg = MailClient().GetMessageByUidL( + msg = MailClient().GetMessageByUidL( aMailbox, *parentFolder, (*newEntries)[ii], EFSMsgDataEnvelope ); if ( !msg ) { @@ -1053,7 +995,7 @@ CleanupStack::PopAndDestroy( msg ); continue; } - + CMailMessageDetails* messageDetails = CMailMessageDetails::NewL( msg->GetMessageId(), mailbox, @@ -1091,17 +1033,17 @@ { User::Leave( KErrArgument ); } - + // Find correct mailbox CMailMailboxDetails* mailbox = FindMailboxDetails( aMailbox ); if ( !mailbox ) { - // + // CleanupStack::PopAndDestroy( entries ); // return; } - + const TInt iiMax( entries->Count() ); const TInt jjMax( mailbox->iMessageDetailsArray.Count() ); // Loop through entries in the array @@ -1129,26 +1071,6 @@ } // --------------------------------------------------------- -// CMailCpsHandler::HandleMailChangedEventL -// --------------------------------------------------------- -// -void CMailCpsHandler::HandleMailChangedEventL( - TFSMailMsgId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/ ) - { - FUNC_LOG; - } - -// --------------------------------------------------------- -// CMailCpsHandler::HandleNewFolderEventL -// --------------------------------------------------------- -// -void CMailCpsHandler::HandleNewFolderEventL( - TFSMailMsgId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/ ) - { - FUNC_LOG; - } - -// --------------------------------------------------------- // CMailCpsHandler::GetUnreadCountL // --------------------------------------------------------- // @@ -1159,7 +1081,7 @@ TInt unread (0); mailbox = MailClient().GetMailBoxByUidL( aMailbox ); if(mailbox) - { + { TFSMailMsgId folderId( mailbox->GetStandardFolderId( EFSInbox ) ); // Check that folder is correct CFSMailFolder* folder = MailClient().GetFolderByUidL( aMailbox, folderId ); @@ -1168,11 +1090,11 @@ return KErrNotFound; } CleanupStack::PushL( folder ); - + unread = folder->GetUnreadCount(); CleanupStack::PopAndDestroy( folder ); - + if (unread > KMaxUnreadCount) { unread = KMaxUnreadCount; @@ -1193,7 +1115,7 @@ TInt unseen (0); mailbox = MailClient().GetMailBoxByUidL( aMailbox ); if(mailbox) - { + { TFSMailMsgId folderId( mailbox->GetStandardFolderId( EFSInbox ) ); // Check that folder is correct CFSMailFolder* folder = MailClient().GetFolderByUidL( aMailbox, folderId ); @@ -1202,11 +1124,11 @@ return KErrNotFound; } CleanupStack::PushL( folder ); - + unseen = folder->GetUnseenCount(); CleanupStack::PopAndDestroy( folder ); - + if (unseen > KMaxUnreadCount) { unseen = KMaxUnreadCount; @@ -1228,7 +1150,7 @@ TInt msgCount(0); mailbox = MailClient().GetMailBoxByUidL( aMailbox ); if(mailbox) - { + { TFSMailMsgId folderId( mailbox->GetStandardFolderId( EFSOutbox ) ); // Check that folder is correct CFSMailFolder* folder = MailClient().GetFolderByUidL( aMailbox, folderId ); @@ -1237,7 +1159,7 @@ return KErrNotFound; } CleanupStack::PushL( folder ); - + msgCount = folder->GetMessageCount(); if ( msgCount<1 ) @@ -1245,37 +1167,40 @@ CleanupStack::PopAndDestroy( folder ); return ret; } - + TFSMailDetails details( EFSMsgDataEnvelope ); RArray sorting; CleanupClosePushL( sorting ); TFSMailSortCriteria sortCriteria; sortCriteria.iField = EFSMailDontCare; sortCriteria.iOrder = EFSMailDescending; - sorting.Append( sortCriteria ); + sorting.Append( sortCriteria ); // List all or maximum number of messages MFSMailIterator* iterator = folder->ListMessagesL( details, sorting ); - CleanupStack::PopAndDestroy( &sorting ); + CleanupStack::PopAndDestroy( &sorting ); CleanupDeletePushL( iterator ); - + RPointerArray messages; CleanupClosePushL( messages ); - TInt amount( msgCount ); - iterator->NextL( TFSMailMsgId(), amount, messages ); - - for (TInt i = 0; i < msgCount; i++) + iterator->NextL( TFSMailMsgId(), msgCount, messages ); + + TInt arrayCount(messages.Count()); + for (TInt i = 0; i < arrayCount; i++) { - TFSMailMsgId msgId = messages[0]->GetMessageId(); + TFSMailMsgId msgId = messages[i]->GetMessageId(); CFSMailMessage* msg( NULL ); msg = MailClient().GetMessageByUidL( aMailbox, folderId, msgId, EFSMsgDataEnvelope ); - CleanupDeletePushL( msg ); - TFSMailMsgId mailboxId = msg->GetMailBoxId(); - CleanupStack::PopAndDestroy( msg ); - - if (mailboxId == aMailbox) + if (msg) { - ret = EFalse; - break; + CleanupDeletePushL( msg ); + TFSMailMsgId mailboxId = msg->GetMailBoxId(); + CleanupStack::PopAndDestroy( msg ); + + if (mailboxId == aMailbox) + { + ret = EFalse; + break; + } } } @@ -1330,14 +1255,14 @@ // ----------------------------------------------------------------------------- TInt CMailCpsHandler::GetUnreadMsgIcon( CFSMailMessage* aMsg ) { - FUNC_LOG; + FUNC_LOG; TInt icon(EMbmCmailhandlerpluginQgn_indi_cmail_unread); // Unread calendar invitation if ( aMsg->IsFlagSet( EFSMsgFlag_CalendarMsg )) { icon = GetUnreadCalMsgIcon( aMsg ); - } + } else // Normal message icons { // Check whether msg has attachment or not @@ -1371,10 +1296,10 @@ else { icon = EMbmCmailhandlerpluginQgn_indi_cmail_unread_attach_low_prio; - } + } } else // Normal priority, has attachments - { + { if ( aMsg->IsFlagSet( EFSMsgFlag_Answered ) ) { icon = EMbmCmailhandlerpluginQgn_indi_cmail_unread_replied_attach; @@ -1389,7 +1314,7 @@ } } } - + else // No attachments { if ( aMsg->IsFlagSet( EFSMsgFlag_Important )) // High priority, no attachments @@ -1405,7 +1330,7 @@ else { icon = EMbmCmailhandlerpluginQgn_indi_cmail_unread_high_prio; - } + } } else if ( aMsg->IsFlagSet( EFSMsgFlag_Low ) ) // Low priority, no attachments { @@ -1420,10 +1345,10 @@ else { icon = EMbmCmailhandlerpluginQgn_indi_cmail_unread_low_prio; - } + } } else // Normal priority, no attachments - { + { if ( aMsg->IsFlagSet( EFSMsgFlag_Answered ) ) { icon = EMbmCmailhandlerpluginQgn_indi_cmail_unread_replied; @@ -1433,7 +1358,7 @@ icon = EMbmCmailhandlerpluginQgn_indi_cmail_unread_forwarded; } } - } + } } return icon; } @@ -1443,7 +1368,7 @@ // ----------------------------------------------------------------------------- TInt CMailCpsHandler::GetReadMsgIcon( CFSMailMessage* aMsg ) { - FUNC_LOG; + FUNC_LOG; TInt icon(EMbmCmailhandlerpluginQgn_indi_cmail_read); if ( aMsg->IsFlagSet( EFSMsgFlag_CalendarMsg )) @@ -1468,7 +1393,7 @@ else { icon = EMbmCmailhandlerpluginQgn_indi_cmail_read_attach_high_prio; - } + } } else if ( aMsg->IsFlagSet( EFSMsgFlag_Low ) ) // Low priority, has attachments { @@ -1483,10 +1408,10 @@ else { icon = EMbmCmailhandlerpluginQgn_indi_cmail_read_attach_low_prio; - } + } } else // Normal priority, has attachments - { + { if ( aMsg->IsFlagSet( EFSMsgFlag_Answered ) ) { icon = EMbmCmailhandlerpluginQgn_indi_cmail_read_replied_attach; @@ -1498,8 +1423,8 @@ else { icon = EMbmCmailhandlerpluginQgn_indi_cmail_read_attach; - } - } + } + } } else // No attachments { @@ -1516,7 +1441,7 @@ else { icon = EMbmCmailhandlerpluginQgn_indi_cmail_read_high_prio; - } + } } else if ( aMsg->IsFlagSet( EFSMsgFlag_Low ) ) // Low priority, no attachments { @@ -1531,10 +1456,10 @@ else { icon = EMbmCmailhandlerpluginQgn_indi_cmail_read_low_prio; - } + } } else // Normal priority, no attachments - { + { if ( aMsg->IsFlagSet( EFSMsgFlag_Answered ) ) { icon = EMbmCmailhandlerpluginQgn_indi_cmail_read_replied; @@ -1554,42 +1479,42 @@ // ----------------------------------------------------------------------------- TInt CMailCpsHandler::GetUnreadCalMsgIcon( CFSMailMessage* aMsg ) { - FUNC_LOG; + FUNC_LOG; TInt icon(0); if ( aMsg->IsFlagSet( EFSMsgFlag_Important ) ) { if ( aMsg->IsFlagSet( EFSMsgFlag_Attachments ) ) { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_attachments_high_prio ; + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_attachments_high_prio ; } - else + else { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_high_prio; - } + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_high_prio; + } } else if ( aMsg->IsFlagSet( EFSMsgFlag_Low ) ) { if ( aMsg->IsFlagSet( EFSMsgFlag_Attachments ) ) { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_attachments_low_prio; + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_attachments_low_prio; } else { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_low_prio; - } + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_low_prio; + } } else { if ( aMsg->IsFlagSet( EFSMsgFlag_Attachments ) ) { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_attachments; + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread_attachments; } else { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread; - } - } + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_unread; + } + } return icon; } @@ -1599,42 +1524,42 @@ // ----------------------------------------------------------------------------- TInt CMailCpsHandler::GetReadCalMsgIcon( CFSMailMessage* aMsg ) { - FUNC_LOG; + FUNC_LOG; TInt icon(0); if ( aMsg->IsFlagSet( EFSMsgFlag_Important ) ) { if ( aMsg->IsFlagSet( EFSMsgFlag_Attachments ) ) { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_attachments_high_prio ; + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_attachments_high_prio ; } - else + else { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_high_prio; - } + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_high_prio; + } } else if ( aMsg->IsFlagSet( EFSMsgFlag_Low ) ) { if ( aMsg->IsFlagSet( EFSMsgFlag_Attachments ) ) { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_attachments_low_prio; + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_attachments_low_prio; } else { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_low_prio; - } + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_low_prio; + } } else { if ( aMsg->IsFlagSet( EFSMsgFlag_Attachments ) ) { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_attachments; + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read_attachments; } else { - icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read; - } - } + icon = EMbmCmailhandlerpluginQgn_indi_cmail_calendar_event_read; + } + } return icon; } @@ -1660,7 +1585,7 @@ { return EFalse; } - + return ETrue; } @@ -1688,7 +1613,7 @@ // void CMailCpsHandler::LaunchWidgetSettingsL( const TDesC& aContentId ) { - FUNC_LOG; + FUNC_LOG; RApaLsSession appArcSession; CleanupClosePushL( appArcSession ); @@ -1713,11 +1638,12 @@ commandLine->SetCommandL( EApaCommandRun ); commandLine->SetProcessEnvironmentL(process); CleanupStack::PopAndDestroy(commandLine); - + process.Resume(); - process.Close(); - - CleanupStack::PopAndDestroy(&appArcSession); + process.Close(); + + CleanupStack::PopAndDestroy(&appArcSession); + SetWaitingForNewMailbox( aContentId ); } // ----------------------------------------------------------------------------- @@ -1734,7 +1660,7 @@ { TUid mailBoxUid; mailBoxUid.iUid = nativeMailboxId; - + TFSMailMsgId mailBoxId; mailBoxId.SetId(mailBoxUid.iUid); TUid pluginUid; @@ -1745,14 +1671,14 @@ if ( mailBox ) { TFSMailMsgId inboxFolderId = mailBox->GetStandardFolderId( EFSInbox ); - + TMailListActivationData tmp; tmp.iFolderId = inboxFolderId; tmp.iMailBoxId = mailBoxId; const TPckgBuf pkgOut( tmp ); - iEnv->EikAppUi()->ActivateViewL( TVwsViewId(KUidEmailUi, KMailListId), - KStartListWithFolderId, - pkgOut); + iEnv->EikAppUi()->ActivateViewL( + TVwsViewId(KUidEmailUi, KMailListId), + KStartListWithFolderIdFromHomeScreen, pkgOut); } CleanupStack::PopAndDestroy( mailBox ); } @@ -1763,16 +1689,17 @@ } // ----------------------------------------------------------------------------- -// CMailCpsHandler::LaunchEmailUIL() +// CMailCpsHandler::LaunchEmailWizardL() // ----------------------------------------------------------------------------- // -void CMailCpsHandler::LaunchEmailWizardL() +void CMailCpsHandler::LaunchEmailWizardL( const TDesC& aContentId ) { FUNC_LOG; TUid viewUid(KNullUid); - iEnv->EikAppUi()->ActivateViewL( TVwsViewId(KUidWizardApp, KUidEmailWizardView), - viewUid, + iEnv->EikAppUi()->ActivateViewL( TVwsViewId(KUidWizardApp, KUidEmailWizardView), + viewUid, KNullDesC8); + SetWaitingForNewMailbox( aContentId ); } // ----------------------------------------------------------------------------- @@ -1807,32 +1734,6 @@ return plugin; } -// ----------------------------------------------------------------------------- -// CMailCpsHandler::UpdateExtAccountL -// ----------------------------------------------------------------------------- -// -void CMailCpsHandler::UpdateExtAccountL( const TDesC& aContentId ) - { - FUNC_LOG; - // Look up plugin that handles this account - CMailPluginProxy* plugin = GetExtPluginL( aContentId ); - if ( plugin ) - { - // Publish its data - plugin->UpdateAccountL( aContentId ); - } - } - -// --------------------------------------------------------------------------- -// CMailCpsHandler::AssociateWidget -// --------------------------------------------------------------------------- -// -TBool CMailCpsHandler::AssociateWidgetToSetting( const TDesC& aContentId ) - { - FUNC_LOG; - return iSettings->AssociateWidgetToSetting( aContentId ); - } - // --------------------------------------------------------------------------- // CMailCpsHandler::DissociateWidget // --------------------------------------------------------------------------- @@ -1840,13 +1741,7 @@ void CMailCpsHandler::DissociateWidgetFromSettingL( const TDesC& aContentId ) { FUNC_LOG; - //Do not dissociate if device is shutting down - TInt status( 0 ); - RProperty::Get( KPSUidStartup, KPSGlobalSystemState, status ); - if (status != ESwStateShuttingDown) - { - iSettings->DissociateWidgetFromSettingL( aContentId ); - } + iSettings->DissociateWidgetFromSettingL( aContentId ); } // --------------------------------------------------------------------------- @@ -1886,78 +1781,50 @@ { TUid implUid = plugins[i]->ImplementationUid(); INFO_1("Instantiating plugin %d", implUid.iUid); - EmailInterface::CEmailObserverPlugin* plugin = + EmailInterface::CEmailObserverPlugin* plugin = EmailInterface::CEmailObserverPlugin::NewL( implUid, this ); MEmailData& data( plugin->EmailDataL() ); totalMailboxCount += data.MailboxesL().Count(); } - + CleanupStack::PopAndDestroy(); // plugins return totalMailboxCount; } // --------------------------------------------------------------------------- -// CMailCpsHandler::ManualAccountSelectionL -// --------------------------------------------------------------------------- -// -void CMailCpsHandler::ManualAccountSelectionL( const TDesC& aContentId ) - { - FUNC_LOG; - - if ( FirstBootL() ) - { - if (!iSettings->FindFromContentIdListL(aContentId)) - { - iSettings->AddToContentIdListL(aContentId); - } - } - else - { - if (!iSettings->FindFromContentIdListL(aContentId)) - { - iSettings->AddToContentIdListL(aContentId); - if ( TotalMailboxCountL() ) - { - LaunchWidgetSettingsL(aContentId); - } - else - { - LaunchEmailWizardL(); - } - } - } - } - -// --------------------------------------------------------------------------- -// CMailCpsHandler::FirstBootL -// --------------------------------------------------------------------------- -TBool CMailCpsHandler::FirstBootL() - { - FUNC_LOG; - TInt value( 0 ); - TBool ret(EFalse); - - CRepository* repository(NULL); - - TRAPD( err, repository = CRepository::NewL( KCRUidStartup ) ); - if ( err == KErrNone ) - { - err = repository->Get( KStartupFirstBoot, value ); - } - delete repository; - - if (!value) - { - ret = ETrue; - } - - return ret; - } - -// --------------------------------------------------------------------------- // CMailCpsHandler::EmailObserverEvent // --------------------------------------------------------------------------- void CMailCpsHandler::EmailObserverEvent( EmailInterface::MEmailData& /*aData*/ ) { + FUNC_LOG; // Nothing to do } + +// ----------------------------------------------------------------------------- +// CMailCpsHandler::SetWaitingForNewMailbox() +// ----------------------------------------------------------------------------- +// +void CMailCpsHandler::SetWaitingForNewMailbox( const TDesC& aContentId ) + { + FUNC_LOG; + HBufC* newCid = aContentId.Alloc(); + if ( newCid ) + { + delete iWaitingForNewMailbox; + iWaitingForNewMailbox = newCid; + } + } + +// ----------------------------------------------------------------------------- +// CMailCpsHandler::CleanWaitingForNewMailbox() +// ----------------------------------------------------------------------------- +// +void CMailCpsHandler::CleanWaitingForNewMailbox() + { + FUNC_LOG; + if (iWaitingForNewMailbox) + { + delete iWaitingForNewMailbox; + iWaitingForNewMailbox = NULL; + } + } diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -67,7 +67,6 @@ for (TInt i=0; iDes(), *setupEmail, - KKeySetupText, KTriggerWizard8, NULL, mailBoxId, folderId); - + KKeySetupText, KTriggerWizard8); + PublishImageL( iInstIdList[instance]->Des(), KContTypeSetupIcon, KKeySetupIcon, EMbmCmailhandlerpluginQgn_prop_cmail_new_mailbox, EMbmCmailhandlerpluginQgn_prop_cmail_new_mailbox_mask, - mailBoxId); + mailBoxId, + KNullDes); + + PublishImageL( + iInstIdList[instance]->Des(), + KContTypeSetupBrandIcon1, + KKeySetupBrandIcon1, + EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account, + EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account_mask, + mailBoxId, + KSetupBrand1); + + PublishImageL( + iInstIdList[instance]->Des(), + KContTypeSetupBrandIcon2, + KKeySetupBrandIcon2, + EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account, + EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account_mask, + mailBoxId, + KSetupBrand2); + + PublishImageL( + iInstIdList[instance]->Des(), + KContTypeSetupBrandIcon3, + KKeySetupBrandIcon3, + EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account, + EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account_mask, + mailBoxId, + KSetupBrand3); + + PublishImageL( + iInstIdList[instance]->Des(), + KContTypeSetupBrandIcon4, + KKeySetupBrandIcon4, + EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account, + EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account_mask, + mailBoxId, + KSetupBrand4); CleanupStack::PopAndDestroy(setupEmail); } @@ -207,10 +243,7 @@ void CMailCpsIf::PublishActiveMailboxNameL( const TInt aInstance, const TInt aRowNumber, - const TDesC& aMailboxName, - const TInt aMailBoxCount, - TFSMailMsgId aMailBoxId, - TFSMailMsgId aFolderId) + const TDesC& aMailboxName) { FUNC_LOG; @@ -229,8 +262,7 @@ KPubId, contentType, iInstIdList[aInstance]->Des(), aMailboxName, - textKey, KTriggerEmailUi8, aMailBoxCount, - aMailBoxId, aFolderId); + textKey, KTriggerEmailUi8); } // --------------------------------------------------------------------------- @@ -255,7 +287,7 @@ TFSMailMsgId dummy; PublishDescriptorL( KPubId, contentType, iInstIdList[aInstance]->Des(), - aMailboxName, textKey, aAction, 0, dummy, dummy ); + aMailboxName, textKey, aAction); } // --------------------------------------------------------------------------- @@ -289,7 +321,8 @@ key, aIcon, aIcon + 1, - mailBoxId); + mailBoxId, + KNullDes); } // --------------------------------------------------------------------------- @@ -323,7 +356,8 @@ key, aIcon, aIcon + 1, - aMailBoxId); + aMailBoxId, + KNullDes); } // --------------------------------------------------------------------------- @@ -410,7 +444,11 @@ { contentType.Copy(KContTypeTime); } - else + else if (aDetail == ESubject) + { + contentType.Copy(KContTypeSubjectText); + } + else //aDetail == ESender { contentType.Copy(KContTypeBodyText); } @@ -421,6 +459,10 @@ { textKey.Copy(KKeyTime); } + else if (aDetail == ESubject) + { + textKey.Copy(KKeySubjectText); + } else { textKey.Copy(KKeyBodyText); @@ -434,8 +476,7 @@ KPubId, contentType, iInstIdList[aInstance]->Des(), aText, - textKey, KNullDes8, NULL, - mailBoxId, folderId); + textKey, KNullDes8); } // --------------------------------------------------------------------------- @@ -478,10 +519,7 @@ const TDesC& aContentId, const TDesC& aTextToAdd, const TDesC& aKey, - const TDesC8& aTrigger, - const TInt /*aMailBoxCount*/, - TFSMailMsgId /*aMailBoxId*/, - TFSMailMsgId /*aFolderId*/ ) + const TDesC8& aTrigger) { FUNC_LOG; @@ -545,7 +583,8 @@ const TDesC8& aKey, TInt aBitmapId, TInt aBitmapMaskId, - TFSMailMsgId aMailBoxId ) + TFSMailMsgId aMailBoxId, + const TDesC& aBrandId ) { FUNC_LOG; @@ -558,9 +597,19 @@ TBuf brandedIconIds(KNullDesC); MFSMailBrandManager& brandManager = iMailCpsHandler->MailClient().GetBrandManagerL(); - TRAPD( err, error = brandManager.GetGraphicIdsL( EFSMailboxIcon, aMailBoxId, brandedIconIds ) ); + TInt err2(KErrNone); + if (aBrandId.Length() > 0) + { + TRAPD( err, error = brandManager.GetGraphicIdsL( EFSMailboxIcon, aBrandId, brandedIconIds ) ); + err2 = err; + } + else + { + TRAPD( err, error = brandManager.GetGraphicIdsL( EFSMailboxIcon, aMailBoxId, brandedIconIds ) ); + err2 = err; + } - if ( err == KErrNone && error == KErrNone ) + if ( err2 == KErrNone && error == KErrNone ) { iconIds.Copy(KMifPrefix); iconIds.Append(brandedIconIds); @@ -677,11 +726,10 @@ // Create the action map for publisher registry CLiwDefaultMap* mapAction = CLiwDefaultMap::NewLC(); - mapAction->InsertL(KActive, TLiwVariant( KData )); - mapAction->InsertL(KDeActive, TLiwVariant( KData )); + mapAction->InsertL(KPluginStartup, TLiwVariant( KData )); + mapAction->InsertL(KPluginShutdown, TLiwVariant( KData )); mapAction->InsertL(KSuspend, TLiwVariant( KData )); mapAction->InsertL(KResume, TLiwVariant( KData )); - mapAction->InsertL(KInactive, TLiwVariant( KData )); publishermap->InsertL( KActionMap, TLiwVariant(mapAction)); CleanupStack::PopAndDestroy(mapAction); @@ -798,7 +846,7 @@ TInt mapslistcount (changeMapsList->Count()); - for (TInt i = 0; i < changeMapsList->Count(); ++i) + for (TInt i = 0; i < mapslistcount; ++i) { if ( changeMapsList->AtL(i, variant) ) { @@ -817,16 +865,7 @@ { variant.Get(trigger ); } - if (trigger.Compare(KInactive16) == 0) - { - // Homescreen page is about to change. - // Ignore next deactivate event of this particular widget instance. - HBufC* cid = contentid.AllocLC(); - TInt widgetInstance = FindWidgetInstanceId(cid->Des()); - iInactive[widgetInstance] = ETrue; - CleanupStack::PopAndDestroy( cid ); - } - else if (trigger.Compare(KSuspend16) == 0) + if (trigger.Compare(KSuspend16) == 0) { // Publishing to homescreen suspended. HBufC* cid = contentid.AllocLC(); @@ -844,43 +883,36 @@ TInt widgetInstance = FindWidgetInstanceId(cid->Des()); PublishSetupWizardL(widgetInstance); iMailCpsHandler->UpdateMailboxesL(widgetInstance, cid->Des()); - iMailCpsHandler->UpdateExtAccountL( cid->Des() ); // Widget visible on the homescreen. Publishing allowed. iAllowedToPublish[widgetInstance] = ETrue; - iInactive[widgetInstance] = EFalse; CleanupStack::PopAndDestroy( cid ); } - else if (trigger.Compare(KActive16) == 0) + else if (trigger.Compare(KPluginStartup16) == 0) { - // Widget added to homescreen (or already on the screen when boot completes). + // Widget added to homescreen HBufC* cid = contentid.AllocLC(); - TInt widgetInstance = FindWidgetInstanceId(cid->Des()); - if (iInactive[widgetInstance]) + iInstIdList.AppendL( contentid.AllocL() ); + if ( iMailCpsHandler->TotalMailboxCountL() ) { - iInactive[widgetInstance] = EFalse; + iMailCpsHandler->LaunchWidgetSettingsL(cid->Des()); } else { - iInstIdList.AppendL( contentid.AllocL() ); - iMailCpsHandler->ManualAccountSelectionL(cid->Des()); + iMailCpsHandler->LaunchEmailWizardL(cid->Des()); } CleanupStack::PopAndDestroy( cid ); } - else if (trigger.Compare(KDeActive16) == 0) + else if (trigger.Compare(KPluginShutdown16) == 0) { // Widget removed from homescreen. - HBufC* cid = contentid.AllocLC(); - ResetPublishedDataL( cid->Des() ); - TInt widgetInstance = FindWidgetInstanceId(cid->Des()); + HBufC* cid = contentid.AllocLC(); + ResetPublishedDataL( cid->Des() ); + iMailCpsHandler->DissociateWidgetFromSettingL( cid->Des() ); + TInt widgetInstance = FindWidgetInstanceId( cid->Des() ); if (widgetInstance != KErrNotFound ) - { - if (!iInactive[widgetInstance]) - { - iMailCpsHandler->DissociateWidgetFromSettingL( cid->Des() ); - iInstIdList.Remove(widgetInstance); - } - iAllowedToPublish[widgetInstance] = EFalse; - } + { + iInstIdList.Remove(widgetInstance); + } CleanupStack::PopAndDestroy( cid ); } else if (trigger.Compare(KTriggerEmailUi) == 0) @@ -893,17 +925,17 @@ ( trigger.Compare(KSettings16) == 0)) { // If no accounts are created launch email wizard - // otherwice launch widget settings app + // otherwice launch widget settings app + HBufC* cid = contentid.AllocLC(); if ( iMailCpsHandler->TotalMailboxCountL() ) { - HBufC* cid = contentid.AllocLC(); iMailCpsHandler->LaunchWidgetSettingsL(cid->Des()); - CleanupStack::PopAndDestroy( cid ); } else { - iMailCpsHandler->LaunchEmailWizardL(); + iMailCpsHandler->LaunchEmailWizardL(cid->Des()); } + CleanupStack::PopAndDestroy( cid ); } } } diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -443,18 +443,20 @@ // CMailCpsSettings::AssociateWidgetToSetting // --------------------------------------------------------------------------- // -TBool CMailCpsSettings::AssociateWidgetToSetting( const TDesC& aContentId ) +void CMailCpsSettings::AssociateWidgetToSetting( const TDesC& aContentId, + const TFSMailMsgId aMailbox ) { FUNC_LOG; - TBool alreadyAssociated(ETrue); - - if (!IsAlreadyAssociated(aContentId)) + TInt setId (GetSettingToAssociate(aContentId)); + if (setId>=0) { - TUint32 key (GetSettingToAssociate()); - iCenRep->Set( key, aContentId ); - alreadyAssociated = EFalse; + TInt id = aMailbox.Id(); + TUid pluginId = aMailbox.PluginId(); + TInt pId(pluginId.iUid); + iCenRep->Set( KCMailMailboxIdBase+setId, id ); + iCenRep->Set( KCMailPluginIdBase+setId, pId ); + iCenRep->Set( KCMailWidgetContentIdBase+setId, aContentId ); } - return alreadyAssociated; } // --------------------------------------------------------------------------- @@ -467,8 +469,6 @@ TUint32 key(0); TUint32 mailboxKey(0); - RemoveFromContentIdListL( aContentId ); - for (TInt i = 0; i < KMaxMailboxCount; i++) { TBuf value; @@ -487,6 +487,45 @@ } // --------------------------------------------------------------------------- +// CMailCpsSettings::GetSettingToAssociate +// --------------------------------------------------------------------------- +// +TInt CMailCpsSettings::GetSettingToAssociate( const TDesC& aContentId ) + { + FUNC_LOG; + TInt ret(KErrNotFound); + + for (TInt i = 0; i < KMaxMailboxCount; i++) + { + TBuf value; + TUint32 key(KCMailWidgetContentIdBase+i); + iCenRep->Get( key, value ); + TInt result = value.Compare(aContentId); + if (!result) + { + 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) + { + ret = i; + break; + } + } + } + return ret; + } + +// --------------------------------------------------------------------------- // CMailCpsSettings::GetContentId // --------------------------------------------------------------------------- // @@ -582,52 +621,6 @@ } // --------------------------------------------------------------------------- -// CMailCpsSettings::IsAlreadyAssociated -// --------------------------------------------------------------------------- -// -TBool CMailCpsSettings::IsAlreadyAssociated( const TDesC& aContentId ) - { - FUNC_LOG; - TBool ret(EFalse); - for (TInt i = 0; i < KMaxMailboxCount; i++) - { - TBuf value; - TUint32 key(KCMailWidgetContentIdBase+i); - iCenRep->Get( key, value ); - TInt result = value.Compare(aContentId); - if (!result) - { - ret = ETrue; - break; - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// CMailCpsSettings::GetSettingToAssociate -// --------------------------------------------------------------------------- -// -TUint32 CMailCpsSettings::GetSettingToAssociate() - { - FUNC_LOG; - TUint32 ret(KErrNone); - for (TInt i = 0; i < KMaxMailboxCount; i++) - { - TBuf value; - TUint32 key(KCMailWidgetContentIdBase+i); - iCenRep->Get( key, value ); - TInt result = value.Compare(KDissociated); - if (!result) - { - ret = KCMailWidgetContentIdBase + i; - break; - } - } - return ret; - } - -// --------------------------------------------------------------------------- // CMailCpsSettings::Configuration // --------------------------------------------------------------------------- // @@ -650,77 +643,6 @@ return ret; } -// --------------------------------------------------------------------------- -// CMailCpsSettings::FindFromContentIdListL -// --------------------------------------------------------------------------- -// -TBool CMailCpsSettings::FindFromContentIdListL( const TDesC& aContentId ) - { - FUNC_LOG; - TBool ret(EFalse); - - TBuf cid; - cid.Copy(KStartSeparator); - cid.Append(aContentId); - cid.Append(KEndSeparator); - - TBuf value; - TUint32 key(KCMailContentIdList); - iCenRep->Get( key, value ); - - TInt result = value.Find(cid); - - if (result >= 0) - { - ret = ETrue; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// CMailCpsSettings::AddToContentIdListL -// --------------------------------------------------------------------------- -// -void CMailCpsSettings::AddToContentIdListL( const TDesC& aContentId ) - { - FUNC_LOG; - TBuf value; - - TUint32 key(KCMailContentIdList); - iCenRep->Get( key, value ); - - value.Append(KStartSeparator); - value.Append(aContentId); - value.Append(KEndSeparator); - - iCenRep->Set( key, value ); - } - -// --------------------------------------------------------------------------- -// CMailCpsSettings::RemoveFromContentIdListL -// --------------------------------------------------------------------------- -// -void CMailCpsSettings::RemoveFromContentIdListL( const TDesC& aContentId ) - { - FUNC_LOG; - TBuf cid; - cid.Copy(KStartSeparator); - cid.Append(aContentId); - cid.Append(KEndSeparator); - - TBuf value; - TUint32 key(KCMailContentIdList); - iCenRep->Get( key, value ); - - TInt result = value.Find(cid); - if (result >= 0) - { - value.Delete(result, cid.Length()); - iCenRep->Set( key, value ); - } - } - // ----------------------------------------------------------------------------- // CMailCpsSettings::ToggleWidgetNewMailIconL // ----------------------------------------------------------------------------- diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/src/cmailpluginproxy.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailpluginproxy.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailpluginproxy.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -113,7 +113,6 @@ FUNC_LOG; while ( iAccounts.Count() ) { - ResetAccountL( iAccounts[0]->ContentId() ); delete iAccounts[0]; iAccounts.Remove(0); } @@ -131,7 +130,7 @@ { TFSMailMsgId dummy; iPublisher.PublishMailboxIconL( instId, KNullDesC ); - iPublisher.PublishActiveMailboxNameL( instId, 1, KNullDesC, 0, dummy, dummy ); + iPublisher.PublishActiveMailboxNameL( instId, 1, KNullDesC); iPublisher.PublishIndicatorIconL( instId, 1, KNullIcon ); ResetMessageRowL( instId, 2 ); // 1st message row @@ -238,6 +237,7 @@ TFSMailMsgId dummy; iPublisher.PublishMailboxIconL( aWidgetInstanceId, i+2, KNullIcon, dummy ); iPublisher.PublishMailDetailL( aWidgetInstanceId, i+2, KNullDesC, ESender ); + iPublisher.PublishMailDetailL( aWidgetInstanceId, i+2, KNullDesC, ESubject ); iPublisher.PublishMailDetailL( aWidgetInstanceId, i+2, KNullDesC, ETime ); } } @@ -261,6 +261,7 @@ iPublisher.PublishMailboxIconL( aWidgetInstanceId, aRow, iconId, dummy ); iPublisher.PublishMailDetailL( aWidgetInstanceId, aRow, aMessageData.Sender(), ESender ); + iPublisher.PublishMailDetailL( aWidgetInstanceId, aRow, aMessageData.Subject(), ESubject ); HBufC* timeString = CMailCpsHandler::GetMessageTimeStringL( aMessageData.TimeStamp() ); CleanupStack::PushL( timeString ); iPublisher.PublishMailDetailL( aWidgetInstanceId, aRow, *timeString, ETime ); diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/cmailhandlerplugin/src/fsnotificationhandlerbaseimpl.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/fsnotificationhandlerbaseimpl.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/src/fsnotificationhandlerbaseimpl.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -15,7 +15,7 @@ * */ - +#include // #include "emailtrace.h" #include "cfsmailclient.h" @@ -24,6 +24,9 @@ #include "fsnotificationhandlermgr.h" #include "fsnotificationhandlerbase.h" #include "cmailhandlerpluginpanic.h" +#include "commonemailcrkeys.h" +#include "FreestyleEmailCenRepKeys.h" +#include "FreestyleEmailuiConstants.h" // ======== MEMBER FUNCTIONS ======== @@ -236,7 +239,9 @@ *parentFolder, *newEntries ) ) { - TurnNotificationOn(); + // it doesn't matter if the mailindicator won't get updated + // its better have it not updated compared to a leave + TRAP_IGNORE(MailIndicatorHandlingL(aMailbox)); } } else @@ -254,7 +259,74 @@ } } - +void CFSNotificationHandlerBase::MailIndicatorHandlingL(TFSMailMsgId aMailbox) + { + /** + * There is always a pair of keys for one mailbox + * 1st keys is the plugin id (numberOfMailboxes*2-1) + * 2nd is the mailboxId (numberOfMailboxes*2) + */ + TInt numberOfMailboxes(0); + CRepository* emailRepository = CRepository::NewL( KFreestyleEmailCenRep ); + CleanupStack::PushL(emailRepository); + emailRepository->Get(KNumberOfMailboxesWithNewEmails, numberOfMailboxes); + CRepository* commonEmailRepository = CRepository::NewL( KCmailDataRepository ); + CleanupStack::PushL(commonEmailRepository); + if(numberOfMailboxes != 0) + { + RArray repositoryIds; + CleanupClosePushL(repositoryIds); + TInt tmp(0); + for(TInt i = 1 ; i <= numberOfMailboxes * 2; i++ ) + { + emailRepository->Get(KNumberOfMailboxesWithNewEmails+i, tmp); + repositoryIds.Append(tmp); + } + TInt index = repositoryIds.Find(static_cast(aMailbox.Id())); + // If it is we delete it from the array + if(index != KErrNotFound ) + { + //unless it is the last item, then we don't have to do anything + if(index != (repositoryIds.Count()-1)) + { + repositoryIds.Remove(index); + repositoryIds.Remove(index-1); + // Rearrange the mailbox/mailplugin ids + // in the repository + for(TInt j = 0; j < repositoryIds.Count(); j++) + { + emailRepository->Set(KNumberOfMailboxesWithNewEmails + 1 + j, repositoryIds.operator [](j)); + } + // And write the current mailbox/plugin ids back to repository as the last items + emailRepository->Set(KNumberOfMailboxesWithNewEmails + ( numberOfMailboxes * 2 - 1 ), static_cast(aMailbox.PluginId().iUid)); + emailRepository->Set(KNumberOfMailboxesWithNewEmails + ( numberOfMailboxes * 2 ),static_cast(aMailbox.Id()) ); + commonEmailRepository->Set(KCmailNewEmailDisplayText,MailClient().GetMailBoxByUidL(aMailbox)->GetName()); + } + } + else + { + //Create keys with right values and update the number of mailboxes + numberOfMailboxes += 1; + emailRepository->Set(KNumberOfMailboxesWithNewEmails, numberOfMailboxes); + emailRepository->Create(KNumberOfMailboxesWithNewEmails + (numberOfMailboxes * 2 - 1), static_cast(aMailbox.PluginId().iUid)); + emailRepository->Create(KNumberOfMailboxesWithNewEmails + (numberOfMailboxes * 2), static_cast(aMailbox.Id())); + commonEmailRepository->Set(KCmailNewEmailDisplayText,MailClient().GetMailBoxByUidL(aMailbox)->GetName()); + } + repositoryIds.Reset(); + CleanupStack::PopAndDestroy();//repositoryIds + } + else + { + //Create keys with right values and pudate the number of mailboxes + numberOfMailboxes += 1; + emailRepository->Set(KNumberOfMailboxesWithNewEmails, numberOfMailboxes); + emailRepository->Create(KNumberOfMailboxesWithNewEmails + (numberOfMailboxes * 2 - 1), static_cast(aMailbox.PluginId().iUid)); + emailRepository->Create(KNumberOfMailboxesWithNewEmails + (numberOfMailboxes * 2), static_cast(aMailbox.Id())); + commonEmailRepository->Set(KCmailNewEmailDisplayText,MailClient().GetMailBoxByUidL(aMailbox)->GetName()); + } + CleanupStack::PopAndDestroy(2);// emailRepository, CommonEmailRepository + TurnNotificationOn(); + } CFSMailMessage* CFSNotificationHandlerBase::NewestMsgInFolderL( /*const*/ CFSMailFolder& aFolder ) const diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/inc/FsEmailGlobalDialogsAppUi.h --- a/emailservices/emailserver/inc/FsEmailGlobalDialogsAppUi.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/inc/FsEmailGlobalDialogsAppUi.h Fri Mar 12 15:41:14 2010 +0200 @@ -39,6 +39,8 @@ void BringToForeground(); public: // From base class CAknAppUi + void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination ); + void HandleForegroundEventL(TBool aForeground); void Exit(); private: @@ -60,6 +62,10 @@ * Own. */ CEmailServerShutdownObserver* iShutdownObserver; + + TBool iForeground; + + TBool iForegroundNotTopmost; }; diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/inc/fsnotificationhandlerbase.h --- a/emailservices/emailserver/inc/fsnotificationhandlerbase.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/inc/fsnotificationhandlerbase.h Fri Mar 12 15:41:14 2010 +0200 @@ -216,7 +216,13 @@ */ CFSMailMessage* NewestMsgInFolderL( /*const*/ CFSMailFolder& aFolder ) const; - + + + /* + * function that handles the mailindicator + */ + void MailIndicatorHandlingL(TFSMailMsgId aMailbox); + private: /** diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailserver/src/FsEmailGlobalDialogsAppUi.cpp --- a/emailservices/emailserver/src/FsEmailGlobalDialogsAppUi.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailserver/src/FsEmailGlobalDialogsAppUi.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -1,10 +1,10 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 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" +* under the terms of the License "Eclipse Public License v1.0" * which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * * Initial Contributors: * Nokia Corporation - initial contribution. @@ -27,17 +27,20 @@ // displayable content. We need to keep FSMailServer always on top, because it // is hided from task list so it's not possible switch FSMailServer back to // foreground if user switches to Idle before dismissing the note. -const TCoeWinPriority KFsEmailDialogsWinPriorityActive = ECoeWinPriorityAlwaysAtFront; +// '- 1' is needed for the VKB to work correctly +const TInt KFsEmailDialogsWinPriorityActive = ECoeWinPriorityAlwaysAtFront - 1; // To be used as FSMailServer window group priority when there is no displayable // content. -const TCoeWinPriority KFsEmailDialogsWinPriorityInactive = ECoeWinPriorityNeverAtFront; +const TInt KFsEmailDialogsWinPriorityInactive = ECoeWinPriorityNeverAtFront; const TInt KPosBringToFront = 0; const TInt KPosSendToBack = -1; const TUid KFSMailServerUidAsTUid = { KFSMailServerUid }; +const TInt KDefaultArrayGranularity = 5; + // --------------------------------------------------------------------------- // Constructor @@ -62,11 +65,72 @@ } // --------------------------------------------------------------------------- +// Overriden CAknAppUi::HandleWsEventL +// --------------------------------------------------------------------------- +// +void CFsEmailGlobalDialogsAppUi::HandleWsEventL( const TWsEvent& aEvent, + CCoeControl* aDestination ) + { + FUNC_LOG; + // Updates the foreground flag + CAknAppUi::HandleWsEventL( aEvent, aDestination ); + + RWindowGroup& rwin = iEikonEnv->RootWin(); + + TBool isActive = + ( rwin.OrdinalPriority() == KFsEmailDialogsWinPriorityActive ); + + if ( aEvent.Type() == EEventWindowGroupListChanged && isActive ) + { + RWsSession& ws = iEikonEnv->WsSession(); + + CArrayFixFlat* wgList = + new (ELeave) CArrayFixFlat( KDefaultArrayGranularity ); + + TInt err = ws.WindowGroupList( + KFsEmailDialogsWinPriorityActive, wgList ); + + if ( err == KErrNone ) + { + TBool topmost = ( wgList->Count() > 0 ) && + ( wgList->At( 0 ) == rwin.Identifier() ); + + if ( iForeground && topmost && iForegroundNotTopmost ) + { + // This hack ensures the screen is refreshed when going back + // from the VKB window + SendToBackground(); + BringToForeground(); + } + + // Update this flag all the time when we are active + // The flag is true when VKB window is shown for the password + // query. + iForegroundNotTopmost = ( iForeground && !topmost ); + } + + delete wgList; + wgList = NULL; + } + } + +// --------------------------------------------------------------------------- +// Overriden CAknAppUi::Exit +// --------------------------------------------------------------------------- +// +void CFsEmailGlobalDialogsAppUi::HandleForegroundEventL( TBool aForeground ) + { + FUNC_LOG; + iForeground = aForeground; + } + +// --------------------------------------------------------------------------- // Overriden CAknAppUi::Exit // --------------------------------------------------------------------------- // void CFsEmailGlobalDialogsAppUi::Exit() { + FUNC_LOG; // Cancel shutdown observer as we are already shutting down if( iShutdownObserver ) { @@ -130,8 +194,7 @@ void CFsEmailGlobalDialogsAppUi::BringToForeground() { FUNC_LOG; - // Enable keyboard focus when showing some content - iEikonEnv->RootWin().EnableReceiptOfFocus( ETrue ); + // Bring own application to foreground TApaTaskList taskList( iEikonEnv->WsSession() ); @@ -146,6 +209,11 @@ iEikonEnv->RootWin().SetOrdinalPosition( KPosBringToFront, KFsEmailDialogsWinPriorityActive ); + + iEikonEnv->RootWin().EnableGroupListChangeEvents(); + + // Enable keyboard focus when showing some content + iEikonEnv->RootWin().EnableReceiptOfFocus( ETrue ); } // --------------------------------------------------------------------------- @@ -155,6 +223,7 @@ void CFsEmailGlobalDialogsAppUi::SendToBackground() { FUNC_LOG; + // Send own application to background TApaTaskList taskList( iEikonEnv->WsSession() ); TApaTask task = taskList.FindApp( KFSMailServerUidAsTUid ); @@ -170,6 +239,8 @@ // Disable keyboard focus when not showing any content iEikonEnv->RootWin().EnableReceiptOfFocus( EFalse ); + + iEikonEnv->RootWin().DisableGroupListChangeEvents(); } #ifdef _DEBUG diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/inc/emailservermonitor.h --- a/emailservices/emailservermonitor/inc/emailservermonitor.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/inc/emailservermonitor.h Fri Mar 12 15:41:14 2010 +0200 @@ -27,13 +27,17 @@ #include "emailservermonitorconst.h" +///////////////////////////////////////////////////////////////////////////// +// FORWARD DECLARATIONS +class CEmailShutter; + /** * Class CEmailServerMonitor implements functionality that starts up * EmailServer and monitors it. If EmailServer crashes, then * CEmailServerMonitor restarts it. CEmailServerMonitor also starts up needed * email related 3rd party services after IAD update. */ -NONSHARABLE_CLASS( CEmailServerMonitor ) : public CActive +NONSHARABLE_CLASS( CEmailServerMonitor ) : public CActive, public MEmailServerMonitorTimerCallback { public: // Public construcor and destructor @@ -58,6 +62,21 @@ * Start email server monitoring. */ void Start(); + + /** + * Set pointer to Shutter object + */ + void SetShutter( CEmailShutter* aShutter ); + + /** + * If Restart External Services flag is set to true, then external + * services will be restarted after Email Server is up and running + */ + void SetRestartExternalServicesFlag( TBool aRestartFlag = ETrue ); + +public: // From base class MEmailServerMonitorTimerCallback + + void TimerEventL( CEmailServerMonitorTimer* aTriggeredTimer ); private: // Private constructors /** @@ -123,6 +142,14 @@ EEsmStateRestarting }; + enum TExternalServiceRestartState + { + EEsmEsrStateRestartNotNeeded, + EEsmEsrStateRestartNeeded, + EEsmEsrStateRestartInitiated, + EEsmEsrStateFirstServiceRestarted, + }; + private: // Member variables // A session with the application architecture server @@ -144,6 +171,23 @@ // server has been running succesfully long enough TTime iLastRestartTime; + /** + * Pointer to Shutter + * Not owned + */ + CEmailShutter* iShutter; + + /** + * Should we restart external services after Email Server is up and running + */ + TExternalServiceRestartState iExternalServicesRestartState; + + /** + * Generic timer used to make delayed restart of the external services + * Owned + */ + CEmailServerMonitorTimer* iExternalServiceRestartTimer; + }; diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/inc/emailservermonitor.hrh --- a/emailservices/emailservermonitor/inc/emailservermonitor.hrh Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/inc/emailservermonitor.hrh Fri Mar 12 15:41:14 2010 +0200 @@ -37,5 +37,9 @@ */ #define KAlwaysOnlineEmailPluginUidAsTInt 0x200100BA +/** General Settings application UID + */ +#define KGeneralSettingsAppUidAsTInt 0x100058EC + #endif // EMAILSERVERMONITOR_HRH diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/inc/emailservermonitorutilities.h --- a/emailservices/emailservermonitor/inc/emailservermonitorutilities.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/inc/emailservermonitorutilities.h Fri Mar 12 15:41:14 2010 +0200 @@ -23,6 +23,9 @@ #include #include // TSecureId +// Forward declarations +class CEmailServerMonitorTimer; + const TInt KDefaultTimeToWaitInSeconds = 3; ///////////////////////////////////////////////////////////////////////////// @@ -52,4 +55,93 @@ TBool IsProcessRunning( TSecureId aUid, RProcess* aProcess = NULL ); +/** +* Generic timer's callback +* +* Classes inherited from this one can be used as a callback for the generic +* timer. TimerEvent() is called when the timer elapses. +* +*/ +class MEmailServerMonitorTimerCallback + { +public: + /** + * @param aTriggeredTimer The timer which launched this event. + */ + virtual void TimerEventL( CEmailServerMonitorTimer* aTriggeredTimer ) = 0; + }; + +/** +* Generic timer +* +* Caller gives MEmailServerMonitorTimerCallback inherited pointer as a +* parameter, and that pointer is used as a callback when the timer elapses. +* Timer interval is given as a parameter for the Start function. +* +*/ +class CEmailServerMonitorTimer : public CTimer + { +public: + + /** + * Symbian two-pahse constructor. + * + * @param aCallback Callback class + * @param aPriority Timers priority, EPriorityStandard by default + */ + static CEmailServerMonitorTimer* NewL( + MEmailServerMonitorTimerCallback* aCallback, + const TInt aPriority = CActive::EPriorityStandard ); + + /** + * Symbian two-pahse constructor. + * + * @param aCallback Callback class + * @param aPriority Timers priority, EPriorityStandard by default + */ + static CEmailServerMonitorTimer* NewLC( + MEmailServerMonitorTimerCallback* aCallback, + const TInt aPriority = CActive::EPriorityStandard ); + + /** + * Destructor. + */ + ~CEmailServerMonitorTimer(); + + /** + * Starts the timer with specified interval, or with the default value. + * + * @param aInterval Timer interval as microseconds + */ + void Start( TInt aInterval ); + + /** + * Stops the timer. + */ + void Stop(); + + /** + * CActive object's RunL + */ + void RunL(); + +protected: + /** + * Constructor. + */ + CEmailServerMonitorTimer( MEmailServerMonitorTimerCallback* aCallback, + const TInt aPriority ); + +private: + /** + * 2nd phase constructor. + */ + void ConstructL(); + +private: + /* Pointer to callback class */ + MEmailServerMonitorTimerCallback* iCallback; + }; + + #endif // EMAILSERVERMONITORUTILITIES_H diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/inc/emailshutter.h --- a/emailservices/emailservermonitor/inc/emailshutter.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/inc/emailshutter.h Fri Mar 12 15:41:14 2010 +0200 @@ -258,7 +258,7 @@ * Not owned */ CEmailServerMonitor* iMonitor; - + }; diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/sis/makeEmailServerMonitorSisx.bat --- a/emailservices/emailservermonitor/sis/makeEmailServerMonitorSisx.bat Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/sis/makeEmailServerMonitorSisx.bat Fri Mar 12 15:41:14 2010 +0200 @@ -12,8 +12,7 @@ REM * REM * Contributors: REM * -REM * Description: -REM * Script that creates and signs commonemail sisx packages +REM * Description: Script that creates and signs commonemail sisx packages REM * @echo ################################################# diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/src/emailservermonitor.cpp --- a/emailservices/emailservermonitor/src/emailservermonitor.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/src/emailservermonitor.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -30,9 +30,12 @@ #include "emailservermonitorutilities.h" #include "emailservermonitor.h" #include "emailservermonitorconst.h" +#include "emailshutter.h" const TUint KOneSecondInMicroSeconds = 1000000; +const TInt KExternalServiceRestartDelay = 5 * KOneSecondInMicroSeconds; +const TInt KInstallatioFinishedFlagSettingDelay = 2 * KOneSecondInMicroSeconds; // ======== MEMBER FUNCTION DEFINITIONS ======== @@ -68,6 +71,11 @@ iApaLsSession.Close(); iProcess.Close(); iDelayTimer.Close(); + if( iExternalServiceRestartTimer ) + { + delete iExternalServiceRestartTimer; + iExternalServiceRestartTimer = NULL; + } } /** @@ -75,7 +83,11 @@ * Only NewL can be called */ CEmailServerMonitor::CEmailServerMonitor() - : CActive( EPriorityStandard ), iState( EEsmStateIdle ), iRestarts( 0 ) + : CActive( EPriorityStandard ), + iState( EEsmStateIdle ), + iRestarts( 0 ), + iShutter( NULL ), + iExternalServicesRestartState( EEsmEsrStateRestartNotNeeded ) { FUNC_LOG; } @@ -100,12 +112,70 @@ FUNC_LOG; iLastRestartTime.UniversalTime(); - // Set initializing state and complete self - // -> functionality will continue in RunL + // Initiate delayed restart and set correct state + InitiateDelayedRestart(); iState = EEsmStateInitializing; - TRequestStatus* status = &iStatus; - SetActive(); - User::RequestComplete( status, KErrNone ); + } + +/** + * Set pointer to shutter. + */ +void CEmailServerMonitor::SetShutter( CEmailShutter* aShutter ) + { + iShutter = aShutter; + } + +/** + * Set Restart External Services flag. + */ +void CEmailServerMonitor::SetRestartExternalServicesFlag( TBool aRestartFlag /*= ETrue*/ ) + { + if( aRestartFlag ) + { + iExternalServicesRestartState = EEsmEsrStateRestartNeeded; + } + else + { + iExternalServicesRestartState = EEsmEsrStateRestartNotNeeded; + } + } + +/** + * Called when external service restart timer has expired, so it's time to do + * some starting + */ +void CEmailServerMonitor::TimerEventL( CEmailServerMonitorTimer* /*aTriggeredTimer*/ ) + { + // Shutter is used in all cases, so verify it exists at the beginning + if( iShutter ) + { + switch( iExternalServicesRestartState ) + { + case EEsmEsrStateRestartInitiated: + { + // Restart external services and change state + iShutter->RestartServicesAfterInstallation(); + iExternalServicesRestartState = EEsmEsrStateFirstServiceRestarted; + + // Restart the timer to set the installation finished flag + // with some more delay + iExternalServiceRestartTimer->Start( KInstallatioFinishedFlagSettingDelay ); + } + break; + + case EEsmEsrStateFirstServiceRestarted: + { + // Set the installation finished flag and clear state variable + iShutter->SetPsKeyInstallationFinished(); + iExternalServicesRestartState = EEsmEsrStateRestartNotNeeded; + } + break; + + default: + // Do nothing, shouldn't happen + break; + } + } } /** @@ -208,6 +278,10 @@ iState = EEsmStateIdle; iProcess.LogonCancel( iStatus ); iDelayTimer.Cancel(); + if( iExternalServiceRestartTimer ) + { + iExternalServiceRestartTimer->Cancel(); + } } /** @@ -241,6 +315,24 @@ INFO( "Initiating new delayed restart" ); InitiateDelayedRestart(); } + // If Email server is up and running and iExternalServicesRestartState + // flag is set, initiate delayed restart of external services + else if( iExternalServicesRestartState == EEsmEsrStateRestartNeeded ) + { + // Once restart is initiated, update the state + iExternalServicesRestartState = EEsmEsrStateRestartInitiated; + + // Create the timer and start it + TInt timerError = KErrNone; + if( !iExternalServiceRestartTimer ) + { + TRAP( timerError, iExternalServiceRestartTimer = CEmailServerMonitorTimer::NewL( this ) ); + } + if( timerError == KErrNone ) + { + iExternalServiceRestartTimer->Start( KExternalServiceRestartDelay ); + } + } } break; diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/src/emailservermonitorutilities.cpp --- a/emailservices/emailservermonitor/src/emailservermonitorutilities.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/src/emailservermonitorutilities.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -105,3 +105,113 @@ return EFalse; } + + +///////////////////////////////////////////////////////////////////////////////// +// GENERIC TIMER +// + +// ----------------------------------------------------------------------------- +// CEmailServerMonitorTimer::NewL +// NewL function. Returns timer object. +// ----------------------------------------------------------------------------- +// +CEmailServerMonitorTimer* CEmailServerMonitorTimer::NewL( + MEmailServerMonitorTimerCallback* aCallback, + const TInt aPriority ) + { + FUNC_LOG; + CEmailServerMonitorTimer* self = NewLC( aCallback, aPriority ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CEmailServerMonitorTimer::NewL +// NewL function. Returns timer object. +// ----------------------------------------------------------------------------- +// +CEmailServerMonitorTimer* CEmailServerMonitorTimer::NewLC( + MEmailServerMonitorTimerCallback* aCallback, + const TInt aPriority ) + { + FUNC_LOG; + CEmailServerMonitorTimer* self = new (ELeave) CEmailServerMonitorTimer( aCallback, aPriority ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CEmailServerMonitorTimer::NewL +// NewL function. Returns timer object. +// ----------------------------------------------------------------------------- +// +void CEmailServerMonitorTimer::ConstructL() + { + FUNC_LOG; + CTimer::ConstructL(); + CActiveScheduler::Add( this ); + } + +// ----------------------------------------------------------------------------- +// CEmailServerMonitorTimer::~CEmailServerMonitorTimer +// D'tor +// ----------------------------------------------------------------------------- +// +CEmailServerMonitorTimer::~CEmailServerMonitorTimer() + { + FUNC_LOG; + Cancel(); + iCallback = NULL; + } + +// ----------------------------------------------------------------------------- +// CEmailServerMonitorTimer::CEmailServerMonitorTimer +// C'tor +// ----------------------------------------------------------------------------- +// +CEmailServerMonitorTimer::CEmailServerMonitorTimer( + MEmailServerMonitorTimerCallback* aCallback, + const TInt aPriority ) + : CTimer( aPriority ), + iCallback( aCallback ) + { + } + +// ----------------------------------------------------------------------------- +// CEmailServerMonitorTimer::RunL +// Timer trigger function. +// ----------------------------------------------------------------------------- +// +void CEmailServerMonitorTimer::RunL() + { + FUNC_LOG; + if ( iCallback ) + { + iCallback->TimerEventL( this ); + } + } + +// ----------------------------------------------------------------------------- +// CEmailServerMonitorTimer::Start +// Timer starting function. +// ----------------------------------------------------------------------------- +// +void CEmailServerMonitorTimer::Start( TInt aInterval ) + { + FUNC_LOG; + Cancel(); + After( TTimeIntervalMicroSeconds32( aInterval ) ); + } + +// ----------------------------------------------------------------------------- +// CEmailServerMonitorTimer::Stop +// Timer stopping function +// ----------------------------------------------------------------------------- +// +void CEmailServerMonitorTimer::Stop() + { + FUNC_LOG; + Cancel(); + } diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/src/emailshutter.cpp --- a/emailservices/emailservermonitor/src/emailshutter.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/src/emailshutter.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -46,46 +46,47 @@ // UI Applications to be closed const TUid KApplicationsToClose[] = { - KFSEmailUiUid, // Freestyle Email UI - { SettingWizardUidAsTInt }, // TP Wizard - { KMceAppUid }, // MCE - { KPhoneBookUid }, // Phonebook 1 & 2 - { KCalendarAppUid1 } // Calendar + KFSEmailUiUid, // Freestyle Email UI + { SettingWizardUidAsTInt }, // TP Wizard + { KMceAppUid }, // MCE + { KPhoneBookUid }, // Phonebook 1 & 2 + { KCalendarAppUid1 }, // Calendar + { KGeneralSettingsAppUidAsTInt }, // General settings }; // Applications that should not be closed. Should include only system // applications that free the email resources by some other means. const TUid KApplicationsNotToBeClosed[] = { - { AI_SID_AIFW_EXE }, // HomeScreen - { AI_UID3_AIFW_COMMON }, // HomeScreen + { AI_SID_AIFW_EXE }, // HomeScreen + { AI_UID3_AIFW_COMMON }, // HomeScreen }; // Non-UI clients that need to be closed const TUid KOtherClientsToClose[] = { - { KPcsServerProcessUidAsTInt }, // PCS server - { FSMailServerUidAsTInt }, // FSMailServer + { KPcsServerProcessUidAsTInt }, // PCS server + { FSMailServerUidAsTInt }, // FSMailServer }; // Plugin processes that need to be closed const TUid KPluginProcessesToClose[] = { // MfE plugin - { 0x20012BEE }, // KUidEasStartup - { 0x20012BEC }, // KUidEasTarmAccess - { 0x20012BD4 }, // KEasLogSenderServer - { 0x20012BE6 }, // KUidEasServer + { 0x20012BEE }, // KUidEasStartup + { 0x20012BEC }, // KUidEasTarmAccess + { 0x20012BD4 }, // KEasLogSenderServer + { 0x20012BE6 }, // KUidEasServer // Oz plugin - { 0x2002136A }, // monitor - { 0x20021367 }, // server + { 0x2002136A }, // monitor + { 0x20021367 }, // server }; // Message store processes that need to be closed const TUid KMsgStoreProcessesToClose[] = { - { KUidMessageStoreExe }, // MessageStoreExe.exe - { KUidEmailStorePreInstallExe } // MessageStorePreInstallExe + { KUidMessageStoreExe }, // MessageStoreExe.exe + { KUidEmailStorePreInstallExe } // MessageStorePreInstallExe }; const TInt KEmailUidExtraBuffer = 2 * KEmailPlatformApiUidItemSize; diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailservermonitor/src/main.cpp --- a/emailservices/emailservermonitor/src/main.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailservermonitor/src/main.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -76,11 +76,6 @@ // Start email shutter functionality CEmailShutter* shutter = CEmailShutter::NewLC(); - if( mode == EEsmModeRestartAfterInstallation ) - { - shutter->SetPsKeyInstallationFinished(); - shutter->RestartServicesAfterInstallation(); - } shutter->StartObservingShutdownEvent(); CEmailServerMonitor* monitor = NULL; @@ -88,6 +83,11 @@ { // Start email server observing functionality monitor = CEmailServerMonitor::NewLC(); + monitor->SetShutter( shutter ); + if( mode == EEsmModeRestartAfterInstallation ) + { + monitor->SetRestartExternalServicesFlag(); + } monitor->Start(); shutter->SetMonitor( monitor ); } diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/MsgStoreRfsPlugin/inc/RfsMsgStorePlugin.h --- a/emailservices/emailstore/message_store/MsgStoreRfsPlugin/inc/RfsMsgStorePlugin.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/MsgStoreRfsPlugin/inc/RfsMsgStorePlugin.h Fri Mar 12 15:41:14 2010 +0200 @@ -56,7 +56,6 @@ * @return None */ void ExecuteCustomCommandL( const TRfsReason aType, TDesC& aCommand ); - TInt GetDriveL( TDriveNumber& aDrive ); private: CRfsMsgStorePlugin(); diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/MsgStoreRfsPlugin/src/RfsMsgStorePlugin.cpp --- a/emailservices/emailstore/message_store/MsgStoreRfsPlugin/src/RfsMsgStorePlugin.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/MsgStoreRfsPlugin/src/RfsMsgStorePlugin.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -55,8 +55,8 @@ if ( aType == ENormalRfs || aType == EDeepRfs || aType == EInitRfs ) { TUint driveStatus( 0 ); - TDriveNumber drive( EDriveC ); - GetDriveL( drive ); + TDriveNumber drive( EDriveC ); + if ( DriveInfo::GetDriveStatus( iFs, drive, driveStatus ) == KErrNone ) { _LIT( KPrivate, ":\\Private\\" ); @@ -70,9 +70,7 @@ msgStorePath.AppendNum( KUidMessageStoreExe, EHex ); msgStorePath.Append( KPathDelimiter ); CFileMan* fileManager = CFileMan::NewL( iFs ); - // this will recursively delete all files in all directories under the msgStorePath - // but directories under the msgStorePath are not deleted - fileManager->Delete( msgStorePath, CFileMan::ERecurse ); + fileManager->RmDir( msgStorePath ); delete fileManager; } } @@ -116,46 +114,5 @@ User::LeaveIfError( iFs.Connect() ); } -// ----------------------------------------------------------------------------- -// CRfsMsgStorePlugin::GetDriveL(TDriveNumber&) -// ----------------------------------------------------------------------------- -// -TInt CRfsMsgStorePlugin::GetDriveL( TDriveNumber& aDrive ) - { - _LIT16( KDriveToUseFile, "db_drive.cfg" ); - TInt ret( KErrNotFound ); - RFs fs; - if( fs.Connect() == KErrNone ) - { - CleanupClosePushL( fs ); //+fs - TFileName fileName; - _LIT( KCDrive, "C:" ); - _LIT( KPrivate, "Private" ); - fileName.Append(KCDrive()); - fileName.Append( KPathDelimiter ); - fileName.Append(KPrivate); - fileName.Append( KPathDelimiter ); - fileName.AppendNum( KUidMessageStoreExe, EHex ); - fileName.Append( KPathDelimiter ); - fileName.Append( KDriveToUseFile ); - if( BaflUtils::FileExists( fs, fileName ) ) - { - RFileReadStream reader; - if ( reader.Open( fs, fileName, EFileRead ) == KErrNone ) - { - CleanupClosePushL( reader ); //+reader - TUint drive = reader.ReadUint32L(); - CleanupStack::PopAndDestroy( &reader ); //-reader - if(drive <=EDriveZ) - { - aDrive = static_cast( drive ); - ret = KErrNone; - } - } - } - CleanupStack::PopAndDestroy( &fs ); //-fs - } // end if - return ret; - } // END FILE RfsMsgStorePlugin.cpp diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/debuglog/group/bld.inf --- a/emailservices/emailstore/message_store/debuglog/group/bld.inf Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/debuglog/group/bld.inf Fri Mar 12 15:41:14 2010 +0200 @@ -24,7 +24,7 @@ ../inc/debuglogmacros.h |../../../../../inc/debuglogmacros.h ../inc/debuglogconst.h |../../../../../inc/debuglogconst.h ../inc/debuglog.h |../../../../../inc/debuglog.h -../inc/GlobalDebugLoggingOptions.h |../../../../../inc/GlobalDebugLoggingOptions.h +../inc/globaldebugloggingoptions.h |../../../../../inc/globaldebugloggingoptions.h PRJ_MMPFILES DebugLog.mmp diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/debuglog/inc/DebugLogConst.h --- a/emailservices/emailstore/message_store/debuglog/inc/DebugLogConst.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/debuglog/inc/DebugLogConst.h Fri Mar 12 15:41:14 2010 +0200 @@ -162,7 +162,7 @@ #endif // __DEBUG_LOGGING_OPTIONS // Finally, allow the logging options to be overriden at the global level. - #include "GlobalDebugLoggingOptions.h" + #include "globaldebugloggingoptions.h" #endif // DEBUG_USE_PROJECT_LOGGING_OPTIONS diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/server/group/MessageStoreServer.mmp --- a/emailservices/emailstore/message_store/server/group/MessageStoreServer.mmp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/server/group/MessageStoreServer.mmp Fri Mar 12 15:41:14 2010 +0200 @@ -56,7 +56,6 @@ SOURCE MessageStoreSession.cpp SOURCE BackupRestoreObserver.cpp SOURCE ShutdownServer.cpp -SOURCE StoreDriveMonitor.cpp SOURCE ContainerStore.cpp SOURCE ContainerStoreContainersTable.cpp @@ -71,7 +70,7 @@ SOURCE MsgStoreSortResultRowSet.cpp SOURCE MsgStoreStringSortResultRowSet.cpp SOURCE ContainerStoreSortingTable.cpp -SOURCE ContainerStoreSearchResultTable.cpp +SOURCE ContainerStoreSearchResultTable.cpp SOURCE MessageStoreEncryptHandler.cpp SOURCE ContainerStoreMRUAddressTable.cpp SOURCE MsgStoreInMemorySortRowSet.cpp diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/server/inc/MessageStoreServer.h --- a/emailservices/emailstore/message_store/server/inc/MessageStoreServer.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/server/inc/MessageStoreServer.h Fri Mar 12 15:41:14 2010 +0200 @@ -115,7 +115,6 @@ private MCustomBehaviorProvider, private MBackupRestoreObserver, private MImsPointsecObserver, - private MStoreDriveStateObserver, public MPSPropertyWatcherObserver { public: @@ -187,17 +186,11 @@ virtual void PointSecLockStarted(); virtual void PointSecLockEnded(); - - //from MStoreDriveStateObserver - virtual void DriveStateChangedL( TBool aState ); void LockSystem(); void UnlockSystemL(); - void FindBiggestCapacityDriveL( TDriveNumber& aDrive ); - TInt GetDriveL( TDriveNumber& aDrive ); - void SetDriveL( const TDriveNumber aDrive ); - + void SendSystemLockMessage( TInt aEvent ); void TPtrC8ToRBuf16L( const TPtrC8& aPtr8, RBuf& aBuf ) const; @@ -212,10 +205,7 @@ CImsPointsecMonitor* iPointsecMonitor; TBool iWipeAfterBackupRestore; - //monitor the message store drive for mount/unmount - CStoreDriveMonitor* iStoreDriveMonitor; - //True if the message store is locked because drive is unmount - TBool iLockedByDriveMonitor; + TBool iLockedByBackupRestore; TBool iLockedByPointSec; diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/server/inc/bufferedmessagecreator.h --- a/emailservices/emailstore/message_store/server/inc/bufferedmessagecreator.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/server/inc/bufferedmessagecreator.h Fri Mar 12 15:41:14 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: Message creator definition * */ #ifndef BUFFEREDMESSAGECREATOR_H diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/server/src/MessageStoreServer.cpp --- a/emailservices/emailstore/message_store/server/src/MessageStoreServer.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/server/src/MessageStoreServer.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -47,8 +47,6 @@ _LIT8( KNullDescriptor8, "" ); -// To support biggest free drive, we have to get rid of hard-coded C: drive -//const TDriveNumber KDbDriveNumber = EDriveC; _LIT( KDbFilename, "message_store.db" ); @@ -62,8 +60,7 @@ _LIT( KUninstallParameter, "IMS_UNINSTALL" ); _LIT( KImsUninstaller, "IMS Uninstaller" ); _LIT( KUpgradeDetectionFile, "c:\\System\\EsIms\\canary.txt" ); -_LIT16( KDriveToUseFile, "db_drive.cfg" ); -//_LIT( KMsgStorePrivateDir, "c:\\Private\\200029e1\\" ); + //const TChar KColon(':'); @@ -269,7 +266,6 @@ iLockedByBackupRestore = EFalse; iLockedByPointSec = EFalse; - iLockedByDriveMonitor = EFalse; } // end constructor @@ -295,8 +291,6 @@ //must check if PointSec has locked the system or not, //only create the container store if PointSec is NOT locked. - // This will be used to monitor the drive where message store db is located. - iStoreDriveMonitor = CStoreDriveMonitor::NewL( *this ); if ( iPointsecMonitor->IsServiceAllowed() ) { @@ -346,7 +340,6 @@ CMessageStoreServer::~CMessageStoreServer() { delete iUpgradePropertyWatcher; - delete iStoreDriveMonitor; delete iShutdown; delete iMessageStore; iMessageStore = NULL; @@ -438,28 +431,12 @@ void CMessageStoreServer::CreateContainerStoreL() { TDriveNumber drive( EDriveC ); - if ( GetDriveL( drive ) == KErrNotFound ) - { - FindBiggestCapacityDriveL( drive ); - } - //set again the drive to be monitored in case is different than previous - iStoreDriveMonitor->SetDriveL( drive ); - - if ( iStoreDriveMonitor->IsDrivePresent() ) - { iMessageStore = CContainerStore::NewL( KDbFilename, drive, *this, *iShutdown, Priority() - 1); // lower than server - } - else - { - iLockedByDriveMonitor = ETrue; - } - - // monitor the message store drive - iStoreDriveMonitor->WaitForChange(); + } // end CreateContainerStoreL @@ -865,7 +842,7 @@ // change would have been backwards incompatible. TDriveNumber drive( EDriveC ); - if ( GetDriveL( drive ) == KErrNotFound ) drive = EDriveC; + TInt result = CContainerStore::WipeEverything( KDbFilename, drive ); @@ -908,7 +885,7 @@ SendSystemLockMessage( EMsgStoreBackupOrRestoreInProgress ); - if (( !iLockedByPointSec ) && ( !iLockedByDriveMonitor ) ) + if ( !iLockedByPointSec ) { LockSystem(); } @@ -925,7 +902,7 @@ SendSystemLockMessage( EMsgStoreBackupOrRestoreCompleted ); - if (( !iLockedByPointSec ) && ( !iLockedByDriveMonitor ) ) + if ( !iLockedByPointSec ) { TRAP_IGNORE( UnlockSystemL() ); } @@ -943,7 +920,7 @@ { iLockedByPointSec = ETrue; SendSystemLockMessage( EMsgStorePointSecLockStarted ); - if (( !iLockedByBackupRestore ) && ( !iLockedByDriveMonitor ) ) + if ( !iLockedByBackupRestore ) { LockSystem(); } @@ -961,7 +938,7 @@ { iLockedByPointSec = EFalse; SendSystemLockMessage( EMsgStorePointSecLockEnded ); - if ( ( !iLockedByBackupRestore ) && ( !iLockedByDriveMonitor ) ) + if ( !iLockedByBackupRestore ) { TRAP_IGNORE( UnlockSystemL() ); } @@ -1005,7 +982,6 @@ iShutdown->ShutDownNow(); } else if ( ( !iLockedByBackupRestore ) - && ( !iLockedByDriveMonitor ) && ( !iLockedByPointSec ) ) { @@ -1025,145 +1001,7 @@ __LOG_EXIT } -// ========================================================================== -// FUNCTION: FindBiggestCapacityDrive -// To locate the internal drive with the biggest available space. -// ========================================================================== -void CMessageStoreServer::FindBiggestCapacityDriveL( TDriveNumber& aDrive ) - { - __LOG_ENTER( "FindBiggestCapacityDrive" ); - - RFs fs; - TInt driveToUse( 2 ); // set default drive to C: - - if( fs.Connect() == KErrNone ) - { - CleanupClosePushL( fs ); //+fs - TDriveList driveList; - fs.DriveList( driveList ); - TInt64 highest( 0 ); - for (TInt i=0; i highest) - { - driveToUse = i; - highest = driveVolume.iFree; - } - } - } - } - - __LOG_WRITE_FORMAT2_INFO( "Drive #%d to use, free space=%u", driveToUse, highest ); - - CleanupStack::PopAndDestroy( &fs ); //-fs - } // end if - - aDrive = static_cast( driveToUse ); - SetDriveL( aDrive ); // save it - - __LOG_EXIT - } -// ========================================================================== -// FUNCTION: GetDrive -// To find the previously-defined drive to use. KErrNotFound will -// be returned if not config file found -// -// Note : the config file will be loacted in C: drive -// (C:\Private\2000c8d2\db_drive.cfg) -// ========================================================================== -TInt CMessageStoreServer::GetDriveL( TDriveNumber& aDrive ) - { - __LOG_ENTER( "GetDrive" ); - - TInt ret( KErrNotFound ); - - RFs fs; - if( fs.Connect() == KErrNone ) - { - CleanupClosePushL( fs ); //+fs - TFileName fileName; - fs.CreatePrivatePath( EDriveC ); - User::LeaveIfError(fs.PrivatePath( fileName )); - fileName.Append( KDriveToUseFile ); - _LIT( KCDrive, "C:" ); - fileName.Insert( 0, KCDrive() ); - __LOG_WRITE_FORMAT1_INFO( "DriveToUse file=%S", &fileName ); - - if( BaflUtils::FileExists( fs, fileName ) ) - { - RFileReadStream reader; - if ( reader.Open( fs, fileName, EFileRead ) == KErrNone ) - { - CleanupClosePushL( reader ); //+reader - TUint drive = reader.ReadUint32L(); - __LOG_WRITE_FORMAT1_INFO( "previously-defined drive to use : %d", drive ); - CleanupStack::PopAndDestroy( &reader ); //-reader - aDrive = static_cast( drive ); - ret = KErrNone; - } - } - - CleanupStack::PopAndDestroy( &fs ); //-fs - } // end if - - __LOG_EXIT - return ret; - } - -// ========================================================================== -// FUNCTION: SetDrive -// To write the chosen drive info to the config file. -// -// Note : the config file will be loacted in C: drive -// (C:\Private\2000c8d2\db_drive.cfg) -// ========================================================================== -void CMessageStoreServer::SetDriveL( const TDriveNumber aDrive ) - { - __LOG_ENTER( "SetDrive" ); - - TUint drive = static_cast( aDrive ); - - RFs fs; - if( fs.Connect() == KErrNone ) - { - CleanupClosePushL( fs ); //+fs - TFileName fileName; - User::LeaveIfError(fs.PrivatePath( fileName )); - fileName.Append( KDriveToUseFile ); - _LIT( KCDrive, "C:" ); - fileName.Insert( 0, KCDrive() ); - __LOG_WRITE_FORMAT1_INFO( "DriveToUse file=%S", &fileName ) - - RFileWriteStream writer; - if ( writer.Replace( fs, fileName, EFileRead ) == KErrNone ) - { - CleanupClosePushL( writer ); //+writer - writer.WriteUint32L( drive ); - writer.CommitL(); - __LOG_WRITE_FORMAT1_INFO( "writing chosen drive #%d to file", drive ); - CleanupStack::PopAndDestroy( &writer ); //-writer - } - - CleanupStack::PopAndDestroy( &fs ); //-fs - } // end if - - __LOG_EXIT - } // ========================================================================== // FUNCTION: SendSystemLockMessage @@ -1243,34 +1081,5 @@ #endif -//from MStoreDriveStateObserver -void CMessageStoreServer::DriveStateChangedL( TBool aState ) - { - __LOG_ENTER( "DriveStateChangedL" ); - if ( aState ) - { - //drive mounted - if ( iLockedByDriveMonitor ) - { - iLockedByDriveMonitor = EFalse; - if ( ( !iLockedByBackupRestore ) && ( !iLockedByPointSec ) ) - { - UnlockSystemL(); - } - } - } - else - { - //drive unmounted - if ( !iLockedByDriveMonitor ) - { - iLockedByDriveMonitor = ETrue; - if ( ( !iLockedByBackupRestore ) && ( !iLockedByPointSec ) ) - { - LockSystem(); - } - } - } - __LOG_EXIT - } + diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp --- a/emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -21,8 +21,8 @@ // INCLUDES // ======== -#include "MsgStoreTypes.h" -#include "MsgStorePropertyKeys.h" +#include "msgstoretypes.h" +#include "msgstorepropertykeys.h" #include "MessageStoreSession.h" #include "MessageStoreServer.h" diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/server/src/bufferedmessagecreator.cpp --- a/emailservices/emailstore/message_store/server/src/bufferedmessagecreator.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/server/src/bufferedmessagecreator.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: Message creator implementation * */ diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailstore/message_store/server/src/messagestoreutils.cpp --- a/emailservices/emailstore/message_store/server/src/messagestoreutils.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailstore/message_store/server/src/messagestoreutils.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: Message store utilities implementation * */ diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/data/FreestyleEmailUi.rss --- a/emailuis/emailui/data/FreestyleEmailUi.rss Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/data/FreestyleEmailUi.rss Fri Mar 12 15:41:14 2010 +0200 @@ -956,6 +956,8 @@ RESOURCE TBUF r_freestyle_email_ui_viewer_completed { buf=qtn_cmail_header_completed; } RESOURCE TBUF r_freestyle_email_ui_viewer_high_prio { buf=qtn_cmail_header_high_prio; } RESOURCE TBUF r_freestyle_email_ui_viewer_low_prio { buf=qtn_cmail_header_low_prio; } +RESOURCE TBUF r_freestyle_email_ui_images_are_not_displayed { buf=qtn_cmail_viewer_images_not_displayed; } +RESOURCE TBUF r_freestyle_email_ui_display_images { buf=qtn_cmail_viewer_display_images; } // NOTES RESOURCE TBUF r_freestyle_email_delete_mail_note { buf=qtn_fse_delete_mail_note; } @@ -1424,7 +1426,7 @@ //MENU_ITEM { command = EFsEmailUiCmdReadEmail; txt = qtn_fse_message_list_options_read; }, MENU_ITEM { command = EFsEmailUiCmdZoomLevel; txt = qtn_fse_zoom_level_cascade; cascade = r_fsemailui_htmlviewer_submenu_zoom_level;}, MENU_ITEM { command = EFsEmailUiCmdHelp; txt = qtn_options_help; }, - MENU_ITEM { command = EFsEmailUiCmdExit; txt = text_softkey_exit; } + MENU_ITEM { command = EFsEmailUiCmdExit; txt = qtn_options_exit; } }; } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/data/FreestyleEmailUiGlobalSettings.rssi --- a/emailuis/emailui/data/FreestyleEmailUiGlobalSettings.rssi Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/data/FreestyleEmailUiGlobalSettings.rssi Fri Mar 12 15:41:14 2010 +0200 @@ -107,6 +107,13 @@ setting_page_resource = r_global_settings_title_dividers_setting_page_resource; associated_resource = r_global_settings_title_dividers; }, + AVKON_SETTING_ITEM + { + name = qtn_mail_setting_download_images; + identifier = EGlobalSettingsDownloadHTMLImages; + setting_page_resource = r_global_settings_download_html_images_setting_page_resource; + associated_resource = r_global_settings_download_html_images; + }, AVKON_SETTING_ITEM { name = qtn_fse_settings_download_notifications; @@ -123,13 +130,6 @@ }, AVKON_SETTING_ITEM { - name = qtn_fse_settings_download_html_images; - identifier = EGlobalSettingsDownloadHTMLImages; - setting_page_resource = r_global_settings_download_html_images_setting_page_resource; - associated_resource = r_global_settings_download_html_images; - }, - AVKON_SETTING_ITEM - { name = qtn_fse_settings_active_idle; identifier = EGlobalSettingsActiveIdle; } @@ -526,7 +526,7 @@ RESOURCE AVKON_SETTING_PAGE r_global_settings_download_html_images_setting_page_resource { number = -16380; - label = qtn_fse_settings_download_html_images; + label = qtn_mail_setting_download_images; type = EAknCtPopupSettingList; editor_resource_id = r_global_settings_download_html_images_editor_resource_id; } @@ -547,12 +547,12 @@ { AVKON_ENUMERATED_TEXT { - text = qtn_fse_settings_download_html_images_always_ask; + text = qtn_mail_option_alternative_no; value = 1; }, AVKON_ENUMERATED_TEXT { - text = qtn_fse_settings_download_html_images_automatic; + text = qtn_mail_option_alternative_yes; value = 0; } }; @@ -564,11 +564,11 @@ { LBUF { - txt = qtn_fse_settings_download_html_images_always_ask; + txt = qtn_mail_option_alternative_no; }, LBUF { - txt = qtn_fse_settings_download_html_images_automatic; + txt = qtn_mail_option_alternative_yes; } }; } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/data/html/btn_middle.png Binary file emailuis/emailui/data/html/btn_middle.png has changed diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/data/html/email.html --- a/emailuis/emailui/data/html/email.html Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/data/html/email.html Fri Mar 12 15:41:14 2010 +0200 @@ -1,8 +1,7 @@ - - - + + + + - - diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/data/html/email.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/data/html/email.js Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,52 @@ +// Original image sources are stored in this array +var originalImageSources = new Array(); + +// Cid identifier string, if the image name begins with cid: it's shown +var cid = new String("cid:"); + +// Number of images hidden (or replaced with our placeholder image) +var hiddenCount = 0; + +// Replace image sources with our placeholder (if the autoloading is disabled) +function hideImages(frameId) { + if (parent.header_frame.g_autoLoadImages == 0) { + var doc = document.getElementById(frameId).contentDocument; + if (!doc) { + doc = document.frames[frameId].document; + } + for (i = 0; i < doc.images.length; i++) { + var image = doc.images[i]; + originalImageSources.push(image.src); + if (image.src.length > 0 && image.src.indexOf(cid) == -1) { + doc.images[i].src = "../hidden.png"; + hiddenCount++; + } + } + if (hiddenCount == 0) { + parent.header_frame.hideDisplayImagesButton(); + } else { + parent.header_frame.showDisplayImagesButton(); + } + } else { + parent.header_frame.updateHeader(); + } + requestLoadImages(); +} + +// Restore original images sources +function restoreImages(frameId) { + if (parent.header_frame.g_autoLoadImages == 0) { + var doc = document.getElementById(frameId).contentDocument; + if (!doc) { + doc = document.frames[frameId].document; + } + for (i = 0; i < originalImageSources.length; i++) { + doc.images[i].src = originalImageSources[i]; + } + } +} + +// Causes application to reload images +function requestLoadImages() { + location.href = "cmail://loadImages/"; +} diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/data/html/email_rtl.html --- a/emailuis/emailui/data/html/email_rtl.html Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/data/html/email_rtl.html Fri Mar 12 15:41:14 2010 +0200 @@ -5,16 +5,15 @@ { var bodyFrame = document.getElementById("body_frame"); bodyFrame.contentWindow.document.body.dir = "rtl"; - bodyFrame.contentWindow.document.body.align = "right" + bodyFrame.contentWindow.document.body.align = "left" } onload=setEmailBodyDirection; + - - - + + - diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/data/html/header.js --- a/emailuis/emailui/data/html/header.js Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/data/html/header.js Fri Mar 12 15:41:14 2010 +0200 @@ -1,54 +1,79 @@ -function collapseHeader() - { - handleHeaderDisplay( "header_table", "table_initial" ) - parent.document.getElementById('headerBody').rows = '10%,*'; +var collapsed = true; +var displayImagesHidden = false; +var previousPageYOffset = -1; +var setScrollPositionInterval; + +function collapseHeader(sendEvent) { + if (sendEvent) { + location.href = "cmail://collapseHeader/"; + } + collapsed = true; + handleHeaderDisplay( "header_table", "table_initial" ); + updateHeader(); } - -function expandHeader() - { + +function expandHeader(sendEvent) { + if (sendEvent) { + location.href = "cmail://expandHeader/"; + } + collapsed = false; handleHeaderDisplay( "table_initial", "header_table" ) - parent.document.getElementById('headerBody').rows = '40%,*'; + parent.document.getElementById('email_frameSet').rows = "40%, *"; } - -function handleHeaderDisplay( tableToHide, tableToShow ) - { + +function updateHeader() { + var rows = "40%, *"; + 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"; } -var intervalHandler; -function fetchMoreIfAtBottom() - { - var element = parent.body_frame.document.body; +function init(scrollPos) { + if (document.getElementById("table_initial").style.display != "none") { + collapseHeader(false); + } else { + expandHeader(false); + } + window.scrollTo(0, scrollPos); + setScrollPositionInterval = setInterval("updateScrollPosition()", 500); + } + +function displayImagesButtonPressed() { + hideDisplayImagesButton(); + parent.restoreImages("body_frame"); + requestDisplayImages(); +} - if ( element == null ) - { - return; - } - - var viewport = parent.pageYOffset; - var elementHeight = element.offsetHeight; - var elementOffsetTop = element.offsetTop; - var screenHeight = screen.availHeight; - if ( elementOffsetTop + elementHeight - viewport < screenHeight ) - { - location.href = "cmail://body/" + viewport - clearInterval(intervalHandler); - } +function hideDisplayImagesButton() { + document.getElementById("displayImagesTable").style.display = "none"; + displayImagesHidden = true; + updateHeader(); +} + +function showDisplayImagesButton() { + document.getElementById("displayImagesTable").style.display = ""; + displayImagesHidden = false; + updateHeader(); +} + +function requestDisplayImages() { + location.href = "cmail://displayImages/"; +} + +function updateScrollPosition() { + if (previousPageYOffset != parent.pageYOffset) { + previousPageYOffset = parent.pageYOffset; + location.href = "cmail://body/" + previousPageYOffset; } - -function scrollHandler() - { - intervalHandler = setInterval( "fetchMoreIfAtBottom()", 500); - } - -function init(scrollPos) - { - collapseHeader(); - window.scrollTo(0, scrollPos); - //start a scrolling event which will trigger the check of bottom reached... - //this will take care of short document not does not need scrolling - scrollHandler(); - } +} -//onload=init; \ No newline at end of file diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/group/FreestyleEmailUi.mmp --- a/emailuis/emailui/group/FreestyleEmailUi.mmp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/group/FreestyleEmailUi.mmp Fri Mar 12 15:41:14 2010 +0200 @@ -27,7 +27,7 @@ TARGETTYPE exe VENDORID VID_DEFAULT -CAPABILITY CAP_APPLICATION NetworkControl +CAPABILITY CAP_APPLICATION NetworkControl SwEvent UID 0x0 0x2001E277 EPOCHEAPSIZE 0x1000 0x800000 @@ -114,6 +114,7 @@ SOURCE cmailcustomstatuspaneindicators.cpp SOURCE OverlayControl.cpp SOURCE FSHtmlReloadAO.cpp +SOURCE fsemailstatuspaneindicatorhandler.cpp SOURCEPATH ../group @@ -219,3 +220,4 @@ LIBRARY MsgEditorModel.lib LIBRARY touchfeedback.lib LIBRARY ccaclient.lib +LIBRARY pbk2rclengine.lib diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/group/bld.inf --- a/emailuis/emailui/group/bld.inf Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/group/bld.inf Fri Mar 12 15:41:14 2010 +0200 @@ -58,8 +58,10 @@ ../data/html/header.js /epoc32/data/z/private/2001E277/HtmlFile/header.js ../data/html/plus.gif /epoc32/data/z/private/2001E277/HtmlFile/plus.gif ../data/html/minus.gif /epoc32/data/z/private/2001E277/HtmlFile/minus.gif +../data/html/email.js /epoc32/data/z/private/2001E277/HtmlFile/email.js ../data/html/follow_up.png /epoc32/data/z/private/2001E277/HtmlFile/follow_up.png ../data/html/follow_up_complete.png /epoc32/data/z/private/2001E277/HtmlFile/follow_up_complete.png +../data/html/btn_middle.png /epoc32/data/z/private/2001E277/HtmlFile/btn_middle.png ../data/html/todo_high_add.png /epoc32/data/z/private/2001E277/HtmlFile/todo_high_add.png ../data/html/todo_low_add.png /epoc32/data/z/private/2001E277/HtmlFile/todo_low_add.png @@ -71,9 +73,11 @@ ../data/html/header.js /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/header.js ../data/html/plus.gif /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/plus.gif ../data/html/minus.gif /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/minus.gif +../data/html/email.js /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/email.js ../data/html/follow_up.png /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/follow_up.png ../data/html/follow_up_complete.png /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/follow_up_complete.png ../data/html/todo_high_add.png /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/todo_high_add.png +../data/html/btn_middle.png /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/btn_middle.png ../data/html/todo_low_add.png /epoc32/release/winscw/udeb/z/private/2001E277/HtmlFile/todo_low_add.png // make the files ready for urel emulator @@ -83,9 +87,11 @@ ../data/html/header.js /epoc32/release/winscw/urel/z/private/2001E277/HtmlFile/header.js ../data/html/plus.gif /epoc32/release/winscw/urel/z/private/2001E277/HtmlFile/plus.gif ../data/html/minus.gif /epoc32/release/winscw/urel/z/private/2001E277/HtmlFile/minus.gif +../data/html/email.js /epoc32/release/winscw/urel/z/private/2001E277/HtmlFile/email.js ../data/html/follow_up.png /epoc32/release/winscw/urel/z/private/2001E277/follow_up.png ../data/html/follow_up_complete.png /epoc32/release/winscw/urel/z/private/2001E277/follow_up_complete.png ../data/html/todo_high_add.png /epoc32/release/winscw/urel/z/private/2001E277/todo_high_add.png +../data/html/btn_middle.png /epoc32/release/winscw/urel/z/private/2001E277/HtmlFile/btn_middle.png ../data/html/todo_low_add.png /epoc32/release/winscw/urel/z/private/2001E277/todo_low_add.png ../sis/commonemailstub.sis /epoc32/data/z/system/install/commonemailstub.sis diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailCenRepHandler.h --- a/emailuis/emailui/inc/FreestyleEmailCenRepHandler.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailCenRepHandler.h Fri Mar 12 15:41:14 2010 +0200 @@ -100,8 +100,8 @@ /** * Download html images */ - //TInt DownloadHTMLImages(); - //void SetDownloadHTMLImages( TInt aValue ); + TInt DownloadHTMLImages(); + void SetDownloadHTMLImages( TInt aValue ); /** * AttachmentFileTypes enumerator returns diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailCenRepKeys.h --- a/emailuis/emailui/inc/FreestyleEmailCenRepKeys.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailCenRepKeys.h Fri Mar 12 15:41:14 2010 +0200 @@ -68,6 +68,11 @@ const TUint32 KFreestyleWLBMIFFilePathWithTargetFilename = {0x00000122}; const TUint32 KFreestyleWLBMailboxIconID = {0x00000123}; +// used for email indicator popup-note handling +// First key tells how many mailboxes have new emails +const TUint32 KNumberOfMailboxesWithNewEmails = {0x00001000}; + + // // Email local variation flags. Flags are defined in emailvariant.hrh const TUint32 KEmailLocalVariationFlags = {0x0000FFFE}; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiAknStatusIndicator.h --- a/emailuis/emailui/inc/FreestyleEmailUiAknStatusIndicator.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiAknStatusIndicator.h Fri Mar 12 15:41:14 2010 +0200 @@ -11,6 +11,8 @@ * * Contributors: * +* Description: Definition for status indicator +* */ diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiAppui.h --- a/emailuis/emailui/inc/FreestyleEmailUiAppui.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiAppui.h Fri Mar 12 15:41:14 2010 +0200 @@ -119,6 +119,136 @@ class MAknNaviDecoratorObserver; class CCustomStatuspaneIndicators; +/** + * TDisplayImagesCache + * + * Non-persistant cache for display images per message. When user allows images to be downloaded + * for a message, that message's id will be stored into the cache. Later if the message is re-opened + * and it is found in cache, images are allowed to be downloaded no matter what the global setting + * is. Message is added to cache only when the user presses the button, it will be removed from cache + * if the mailbox or the message itself is deleted. + */ +class TDisplayImagesCache + { +public: + + /** + * Destructor + */ + ~TDisplayImagesCache(); + + /** + * Add message to cache. + */ + void AddMessageL( const CFSMailMessageBase& aMsg ); + + /** + * Remove message from cache. + */ + void RemoveMessage( const CFSMailMessageBase& aMsg ); + + /** + * Check if the message is in cache. Returns ETrue if the message is found. + */ + TBool Contains( const CFSMailMessageBase& aMsg ) const; + + /** + * Removes message from cache. + */ + void RemoveMessage( const TFSMailMsgId& aBoxId, const TFSMailMsgId& aMsgId ); + + /** + * Removes mailbox from cache. + */ + void RemoveMailbox( const TFSMailMsgId& aBoxId ); + +private: // internal methods + + /** + * Adds message to cache. + */ + void AddMessageL( const TFSMailMsgId& aBoxId, const TFSMailMsgId& aMsgId ); + + /** + * Check if the message is in cache. Returns ETrue if the message is found. + */ + TBool Contains( const TFSMailMsgId& aBoxId, const TFSMailMsgId& aMsgId ) const; + + /** + * Returns index for given mailbox in cache or KErrNotFound if the mailbox cannot + * be found. + */ + TInt MailBoxIndex( const TFSMailMsgId& aBoxId ) const; + + /** + * Adds new mailbox and returns index in cache. + */ + void AddMailBoxL( const TFSMailMsgId& aBoxId, TInt& aCacheIndex ); + +private: + + /** + * Cache item. + */ + class TItem + { + public: + /** + * Constructor + */ + TItem( const TFSMailMsgId& aBoxId ); + + /** + * Destructor + */ + ~TItem(); + + /** + * Returns ETrue if given message Id is found in this box. + */ + TBool Contains( const TFSMailMsgId& aMsgId ) const; + + /** + * Adds new message Id into box. + */ + void AddMessageL( const TFSMailMsgId& aMsgId ); + + /** + * Removes message from box. + */ + void RemoveMessage( const TFSMailMsgId& aMsgId ); + + /** + * Comparator for TLinearOrder, compares two items + */ + static TInt CompareItem( const TItem& aItem1, const TItem& aItem2 ); + + private: + + /** + * Comparator for TLinearOrder, compares two message Ids + */ + static TInt CompareMsgId( const TFSMailMsgId& aId1, const TFSMailMsgId& aId2 ); + + /** + * Returns index of the message in box or KErrNotFound. + */ + TInt MessageIndex( const TFSMailMsgId& aMsgId ) const; + + private: + + // Mailbox Id + TFSMailMsgId iMailBoxId; + + // Message Ids + RArray iMessageIds; + }; + + // Cache + RArray iCache; + }; + + class CFreestyleEmailUiAppUi : public CAknViewAppUi, public MAlfActionObserver, public MFSMailRequestObserver, @@ -341,12 +471,34 @@ TDisplayMode DisplayMode() const; // - /** + + + + /** * Returns the current flip status. * @return True if the flip is open, false otherwise. */ TBool IsFlipOpen() const; + TDisplayImagesCache& DisplayImagesCache(); + + // Set flag for judging if there is a embedded app in FSEmail. + void SetEmbeddedApp( TBool aEmbeddedApp ); + + // Return embedded app. + TBool EmbeddedApp() const; + + // Set flag for judging if previous app is embedded. + void SetEmbeddedAppToPreviousApp( TBool aEmbeddedApp ); + + // if previous app is embedded. + TBool EmbeddedAppIsPreviousApp() const; + + // Set flag for judging if email editor started from embedded app. + void SetEditorStartedFromEmbeddedApp( TBool aEmbeddedApp ); + + // if email editor started from embedded app. + TBool EditorStartedFromEmbeddedApp() const; public: //from MFSMailEventObserver /** @@ -667,6 +819,8 @@ // Set true, when application is going to be switched to backgound // after the view deactivation. TBool iSwitchingToBackground; + + TDisplayImagesCache iDisplayImagesCache; // For handling the flip state. CFreestyleEmailUiPropertySubscriber* iPropertySubscriber; @@ -674,6 +828,16 @@ /// Focus visibility state TBool iFocusVisible; + TBool iTouchFeedbackCreated; + + // Embedded app flag. + TBool iHasEmbeddedApp; + + // Flag for judging if previous app is embedded app. + TBool iPreviousAppEmbedded; + + // Flag for judging if email editor started from embedded app. + TBool iEditorStartedFromEmbeddedApp; }; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiConstants.h --- a/emailuis/emailui/inc/FreestyleEmailUiConstants.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiConstants.h Fri Mar 12 15:41:14 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 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" @@ -91,7 +91,7 @@ { FsEActionMenuDismissed = -10, FsEActionMenuCasItemSelectedAndExecuted, - + FsEActionMenuOpen = 1, FsEActionMenuOpenCalendarEvent, FsEActionMenuReply, @@ -170,7 +170,7 @@ /** * Settings launch modes */ - enum TMailSettingsLaunchMode + enum TMailSettingsLaunchMode { KMailSettingsOpenMainList = 0x112, KMailSettingsOpenMailboxSettings, @@ -182,11 +182,11 @@ KMailSettingsOpenPluginSettings }; - + /** * editor launch modes */ -enum TEditorLaunchMode +enum TEditorLaunchMode { KEditorCmdCreateNew, KEditorCmdReply, @@ -240,11 +240,12 @@ /** * List launch parameters -* Use iRequestRefresh = ETrue to force list refresh when using +* Use iRequestRefresh = ETrue to force list refresh when using * KStartListReturnToPreviousFolder parameter. */ static const TUid KStartListWithFolderId = { 1 }; static const TUid KStartListReturnToPreviousFolder = { 2 }; +static const TUid KStartListWithFolderIdFromHomeScreen = { 3 }; class TMailListActivationData { @@ -254,8 +255,8 @@ { // no implementation needed } - -public: // data + +public: // data TFSMailMsgId iMailBoxId; TFSMailMsgId iFolderId; TBool iRequestRefresh; @@ -268,15 +269,15 @@ class TMsgViewerActivationData { public: // construction - inline TMsgViewerActivationData() - : iMailBoxId(), - iFolderId(), + inline TMsgViewerActivationData() + : iMailBoxId(), + iFolderId(), iMessageId(), iDetails( EFSMsgDataEnvelope ), iEmbeddedMessage( NULL ) {} - -public: // members + +public: // members TFSMailMsgId iMailBoxId; TFSMailMsgId iFolderId; TFSMailMsgId iMessageId; @@ -301,8 +302,8 @@ public: // construction inline TSearchListActivationData() : iMailBoxId(), iFolderId() {} - -public: // members + +public: // members TFSMailMsgId iMailBoxId; TFSMailMsgId iFolderId; }; @@ -328,7 +329,7 @@ public: // methods // default constructor - inline THtmlViewerActivationData() + inline THtmlViewerActivationData() : iActivationDataType( EMailMessage ), iMailBoxId(), iFolderId(), @@ -338,7 +339,7 @@ iUrl( KNullDesC ), iEmbeddedMessage( NULL ), iEmbeddedMessageMode( EFalse ) {} - + // substitution operator inline THtmlViewerActivationData& operator=( const THtmlViewerActivationData& aAnother ) { @@ -356,8 +357,8 @@ } return *this; } - -public: // members + +public: // members TActivationDataType iActivationDataType; TFSMailMsgId iMailBoxId; // Mail box ID of the message used in activation. TFSMailMsgId iFolderId; // Folder ID of the message used in activation. @@ -377,8 +378,8 @@ public: // construction inline TAttachmentListActivationData() : iMailBoxId(), iFolderId(), iMessageId(), iDetails(EFSMsgDataEnvelope), iEmbeddedMsgMode(EFalse) {} - -public: // members + +public: // members TFSMailMsgId iMailBoxId; TFSMailMsgId iFolderId; TFSMailMsgId iMessageId; @@ -421,11 +422,11 @@ public: // construction inline TFolderListActivationData() : iSourceFolderType( EFSOther ), iCallback( NULL ) {} - -public: // members + +public: // members // Type of the source folder in case of move or copy TFSFolderType iSourceFolderType; - + // Call back used to inform the folder selection query result MFSEmailUiFolderListCallback* iCallback; }; @@ -440,31 +441,31 @@ TFSMailMsgId iFolderId; TFSMailMsgId iMessageId; TFSMailMsgId iMessagePartId; - + public: // methods // default constructor initializes all IDs as NULL ID inline TPartData() : iMailBoxId(), iFolderId(), iMessageId(), iMessagePartId() { } - + // construction with initial data - inline TPartData( TFSMailMsgId aMailBoxId, TFSMailMsgId aFolderId, + inline TPartData( TFSMailMsgId aMailBoxId, TFSMailMsgId aFolderId, TFSMailMsgId aMessageId, TFSMailMsgId aMessagePartId ) - : iMailBoxId( aMailBoxId ), iFolderId( aFolderId ), + : iMailBoxId( aMailBoxId ), iFolderId( aFolderId ), iMessageId( aMessageId ), iMessagePartId( aMessagePartId ) - { + { } - + // construction with initial data except messagePartId inline TPartData( TFSMailMsgId aMailBoxId, TFSMailMsgId aFolderId, TFSMailMsgId aMessageId ) - : iMailBoxId( aMailBoxId ), iFolderId( aFolderId ), + : iMailBoxId( aMailBoxId ), iFolderId( aFolderId ), iMessageId( aMessageId ), iMessagePartId() - { + { } - + // equality operator - inline TBool operator==( const TPartData& aPart ) const + inline TBool operator==( const TPartData& aPart ) const { return ( iMailBoxId==aPart.iMailBoxId && iFolderId==aPart.iFolderId && iMessageId==aPart.iMessageId && iMessagePartId==aPart.iMessagePartId ); @@ -493,7 +494,7 @@ static const TInt KBrowserUid = 0x10008D39; /** - * UID for identifying Message Reader in the taskList + * UID for identifying Message Reader in the taskList */ static const TUid KMessageReaderUid = { 0x10201B00 }; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiContactHandler.h --- a/emailuis/emailui/inc/FreestyleEmailUiContactHandler.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiContactHandler.h Fri Mar 12 15:41:14 2010 +0200 @@ -27,9 +27,7 @@ // CCA Launcher view #include -// -#include "cpbkxremotecontactlookupserviceuicontext.h" -// +#include #include "FreestyleEmailUiCLSListsObserver.h" @@ -382,14 +380,14 @@ void ResetFieldIds(); /* - * LaunchRemoteLookupL * Launches remote lookup UI * @param aQueryString Default query string in user input field * @param aResult Structure containing exit reason and selected item + * @param aLookupMode The mode in which the lookup is performed. */ void DoRemoteLookupL( CFSMailBox& aMailBox, const TDesC& aQueryString, CPbkxRemoteContactLookupServiceUiContext::TResult& aResult, - CPbkxRemoteContactLookupServiceUiContext::TMode aContext = + CPbkxRemoteContactLookupServiceUiContext::TMode aLookupMode = CPbkxRemoteContactLookupServiceUiContext::EModeContactSelector ); // Gets the name and email address from given contact item diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiHtmlViewerContainer.h --- a/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerContainer.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerContainer.h Fri Mar 12 15:41:14 2010 +0200 @@ -25,15 +25,152 @@ #include #include +#include "FreestyleEmailUiAknStatusIndicator.h" #include "FreestyleEmailDownloadInformationMediator.h" +#include "FreestyleEmailCenRepKeys.h" #include "OverlayControl.h" class CFSMailMessage; class CFreestyleEmailUiAppUi; class CFreestyleMessageHeaderURLEventHandler; -class CFreestyleEmailUiAknStatusIndicator; struct TAttachmentData; +class CFsEmailUiHtmlViewerContainer; +class MTouchFeedback; + +/** + * Single key listener + */ +class CEUiHtmlViewerSettingsKeyListener : public CActive + { +public: + /** + * Observer interface for key value changes + */ + class MObserver + { + public: + /** + * Called when key value changes + */ + virtual void KeyValueChangedL( TUint32 aKey ) = 0; + + /** + * Listener can query repository instance using this method. No need + * to create own repository instance OR to store repository reference. + */ + virtual CRepository& Repository() = 0; + }; +public: + /** + * Constructor + */ + CEUiHtmlViewerSettingsKeyListener( MObserver& aObserver, TUint32 aKey ); + + /** + * Destructor + */ + ~CEUiHtmlViewerSettingsKeyListener(); + +private: + /** + * Start listening value changes + */ + void StartListening(); + +private: // from CActive + /** + * @see CActive::RunL + */ + void RunL(); + + /** + * @see CActive::DoCancel + */ + void DoCancel(); + +private: + /** + * Key observer + */ + MObserver& iObserver; + + /** + * Key id + */ + TUint32 iKey; + }; + + +/** + * HTML viewer settings class. + */ +class CEUiHtmlViewerSettings : public CBase, public CEUiHtmlViewerSettingsKeyListener::MObserver + { + +public: + + /** + * Settings observer interface + */ + class MObserver + { + public: + /** + * Called when a setting value has changed. + */ + virtual void ViewerSettingsChangedL( const TUint32 aKey ) = 0; + }; + +public: + + /** + * Static constructor + */ + static CEUiHtmlViewerSettings* NewL( MObserver& aObserver ); + + /** + * Destructor + */ + ~CEUiHtmlViewerSettings(); + + /** + * Boolean value for auto load image setting + */ + TBool AutoLoadImages() const; + +private: + + CEUiHtmlViewerSettings( MObserver& aObserver ); + void ConstructL(); + void AddKeyListenerL( TUint32 aKey ); + void UpdateValue( TUint32 aKey ); + +private: // from CEUiHtmlViewerSettingsKeyListener::MObserver + + /** + * @see CEUiHtmlViewerSettingsKeyListener::MObserver::KeyValueChangedL + */ + void KeyValueChangedL( TUint32 aKey ); + + /** + * @see CEUiHtmlViewerSettingsKeyListener::MObserver::Repository + */ + CRepository& Repository(); + +private: + + enum TFlag + { + EAutoLoadImages = KFreestyleEmailDownloadHTMLImages + }; + + MObserver& iObserver; + CRepository* iRepository; + TBitFlags iFlags; + RPointerArray iKeyListeners; + }; + /** * Html viewer container. */ @@ -43,7 +180,8 @@ public MBrCtlSoftkeysObserver, public MFSEmailDownloadInformationObserver, public MOverlayControlObserver, - public MBrCtlWindowObserver + public MBrCtlWindowObserver, + public CEUiHtmlViewerSettings::MObserver { public: @@ -58,11 +196,12 @@ void LoadContentFromFileL( RFile& aFile ); void LoadContentFromUrlL( const TDesC& aUrl ); void LoadContentFromMailMessageL( CFSMailMessage* aMailMessage, TBool aResetScrollPos=ETrue ); - void ResetContent(); + void ResetContent(const TBool aDisconnect = EFalse); void CancelFetch(); void ClearCacheAndLoadEmptyContent(); // void PrepareForExit(); + void PrepareForMessageNavigation(); // // from base class CCoeControl @@ -116,8 +255,15 @@ void ShowAttachmentDownloadStatusL( TFSProgress::TFSProgressStatus aProgressStatus, const TAttachmentData& aAttachmentData ); TBool AttachmentDownloadStatusVisible(); void HideDownloadStatus(); - void DisplayStatusIndicatorL(); + void DisplayStatusIndicatorL(TInt aDuration = KStatusIndicatorDefaultDuration); +private: // from CEUiHtmlViewerSettings::MObserver + + /** + * @see CEUiHtmlViewerSettings::MObserver::ViewerSettingsChangedL + */ + void ViewerSettingsChangedL( const TUint32 aKey ); + private: // Second phase constructor. @@ -172,8 +318,8 @@ void ConvertToHTML( const TDesC8& aContent, const TDesC& aFileName, CFSMailMessagePart& aHtmlBodyPart ); HBufC8* GetCharacterSetL( CFSMailMessagePart& aHtmlBodyPart ); - TBool IsMessageBodyURL(const TDesC& aUrl); - void CreateHyperlinksFromUrlsL( CBufBase& aSource ); + TBool IsMessageBodyURLL(const TDesC& aUrl); + void CreateHyperlinksFromUrlsL( CBufBase& aSource ); //Returns ETrue of clicking on a link requires a browser to be launched TBool NeedToLaunchBrowserL( const TDesC& aUrl ); //Launch the browser as a standalone app @@ -186,6 +332,7 @@ void HandleWindowCommandL( const TDesC& aTargetName, TBrCtlWindowCommand aCommand ); TRect CalcAttachmentStatusRect(); + void TouchFeedback(); private: // data @@ -222,6 +369,11 @@ //way to keep track of the current image being displayed by the indicator TInt iAttachmentDownloadImageHandle; CFreestyleEmailUiAknStatusIndicator* iStatusIndicator; + CEUiHtmlViewerSettings* iViewerSettings; + + TBool iHeaderExpanded; + // tactile feed back -- not owned + MTouchFeedback* iTouchFeedBack; }; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h --- a/emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h Fri Mar 12 15:41:14 2010 +0200 @@ -40,6 +40,7 @@ #include "FSEmailLauncherItem.h" #include "freestyleemailuimailboxdeleter.h" +#include "FreestyleEmailUiUtilities.h" // FORWARD DECLARATIONS class CBrushAnimation; @@ -63,7 +64,8 @@ public MAlfBitmapProvider, public MFSEmailLauncherItemObserver, public MEikScrollBarObserver, - public MFSEmailUiMailboxDeleteObserver + public MFSEmailUiMailboxDeleteObserver, + public MFSEmailUiGenericTimerCallback { public: enum TDirection @@ -184,6 +186,17 @@ */ void FlipStateChangedL( TBool aKeyboardFlipOpen ); + /** + * Handles application foreground events. When applcation is brought to + * foreground, calls the virtual HandleForegroundEventL() method, which + * can be implemented by subclasses. + */ + virtual void HandleAppForegroundEventL( TBool aForeground ); + + // Fire timer callback + void TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer ); + + // Toolbar private: // from @@ -404,6 +417,9 @@ TFSMailMsgId iMailboxToDelete; CCoeControl* iCoeControl; + + // Timer to postpone the Drawing + CFSEmailUiGenericTimer* iStartupCallbackTimer; }; #endif // __FREESTYLEEMAILUI_MAINGRIDUIVISUALISER_H__ diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiMailListModel.h --- a/emailuis/emailui/inc/FreestyleEmailUiMailListModel.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiMailListModel.h Fri Mar 12 15:41:14 2010 +0200 @@ -24,6 +24,7 @@ // INTERNAL INCLUDES #include "FreestyleEmailUiListModel.h" +#include "fstreelistconstants.h" // FORWARD DECLARATIONS class CFreestyleEmailUiAppUi; @@ -152,6 +153,11 @@ */ void Reset(); + /** + * Returns ItemIds for items under specific node. + */ + void GetItemIdsUnderNodeL( const TFsTreeItemId aNodeId, RFsTreeItemIdList& aMessageIds ) const; + protected: // construction // C++ constructor. diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h --- a/emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h Fri Mar 12 15:41:14 2010 +0200 @@ -31,6 +31,9 @@ // #include "FSEmailBuildFlags.h" +#include +#include + // INTERNAL INCLUDES #include "FreestyleEmailUiViewBase.h" #include "FreestyleEmailUiListVisualiser.h" @@ -38,6 +41,7 @@ #include "FreestyleEmailUiControlBarCallback.h" #include "FreestyleEmailUiUtilities.h" #include "FreestyleEmailUiContactHandlerObserver.h" +#include "cmailboxstateext.h" // FORWARD DECLARATIONS class CAlfTextVisual; @@ -78,6 +82,7 @@ class CEUiEmailListTouchManager; class MFSMailIterator; class CAknStylusPopUpMenu; +template struct TDeleteTask; /** * CMailListModelUpdater @@ -258,7 +263,8 @@ public MFSEmailUiSortListCallback, public MFsTreeListObserver, public MFSEmailUiContactHandlerObserver, - public CMailListModelUpdater::MObserver + public CMailListModelUpdater::MObserver, + public MEmailMailboxState // { friend class CMailListUpdater; @@ -372,7 +378,7 @@ TRect SortButtonRect(); // Update theme colors - void UpdateTheme(); + void UpdateTheme(const TBool aSystemUpdate = ETrue); // Navigation functions, used mainly from viewer TBool IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId, TFSMailMsgId& aFoundNextMsgFolder ) const; @@ -421,6 +427,11 @@ */ void NotifyDateChangedL(); + // Sets aActiveMailboxId and aActiveFolderId from iMailFolder if available + TInt GetActiveFolderId(TFSMailMsgId& aActiveMailboxId, TFSMailMsgId& aActiveFolderId) const; + + // Creates CMailboxStateExtension with this class set as dataprovider + void CreateExtensionL(); private: // from /** @@ -536,7 +547,12 @@ // Message deletion internal functions void DeleteFocusedMessageL(); void DeleteMarkedMessagesL(); - static TInt DoDeleteMarkedMessages( TAny* aSelfPtr ); + void DeleteMessagesUnderNodeL( const TFsTreeItemId aNodeId ); + void ConfirmAndStartDeleteTaskL( TDeleteTask* aTask ); + TBool ConfirmDeleteL( const TInt aItemCount, const TFsTreeItemId aItemId ) const; + static TInt DoExecuteDeleteTask( TAny* aSelfPtr ); + void HandleDeleteTaskL( const RFsTreeItemIdList& aEntries ); + void HandleDeleteTaskLeavingCodeL( const RFsTreeItemIdList& aEntries ); // Helper functions to access model data TFSMailMsgId MsgIdFromIndex( TInt aItemIdx ) const; @@ -703,6 +719,8 @@ private: // Private objects + // Extension to support Ozone-plugin's check for active mailbox + CMailboxStateExtension* iExtension; // Reference to Alf environment CAlfEnv& iEnv; // Mail list updater timer @@ -780,6 +798,7 @@ TBool iShowReplyAll; // Was focus visible in the ListView. + TDeleteTask* iDeleteTask; TBool iLastFocus; //used to prevent Call application execution (on keyup of call button) when call to contact required TBool iConsumeStdKeyYes_KeyUp; @@ -787,6 +806,8 @@ TBool iForceRefresh; // true if message viewer/editor is open to disable background list updates TBool iMailOpened; + // tactile feed back -- not owned + MTouchFeedback* iTouchFeedBack; }; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiUtilities.h --- a/emailuis/emailui/inc/FreestyleEmailUiUtilities.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiUtilities.h Fri Mar 12 15:41:14 2010 +0200 @@ -111,7 +111,7 @@ static void ShowGlobalErrorNoteL( TInt aResourceStringId ); static void ShowGlobalInfoNoteL( TInt aResourceStringId ); - + static void ShowDiscreetInfoNoteL( TInt aResourceStringId ); /** * Creates and shows a local wait note. Caller must pass a member variable pointer * which will hold the created wait note instance. This must NOT be an automatic variable. diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleEmailUiViewBase.h --- a/emailuis/emailui/inc/FreestyleEmailUiViewBase.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleEmailUiViewBase.h Fri Mar 12 15:41:14 2010 +0200 @@ -72,7 +72,7 @@ * foreground, calls the virtual HandleForegroundEventL() method, which * can be implemented by subclasses. */ - void HandleAppForegroundEventL( TBool aForeground ); + virtual void HandleAppForegroundEventL( TBool aForeground ); /** * Inherited classes should override this to react to skin or layout changes @@ -317,6 +317,7 @@ TBool iSendToBackgroundOnDeactivation; // View's active status TBool iViewActive; +protected: // to enable overridning TBool iWasActiveControlGroup; }; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/FreestyleMessageHeaderHTML.h --- a/emailuis/emailui/inc/FreestyleMessageHeaderHTML.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/FreestyleMessageHeaderHTML.h Fri Mar 12 15:41:14 2010 +0200 @@ -37,25 +37,28 @@ RWriteStream& aWriteStream, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality = TBidiText::ELeftToRight); + const TBool aAutoLoadImages, + const TBool aExpanded ); IMPORT_C static void ExportL( CFSMailMessage& aMailMessage, RFile& aFile, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality = TBidiText::ELeftToRight); + const TBool aAutoLoadImages, + const TBool aExpanded ); IMPORT_C static void ExportL( CFSMailMessage& aMailMessage, RFs& aFs, const TPath& aFilePath, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality = TBidiText::ELeftToRight); + const TBool aAutoLoadImages, + const TBool aExpanded ); IMPORT_C static CFreestyleMessageHeaderHTML* NewL( CFSMailMessage& aMailMessage, RWriteStream& aWriteStream, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality = TBidiText::ELeftToRight - ); + const TBool aAutoLoadImages, + const TBool aExpanded ); ~CFreestyleMessageHeaderHTML(); @@ -66,7 +69,8 @@ RWriteStream& aWriteStream, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality); + const TBool aAutoLoadImages, + const TBool aExpanded ); void ConstructL(); void HTMLStartL() const; @@ -77,6 +81,8 @@ void HTMLMetaL() const; void HTMLHeaderEndL() const; + void ExportDisplayImagesTableL() const; + void ExportHTMLBodyL() const; void HTMLBodyStartL() const; void HTMLBodyEndL() const; @@ -152,9 +158,9 @@ RWriteStream& iWriteStream; TInt iVisibleWidth; TInt iScrollPosition; - TBidiText::TDirectionality iDirectionality; + TBool iAutoLoadImages; TBool iMirrorLayout; - + TBool iExpanded; RPointerArray iAttachments; }; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/OverlayControl.h --- a/emailuis/emailui/inc/OverlayControl.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/OverlayControl.h Fri Mar 12 15:41:14 2010 +0200 @@ -24,6 +24,10 @@ #include #include #include + +#include +#include + #include #include "FreestyleEmailUiUtilities.h" @@ -93,6 +97,8 @@ CFbsBitmap* iBitmap; CFbsBitmap* iMask; MOverlayControlObserver* iObserver; + // tactile feed back -- not owned + MTouchFeedback* iTouchFeedBack; }; #endif // CTESTOVERLAYCONTROL_H diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/fsemailstatuspaneindicatorhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/inc/fsemailstatuspaneindicatorhandler.h Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,32 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Handles mailiindicator updating +* +*/ + + +#ifndef __TFSEMAILSTATUSPANEINDICATORHANDLER_H_ +#define __TFSEMAILSTATUSPANEINDICATORHANDLER_H_ + +#include "FreestyleEmailUiConstants.h" + +class TFsEmailStatusPaneIndicatorHandler + { +public: + /* + * Updates the statuspane mailindicator if needed. + */ + static void StatusPaneMailIndicatorHandlingL( TInt aMailBoxId ); + }; +#endif /* __TFSEMAILSTATUSPANEINDICATORHANDLER_H */ diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/ncscomposeviewcontainer.h --- a/emailuis/emailui/inc/ncscomposeviewcontainer.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/ncscomposeviewcontainer.h Fri Mar 12 15:41:14 2010 +0200 @@ -642,6 +642,10 @@ */ virtual TPoint ViewPosition() const; +private: + + void DoUpdateSubjectL(); + private: // data /** diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/ncsheadercontainer.h --- a/emailuis/emailui/inc/ncsheadercontainer.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/ncsheadercontainer.h Fri Mar 12 15:41:14 2010 +0200 @@ -21,9 +21,7 @@ #define __NCSEMAILHEADERUI_H__ #include - -#include "cpbkxremotecontactlookupenv.h" -#include "cpbkxremotecontactlookupserviceuicontext.h" +#include #include "FreestyleEmailUi.hrh" #include "ncsaddressinputfield.h" @@ -324,6 +322,8 @@ void ShowPopupMenuBarL( TBool aShow ); + TInt GetToLineHeight() const; + TBool IsToFieldEmpty() const; TBool IsCcFieldEmpty() const; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/ncspopuplistbox.h --- a/emailuis/emailui/inc/ncspopuplistbox.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/ncspopuplistbox.h Fri Mar 12 15:41:14 2010 +0200 @@ -144,6 +144,8 @@ void SetListItemsFromArrayL(); + TInt RoundToItemHeight(const TInt aPopupHeight) const; + void SetPopupHeight(); void SetScrollBarVisibilityL(); diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/inc/ncssubjectfield.h --- a/emailuis/emailui/inc/ncssubjectfield.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/inc/ncssubjectfield.h Fri Mar 12 15:41:14 2010 +0200 @@ -140,11 +140,6 @@ void UpdateFontSize(); - - void HandleFocusChangedL(); - - static TInt DoHandleFocusChanged( TAny* aSelfPtr ); - // void HandlePointerEventL( const TPointerEvent& aPointerEvent ); // diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/loc/freestyleemailui.loc --- a/emailuis/emailui/loc/freestyleemailui.loc Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/loc/freestyleemailui.loc Fri Mar 12 15:41:14 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 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,7 +35,7 @@ // r:TB9.1 // #define qtn_fse_launcher_settings "Settings" - + // Removed exit and hide // @@ -119,7 +119,7 @@ // #define qtn_fse_message_list_sent "Sent items" -// d:Outbox +// d:Outbox // l:main_sp_fs_ctrlbar_ddmenu_pane_t1 // r:TB9.1 // @@ -132,25 +132,25 @@ #define qtn_fse_message_list_search_divider_inbox "Inbox" // d:Sent items divider in search results screen -// l:list_single_dyc_row_text_pane_t1 +// l:list_single_dyc_row_text_pane_t1 // r:TB9.1 // #define qtn_fse_message_list_search_divider_sent_items "Sent items" // d:Drafts divider in search results screen -// l:list_single_dyc_row_text_pane_t1 +// l:list_single_dyc_row_text_pane_t1 // r:TB9.1 // #define qtn_fse_message_list_search_divider_drafts "Drafts" // d:Outbox divider in search results screen -// l:list_single_dyc_row_text_pane_t1 +// l:list_single_dyc_row_text_pane_t1 // r:TB9.1 // #define qtn_fse_message_list_search_divider_outbox "Outbox" // d:Deleted items -// l:main_sp_fs_ctrlbar_ddmenu_pane_t1 +// l:main_sp_fs_ctrlbar_ddmenu_pane_t1 // r:TB9.1 // #define qtn_fse_message_list_deleted_items "Deleted items" @@ -161,37 +161,37 @@ // #define qtn_fse_viewer_header_subject "Subject:" -// d:Mail viewer header item, see UI spec for more details +// d:Mail viewer header item, see UI spec for more details // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 // #define qtn_fse_viewer_header_from "From:" -// d:Mail viewer header item, see UI spec for more details +// d:Mail viewer header item, see UI spec for more details // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 // #define qtn_fse_viewer_header_to "To:" -// d:Mail viewer header item, see UI spec for more details +// d:Mail viewer header item, see UI spec for more details // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 // #define qtn_fse_viewer_header_cc "Cc:" -// d:Mail viewer header item, see UI spec for more details +// d:Mail viewer header item, see UI spec for more details // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 // #define qtn_fse_viewer_header_bcc "Bcc:" -// d:Mail viewer header item, see UI spec for more details +// d:Mail viewer header item, see UI spec for more details // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 // #define qtn_fse_viewer_header_sent "Sent:" -// d:Mail viewer header item, see UI spec for more details +// d:Mail viewer header item, see UI spec for more details // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 // @@ -230,7 +230,7 @@ // d:Options menu item // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_message_list_options_settings "Settings" // d:Options menu item @@ -334,7 +334,7 @@ // #define qtn_fse_message_list_options_flag "Flag" -// d:Popup list header +// d:Popup list header // l:heading_pane_t1 // r:TB9.1 // @@ -562,7 +562,7 @@ // #define qtn_fse_message_list_options_empty_deleted_items "Empty deleted items" -// d:Submenu item in options menu +// d:Submenu item in options menu // l:list_single_popup_submenu_pane_t1 // r:TB9.1 // @@ -687,200 +687,200 @@ // d:Delete multiple emails query // l:popup_note_window/opt2 // r:TB9.1 -// +// #define qtn_fse_delete_mails_note "Delete %N e-mails?" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_monday_divider "Monday" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_tuesday_divider "Tuesday" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_wednesday_divider "Wednesday" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_thursday_divider "Thursday" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_friday_divider "Friday" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_saturday_divider "Saturday" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_sunday_divider "Sunday" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_today_divider "Today" // d:Date divider text in list // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_date_yesterday_divider "Yesterday" // d:Query note for call sender functionality // l:popup_note_window/opt2 // r:TB9.1 -// +// #define qtn_fse_viewer_call_sender_query "Call sender\n%U?" // d:Message size info to list preview pane. The descriptor argument // d:contains the number and type of the file size (e.g Message size: 2 MB) // l:list_single_dyc_row_text_pane_t1 // r:TB9.1 -// +// #define qtn_fse_list_message_size "Message size: %U" // d:"More" submenu item // l:list_single_pane_t1_cp2/opt3 // r:TB9.1 -// +// #define qtn_fse_message_list_options_more "More" // d:Menu text 'Extra Recepient fields' // l:list_single_pane_t1_cp2/opt3 // r:TB9.2 -// +// #define qtn_fse_editor_options_extra_recepient_fields "Extra Recepient fields" // d:Search selection in options menu // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_message_list_options_search "Search" -// d:"Title bar" header for searhc screen, see UI spec for details +// d:"Title bar" header for searhc screen, see UI spec for details // l:fse_search_header_text_1 // r:TB9.1 -// +// #define qtn_fse_message_list_search "Search:" // d:"Title bar" header for searhc screen, see UI spec for details // l:fse_search_header_text_1 // r:TB9.1 -// +// #define qtn_fse_message_list_search_for "Search for:" // d:"Title bar" header for searhc screen, see UI spec for details // l:fse_search_header_text_1 // r:TB9.1 -// +// #define qtn_fse_message_list_searching "Searching:" // d:"Title bar" header for searhc screen, see UI spec for details // l:fse_search_header_text_1 // r:TB9.1 -// +// #define qtn_fse_message_list_search_results "Search results:" // d:Options menu item // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_message_list_options_stop_search "Stop search" // d:Options menu item // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_message_list_options_new_search "New search" // d:Options menu item // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_message_list_options_connection_info "Connection details" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_options_copy_to_clipboard "Copy to clipboard" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_options_copy_text "Copy text" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_options_create_meeting "Create meeting" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_message_list_options_compose "New message" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_options_call "Call" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_options_create_message "Create message" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_options_create_email "Create mail" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_options_remote_lookup "Search from remote" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_options_open_web "Open in Web" // d:Options menu item // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_intra_fseoptions_open_intra "Open in intranet" // d:Attachments line in text viewer // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_attachments_text "Attachments (%N)" // d:Attachments line in text viewer with the attachment size info. @@ -888,37 +888,37 @@ // d:contains the total size including the type (KB or MB). // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_header_attachments "Attachments (%N) %U" // d:View HTML message line in text viewer // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_view_fetching_content "Fetching content" // d:View HTML message line in text viewer // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_header_view_html_message "View HTML message" // d:Selectable line text in popup selection list // l:list_single_graphic_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_viewer_options_add_to_contacts_create_new "Create new" // d:Selectable line text in popup selection list // l:list_single_graphic_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_viewer_options_add_to_contacts_update_existing "Update existing" // d:Confirmation query. Informs that sync status is in offline mode and asks if user wants to go online. // l:popup_note_window // r:TB9.1 -// +// #define qtn_fse_query_sync_status_go_online "Sync is in offline mode. Go online?" // d:Information note. @@ -989,7 +989,7 @@ // l:popup_note_window/opt2 // r:TB9.1 // -#define qtn_fse_confirm_note_message_copied "Message copied to %U" +#define qtn_fse_confirm_note_message_copied "Message copied to %U" // d:Information note. Informs that messages are copied to a folder. // d:%U is replaced with the name of the folder. @@ -997,30 +997,30 @@ // l:popup_note_window/opt2 // r:TB9.1 // -#define qtn_fse_confirm_note_messages_copied "%N messages copied to %U" +#define qtn_fse_confirm_note_messages_copied "%N messages copied to %U" // d:Confirmation query. Informs that phone number was not found and asks if search from remote should be started. // l:popup_note_window // r:TB9.1 -// +// #define qtn_fse_query_no_phone_number_found_search_server "No number found in Contacts. Search on server?" // d:Information note. // l:popup_note_window/opt2 // r:TB9.1 -// +// #define qtn_fse_error_general_no_phone_number "No phone number available" // d:Information note. // l:popup_note_window/opt2 // r:TB9.1 -// +// #define qtn_fse_error_general_no_email_address "No e-mail address available" // d:Information note. // l:popup_note_window/opt2 // r:TB9.1 -// +// #define qtn_fse_query_no_phone_number_found "No phone number found in Contacts" // d:Information note. Informs that meeting will appear in Calendar after next sync. @@ -1122,79 +1122,79 @@ // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_open "Open" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_reply "Reply" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_reply_all "Reply to all" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_forward "Forward" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_delete "Delete" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_call_sender "Call sender" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_move_to_drafts "Move to Drafts" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_remove_from_calendar "Remove from Cal." // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_accept "Accept" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_tentative "Tentative" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_decline "Decline" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_mark_read "Mark as read" // d:Action menu item // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.1 -// +// #define qtn_fse_action_menu_mark_unread "Mark as unread" // d:Action menu item @@ -1218,31 +1218,31 @@ // d:TO-field label text // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_header_to "To:" // d:CC-field label text // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_header_cc "Cc:" // d:BCC-field label text // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_header_bcc "Bcc:" // d:Subject-field label text // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_header_subject "Subject:" // d:attachments label text // l:list_single_cmail_header_caption_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_header_attachment_label "Attachs.:" // d:attachments field text @@ -1250,7 +1250,7 @@ // d:%U stands for the size of attachment files including the unit (KB or MB). // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_header_attachments "%N attachments (%U)" // d:attachments field single text @@ -1258,211 +1258,211 @@ // d:%1U stands for the size of attachment file. // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_header_single_attachment "%0U (%1U)" // d:Menu text 'Send' // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_options_send "Send" // d:Menu text 'Show Cc' // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_options_show_cc "Show Cc field" // d:Menu text 'Hide Cc' // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_options_hide_cc "Hide Cc field" // d:Menu text 'Show Bcc' // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_options_show_bcc "Show Bcc field" // d:Menu text 'Hide Bcc' // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_options_hide_bcc "Hide Bcc field" // d:Menu text 'Priority' // l:list_single_pane_t1_cp2/opt3 // r:TB9.1 -// +// #define qtn_fse_editor_options_priority "Priority" // d:Menu text priority->'High' // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_options_priority_high "High" // d:Menu text priority->'Normal' // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_options_priority_normal "Normal" // d:Menu text priority->'Low' // l:list_single_popup_submenu_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_options_priority_low "Low" // d:Menu text 'More' // l:list_single_pane_t1_cp2/opt3 // r:TB9.1 -// +// #define qtn_fse_editor_options_more "More" // d:Menu text 'Insert from contacts' // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_options_insert_from_contacts "Add recipient" // d:Menu text save as draft // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_options_save_as_draft "Save to Drafts" // d:Menu text 'Add attachment' // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_options_add_attachment "Add attachment" // d:Menu text 'Remove attachment' // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_options_remove_attachment "Remove attachment" // d:Menu text Remove all attachments // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_options_remove_all_attachments "Remove all attachments" // d:Menu text Flag // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_options_flag "Flag" // d:Save to drafts dialog text // l:popup_note_wait_window // r:TB9.1 -// +// #define qtn_fse_editor_wait_note_saving_to_drafts "Saving message to Drafts" -// d:Reply prefix. -// l:mce_header_field_pane_t1 -// r:TB9.1 -// +// d:Reply prefix. +// l:mce_header_field_pane_t1 +// r:TB9.1 +// #define qtn_ncs_engine_email_reply_prefix_text "RE: " -// d:Forward prefix. +// d:Forward prefix. // l:mce_header_field_pane_t1 // r:TB9.1 -// +// #define qtn_ncs_engine_email_forward_prefix_text "FW: " -// d:To prefix. +// d:To prefix. // l:mce_header_field_pane_t1 // r:TB9.1 -// +// #define qtn_ncs_engine_email_to_text "To: " // d:Cc prefix. // l:mce_header_field_pane_t1 // r:TB9.1 -// +// #define qtn_ncs_engine_email_cc_text "Cc: " -// d:From prefix. +// d:From prefix. // l:mce_header_field_pane_t1 // r:TB9.1 -// +// #define qtn_ncs_engine_email_from_text "From: " // d:Sent prefix. // l:mce_header_field_pane_t1 // r:TB9.1 -// +// #define qtn_ncs_engine_email_sent_text "Sent: " -// d:Subject prefix. +// d:Subject prefix. // l:mce_header_field_pane_t1 // r:TB9.1 -// +// #define qtn_ncs_engine_email_subject_text "Subject: " -// d:Message line separator. +// d:Message line separator. // l:list_cmail_body_pane_t1 // r:TB9.1 -// +// #define qtn_ncs_engine_email_message_line_separator_text "-----Original Message-----" // d:menu text Quick Text // l:list_single_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_options_insert_template "Insert template" // d:default text in recipient fields // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_recipient_enter "Enter recipient" // d:default text in subject field // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_subject_enter "Enter subject" // d:follow up item text in flag dialog // l:list_single_graphic_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_list_flag_follow_up "Follow up" // d:Clear flag item text in flag dialog // l:list_single_graphic_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_list_flag_clear "Clear flag" // d:Flag dialog title // l:heading_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_list_flag "Flag" // d:Draft dialog title // l:heading_pane_t1 // r:TB9.1 -// +// #define qtn_fse_editor_close_message_query_prompt "Close message:" // d:Save to drafts item text in draft dialog // l:list_single_graphic_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_close_message_quey_save_to_drafts "Save to Drafts" // d:Delete item text in draft dialog // l:list_single_graphic_pane_t1_cp2 // r:TB9.1 -// +// #define qtn_fse_editor_close_message_query_delete_message "Delete message" // d:Upmost item in addressfield match popup list. For selecting Remote lookup server search @@ -1475,7 +1475,7 @@ // l:control_pane_t1/opt7 // r:TB9.1 // -#define qtn_ncs_softkey_select_text "Select" +#define qtn_ncs_softkey_select_text "Select" // d:Softkey Cancel // l:control_pane_t1/opt7 @@ -1630,13 +1630,13 @@ // #define qtn_fse_folder_list_options_folder_settings "Folder settings" -// d:Mail viewer header item, see UI spec for more details +// d:Mail viewer header item, see UI spec for more details // l:none // r:TB9.1 // #define qtn_fse_folder_list_message_count "(%N)" -// d:Mail viewer header item, see UI spec for more details +// d:Mail viewer header item, see UI spec for more details // l:none // r:TB9.1 // @@ -1839,7 +1839,7 @@ // r:TB9.1 // #define qtn_fse_viewer_attachment_list_options_cancel_all "Cancel all" - + // d:Save attachment menu option in attachment list // l:list_single_pane_t1_cp2 // r:TB9.1 @@ -1994,7 +1994,7 @@ // #define qtn_fse_viewer_attachments_text_from "From:" -// d:Download complete popup +// d:Download complete popup // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 // @@ -2003,7 +2003,7 @@ // d:Total number of complete attachments in download complete popup // l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 -// +// #define qtn_fse_viewer_attachments_downloaded "Attachments (%N)" // d:Personal Information Management settings list item @@ -2182,7 +2182,7 @@ // d:heading in body 1st row // d:%N stands for number of attachments -// l:list_single_cmail_header_detail_pane_t1 +// l:list_single_cmail_header_detail_pane_t1 // r:TB9.1 // #define qtn_fse_editor_attachments_header_attachments "Attachments (%N)" @@ -2253,7 +2253,7 @@ // d:Header in mailbox selection dialog // l:heading_pane_t1 // r:TB9.1 -// +// #define qtn_fse_launcher_select_mailbox_query_prompt "Select mailbox:" // d:Personal information manager list title @@ -2292,7 +2292,7 @@ // #define qtn_fse_settings_applications_contacts "Contacts" -// d:Applications setting list item: Tasks +// d:Applications setting list item: Tasks // l:list_setting_pane_t1 // r:TB9.1 // @@ -2333,13 +2333,13 @@ // #define qtn_fse_status_email_sent "E-mail sent" -// d:Mail list options menu settings cascade menu +// d:Mail list options menu settings cascade menu // l:list_single_popup_submenu_pane_t1 // r:TB9.1 // #define qtn_fse_message_list_options_settings_mailbox "Mailbox settings" -// d:Mail list options menu settings cascade menu +// d:Mail list options menu settings cascade menu // l:list_single_popup_submenu_pane_t1 // r:TB9.1 // @@ -2358,7 +2358,7 @@ // #define qtn_fse_general_creating_new_mailbox "Creating new mailbox" -// d:Error note for showing that when creating a new mailbox the maximum amount +// d:Error note for showing that when creating a new mailbox the maximum amount // of this type of mailboxes was reached. // l:popup_note_window/opt2 // r:TB9.1 @@ -2522,19 +2522,19 @@ // #define qtn_fse_tb_ext_reply "Reply" -// d:Extended toolbar button reply, creates a reply to email message sender and other recipients +// d:Extended toolbar button reply, creates a reply to email message sender and other recipients // l:popup_preview_text_window_t1 // r:TB9.2 // #define qtn_fse_tb_ext_reply_all "Reply to all" -// d:Extended toolbar button forward, creates a forward email message to the sender +// d:Extended toolbar button forward, creates a forward email message to the sender // l:popup_preview_text_window_t1 // r:TB9.2 // #define qtn_fse_tb_ext_forward "Forward" -// d:Toolbar button for add attachment in editor, opens extended toolbar for attachment selection +// d:Toolbar button for add attachment in editor, opens extended toolbar for attachment selection // l:popup_preview_text_window_t1 // r:TB9.2 // @@ -2600,7 +2600,7 @@ // #define qtn_cmail_action_menu_mark "Mark" -// d:Displayed in stylus popup menu when activated in message list view +// d:Displayed in stylus popup menu when activated in message list view // l:sp_fs_action_menu_list_gene_pane_t1 // r:TB9.2 // @@ -2632,7 +2632,7 @@ #define qtn_mail_launcher_settings_delete_multiple_mailboxes_query "Delete %N mailboxes?" // d:Select folders item in folder list in mail list view's control bar -// l:main_sp_fs_ctrlbar_ddmenu_pane_t1 +// l:main_sp_fs_ctrlbar_ddmenu_pane_t1 // r:TB9.2 // #define qtn_cmail_command_area_select_folders "Select folders" @@ -2724,42 +2724,42 @@ // d:Copy to clipboard menu item // l:list_single_touch_menu_pane_t1 // r:TB9.2 -// +// #define qtn_cmail_popup_copy_address "Copy address" -// d:Searches the contact information of the person who’s the address is. +// d:Searches the contact information of the person who’s the address is. // l:list_single_touch_menu_pane_t1 // r:TB9.2 -// +// #define qtn_cmail_popup_search_server "Search from server" -// d:Opens the attachment +// d:Opens the attachment // l:list_single_touch_menu_pane_t1 // r:TB9.2 -// +// #define qtn_cmail_popup_open "Open" -// d:Save the attachment +// d:Save the attachment // l:list_single_touch_menu_pane_t1 // r:TB9.2 -// +// #define qtn_cmail_popup_save "Save" // d:Save all the attachments // l:list_single_touch_menu_pane_t1 // r:TB9.2 -// +// #define qtn_cmail_popup_save_all "Save all" -// d:Shown if the tapped attachment is being downloaded. Cancels the download. +// d:Shown if the tapped attachment is being downloaded. Cancels the download. // l:list_single_touch_menu_pane_t1 -// r:TB9.2 +// r:TB9.2 #define qtn_cmail_popup_cancel_download "Cancel download" // d:Adds the web address to browser bookmarks. // l:list_single_touch_menu_pane_t1 // r:TB9.2 -// +// #define qtn_cmail_popup_add_bookmark "Add to bookmarks" // d:Open attachment in compose view @@ -2774,9 +2774,39 @@ // #define qtn_mail_stylus_popup_remove "Remove" -// d:Save to Contacts +// d:Save to Contacts // l:list_single_touch_menu_pane_t1 // r:TB9.2 // #define qtn_mail_stylus_popup_add_to_contacts "Save to Contacts" +// d:Mail viewer header item, see UI spec for more details +// l:list_single_cmail_header_detail_pane_t1 +// r:TB9.2 +// +#define qtn_cmail_viewer_images_not_displayed "Images are not displayed" + +// d:Mail viewer header item, see UI spec for more details +// l:list_single_cmail_header_detail_pane_t1 +// r:TB9.2 +// +#define qtn_cmail_viewer_display_images "Display images" + +// d:Load linked HTML images +// l:list_setting_pane_t1 +// r:TB9.2 +// +#define qtn_mail_setting_download_images "Download images" + +// d:Load linked HTML images option yes +// l:list_setting_pane_t1 +// r:TB9.2 +// +#define qtn_mail_option_alternative_yes "Yes" + +// d:Load linked HTML images option no +// l:list_setting_pane_t1 +// r:TB9.2 +// +#define qtn_mail_option_alternative_no "No" + diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/rom/freestyleemailui.iby --- a/emailuis/emailui/rom/freestyleemailui.iby Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/rom/freestyleemailui.iby Fri Mar 12 15:41:14 2010 +0200 @@ -39,8 +39,10 @@ data=DATAZ_\private\2001E277\HtmlFile\header.js private\2001E277\HtmlFile\header.js data=DATAZ_\private\2001E277\HtmlFile\plus.gif private\2001E277\HtmlFile\plus.gif data=DATAZ_\private\2001E277\HtmlFile\minus.gif private\2001E277\HtmlFile\minus.gif +data=DATAZ_\private\2001E277\HtmlFile\email.js private\2001E277\HtmlFile\email.js data=DATAZ_\private\2001E277\HtmlFile\follow_up.png private\2001E277\HtmlFile\follow_up.png data=DATAZ_\private\2001E277\HtmlFile\follow_up_complete.png private\2001E277\HtmlFile\follow_up_complete.png +data=DATAZ_\private\2001E277\HtmlFile\btn_middle.png private\2001E277\HtmlFile\btn_middle.png data=DATAZ_\private\2001E277\HtmlFile\todo_high_add.png private\2001E277\HtmlFile\todo_high_add.png data=DATAZ_\private\2001E277\HtmlFile\todo_low_add.png private\2001E277\HtmlFile\todo_low_add.png diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/sis/commonemail.pkg --- a/emailuis/emailui/sis/commonemail.pkg Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/sis/commonemail.pkg Fri Mar 12 15:41:14 2010 +0200 @@ -178,14 +178,6 @@ "\epoc32\data\z\resource\apps\fscsendplugin.rsc" - "c:\resource\apps\fscsendplugin.rsc" "\epoc32\data\z\resource\apps\fscsendplugin.mif" - "c:\resource\apps\fscsendplugin.mif" -; emailcontacts / remotecontactlookup -"\epoc32\release\armv5\urel\pbkxrclservice.dll" - "c:\sys\bin\pbkxrclservice.dll" -"\epoc32\data\Z\Resource\Plugins\pbkxrclservice.rsc" - "c:\resource\plugins\pbkxrclservice.rsc" -"\epoc32\release\armv5\urel\pbkxrclengine.dll" - "c:\sys\bin\pbkxrclengine.dll" -"\epoc32\data\z\resource\apps\pbkxrclengine.rsc" - "c:\resource\apps\pbkxrclengine.rsc" -"\epoc32\data\z\resource\apps\pbkxrclengine.mif" - "c:\resource\apps\pbkxrclengine.mif" -"\epoc32\data\Z\private\10202BE9\2001F3FE.txt" - "c:\private\10202be9\2001F3FE.txt" - ; meetingrequest "\epoc32\data\z\resource\esmrgui.rsc" - "c:\resource\esmrgui.rsc" "\epoc32\data\z\resource\esmrtasks.rsc" - "c:\resource\esmrtasks.rsc" diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/sis/commonemail_loc.pkg --- a/emailuis/emailui/sis/commonemail_loc.pkg Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/sis/commonemail_loc.pkg Fri Mar 12 15:41:14 2010 +0200 @@ -187,15 +187,6 @@ ;"\epoc32\data\z\resource\apps\fscsendplugin.rsc" - "c:\resource\apps\fscsendplugin.rsc" "\epoc32\data\z\resource\apps\fscsendplugin.mif" - "c:\resource\apps\fscsendplugin.mif" -; emailcontacts / remotecontactlookup -"\epoc32\release\armv5\urel\pbkxrclservice.dll" - "c:\sys\bin\pbkxrclservice.dll" -"\epoc32\data\Z\Resource\Plugins\pbkxrclservice.rsc" - "c:\resource\plugins\pbkxrclservice.rsc" -"\epoc32\release\armv5\urel\pbkxrclengine.dll" - "c:\sys\bin\pbkxrclengine.dll" -; Following line is localized, so this Engineering English line is commented out -;"\epoc32\data\z\resource\apps\pbkxrclengine.rsc" - "c:\resource\apps\pbkxrclengine.rsc" -"\epoc32\data\z\resource\apps\pbkxrclengine.mif" - "c:\resource\apps\pbkxrclengine.mif" -"\epoc32\data\Z\private\10202BE9\2001F3FE.txt" - "c:\private\10202be9\2001F3FE.txt" - ; meetingrequest ; Following line is localized, so this Engineering English line is commented out ;"\epoc32\data\z\resource\esmrgui.rsc" - "c:\resource\esmrgui.rsc" @@ -278,7 +269,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r01" - "c:\resource\apps\fsccallplugin.r01" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r01" - "c:\resource\apps\fscsaveascontactplugin.r01" "\epoc32\data\z\resource\apps\fscsendplugin.r01" - "c:\resource\apps\fscsendplugin.r01" - "\epoc32\data\z\resource\apps\pbkxrclengine.r01" - "c:\resource\apps\pbkxrclengine.r01" "\epoc32\data\z\resource\esmrgui.r01" - "c:\resource\esmrgui.r01" "\epoc32\data\z\resource\esmrtasks.r01" - "c:\resource\esmrtasks.r01" "\epoc32\data\z\resource\esmrcasplugindata.r01" - "c:\resource\esmrcasplugindata.r01" @@ -295,7 +285,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r02" - "c:\resource\apps\fsccallplugin.r02" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r02" - "c:\resource\apps\fscsaveascontactplugin.r02" "\epoc32\data\z\resource\apps\fscsendplugin.r02" - "c:\resource\apps\fscsendplugin.r02" - "\epoc32\data\z\resource\apps\pbkxrclengine.r02" - "c:\resource\apps\pbkxrclengine.r02" "\epoc32\data\z\resource\esmrgui.r02" - "c:\resource\esmrgui.r02" "\epoc32\data\z\resource\esmrtasks.r02" - "c:\resource\esmrtasks.r02" "\epoc32\data\z\resource\esmrcasplugindata.r02" - "c:\resource\esmrcasplugindata.r02" @@ -312,7 +301,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r03" - "c:\resource\apps\fsccallplugin.r03" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r03" - "c:\resource\apps\fscsaveascontactplugin.r03" "\epoc32\data\z\resource\apps\fscsendplugin.r03" - "c:\resource\apps\fscsendplugin.r03" - "\epoc32\data\z\resource\apps\pbkxrclengine.r03" - "c:\resource\apps\pbkxrclengine.r03" "\epoc32\data\z\resource\esmrgui.r03" - "c:\resource\esmrgui.r03" "\epoc32\data\z\resource\esmrtasks.r03" - "c:\resource\esmrtasks.r03" "\epoc32\data\z\resource\esmrcasplugindata.r03" - "c:\resource\esmrcasplugindata.r03" @@ -329,7 +317,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r04" - "c:\resource\apps\fsccallplugin.r04" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r04" - "c:\resource\apps\fscsaveascontactplugin.r04" "\epoc32\data\z\resource\apps\fscsendplugin.r04" - "c:\resource\apps\fscsendplugin.r04" - "\epoc32\data\z\resource\apps\pbkxrclengine.r04" - "c:\resource\apps\pbkxrclengine.r04" "\epoc32\data\z\resource\esmrgui.r04" - "c:\resource\esmrgui.r04" "\epoc32\data\z\resource\esmrtasks.r04" - "c:\resource\esmrtasks.r04" "\epoc32\data\z\resource\esmrcasplugindata.r04" - "c:\resource\esmrcasplugindata.r04" @@ -346,7 +333,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r05" - "c:\resource\apps\fsccallplugin.r05" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r05" - "c:\resource\apps\fscsaveascontactplugin.r05" "\epoc32\data\z\resource\apps\fscsendplugin.r05" - "c:\resource\apps\fscsendplugin.r05" - "\epoc32\data\z\resource\apps\pbkxrclengine.r05" - "c:\resource\apps\pbkxrclengine.r05" "\epoc32\data\z\resource\esmrgui.r05" - "c:\resource\esmrgui.r05" "\epoc32\data\z\resource\esmrtasks.r05" - "c:\resource\esmrtasks.r05" "\epoc32\data\z\resource\esmrcasplugindata.r05" - "c:\resource\esmrcasplugindata.r05" @@ -363,7 +349,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r06" - "c:\resource\apps\fsccallplugin.r06" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r06" - "c:\resource\apps\fscsaveascontactplugin.r06" "\epoc32\data\z\resource\apps\fscsendplugin.r06" - "c:\resource\apps\fscsendplugin.r06" - "\epoc32\data\z\resource\apps\pbkxrclengine.r06" - "c:\resource\apps\pbkxrclengine.r06" "\epoc32\data\z\resource\esmrgui.r06" - "c:\resource\esmrgui.r06" "\epoc32\data\z\resource\esmrtasks.r06" - "c:\resource\esmrtasks.r06" "\epoc32\data\z\resource\esmrcasplugindata.r06" - "c:\resource\esmrcasplugindata.r06" @@ -380,7 +365,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r07" - "c:\resource\apps\fsccallplugin.r07" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r07" - "c:\resource\apps\fscsaveascontactplugin.r07" "\epoc32\data\z\resource\apps\fscsendplugin.r07" - "c:\resource\apps\fscsendplugin.r07" - "\epoc32\data\z\resource\apps\pbkxrclengine.r07" - "c:\resource\apps\pbkxrclengine.r07" "\epoc32\data\z\resource\esmrgui.r07" - "c:\resource\esmrgui.r07" "\epoc32\data\z\resource\esmrtasks.r07" - "c:\resource\esmrtasks.r07" "\epoc32\data\z\resource\esmrcasplugindata.r07" - "c:\resource\esmrcasplugindata.r07" @@ -397,7 +381,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r08" - "c:\resource\apps\fsccallplugin.r08" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r08" - "c:\resource\apps\fscsaveascontactplugin.r08" "\epoc32\data\z\resource\apps\fscsendplugin.r08" - "c:\resource\apps\fscsendplugin.r08" - "\epoc32\data\z\resource\apps\pbkxrclengine.r08" - "c:\resource\apps\pbkxrclengine.r08" "\epoc32\data\z\resource\esmrgui.r08" - "c:\resource\esmrgui.r08" "\epoc32\data\z\resource\esmrtasks.r08" - "c:\resource\esmrtasks.r08" "\epoc32\data\z\resource\esmrcasplugindata.r08" - "c:\resource\esmrcasplugindata.r08" @@ -414,7 +397,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r09" - "c:\resource\apps\fsccallplugin.r09" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r09" - "c:\resource\apps\fscsaveascontactplugin.r09" "\epoc32\data\z\resource\apps\fscsendplugin.r09" - "c:\resource\apps\fscsendplugin.r09" - "\epoc32\data\z\resource\apps\pbkxrclengine.r09" - "c:\resource\apps\pbkxrclengine.r09" "\epoc32\data\z\resource\esmrgui.r09" - "c:\resource\esmrgui.r09" "\epoc32\data\z\resource\esmrtasks.r09" - "c:\resource\esmrtasks.r09" "\epoc32\data\z\resource\esmrcasplugindata.r09" - "c:\resource\esmrcasplugindata.r09" @@ -431,7 +413,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r10" - "c:\resource\apps\fsccallplugin.r10" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r10" - "c:\resource\apps\fscsaveascontactplugin.r10" "\epoc32\data\z\resource\apps\fscsendplugin.r10" - "c:\resource\apps\fscsendplugin.r10" - "\epoc32\data\z\resource\apps\pbkxrclengine.r10" - "c:\resource\apps\pbkxrclengine.r10" "\epoc32\data\z\resource\esmrgui.r10" - "c:\resource\esmrgui.r10" "\epoc32\data\z\resource\esmrtasks.r10" - "c:\resource\esmrtasks.r10" "\epoc32\data\z\resource\esmrcasplugindata.r10" - "c:\resource\esmrcasplugindata.r10" @@ -448,7 +429,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r13" - "c:\resource\apps\fsccallplugin.r13" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r13" - "c:\resource\apps\fscsaveascontactplugin.r13" "\epoc32\data\z\resource\apps\fscsendplugin.r13" - "c:\resource\apps\fscsendplugin.r13" - "\epoc32\data\z\resource\apps\pbkxrclengine.r13" - "c:\resource\apps\pbkxrclengine.r13" "\epoc32\data\z\resource\esmrgui.r13" - "c:\resource\esmrgui.r13" "\epoc32\data\z\resource\esmrtasks.r13" - "c:\resource\esmrtasks.r13" "\epoc32\data\z\resource\esmrcasplugindata.r13" - "c:\resource\esmrcasplugindata.r13" @@ -465,7 +445,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r14" - "c:\resource\apps\fsccallplugin.r14" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r14" - "c:\resource\apps\fscsaveascontactplugin.r14" "\epoc32\data\z\resource\apps\fscsendplugin.r14" - "c:\resource\apps\fscsendplugin.r14" - "\epoc32\data\z\resource\apps\pbkxrclengine.r14" - "c:\resource\apps\pbkxrclengine.r14" "\epoc32\data\z\resource\esmrgui.r14" - "c:\resource\esmrgui.r14" "\epoc32\data\z\resource\esmrtasks.r14" - "c:\resource\esmrtasks.r14" "\epoc32\data\z\resource\esmrcasplugindata.r14" - "c:\resource\esmrcasplugindata.r14" @@ -482,7 +461,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r15" - "c:\resource\apps\fsccallplugin.r15" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r15" - "c:\resource\apps\fscsaveascontactplugin.r15" "\epoc32\data\z\resource\apps\fscsendplugin.r15" - "c:\resource\apps\fscsendplugin.r15" - "\epoc32\data\z\resource\apps\pbkxrclengine.r15" - "c:\resource\apps\pbkxrclengine.r15" "\epoc32\data\z\resource\esmrgui.r15" - "c:\resource\esmrgui.r15" "\epoc32\data\z\resource\esmrtasks.r15" - "c:\resource\esmrtasks.r15" "\epoc32\data\z\resource\esmrcasplugindata.r15" - "c:\resource\esmrcasplugindata.r15" @@ -499,7 +477,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r16" - "c:\resource\apps\fsccallplugin.r16" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r16" - "c:\resource\apps\fscsaveascontactplugin.r16" "\epoc32\data\z\resource\apps\fscsendplugin.r16" - "c:\resource\apps\fscsendplugin.r16" - "\epoc32\data\z\resource\apps\pbkxrclengine.r16" - "c:\resource\apps\pbkxrclengine.r16" "\epoc32\data\z\resource\esmrgui.r16" - "c:\resource\esmrgui.r16" "\epoc32\data\z\resource\esmrtasks.r16" - "c:\resource\esmrtasks.r16" "\epoc32\data\z\resource\esmrcasplugindata.r16" - "c:\resource\esmrcasplugindata.r16" @@ -516,7 +493,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r17" - "c:\resource\apps\fsccallplugin.r17" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r17" - "c:\resource\apps\fscsaveascontactplugin.r17" "\epoc32\data\z\resource\apps\fscsendplugin.r17" - "c:\resource\apps\fscsendplugin.r17" - "\epoc32\data\z\resource\apps\pbkxrclengine.r17" - "c:\resource\apps\pbkxrclengine.r17" "\epoc32\data\z\resource\esmrgui.r17" - "c:\resource\esmrgui.r17" "\epoc32\data\z\resource\esmrtasks.r17" - "c:\resource\esmrtasks.r17" "\epoc32\data\z\resource\esmrcasplugindata.r17" - "c:\resource\esmrcasplugindata.r17" @@ -533,7 +509,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r18" - "c:\resource\apps\fsccallplugin.r18" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r18" - "c:\resource\apps\fscsaveascontactplugin.r18" "\epoc32\data\z\resource\apps\fscsendplugin.r18" - "c:\resource\apps\fscsendplugin.r18" - "\epoc32\data\z\resource\apps\pbkxrclengine.r18" - "c:\resource\apps\pbkxrclengine.r18" "\epoc32\data\z\resource\esmrgui.r18" - "c:\resource\esmrgui.r18" "\epoc32\data\z\resource\esmrtasks.r18" - "c:\resource\esmrtasks.r18" "\epoc32\data\z\resource\esmrcasplugindata.r18" - "c:\resource\esmrcasplugindata.r18" @@ -550,7 +525,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r25" - "c:\resource\apps\fsccallplugin.r25" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r25" - "c:\resource\apps\fscsaveascontactplugin.r25" "\epoc32\data\z\resource\apps\fscsendplugin.r25" - "c:\resource\apps\fscsendplugin.r25" - "\epoc32\data\z\resource\apps\pbkxrclengine.r25" - "c:\resource\apps\pbkxrclengine.r25" "\epoc32\data\z\resource\esmrgui.r25" - "c:\resource\esmrgui.r25" "\epoc32\data\z\resource\esmrtasks.r25" - "c:\resource\esmrtasks.r25" "\epoc32\data\z\resource\esmrcasplugindata.r25" - "c:\resource\esmrcasplugindata.r25" @@ -567,7 +541,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r26" - "c:\resource\apps\fsccallplugin.r26" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r26" - "c:\resource\apps\fscsaveascontactplugin.r26" "\epoc32\data\z\resource\apps\fscsendplugin.r26" - "c:\resource\apps\fscsendplugin.r26" - "\epoc32\data\z\resource\apps\pbkxrclengine.r26" - "c:\resource\apps\pbkxrclengine.r26" "\epoc32\data\z\resource\esmrgui.r26" - "c:\resource\esmrgui.r26" "\epoc32\data\z\resource\esmrtasks.r26" - "c:\resource\esmrtasks.r26" "\epoc32\data\z\resource\esmrcasplugindata.r26" - "c:\resource\esmrcasplugindata.r26" @@ -584,7 +557,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r27" - "c:\resource\apps\fsccallplugin.r27" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r27" - "c:\resource\apps\fscsaveascontactplugin.r27" "\epoc32\data\z\resource\apps\fscsendplugin.r27" - "c:\resource\apps\fscsendplugin.r27" - "\epoc32\data\z\resource\apps\pbkxrclengine.r27" - "c:\resource\apps\pbkxrclengine.r27" "\epoc32\data\z\resource\esmrgui.r27" - "c:\resource\esmrgui.r27" "\epoc32\data\z\resource\esmrtasks.r27" - "c:\resource\esmrtasks.r27" "\epoc32\data\z\resource\esmrcasplugindata.r27" - "c:\resource\esmrcasplugindata.r27" @@ -601,7 +573,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r28" - "c:\resource\apps\fsccallplugin.r28" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r28" - "c:\resource\apps\fscsaveascontactplugin.r28" "\epoc32\data\z\resource\apps\fscsendplugin.r28" - "c:\resource\apps\fscsendplugin.r28" - "\epoc32\data\z\resource\apps\pbkxrclengine.r28" - "c:\resource\apps\pbkxrclengine.r28" "\epoc32\data\z\resource\esmrgui.r28" - "c:\resource\esmrgui.r28" "\epoc32\data\z\resource\esmrtasks.r28" - "c:\resource\esmrtasks.r28" "\epoc32\data\z\resource\esmrcasplugindata.r28" - "c:\resource\esmrcasplugindata.r28" @@ -618,7 +589,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r29" - "c:\resource\apps\fsccallplugin.r29" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r29" - "c:\resource\apps\fscsaveascontactplugin.r29" "\epoc32\data\z\resource\apps\fscsendplugin.r29" - "c:\resource\apps\fscsendplugin.r29" - "\epoc32\data\z\resource\apps\pbkxrclengine.r29" - "c:\resource\apps\pbkxrclengine.r29" "\epoc32\data\z\resource\esmrgui.r29" - "c:\resource\esmrgui.r29" "\epoc32\data\z\resource\esmrtasks.r29" - "c:\resource\esmrtasks.r29" "\epoc32\data\z\resource\esmrcasplugindata.r29" - "c:\resource\esmrcasplugindata.r29" @@ -635,7 +605,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r30" - "c:\resource\apps\fsccallplugin.r30" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r30" - "c:\resource\apps\fscsaveascontactplugin.r30" "\epoc32\data\z\resource\apps\fscsendplugin.r30" - "c:\resource\apps\fscsendplugin.r30" - "\epoc32\data\z\resource\apps\pbkxrclengine.r30" - "c:\resource\apps\pbkxrclengine.r30" "\epoc32\data\z\resource\esmrgui.r30" - "c:\resource\esmrgui.r30" "\epoc32\data\z\resource\esmrtasks.r30" - "c:\resource\esmrtasks.r30" "\epoc32\data\z\resource\esmrcasplugindata.r30" - "c:\resource\esmrcasplugindata.r30" @@ -652,7 +621,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r31" - "c:\resource\apps\fsccallplugin.r31" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r31" - "c:\resource\apps\fscsaveascontactplugin.r31" "\epoc32\data\z\resource\apps\fscsendplugin.r31" - "c:\resource\apps\fscsendplugin.r31" - "\epoc32\data\z\resource\apps\pbkxrclengine.r31" - "c:\resource\apps\pbkxrclengine.r31" "\epoc32\data\z\resource\esmrgui.r31" - "c:\resource\esmrgui.r31" "\epoc32\data\z\resource\esmrtasks.r31" - "c:\resource\esmrtasks.r31" "\epoc32\data\z\resource\esmrcasplugindata.r31" - "c:\resource\esmrcasplugindata.r31" @@ -669,7 +637,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r32" - "c:\resource\apps\fsccallplugin.r32" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r32" - "c:\resource\apps\fscsaveascontactplugin.r32" "\epoc32\data\z\resource\apps\fscsendplugin.r32" - "c:\resource\apps\fscsendplugin.r32" - "\epoc32\data\z\resource\apps\pbkxrclengine.r32" - "c:\resource\apps\pbkxrclengine.r32" "\epoc32\data\z\resource\esmrgui.r32" - "c:\resource\esmrgui.r32" "\epoc32\data\z\resource\esmrtasks.r32" - "c:\resource\esmrtasks.r32" "\epoc32\data\z\resource\esmrcasplugindata.r32" - "c:\resource\esmrcasplugindata.r32" @@ -686,7 +653,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r33" - "c:\resource\apps\fsccallplugin.r33" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r33" - "c:\resource\apps\fscsaveascontactplugin.r33" "\epoc32\data\z\resource\apps\fscsendplugin.r33" - "c:\resource\apps\fscsendplugin.r33" - "\epoc32\data\z\resource\apps\pbkxrclengine.r33" - "c:\resource\apps\pbkxrclengine.r33" "\epoc32\data\z\resource\esmrgui.r33" - "c:\resource\esmrgui.r33" "\epoc32\data\z\resource\esmrtasks.r33" - "c:\resource\esmrtasks.r33" "\epoc32\data\z\resource\esmrcasplugindata.r33" - "c:\resource\esmrcasplugindata.r33" @@ -703,7 +669,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r37" - "c:\resource\apps\fsccallplugin.r37" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r37" - "c:\resource\apps\fscsaveascontactplugin.r37" "\epoc32\data\z\resource\apps\fscsendplugin.r37" - "c:\resource\apps\fscsendplugin.r37" - "\epoc32\data\z\resource\apps\pbkxrclengine.r37" - "c:\resource\apps\pbkxrclengine.r37" "\epoc32\data\z\resource\esmrgui.r37" - "c:\resource\esmrgui.r37" "\epoc32\data\z\resource\esmrtasks.r37" - "c:\resource\esmrtasks.r37" "\epoc32\data\z\resource\esmrcasplugindata.r37" - "c:\resource\esmrcasplugindata.r37" @@ -720,7 +685,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r39" - "c:\resource\apps\fsccallplugin.r39" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r39" - "c:\resource\apps\fscsaveascontactplugin.r39" "\epoc32\data\z\resource\apps\fscsendplugin.r39" - "c:\resource\apps\fscsendplugin.r39" - "\epoc32\data\z\resource\apps\pbkxrclengine.r39" - "c:\resource\apps\pbkxrclengine.r39" "\epoc32\data\z\resource\esmrgui.r39" - "c:\resource\esmrgui.r39" "\epoc32\data\z\resource\esmrtasks.r39" - "c:\resource\esmrtasks.r39" "\epoc32\data\z\resource\esmrcasplugindata.r39" - "c:\resource\esmrcasplugindata.r39" @@ -737,7 +701,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r42" - "c:\resource\apps\fsccallplugin.r42" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r42" - "c:\resource\apps\fscsaveascontactplugin.r42" "\epoc32\data\z\resource\apps\fscsendplugin.r42" - "c:\resource\apps\fscsendplugin.r42" - "\epoc32\data\z\resource\apps\pbkxrclengine.r42" - "c:\resource\apps\pbkxrclengine.r42" "\epoc32\data\z\resource\esmrgui.r42" - "c:\resource\esmrgui.r42" "\epoc32\data\z\resource\esmrtasks.r42" - "c:\resource\esmrtasks.r42" "\epoc32\data\z\resource\esmrcasplugindata.r42" - "c:\resource\esmrcasplugindata.r42" @@ -754,7 +717,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r44" - "c:\resource\apps\fsccallplugin.r44" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r44" - "c:\resource\apps\fscsaveascontactplugin.r44" "\epoc32\data\z\resource\apps\fscsendplugin.r44" - "c:\resource\apps\fscsendplugin.r44" - "\epoc32\data\z\resource\apps\pbkxrclengine.r44" - "c:\resource\apps\pbkxrclengine.r44" "\epoc32\data\z\resource\esmrgui.r44" - "c:\resource\esmrgui.r44" "\epoc32\data\z\resource\esmrtasks.r44" - "c:\resource\esmrtasks.r44" "\epoc32\data\z\resource\esmrcasplugindata.r44" - "c:\resource\esmrcasplugindata.r44" @@ -771,7 +733,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r45" - "c:\resource\apps\fsccallplugin.r45" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r45" - "c:\resource\apps\fscsaveascontactplugin.r45" "\epoc32\data\z\resource\apps\fscsendplugin.r45" - "c:\resource\apps\fscsendplugin.r45" - "\epoc32\data\z\resource\apps\pbkxrclengine.r45" - "c:\resource\apps\pbkxrclengine.r45" "\epoc32\data\z\resource\esmrgui.r45" - "c:\resource\esmrgui.r45" "\epoc32\data\z\resource\esmrtasks.r45" - "c:\resource\esmrtasks.r45" "\epoc32\data\z\resource\esmrcasplugindata.r45" - "c:\resource\esmrcasplugindata.r45" @@ -788,7 +749,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r49" - "c:\resource\apps\fsccallplugin.r49" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r49" - "c:\resource\apps\fscsaveascontactplugin.r49" "\epoc32\data\z\resource\apps\fscsendplugin.r49" - "c:\resource\apps\fscsendplugin.r49" - "\epoc32\data\z\resource\apps\pbkxrclengine.r49" - "c:\resource\apps\pbkxrclengine.r49" "\epoc32\data\z\resource\esmrgui.r49" - "c:\resource\esmrgui.r49" "\epoc32\data\z\resource\esmrtasks.r49" - "c:\resource\esmrtasks.r49" "\epoc32\data\z\resource\esmrcasplugindata.r49" - "c:\resource\esmrcasplugindata.r49" @@ -805,7 +765,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r50" - "c:\resource\apps\fsccallplugin.r50" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r50" - "c:\resource\apps\fscsaveascontactplugin.r50" "\epoc32\data\z\resource\apps\fscsendplugin.r50" - "c:\resource\apps\fscsendplugin.r50" - "\epoc32\data\z\resource\apps\pbkxrclengine.r50" - "c:\resource\apps\pbkxrclengine.r50" "\epoc32\data\z\resource\esmrgui.r50" - "c:\resource\esmrgui.r50" "\epoc32\data\z\resource\esmrtasks.r50" - "c:\resource\esmrtasks.r50" "\epoc32\data\z\resource\esmrcasplugindata.r50" - "c:\resource\esmrcasplugindata.r50" @@ -822,7 +781,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r51" - "c:\resource\apps\fsccallplugin.r51" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r51" - "c:\resource\apps\fscsaveascontactplugin.r51" "\epoc32\data\z\resource\apps\fscsendplugin.r51" - "c:\resource\apps\fscsendplugin.r51" - "\epoc32\data\z\resource\apps\pbkxrclengine.r51" - "c:\resource\apps\pbkxrclengine.r51" "\epoc32\data\z\resource\esmrgui.r51" - "c:\resource\esmrgui.r51" "\epoc32\data\z\resource\esmrtasks.r51" - "c:\resource\esmrtasks.r51" "\epoc32\data\z\resource\esmrcasplugindata.r51" - "c:\resource\esmrcasplugindata.r51" @@ -839,7 +797,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r54" - "c:\resource\apps\fsccallplugin.r54" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r54" - "c:\resource\apps\fscsaveascontactplugin.r54" "\epoc32\data\z\resource\apps\fscsendplugin.r54" - "c:\resource\apps\fscsendplugin.r54" - "\epoc32\data\z\resource\apps\pbkxrclengine.r54" - "c:\resource\apps\pbkxrclengine.r54" "\epoc32\data\z\resource\esmrgui.r54" - "c:\resource\esmrgui.r54" "\epoc32\data\z\resource\esmrtasks.r54" - "c:\resource\esmrtasks.r54" "\epoc32\data\z\resource\esmrcasplugindata.r54" - "c:\resource\esmrcasplugindata.r54" @@ -856,7 +813,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r57" - "c:\resource\apps\fsccallplugin.r57" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r57" - "c:\resource\apps\fscsaveascontactplugin.r57" "\epoc32\data\z\resource\apps\fscsendplugin.r57" - "c:\resource\apps\fscsendplugin.r57" - "\epoc32\data\z\resource\apps\pbkxrclengine.r57" - "c:\resource\apps\pbkxrclengine.r57" "\epoc32\data\z\resource\esmrgui.r57" - "c:\resource\esmrgui.r57" "\epoc32\data\z\resource\esmrtasks.r57" - "c:\resource\esmrtasks.r57" "\epoc32\data\z\resource\esmrcasplugindata.r57" - "c:\resource\esmrcasplugindata.r57" @@ -873,7 +829,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r59" - "c:\resource\apps\fsccallplugin.r59" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r59" - "c:\resource\apps\fscsaveascontactplugin.r59" "\epoc32\data\z\resource\apps\fscsendplugin.r59" - "c:\resource\apps\fscsendplugin.r59" - "\epoc32\data\z\resource\apps\pbkxrclengine.r59" - "c:\resource\apps\pbkxrclengine.r59" "\epoc32\data\z\resource\esmrgui.r59" - "c:\resource\esmrgui.r59" "\epoc32\data\z\resource\esmrtasks.r59" - "c:\resource\esmrtasks.r59" "\epoc32\data\z\resource\esmrcasplugindata.r59" - "c:\resource\esmrcasplugindata.r59" @@ -890,7 +845,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r67" - "c:\resource\apps\fsccallplugin.r67" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r67" - "c:\resource\apps\fscsaveascontactplugin.r67" "\epoc32\data\z\resource\apps\fscsendplugin.r67" - "c:\resource\apps\fscsendplugin.r67" - "\epoc32\data\z\resource\apps\pbkxrclengine.r67" - "c:\resource\apps\pbkxrclengine.r67" "\epoc32\data\z\resource\esmrgui.r67" - "c:\resource\esmrgui.r67" "\epoc32\data\z\resource\esmrtasks.r67" - "c:\resource\esmrtasks.r67" "\epoc32\data\z\resource\esmrcasplugindata.r67" - "c:\resource\esmrcasplugindata.r67" @@ -907,7 +861,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r68" - "c:\resource\apps\fsccallplugin.r68" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r68" - "c:\resource\apps\fscsaveascontactplugin.r68" "\epoc32\data\z\resource\apps\fscsendplugin.r68" - "c:\resource\apps\fscsendplugin.r68" - "\epoc32\data\z\resource\apps\pbkxrclengine.r68" - "c:\resource\apps\pbkxrclengine.r68" "\epoc32\data\z\resource\esmrgui.r68" - "c:\resource\esmrgui.r68" "\epoc32\data\z\resource\esmrtasks.r68" - "c:\resource\esmrtasks.r68" "\epoc32\data\z\resource\esmrcasplugindata.r68" - "c:\resource\esmrcasplugindata.r68" @@ -924,7 +877,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r70" - "c:\resource\apps\fsccallplugin.r70" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r70" - "c:\resource\apps\fscsaveascontactplugin.r70" "\epoc32\data\z\resource\apps\fscsendplugin.r70" - "c:\resource\apps\fscsendplugin.r70" - "\epoc32\data\z\resource\apps\pbkxrclengine.r70" - "c:\resource\apps\pbkxrclengine.r70" "\epoc32\data\z\resource\esmrgui.r70" - "c:\resource\esmrgui.r70" "\epoc32\data\z\resource\esmrtasks.r70" - "c:\resource\esmrtasks.r70" "\epoc32\data\z\resource\esmrcasplugindata.r70" - "c:\resource\esmrcasplugindata.r70" @@ -941,7 +893,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r76" - "c:\resource\apps\fsccallplugin.r76" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r76" - "c:\resource\apps\fscsaveascontactplugin.r76" "\epoc32\data\z\resource\apps\fscsendplugin.r76" - "c:\resource\apps\fscsendplugin.r76" - "\epoc32\data\z\resource\apps\pbkxrclengine.r76" - "c:\resource\apps\pbkxrclengine.r76" "\epoc32\data\z\resource\esmrgui.r76" - "c:\resource\esmrgui.r76" "\epoc32\data\z\resource\esmrtasks.r76" - "c:\resource\esmrtasks.r76" "\epoc32\data\z\resource\esmrcasplugindata.r76" - "c:\resource\esmrcasplugindata.r76" @@ -958,7 +909,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r78" - "c:\resource\apps\fsccallplugin.r78" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r78" - "c:\resource\apps\fscsaveascontactplugin.r78" "\epoc32\data\z\resource\apps\fscsendplugin.r78" - "c:\resource\apps\fscsendplugin.r78" - "\epoc32\data\z\resource\apps\pbkxrclengine.r78" - "c:\resource\apps\pbkxrclengine.r78" "\epoc32\data\z\resource\esmrgui.r78" - "c:\resource\esmrgui.r78" "\epoc32\data\z\resource\esmrtasks.r78" - "c:\resource\esmrtasks.r78" "\epoc32\data\z\resource\esmrcasplugindata.r78" - "c:\resource\esmrcasplugindata.r78" @@ -975,7 +925,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r79" - "c:\resource\apps\fsccallplugin.r79" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r79" - "c:\resource\apps\fscsaveascontactplugin.r79" "\epoc32\data\z\resource\apps\fscsendplugin.r79" - "c:\resource\apps\fscsendplugin.r79" - "\epoc32\data\z\resource\apps\pbkxrclengine.r79" - "c:\resource\apps\pbkxrclengine.r79" "\epoc32\data\z\resource\esmrgui.r79" - "c:\resource\esmrgui.r79" "\epoc32\data\z\resource\esmrtasks.r79" - "c:\resource\esmrtasks.r79" "\epoc32\data\z\resource\esmrcasplugindata.r79" - "c:\resource\esmrcasplugindata.r79" @@ -992,7 +941,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r83" - "c:\resource\apps\fsccallplugin.r83" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r83" - "c:\resource\apps\fscsaveascontactplugin.r83" "\epoc32\data\z\resource\apps\fscsendplugin.r83" - "c:\resource\apps\fscsendplugin.r83" - "\epoc32\data\z\resource\apps\pbkxrclengine.r83" - "c:\resource\apps\pbkxrclengine.r83" "\epoc32\data\z\resource\esmrgui.r83" - "c:\resource\esmrgui.r83" "\epoc32\data\z\resource\esmrtasks.r83" - "c:\resource\esmrtasks.r83" "\epoc32\data\z\resource\esmrcasplugindata.r83" - "c:\resource\esmrcasplugindata.r83" @@ -1009,7 +957,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r93" - "c:\resource\apps\fsccallplugin.r93" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r93" - "c:\resource\apps\fscsaveascontactplugin.r93" "\epoc32\data\z\resource\apps\fscsendplugin.r93" - "c:\resource\apps\fscsendplugin.r93" - "\epoc32\data\z\resource\apps\pbkxrclengine.r93" - "c:\resource\apps\pbkxrclengine.r93" "\epoc32\data\z\resource\esmrgui.r93" - "c:\resource\esmrgui.r93" "\epoc32\data\z\resource\esmrtasks.r93" - "c:\resource\esmrtasks.r93" "\epoc32\data\z\resource\esmrcasplugindata.r93" - "c:\resource\esmrcasplugindata.r93" @@ -1026,7 +973,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r94" - "c:\resource\apps\fsccallplugin.r94" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r94" - "c:\resource\apps\fscsaveascontactplugin.r94" "\epoc32\data\z\resource\apps\fscsendplugin.r94" - "c:\resource\apps\fscsendplugin.r94" - "\epoc32\data\z\resource\apps\pbkxrclengine.r94" - "c:\resource\apps\pbkxrclengine.r94" "\epoc32\data\z\resource\esmrgui.r94" - "c:\resource\esmrgui.r94" "\epoc32\data\z\resource\esmrtasks.r94" - "c:\resource\esmrtasks.r94" "\epoc32\data\z\resource\esmrcasplugindata.r94" - "c:\resource\esmrcasplugindata.r94" @@ -1043,7 +989,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r96" - "c:\resource\apps\fsccallplugin.r96" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r96" - "c:\resource\apps\fscsaveascontactplugin.r96" "\epoc32\data\z\resource\apps\fscsendplugin.r96" - "c:\resource\apps\fscsendplugin.r96" - "\epoc32\data\z\resource\apps\pbkxrclengine.r96" - "c:\resource\apps\pbkxrclengine.r96" "\epoc32\data\z\resource\esmrgui.r96" - "c:\resource\esmrgui.r96" "\epoc32\data\z\resource\esmrtasks.r96" - "c:\resource\esmrtasks.r96" "\epoc32\data\z\resource\esmrcasplugindata.r96" - "c:\resource\esmrcasplugindata.r96" @@ -1060,7 +1005,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r102" - "c:\resource\apps\fsccallplugin.r102" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r102" - "c:\resource\apps\fscsaveascontactplugin.r102" "\epoc32\data\z\resource\apps\fscsendplugin.r102" - "c:\resource\apps\fscsendplugin.r102" - "\epoc32\data\z\resource\apps\pbkxrclengine.r102" - "c:\resource\apps\pbkxrclengine.r102" "\epoc32\data\z\resource\esmrgui.r102" - "c:\resource\esmrgui.r102" "\epoc32\data\z\resource\esmrtasks.r102" - "c:\resource\esmrtasks.r102" "\epoc32\data\z\resource\esmrcasplugindata.r102" - "c:\resource\esmrcasplugindata.r102" @@ -1077,7 +1021,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r103" - "c:\resource\apps\fsccallplugin.r103" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r103" - "c:\resource\apps\fscsaveascontactplugin.r103" "\epoc32\data\z\resource\apps\fscsendplugin.r103" - "c:\resource\apps\fscsendplugin.r103" - "\epoc32\data\z\resource\apps\pbkxrclengine.r103" - "c:\resource\apps\pbkxrclengine.r103" "\epoc32\data\z\resource\esmrgui.r103" - "c:\resource\esmrgui.r103" "\epoc32\data\z\resource\esmrtasks.r103" - "c:\resource\esmrtasks.r103" "\epoc32\data\z\resource\esmrcasplugindata.r103" - "c:\resource\esmrcasplugindata.r103" @@ -1094,7 +1037,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r129" - "c:\resource\apps\fsccallplugin.r129" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r129" - "c:\resource\apps\fscsaveascontactplugin.r129" "\epoc32\data\z\resource\apps\fscsendplugin.r129" - "c:\resource\apps\fscsendplugin.r129" - "\epoc32\data\z\resource\apps\pbkxrclengine.r129" - "c:\resource\apps\pbkxrclengine.r129" "\epoc32\data\z\resource\esmrgui.r129" - "c:\resource\esmrgui.r129" "\epoc32\data\z\resource\esmrtasks.r129" - "c:\resource\esmrtasks.r129" "\epoc32\data\z\resource\esmrcasplugindata.r129" - "c:\resource\esmrcasplugindata.r129" @@ -1111,7 +1053,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r157" - "c:\resource\apps\fsccallplugin.r157" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r157" - "c:\resource\apps\fscsaveascontactplugin.r157" "\epoc32\data\z\resource\apps\fscsendplugin.r157" - "c:\resource\apps\fscsendplugin.r157" - "\epoc32\data\z\resource\apps\pbkxrclengine.r157" - "c:\resource\apps\pbkxrclengine.r157" "\epoc32\data\z\resource\esmrgui.r157" - "c:\resource\esmrgui.r157" "\epoc32\data\z\resource\esmrtasks.r157" - "c:\resource\esmrtasks.r157" "\epoc32\data\z\resource\esmrcasplugindata.r157" - "c:\resource\esmrcasplugindata.r157" @@ -1128,7 +1069,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r158" - "c:\resource\apps\fsccallplugin.r158" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r158" - "c:\resource\apps\fscsaveascontactplugin.r158" "\epoc32\data\z\resource\apps\fscsendplugin.r158" - "c:\resource\apps\fscsendplugin.r158" - "\epoc32\data\z\resource\apps\pbkxrclengine.r158" - "c:\resource\apps\pbkxrclengine.r158" "\epoc32\data\z\resource\esmrgui.r158" - "c:\resource\esmrgui.r158" "\epoc32\data\z\resource\esmrtasks.r158" - "c:\resource\esmrtasks.r158" "\epoc32\data\z\resource\esmrcasplugindata.r158" - "c:\resource\esmrcasplugindata.r158" @@ -1145,7 +1085,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r159" - "c:\resource\apps\fsccallplugin.r159" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r159" - "c:\resource\apps\fscsaveascontactplugin.r159" "\epoc32\data\z\resource\apps\fscsendplugin.r159" - "c:\resource\apps\fscsendplugin.r159" - "\epoc32\data\z\resource\apps\pbkxrclengine.r159" - "c:\resource\apps\pbkxrclengine.r159" "\epoc32\data\z\resource\esmrgui.r159" - "c:\resource\esmrgui.r159" "\epoc32\data\z\resource\esmrtasks.r159" - "c:\resource\esmrtasks.r159" "\epoc32\data\z\resource\esmrcasplugindata.r159" - "c:\resource\esmrcasplugindata.r159" @@ -1162,7 +1101,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r160" - "c:\resource\apps\fsccallplugin.r160" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r160" - "c:\resource\apps\fscsaveascontactplugin.r160" "\epoc32\data\z\resource\apps\fscsendplugin.r160" - "c:\resource\apps\fscsendplugin.r160" - "\epoc32\data\z\resource\apps\pbkxrclengine.r160" - "c:\resource\apps\pbkxrclengine.r160" "\epoc32\data\z\resource\esmrgui.r160" - "c:\resource\esmrgui.r160" "\epoc32\data\z\resource\esmrtasks.r160" - "c:\resource\esmrtasks.r160" "\epoc32\data\z\resource\esmrcasplugindata.r160" - "c:\resource\esmrcasplugindata.r160" @@ -1179,7 +1117,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r161" - "c:\resource\apps\fsccallplugin.r161" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r161" - "c:\resource\apps\fscsaveascontactplugin.r161" "\epoc32\data\z\resource\apps\fscsendplugin.r161" - "c:\resource\apps\fscsendplugin.r161" - "\epoc32\data\z\resource\apps\pbkxrclengine.r161" - "c:\resource\apps\pbkxrclengine.r161" "\epoc32\data\z\resource\esmrgui.r161" - "c:\resource\esmrgui.r161" "\epoc32\data\z\resource\esmrtasks.r161" - "c:\resource\esmrtasks.r161" "\epoc32\data\z\resource\esmrcasplugindata.r161" - "c:\resource\esmrcasplugindata.r161" @@ -1196,7 +1133,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r326" - "c:\resource\apps\fsccallplugin.r326" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r326" - "c:\resource\apps\fscsaveascontactplugin.r326" "\epoc32\data\z\resource\apps\fscsendplugin.r326" - "c:\resource\apps\fscsendplugin.r326" - "\epoc32\data\z\resource\apps\pbkxrclengine.r326" - "c:\resource\apps\pbkxrclengine.r326" "\epoc32\data\z\resource\esmrgui.r326" - "c:\resource\esmrgui.r326" "\epoc32\data\z\resource\esmrtasks.r326" - "c:\resource\esmrtasks.r326" "\epoc32\data\z\resource\esmrcasplugindata.r326" - "c:\resource\esmrcasplugindata.r326" @@ -1213,7 +1149,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r327" - "c:\resource\apps\fsccallplugin.r327" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r327" - "c:\resource\apps\fscsaveascontactplugin.r327" "\epoc32\data\z\resource\apps\fscsendplugin.r327" - "c:\resource\apps\fscsendplugin.r327" - "\epoc32\data\z\resource\apps\pbkxrclengine.r327" - "c:\resource\apps\pbkxrclengine.r327" "\epoc32\data\z\resource\esmrgui.r327" - "c:\resource\esmrgui.r327" "\epoc32\data\z\resource\esmrtasks.r327" - "c:\resource\esmrtasks.r327" "\epoc32\data\z\resource\esmrcasplugindata.r327" - "c:\resource\esmrcasplugindata.r327" diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/sis/commonemail_udeb.pkg --- a/emailuis/emailui/sis/commonemail_udeb.pkg Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/sis/commonemail_udeb.pkg Fri Mar 12 15:41:14 2010 +0200 @@ -166,14 +166,6 @@ "\epoc32\data\z\resource\apps\fscsendplugin.rsc" - "c:\resource\apps\fscsendplugin.rsc" "\epoc32\data\z\resource\apps\fscsendplugin.mif" - "c:\resource\apps\fscsendplugin.mif" -; emailcontacts / remotecontactlookup -"\epoc32\release\armv5\udeb\pbkxrclservice.dll" - "c:\sys\bin\pbkxrclservice.dll" -"\epoc32\data\Z\Resource\Plugins\pbkxrclservice.rsc" - "c:\resource\plugins\pbkxrclservice.rsc" -"\epoc32\release\armv5\udeb\pbkxrclengine.dll" - "c:\sys\bin\pbkxrclengine.dll" -"\epoc32\data\z\resource\apps\pbkxrclengine.rsc" - "c:\resource\apps\pbkxrclengine.rsc" -"\epoc32\data\z\resource\apps\pbkxrclengine.mif" - "c:\resource\apps\pbkxrclengine.mif" -"\epoc32\data\Z\private\10202BE9\2001F3FE.txt" - "c:\private\10202be9\2001F3FE.txt" - ; meetingrequest "\epoc32\data\z\resource\esmrgui.rsc" - "c:\resource\esmrgui.rsc" "\epoc32\data\z\resource\esmrtasks.rsc" - "c:\resource\esmrtasks.rsc" diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/sis/commonemail_udeb_loc.pkg --- a/emailuis/emailui/sis/commonemail_udeb_loc.pkg Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/sis/commonemail_udeb_loc.pkg Fri Mar 12 15:41:14 2010 +0200 @@ -175,15 +175,6 @@ ;"\epoc32\data\z\resource\apps\fscsendplugin.rsc" - "c:\resource\apps\fscsendplugin.rsc" "\epoc32\data\z\resource\apps\fscsendplugin.mif" - "c:\resource\apps\fscsendplugin.mif" -; emailcontacts / remotecontactlookup -"\epoc32\release\armv5\udeb\pbkxrclservice.dll" - "c:\sys\bin\pbkxrclservice.dll" -"\epoc32\data\Z\Resource\Plugins\pbkxrclservice.rsc" - "c:\resource\plugins\pbkxrclservice.rsc" -"\epoc32\release\armv5\udeb\pbkxrclengine.dll" - "c:\sys\bin\pbkxrclengine.dll" -; Following line is localized, so this Engineering English line is commented out -;"\epoc32\data\z\resource\apps\pbkxrclengine.rsc" - "c:\resource\apps\pbkxrclengine.rsc" -"\epoc32\data\z\resource\apps\pbkxrclengine.mif" - "c:\resource\apps\pbkxrclengine.mif" -"\epoc32\data\Z\private\10202BE9\2001F3FE.txt" - "c:\private\10202be9\2001F3FE.txt" - ; meetingrequest ; Following line is localized, so this Engineering English line is commented out ;"\epoc32\data\z\resource\esmrgui.rsc" - "c:\resource\esmrgui.rsc" @@ -266,7 +257,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r01" - "c:\resource\apps\fsccallplugin.r01" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r01" - "c:\resource\apps\fscsaveascontactplugin.r01" "\epoc32\data\z\resource\apps\fscsendplugin.r01" - "c:\resource\apps\fscsendplugin.r01" - "\epoc32\data\z\resource\apps\pbkxrclengine.r01" - "c:\resource\apps\pbkxrclengine.r01" "\epoc32\data\z\resource\esmrgui.r01" - "c:\resource\esmrgui.r01" "\epoc32\data\z\resource\esmrtasks.r01" - "c:\resource\esmrtasks.r01" "\epoc32\data\z\resource\esmrcasplugindata.r01" - "c:\resource\esmrcasplugindata.r01" @@ -283,7 +273,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r02" - "c:\resource\apps\fsccallplugin.r02" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r02" - "c:\resource\apps\fscsaveascontactplugin.r02" "\epoc32\data\z\resource\apps\fscsendplugin.r02" - "c:\resource\apps\fscsendplugin.r02" - "\epoc32\data\z\resource\apps\pbkxrclengine.r02" - "c:\resource\apps\pbkxrclengine.r02" "\epoc32\data\z\resource\esmrgui.r02" - "c:\resource\esmrgui.r02" "\epoc32\data\z\resource\esmrtasks.r02" - "c:\resource\esmrtasks.r02" "\epoc32\data\z\resource\esmrcasplugindata.r02" - "c:\resource\esmrcasplugindata.r02" @@ -300,7 +289,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r03" - "c:\resource\apps\fsccallplugin.r03" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r03" - "c:\resource\apps\fscsaveascontactplugin.r03" "\epoc32\data\z\resource\apps\fscsendplugin.r03" - "c:\resource\apps\fscsendplugin.r03" - "\epoc32\data\z\resource\apps\pbkxrclengine.r03" - "c:\resource\apps\pbkxrclengine.r03" "\epoc32\data\z\resource\esmrgui.r03" - "c:\resource\esmrgui.r03" "\epoc32\data\z\resource\esmrtasks.r03" - "c:\resource\esmrtasks.r03" "\epoc32\data\z\resource\esmrcasplugindata.r03" - "c:\resource\esmrcasplugindata.r03" @@ -317,7 +305,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r04" - "c:\resource\apps\fsccallplugin.r04" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r04" - "c:\resource\apps\fscsaveascontactplugin.r04" "\epoc32\data\z\resource\apps\fscsendplugin.r04" - "c:\resource\apps\fscsendplugin.r04" - "\epoc32\data\z\resource\apps\pbkxrclengine.r04" - "c:\resource\apps\pbkxrclengine.r04" "\epoc32\data\z\resource\esmrgui.r04" - "c:\resource\esmrgui.r04" "\epoc32\data\z\resource\esmrtasks.r04" - "c:\resource\esmrtasks.r04" "\epoc32\data\z\resource\esmrcasplugindata.r04" - "c:\resource\esmrcasplugindata.r04" @@ -334,7 +321,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r05" - "c:\resource\apps\fsccallplugin.r05" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r05" - "c:\resource\apps\fscsaveascontactplugin.r05" "\epoc32\data\z\resource\apps\fscsendplugin.r05" - "c:\resource\apps\fscsendplugin.r05" - "\epoc32\data\z\resource\apps\pbkxrclengine.r05" - "c:\resource\apps\pbkxrclengine.r05" "\epoc32\data\z\resource\esmrgui.r05" - "c:\resource\esmrgui.r05" "\epoc32\data\z\resource\esmrtasks.r05" - "c:\resource\esmrtasks.r05" "\epoc32\data\z\resource\esmrcasplugindata.r05" - "c:\resource\esmrcasplugindata.r05" @@ -351,7 +337,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r06" - "c:\resource\apps\fsccallplugin.r06" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r06" - "c:\resource\apps\fscsaveascontactplugin.r06" "\epoc32\data\z\resource\apps\fscsendplugin.r06" - "c:\resource\apps\fscsendplugin.r06" - "\epoc32\data\z\resource\apps\pbkxrclengine.r06" - "c:\resource\apps\pbkxrclengine.r06" "\epoc32\data\z\resource\esmrgui.r06" - "c:\resource\esmrgui.r06" "\epoc32\data\z\resource\esmrtasks.r06" - "c:\resource\esmrtasks.r06" "\epoc32\data\z\resource\esmrcasplugindata.r06" - "c:\resource\esmrcasplugindata.r06" @@ -368,7 +353,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r07" - "c:\resource\apps\fsccallplugin.r07" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r07" - "c:\resource\apps\fscsaveascontactplugin.r07" "\epoc32\data\z\resource\apps\fscsendplugin.r07" - "c:\resource\apps\fscsendplugin.r07" - "\epoc32\data\z\resource\apps\pbkxrclengine.r07" - "c:\resource\apps\pbkxrclengine.r07" "\epoc32\data\z\resource\esmrgui.r07" - "c:\resource\esmrgui.r07" "\epoc32\data\z\resource\esmrtasks.r07" - "c:\resource\esmrtasks.r07" "\epoc32\data\z\resource\esmrcasplugindata.r07" - "c:\resource\esmrcasplugindata.r07" @@ -385,7 +369,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r08" - "c:\resource\apps\fsccallplugin.r08" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r08" - "c:\resource\apps\fscsaveascontactplugin.r08" "\epoc32\data\z\resource\apps\fscsendplugin.r08" - "c:\resource\apps\fscsendplugin.r08" - "\epoc32\data\z\resource\apps\pbkxrclengine.r08" - "c:\resource\apps\pbkxrclengine.r08" "\epoc32\data\z\resource\esmrgui.r08" - "c:\resource\esmrgui.r08" "\epoc32\data\z\resource\esmrtasks.r08" - "c:\resource\esmrtasks.r08" "\epoc32\data\z\resource\esmrcasplugindata.r08" - "c:\resource\esmrcasplugindata.r08" @@ -402,7 +385,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r09" - "c:\resource\apps\fsccallplugin.r09" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r09" - "c:\resource\apps\fscsaveascontactplugin.r09" "\epoc32\data\z\resource\apps\fscsendplugin.r09" - "c:\resource\apps\fscsendplugin.r09" - "\epoc32\data\z\resource\apps\pbkxrclengine.r09" - "c:\resource\apps\pbkxrclengine.r09" "\epoc32\data\z\resource\esmrgui.r09" - "c:\resource\esmrgui.r09" "\epoc32\data\z\resource\esmrtasks.r09" - "c:\resource\esmrtasks.r09" "\epoc32\data\z\resource\esmrcasplugindata.r09" - "c:\resource\esmrcasplugindata.r09" @@ -419,7 +401,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r10" - "c:\resource\apps\fsccallplugin.r10" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r10" - "c:\resource\apps\fscsaveascontactplugin.r10" "\epoc32\data\z\resource\apps\fscsendplugin.r10" - "c:\resource\apps\fscsendplugin.r10" - "\epoc32\data\z\resource\apps\pbkxrclengine.r10" - "c:\resource\apps\pbkxrclengine.r10" "\epoc32\data\z\resource\esmrgui.r10" - "c:\resource\esmrgui.r10" "\epoc32\data\z\resource\esmrtasks.r10" - "c:\resource\esmrtasks.r10" "\epoc32\data\z\resource\esmrcasplugindata.r10" - "c:\resource\esmrcasplugindata.r10" @@ -436,7 +417,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r13" - "c:\resource\apps\fsccallplugin.r13" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r13" - "c:\resource\apps\fscsaveascontactplugin.r13" "\epoc32\data\z\resource\apps\fscsendplugin.r13" - "c:\resource\apps\fscsendplugin.r13" - "\epoc32\data\z\resource\apps\pbkxrclengine.r13" - "c:\resource\apps\pbkxrclengine.r13" "\epoc32\data\z\resource\esmrgui.r13" - "c:\resource\esmrgui.r13" "\epoc32\data\z\resource\esmrtasks.r13" - "c:\resource\esmrtasks.r13" "\epoc32\data\z\resource\esmrcasplugindata.r13" - "c:\resource\esmrcasplugindata.r13" @@ -453,7 +433,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r14" - "c:\resource\apps\fsccallplugin.r14" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r14" - "c:\resource\apps\fscsaveascontactplugin.r14" "\epoc32\data\z\resource\apps\fscsendplugin.r14" - "c:\resource\apps\fscsendplugin.r14" - "\epoc32\data\z\resource\apps\pbkxrclengine.r14" - "c:\resource\apps\pbkxrclengine.r14" "\epoc32\data\z\resource\esmrgui.r14" - "c:\resource\esmrgui.r14" "\epoc32\data\z\resource\esmrtasks.r14" - "c:\resource\esmrtasks.r14" "\epoc32\data\z\resource\esmrcasplugindata.r14" - "c:\resource\esmrcasplugindata.r14" @@ -470,7 +449,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r15" - "c:\resource\apps\fsccallplugin.r15" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r15" - "c:\resource\apps\fscsaveascontactplugin.r15" "\epoc32\data\z\resource\apps\fscsendplugin.r15" - "c:\resource\apps\fscsendplugin.r15" - "\epoc32\data\z\resource\apps\pbkxrclengine.r15" - "c:\resource\apps\pbkxrclengine.r15" "\epoc32\data\z\resource\esmrgui.r15" - "c:\resource\esmrgui.r15" "\epoc32\data\z\resource\esmrtasks.r15" - "c:\resource\esmrtasks.r15" "\epoc32\data\z\resource\esmrcasplugindata.r15" - "c:\resource\esmrcasplugindata.r15" @@ -487,7 +465,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r16" - "c:\resource\apps\fsccallplugin.r16" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r16" - "c:\resource\apps\fscsaveascontactplugin.r16" "\epoc32\data\z\resource\apps\fscsendplugin.r16" - "c:\resource\apps\fscsendplugin.r16" - "\epoc32\data\z\resource\apps\pbkxrclengine.r16" - "c:\resource\apps\pbkxrclengine.r16" "\epoc32\data\z\resource\esmrgui.r16" - "c:\resource\esmrgui.r16" "\epoc32\data\z\resource\esmrtasks.r16" - "c:\resource\esmrtasks.r16" "\epoc32\data\z\resource\esmrcasplugindata.r16" - "c:\resource\esmrcasplugindata.r16" @@ -504,7 +481,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r17" - "c:\resource\apps\fsccallplugin.r17" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r17" - "c:\resource\apps\fscsaveascontactplugin.r17" "\epoc32\data\z\resource\apps\fscsendplugin.r17" - "c:\resource\apps\fscsendplugin.r17" - "\epoc32\data\z\resource\apps\pbkxrclengine.r17" - "c:\resource\apps\pbkxrclengine.r17" "\epoc32\data\z\resource\esmrgui.r17" - "c:\resource\esmrgui.r17" "\epoc32\data\z\resource\esmrtasks.r17" - "c:\resource\esmrtasks.r17" "\epoc32\data\z\resource\esmrcasplugindata.r17" - "c:\resource\esmrcasplugindata.r17" @@ -521,7 +497,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r18" - "c:\resource\apps\fsccallplugin.r18" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r18" - "c:\resource\apps\fscsaveascontactplugin.r18" "\epoc32\data\z\resource\apps\fscsendplugin.r18" - "c:\resource\apps\fscsendplugin.r18" - "\epoc32\data\z\resource\apps\pbkxrclengine.r18" - "c:\resource\apps\pbkxrclengine.r18" "\epoc32\data\z\resource\esmrgui.r18" - "c:\resource\esmrgui.r18" "\epoc32\data\z\resource\esmrtasks.r18" - "c:\resource\esmrtasks.r18" "\epoc32\data\z\resource\esmrcasplugindata.r18" - "c:\resource\esmrcasplugindata.r18" @@ -538,7 +513,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r25" - "c:\resource\apps\fsccallplugin.r25" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r25" - "c:\resource\apps\fscsaveascontactplugin.r25" "\epoc32\data\z\resource\apps\fscsendplugin.r25" - "c:\resource\apps\fscsendplugin.r25" - "\epoc32\data\z\resource\apps\pbkxrclengine.r25" - "c:\resource\apps\pbkxrclengine.r25" "\epoc32\data\z\resource\esmrgui.r25" - "c:\resource\esmrgui.r25" "\epoc32\data\z\resource\esmrtasks.r25" - "c:\resource\esmrtasks.r25" "\epoc32\data\z\resource\esmrcasplugindata.r25" - "c:\resource\esmrcasplugindata.r25" @@ -555,7 +529,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r26" - "c:\resource\apps\fsccallplugin.r26" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r26" - "c:\resource\apps\fscsaveascontactplugin.r26" "\epoc32\data\z\resource\apps\fscsendplugin.r26" - "c:\resource\apps\fscsendplugin.r26" - "\epoc32\data\z\resource\apps\pbkxrclengine.r26" - "c:\resource\apps\pbkxrclengine.r26" "\epoc32\data\z\resource\esmrgui.r26" - "c:\resource\esmrgui.r26" "\epoc32\data\z\resource\esmrtasks.r26" - "c:\resource\esmrtasks.r26" "\epoc32\data\z\resource\esmrcasplugindata.r26" - "c:\resource\esmrcasplugindata.r26" @@ -572,7 +545,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r27" - "c:\resource\apps\fsccallplugin.r27" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r27" - "c:\resource\apps\fscsaveascontactplugin.r27" "\epoc32\data\z\resource\apps\fscsendplugin.r27" - "c:\resource\apps\fscsendplugin.r27" - "\epoc32\data\z\resource\apps\pbkxrclengine.r27" - "c:\resource\apps\pbkxrclengine.r27" "\epoc32\data\z\resource\esmrgui.r27" - "c:\resource\esmrgui.r27" "\epoc32\data\z\resource\esmrtasks.r27" - "c:\resource\esmrtasks.r27" "\epoc32\data\z\resource\esmrcasplugindata.r27" - "c:\resource\esmrcasplugindata.r27" @@ -589,7 +561,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r28" - "c:\resource\apps\fsccallplugin.r28" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r28" - "c:\resource\apps\fscsaveascontactplugin.r28" "\epoc32\data\z\resource\apps\fscsendplugin.r28" - "c:\resource\apps\fscsendplugin.r28" - "\epoc32\data\z\resource\apps\pbkxrclengine.r28" - "c:\resource\apps\pbkxrclengine.r28" "\epoc32\data\z\resource\esmrgui.r28" - "c:\resource\esmrgui.r28" "\epoc32\data\z\resource\esmrtasks.r28" - "c:\resource\esmrtasks.r28" "\epoc32\data\z\resource\esmrcasplugindata.r28" - "c:\resource\esmrcasplugindata.r28" @@ -606,7 +577,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r29" - "c:\resource\apps\fsccallplugin.r29" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r29" - "c:\resource\apps\fscsaveascontactplugin.r29" "\epoc32\data\z\resource\apps\fscsendplugin.r29" - "c:\resource\apps\fscsendplugin.r29" - "\epoc32\data\z\resource\apps\pbkxrclengine.r29" - "c:\resource\apps\pbkxrclengine.r29" "\epoc32\data\z\resource\esmrgui.r29" - "c:\resource\esmrgui.r29" "\epoc32\data\z\resource\esmrtasks.r29" - "c:\resource\esmrtasks.r29" "\epoc32\data\z\resource\esmrcasplugindata.r29" - "c:\resource\esmrcasplugindata.r29" @@ -623,7 +593,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r30" - "c:\resource\apps\fsccallplugin.r30" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r30" - "c:\resource\apps\fscsaveascontactplugin.r30" "\epoc32\data\z\resource\apps\fscsendplugin.r30" - "c:\resource\apps\fscsendplugin.r30" - "\epoc32\data\z\resource\apps\pbkxrclengine.r30" - "c:\resource\apps\pbkxrclengine.r30" "\epoc32\data\z\resource\esmrgui.r30" - "c:\resource\esmrgui.r30" "\epoc32\data\z\resource\esmrtasks.r30" - "c:\resource\esmrtasks.r30" "\epoc32\data\z\resource\esmrcasplugindata.r30" - "c:\resource\esmrcasplugindata.r30" @@ -640,7 +609,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r31" - "c:\resource\apps\fsccallplugin.r31" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r31" - "c:\resource\apps\fscsaveascontactplugin.r31" "\epoc32\data\z\resource\apps\fscsendplugin.r31" - "c:\resource\apps\fscsendplugin.r31" - "\epoc32\data\z\resource\apps\pbkxrclengine.r31" - "c:\resource\apps\pbkxrclengine.r31" "\epoc32\data\z\resource\esmrgui.r31" - "c:\resource\esmrgui.r31" "\epoc32\data\z\resource\esmrtasks.r31" - "c:\resource\esmrtasks.r31" "\epoc32\data\z\resource\esmrcasplugindata.r31" - "c:\resource\esmrcasplugindata.r31" @@ -657,7 +625,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r32" - "c:\resource\apps\fsccallplugin.r32" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r32" - "c:\resource\apps\fscsaveascontactplugin.r32" "\epoc32\data\z\resource\apps\fscsendplugin.r32" - "c:\resource\apps\fscsendplugin.r32" - "\epoc32\data\z\resource\apps\pbkxrclengine.r32" - "c:\resource\apps\pbkxrclengine.r32" "\epoc32\data\z\resource\esmrgui.r32" - "c:\resource\esmrgui.r32" "\epoc32\data\z\resource\esmrtasks.r32" - "c:\resource\esmrtasks.r32" "\epoc32\data\z\resource\esmrcasplugindata.r32" - "c:\resource\esmrcasplugindata.r32" @@ -674,7 +641,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r33" - "c:\resource\apps\fsccallplugin.r33" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r33" - "c:\resource\apps\fscsaveascontactplugin.r33" "\epoc32\data\z\resource\apps\fscsendplugin.r33" - "c:\resource\apps\fscsendplugin.r33" - "\epoc32\data\z\resource\apps\pbkxrclengine.r33" - "c:\resource\apps\pbkxrclengine.r33" "\epoc32\data\z\resource\esmrgui.r33" - "c:\resource\esmrgui.r33" "\epoc32\data\z\resource\esmrtasks.r33" - "c:\resource\esmrtasks.r33" "\epoc32\data\z\resource\esmrcasplugindata.r33" - "c:\resource\esmrcasplugindata.r33" @@ -691,7 +657,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r37" - "c:\resource\apps\fsccallplugin.r37" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r37" - "c:\resource\apps\fscsaveascontactplugin.r37" "\epoc32\data\z\resource\apps\fscsendplugin.r37" - "c:\resource\apps\fscsendplugin.r37" - "\epoc32\data\z\resource\apps\pbkxrclengine.r37" - "c:\resource\apps\pbkxrclengine.r37" "\epoc32\data\z\resource\esmrgui.r37" - "c:\resource\esmrgui.r37" "\epoc32\data\z\resource\esmrtasks.r37" - "c:\resource\esmrtasks.r37" "\epoc32\data\z\resource\esmrcasplugindata.r37" - "c:\resource\esmrcasplugindata.r37" @@ -708,7 +673,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r39" - "c:\resource\apps\fsccallplugin.r39" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r39" - "c:\resource\apps\fscsaveascontactplugin.r39" "\epoc32\data\z\resource\apps\fscsendplugin.r39" - "c:\resource\apps\fscsendplugin.r39" - "\epoc32\data\z\resource\apps\pbkxrclengine.r39" - "c:\resource\apps\pbkxrclengine.r39" "\epoc32\data\z\resource\esmrgui.r39" - "c:\resource\esmrgui.r39" "\epoc32\data\z\resource\esmrtasks.r39" - "c:\resource\esmrtasks.r39" "\epoc32\data\z\resource\esmrcasplugindata.r39" - "c:\resource\esmrcasplugindata.r39" @@ -725,7 +689,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r42" - "c:\resource\apps\fsccallplugin.r42" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r42" - "c:\resource\apps\fscsaveascontactplugin.r42" "\epoc32\data\z\resource\apps\fscsendplugin.r42" - "c:\resource\apps\fscsendplugin.r42" - "\epoc32\data\z\resource\apps\pbkxrclengine.r42" - "c:\resource\apps\pbkxrclengine.r42" "\epoc32\data\z\resource\esmrgui.r42" - "c:\resource\esmrgui.r42" "\epoc32\data\z\resource\esmrtasks.r42" - "c:\resource\esmrtasks.r42" "\epoc32\data\z\resource\esmrcasplugindata.r42" - "c:\resource\esmrcasplugindata.r42" @@ -742,7 +705,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r44" - "c:\resource\apps\fsccallplugin.r44" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r44" - "c:\resource\apps\fscsaveascontactplugin.r44" "\epoc32\data\z\resource\apps\fscsendplugin.r44" - "c:\resource\apps\fscsendplugin.r44" - "\epoc32\data\z\resource\apps\pbkxrclengine.r44" - "c:\resource\apps\pbkxrclengine.r44" "\epoc32\data\z\resource\esmrgui.r44" - "c:\resource\esmrgui.r44" "\epoc32\data\z\resource\esmrtasks.r44" - "c:\resource\esmrtasks.r44" "\epoc32\data\z\resource\esmrcasplugindata.r44" - "c:\resource\esmrcasplugindata.r44" @@ -759,7 +721,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r45" - "c:\resource\apps\fsccallplugin.r45" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r45" - "c:\resource\apps\fscsaveascontactplugin.r45" "\epoc32\data\z\resource\apps\fscsendplugin.r45" - "c:\resource\apps\fscsendplugin.r45" - "\epoc32\data\z\resource\apps\pbkxrclengine.r45" - "c:\resource\apps\pbkxrclengine.r45" "\epoc32\data\z\resource\esmrgui.r45" - "c:\resource\esmrgui.r45" "\epoc32\data\z\resource\esmrtasks.r45" - "c:\resource\esmrtasks.r45" "\epoc32\data\z\resource\esmrcasplugindata.r45" - "c:\resource\esmrcasplugindata.r45" @@ -776,7 +737,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r49" - "c:\resource\apps\fsccallplugin.r49" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r49" - "c:\resource\apps\fscsaveascontactplugin.r49" "\epoc32\data\z\resource\apps\fscsendplugin.r49" - "c:\resource\apps\fscsendplugin.r49" - "\epoc32\data\z\resource\apps\pbkxrclengine.r49" - "c:\resource\apps\pbkxrclengine.r49" "\epoc32\data\z\resource\esmrgui.r49" - "c:\resource\esmrgui.r49" "\epoc32\data\z\resource\esmrtasks.r49" - "c:\resource\esmrtasks.r49" "\epoc32\data\z\resource\esmrcasplugindata.r49" - "c:\resource\esmrcasplugindata.r49" @@ -793,7 +753,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r50" - "c:\resource\apps\fsccallplugin.r50" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r50" - "c:\resource\apps\fscsaveascontactplugin.r50" "\epoc32\data\z\resource\apps\fscsendplugin.r50" - "c:\resource\apps\fscsendplugin.r50" - "\epoc32\data\z\resource\apps\pbkxrclengine.r50" - "c:\resource\apps\pbkxrclengine.r50" "\epoc32\data\z\resource\esmrgui.r50" - "c:\resource\esmrgui.r50" "\epoc32\data\z\resource\esmrtasks.r50" - "c:\resource\esmrtasks.r50" "\epoc32\data\z\resource\esmrcasplugindata.r50" - "c:\resource\esmrcasplugindata.r50" @@ -810,7 +769,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r51" - "c:\resource\apps\fsccallplugin.r51" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r51" - "c:\resource\apps\fscsaveascontactplugin.r51" "\epoc32\data\z\resource\apps\fscsendplugin.r51" - "c:\resource\apps\fscsendplugin.r51" - "\epoc32\data\z\resource\apps\pbkxrclengine.r51" - "c:\resource\apps\pbkxrclengine.r51" "\epoc32\data\z\resource\esmrgui.r51" - "c:\resource\esmrgui.r51" "\epoc32\data\z\resource\esmrtasks.r51" - "c:\resource\esmrtasks.r51" "\epoc32\data\z\resource\esmrcasplugindata.r51" - "c:\resource\esmrcasplugindata.r51" @@ -827,7 +785,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r54" - "c:\resource\apps\fsccallplugin.r54" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r54" - "c:\resource\apps\fscsaveascontactplugin.r54" "\epoc32\data\z\resource\apps\fscsendplugin.r54" - "c:\resource\apps\fscsendplugin.r54" - "\epoc32\data\z\resource\apps\pbkxrclengine.r54" - "c:\resource\apps\pbkxrclengine.r54" "\epoc32\data\z\resource\esmrgui.r54" - "c:\resource\esmrgui.r54" "\epoc32\data\z\resource\esmrtasks.r54" - "c:\resource\esmrtasks.r54" "\epoc32\data\z\resource\esmrcasplugindata.r54" - "c:\resource\esmrcasplugindata.r54" @@ -844,7 +801,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r57" - "c:\resource\apps\fsccallplugin.r57" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r57" - "c:\resource\apps\fscsaveascontactplugin.r57" "\epoc32\data\z\resource\apps\fscsendplugin.r57" - "c:\resource\apps\fscsendplugin.r57" - "\epoc32\data\z\resource\apps\pbkxrclengine.r57" - "c:\resource\apps\pbkxrclengine.r57" "\epoc32\data\z\resource\esmrgui.r57" - "c:\resource\esmrgui.r57" "\epoc32\data\z\resource\esmrtasks.r57" - "c:\resource\esmrtasks.r57" "\epoc32\data\z\resource\esmrcasplugindata.r57" - "c:\resource\esmrcasplugindata.r57" @@ -861,7 +817,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r59" - "c:\resource\apps\fsccallplugin.r59" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r59" - "c:\resource\apps\fscsaveascontactplugin.r59" "\epoc32\data\z\resource\apps\fscsendplugin.r59" - "c:\resource\apps\fscsendplugin.r59" - "\epoc32\data\z\resource\apps\pbkxrclengine.r59" - "c:\resource\apps\pbkxrclengine.r59" "\epoc32\data\z\resource\esmrgui.r59" - "c:\resource\esmrgui.r59" "\epoc32\data\z\resource\esmrtasks.r59" - "c:\resource\esmrtasks.r59" "\epoc32\data\z\resource\esmrcasplugindata.r59" - "c:\resource\esmrcasplugindata.r59" @@ -878,7 +833,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r67" - "c:\resource\apps\fsccallplugin.r67" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r67" - "c:\resource\apps\fscsaveascontactplugin.r67" "\epoc32\data\z\resource\apps\fscsendplugin.r67" - "c:\resource\apps\fscsendplugin.r67" - "\epoc32\data\z\resource\apps\pbkxrclengine.r67" - "c:\resource\apps\pbkxrclengine.r67" "\epoc32\data\z\resource\esmrgui.r67" - "c:\resource\esmrgui.r67" "\epoc32\data\z\resource\esmrtasks.r67" - "c:\resource\esmrtasks.r67" "\epoc32\data\z\resource\esmrcasplugindata.r67" - "c:\resource\esmrcasplugindata.r67" @@ -895,7 +849,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r68" - "c:\resource\apps\fsccallplugin.r68" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r68" - "c:\resource\apps\fscsaveascontactplugin.r68" "\epoc32\data\z\resource\apps\fscsendplugin.r68" - "c:\resource\apps\fscsendplugin.r68" - "\epoc32\data\z\resource\apps\pbkxrclengine.r68" - "c:\resource\apps\pbkxrclengine.r68" "\epoc32\data\z\resource\esmrgui.r68" - "c:\resource\esmrgui.r68" "\epoc32\data\z\resource\esmrtasks.r68" - "c:\resource\esmrtasks.r68" "\epoc32\data\z\resource\esmrcasplugindata.r68" - "c:\resource\esmrcasplugindata.r68" @@ -912,7 +865,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r70" - "c:\resource\apps\fsccallplugin.r70" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r70" - "c:\resource\apps\fscsaveascontactplugin.r70" "\epoc32\data\z\resource\apps\fscsendplugin.r70" - "c:\resource\apps\fscsendplugin.r70" - "\epoc32\data\z\resource\apps\pbkxrclengine.r70" - "c:\resource\apps\pbkxrclengine.r70" "\epoc32\data\z\resource\esmrgui.r70" - "c:\resource\esmrgui.r70" "\epoc32\data\z\resource\esmrtasks.r70" - "c:\resource\esmrtasks.r70" "\epoc32\data\z\resource\esmrcasplugindata.r70" - "c:\resource\esmrcasplugindata.r70" @@ -929,7 +881,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r76" - "c:\resource\apps\fsccallplugin.r76" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r76" - "c:\resource\apps\fscsaveascontactplugin.r76" "\epoc32\data\z\resource\apps\fscsendplugin.r76" - "c:\resource\apps\fscsendplugin.r76" - "\epoc32\data\z\resource\apps\pbkxrclengine.r76" - "c:\resource\apps\pbkxrclengine.r76" "\epoc32\data\z\resource\esmrgui.r76" - "c:\resource\esmrgui.r76" "\epoc32\data\z\resource\esmrtasks.r76" - "c:\resource\esmrtasks.r76" "\epoc32\data\z\resource\esmrcasplugindata.r76" - "c:\resource\esmrcasplugindata.r76" @@ -946,7 +897,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r78" - "c:\resource\apps\fsccallplugin.r78" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r78" - "c:\resource\apps\fscsaveascontactplugin.r78" "\epoc32\data\z\resource\apps\fscsendplugin.r78" - "c:\resource\apps\fscsendplugin.r78" - "\epoc32\data\z\resource\apps\pbkxrclengine.r78" - "c:\resource\apps\pbkxrclengine.r78" "\epoc32\data\z\resource\esmrgui.r78" - "c:\resource\esmrgui.r78" "\epoc32\data\z\resource\esmrtasks.r78" - "c:\resource\esmrtasks.r78" "\epoc32\data\z\resource\esmrcasplugindata.r78" - "c:\resource\esmrcasplugindata.r78" @@ -963,7 +913,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r79" - "c:\resource\apps\fsccallplugin.r79" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r79" - "c:\resource\apps\fscsaveascontactplugin.r79" "\epoc32\data\z\resource\apps\fscsendplugin.r79" - "c:\resource\apps\fscsendplugin.r79" - "\epoc32\data\z\resource\apps\pbkxrclengine.r79" - "c:\resource\apps\pbkxrclengine.r79" "\epoc32\data\z\resource\esmrgui.r79" - "c:\resource\esmrgui.r79" "\epoc32\data\z\resource\esmrtasks.r79" - "c:\resource\esmrtasks.r79" "\epoc32\data\z\resource\esmrcasplugindata.r79" - "c:\resource\esmrcasplugindata.r79" @@ -980,7 +929,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r83" - "c:\resource\apps\fsccallplugin.r83" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r83" - "c:\resource\apps\fscsaveascontactplugin.r83" "\epoc32\data\z\resource\apps\fscsendplugin.r83" - "c:\resource\apps\fscsendplugin.r83" - "\epoc32\data\z\resource\apps\pbkxrclengine.r83" - "c:\resource\apps\pbkxrclengine.r83" "\epoc32\data\z\resource\esmrgui.r83" - "c:\resource\esmrgui.r83" "\epoc32\data\z\resource\esmrtasks.r83" - "c:\resource\esmrtasks.r83" "\epoc32\data\z\resource\esmrcasplugindata.r83" - "c:\resource\esmrcasplugindata.r83" @@ -997,7 +945,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r93" - "c:\resource\apps\fsccallplugin.r93" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r93" - "c:\resource\apps\fscsaveascontactplugin.r93" "\epoc32\data\z\resource\apps\fscsendplugin.r93" - "c:\resource\apps\fscsendplugin.r93" - "\epoc32\data\z\resource\apps\pbkxrclengine.r93" - "c:\resource\apps\pbkxrclengine.r93" "\epoc32\data\z\resource\esmrgui.r93" - "c:\resource\esmrgui.r93" "\epoc32\data\z\resource\esmrtasks.r93" - "c:\resource\esmrtasks.r93" "\epoc32\data\z\resource\esmrcasplugindata.r93" - "c:\resource\esmrcasplugindata.r93" @@ -1014,7 +961,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r94" - "c:\resource\apps\fsccallplugin.r94" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r94" - "c:\resource\apps\fscsaveascontactplugin.r94" "\epoc32\data\z\resource\apps\fscsendplugin.r94" - "c:\resource\apps\fscsendplugin.r94" - "\epoc32\data\z\resource\apps\pbkxrclengine.r94" - "c:\resource\apps\pbkxrclengine.r94" "\epoc32\data\z\resource\esmrgui.r94" - "c:\resource\esmrgui.r94" "\epoc32\data\z\resource\esmrtasks.r94" - "c:\resource\esmrtasks.r94" "\epoc32\data\z\resource\esmrcasplugindata.r94" - "c:\resource\esmrcasplugindata.r94" @@ -1031,7 +977,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r96" - "c:\resource\apps\fsccallplugin.r96" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r96" - "c:\resource\apps\fscsaveascontactplugin.r96" "\epoc32\data\z\resource\apps\fscsendplugin.r96" - "c:\resource\apps\fscsendplugin.r96" - "\epoc32\data\z\resource\apps\pbkxrclengine.r96" - "c:\resource\apps\pbkxrclengine.r96" "\epoc32\data\z\resource\esmrgui.r96" - "c:\resource\esmrgui.r96" "\epoc32\data\z\resource\esmrtasks.r96" - "c:\resource\esmrtasks.r96" "\epoc32\data\z\resource\esmrcasplugindata.r96" - "c:\resource\esmrcasplugindata.r96" @@ -1048,7 +993,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r102" - "c:\resource\apps\fsccallplugin.r102" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r102" - "c:\resource\apps\fscsaveascontactplugin.r102" "\epoc32\data\z\resource\apps\fscsendplugin.r102" - "c:\resource\apps\fscsendplugin.r102" - "\epoc32\data\z\resource\apps\pbkxrclengine.r102" - "c:\resource\apps\pbkxrclengine.r102" "\epoc32\data\z\resource\esmrgui.r102" - "c:\resource\esmrgui.r102" "\epoc32\data\z\resource\esmrtasks.r102" - "c:\resource\esmrtasks.r102" "\epoc32\data\z\resource\esmrcasplugindata.r102" - "c:\resource\esmrcasplugindata.r102" @@ -1065,7 +1009,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r103" - "c:\resource\apps\fsccallplugin.r103" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r103" - "c:\resource\apps\fscsaveascontactplugin.r103" "\epoc32\data\z\resource\apps\fscsendplugin.r103" - "c:\resource\apps\fscsendplugin.r103" - "\epoc32\data\z\resource\apps\pbkxrclengine.r103" - "c:\resource\apps\pbkxrclengine.r103" "\epoc32\data\z\resource\esmrgui.r103" - "c:\resource\esmrgui.r103" "\epoc32\data\z\resource\esmrtasks.r103" - "c:\resource\esmrtasks.r103" "\epoc32\data\z\resource\esmrcasplugindata.r103" - "c:\resource\esmrcasplugindata.r103" @@ -1082,7 +1025,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r129" - "c:\resource\apps\fsccallplugin.r129" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r129" - "c:\resource\apps\fscsaveascontactplugin.r129" "\epoc32\data\z\resource\apps\fscsendplugin.r129" - "c:\resource\apps\fscsendplugin.r129" - "\epoc32\data\z\resource\apps\pbkxrclengine.r129" - "c:\resource\apps\pbkxrclengine.r129" "\epoc32\data\z\resource\esmrgui.r129" - "c:\resource\esmrgui.r129" "\epoc32\data\z\resource\esmrtasks.r129" - "c:\resource\esmrtasks.r129" "\epoc32\data\z\resource\esmrcasplugindata.r129" - "c:\resource\esmrcasplugindata.r129" @@ -1099,7 +1041,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r157" - "c:\resource\apps\fsccallplugin.r157" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r157" - "c:\resource\apps\fscsaveascontactplugin.r157" "\epoc32\data\z\resource\apps\fscsendplugin.r157" - "c:\resource\apps\fscsendplugin.r157" - "\epoc32\data\z\resource\apps\pbkxrclengine.r157" - "c:\resource\apps\pbkxrclengine.r157" "\epoc32\data\z\resource\esmrgui.r157" - "c:\resource\esmrgui.r157" "\epoc32\data\z\resource\esmrtasks.r157" - "c:\resource\esmrtasks.r157" "\epoc32\data\z\resource\esmrcasplugindata.r157" - "c:\resource\esmrcasplugindata.r157" @@ -1116,7 +1057,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r158" - "c:\resource\apps\fsccallplugin.r158" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r158" - "c:\resource\apps\fscsaveascontactplugin.r158" "\epoc32\data\z\resource\apps\fscsendplugin.r158" - "c:\resource\apps\fscsendplugin.r158" - "\epoc32\data\z\resource\apps\pbkxrclengine.r158" - "c:\resource\apps\pbkxrclengine.r158" "\epoc32\data\z\resource\esmrgui.r158" - "c:\resource\esmrgui.r158" "\epoc32\data\z\resource\esmrtasks.r158" - "c:\resource\esmrtasks.r158" "\epoc32\data\z\resource\esmrcasplugindata.r158" - "c:\resource\esmrcasplugindata.r158" @@ -1133,7 +1073,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r159" - "c:\resource\apps\fsccallplugin.r159" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r159" - "c:\resource\apps\fscsaveascontactplugin.r159" "\epoc32\data\z\resource\apps\fscsendplugin.r159" - "c:\resource\apps\fscsendplugin.r159" - "\epoc32\data\z\resource\apps\pbkxrclengine.r159" - "c:\resource\apps\pbkxrclengine.r159" "\epoc32\data\z\resource\esmrgui.r159" - "c:\resource\esmrgui.r159" "\epoc32\data\z\resource\esmrtasks.r159" - "c:\resource\esmrtasks.r159" "\epoc32\data\z\resource\esmrcasplugindata.r159" - "c:\resource\esmrcasplugindata.r159" @@ -1150,7 +1089,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r160" - "c:\resource\apps\fsccallplugin.r160" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r160" - "c:\resource\apps\fscsaveascontactplugin.r160" "\epoc32\data\z\resource\apps\fscsendplugin.r160" - "c:\resource\apps\fscsendplugin.r160" - "\epoc32\data\z\resource\apps\pbkxrclengine.r160" - "c:\resource\apps\pbkxrclengine.r160" "\epoc32\data\z\resource\esmrgui.r160" - "c:\resource\esmrgui.r160" "\epoc32\data\z\resource\esmrtasks.r160" - "c:\resource\esmrtasks.r160" "\epoc32\data\z\resource\esmrcasplugindata.r160" - "c:\resource\esmrcasplugindata.r160" @@ -1167,7 +1105,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r161" - "c:\resource\apps\fsccallplugin.r161" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r161" - "c:\resource\apps\fscsaveascontactplugin.r161" "\epoc32\data\z\resource\apps\fscsendplugin.r161" - "c:\resource\apps\fscsendplugin.r161" - "\epoc32\data\z\resource\apps\pbkxrclengine.r161" - "c:\resource\apps\pbkxrclengine.r161" "\epoc32\data\z\resource\esmrgui.r161" - "c:\resource\esmrgui.r161" "\epoc32\data\z\resource\esmrtasks.r161" - "c:\resource\esmrtasks.r161" "\epoc32\data\z\resource\esmrcasplugindata.r161" - "c:\resource\esmrcasplugindata.r161" @@ -1184,7 +1121,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r326" - "c:\resource\apps\fsccallplugin.r326" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r326" - "c:\resource\apps\fscsaveascontactplugin.r326" "\epoc32\data\z\resource\apps\fscsendplugin.r326" - "c:\resource\apps\fscsendplugin.r326" - "\epoc32\data\z\resource\apps\pbkxrclengine.r326" - "c:\resource\apps\pbkxrclengine.r326" "\epoc32\data\z\resource\esmrgui.r326" - "c:\resource\esmrgui.r326" "\epoc32\data\z\resource\esmrtasks.r326" - "c:\resource\esmrtasks.r326" "\epoc32\data\z\resource\esmrcasplugindata.r326" - "c:\resource\esmrcasplugindata.r326" @@ -1201,7 +1137,6 @@ "\epoc32\data\z\resource\apps\fsccallplugin.r327" - "c:\resource\apps\fsccallplugin.r327" "\epoc32\data\z\resource\apps\fscsaveascontactplugin.r327" - "c:\resource\apps\fscsaveascontactplugin.r327" "\epoc32\data\z\resource\apps\fscsendplugin.r327" - "c:\resource\apps\fscsendplugin.r327" - "\epoc32\data\z\resource\apps\pbkxrclengine.r327" - "c:\resource\apps\pbkxrclengine.r327" "\epoc32\data\z\resource\esmrgui.r327" - "c:\resource\esmrgui.r327" "\epoc32\data\z\resource\esmrtasks.r327" - "c:\resource\esmrtasks.r327" "\epoc32\data\z\resource\esmrcasplugindata.r327" - "c:\resource\esmrcasplugindata.r327" diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/sis/makecommonemailsisx.bat --- a/emailuis/emailui/sis/makecommonemailsisx.bat Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/sis/makecommonemailsisx.bat Fri Mar 12 15:41:14 2010 +0200 @@ -12,8 +12,7 @@ REM * REM * Contributors: REM * -REM * Description: -REM * Script that creates and signs commonemail sisx packages +REM * Description: Script that creates and signs commonemail sisx packages REM * REM Check if the latest added certificate folder/file exists. If not, copy certs from network drive. diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/sis/pkg-localizer.py --- a/emailuis/emailui/sis/pkg-localizer.py Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/sis/pkg-localizer.py Fri Mar 12 15:41:14 2010 +0200 @@ -13,9 +13,8 @@ * * Contributors: * -* Description: -* Python script that can be used to make localized pkg-files based on -* Engineering English pkg-files. Meant only for internal use in Email. +* Description: Python script that can be used to make localized pkg-files +* based on Engineering English pkg-files. Meant only for internal use in Email. * */ """ diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailCenRepHandler.cpp --- a/emailuis/emailui/src/FreestyleEmailCenRepHandler.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailCenRepHandler.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -343,7 +343,7 @@ } return buf; } -/* + // ---------------------------------------------------- // CFSEmailCRHandler::SetDownloadHTMLImages // ---------------------------------------------------- @@ -357,7 +357,6 @@ } } - // ---------------------------------------------------- // CFSEmailCRHandler::DownloadHTMLImages // ---------------------------------------------------- @@ -379,7 +378,7 @@ } return buf; } -*/ + /* // ---------------------------------------------------- // CFSEmailCRHandler::AttachmentFileTypes diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp --- a/emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -145,7 +145,10 @@ // removed from the array before we are finished download = iDownloadArray[idx]; - // In case of error, show a note + // In case of error, show a note. Note that these notes should not + // be displayed synchronously, since otherwise other events can + // occur that delete objects that are still in use waiting for this + // method to complete (see PDOO-7X93JP). if ( aEvent.iError && aEvent.iError != KErrCancel ) { // Download failed, show error note @@ -154,13 +157,13 @@ { // connection error TFsEmailUiUtility::ShowErrorNoteL( R_FREESTYLE_EMAIL_ERROR_GENERAL_CONNECTION_ERROR, - ETrue ); + EFalse ); } else // other error { TFsEmailUiUtility::ShowErrorNoteL( R_FREESTYLE_EMAIL_ERROR_GENERAL_UNABLE_TO_COMPLETE, - ETrue ); + EFalse ); } } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiAknStatusIndicator.cpp --- a/emailuis/emailui/src/FreestyleEmailUiAknStatusIndicator.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiAknStatusIndicator.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -11,6 +11,8 @@ * * Contributors: * +* Description: Implementation for status indicator +* */ #include "FreestyleEmailUiAknStatusIndicator.h" diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiAppui.cpp --- a/emailuis/emailui/src/FreestyleEmailUiAppui.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiAppui.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -87,6 +87,7 @@ #include // hardcoded paths removal from cmail #include "cfsccontactactionmenu.h" // +#include // for Layout_Meta_Data // INTERNAL INCLUDE FILES #include "FreestyleEmailUiContactHandler.h" @@ -106,7 +107,7 @@ #include "FreestyleEmailUiAttachmentsListModel.h" #include "FreestyleEmailUiAttachmentsListVisualiser.h" #include "FreestyleEmailUiAttachmentsListControl.h" -#include "FreestyleEmailCenRepHandler.h" +#include "freestyleemailcenrephandler.h" #include "FreestyleEmailUiSettingsListView.h" #include "FreestyleEmailUiGlobalSettingsListView.h" #include "FreestyleEmailUiDownloadManagerModel.h" @@ -155,6 +156,203 @@ // Length of the drive letter descriptor (e.g. "c:") const TInt KDriveDescLength = 2; + +// TDisplayImagesCache + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::~TDisplayImagesCache +// --------------------------------------------------------------------------- +// +TDisplayImagesCache::~TDisplayImagesCache() + { + iCache.Reset(); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::AddMessageL +// --------------------------------------------------------------------------- +// +void TDisplayImagesCache::AddMessageL( const CFSMailMessageBase& aMsg ) + { + AddMessageL(aMsg.GetMailBoxId(), aMsg.GetMessageId()); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::RemoveMessage +// --------------------------------------------------------------------------- +// +void TDisplayImagesCache::RemoveMessage( const CFSMailMessageBase& aMsg ) + { + RemoveMessage(aMsg.GetMailBoxId(), aMsg.GetMessageId()); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::Contains +// --------------------------------------------------------------------------- +// +TBool TDisplayImagesCache::Contains( const CFSMailMessageBase& aMsg ) const + { + return Contains(aMsg.GetMailBoxId(), aMsg.GetMessageId()); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::AddMessageL +// --------------------------------------------------------------------------- +// +void TDisplayImagesCache::AddMessageL( const TFSMailMsgId& aBoxId, const TFSMailMsgId& aMsgId ) + { + TInt index(MailBoxIndex(aBoxId)); + if (index == KErrNotFound) + { + AddMailBoxL(aBoxId, index); + } + iCache[index].AddMessageL(aMsgId); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::RemoveMessage +// --------------------------------------------------------------------------- +// +void TDisplayImagesCache::RemoveMessage( const TFSMailMsgId& aBoxId, const TFSMailMsgId& aMsgId ) + { + const TInt index(MailBoxIndex(aBoxId)); + if (index != KErrNotFound) + { + iCache[index].RemoveMessage(aMsgId); + } + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::RemoveMailbox +// --------------------------------------------------------------------------- +// +void TDisplayImagesCache::RemoveMailbox( const TFSMailMsgId& aBoxId ) + { + const TInt index(MailBoxIndex(aBoxId)); + if (index != KErrNotFound) + { + iCache.Remove(index); + } + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::Contains +// --------------------------------------------------------------------------- +// +TBool TDisplayImagesCache::Contains( const TFSMailMsgId& aBoxId, const TFSMailMsgId& aMsgId ) const + { + const TInt index(MailBoxIndex(aBoxId)); + if (index != KErrNotFound) + { + return iCache[index].Contains(aMsgId); + } + return EFalse; + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::MailBoxIndex +// --------------------------------------------------------------------------- +// +TInt TDisplayImagesCache::MailBoxIndex( const TFSMailMsgId& aBoxId ) const + { + return iCache.FindInOrder(TItem(aBoxId), TLinearOrder(TItem::CompareItem)); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::AddMailBoxL +// --------------------------------------------------------------------------- +// +void TDisplayImagesCache::AddMailBoxL( const TFSMailMsgId& aBoxId, TInt& aCacheIndex ) + { + aCacheIndex = KErrNotFound; + iCache.InsertInOrderL(TItem(aBoxId), TLinearOrder(TItem::CompareItem)); + aCacheIndex = MailBoxIndex(aBoxId); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::TItem::TItem +// --------------------------------------------------------------------------- +// +TDisplayImagesCache::TItem::TItem( const TFSMailMsgId& aBoxId ) + : iMailBoxId( aBoxId ) + { + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::TItem::~TItem +// --------------------------------------------------------------------------- +// +TDisplayImagesCache::TItem::~TItem() + { + iMessageIds.Reset(); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::TItem::Contains +// --------------------------------------------------------------------------- +// +TBool TDisplayImagesCache::TItem::Contains( const TFSMailMsgId& aMsgId ) const + { + return MessageIndex(aMsgId) != KErrNotFound; + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::TItem::AddMessageL +// --------------------------------------------------------------------------- +// +void TDisplayImagesCache::TItem::AddMessageL( const TFSMailMsgId& aMsgId ) + { + if (!Contains(aMsgId)) + { + iMessageIds.InsertInOrderL(aMsgId, TLinearOrder(TItem::CompareMsgId)); + } + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::TItem::RemoveMessage +// --------------------------------------------------------------------------- +// +void TDisplayImagesCache::TItem::RemoveMessage( const TFSMailMsgId& aMsgId ) + { + const TInt index(MessageIndex(aMsgId)); + if (index != KErrNotFound) + { + iMessageIds.Remove(index); + } + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::TItem::MessageIndex +// --------------------------------------------------------------------------- +// +TInt TDisplayImagesCache::TItem::MessageIndex( const TFSMailMsgId& aMsgId ) const + { + return iMessageIds.FindInOrder(aMsgId, TLinearOrder(TItem::CompareMsgId)); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::TItem::CompareItem +// --------------------------------------------------------------------------- +// +TInt TDisplayImagesCache::TItem::CompareItem( const TItem& aItem1, const TItem& aItem2 ) + { + return CompareMsgId(aItem1.iMailBoxId, aItem2.iMailBoxId); + } + +// --------------------------------------------------------------------------- +// TDisplayImagesCache::TItem::CompareMsgId +// --------------------------------------------------------------------------- +// +TInt TDisplayImagesCache::TItem::CompareMsgId( const TFSMailMsgId& aId1, const TFSMailMsgId& aId2 ) + { + TInt result(aId1.PluginId().iUid - aId2.PluginId().iUid); + if (!result) + { + result = TInt(aId1.Id() - aId2.Id()); + } + return result; + } + // --------------------------------------------------------------------------- // C++ constructor. // --------------------------------------------------------------------------- @@ -165,7 +363,10 @@ iIsCaptured( EFalse ), // init "end key captured" to false iAutomatedMailBoxOnline( EFalse ), iMsgReaderIsSupported( KErrGeneral ), - iSwitchingToBackground( EFalse ) + iSwitchingToBackground( EFalse ), + iHasEmbeddedApp( EFalse ), + iPreviousAppEmbedded( EFalse ), + iEditorStartedFromEmbeddedApp( EFalse ) { FUNC_LOG; iEnv = &aEnv; @@ -246,6 +447,17 @@ // Enable Avkon skins. BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible ); + + // This MUST be after BaseConstructL + MTouchFeedback* touchFeedback(MTouchFeedback::Instance()); + if (touchFeedback == NULL) + { + touchFeedback = MTouchFeedback::CreateInstanceL(); + iTouchFeedbackCreated = ETrue; + } + touchFeedback->SetFeedbackEnabledForThisApp(touchFeedback->TouchFeedbackSupported()); + + // Create instance for Central repository handler iCRHandler = CFSEmailCRHandler::InstanceL(); @@ -533,6 +745,19 @@ delete iNaviDecorator2MailViewer; delete iConnectionStatusIconAnimTimer; + + + MTouchFeedback* touchFeedback( MTouchFeedback::Instance() ); + if (touchFeedback && touchFeedback->TouchFeedbackSupported()) + { + touchFeedback->SetFeedbackEnabledForThisApp(EFalse); + } + + if (iTouchFeedbackCreated) + { + MTouchFeedback::DestroyInstance(); + } + TIMESTAMP( "Application exit" ); } @@ -639,7 +864,7 @@ } // may be tricky; added here to handle activation of composer view from external app when email is plugin settings view // in this case also duplictaed view needs to be poped up, but iSettingsViewActive is already set to EFalse - // other solution would need to expand api of this class to handle directly this case + // other solution would need to expand api of this class to handle directly this case else if ( iPreviousActiveView->Id() == SettingsViewId || iPreviousActiveView->Id() == MailListId ) { @@ -1239,17 +1464,33 @@ // CAlfEnv::Static()->NotifySkinChangedL(); // } - - if( aType == KEikDynamicLayoutVariantSwitch || aType == KAknsMessageSkinChange) + if( aType == KEikDynamicLayoutVariantSwitch || aType == KAknsMessageSkinChange ) { + // Changing layout for status pane (just in case it is not switched + // correctly), fix for HMNN-82BAGR error + TBool landscape(Layout_Meta_Data::IsLandscapeOrientation()); + CEikStatusPane* statusPane = StatusPane(); + if(landscape) + { + if( statusPane->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT) + { + statusPane->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT); + } + } + else + { + if( statusPane->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT) + { + statusPane->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT); + } + } + TRect screenRect; AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, screenRect ); // layout manager call removed // Notify layouthandler of changed screen resolution. iLayoutHandler->ScreenResolutionChanged(); StatusPane()->DrawNow(); - TRect rect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect); if(iEnv) { Display().SetVisibleArea( screenRect ); @@ -1407,6 +1648,15 @@ return iEikonEnv->ScreenDevice()->DisplayMode(); } +// --------------------------------------------------------------------------- +// Returns display images cache +// --------------------------------------------------------------------------- +// +TDisplayImagesCache& CFreestyleEmailUiAppUi::DisplayImagesCache() + { + return iDisplayImagesCache; + } + // --------------------------------------------------------------------------- // Returns the current flip status. @@ -1587,6 +1837,7 @@ // autosyncmonitor has been succesfully created if ( iAutoSyncMonitor ) { + TIMESTAMP( "Starting auto sync" ); iAutoSyncMonitor->StartMonitoring(); } } @@ -1858,6 +2109,7 @@ { case TFSEventMailboxDeleted: { + iDisplayImagesCache.RemoveMailbox(aMailbox); gridContentsChanged = ETrue; if ( iActiveMailbox && iActiveMailbox->GetId().Id() == aMailbox.Id() && iCurrentActiveView->Id() != SettingsViewId ) @@ -1989,11 +2241,22 @@ } } break; - case TFSEventMailboxSettingsChanged: + case TFSEventMailboxCapabilityChanged: + // Refresh grid if mailbox capabilities have changed + case TFSEventMailboxSettingsChanged: // Refresh grid if mailbox settings are changed, // name/branding might have changed. gridContentsChanged = ETrue; break; + case TFSEventMailDeleted: + { + RArray* entries = reinterpret_cast*>(aParam1); + for (TInt i = entries->Count() - 1; i >= 0; i--) + { + iDisplayImagesCache.RemoveMessage(aMailbox, entries->operator[](i)); + } + } + break; default: { } @@ -2564,7 +2827,7 @@ } // ----------------------------------------------------------------------------- -// CFreestyleEmailUiAppUi::SendToBackgroundL +// CFreestyleEmailUiAppUi::SendToBackground // Send self to background. // ----------------------------------------------------------------------------- void CFreestyleEmailUiAppUi::SendToBackground() @@ -2583,6 +2846,56 @@ } // ----------------------------------------------------------------------------- +// CFreestyleEmailUiAppUi::SetEmbeddedApp +// Set flag for judging if there is a embedded app in FSEmail. +// ----------------------------------------------------------------------------- +void CFreestyleEmailUiAppUi::SetEmbeddedApp( TBool aEmbeddedApp ) + { + iHasEmbeddedApp = aEmbeddedApp; + } + +// ----------------------------------------------------------------------------- +// CFreestyleEmailUiAppUi::EmbeddedApp +// Get embedded app flag. +// ----------------------------------------------------------------------------- +TBool CFreestyleEmailUiAppUi::EmbeddedApp() const + { + return iHasEmbeddedApp; + } + +// ----------------------------------------------------------------------------- +// CFreestyleEmailUiAppUi::SetEmbeddedAppToPreviousApp +// ----------------------------------------------------------------------------- +void CFreestyleEmailUiAppUi::SetEmbeddedAppToPreviousApp( TBool aEmbeddedApp ) + { + iPreviousAppEmbedded = aEmbeddedApp; + } + +// ----------------------------------------------------------------------------- +// CFreestyleEmailUiAppUi::EmbeddedAppIsPreviousApp +// ----------------------------------------------------------------------------- +TBool CFreestyleEmailUiAppUi::EmbeddedAppIsPreviousApp() const + { + return iPreviousAppEmbedded; + } + +// ----------------------------------------------------------------------------- +// CFreestyleEmailUiAppUi::SetEditorStartedFromEmbeddedApp +// ----------------------------------------------------------------------------- +void CFreestyleEmailUiAppUi::SetEditorStartedFromEmbeddedApp( TBool aEmbeddedApp ) + { + iEditorStartedFromEmbeddedApp = aEmbeddedApp; + } + +// ----------------------------------------------------------------------------- +// CFreestyleEmailUiAppUi::EditorStartedFromEmbeddedApp +// ----------------------------------------------------------------------------- +TBool CFreestyleEmailUiAppUi::EditorStartedFromEmbeddedApp() const + { + return iEditorStartedFromEmbeddedApp; + } + +// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void CFreestyleEmailUiAppUi::ConstructNaviPaneL() diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiContactHandler.cpp --- a/emailuis/emailui/src/FreestyleEmailUiContactHandler.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiContactHandler.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -44,7 +44,7 @@ // Phonebook 2 #include #include -#include +#include // Send UI #include @@ -54,17 +54,13 @@ #include #include -//Remote Contact Lookup -// -#include "cpbkxremotecontactlookupenv.h" -#include "tpbkxremotecontactlookupprotocolaccountid.h" -#include "cpbkxremotecontactlookupserviceuicontext.h" -#include +// Remote Contact Lookup +#include +#include -// SF path + #include // Global setting data #include -// // Aiw launcher #include @@ -74,7 +70,6 @@ // FS Email framework #include "cfsmailbox.h" -// #include @@ -1494,7 +1489,7 @@ void CFSEmailUiContactHandler::LaunchRemoteLookupL( CFSMailBox& aMailBox ) { FUNC_LOG; - + CPbkxRemoteContactLookupServiceUiContext::TResult result; DoRemoteLookupL( aMailBox, KNullDesC , result, CPbkxRemoteContactLookupServiceUiContext::EModeNormal ); @@ -1504,33 +1499,31 @@ // ----------------------------------------------------------------------------- // CFSEmailUiContactHandler::LaunchRemoteLookupL // ----------------------------------------------------------------------------- -HBufC* CFSEmailUiContactHandler::GetNameAndNumberFromRemoteLookupL( CFSMailBox& aMailBox, const TDesC& aQuery, - RBuf& aPhoneNumber ) +HBufC* CFSEmailUiContactHandler::GetNameAndNumberFromRemoteLookupL( + CFSMailBox& aMailBox, const TDesC& aQuery, RBuf& aPhoneNumber ) { FUNC_LOG; CPbkxRemoteContactLookupServiceUiContext::TResult result; DoRemoteLookupL( aMailBox, aQuery , result, - CPbkxRemoteContactLookupServiceUiContext::EModeContactSelector ); + CPbkxRemoteContactLookupServiceUiContext::EModeContactSelector ); HBufC* displayName = NULL; - if ( result.iExitReason == - CPbkxRemoteContactLookupServiceUiContext::TResult::EExitContactSelected ) + CPbkxRemoteContactLookupServiceUiContext::TResult::EExitContactSelected ) { displayName = GetPhoneNumberAndNameL( aPhoneNumber, *(result.iSelectedContactItem) ); } return displayName; } -void CFSEmailUiContactHandler::LaunchRemoteLookupWithQueryL( CFSMailBox& aMailBox, const TDesC& aQuery ) +void CFSEmailUiContactHandler::LaunchRemoteLookupWithQueryL( + CFSMailBox& aMailBox, const TDesC& aQuery ) { FUNC_LOG; - CPbkxRemoteContactLookupServiceUiContext::TResult result; DoRemoteLookupL( aMailBox, aQuery , result, - CPbkxRemoteContactLookupServiceUiContext::EModeExistingCriteria ); - + CPbkxRemoteContactLookupServiceUiContext::EModeExistingCriteria ); } HBufC* CFSEmailUiContactHandler::GetLastSearchNameL( const TDesC& aEmailAddress ) @@ -1704,34 +1697,24 @@ void CFSEmailUiContactHandler::DoRemoteLookupL( CFSMailBox& aMailBox, const TDesC& aQueryString, CPbkxRemoteContactLookupServiceUiContext::TResult& aResult, - CPbkxRemoteContactLookupServiceUiContext::TMode aContext ) + CPbkxRemoteContactLookupServiceUiContext::TMode aLookupMode ) { FUNC_LOG; TUid protocolUid = TUid::Null(); - TUint accountId = 0; - aMailBox.GetRCLInfo( protocolUid, accountId ); - const TPbkxRemoteContactLookupProtocolAccountId KAccountId( - protocolUid, accountId ); - - - CPbkxRemoteContactLookupEnv* env = CPbkxRemoteContactLookupEnv::NewL(); - CleanupStack::PushL( env ); - - MPbkxRemoteContactLookupServiceUi* serviceUi = env->ServiceUiL(); + TUint accountUid = 0; + aMailBox.GetRCLInfo( protocolUid, accountUid ); + const TPbkxRemoteContactLookupProtocolAccountId accountId = + TPbkxRemoteContactLookupProtocolAccountId( protocolUid, accountUid ); - // If you want test with RCL dummyContactDatabase, KAccountId = serviceUi->DefaultAccountIdL(); - MPbkxRemoteContactLookupServiceUi::TContextParams params = { KAccountId, aContext }; - - CPbkxRemoteContactLookupServiceUiContext* ctx( NULL ); - ctx = serviceUi->NewContextL( params ); + CPbkxRemoteContactLookupServiceUiContext::TContextParams params = + { accountId, aLookupMode }; - CleanupStack::PushL( ctx ); - - ctx->ExecuteL( aQueryString, aResult ); + CPbkxRemoteContactLookupServiceUiContext* context = + Pbk2RemoteContactLookupFactory::NewContextL( params ); + CleanupStack::PushL( context ); - CleanupStack::PopAndDestroy( ctx ); - CleanupStack::PopAndDestroy( env ); - + context->ExecuteL( aQueryString, aResult ); + CleanupStack::PopAndDestroy( context ); } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp --- a/emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -2978,6 +2978,8 @@ void CFSEmailUiFolderListVisualiser::UpdateToolbarButtons() { FUNC_LOG; + Toolbar()->SetItemDimmed( + EFsEmailUiTbCmdSelect, ( iModel == NULL ) || ( iModel->Count() == 0 ), ETrue ); Toolbar()->SetItemDimmed( EFsEmailUiTbCmdExpandAll, AllNodesExpanded(), ETrue ); Toolbar()->SetItemDimmed( EFsEmailUiTbCmdCollapseAll, AllNodesCollapsed(), ETrue ); } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiGlobalSettingsData.cpp --- a/emailuis/emailui/src/FreestyleEmailUiGlobalSettingsData.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiGlobalSettingsData.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -62,7 +62,7 @@ SetDownloadNotifications( 0 ); SetActiveIdle( 0 ); SetWarnBeforeDelete( 1 ); - //SetDownloadHTMLImages( 1 ); + SetDownloadHTMLImages( 1 ); } TBool& CFsEmailUiGlobalSettingsData::WarnBeforeDelete() diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiGlobalSettingsList.cpp --- a/emailuis/emailui/src/FreestyleEmailUiGlobalSettingsList.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiGlobalSettingsList.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -38,7 +38,7 @@ #include "FreestyleEmailUiGlobalSettingsListView.h" #include "FreestyleEmailUiGlobalSettingsList.h" #include "FreestyleEmailUiAppui.h" -#include "FreestyleEmailCenRepHandler.h" +#include "freestyleemailcenrephandler.h" #include "FreestyleEmailUiShortcutBinding.h" #include "FreestyleEmailUiConstants.h" @@ -113,7 +113,7 @@ aId, iSettings.WarnBeforeDelete() ); return item; - }/* + } case EGlobalSettingsDownloadHTMLImages: { CAknBinaryPopupSettingItem* item = new ( ELeave ) @@ -121,7 +121,7 @@ aId, iSettings.DownloadHTMLImages() ); return item; - }*/ + } case EGlobalSettingsActiveIdle: { CAknBigSettingItemBase* item = new ( ELeave ) @@ -207,7 +207,7 @@ //iSettings.SetDownloadNotifications( crHandler->DownloadNotifications() ); iSettings.SetActiveIdle( crHandler->ActiveIdle() ); iSettings.SetWarnBeforeDelete( crHandler->WarnBeforeDelete() ); - //iSettings.SetDownloadHTMLImages( crHandler->DownloadHTMLImages() ); + iSettings.SetDownloadHTMLImages( crHandler->DownloadHTMLImages() ); } /** @@ -230,7 +230,7 @@ //crHandler->SetDownloadNotifications( iSettings.DownloadNotifications() ); crHandler->SetActiveIdle( iSettings.ActiveIdle() ); crHandler->SetWarnBeforeDelete( iSettings.WarnBeforeDelete() ); - //crHandler->SetDownloadHTMLImages( iSettings.DownloadHTMLImages() ); + crHandler->SetDownloadHTMLImages( iSettings.DownloadHTMLImages() ); } /** diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiHtmlViewerContainer.cpp --- a/emailuis/emailui/src/FreestyleEmailUiHtmlViewerContainer.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiHtmlViewerContainer.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -44,7 +44,6 @@ #include "FreestyleMessageHeaderHTML.h" #include "FreestyleMessageHeaderURLEventHandler.h" -#include "FreestyleEmailUiAknStatusIndicator.h" #include "FreestyleEmailUiAttachmentsListModel.h" _LIT( KContentIdPrefix, "cid:" ); @@ -85,6 +84,11 @@ _LIT8( KHtmlLinkEndTag, "" ); _LIT( KURLTypeBody, "body"); +_LIT( KURLDisplayImages, "cmail://displayImages/" ); +_LIT( KURLLoadImages, "cmail://loadImages/" ); +_LIT( KURLCollapseHeader, "cmail://collapseHeader/" ); +_LIT( KURLExpandHeader, "cmail://expandHeader/" ); + const TText8 KGreaterThan = 0x3e; const TText8 KLessThan = 0x3c; const TText8 KAmpersand = 0x26; @@ -103,6 +107,161 @@ const TInt KStatusIndicatorHeight = 50; const TInt KStatusIndicatorXMargin = 50; +// CEUiHtmlViewerSettingsKeyListener + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CEUiHtmlViewerSettingsKeyListener::CEUiHtmlViewerSettingsKeyListener( MObserver& aObserver, TUint32 aKey ) + : CActive( EPriorityStandard ), iObserver( aObserver ), iKey( aKey ) + { + CActiveScheduler::Add(this); + StartListening(); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CEUiHtmlViewerSettingsKeyListener::~CEUiHtmlViewerSettingsKeyListener() + { + Cancel(); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CEUiHtmlViewerSettingsKeyListener::StartListening() + { + SetActive(); + iObserver.Repository().NotifyRequest(iKey, iStatus); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CEUiHtmlViewerSettingsKeyListener::RunL() + { + iObserver.KeyValueChangedL(iKey); + StartListening(); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CEUiHtmlViewerSettingsKeyListener::DoCancel() + { + iObserver.Repository().NotifyCancel(iKey); + } + +// CEUiHtmlViewerSettings + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CEUiHtmlViewerSettings* CEUiHtmlViewerSettings::NewL( MObserver& aObserver ) + { + CEUiHtmlViewerSettings* self = new (ELeave) CEUiHtmlViewerSettings(aObserver); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); // self + return self; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CEUiHtmlViewerSettings::~CEUiHtmlViewerSettings() + { + iKeyListeners.ResetAndDestroy(); + delete iRepository; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CEUiHtmlViewerSettings::CEUiHtmlViewerSettings( MObserver& aObserver ) : iObserver( aObserver ) + { + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CEUiHtmlViewerSettings::ConstructL() + { + iRepository = CRepository::NewL(KFreestyleEmailCenRep); + AddKeyListenerL(KFreestyleEmailDownloadHTMLImages); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CEUiHtmlViewerSettings::AddKeyListenerL( TUint32 aKey ) + { + CEUiHtmlViewerSettingsKeyListener* listener = new (ELeave) CEUiHtmlViewerSettingsKeyListener(*this, aKey); + CleanupStack::PushL(listener); + iKeyListeners.AppendL(listener); + CleanupStack::Pop(); // listener + UpdateValue(aKey); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CEUiHtmlViewerSettings::UpdateValue( TUint32 aKey ) + { + TInt value; + iRepository->Get(aKey, value); + switch (aKey) + { + case KFreestyleEmailDownloadHTMLImages: + // 0 = automatic, 1 = ask always + iFlags.Assign(aKey, value == 0); + break; + default: + iFlags.Assign(aKey, value); + break; + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CEUiHtmlViewerSettings::KeyValueChangedL( TUint32 aKey ) + { + UpdateValue(aKey); + iObserver.ViewerSettingsChangedL(aKey); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CRepository& CEUiHtmlViewerSettings::Repository() + { + return *iRepository; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TBool CEUiHtmlViewerSettings::AutoLoadImages() const + { + return iFlags.IsSet(EAutoLoadImages); + } + // --------------------------------------------------------------------------- // Two-phased constructor. // --------------------------------------------------------------------------- @@ -128,7 +287,7 @@ : iAppUi( aAppUi ), iView( aView ), - iFs( CCoeEnv::Static()->FsSession() ), + iFs( iCoeEnv->FsSession() ), iFirstTime( ETrue ) { FUNC_LOG; @@ -141,6 +300,7 @@ CFsEmailUiHtmlViewerContainer::~CFsEmailUiHtmlViewerContainer() { FUNC_LOG; + delete iViewerSettings; if ( iObservingDownload && iAppUi.DownloadInfoMediator() ) { iAppUi.DownloadInfoMediator()->StopObserving( this ); @@ -157,10 +317,10 @@ delete iOverlayControlPrev; } -// Because of browser changes, followings must be performed before iAppUi.exit() void CFsEmailUiHtmlViewerContainer::PrepareForExit() { FUNC_LOG; + HideDownloadStatus(); if ( iObservingDownload && iAppUi.DownloadInfoMediator() ) { iAppUi.DownloadInfoMediator()->StopObserving( this ); @@ -171,12 +331,18 @@ iConnection.Close(); iSocketServer.Close(); } -// + +void CFsEmailUiHtmlViewerContainer::PrepareForMessageNavigation() + { + FUNC_LOG; + ResetContent(); + } void CFsEmailUiHtmlViewerContainer::ConstructL() { FUNC_LOG; - + iViewerSettings = CEUiHtmlViewerSettings::NewL(*this); + SetHtmlFolderPathL(); BaflUtils::EnsurePathExistsL( iFs, iHtmlFolderPath ); SetTempHtmlFolderPath(); @@ -195,16 +361,27 @@ // Set browsercontrol to whole screen TRect rect( TPoint(), Size() ); - - iBrCtlInterface = CreateBrowserControlL( this, rect, brCtlCapabilities, - TBrCtlDefs::ECommandIdBase, NULL, this, this, NULL, NULL, this, NULL ); + + 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, 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 ); @@ -218,6 +395,10 @@ EMbmFreestyleemailuiQgn_indi_cmail_arrow_previous_mask ); iScrollPosition = 0; iAttachmentDownloadImageHandle = 0; + + iTouchFeedBack = MTouchFeedback::Instance(); + iTouchFeedBack->EnableFeedbackForControl(this, ETrue); + ActivateL(); } @@ -349,23 +530,14 @@ // insert email header into email.html file // CFreestyleMessageHeaderHTML will replace contents of email.html // So, no need to clear the contents - TLanguage language = User::Language(); - TBidiText::TDirectionality direction = TBidiText::ScriptDirectionality( language ); if(aResetScrollPos) { iScrollPosition = 0; } - if ( AknLayoutUtils::LayoutMirrored() ) - { - direction = TBidiText::ERightToLeft; - } - else - { - direction = TBidiText::ELeftToRight; - } - CFreestyleMessageHeaderHTML::ExportL( *iMessage, iFs, headerHtmlFile, iAppUi.ClientRect().Width(), - iScrollPosition, - direction); + 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(); @@ -396,18 +568,27 @@ // Reset content // --------------------------------------------------------------------------- // -void CFsEmailUiHtmlViewerContainer::ResetContent() +void CFsEmailUiHtmlViewerContainer::ResetContent(const TBool aDisconnect) { FUNC_LOG; if ( iBrCtlInterface ) { - TRAP_IGNORE( iBrCtlInterface->HandleCommandL( ( TInt )TBrCtlDefs::ECommandIdBase + - ( TInt )TBrCtlDefs::ECommandFreeMemory ) ); + TRAP_IGNORE( + iBrCtlInterface->HandleCommandL( ( TInt )TBrCtlDefs::ECommandIdBase + + ( TInt )TBrCtlDefs::ECommandFreeMemory ) ); + if (aDisconnect) + { + TRAP_IGNORE( + iBrCtlInterface->HandleCommandL( ( TInt )TBrCtlDefs::ECommandIdBase + + ( TInt )TBrCtlDefs::ECommandDisconnect ) ); + } } iFile.Close(); iLinkContents.Reset(); iMessageParts.Reset(); iMessage = NULL; + iHeaderExpanded = EFalse; + iScrollPosition = 0; } // --------------------------------------------------------------------------- @@ -493,39 +674,6 @@ { iBrCtlInterface->SetRect( rect ); } - - if ( iMessage ) - { - // update the width in header part and reload - TPath headerHtmlFile; - headerHtmlFile.Copy( iHtmlFolderPath ); - headerHtmlFile.Append( KHeaderHtmlFile ); - - TLanguage language = User::Language(); - TBidiText::TDirectionality direction = TBidiText::ScriptDirectionality( language ); - - if ( AknLayoutUtils::LayoutMirrored() ) - { - direction = TBidiText::ERightToLeft; - } - else - { - direction = TBidiText::ELeftToRight; - } - TRAP_IGNORE( CFreestyleMessageHeaderHTML::ExportL( *iMessage, iFs, headerHtmlFile, - rect.Width(), iScrollPosition, direction ) ) - - TPath emailHtmlFile; - emailHtmlFile.Copy( iHtmlFolderPath ); - if ( AknLayoutUtils::LayoutMirrored() ) - { - emailHtmlFile.Append( KMessageHtmlRTLFile ); - } - else - { - emailHtmlFile.Append( KMessageHtmlFile ); - } - } UpdateOverlayButtons( IsVisible() ); @@ -738,9 +886,12 @@ const TDesC& /*aCurrentUrl*/, MBrCtlLinkContent& /*aBrCtlLinkContent*/ ) { FUNC_LOG; - if (IsMessageBodyURL(aUrl)) + if ( IsMessageBodyURLL(aUrl) ) { - iView.StartFetchingMessageL(); + if ( iMessage ) + { + iView.StartFetchingMessageL(); + } return ETrue; } else @@ -1201,7 +1352,7 @@ // // void CFsEmailUiHtmlViewerContainer::ConvertToHTML( const TDesC8& aContent, - const TDesC& aFileName, CFSMailMessagePart& aTextBodyPart ) + const TDesC& aFileName, CFSMailMessagePart& /*aTextBodyPart*/ ) { FUNC_LOG; const TInt KBodyTextChunkSizeBytes = 1024; @@ -1597,7 +1748,8 @@ for ( TInt i = 0; i < contentTypeArray.Count(); i++ ) { - if ( ( contentTypeArray.MdcaPoint( i ).Find( KCharsetTag ) != KErrNotFound ) && + TPtrC contentEntry( contentTypeArray.MdcaPoint( i ) ); + if ( ( contentEntry.FindF( KCharsetTag ) != KErrNotFound ) && contentTypeArray.Count() >= ( i+1) ) { TPtrC value( contentTypeArray.MdcaPoint( i+1 ) ); @@ -1653,6 +1805,10 @@ void CFsEmailUiHtmlViewerContainer::HandleResourceChange( TInt aType ) { CCoeControl::HandleResourceChange( aType ); + if ( aType == CFsEmailUiViewBase::EScreenLayoutChanged ) + { + RefreshCurrentMailHeader(); + } } void CFsEmailUiHtmlViewerContainer::RefreshCurrentMailHeader() @@ -1664,53 +1820,28 @@ headerHtmlFile.Copy( iHtmlFolderPath ); headerHtmlFile.Append( KHeaderHtmlFile ); - TLanguage language = User::Language(); - TBidiText::TDirectionality direction = TBidiText::ScriptDirectionality( language ); - TRAP_IGNORE( CFreestyleMessageHeaderHTML::ExportL( *iMessage, iFs, headerHtmlFile, iAppUi.ClientRect().Width(), direction ) ) + TRAP_IGNORE( CFreestyleMessageHeaderHTML::ExportL( *iMessage, iFs, + headerHtmlFile, iAppUi.ClientRect().Width(), iScrollPosition, + iViewerSettings->AutoLoadImages() || iAppUi.DisplayImagesCache().Contains(*iMessage), + iHeaderExpanded ) ) - TPath emailHtmlFile; - emailHtmlFile.Copy( iHtmlFolderPath ); - emailHtmlFile.Append( KMessageHtmlFile ); - if ( direction == TBidiText::ELeftToRight ) + if(!iEventHandler->IsMenuVisible()) { - emailHtmlFile.Append( KMessageHtmlFile ); + TRAP_IGNORE( ReloadPageL() ); } else { - emailHtmlFile.Append( KMessageHtmlRTLFile ); + //Load page asynchronously after dismissing menu + iEventHandler->DismissMenuAndReload(); } - - //Load page synchronously if menu invisible - if(!iEventHandler->IsMenuVisible()) - { - TRAP_IGNORE( LoadContentFromFileL( emailHtmlFile ) ); - SetRect( iAppUi.ClientRect() ); - } - //Load page asynchronously after dismissing menu - else - { - iEventHandler->DismissMenuAndReload(); - } } } void CFsEmailUiHtmlViewerContainer::ReloadPageL() { - TLanguage language = User::Language(); - TBidiText::TDirectionality direction = TBidiText::ScriptDirectionality( language ); - TPath emailHtmlFile; - emailHtmlFile.Copy( iHtmlFolderPath ); - if( !AknLayoutUtils::LayoutMirrored() ) - { - emailHtmlFile.Append( KMessageHtmlFile ); - } - else - { - emailHtmlFile.Append( KMessageHtmlRTLFile ); - } - TRAP_IGNORE( LoadContentFromFileL( emailHtmlFile ) ); - SetRect( iAppUi.ClientRect() ); + TRAP_IGNORE( iBrCtlInterface->HandleCommandL( ( TInt )TBrCtlDefs::ECommandIdBase + + ( TInt )TBrCtlDefs::ECommandReload ) ); } void CFsEmailUiHtmlViewerContainer::ShowAttachmentDownloadStatusL( @@ -1829,6 +1960,23 @@ return EFalse; } } +void CFsEmailUiHtmlViewerContainer::ViewerSettingsChangedL( const TUint32 aKey ) + { + FUNC_LOG; + if (aKey == KFreestyleEmailDownloadHTMLImages) + { + if (iBrCtlInterface) + { + iBrCtlInterface->SetBrowserSettingL( + TBrCtlDefs::ESettingsAutoLoadImages, + iViewerSettings->AutoLoadImages() ); + if (iViewerSettings->AutoLoadImages() && iMessage) + { + LoadContentFromMailMessageL(iMessage, EFalse); + } + } + } + } void CFsEmailUiHtmlViewerContainer::HideDownloadStatus() { @@ -1849,13 +1997,18 @@ return TRect( statusTopLeft, statusBottomRight ); } +void CFsEmailUiHtmlViewerContainer::TouchFeedback() + { + 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 * return ETrue for a valid body URL */ -TBool CFsEmailUiHtmlViewerContainer::IsMessageBodyURL(const TDesC& aUrl) +TBool CFsEmailUiHtmlViewerContainer::IsMessageBodyURLL(const TDesC& aUrl) { TInt index = aUrl.Find(KURLSchemeSeparator); if (index == KErrNotFound) @@ -1864,7 +2017,31 @@ } else { - if (aUrl.Left(index).CompareF(KURLSchemeCmail) == 0) + if (aUrl.Compare(KURLLoadImages()) == 0) + { + iBrCtlInterface->HandleCommandL(TBrCtlDefs::ECommandLoadImages + TBrCtlDefs::ECommandIdBase); + return ETrue; + } + else if (aUrl.Compare(KURLDisplayImages()) == 0) + { + DisplayStatusIndicatorL(KStatusIndicatorAutomaticHidingDuration); + iAppUi.DisplayImagesCache().AddMessageL(*iMessage); + iBrCtlInterface->HandleCommandL(TBrCtlDefs::ECommandLoadImages + TBrCtlDefs::ECommandIdBase); + return ETrue; + } + else if (aUrl.Compare(KURLCollapseHeader()) == 0) + { + TouchFeedback(); + iHeaderExpanded = EFalse; + return ETrue; + } + else if (aUrl.Compare(KURLExpandHeader()) == 0) + { + TouchFeedback(); + iHeaderExpanded = ETrue; + return ETrue; + } + else if (aUrl.Left(index).CompareF(KURLSchemeCmail) == 0) { TInt bodyIndex = aUrl.Find(KURLTypeBody); if (bodyIndex == KErrNotFound) @@ -1895,6 +2072,7 @@ } } } + // --------------------------------------------------------------------------- // From MBrCtlWindowObserver // --------------------------------------------------------------------------- @@ -1933,6 +2111,7 @@ TBool launchBrowser( ETrue ); // look for file:/// _LIT( KFileLink, "file:///"); + _LIT( KUrlLink, "http"); // This might be linking to header.html or body.html frames // Ignore them. @@ -1959,6 +2138,12 @@ { launchBrowser = EFalse; } + // THAA-82BEAZ - show popup first + else if ( aUrl.Left(KUrlLink().Length() ).CompareF( KUrlLink ) == 0 ) + { + launchBrowser = EFalse; + } + // end THAA-82BEAZ return launchBrowser; } @@ -2018,18 +2203,19 @@ CleanupStack::PopAndDestroy( &targetFile ); } -void CFsEmailUiHtmlViewerContainer::DisplayStatusIndicatorL() +void CFsEmailUiHtmlViewerContainer::DisplayStatusIndicatorL(TInt aDuration) { - TRect rect = CalcAttachmentStatusRect(); + FUNC_LOG; + TRect rect = CalcAttachmentStatusRect(); if(!iStatusIndicator) { iStatusIndicator = CFreestyleEmailUiAknStatusIndicator::NewL( rect, this ); } CFbsBitmap* image = NULL; CFbsBitmap* imageMask = NULL; - TInt duration = KStatusIndicatorDefaultDuration; HBufC* statusText = NULL; statusText = StringLoader::LoadL(R_FREESTYLE_EMAIL_UI_VIEWER_FETCHING_CONTENT_TEXT); iAppUi.FsTextureManager()->ProvideBitmapL(EStatusTextureSynchronising, image, imageMask ); - iStatusIndicator->ShowIndicatorL( image, imageMask, statusText, duration ); + iStatusIndicator->ShowIndicatorL( image, imageMask, statusText, aDuration ); } + diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp --- a/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -134,6 +134,7 @@ iOpenMessages = new (ELeave) CStack(); iEmbeddedMessages = new (ELeave) CStack(); iNextOrPrevMessageSelected = EFalse; + iForwardingMessage = EFalse; } // ----------------------------------------------------------------------------- @@ -298,6 +299,7 @@ iContainer->ResetContent(); } + iForwardingMessage = ETrue; iAppUi.LaunchEditorL( KEditorCmdForward, params ); } } @@ -479,7 +481,7 @@ // Activate an Compose view // ----------------------------------------------------------------------------- // -void CFsEmailUiHtmlViewerView::ChildDoActivateL( const TVwsViewId& /*aPrevViewId*/, +void CFsEmailUiHtmlViewerView::ChildDoActivateL( const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage ) { FUNC_LOG; @@ -487,6 +489,11 @@ TBool msgBodyStructurePresent ( EFalse ); TBool msgBodyContentPresent ( EFalse ); + if( aCustomMessageId != KHtmlViewerReturnToPrevious) + { + ViewEntered( aPrevViewId ); + } + if ( iMrObserverToInform && aCustomMessageId == KStartViewerReturnToPreviousMsg ) { @@ -734,13 +741,8 @@ } } iNextOrPrevMessageSelected = EFalse; + iForwardingMessage = EFalse; - //update rect only if it has changed from previous time. - if ( iContainer->Rect() != ContainerRect() ) - { - iContainer->SetRect( ContainerRect() ); - } - TIMESTAMP( "Html viewer opened" ); } @@ -808,6 +810,9 @@ { aDimmedItems.AppendL(EFsEmailUiTbCmdActions); aDimmedItems.AppendL(EFsEmailUiTbCmdDelete); + aDimmedItems.AppendL(EFsEmailUiTbCmdReply); + aDimmedItems.AppendL(EFsEmailUiTbCmdForward); + aDimmedItems.AppendL(EFsEmailUiTbCmdReplyAll); } } } @@ -820,12 +825,18 @@ void CFsEmailUiHtmlViewerView::ChildDoDeactivate() { FUNC_LOG; - CancelFetchings(); - + // Don't cancel fetching the message parts when forwarding the message: + // it would also cancel the fetchings initiated by the forwarding, + // causing the forwarding to abort. + if ( !iForwardingMessage ) + { + CancelFetchings(); + } + if ( iContainer ) { HideContainer(); - iContainer->ResetContent(); + iContainer->ResetContent(ETrue); iAppUi.RemoveFromStack(iContainer); iContainer->CancelFetch(); iContainer->ClearCacheAndLoadEmptyContent(); @@ -1124,11 +1135,6 @@ void CFsEmailUiHtmlViewerView::HandleStatusPaneSizeChange() { CFsEmailUiViewBase::HandleStatusPaneSizeChange(); - - if ( iContainer ) - { - iContainer->SetRect( ContainerRect() ); - } } void CFsEmailUiHtmlViewerView::HandleViewRectChange() @@ -1277,9 +1283,11 @@ ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY ); NavigateBackL(); } - //inform user that mail is deleted - TFsEmailUiUtility::ShowGlobalInfoNoteL( R_FREESTYLE_EMAIL_MAIL_DELETED ); - } + + + } + //inform user that mail is deleted + TFsEmailUiUtility::ShowDiscreetInfoNoteL( R_FREESTYLE_EMAIL_MAIL_DELETED ); } } @@ -1640,12 +1648,7 @@ void CFsEmailUiHtmlViewerView::CancelAttachmentL( const TAttachmentData& aAttachment ) { - TInt reallyCancel = - TFsEmailUiUtility::ShowConfirmationQueryL( R_FSE_VIEWER_CANCEL_DOWNLOAD_QUERY ); - if ( reallyCancel ) - { - iAttachmentsListModel->CancelDownloadL(aAttachment); - } + iAttachmentsListModel->CancelDownloadL(aAttachment); } void CFsEmailUiHtmlViewerView::OpenAttachmentL( const TAttachmentData& aAttachment ) @@ -1950,6 +1953,11 @@ TFSMailMsgId nextMsgFolderId; if ( iAppUi.IsNextMsgAvailable( currentMsgId, nextMsgId, nextMsgFolderId ) ) { + if (iContainer) + { + iContainer->PrepareForMessageNavigation(); + } + // Stop timer and cancel fetchings before showing next message //iFetchingAnimationTimer->Stop(); CancelFetchings(); @@ -1993,6 +2001,11 @@ TFSMailMsgId prevMsgFolderId; if ( iAppUi.IsPreviousMsgAvailable( currentMsgId, prevMsgId, prevMsgFolderId ) ) { + if (iContainer) + { + iContainer->PrepareForMessageNavigation(); + } + // Stop timer and cancel fetchings before showing prev message CancelFetchings(); @@ -3174,7 +3187,7 @@ } } -void CFsEmailUiHtmlViewerView::CheckMessageBodyL( CFSMailMessage& aMessage, TBool& aMessageBodyStructurePresent, TBool& aMessageBodyContentPresent) +void CFsEmailUiHtmlViewerView::CheckMessageBodyL( CFSMailMessage& /*aMessage*/, TBool& aMessageBodyStructurePresent, TBool& aMessageBodyContentPresent) { CFSMailMessagePart* bodyPart = iMessage->HtmlBodyPartL(); if ( !bodyPart ) diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp --- a/emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -144,6 +144,10 @@ iUiOperationLaunched = EFalse; iMailboxDeleter = CFSEmailUiMailboxDeleter::NewL( *iAppUi.GetMailClient(), *this ); + + // Create startup timer + iStartupCallbackTimer = CFSEmailUiGenericTimer::NewL( this ); + } // ---------------------------------------------------------------------------- @@ -294,6 +298,13 @@ CFSEmailUiLauncherGridVisualiser::~CFSEmailUiLauncherGridVisualiser() { FUNC_LOG; + + if ( iStartupCallbackTimer ) + { + iStartupCallbackTimer->Cancel(); + delete iStartupCallbackTimer; + } + iPluginIdIconIdPairs.Reset(); iIconArray.Close(); iMailboxRequestIds.Close(); @@ -2677,5 +2688,28 @@ iStylusPopUpMenuLaunched = ETrue; } +void CFSEmailUiLauncherGridVisualiser::HandleAppForegroundEventL( TBool aForeground ) + { + CFsEmailUiViewBase::HandleAppForegroundEventL( aForeground ); + // If the view is not visible try to visualise it after a while + if ( aForeground && ( !iWasActiveControlGroup ) ) + { + // + iStartupCallbackTimer->Cancel(); // just in case + iStartupCallbackTimer->SetPriority( CActive::EPriorityIdle ); + // EPriorityIdle, EPriorityLow, EPriorityStandard + iStartupCallbackTimer->Start( 200 ); + } + } -// End of file. +// Fire timer callback +void CFSEmailUiLauncherGridVisualiser::TimerEventL( CFSEmailUiGenericTimer* /* aTriggeredTimer */ ) +{ + // if view is still active then + if ( ( NULL != iAppUi.CurrentActiveView() ) && ( iAppUi.CurrentActiveView()->Id() == Id() ) ) + { + iWasActiveControlGroup = ETrue; + HandleAppForegroundEventL( ETrue ); + } +}; + diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiMailListModel.cpp --- a/emailuis/emailui/src/FreestyleEmailUiMailListModel.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiMailListModel.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -571,3 +571,22 @@ iSortCriteria.iOrder = EFSMailDescending; } +void CFSEmailUiMailListModel::GetItemIdsUnderNodeL( const TFsTreeItemId aNodeId, + RFsTreeItemIdList& aMessageIds ) const + { + FUNC_LOG; + aMessageIds.Reset(); + const TInt count(iItems.Count()); + for (TInt index = 0; index < count; index++) + { + if (iItems[index]->CorrespondingListId() == aNodeId) + { + // Found the node Id, now get all the items under it + while (++index < count && iItems[index]->ModelItemType() == ETypeMailItem) + { + aMessageIds.AppendL(iItems[index]->CorrespondingListId()); + } + break; + } + } + } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp --- a/emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -88,6 +88,7 @@ #include "FreestyleEmailUiHtmlViewerView.h" #include "FSDelayedLoader.h" #include "FSEmail.pan" +#include "fsemailstatuspaneindicatorhandler.h" // CONST VALUES const TInt KControlBarTransitionTime = 250; @@ -110,6 +111,79 @@ ptr = NULL; } +// TDeleteTask +// Task class for deleting mail +// --------------------------------------------------------------------------- +// Class definition +// --------------------------------------------------------------------------- +template struct TDeleteTask + { + +public: + + typedef void ( T::*TDeleteMethod )( const RFsTreeItemIdList& aEntries ); + +public: + + TDeleteTask(T& aObject, TDeleteMethod aMethod); + ~TDeleteTask(); + void ExecuteL(); + RFsTreeItemIdList& Entries(); + void Reset(); + +private: + + T& iObject; + TDeleteMethod iMethod; + RFsTreeItemIdList iEntries; + + }; + +// --------------------------------------------------------------------------- +// TDeleteTask::TDeleteTask +// --------------------------------------------------------------------------- +// +template TDeleteTask::TDeleteTask( T& aObject, TDeleteMethod aMethod ) + : iObject(aObject), iMethod(aMethod) + { + } + +// --------------------------------------------------------------------------- +// TDeleteTask::~TDeleteTask +// --------------------------------------------------------------------------- +// +template TDeleteTask::~TDeleteTask() + { + iEntries.Close(); + } + +// --------------------------------------------------------------------------- +// TDeleteTask::ExecuteL +// --------------------------------------------------------------------------- +// +template void TDeleteTask::ExecuteL() + { + (iObject.*iMethod)(iEntries); + Reset(); + } + +// --------------------------------------------------------------------------- +// TDeleteTask::Entries +// --------------------------------------------------------------------------- +// +template RFsTreeItemIdList& TDeleteTask::Entries() + { + return iEntries; + } + +// --------------------------------------------------------------------------- +// TDeleteTask::Reset +// --------------------------------------------------------------------------- +// +template void TDeleteTask::Reset() + { + iEntries.Reset(); + } // CMailListModelUpdater // --------------------------------------------------------------------------- @@ -340,6 +414,9 @@ iAsyncCallback = new (ELeave) CAsyncCallBack( CActive::EPriorityStandard ); iAsyncRedrawer = new (ELeave) CAsyncCallBack( CActive::EPriorityLow ); iLastFocus = EFalse; + iDeleteTask = new (ELeave) TDeleteTask (*this, HandleDeleteTaskL); + + iTouchFeedBack = MTouchFeedback::Instance(); } // CFSEmailUiMailListVisualiser::DoFirstStartL() @@ -483,6 +560,10 @@ CFSEmailUiMailListVisualiser::~CFSEmailUiMailListVisualiser() { FUNC_LOG; + if (iExtension) + { + iAppUi.GetMailClient()->ReleaseExtension(iExtension); + } SafeDelete(iMailListModelUpdater); SafeDelete(iMailFolder); delete iTouchManager; @@ -493,6 +574,8 @@ // Don't construct this anywhere else than in constructor. // Don't delete anywhere else thatn here to avoid NULL checks. delete iModel; + + delete iDeleteTask; } void CFSEmailUiMailListVisualiser::PrepareForExit() @@ -536,6 +619,8 @@ iTreeItemArray.Reset(); // Reset, not delete to avoid NULL checks. iModel->Reset(); + // Resources freed, new start required + iFirstStartCompleted = EFalse; } // --------------------------------------------------------------------------- @@ -602,7 +687,7 @@ } SetListAndCtrlBarFocusL(); iAppUi.StartMonitoringL(); - TIMESTAMP( "Locally stored messages fetched for message list" ); + TIMESTAMP( "Locally stored messages fetched for message list" ); } // --------------------------------------------------------------------------- @@ -1082,7 +1167,7 @@ TInt nodeIdxUnderRoot = iMailList->ChildIndex( KFsTreeRootID, nextNodeId ); InsertNodeItemL( idx-1, nodeIdxUnderRoot, aAllowRefresh ); } - moveViewPortPosition += iAppUi.LayoutHandler()->OneLineListItemHeight(); + moveViewPortPosition += iAppUi.LayoutHandler()->OneLineListItemHeight(); } else { @@ -1101,7 +1186,7 @@ TPoint viewPortTopPos = iMailTreeListVisualizer->ViewPortTopPosition(); TInt itemPos = iMailTreeListVisualizer->GetItemWorldPosition( idx ); TBool refresh = viewPortTopPos.iY != 0 && itemPos < viewPortCenterPos.iY; - + if( refresh ) { InsertListItemL( idx, parentId, childIdx, EFalse ); @@ -1251,6 +1336,8 @@ { DoFirstStartL(); } + // set when editor was called so reset is needed i.e. here (Called by DoActivate) + iMailOpened = EFalse; // Make sure that pending popup is not displayd if ( iAppUi.FolderList().IsPopupShown() ) @@ -1277,8 +1364,6 @@ TRect clientRect = iAppUi.ClientRect(); iScreenAnchorLayout->SetSize( clientRect.Size() ); SetMailListLayoutAnchors(); - TInt listHeight = clientRect.Height() - iAppUi.LayoutHandler()->ControlBarHeight(); - iListLayout->SetSize( TSize( clientRect.Width(), listHeight ) ); // needs to be set separately to avoid layout problems in some special cases ScaleControlBarL(); SetListAndCtrlBarFocusL(); @@ -1297,7 +1382,8 @@ // Check for changed settings, in that case a complete list refresh is needed TBool refreshNeeded(EFalse); - if ( iSkinChanged + if ( aCustomMessageId == KStartListWithFolderIdFromHomeScreen + || iSkinChanged || iDateChanged || iListMode != prevListMode || iNodesInUse != prevNodesmode @@ -1305,8 +1391,8 @@ || prevDateFormats.iDateFormat != iDateFormats.iDateFormat || prevDateFormats.iTimeFormat != iDateFormats.iTimeFormat || prevDateFormats.iAmPmPosition != iDateFormats.iAmPmPosition - || prevDateFormats.iDateSeparator != iDateFormats.iDateSeparator - || prevDateFormats.iTimeSeparator != iDateFormats.iTimeSeparator ) + || prevDateFormats.iDateSeparator.GetNumericValue() != iDateFormats.iDateSeparator.GetNumericValue() + || prevDateFormats.iTimeSeparator.GetNumericValue() != iDateFormats.iTimeSeparator.GetNumericValue() ) { refreshNeeded = ETrue; iSkinChanged = EFalse; @@ -1419,6 +1505,8 @@ } // NOW WE HAVE A VALID MAILBOX AND FOLDER ID. + // Tries to create an extension for the Ozone plugin + CreateExtensionL(); // CHECK IF MODEL NEEDS TO BE UPDATED if ( activationData.iMailBoxId != prevMailBoxId || @@ -1510,9 +1598,11 @@ iCurrentClientRect = clientRect; iThisViewActive = ETrue; - - // Set email indicator off.. user has checked the new emails - TFsEmailUiUtility::ToggleEmailIconL(EFalse, activationData.iMailBoxId ); + //emailindicator handling, we dont care if something goes wrong in the mailindicator update. User can still open the mailbox + TRAP_IGNORE(TFsEmailStatusPaneIndicatorHandler::StatusPaneMailIndicatorHandlingL( activationData.iMailBoxId.Id())); + + //Update mailbox widget index status in homescreen + TFsEmailUiUtility::ToggleEmailIconL(EFalse, activationData.iMailBoxId ); iShiftDepressed = EFalse; // clear state just in case @@ -1636,26 +1726,36 @@ // Sync/cancel sync CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox(); TBool supportsSync = activeMailbox->HasCapability( EFSMBoxCapaSupportsSync ); - + // flag to hide or show SyncButton TBool hideSync = GetLatestSyncState(); if(activeMailbox->CurrentSyncState()==StartingSync) hideSync=EFalse; - + // hide or show options: Sync/cancel sync - if ( !supportsSync ) - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdCancelSync, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue ); - } - else if ( hideSync || iMailListModelUpdater->IsUpdating() ) - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdCancelSync, ETrue ); - } - + if ( !supportsSync ) + { + // POP3 behaviour + TFSMailBoxStatus onlineStatus = activeMailbox->GetMailBoxStatus(); + 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() ) @@ -1947,9 +2047,9 @@ iMailList->RemoveAllL(); iTreeItemArray.Reset(); - // when we get refresh mail list updates should be fully enabled + // when we get refresh mail list updates should be fully enabled iMailOpened = EFalse; - + RefreshListItemsL(); if ( !iModel->Count() ) @@ -3023,9 +3123,9 @@ // // --------------------------------------------------------------------------- // -void CFSEmailUiMailListVisualiser::UpdateTheme() +void CFSEmailUiMailListVisualiser::UpdateTheme(const TBool aSystemUpdate) { - iSkinChanged = ETrue; + iSkinChanged = aSystemUpdate; TRgb focusedTextColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor(); TRgb normalTextColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); @@ -3049,11 +3149,15 @@ void CFSEmailUiMailListVisualiser::HandleForegroundEventL( TBool aForeground ) { FUNC_LOG; - if( iMailFolder ) - { + if( iMailFolder ) + { + //emailindicator handling, we dont care if something goes wrong in the mailindicator update. User can still open the mailbox + TRAP_IGNORE(TFsEmailStatusPaneIndicatorHandler::StatusPaneMailIndicatorHandlingL( iMailFolder->GetMailBoxId().Id())); + //Update mailbox widget index status in homescreen TFsEmailUiUtility::ToggleEmailIconL(EFalse, iMailFolder->GetMailBoxId() ); } - if ( aForeground && iFirstStartCompleted ) // Safety + + if ( iFirstStartCompleted ) // Safety { // 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 @@ -3195,7 +3299,7 @@ } case EAknSoftkeySelect: { - TIMESTAMP( "Open email selected from message list" ); + TIMESTAMP( "Open email selected from message list" ); if ( iFocusedControl == EMailListComponent ) { CFSEmailUiMailListModelItem* item = dynamic_cast(iModel->Item(HighlightedIndex())); @@ -3405,7 +3509,7 @@ case EFsEmailUiCmdActionsDeleteCalEvent: case EFsEmailUiCmdActionsDelete: { - TIMESTAMP( "Delete to selected from message list" ); + TIMESTAMP( "Delete to selected from message list" ); TInt index = HighlightedIndex(); CFSEmailUiMailListModelItem* item = dynamic_cast( @@ -3413,24 +3517,21 @@ // If selected item is separator (divider) mark/unmark all messages // under it. - if ( item && item->ModelItemType() == ETypeSeparator ) - { - MarkItemsUnderSeparatorL( ETrue, index ); - } // Delete message only if mail list component is focused // or if there are some marked items TInt markedItems( CountMarkedItemsL() ); - - if ( iFocusedControl == EMailListComponent || markedItems ) - { - DeleteMessagesL(); - } - } + const TBool isNode(iMailList->IsNode(iMailList->FocusedItem())); + if (iFocusedControl == EMailListComponent || markedItems + || isNode) + { + DeleteMessagesL(); + } + } break; case EFsEmailUiCmdCompose: { - TIMESTAMP( "Create new message selected from message list" ); + TIMESTAMP( "Create new message selected from message list" ); CreateNewMsgL(); } break; @@ -3482,7 +3583,7 @@ case EFsEmailUiCmdOpen: case EFsEmailUiCmdActionsOpen: { - TIMESTAMP( "Open email selected from message list" ); + TIMESTAMP( "Open email selected from message list" ); if ( iFocusedControl == EMailListComponent ) { // Opening can happen only when there's exactly one message marked or in focus @@ -3598,21 +3699,31 @@ iAppUi.SyncActiveMailBoxL(); // Sync was started by the user ManualMailBoxSync(ETrue); - iAppUi.ManualMailBoxSync( ETrue ); + iAppUi.ManualMailBoxSync( ETrue ); } } + else + { + //POP3 synchronise + iAppUi.DoAutoConnectL(); + } } break; case EFsEmailUiCmdCancelSync: { - TBool supportsSync = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaSupportsSync ); - if ( supportsSync ) - { + 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: @@ -3846,7 +3957,7 @@ break; } // switch ( aCommand ) CleanupStack::PopAndDestroy( &actionTargetItems ); - TIMESTAMP( "Message list selected operation done" ); + TIMESTAMP( "Message list selected operation done" ); } // --------------------------------------------------------------------------- @@ -4405,7 +4516,7 @@ CFSMailMessage* messagePtr = &item->MessagePtr(); if ( messagePtr ) { - TIMESTAMP( "Open email selected from message list" ); + TIMESTAMP( "Open email selected from message list" ); OpenHighlightedMailL(); return EKeyWasConsumed; } @@ -4621,6 +4732,9 @@ TIMESTAMP( "Open email selected from message list" ); OpenHighlightedMailL(); } + + // Give feedback to user (vibration) + iTouchFeedBack->InstantFeedback(ETouchFeedbackBasic); } // SEPARATOR ITEM; COLLAPSE / EXPAND NODE else if ( item && item->ModelItemType() == ETypeSeparator ) @@ -5126,7 +5240,7 @@ iFolderListButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() ); iSortButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() ); - UpdateTheme(); + UpdateTheme(EFalse); iNewEmailButton->ShowButtonL(); iFolderListButton->ShowButtonL(); @@ -5422,17 +5536,22 @@ void CFSEmailUiMailListVisualiser::DeleteMessagesL() { FUNC_LOG; - TInt markedCount = CountMarkedItemsL(); - - // Delete either marked items or the focused one - if ( markedCount ) - { - DeleteMarkedMessagesL(); - } - else - { - DeleteFocusedMessageL(); - } + const TInt markedCount(CountMarkedItemsL()); + const TFsTreeItemId focusedId(iMailList->FocusedItem()); + + // Delete either marked items or the focused one + if (markedCount) + { + DeleteMarkedMessagesL(); + } + else if (iMailList->IsNode(focusedId)) + { + DeleteMessagesUnderNodeL(focusedId); + } + else + { + DeleteFocusedMessageL(); + } // Set highlight to control bar if no items after delete // @@ -5774,115 +5893,169 @@ } // --------------------------------------------------------------------------- +// DeleteMessagesUnderNodeL +// +// --------------------------------------------------------------------------- +// +void CFSEmailUiMailListVisualiser::DeleteMessagesUnderNodeL( + const TFsTreeItemId aNodeId) + { + FUNC_LOG; + iModel->GetItemIdsUnderNodeL(aNodeId, iDeleteTask->Entries()); + ConfirmAndStartDeleteTaskL(iDeleteTask); + } + +// --------------------------------------------------------------------------- // DeleteMarkedMessagesL // // --------------------------------------------------------------------------- // void CFSEmailUiMailListVisualiser::DeleteMarkedMessagesL() - { - FUNC_LOG; - RFsTreeItemIdList markedEntries; - CleanupClosePushL( markedEntries ); - iMailList->GetMarkedItemsL( markedEntries ); - TInt okToDelete( ETrue ); - - if ( iAppUi.GetCRHandler()->WarnBeforeDelete() ) - { - HBufC* noteText( NULL ); + { + FUNC_LOG; + iMailList->GetMarkedItemsL(iDeleteTask->Entries()); + ConfirmAndStartDeleteTaskL(iDeleteTask); + } + +// --------------------------------------------------------------------------- +// ConfirmAndStartDeleteTaskL +// +// --------------------------------------------------------------------------- +// +void CFSEmailUiMailListVisualiser::ConfirmAndStartDeleteTaskL( + TDeleteTask* aTask ) + { + FUNC_LOG; + const RFsTreeItemIdList& entries(aTask->Entries()); + if (entries.Count()) + { + if (ConfirmDeleteL(entries.Count(), entries[0])) + { + if (entries.Count() > KMsgDeletionWaitNoteAmount) + { + TFsEmailUiUtility::ShowWaitNoteL(iDeletingWaitNote, + R_FSE_WAIT_DELETING_TEXT, EFalse, ETrue); + } + if (iAsyncCallback) + { + // Call actual deletion asynchronously because we must give wait + // note time to show up before deletion begins. + iAsyncCallback->Cancel(); + iAsyncCallback->Set(TCallBack(DoExecuteDeleteTask, aTask)); + iAsyncCallback->CallBack(); + } + } + else + { + aTask->Reset(); + } + } + } + +// --------------------------------------------------------------------------- +// DoExecuteDeleteTask +// +// --------------------------------------------------------------------------- +// +TInt CFSEmailUiMailListVisualiser::DoExecuteDeleteTask( TAny* aSelfPtr ) + { + FUNC_LOG; + TRAPD( error, + reinterpret_cast*>(aSelfPtr)->ExecuteL() ); + return error; + } + +// --------------------------------------------------------------------------- +// HandleDeleteTaskL +// This is called asynchronously by ConfirmAndStartDeleteTaskL +// --------------------------------------------------------------------------- +// +void CFSEmailUiMailListVisualiser::HandleDeleteTaskL( const RFsTreeItemIdList& aEntries ) + { + FUNC_LOG; + // Close wait note if it was used + if ( iDeletingWaitNote ) + { + TRAPD( result, HandleDeleteTaskLeavingCodeL(aEntries) ); + // closing the "Deleting" dialog message should not be skipped by leaving + TRAP_IGNORE( iDeletingWaitNote->ProcessFinishedL() ); + if ( KErrNone != result ) + { + // Handle error. + User::Leave( result ); + } + } + else + { + HandleDeleteTaskLeavingCodeL( aEntries ); + } + } + +// --------------------------------------------------------------------------- +// original code HandleDeleteTaskL which may leave - help function to enable +// calling iDeletingWaitNote->ProcessFinishedL() +// --------------------------------------------------------------------------- +// +void CFSEmailUiMailListVisualiser::HandleDeleteTaskLeavingCodeL( const RFsTreeItemIdList& aEntries ) + { + FUNC_LOG; + TFSMailMsgId folderId = FolderId(); + TFSMailMsgId mailBox = iAppUi.GetActiveMailboxId(); + RArray msgIds; + CleanupClosePushL( msgIds ); + for ( TInt i = 0; i < aEntries.Count(); i++ ) + { + msgIds.AppendL( MsgIdFromListId( aEntries[i] ) ); + } + iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds ); + // Remove from mail list if not already removed by mailbox events + RemoveMsgItemsFromListIfFoundL( msgIds ); + CleanupStack::PopAndDestroy(); // msgIds.Close() + } + +// --------------------------------------------------------------------------- +// ConfirmDeleteL +// +// --------------------------------------------------------------------------- +// +TBool CFSEmailUiMailListVisualiser::ConfirmDeleteL(const TInt aItemCount, + const TFsTreeItemId aItemId) const + { + FUNC_LOG; + TBool result(ETrue); + if (iAppUi.GetCRHandler()->WarnBeforeDelete()) + { + HBufC* noteText(NULL); // The note depends on the amount and type of message(s) - if ( markedEntries.Count() == 1 ) - { - CFSMailMessage& msgPtr = MsgPtrFromListIdL( markedEntries[0] ); - - HBufC* msgSubject = TFsEmailUiUtility::CreateSubjectTextLC( &msgPtr ); - if ( msgPtr.IsFlagSet( EFSMsgFlag_CalendarMsg )) + if (aItemCount == 1) + { + const CFSMailMessage& msgPtr(MsgPtrFromListIdL(aItemId)); + HBufC* msgSubject = TFsEmailUiUtility::CreateSubjectTextLC( + &msgPtr); + if (msgPtr.IsFlagSet(EFSMsgFlag_CalendarMsg)) { - noteText = StringLoader::LoadL( R_FREESTYLE_EMAIL_DELETE_CALEVENT_NOTE, *msgSubject ); + noteText = StringLoader::LoadL( + R_FREESTYLE_EMAIL_DELETE_CALEVENT_NOTE, *msgSubject); } else { - noteText = StringLoader::LoadL( R_FREESTYLE_EMAIL_DELETE_MAIL_NOTE, *msgSubject ); + noteText = StringLoader::LoadL( + R_FREESTYLE_EMAIL_DELETE_MAIL_NOTE, *msgSubject); } - CleanupStack::PopAndDestroy( msgSubject ); - CleanupStack::PushL( noteText ); + CleanupStack::PopAndDestroy(msgSubject); + CleanupStack::PushL(noteText); } else // markedEntries.Count() > 1 { - noteText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_DELETE_N_MAILS_NOTE, markedEntries.Count() ); + noteText = StringLoader::LoadLC( + R_FREESTYLE_EMAIL_DELETE_N_MAILS_NOTE, aItemCount); } // Show the note - okToDelete = TFsEmailUiUtility::ShowConfirmationQueryL( *noteText ); - CleanupStack::PopAndDestroy( noteText ); - } - - if ( okToDelete ) - { - if ( markedEntries.Count() > KMsgDeletionWaitNoteAmount ) - { - TFsEmailUiUtility::ShowWaitNoteL( iDeletingWaitNote, R_FSE_WAIT_DELETING_TEXT, EFalse, ETrue ); - } - - // - if ( iAsyncCallback ) - { - // Call actual deletion asynchronously because we must give wait - // note time to show up before deletion begins. - iAsyncCallback->Cancel(); - iAsyncCallback->Set( TCallBack(DoDeleteMarkedMessages, this) ); - iAsyncCallback->CallBack(); - } - // - } - else - { - UnmarkAllItemsL(); - } - - CleanupStack::PopAndDestroy( &markedEntries ); - } - -// --------------------------------------------------------------------------- -// DoDeleteMarkedMessages -// -// --------------------------------------------------------------------------- -// -TInt CFSEmailUiMailListVisualiser::DoDeleteMarkedMessages( TAny* aSelfPtr ) - { - FUNC_LOG; - CFSEmailUiMailListVisualiser* self = - static_cast( aSelfPtr ); - - TRAPD( err, - RFsTreeItemIdList markedEntries; - CleanupClosePushL( markedEntries ); - self->iMailList->GetMarkedItemsL( markedEntries ); - - // Delete from FW first - RArray msgIds; - CleanupClosePushL( msgIds ); - for ( TInt i=0 ; iMsgIdFromListId( markedEntries[i] ) ); - } - TFSMailMsgId folderId = self->FolderId(); - TFSMailMsgId mailBox = self->iAppUi.GetActiveMailboxId(); - self->iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds ); - - // Remove from mail list if not already removed by mailbox events - self->RemoveMsgItemsFromListIfFoundL( msgIds ); - - CleanupStack::PopAndDestroy( &msgIds ); - CleanupStack::PopAndDestroy( &markedEntries ); - ); - - // Close wait note if it was used - if ( self->iDeletingWaitNote ) - { - TRAP_IGNORE( self->iDeletingWaitNote->ProcessFinishedL() ); - } - - return err; + result = TFsEmailUiUtility::ShowConfirmationQueryL(*noteText); + CleanupStack::PopAndDestroy(noteText); + } + return result; } // --------------------------------------------------------------------------- @@ -6085,8 +6258,8 @@ { CFSEmailUiMailListModelItem* item = static_cast( iModel->Item( i ) ); - // when the item is a separator check whether its MessagePtr is valid (actually it's a reference) - if( &(item->MessagePtr()) != NULL) + // when the item is a separator check whether its MessagePtr is valid (actually it's a reference) + if( &(item->MessagePtr()) != NULL) { if ( aMessageId == item->MessagePtr().GetMessageId() ) { @@ -6483,7 +6656,7 @@ if ( confirmedMsgPtr ) { iMailOpened = ETrue; - + ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY ); // Pointer confirmed, store Id and delete not needed anymore TFSMailMsgId confirmedId = confirmedMsgPtr->GetMessageId(); @@ -6657,21 +6830,21 @@ // Add mark as read / unread options iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsUnread, !IsMarkAsUnreadAvailableL() ); iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsRead, !IsMarkAsReadAvailableL() ); - + // Check support for object mail iten moving TBool supportsMoving = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaMoveToFolder ); iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsMoveMessage, !supportsMoving ); - + // Hide / show follow up TBool supportsFlag = TFsEmailUiUtility::IsFollowUpSupported( *iAppUi.GetActiveMailbox() ); iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsFlag, !supportsFlag ); - + // Hide mark if applicable if ( iMailList->IsMarked( iMailList->FocusedItem() ) ) { iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMark, ETrue ); } - + // Hide collapse / expand all iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsCollapseAll, ETrue ); iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsExpandAll, ETrue ); @@ -6681,11 +6854,11 @@ // Hide mark as read / unread options iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsUnread, ETrue ); iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsRead, ETrue ); - + // Hide move & follow up iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsMoveMessage, ETrue ); iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsFlag, ETrue ); - + // Hide collapse / expand all when applicable if ( iNodesInUse == EListControlSeparatorDisabled || !iModel->Count() ) { @@ -6980,7 +7153,7 @@ } } break; - + case SyncCancelled: { //If sync was started by user, show the synchronisation indicator @@ -6990,7 +7163,7 @@ } } break; - + } } } @@ -7441,6 +7614,35 @@ aLayoutArray.AppendL( iControlBarControl->Visual() ); } +// Sets aActiveMailboxId and aActiveFolderId from iMailFolder if available +TInt CFSEmailUiMailListVisualiser::GetActiveFolderId(TFSMailMsgId& aActiveMailboxId, TFSMailMsgId& aActiveFolderId) const + { + if (iMailFolder != NULL) + { + aActiveMailboxId = iMailFolder->GetMailBoxId(); + aActiveFolderId = iMailFolder->GetFolderId(); + return KErrNone; + } + else + { + return KErrNotFound; + } + } + +void CFSEmailUiMailListVisualiser::CreateExtensionL() + { + CFSMailBox* box = iAppUi.GetActiveMailbox(); + CEmailExtension* ext; + if (box) + { + ext = box->ExtensionL( KEmailMailboxStateExtensionUid ); + } + if (ext) + { + iExtension = reinterpret_cast( ext ); + iExtension->SetStateDataProvider( this ); + } + } ////////////////////////////////////////////////////////////////// // Class implementation CMailListUpdater @@ -7765,27 +7967,27 @@ void CDateChangeTimer::RunL() { FUNC_LOG; - + if (iStatus.Int() != KErrNone) { INFO_1("### CDateChangeTimer::RunL (err=%d) ###", iStatus.Int()); } - + TBool dayChanged = EFalse; TInt dayCount = DayCount(); if (dayCount != iDayCount) { - + iDayCount = dayCount; dayChanged = ETrue; } - + if ( KErrCancel == iStatus.Int() ) { ; - } + } else if ( KErrAbort == iStatus.Int() ) // System time changed { if (dayChanged) @@ -7800,7 +8002,7 @@ TRAP_IGNORE( iMailListVisualiser.NotifyDateChangedL() ); Start(); } - + } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiSendAttachmentsListModel.cpp --- a/emailuis/emailui/src/FreestyleEmailUiSendAttachmentsListModel.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiSendAttachmentsListModel.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -433,6 +433,8 @@ // header and dividers CreateListSkeletonL(); + //moved from CreateListSkeletonL(); + SetupTitlePaneTextL(); // list model items CreateListItemsL(); @@ -518,7 +520,6 @@ iAttachmentsList->SetItemsAlwaysExtendedL(ETrue); - SetupTitlePaneTextL(); } // --------------------------------------------------------------------------- @@ -716,6 +717,10 @@ // compose view is open, so remove attachment there composeView->NewMessage()->RemoveChildPartL( item->MailMsgPartId() ); + if ( iItems.Count() == 1 ) + { + composeView->NewMessage()->ResetFlag( EFSMsgFlag_Attachments ); + } } else { @@ -732,6 +737,7 @@ EFSMsgDataStructure ); CleanupStack::PushL( msg ); msg->RemoveChildPartL( item->MailMsgPartId() ); + msg->ResetFlag( EFSMsgFlag_Attachments ); msg->SaveMessageL(); CleanupStack::PopAndDestroy( msg ); } @@ -799,6 +805,7 @@ RemoveAndDestroy( i ); } } + msg->ResetFlag( EFSMsgFlag_Attachments ); msg->SaveMessageL(); // Delete msg if we own it diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiSettingsList.cpp --- a/emailuis/emailui/src/FreestyleEmailUiSettingsList.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiSettingsList.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -60,7 +60,7 @@ #include "FreestyleEmailUiShortcutBinding.h" #include "FreestyleEmailUiUtilities.h" #include "FSEmail.pan" - +#include "fsemailstatuspaneindicatorhandler.h" // CONSTANTS @@ -499,6 +499,11 @@ aEventType == EEventEnterKeyPressed ) { HandleUserSelectionsL(); + // Fix for EJSA-82HB3F, improves fix for EELN-7Y78DM + // Update title pane, needed for touch support + HBufC* text = CreateTitlePaneTextLC(); + iAppUi.SetTitlePaneTextL( *text ); + CleanupStack::PopAndDestroy( text ); } } @@ -561,10 +566,6 @@ iPIMListActivation = ETrue; SetSelectedMainListIndex( index ); CreatePluginPIMListL( iSelectedPluginSettings ); - // Update the title pane, needed for touch support - HBufC* text = CreateTitlePaneTextLC(); - iAppUi.SetTitlePaneTextL( *text ); - CleanupStack::PopAndDestroy( text ); } else // index < 0; this should never happen { @@ -1587,8 +1588,10 @@ iWaitDialog->PrepareLC( R_FS_WAIT_NOTE_REMOVING_MAILBOX ); iWaitDialog->SetCallback( this ); iWaitDialog->RunLD(); - // Set email indicator off. - TFsEmailUiUtility::ToggleEmailIconL(EFalse); + + //emailindicator handling, we dont care if something goes wrong in the mailindicator update. + TRAP_IGNORE(TFsEmailStatusPaneIndicatorHandler::StatusPaneMailIndicatorHandlingL( mailBox->GetId().Id())); + // delete mailbox and wait event (RequestResponseL) iDeleteMailboxId = iMailClient.DeleteMailBoxByUidL( mailBox->GetId(), *this ); wasDeleted = ETrue; diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiUtilities.cpp --- a/emailuis/emailui/src/FreestyleEmailUiUtilities.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiUtilities.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -70,7 +71,7 @@ #include #include // offline mode keys #include -#include +#include "cmailwidgetcenrepkeys.h" // Removed DISABLE_DEFAULT_EMAIL //#ifndef DISABLE_DEFAULT_EMAIL @@ -233,6 +234,26 @@ iHandleOpen = EFalse; } MAknServerAppExitObserver::HandleServerAppExit( aReason ); + + // Get current AppUi. + CFreestyleEmailUiAppUi* appUi = (CFreestyleEmailUiAppUi*)CCoeEnv::Static()->AppUi(); + if( appUi->EmbeddedApp() ) + { + // Set embedded application flag to false when embedded application exit. + appUi->SetEmbeddedApp( EFalse ); + } + + // if email editor is not started from embedded app. + if( !appUi->EditorStartedFromEmbeddedApp() ) + { + // Do not set embedded app to previous app. + appUi->SetEmbeddedAppToPreviousApp( EFalse ); + } + else + { + // Set flag for judging if email editor started from embedded app to false. + appUi->SetEditorStartedFromEmbeddedApp( EFalse ); + } // Clear the temp directory since the closed file might have been copied there TFsEmailUiUtility::EraseTempDir(); @@ -494,6 +515,36 @@ } // ----------------------------------------------------------------------------- +// TFsEmailUiUtility::ShowDiscreetInfoNoteL +// ----------------------------------------------------------------------------- +void TFsEmailUiUtility::ShowDiscreetInfoNoteL( TInt aResourceStringId ) + { + FUNC_LOG; + //create a host of dummy parameters in order to change the popup duration flag... + const TDesC& dummyText = KNullDesC; + CGulIcon* dummyIcon = NULL; + const TAknsItemID& dummySkinId = KAknsIIDNone; + const TDesC& dummyBitmapFile = KNullDesC; + const TInt dummyBitmapId = 0; + const TInt dummyMaskId = 0; + + //Set timeout flag + TInt flags = 0; + flags |= KAknDiscreetPopupDurationLong; + + HBufC* noteText = StringLoader::LoadLC( aResourceStringId ); + CAknDiscreetPopup::ShowLocalPopupL(*noteText, + dummyText, + dummyIcon, + dummySkinId, + dummyBitmapFile, + dummyBitmapId, + dummyMaskId, + flags); + CleanupStack::PopAndDestroy( noteText ); + } + +// ----------------------------------------------------------------------------- // TFsEmailUiUtility::ShowWaitNoteL // ----------------------------------------------------------------------------- void TFsEmailUiUtility::ShowWaitNoteL( CAknWaitDialog*& aDialog, TInt aTextResourceId, @@ -670,7 +721,7 @@ // ----------------------------------------------------------------------------- // TFsEmailUiUtility::OpenFileL // ----------------------------------------------------------------------------- -void TFsEmailUiUtility::OpenFileL( RFile& aFileToOpen, TDataType& aDataType, TBool aAllowSave ) +void TFsEmailUiUtility::OpenFileL( RFile& aFileToOpen, TDataType& aDataType, TBool /* aAllowSave */) { FUNC_LOG; CFreestyleEmailUiAppUi* appUi = (CFreestyleEmailUiAppUi*)CCoeEnv::Static()->AppUi(); @@ -680,19 +731,9 @@ appUi->FileHandleShutter().SetFile( aFileToOpen ); CDocumentHandler& docHandler = appUi->DocumentHandler(); - CAiwGenericParamList& paramList = docHandler.InParamListL(); - - // Set allow save to parameter. - if ( aAllowSave ) - { - TAiwVariant allowSaveVariant( ETrue ); - TAiwGenericParam genericParamAllowSave( EGenericParamAllowSave, - allowSaveVariant ); - paramList.AppendL( genericParamAllowSave ); - } TInt res = KErrNone; - TRAPD( err, res = docHandler.OpenFileEmbeddedL( aFileToOpen, aDataType, paramList ) ); + TRAPD( err, res = docHandler.OpenFileEmbeddedL( aFileToOpen, aDataType ) ); // Try again with an empty data type if opening using the given data type fails if ( err != KErrNone || res != KErrNone ) @@ -700,7 +741,7 @@ TDataType emptyType; // Open file embedded - TRAP( err, res = docHandler.OpenFileEmbeddedL( aFileToOpen, emptyType, paramList ) ); + TRAP( err, res = docHandler.OpenFileEmbeddedL( aFileToOpen, emptyType ) ); // Show an error note if opening the file still didn't succeed // Ensure also that the file handle got closed. @@ -709,8 +750,22 @@ ShowErrorNoteL( R_FREESTYLE_EMAIL_INFO_NOTE_UNABLE_TO_OPEN, EFalse ); appUi->FileHandleShutter().HandleServerAppExit( KErrCancel ); } + else + { + // Set embedded app flag to true when embedded app start up. + appUi->SetEmbeddedApp( ETrue ); + // Set flag for judging if previous app is embedded app. + appUi->SetEmbeddedAppToPreviousApp( ETrue ); + } } - } + else + { + // Set embedded app flag to true when embedded app start up. + appUi->SetEmbeddedApp( ETrue ); + // Set flag for judging if previous app is embedded app. + appUi->SetEmbeddedAppToPreviousApp( ETrue ); + } + } // ----------------------------------------------------------------------------- // TFsEmailUiUtility::OpenAttachmentL @@ -2707,14 +2762,15 @@ { FUNC_LOG; //Toggle email status indicator - if(aIconOn) + //This is only used for mailwidget status updating + /*if(aIconOn) { RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsNewEmailStatus, ECoreAppUIsNewEmail ); } else { RProperty::Set( KPSUidCoreApplicationUIs, KCoreAppUIsNewEmailStatus, ECoreAppUIsNoNewEmail ); - } + }*/ //Toggle new mail icon in widget if (aMailBox.Id()) diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleEmailUiViewBase.cpp --- a/emailuis/emailui/src/FreestyleEmailUiViewBase.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiViewBase.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -453,6 +453,7 @@ { const TInt KActivationDelay = 200; // ms ActivateControlGroup( KActivationDelay ); + iWasActiveControlGroup = EFalse; } } else @@ -589,8 +590,17 @@ // Email app should be hidden once the view gets deactivated. Note that hiding // should not happen before control group switching is over because that // may cause views of other Alfred apps to get distorted. - iSendToBackgroundOnDeactivation = ETrue; - iAppUi.SetSwitchingToBackground( ETrue ); + if( !iAppUi.EmbeddedAppIsPreviousApp() ) // if previous app is embedded app, + //do not need hide FSEmail app when previous app view gets deactivated. + { + iSendToBackgroundOnDeactivation = ETrue; + iAppUi.SetSwitchingToBackground( ETrue ); + } + else + { + // Set flag to false for judging if previous app is embedded when editor exit. + iAppUi.SetEmbeddedAppToPreviousApp( EFalse ); + } // Re-activate previously active mailbox if it got changed in the external activation. // As an exception, if previous view is the laucher grid, the previously active diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/FreestyleMessageHeaderHTML.cpp --- a/emailuis/emailui/src/FreestyleMessageHeaderHTML.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/FreestyleMessageHeaderHTML.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -21,6 +21,9 @@ #include #include #include +#include +#include +#include #include #include @@ -69,18 +72,29 @@ _LIT8( KHTMLImgTagSrcAfter, "\">" ); _LIT8( KMetaHeader, "\n" ); + +_LIT8( KDisplayImagesLeftToRight, + "
%S
" ); + +_LIT8( KDisplayImagesRightToLeft, + "
%S
" ); + const TInt KMaxEventLength( 256 ); const TInt KFreestyleMessageHeaderHTMLRightMarginInPx( 10 ); const TInt KFreestyleMessageHeaderHTMLMaxBufferSizeForWidth( 5 ); +// Define this to allow theme colorin for the header +#undef __USE_THEME_COLOR_FOR_HEADER + EXPORT_C CFreestyleMessageHeaderHTML* CFreestyleMessageHeaderHTML::NewL( CFSMailMessage& aMailMessage, RWriteStream& aWriteStream, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality + const TBool aAutoLoadImages, + const TBool aExpanded ) { - CFreestyleMessageHeaderHTML* self = new (ELeave) CFreestyleMessageHeaderHTML( aMailMessage, aWriteStream, aVisibleWidth, aScrollPosition, aDirectionality); + CFreestyleMessageHeaderHTML* self = new (ELeave) CFreestyleMessageHeaderHTML( aMailMessage, aWriteStream, aVisibleWidth, aScrollPosition, aAutoLoadImages, aExpanded); self->ConstructL(); return self; } @@ -89,9 +103,10 @@ RWriteStream& aWriteStream, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality) + const TBool aAutoLoadImages, + const TBool aExpanded ) { - CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, aWriteStream, aVisibleWidth, aScrollPosition, aDirectionality); + CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, aWriteStream, aVisibleWidth, aScrollPosition, aAutoLoadImages, aExpanded); CleanupStack::PushL( headerHtml ); headerHtml->ExportL(); CleanupStack::PopAndDestroy( headerHtml ); @@ -101,13 +116,14 @@ RFile& aFile, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality) + const TBool aAutoLoadImages, + const TBool aExpanded ) { RFileWriteStream fwstream; fwstream.Attach( aFile, 0 ); CleanupClosePushL( fwstream ); - CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, fwstream, aVisibleWidth, aScrollPosition, aDirectionality ); + CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, fwstream, aVisibleWidth, aScrollPosition, aAutoLoadImages, aExpanded ); CleanupStack::PushL( headerHtml ); headerHtml->ExportL(); CleanupStack::PopAndDestroy( headerHtml ); @@ -120,13 +136,14 @@ const TPath& aFilePath, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality) + const TBool aAutoLoadImages, + const TBool aExpanded ) { RFileWriteStream fwstream; User::LeaveIfError( fwstream.Replace( aFs, aFilePath, EFileStreamText | EFileWrite) ); CleanupClosePushL( fwstream ); - CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, fwstream, aVisibleWidth, aScrollPosition, aDirectionality); + CFreestyleMessageHeaderHTML* headerHtml = CFreestyleMessageHeaderHTML::NewL( aMailMessage, fwstream, aVisibleWidth, aScrollPosition, aAutoLoadImages, aExpanded); CleanupStack::PushL( headerHtml ); headerHtml->ExportL(); CleanupStack::PopAndDestroy( headerHtml ); @@ -151,23 +168,21 @@ RWriteStream& aWriteStream, TInt aVisibleWidth, TInt aScrollPosition, - TBidiText::TDirectionality aDirectionality ) + const TBool aAutoLoadImages, + const TBool aExpanded ) : iMailMessage( aMailMessage ), iWriteStream( aWriteStream ), iVisibleWidth( aVisibleWidth - KFreestyleMessageHeaderHTMLRightMarginInPx ), - iScrollPosition(aScrollPosition), - iDirectionality( aDirectionality ), - iMirrorLayout( EFalse ) + iScrollPosition( aScrollPosition ), + iAutoLoadImages( aAutoLoadImages ), + iMirrorLayout( AknLayoutUtils::LayoutMirrored() ), + iExpanded( aExpanded ) { } void CFreestyleMessageHeaderHTML::ConstructL() { iMailMessage.AttachmentListL( iAttachments ); - if ( AknLayoutUtils::LayoutMirrored() ) - { - iMirrorLayout = ETrue; - } } void CFreestyleMessageHeaderHTML::HTMLStartL() const @@ -235,16 +250,52 @@ ExportSubjectL(); EndHeaderTableL(); ExportAttachmentsL(); + ExportDisplayImagesTableL(); HTMLBodyEndL(); } +void CFreestyleMessageHeaderHTML::ExportDisplayImagesTableL() const + { + if (!iAutoLoadImages) + { + _LIT8(KDescription, ""); + _LIT8(KButton, "Display images"); + HBufC8* description = KDescription().AllocLC(); //HeadingTextLC(R_FREESTYLE_EMAIL_UI_IMAGES_ARE_NOT_DISPLAYED); + HBufC8* button = KButton().AllocLC(); //HeadingTextLC(R_FREESTYLE_EMAIL_UI_DISPLAY_IMAGES); + HBufC8* formatBuffer = NULL; + if (iMirrorLayout) + { + formatBuffer = HBufC8::NewLC(KDisplayImagesRightToLeft().Length() + description->Length() + button->Length() + 8); + formatBuffer->Des().Format( + KDisplayImagesRightToLeft(), + iAutoLoadImages, + iVisibleWidth, + button, + description); + } + else + { + formatBuffer = HBufC8::NewLC(KDisplayImagesLeftToRight().Length() + description->Length() + button->Length() + 8); + formatBuffer->Des().Format( + KDisplayImagesLeftToRight(), + iAutoLoadImages, + iVisibleWidth, + description, + button); + } + iWriteStream.WriteL(*formatBuffer); + CleanupStack::PopAndDestroy(3); // description, button, formatBuffer + iWriteStream.CommitL(); + } + } + void CFreestyleMessageHeaderHTML::HTMLBodyStartL() const { TBuf8 scrollPos; scrollPos.AppendNum(iScrollPosition); - iWriteStream.WriteL(_L8("\n")); + iWriteStream.WriteL(_L8(")\">\n")); iWriteStream.CommitL(); } @@ -253,9 +304,19 @@ // set the width, using the visible screen width TBuf8 tableWidth; tableWidth.AppendNum( iVisibleWidth ); - iWriteStream.WriteL(_L8("\n")); + + if (iExpanded) + { + iWriteStream.WriteL(_L8("
\n")); + } + else + { + iWriteStream.WriteL(_L8("
\n")); + } // start first row: table with the sent info and the '+' icon @@ -307,7 +368,7 @@ { iWriteStream.WriteL(_L8(" align=\"left\"")); } - iWriteStream.WriteL(_L8(" style=\"padding: 0px 10px 0px 0px;\">\n")); + iWriteStream.WriteL(_L8(" style=\"padding: 0px 10px 0px 0px;\">\n")); // finish first row @@ -789,27 +850,20 @@ iWriteStream.WriteL( KAttachmentTableName ); iWriteStream.WriteL( _L8("\" border=\"0\" width=\"100%\">\n") ); // width is set at 100% intentionally + // add attachment icon // start row iWriteStream.WriteL( _L8("\n") ); - - // add attachment icon iWriteStream.WriteL( _L8("\n") ); - // start table of attachments as a table within a cell iWriteStream.WriteL( _L8("\n")); @@ -1125,8 +1199,30 @@ // define a div class "header", specifying the background color // for the email header part - // In future, query for which background color to use - iWriteStream.WriteL( _L8("body { background-color: lightblue; }\n") ); +#ifdef __USE_THEME_COLOR_FOR_HEADER + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + TRgb bgColor; + // Should use EAknsCIFsTextColorsCG3 if background is white + if ( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG81 ) != KErrNone || + AknsUtils::GetCachedColor( skin, bgColor, + KAknsIIDQsnOtherColors, EAknsCIQsnOtherColorsCG22 ) != KErrNone ) + { + iWriteStream.WriteL( _L8("body { color: black; background-color: lightblue; }\n") ); + } + else + { + // In future, query for which background color to use + _LIT8( KBodyWithColor, "body { color: #%06x; background-color: #%06x; }\n" ); + HBufC8* formatBuffer = HBufC8::NewLC(KBodyWithColor().Length() + 16); + formatBuffer->Des().Format(KBodyWithColor(), textColor.Internal() & 0xFFFFFF, bgColor.Internal() & 0xFFFFFF); + iWriteStream.WriteL( *formatBuffer ); + CleanupStack::PopAndDestroy(); // formatBuffer + } +#else + iWriteStream.WriteL( _L8("body { color: black; background-color: lightblue; }\n") ); +#endif // __USE_THEME_COLOR_FOR_HEADER // set font size to 75% of the default size // because, at the default size, the header text is too big relative to the text in the email body @@ -1134,7 +1230,7 @@ // 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(".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("\n") ); iWriteStream.CommitL(); } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/OverlayControl.cpp --- a/emailuis/emailui/src/OverlayControl.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/OverlayControl.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -17,10 +17,6 @@ #include "OverlayControl.h" -// CONSTS -const TReal KSolidTransparencyFactor = 2; - - COverlayControl::COverlayControl( MOverlayControlObserver* aObserver ) : iObserver( aObserver ) { @@ -44,9 +40,7 @@ void COverlayControl::ConstructL( CCoeControl* aParent, const TRect& aRect, TInt aBitmapId, TInt aMaskId ) { - SetContainerWindowL( *aParent ); - TFileName iconFileName; TFsEmailUiUtility::GetFullIconFileNameL( iconFileName ); AknIconUtils::CreateIconL( iBitmap, @@ -54,10 +48,10 @@ iconFileName, aBitmapId, aMaskId ); - SetRect( aRect ); + iTouchFeedBack = MTouchFeedback::Instance(); + iTouchFeedBack->EnableFeedbackForControl(this, ETrue); EnableDragEvents(); - ActivateL(); } @@ -76,6 +70,12 @@ void COverlayControl::HandlePointerEventL( const TPointerEvent& aPointerEvent ) { + if (aPointerEvent.iType == TPointerEvent::EButton1Down) + { + // Give feedback to user (vibration) + iTouchFeedBack->InstantFeedback(this, ETouchFeedbackBasic); + } + CCoeControl::HandlePointerEventL( aPointerEvent ); if( iObserver ) diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/fsemailstatuspaneindicatorhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/src/fsemailstatuspaneindicatorhandler.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,105 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description : Handles mailiindicator updating +* +*/ + + +#include +#include // CCoeEnv +#include // CCoeAppUi +#include "emailtrace.h" + +#include "cfsmailclient.h" +#include "freestyleemailuiappui.h" +#include "freestyleemailuiutilities.h" +#include "freestyleemailuiconstants.h" +#include "fsemailstatuspaneindicatorhandler.h" +#include "commonemailcrkeys.h" +#include "freestyleemailcenrepkeys.h" + + + + +// FUNCTION DEFINITIONS +void TFsEmailStatusPaneIndicatorHandler::StatusPaneMailIndicatorHandlingL( TInt aMailBoxId ) + { + FUNC_LOG; + //emailindicator control + CRepository* emailRepository = CRepository::NewL( KFreestyleEmailCenRep ); + CleanupStack::PushL(emailRepository); + CRepository* commonEmailRepository = CRepository::NewL( KCmailDataRepository ); + CleanupStack::PushL(commonEmailRepository); + TInt numberOfMailboxes(0); + + emailRepository->Get(KNumberOfMailboxesWithNewEmails,numberOfMailboxes); + if(numberOfMailboxes > 0) + { + RArray repositoryIds; + CleanupClosePushL(repositoryIds); + TInt tmp (0); //used to store the mailbox and plugin ids + for(TInt i = 1 ; i <= numberOfMailboxes * 2; i++ ) + { + emailRepository->Get(KNumberOfMailboxesWithNewEmails+i, tmp); + repositoryIds.Append(tmp); + } + // Here we check if the current mailbox id is already in the repository: + TInt index = repositoryIds.Find(aMailBoxId); + + if(index != KErrNotFound) + { + repositoryIds.Remove(index); + repositoryIds.Remove(index-1); + // Rearrange the mailbox/mailplugin ids + // in the repository + for(TInt j = 0; j < repositoryIds.Count(); j++) + { + emailRepository->Set(KNumberOfMailboxesWithNewEmails + 1 + j, repositoryIds.operator [](j)); + } + // And delete last two remaining keys, that contains old information: + emailRepository->Delete(KNumberOfMailboxesWithNewEmails + ( numberOfMailboxes * 2 - 1 )); + emailRepository->Delete(KNumberOfMailboxesWithNewEmails + ( numberOfMailboxes * 2 )); + + // Decrease the number of mailboxes and update the repository: + numberOfMailboxes -= 1; + emailRepository->Set(KNumberOfMailboxesWithNewEmails,numberOfMailboxes); + + // Finally update the mailbox name to indicator pop-up note if there is still unchecked mailboxes + if(numberOfMailboxes > 0) + { + TInt lastMBoxIdInRepository (0); + TInt lastMPluginIdInRepository (0); + emailRepository->Get(KNumberOfMailboxesWithNewEmails+(numberOfMailboxes*2), lastMBoxIdInRepository); + // Get matching email account. + TFSMailMsgId prevMboxId; + prevMboxId.SetId(lastMBoxIdInRepository); + emailRepository->Get(KNumberOfMailboxesWithNewEmails+(numberOfMailboxes*2-1), lastMPluginIdInRepository); + TUid lastMPluginUidInRepository = { lastMPluginIdInRepository }; + prevMboxId.SetPluginId(lastMPluginUidInRepository); + CFreestyleEmailUiAppUi* appUi = + static_cast( CCoeEnv::Static()->AppUi() ); + //Write the name commonEmailRepository + commonEmailRepository->Set(KCmailNewEmailDisplayText,appUi->GetMailClient()->GetMailBoxByUidL(prevMboxId)->GetName()); + } + } + if(numberOfMailboxes == 0) + { + // Set email indicator off.. user has checked the new emails in all the mailboxes + TFsEmailUiUtility::ToggleEmailIconL(EFalse); + } + repositoryIds.Reset(); + CleanupStack::PopAndDestroy();//repositoryIds + } + CleanupStack::PopAndDestroy(2); //emailRepository, CommonEmailRepository + } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/ncsaifeditor.cpp --- a/emailuis/emailui/src/ncsaifeditor.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/ncsaifeditor.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -980,10 +980,11 @@ pos++; // for whitespace } - // Reset the text - SetCursorPosL( 0, EFalse ); //In case the cursor pos is invalid + // Reset the text HBufC* text = NULL; text = GetFormattedAddressListLC( iArray ); + // fix for dissapearing text PWAN-82DNEJ + SetCursorPosL( 0, EFalse ); //In case the cursor pos is invalid if ( iAddLeftover ) { @@ -1317,6 +1318,12 @@ // add line feed after new entry TInt cursorPos( CursorPos() ); + // related to PWAN-82DNEJ cursorPos shouldn't be 0 here + if (cursorPos == 0) + { + cursorPos = TextLength(); + } + if ( !iPartialRemove ) { Text()->InsertL( cursorPos, TChar(CEditableText::ELineBreak) ); diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/ncscomposeview.cpp --- a/emailuis/emailui/src/ncscomposeview.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/ncscomposeview.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -408,6 +408,28 @@ Toolbar()->SetDimmed( EFalse ); RefreshToolbar(); } + + // if there is a embedded app in FSEmail. + if( iAppUi.EmbeddedApp() ) + { + // Set email editor started from embedded app flag to true + // so that we can switch view correct when sent email. + iAppUi.SetEditorStartedFromEmbeddedApp( ETrue ); + + RWsSession rwsSession; + User::LeaveIfError( rwsSession.Connect() ); + CleanupClosePushL( rwsSession ); + + // Simulate a back key to exit embedded app + // so that email editor could show on the top level. + TKeyEvent KeyEvent = TKeyEvent(); + KeyEvent.iCode = EKeyCBA2; + rwsSession.SimulateKeyEvent( KeyEvent ); + + rwsSession.Close(); + CleanupStack::PopAndDestroy( &rwsSession ); + } + TIMESTAMP( "Editor launched" ); } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/ncscomposeviewcontainer.cpp --- a/emailuis/emailui/src/ncscomposeviewcontainer.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/ncscomposeviewcontainer.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -285,10 +285,13 @@ { if ( iFocused == iMessageField ) { + if( iMessageField->SelectionLength() ) + { + iMessageField->ClearSelectionL(); + } + iMessageField->SetFocus( EFalse, EDrawNow ); iFocused = iHeader; iHeader->SetFocus( ETrue,EDrawNow ); - iMessageField->ClearSelectionL(); - iMessageField->SetFocus( EFalse, EDrawNow ); iHeader->MakeVisible( ETrue ); CommitL( EBodyField ); iView.HandleContainerChangeRequiringToolbarRefresh(); @@ -325,24 +328,12 @@ { if ( iFocused == iHeader ) { - // fix for ESLX-7Y4C2V, dissapearing subject - HBufC* heapBuffer = HBufC::NewL(iHeader->GetSubjectFieldLength()); - TPtr ptr(heapBuffer->Des()); - ptr.Copy(*GetSubjectLC()); + //TRAP_IGNORE( DoUpdateSubjectL() ); - iFocused = iMessageField; - iHeader->SetFocus( EFalse, EDrawNow ); + iHeader->SetFocus( EFalse, EDrawNow ); + iFocused = iMessageField; iMessageField->SetFocus( ETrue, EDrawNow ); - - if ( iHeader->GetSubjectFieldLength() != heapBuffer->Length() ) - { - iHeader->SetSubjectL( const_cast(*heapBuffer)); - } - - iHeader->SetFocus( ETrue, EDrawNow ); - iHeader->SetFocus( EFalse, EDrawNow ); iView.HandleContainerChangeRequiringToolbarRefresh(); - CleanupStack::PopAndDestroy(); //from GetSubjectLC() } else if ( iFocused == iReadOnlyQuoteField ) { @@ -931,6 +922,8 @@ iPhysics->StopPhysics(); iPhysics->ResetFriction(); } + + ClosePopupContactListL(); ScrollL( aScrollBar->ThumbPosition() ); } @@ -1997,3 +1990,27 @@ FUNC_LOG; return iHeader->IsRemoteSearchInprogress(); } + +// ----------------------------------------------------------------------------- +// CNcsComposeViewContainer::DoUpdateSubjectL +// ----------------------------------------------------------------------------- +// +void CNcsComposeViewContainer::DoUpdateSubjectL() + { + FUNC_LOG; + // fix for ESLX-7Y4C2V, dissapearing subject + // get copy of subject + HBufC* subjectCopy = GetSubjectLC(); + iHeader->SetFocus( EFalse, EDrawNow ); + // get subject after focus lost + HBufC* subject = GetSubjectLC(); + // restore subject from copy if necessary + if ( subject->Length() != subjectCopy->Length() ) + { + iHeader->SetSubjectL( *subjectCopy ); + } + + // restore focus + iHeader->SetFocus( ETrue, EDrawNow ); + CleanupStack::PopAndDestroy( 2, subjectCopy ); + } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/ncsheadercontainer.cpp --- a/emailuis/emailui/src/ncsheadercontainer.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/ncsheadercontainer.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -26,8 +26,6 @@ #include "cfsmailbox.h" #include -#include "cpbkxremotecontactlookupserviceuicontext.h" - #include "FSEmailBuildFlags.h" #include "ncsheadercontainer.h" #include "ncscomposeviewcontainer.h" @@ -215,6 +213,7 @@ // Commit changes and make sure no controls are focused. TRAP_IGNORE( CommitFieldL( focused ) ); focused->SetFocus( EFalse, aDrawNow ); + iFocused = NULL; } // Remove MSK label when header loses focus @@ -242,7 +241,10 @@ { iFocused = focused; } - iFocused->SetFocus( aShow, EDrawNow ); + if ( iFocused ) + { + iFocused->SetFocus( aShow, EDrawNow ); + } } // ----------------------------------------------------------------------------- @@ -369,7 +371,7 @@ pOldCtrl->SetFocus( EFalse, ENoDrawNow ); } pNewCtrl->SetFocus( ETrue, ENoDrawNow ); - + iFocused = pNewCtrl; // Commit changes to previously focused field. if ( pOldCtrl ) { @@ -793,6 +795,27 @@ } // --------------------------------------------------------------------------- +// CNcsHeaderContainer::GetToLineHeight +// --------------------------------------------------------------------------- +// +TInt CNcsHeaderContainer::GetToLineHeight() const + { + FUNC_LOG; + TInt lineHeight = 0; + + if(iToField) + { + TRect lineRect; + TRAPD(err, iToField->GetLineRectL(lineRect) ); + if(err == KErrNone) + { + lineHeight = lineRect.iBr.iY - lineRect.iTl.iY; + } + } + return lineHeight; + } + +// --------------------------------------------------------------------------- // CNcsHeaderContainer::GetTotalHeight // --------------------------------------------------------------------------- // @@ -820,8 +843,11 @@ { FUNC_LOG; iAttachmentField->SetTextsLD( aAttachmentNames, aAttachmentSizes ); - ShowAttachmentLabelL(); - DrawAttachmentFocusNow(); + if( aAttachmentNames ) + { + ShowAttachmentLabelL(); + DrawAttachmentFocusNow(); + } } // ----------------------------------------------------------------------------- @@ -1740,6 +1766,7 @@ aifFocused = static_cast( focused ); aifFocused->AddAddressL( aEml ); } + DoScrollL(); } // --------------------------------------------------------------------------- diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/ncspopuplistbox.cpp --- a/emailuis/emailui/src/ncspopuplistbox.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/ncspopuplistbox.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -419,22 +419,67 @@ } // ----------------------------------------------------------------------------- +// CNcsPopupListBox::RoundToItemHeight +// ----------------------------------------------------------------------------- +TInt CNcsPopupListBox::RoundToItemHeight(const TInt aPopupHeight) const + { + TReal fullItems; // number of full visible items in window + TInt err = Math::Round(fullItems, (aPopupHeight / ItemHeight()), 0); + if(err == KErrNone) + { + return (TInt)(fullItems * ItemHeight()); + } + return aPopupHeight; // in case of error + } + +// ----------------------------------------------------------------------------- // CNcsPopupListBox::SetPopupHeight // ----------------------------------------------------------------------------- void CNcsPopupListBox::SetPopupHeight() { FUNC_LOG; - TRect newRect = iPopupMaxRect; + // This is the total height in pixels needed to show all items + TInt minimumHeight = CalcHeightBasedOnNumOfItems( Model()->NumberOfItems()); + TRect newRect = iPopupMaxRect; + TInt areaHeight = Parent()->Parent()->Rect().Height(); + TInt halfAreaHeight = areaHeight/2; - // This is the total height in pixels needed to show all items - TInt itemCount = Model()->NumberOfItems(); - TInt minimumHeight = CalcHeightBasedOnNumOfItems( itemCount ); - - // Shrink list size if maximum size is not needed - if( iPopupMaxRect.Height() > minimumHeight ) - { - newRect.SetHeight( minimumHeight ); - } + // Get height of one line in Address field + CNcsHeaderContainer* headerObj = static_cast(Parent()); + TInt toLineHeight = headerObj->GetToLineHeight(); // height of one line height + if(toLineHeight == 0) + { + toLineHeight = ItemHeight(); + } + + TInt newHeight = minimumHeight; // default window height + + //latch listbox on the bottom of the editor field + if ( newRect.iTl.iY <= halfAreaHeight ) + { + newHeight = RoundToItemHeight( areaHeight - newRect.iTl.iY ); + if(newHeight > minimumHeight) + { + newHeight = minimumHeight; // shrink window (if needed) + } + } + //latch listbox on the top of the editor field + else + { + TInt yOffset = -minimumHeight - toLineHeight; // how much up + TInt newTlY = newRect.iTl.iY + yOffset; // new Top Left Y coordinate + if(newTlY>=0) + { + newRect.Move( 0, yOffset ); + } + else + { + // shrink height to visible area and move + newHeight = RoundToItemHeight( minimumHeight + newTlY); + newRect.Move( 0, -newHeight - toLineHeight); + } + } + newRect.SetHeight(newHeight); // set new height SetRect( newRect ); } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/ncssubjectfield.cpp --- a/emailuis/emailui/src/ncssubjectfield.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/ncssubjectfield.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -250,73 +250,49 @@ void CNcsSubjectField::FocusChanged( TDrawNow aDrawNow ) { FUNC_LOG; - iDrawAfterFocusChange = aDrawNow; - DoHandleFocusChanged( this ); - } - -// ----------------------------------------------------------------------------- -// CNcsSubjectField::HandleFocusChangedL() -// ----------------------------------------------------------------------------- -// -void CNcsSubjectField::HandleFocusChangedL() - { - FUNC_LOG; - if ( IsFocused() ) - { - iTextEditor->SetFocus( ETrue ); - iTextEditor->SetCursorPosL( iTextEditor->TextLength(), EFalse ); + if ( IsFocused() ) + { + iTextEditor->SetFocus( ETrue ); + TRAP_IGNORE( iTextEditor->SetCursorPosL( iTextEditor->TextLength(), EFalse ) ); - // make sure that control is visible on screen - if ( Rect().iTl.iY < 0 ) - { - TPoint pt = TPoint( 0, 0 ); - Reposition( pt, Rect().Width() ); - iSizeObserver->UpdateFieldPosition( this ); - } - else - { - TPoint pos = PositionRelativeToScreen(); - pos.iY += Size().iHeight; - CWsScreenDevice* screenDev = ControlEnv()->ScreenDevice(); - TPixelsAndRotation pix; - screenDev->GetDefaultScreenSizeAndRotation( pix ); - const TInt h = pix.iPixelSize.iHeight; - if ( pos.iY >= h - h / 3 ) - { - TPoint pt = TPoint( 0, h / 3 ); - Reposition( pt, Rect().Width() ); - iSizeObserver->UpdateFieldPosition( this ); - } - } + // make sure that control is visible on screen + if ( Rect().iTl.iY < 0 ) + { + TPoint pt = TPoint( 0, 0 ); + Reposition( pt, Rect().Width() ); + iSizeObserver->UpdateFieldPosition( this ); + } + else + { + TPoint pos = PositionRelativeToScreen(); + pos.iY += Size().iHeight; + CWsScreenDevice* screenDev = ControlEnv()->ScreenDevice(); + TPixelsAndRotation pix; + screenDev->GetDefaultScreenSizeAndRotation( pix ); + const TInt h = pix.iPixelSize.iHeight; + if ( pos.iY >= h - h / 3 ) + { + TPoint pt = TPoint( 0, h / 3 ); + Reposition( pt, Rect().Width() ); + iSizeObserver->UpdateFieldPosition( this ); + } + } - if ( iParentControl ) - { - iParentControl->SetMskL(); - } - } - else - { - iTextEditor->HandleTextChangedL(); - iTextEditor->SetFocus( EFalse ); - } + if ( iParentControl ) + { + TRAP_IGNORE( iParentControl->SetMskL() ); + } + } + else + { + iTextEditor->SetFocus( EFalse ); + } - if ( iDrawAfterFocusChange ) - { - DrawNow(); - } - } - -// ----------------------------------------------------------------------------- -// CNcsSubjectField::DoHandleFocusChanged() -// ----------------------------------------------------------------------------- -// -TInt CNcsSubjectField::DoHandleFocusChanged( TAny* aSelfPtr ) - { - FUNC_LOG; - CNcsSubjectField* self = static_cast( aSelfPtr ); - TRAPD( err, self->HandleFocusChangedL() ); - return err; - } + if ( aDrawNow ) + { + DrawNow(); + } + } // ----------------------------------------------------------------------------- // CNcsSubjectField::MinimumHeight() @@ -352,7 +328,15 @@ FUNC_LOG; if ( &aSubject && aSubject.Length() > 0 ) { - RMemReadStream inputStream( aSubject.Ptr(), aSubject.Size() ); + // clear subject if necessary + TInt documentLength = iTextEditor->RichText()->DocumentLength(); + if ( documentLength > 0 ) + { + iTextEditor->RichText()->DeleteL( 0, documentLength ); + iTextEditor->HandleTextChangedL(); + } + + RMemReadStream inputStream( aSubject.Ptr(), aSubject.Size() ); CleanupClosePushL( inputStream ); iTextEditor->RichText()->ImportTextL( 0, inputStream, CPlainText::EOrganiseByParagraph ); diff -r e1b6206813b4 -r f5907b1a1053 emailuis/emailui/src/ncsutility.cpp --- a/emailuis/emailui/src/ncsutility.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/emailui/src/ncsutility.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -36,9 +36,9 @@ #include #include // CAknEnv -#include "cfsmailbox.h" -#include "cfsmailclient.h" -#include "cfsmailaddress.h" +#include "CFSMailBox.h" +#include "CFSMailClient.h" +#include "CFSMailAddress.h" #include #include @@ -300,51 +300,59 @@ HBufC* NcsUtility::FormatSubjectLineL( const TDesC& aNewSubjectLine, const TDesC& aPrefix ) { - FUNC_LOG; - - HBufC* formattedSubjectLine = aNewSubjectLine.AllocLC(); - HBufC* prefix = aPrefix.AllocLC(); - - TPtr formattedSubjectLinePtr = formattedSubjectLine->Des(); - TPtr prefixPtr = prefix->Des(); - prefixPtr.Trim(); - - TInt subjectLineLength = formattedSubjectLinePtr.Length(); - TInt index = 0; - TInt length = subjectLineLength; - TInt prefixLength = prefixPtr.Length(); - - do - { - formattedSubjectLinePtr = formattedSubjectLinePtr.RightTPtr( length ); - index = formattedSubjectLinePtr.FindC( prefixPtr ); - length = formattedSubjectLinePtr.Length() - index - prefixLength; - } - while( index != KErrNotFound ); + FUNC_LOG; + + HBufC* formattedSubjectLine = aNewSubjectLine.AllocLC(); + HBufC* prefix = aPrefix.AllocLC(); + TPtr formattedSubjectLinePtr = formattedSubjectLine->Des(); + TPtr prefixPtr = prefix->Des(); + prefixPtr.Trim(); + + TInt subjectLineLength = formattedSubjectLinePtr.Length(); + TInt length = subjectLineLength; + TInt prefixLength = prefixPtr.Length(); + HBufC* fwdPrefix = StringLoader::LoadLC( R_NCS_ENGINE_EMAIL_FORWARD_PREFIX ); + TPtr fwdPrt = fwdPrefix->Des(); + TInt fwdLength = fwdPrt.Length(); + fwdPrt.Trim(); + + for(TInt index = formattedSubjectLinePtr.FindC( prefixPtr ); index != KErrNotFound ; index = formattedSubjectLinePtr.FindC( prefixPtr )) + { + formattedSubjectLinePtr = formattedSubjectLinePtr.RightTPtr( length ); + length = formattedSubjectLinePtr.Length() - index - prefixLength; + } + formattedSubjectLinePtr.Trim(); + + for(TInt index = formattedSubjectLinePtr.FindC( fwdPrt) ; index != KErrNotFound ; index = formattedSubjectLinePtr.FindC( fwdPrt )) + { + formattedSubjectLinePtr = formattedSubjectLinePtr.RightTPtr( length ); + length = formattedSubjectLinePtr.Length() - index - fwdLength; + } - formattedSubjectLinePtr.Trim(); + formattedSubjectLinePtr.Trim(); + + + HBufC* finalSubject = HBufC::NewL( formattedSubjectLinePtr.Length() + prefixPtr.Length() + KSpace().Length() ); + TPtr ptr = finalSubject->Des(); + if ( AknLayoutUtils::LayoutMirrored() ) + { + ptr.Append( formattedSubjectLinePtr ); + ptr.Append( KSpace ); + ptr.Append( prefixPtr ); + + } + else + { + ptr.Append( prefixPtr ); + ptr.Append( KSpace ); + ptr.Append( formattedSubjectLinePtr ); + + } + CleanupStack::PopAndDestroy( fwdPrefix ); + CleanupStack::PopAndDestroy( prefix ); + CleanupStack::PopAndDestroy( formattedSubjectLine ); - HBufC* finalSubject = HBufC::NewL( - formattedSubjectLinePtr.Length() + prefixPtr.Length() + - KSpace().Length() ); - TPtr ptr = finalSubject->Des(); - if ( AknLayoutUtils::LayoutMirrored() ) - { - ptr.Append( formattedSubjectLinePtr ); - ptr.Append( KSpace ); - ptr.Append( prefixPtr ); - } - else - { - ptr.Append( prefixPtr ); - ptr.Append( KSpace ); - ptr.Append( formattedSubjectLinePtr ); - } - - CleanupStack::PopAndDestroy( prefix ); - CleanupStack::PopAndDestroy( formattedSubjectLine ); - - return finalSubject; + return finalSubject; } // ----------------------------------------------------------------------------- diff -r e1b6206813b4 -r f5907b1a1053 emailuis/uicomponents/inc/fstreevisualizerbase.h --- a/emailuis/uicomponents/inc/fstreevisualizerbase.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/uicomponents/inc/fstreevisualizerbase.h Fri Mar 12 15:41:14 2010 +0200 @@ -145,7 +145,8 @@ * Get items in range aY to aY + aHeight. Also returns offset by which the listlayout * needs to be scrolled (e.g. the first item in list might be only partly visible) */ - void GetItemsL( RArray& aItems, TInt aY, TInt aHeight, TInt& aOffset ); + void GetItemsL( RArray& aItems, TInt aY, TInt aHeight, TInt& aOffset, + TInt& aBeginIndex ); /** * Returns full height of the world (in pixels). @@ -169,6 +170,11 @@ TInt GetItemRect( const TFsTreeItemId, TRect& aRect ) const; /** + * Returns item's rect, scan starts from aStartIndex. + */ + TInt GetItemRect( const TFsTreeItemId, TRect& aRect, const TInt aStartIndex ) const; + + /** * Returns item's rect by index in world. */ TInt GetItemRectByIndex(const TInt aIndex, TRect& aRect) const; @@ -555,6 +561,9 @@ // Viewport cache TCache iCache; + + // Wold index of the first item in Cache + TInt iWorldIndex; }; @@ -2345,7 +2354,12 @@ /** * Do physics update when simulation has finished. */ - EUpdatePhysicsAfterSimulationFinished + EUpdatePhysicsAfterSimulationFinished, + + /** + * Ignore next pointer up event. + */ + EIgnorePointerUpAction }; // Flags diff -r e1b6206813b4 -r f5907b1a1053 emailuis/uicomponents/src/fscontrolbuttonvisualiser.cpp --- a/emailuis/uicomponents/src/fscontrolbuttonvisualiser.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/uicomponents/src/fscontrolbuttonvisualiser.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -1266,8 +1266,11 @@ } if ( iButtonModel->ContainsElement( ECBElemLabelFirstLine ) ) { - iLabelFirstLine->SetSize( text1.Size() ); - iLabelFirstLine->SetPos( text1.iTl ); + if ( iLabelFirstLine ) + { + iLabelFirstLine->SetSize( text1.Size() ); + iLabelFirstLine->SetPos( text1.iTl ); + } } if ( iButtonModel->ContainsElement( ECBElemLabelSndLine ) ) { diff -r e1b6206813b4 -r f5907b1a1053 emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp --- a/emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -540,7 +540,7 @@ iTextVisual->SetColor( textColor ); iTextVisual->SetTextStyle( styleId ); - iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); +// iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); TAlfAlignHorizontal currTextAlign( EAlfAlignHLocale ); currTextAlign = CurrentTextAlignmentL( iTextAlign, &data->Data(), iTextVisual ); diff -r e1b6206813b4 -r f5907b1a1053 emailuis/uicomponents/src/fstreeplainonelinenodevisualizer.cpp --- a/emailuis/uicomponents/src/fstreeplainonelinenodevisualizer.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/uicomponents/src/fstreeplainonelinenodevisualizer.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -745,7 +745,7 @@ iTextVisual->SetColor( textColor ); iTextVisual->SetTextStyle( styleId ); - iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); +// iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); TAlfAlignHorizontal currTextAlign( EAlfAlignHLocale ); currTextAlign = CurrentTextAlignmentL( iTextAlign, &data->Data(), iTextVisual ); @@ -850,13 +850,14 @@ return; } - iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); textWidth = iTextVisual->SubstringExtents(0, iTextVisual->Text().Length()).Width(); marqueeSize = textWidth - iViewportLayout->Size().iX.Target(); if (iTextVisual && (marqueeSize>0)) { + iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); + TSize size(textWidth,iViewportLayout->Size().iY.Target()); if ( aMarqueeType == EFsTextMarqueeForth ) { diff -r e1b6206813b4 -r f5907b1a1053 emailuis/uicomponents/src/fstreeplaintwolineitemvisualizer.cpp --- a/emailuis/uicomponents/src/fstreeplaintwolineitemvisualizer.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/uicomponents/src/fstreeplaintwolineitemvisualizer.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description : A visualizer for data items with plain text. -* Version : %version: tr1sido#14 % +* Version : %version: tr1sido#15 % * */ @@ -1684,7 +1684,7 @@ iTextVisual->SetColor( textColor ); iTextVisual->SetTextStyle( styleId ); - iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); +// iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); TAlfAlignHorizontal currTextAlign( EAlfAlignHLocale ); currTextAlign = CurrentTextAlignmentL( iTextAlign, &data->Data(), iTextVisual ); @@ -1713,7 +1713,7 @@ iSecondaryTextVisual->SetColor( textColor ); iSecondaryTextVisual->SetTextStyle( styleId ); - iSecondaryTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); +// iSecondaryTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); TAlfAlignHorizontal currSecTextAlign( EAlfAlignHLocale ); currSecTextAlign = CurrentTextAlignmentL( iSecondaryTextAlign, &data->SecondaryData(), iSecondaryTextVisual ); @@ -1744,7 +1744,7 @@ iPreviewPaneTextVisual->SetColor( textColor ); iPreviewPaneTextVisual->SetTextStyle( styleId ); - iPreviewPaneTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); +// iPreviewPaneTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); TAlfAlignHorizontal currSecTextAlign( EAlfAlignHLocale ); currSecTextAlign = CurrentTextAlignmentL( EAlfAlignHLocale, &data->PreviewPaneData(), iPreviewPaneTextVisual ); diff -r e1b6206813b4 -r f5907b1a1053 emailuis/uicomponents/src/fstreevisualizerbase.cpp --- a/emailuis/uicomponents/src/fstreevisualizerbase.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/uicomponents/src/fstreevisualizerbase.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -83,6 +83,7 @@ // check from aknphysicsconstants.h const TInt KFlickMaxDuration( 500000 ); +const TInt KDefaultFriction( 35 ); // avkon default is 10 // ======== LOCAL FUNCTIONS ======== @@ -350,7 +351,7 @@ // Uses binary search. // --------------------------------------------------------------------------- void TWorld::GetItemsL(RArray& aItems, TInt aY, TInt aHeight, - TInt& aOffset) + TInt& aOffset, TInt& aBeginIndex) { // First find first visible item using binary search algorithm aItems.Reset(); @@ -379,7 +380,7 @@ { aOffset = aY - iItems[middle].Top(); aHeight += aOffset; - i = middle; + aBeginIndex = i = middle; break; } } @@ -449,8 +450,18 @@ // --------------------------------------------------------------------------- TInt TWorld::GetItemRect(const TFsTreeItemId aItemId, TRect& aRect) const { + return GetItemRect(aItemId, aRect, 0); + } + +// --------------------------------------------------------------------------- +// TWorld::GetItemRect +// --------------------------------------------------------------------------- +TInt TWorld::GetItemRect(const TFsTreeItemId aItemId, TRect& aRect, + const TInt aStartIndex ) const + { TInt result(KErrNotFound); - for (TInt i = iItems.Count() - 1; i >= 0; i--) + const TInt itemCount(iItems.Count()); + for (TInt i = aStartIndex; i < itemCount; i++) { if (iItems[i].iId == aItemId) { @@ -505,7 +516,7 @@ // TViewPort::TViewPort // --------------------------------------------------------------------------- TViewPort::TViewPort(MObserver& aObserver, TWorld& aWorld) : - iObserver(aObserver), iWorld(aWorld) + iObserver(aObserver), iWorld(aWorld), iWorldIndex(KErrNotFound) { } @@ -585,7 +596,7 @@ { RArray tempItems; CleanupClosePushL(tempItems); - iWorld.GetItemsL(tempItems, iPosition.iY, iSize.iHeight, aOffset); + iWorld.GetItemsL(tempItems, iPosition.iY, iSize.iHeight, aOffset, iWorldIndex); iCache.UpdateL(tempItems, aItemsToBeRemoved, aItemsToBeAdded, aFullUpdate); CleanupStack::PopAndDestroy(); // tempItems } @@ -595,7 +606,7 @@ // --------------------------------------------------------------------------- void TViewPort::GetVisibleItemsL(RArray& aVisible, TInt& aOffset) { - iWorld.GetItemsL(aVisible, iPosition.iY, iSize.iHeight, aOffset); + iWorld.GetItemsL(aVisible, iPosition.iY, iSize.iHeight, aOffset, iWorldIndex); } // --------------------------------------------------------------------------- @@ -739,6 +750,7 @@ // --------------------------------------------------------------------------- void TViewPort::ClearCache() { + iWorldIndex = KErrNotFound; iCache.Clear(); } @@ -750,7 +762,8 @@ TRect itemRect; if (!iCache.IsClear() && iCache.ContainsItem(aItemId)) { - if (iWorld.GetItemRect(aItemId, itemRect) != KErrNotFound) + const TInt beginIndex(iWorldIndex == KErrNotFound ? 0 : iWorldIndex); + if (iWorld.GetItemRect(aItemId, itemRect, beginIndex) != KErrNotFound) { itemRect.Move(0, -iPosition.iY); } @@ -1542,11 +1555,18 @@ iTouchPressed = ETrue; const TPoint& pos(aEvent.PointerEvent().iParentPosition); INFO_2("EButton1Down (%d, %d)", pos.iX, pos.iY); - if (!iFlags.IsSet(EPhysicsOn)) + //if (!iFlags.IsSet(EPhysicsOn)) + // Keep this last! + if (iFlags.IsSet(EPhysicsOn)) { iPhysics->StopPhysics(); - iPhysics->ResetFriction(); + //iPhysics->ResetFriction(); UpdatePhysicsL(); + iFlags.Set(EIgnorePointerUpAction); + } + else + { + iFlags.Clear(EIgnorePointerUpAction); } iDragHandler->PointerDown(aEvent.PointerEvent(), id); break; @@ -1562,11 +1582,12 @@ MFsTreeVisualizerObserver::EFsChangeFocusVisibility ); INFO_2( "EButton1Up (%d, %d)", pos.iX, pos.iY ); } - if( !iDragHandler->IsFlicking() ) + /*if( !iDragHandler->IsFlicking() ) { iPhysics->StopPhysics(); - } + }*/ iDragHandler->PointerUp( aEvent.PointerEvent(), id ); + iFlags.Clear(EIgnorePointerUpAction); break; } case TPointerEvent::EDrag: @@ -1578,6 +1599,7 @@ || iDragHandler->DragDelta(aEvent.PointerEvent()) >= iPhysics->DragThreshold()) { + iFlags.Set(EIgnorePointerUpAction); iDragHandler->PointerDrag(aEvent.PointerEvent(), id); iDragHandler->EnableFlicking(); } @@ -1590,6 +1612,7 @@ const TPoint& pos(aEvent.PointerEvent().iParentPosition); INFO_2("EButtonRepeat (%d, %d)", pos.iX, pos.iY); iDragHandler->PointerRepeat(aEvent.PointerEvent()); + iFlags.Clear(EIgnorePointerUpAction); break; } @@ -3644,7 +3667,7 @@ { iScrollbarModel.SetFocusPosition(iViewPort.Position().iY); iScrollBar->SetModelL(&iScrollbarModel); - iScrollBar->DrawNow(); + iScrollBar->DrawDeferred(); } } @@ -3671,7 +3694,7 @@ iScrollbarModel.SetWindowSize(pageSize); iScrollbarModel.SetFocusPosition(iViewPort.Position().iY); iScrollBar->SetModelL(&iScrollbarModel); - iScrollBar->DrawNow(); + iScrollBar->DrawDeferred(); RArray columns; CleanupClosePushL(columns); @@ -4637,6 +4660,7 @@ iPhysics = CAknPhysics::NewL(*this, NULL ); iDragHandler = CDragHandler::NewL(*this, iPhysics->HighlightTimeout(), iFlags); + iPhysics->SetFriction(KDefaultFriction); } iRootData = CFsTreePlainOneLineItemData::NewL(); @@ -4943,13 +4967,13 @@ visualizerLayout.SetSize(tpItemSize); visualizerLayout.PropertySetIntegerL(KPropertyItemId(), itemId); - if(aUpdateByPhysic != EUpdatedByPhisic) - { +// if(aUpdateByPhysic != EUpdatedByPhisic) +// { visualizer->UpdateL(iTreeData->ItemData(itemId), IsItemFocused(itemId) && IsFocusShown(), iTreeData->Level(itemId), iMarkIcon, iMenuIcon, 0); - } +// } visualizerLayout.Brushes()->AppendL(iBorderBrush, EAlfDoesNotHaveOwnership); @@ -5009,8 +5033,10 @@ startTime = now - TTimeIntervalMicroSeconds( KFlickMaxDuration - 1 ); aDrag.iY = aDrag.iY * KFlickMaxDuration / moveTime; } - iPhysics->StartPhysics(aDrag, startTime); - iFlags.Set(EPhysicsOn); + if (iPhysics->StartPhysics(aDrag, startTime)) + { + iFlags.Set(EPhysicsOn); + } } // --------------------------------------------------------------------------- @@ -5028,6 +5054,7 @@ const TSize worldSize(viewSize.iWidth, Max(iWorld.Height(), viewSize.iHeight)); iPhysics->InitPhysicsL(worldSize, viewSize, EFalse); + iPhysics->SetFriction(KDefaultFriction); } } @@ -5140,8 +5167,12 @@ } else if( aEventType == EPointerUp ) { - iVisualizerObserver->TreeVisualizerEventL( - MFsTreeVisualizerObserver::EFsTreeItemTouchAction, aItemId, aPoint ); + // Ignore pointer up action IF physic emulation was stopped on pointer down + if ( !iFlags.IsSet(EIgnorePointerUpAction) ) + { + iVisualizerObserver->TreeVisualizerEventL( + MFsTreeVisualizerObserver::EFsTreeItemTouchAction, aItemId, aPoint ); + } } } @@ -5215,7 +5246,7 @@ // --------------------------------------------------------------------------- // void CFsTreeVisualizerBase::CDragHandler::PointerDown( - const TPointerEvent& aEvent, const TFsTreeItemId aItemId) + const TPointerEvent& aEvent, const TFsTreeItemId aItemId ) { FUNC_LOG; Reset(); @@ -5224,7 +5255,6 @@ iLastPointerPosition = aEvent.iParentPosition; iStartTime.HomeTime(); iFlags.Set( EPointerDownReceived ); - iTree.SetFocusedItemAndSendEvent( iItemId, EPointerDown, iPosition ); } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/emailwidgetsettings/inc/emailwidgetsettingslistview.h --- a/emailuis/widget/emailwidgetsettings/inc/emailwidgetsettingslistview.h Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/emailwidgetsettings/inc/emailwidgetsettingslistview.h Fri Mar 12 15:41:14 2010 +0200 @@ -113,7 +113,6 @@ private: TVwsViewId iPrevViewId; CEmailWidgetSettingsListViewContainer* iView; - HBufC* iCid; }; #endif diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/emailwidgetsettings/src/emailwidgetsettingsappui.cpp --- a/emailuis/widget/emailwidgetsettings/src/emailwidgetsettingsappui.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/emailwidgetsettings/src/emailwidgetsettingsappui.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -47,7 +47,7 @@ void CEmailWidgetSettingsAppUi::ConstructL() { FUNC_LOG; - BaseConstructL( EAknEnableSkin /*| EAknEnableMSK | EAknSingleClickCompatible*/ ); + BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible ); CreateListViewL(); } diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/emailwidgetsettings/src/emailwidgetsettingslistview.cpp --- a/emailuis/widget/emailwidgetsettings/src/emailwidgetsettingslistview.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/emailwidgetsettings/src/emailwidgetsettingslistview.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -43,7 +43,6 @@ // CEmailWidgetSettingsListView::~CEmailWidgetSettingsListView() { - delete iCid; } // --------------------------------------------------------------------------- @@ -88,7 +87,7 @@ // void CEmailWidgetSettingsListView::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType) { - if (aEventType == EEventEnterKeyPressed || aEventType == EEventItemDoubleClicked /*EEventItemSingleClicked*/ ) + if (aEventType == EEventEnterKeyPressed || aEventType == EEventItemSingleClicked ) { iView->SaveSelectedL(); AppUi()->HandleCommandL(EAknSoftkeyCancel); // Exit app diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/emailwidgetsettings/src/emailwidgetsettingsmailboxes.cpp --- a/emailuis/widget/emailwidgetsettings/src/emailwidgetsettingsmailboxes.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/emailwidgetsettings/src/emailwidgetsettingsmailboxes.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -20,7 +20,7 @@ #include #include "emailtrace.h" -#include "CFSMailClient.h" +#include "cfsmailclient.h" #include "emailwidgetsettingsmailboxes.h" // ======== MEMBER FUNCTIONS ======== diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/group/bld.inf --- a/emailuis/widget/group/bld.inf Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/group/bld.inf Fri Mar 12 15:41:14 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008 - 2010 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" @@ -29,13 +29,15 @@ ../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/emailwidget/hsps/manifest.dat ../hsps/00/widgetconfiguration.xml /epoc32/data/Z/resource/homescreen/emailwidget/hsps/widgetconfiguration.xml ../hsps/00/emailwidgetconfiguration.dtd /epoc32/data/Z/resource/homescreen/emailwidget/hsps/emailwidgetconfiguration.dtd -../xuikon/00/EW.o0000 /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/EW.o0000 ../xuikon/00/emailwidget.dat /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/emailwidget.dat ../xuikon/00/emailwidget.css /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/emailwidget.css +../xuikon/37/emailwidget.css /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/37/emailwidget.css +../xuikon/50/emailwidget.css /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/50/emailwidget.css +../xuikon/57/emailwidget.css /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/57/emailwidget.css +../xuikon/94/emailwidget.css /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/94/emailwidget.css ../xuikon/00/emailwidget.xml /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/emailwidget.xml // Variant creation still disabled (see also emailwidget.dat file) //../xuikon/00/emailwidget.dtd /epoc32/data/Z/resource/homescreen/emailwidget/xuikon/emailwidget.dtd -/epoc32/s60/icons/qgn_menu_cmail.svg /epoc32/data/Z/resource/homescreen/emailwidget/hsps/qgn_menu_cmail.svg // Support for S60 localization //***************************** @@ -60,7 +62,12 @@ OPTION DTD_TYPE widget OPTION LOC_FOLDERS yes END - +// Email widget Home Screen content list icon +START EXTENSION s60/mifconv +OPTION TARGETFILE ${EPOCROOT}/epoc32/data/Z/resource/homescreen/emailwidget/hsps/emailwidgeticon.mif +OPTION HEADERFILE emailwidgeticon.mbg +OPTION SOURCES -c16,8 qgn_menu_cmail.svg +END PRJ_MMPFILES diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/hsps/00/manifest.dat --- a/emailuis/widget/hsps/00/manifest.dat Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/hsps/00/manifest.dat Fri Mar 12 15:41:14 2010 +0200 @@ -16,7 +16,7 @@ 0x2001E272 - qgn_menu_cmail.svg + mif(emailwidgeticon.mif 16384 16385) &qtn_hscr_email; &qtn_hs_widget_mail_description; EW @@ -34,6 +34,6 @@ - 3 + 5 \ No newline at end of file diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/rom/emailwidget_resources.iby --- a/emailuis/widget/rom/emailwidget_resources.iby Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/rom/emailwidget_resources.iby Fri Mar 12 15:41:14 2010 +0200 @@ -32,7 +32,7 @@ // ... data=ZPRIVATE\200159c0\install\emailwidget\hsps\00\emailwidgetconfiguration.dtd \private\200159c0\install\emailwidget\hsps\00\emailwidgetconfiguration.dtd -data=ZPRIVATE\200159c0\install\emailwidget\hsps\00\qgn_menu_cmail.svg \private\200159c0\install\emailwidget\hsps\00\qgn_menu_cmail.svg +data=ZPRIVATE\200159c0\install\emailwidget\hsps\00\emailwidgeticon.mif \private\200159c0\install\emailwidget\hsps\00\emailwidgeticon.mif #endif //FF_EMAIL_FRAMEWORK #endif //FF_CMAIL_INTEGRATION diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/xuikon/00/emailwidget.css --- a/emailuis/widget/xuikon/00/emailwidget.css Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/xuikon/00/emailwidget.css Fri Mar 12 15:41:14 2010 +0200 @@ -1,110 +1,133 @@ widget#EmailWidget { - display: block; - width: 100%; - height: 12.5u; /* From layout data: Based on 3-row widget height */ - direction: ltr; + display: block; + width: 100%; + height: 12.5u; /* From layout data: Based on 3-row widget height */ + direction: ltr; } box#SetupContainer { - display: block; - padding-top: 0.5u; /* From layout data */ - padding-bottom: 0.5u; /* From layout data */ - padding-left: 0.5u; /* From layout data */ - padding-right: 0.5u; /* From layout data */ - width: 100%; - height: 100%; - direction: ltr; - block-progression: tb; - nav-index: appearance; + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; } box#MailsContainer { display: block; - padding-top: 0.5u; /* From layout data */ - padding-bottom: 0.5u; /* From layout data */ - padding-left: 0.5u; /* From layout data */ - padding-right: 0.5u; /* From layout data */ - width: 100%; - height: 100%; - direction: ltr; - block-progression: tb; - nav-index: appearance; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; } box.row_container { - display: block; - padding-top: 0.25u; /* From layout data */ - padding-bottom: 0u; /* From layout data: Padding between rows is included in top padding */ - width: auto; /* From layout data: Fit to screen */ - height: 3.5u; /* From layout data: Height inside padding */ - block-progression: lr; - direction: ltr; - nav-index:auto; + display: block; + padding-top: 0.25u; /* From layout data */ + padding-bottom: 0u; /* From layout data: Padding between rows is included in top padding */ + width: auto; /* From layout data: Fit to screen */ + height: 3.5u; /* From layout data: Height inside padding */ + block-progression:lr; + direction: ltr; + nav-index: auto; +} + +box.setup_row_2_container +{ + display: block; + padding-top: 1u; + padding-bottom: 1u; + padding-left: 18u; + width: auto; + height: auto; + block-progression:lr; + direction: ltr; +} + +box.setup_brand_container +{ + display: block; + width: 6u; + height: 6u; + block-progression:lr; + direction: ltr; } box.image_container { display: block; - padding-left: 0.5u; /* From layout data */ - padding-right: 0.5u; /* From layout data */ - width: 3.5u; /* From layout data */ - height: auto; /* From layout data: Fills whole row_container height (3.5u) */ - block-progression: lr; - direction: ltr; -} - -box.text_field_container -{ - display: block; - padding-left: 0.5u; /* From layout data */ - padding-right: 0.5u; /* From layout data */ - width: auto; /* From layout data: This box is in the middle and width depends on available space */ - height: auto; /* From layout data: Fills whole row_container height (3.5u) */ - block-progression: lr; - direction: ltr; -} - -box.mail_time_container -{ - display: block; - padding-left: 0.5u; /* From layout data */ - padding-right: 0.5u; /* From layout data */ - width: 13.23u; /* From layout data: 12h clock = 3.78 * font-size (24h clock = 2.20 * font-size) */ - height: auto; - block-progression: lr; - direction: ltr; + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 3.5u; /* From layout data */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ + block-progression:lr; + direction: ltr; } box.indicator_image_container { display: block; - padding-left: 0.5u; - padding-right: 0.5u; - width: 3.5u; - height: 3.5u; - block-progression: lr; + padding-left: 0.5u; + padding-right: 0.5u; + width: 3.5u; + height: 3.5u; + block-progression:lr; direction: ltr; } text { - display: block; - position: static; - text-align: left; - font-family: EAknLogicalFontSecondaryFont; /* LAF font */ - font-size: 3.5u; /* LAF font-size */ + display: block; + position: static; + text-align: left; + font-family: EAknLogicalFontSecondaryFont; /* LAF font */ + font-size: 3.5u; /* LAF font-size */ _s60-text-valign: top; /* Set vertical text position correctly */ - color:"SKIN(268458534 13056 74)"; /* LAF color */ - direction: ltr; + color: "SKIN(268458534 13056 74)"; /* LAF color */ + direction: ltr; + width: auto; /* From layout data: This box is in the middle and width depends on available space */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ +} + +text.text_mailbox +{ + padding-left: 0.5u; + width: auto; +} + +text.sender_text +{ + padding-left: 0.5u; /* From layout data */ + width: 30%; +} + +text.subject_text +{ + padding-left: 0.5u; /* From layout data */ + width: auto; } text.time_text { - text-align: right; + text-align: right; + width: adaptive; + height: auto; + padding-right: 0.5u; + padding-left: 0.2u; } image diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/xuikon/00/emailwidget.xml --- a/emailuis/widget/xuikon/00/emailwidget.xml Fri Feb 19 22:37:30 2010 +0200 +++ b/emailuis/widget/xuikon/00/emailwidget.xml Fri Mar 12 15:41:14 2010 +0200 @@ -32,6 +32,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53,7 +79,7 @@ - + @@ -80,18 +106,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -102,18 +128,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/xuikon/37/emailwidget.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/widget/xuikon/37/emailwidget.css Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,136 @@ +widget#EmailWidget +{ + display: block; + width: 100%; + height: 12.5u; /* From layout data: Based on 3-row widget height */ + direction: ltr; +} + +box#SetupContainer +{ + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; +} + +box#MailsContainer +{ + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; +} + +box.row_container +{ + display: block; + padding-top: 0.25u; /* From layout data */ + padding-bottom: 0u; /* From layout data: Padding between rows is included in top padding */ + width: auto; /* From layout data: Fit to screen */ + height: 3.5u; /* From layout data: Height inside padding */ + block-progression:lr; + direction: rtl; + nav-index: auto; +} + +box.setup_row_2_container +{ + display: block; + padding-top: 1u; + padding-bottom: 1u; + padding-right: 18u; + width: auto; + height: auto; + block-progression:lr; + direction: rtl; +} + +box.setup_brand_container +{ + display: block; + width: 6u; + height: 6u; + block-progression:lr; + direction: ltr; +} + +box.image_container +{ + display: block; + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 3.5u; /* From layout data */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ + block-progression:lr; + direction: ltr; +} + +box.indicator_image_container +{ + display: block; + padding-left: 0.5u; + padding-right: 0.5u; + width: 3.5u; + height: 3.5u; + block-progression:lr; + direction: ltr; +} + +text +{ + display: block; + position: static; + text-align: right; + font-family: EAknLogicalFontSecondaryFont; /* LAF font */ + font-size: 3.5u; /* LAF font-size */ + _s60-text-valign: top; /* Set vertical text position correctly */ + color: "SKIN(268458534 13056 74)"; /* LAF color */ + direction: ltr; + width: auto; /* From layout data: This box is in the middle and width depends on available space */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ +} + +text.text_mailbox +{ + padding-left: 0.5u; + width: auto; +} + +text.sender_text +{ + padding-left: 0.5u; /* From layout data */ + width: 30%; +} + +text.subject_text +{ + padding-left: 0.5u; /* From layout data */ + width: auto; +} + +text.time_text +{ + text-align: left; + width: adaptive; + height: auto; + padding-right: 0.5u; + padding-left: 0.2u; +} + +image +{ + _s60-aspect-ratio:preserve; +} diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/xuikon/50/emailwidget.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/widget/xuikon/50/emailwidget.css Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,136 @@ +widget#EmailWidget +{ + display: block; + width: 100%; + height: 12.5u; /* From layout data: Based on 3-row widget height */ + direction: ltr; +} + +box#SetupContainer +{ + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; +} + +box#MailsContainer +{ + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; +} + +box.row_container +{ + display: block; + padding-top: 0.25u; /* From layout data */ + padding-bottom: 0u; /* From layout data: Padding between rows is included in top padding */ + width: auto; /* From layout data: Fit to screen */ + height: 3.5u; /* From layout data: Height inside padding */ + block-progression:lr; + direction: rtl; + nav-index: auto; +} + +box.setup_row_2_container +{ + display: block; + padding-top: 1u; + padding-bottom: 1u; + padding-right: 18u; + width: auto; + height: auto; + block-progression:lr; + direction: rtl; +} + +box.setup_brand_container +{ + display: block; + width: 6u; + height: 6u; + block-progression:lr; + direction: ltr; +} + +box.image_container +{ + display: block; + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 3.5u; /* From layout data */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ + block-progression:lr; + direction: ltr; +} + +box.indicator_image_container +{ + display: block; + padding-left: 0.5u; + padding-right: 0.5u; + width: 3.5u; + height: 3.5u; + block-progression:lr; + direction: ltr; +} + +text +{ + display: block; + position: static; + text-align: right; + font-family: EAknLogicalFontSecondaryFont; /* LAF font */ + font-size: 3.5u; /* LAF font-size */ + _s60-text-valign: top; /* Set vertical text position correctly */ + color: "SKIN(268458534 13056 74)"; /* LAF color */ + direction: ltr; + width: auto; /* From layout data: This box is in the middle and width depends on available space */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ +} + +text.text_mailbox +{ + padding-left: 0.5u; + width: auto; +} + +text.sender_text +{ + padding-left: 0.5u; /* From layout data */ + width: 30%; +} + +text.subject_text +{ + padding-left: 0.5u; /* From layout data */ + width: auto; +} + +text.time_text +{ + text-align: left; + width: adaptive; + height: auto; + padding-right: 0.5u; + padding-left: 0.2u; +} + +image +{ + _s60-aspect-ratio:preserve; +} diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/xuikon/57/emailwidget.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/widget/xuikon/57/emailwidget.css Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,136 @@ +widget#EmailWidget +{ + display: block; + width: 100%; + height: 12.5u; /* From layout data: Based on 3-row widget height */ + direction: ltr; +} + +box#SetupContainer +{ + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; +} + +box#MailsContainer +{ + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; +} + +box.row_container +{ + display: block; + padding-top: 0.25u; /* From layout data */ + padding-bottom: 0u; /* From layout data: Padding between rows is included in top padding */ + width: auto; /* From layout data: Fit to screen */ + height: 3.5u; /* From layout data: Height inside padding */ + block-progression:lr; + direction: rtl; + nav-index: auto; +} + +box.setup_row_2_container +{ + display: block; + padding-top: 1u; + padding-bottom: 1u; + padding-right: 18u; + width: auto; + height: auto; + block-progression:lr; + direction: rtl; +} + +box.setup_brand_container +{ + display: block; + width: 6u; + height: 6u; + block-progression:lr; + direction: ltr; +} + +box.image_container +{ + display: block; + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 3.5u; /* From layout data */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ + block-progression:lr; + direction: ltr; +} + +box.indicator_image_container +{ + display: block; + padding-left: 0.5u; + padding-right: 0.5u; + width: 3.5u; + height: 3.5u; + block-progression:lr; + direction: ltr; +} + +text +{ + display: block; + position: static; + text-align: right; + font-family: EAknLogicalFontSecondaryFont; /* LAF font */ + font-size: 3.5u; /* LAF font-size */ + _s60-text-valign: top; /* Set vertical text position correctly */ + color: "SKIN(268458534 13056 74)"; /* LAF color */ + direction: ltr; + width: auto; /* From layout data: This box is in the middle and width depends on available space */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ +} + +text.text_mailbox +{ + padding-left: 0.5u; + width: auto; +} + +text.sender_text +{ + padding-left: 0.5u; /* From layout data */ + width: 30%; +} + +text.subject_text +{ + padding-left: 0.5u; /* From layout data */ + width: auto; +} + +text.time_text +{ + text-align: left; + width: adaptive; + height: auto; + padding-right: 0.5u; + padding-left: 0.2u; +} + +image +{ + _s60-aspect-ratio:preserve; +} diff -r e1b6206813b4 -r f5907b1a1053 emailuis/widget/xuikon/94/emailwidget.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/widget/xuikon/94/emailwidget.css Fri Mar 12 15:41:14 2010 +0200 @@ -0,0 +1,136 @@ +widget#EmailWidget +{ + display: block; + width: 100%; + height: 12.5u; /* From layout data: Based on 3-row widget height */ + direction: ltr; +} + +box#SetupContainer +{ + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; +} + +box#MailsContainer +{ + display: block; + padding-top: 0.5u; /* From layout data */ + padding-bottom: 0.5u; /* From layout data */ + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 100%; + height: 100%; + direction: ltr; + block-progression:tb; + nav-index: appearance; +} + +box.row_container +{ + display: block; + padding-top: 0.25u; /* From layout data */ + padding-bottom: 0u; /* From layout data: Padding between rows is included in top padding */ + width: auto; /* From layout data: Fit to screen */ + height: 3.5u; /* From layout data: Height inside padding */ + block-progression:lr; + direction: rtl; + nav-index: auto; +} + +box.setup_row_2_container +{ + display: block; + padding-top: 1u; + padding-bottom: 1u; + padding-right: 18u; + width: auto; + height: auto; + block-progression:lr; + direction: rtl; +} + +box.setup_brand_container +{ + display: block; + width: 6u; + height: 6u; + block-progression:lr; + direction: ltr; +} + +box.image_container +{ + display: block; + padding-left: 0.5u; /* From layout data */ + padding-right: 0.5u; /* From layout data */ + width: 3.5u; /* From layout data */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ + block-progression:lr; + direction: ltr; +} + +box.indicator_image_container +{ + display: block; + padding-left: 0.5u; + padding-right: 0.5u; + width: 3.5u; + height: 3.5u; + block-progression:lr; + direction: ltr; +} + +text +{ + display: block; + position: static; + text-align: right; + font-family: EAknLogicalFontSecondaryFont; /* LAF font */ + font-size: 3.5u; /* LAF font-size */ + _s60-text-valign: top; /* Set vertical text position correctly */ + color: "SKIN(268458534 13056 74)"; /* LAF color */ + direction: ltr; + width: auto; /* From layout data: This box is in the middle and width depends on available space */ + height: auto; /* From layout data: Fills whole row_container height (3.5u) */ +} + +text.text_mailbox +{ + padding-left: 0.5u; + width: auto; +} + +text.sender_text +{ + padding-left: 0.5u; /* From layout data */ + width: 30%; +} + +text.subject_text +{ + padding-left: 0.5u; /* From layout data */ + width: auto; +} + +text.time_text +{ + text-align: left; + width: adaptive; + height: auto; + padding-right: 0.5u; + padding-left: 0.2u; +} + +image +{ + _s60-aspect-ratio:preserve; +} diff -r e1b6206813b4 -r f5907b1a1053 help/inc/cmail.hlp.hrh --- a/help/inc/cmail.hlp.hrh Fri Feb 19 22:37:30 2010 +0200 +++ b/help/inc/cmail.hlp.hrh Fri Mar 12 15:41:14 2010 +0200 @@ -9,7 +9,7 @@ * Initial Contributors: * Nokia Corporation - initial contribution. * -* Contributors: +* Contributors: . * * Description: * diff -r e1b6206813b4 -r f5907b1a1053 ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp --- a/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -762,7 +762,7 @@ //ask roaming settings from occ cmManager.ReadGenConnSettingsL(OccSettings); - if(OccSettings.iSeamlessnessVisitor == ECmCellularDataUsageDisabled && iIsRoaming) + if(OccSettings.iCellularDataUsageVisitor == ECmCellularDataUsageDisabled && iIsRoaming) { ret = EFalse; } diff -r e1b6206813b4 -r f5907b1a1053 ipsservices/ipssossettings/group/ipssossettings.mmp --- a/ipsservices/ipssossettings/group/ipssossettings.mmp Fri Feb 19 22:37:30 2010 +0200 +++ b/ipsservices/ipssossettings/group/ipssossettings.mmp Fri Mar 12 15:41:14 2010 +0200 @@ -46,7 +46,7 @@ END // Def file -DEFFILE IPSSOSSETTINGS.DEF +DEFFILE ipssossettings.def // Path definition SOURCEPATH ../src diff -r e1b6206813b4 -r f5907b1a1053 ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp --- a/ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -43,6 +43,7 @@ //CONSTANTS const TInt KMaxMailboxes = 10; +const TInt KImapDefFoldersRetrieve = 50; // Default value for retrieve From other folders // security enums in fs wizard cenrep cenrep // Security protocol (0 = OFF, 1 = StartTLS, 2 = SSL/TLS) @@ -382,6 +383,14 @@ else { aSetData.SetDownloadSizeL( CIpsSetData::EHeadersPlus, KIpsSetDataDefaultDownloadSizeKb ); + + TInt retImFolders = aSetData.RetrieveLimit(CIpsSetData::EImap4Folders); //TRetrieveLimit + if(retImFolders==-1) + { + TInt retPopInbox = aSetData.RetrieveLimit(CIpsSetData::EPop3Limit); + TInt retImInbox = aSetData.RetrieveLimit(CIpsSetData::EImap4Inbox); + aSetData.SetRetrieveLimit(retPopInbox,retImInbox,KImapDefFoldersRetrieve); + } } // aSetData.SetEmailAddressL( iEmailAddress ); diff -r e1b6206813b4 -r f5907b1a1053 meetingrequest/mrgui/mrfieldbuilderpluginextension/group/esmrfieldbuilderpluginextension.mmp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/group/esmrfieldbuilderpluginextension.mmp Fri Feb 19 22:37:30 2010 +0200 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/group/esmrfieldbuilderpluginextension.mmp Fri Mar 12 15:41:14 2010 +0200 @@ -117,6 +117,7 @@ LIBRARY servicehandler.lib // for aiw LIBRARY aiwdialdata.lib LIBRARY pbk2commonui.lib +LIBRARY pbk2rclengine.lib LIBRARY ws32.lib //RWindowGroup LIBRARY cntmodel.lib //contactitem LIBRARY caleninterimutils2.lib diff -r e1b6206813b4 -r f5907b1a1053 meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrcontacthandler.h --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrcontacthandler.h Fri Feb 19 22:37:30 2010 +0200 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrcontacthandler.h Fri Mar 12 15:41:14 2010 +0200 @@ -22,9 +22,8 @@ #include #include #include -// -#include "cpbkxremotecontactlookupserviceuicontext.h" -// +#include + #include "resmrstatic.h" #include "mesmrclslistsobserver.h" #include "cesmrcontactmanagerhandler.h" @@ -162,7 +161,7 @@ MVPbkStoreContact* aContact ); void DoRemoteLookupL( const TDesC& aQueryString, CPbkxRemoteContactLookupServiceUiContext::TResult& aResult, - CPbkxRemoteContactLookupServiceUiContext::TMode aContext = + CPbkxRemoteContactLookupServiceUiContext::TMode aLookupMode = CPbkxRemoteContactLookupServiceUiContext::EModeContactSelector ); CFSMailBox& DelayedMailBoxL(); diff -r e1b6206813b4 -r f5907b1a1053 meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrcontacthandler.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrcontacthandler.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrcontacthandler.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -34,9 +34,8 @@ #include //Remote Contact Lookup -// -#include "cpbkxremotecontactlookupenv.h" -#include +#include +#include #include // Aiw launcher @@ -47,7 +46,6 @@ //FS Email framework #include "cfsmailbox.h" -// //MRUI #include @@ -614,34 +612,24 @@ // void CESMRContactHandler::DoRemoteLookupL( const TDesC& aQueryString, CPbkxRemoteContactLookupServiceUiContext::TResult& aResult, - CPbkxRemoteContactLookupServiceUiContext::TMode aContext ) + CPbkxRemoteContactLookupServiceUiContext::TMode aLookupMode ) { FUNC_LOG; TUid protocolUid = TUid::Null(); - TUint accountId = 0; - - DelayedMailBoxL().GetRCLInfo( protocolUid, accountId ); - const TPbkxRemoteContactLookupProtocolAccountId KAccountId( protocolUid, accountId ); - - CPbkxRemoteContactLookupEnv* env = CPbkxRemoteContactLookupEnv::NewL(); - CleanupStack::PushL( env ); - - MPbkxRemoteContactLookupServiceUi* serviceUi = env->ServiceUiL(); + TUint accountUid = 0; + DelayedMailBoxL().GetRCLInfo( protocolUid, accountUid ); + const TPbkxRemoteContactLookupProtocolAccountId accountId = + TPbkxRemoteContactLookupProtocolAccountId( protocolUid, accountUid ); - // If you want test with RCL dummyContactDatabase, KAccountId = serviceUi->DefaultAccountIdL(); - MPbkxRemoteContactLookupServiceUi::TContextParams params = { KAccountId, aContext }; - - CPbkxRemoteContactLookupServiceUiContext* ctx( NULL ); - TRAPD( error, ctx = serviceUi->NewContextL( params ) ); + CPbkxRemoteContactLookupServiceUiContext::TContextParams params = + { accountId, aLookupMode }; - User::LeaveIfError( error ); - - CleanupStack::PushL( ctx ); + CPbkxRemoteContactLookupServiceUiContext* context = + Pbk2RemoteContactLookupFactory::NewContextL( params ); + CleanupStack::PushL( context ); - ctx->ExecuteL( aQueryString, aResult ); - - CleanupStack::PopAndDestroy( ctx ); - CleanupStack::PopAndDestroy( env ); + context->ExecuteL( aQueryString, aResult ); + CleanupStack::PopAndDestroy( context ); } // -----------------------------------------------------------------------------
\n") ); iWriteStream.WriteL(_L8("\n")); + for (TInt i=0; i < attachmentsCount; i++) { AddAttachmentL( *iAttachments[i] ); @@ -926,12 +980,28 @@ } TBuf8<32> sizeText; + + // Add right to left marker as "(" and ")" are messing up the html language markers + // and &rlm is only added in mirror layout + if( iMirrorLayout ) + { + sizeText.Append( KSpace8 ); + sizeText.Append( _L8( "‏" ) ); + } + sizeText.Append( KSpace8 ); sizeText.Append( _L8("(") ); sizeText.AppendNum( sizeInKB ); sizeText.Append( KSpace8 ); sizeText.Append( KAttachmentSizeUnit ); sizeText.Append( _L8(")") ); + + if( iMirrorLayout ) + { + sizeText.Append( KSpace8 ); + sizeText.Append( _L8( "‏" ) ); + } + iWriteStream.WriteL( sizeText ); EndHyperlinkL(); @@ -987,11 +1057,15 @@ void CFreestyleMessageHeaderHTML::StartHeaderTableL( const TDesC8& aTableId ) const { iWriteStream.WriteL( _L8("
\n") ); - + iWriteStream.WriteL( aTableId ); + if (iExpanded) + { + iWriteStream.WriteL( _L8("\" border=\"0\" width=\"100%\">\n") ); + } + else + { + iWriteStream.WriteL( _L8("\" border=\"0\" width=\"100%\" style=\"display: none\">\n") ); + } TBuf8 tableWidth; tableWidth.AppendNum( iVisibleWidth ); @@ -1012,7 +1086,7 @@ { iWriteStream.WriteL(_L8(" align=\"left\"")); } - iWriteStream.WriteL( _L8(" style=\"padding: 0px 10px 0px 0px;\">\n")); + iWriteStream.WriteL( _L8(" style=\"padding: 0px 10px 0px 0px;\">\n")); iWriteStream.WriteL( _L8("\n")); iWriteStream.WriteL( _L8("