# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1276064577 -10800 # Node ID 6b8f3b30d0ecdf8077542f56dc5d5e27d35af915 # Parent 67369d1b217f6da8e7a5f6214a651156c05f6b47 Revision: 201021 Kit: 2010123 diff -r 67369d1b217f -r 6b8f3b30d0ec emailcontacts/contactactionmenu/src/cfsccontactactionmenulist.cpp --- a/emailcontacts/contactactionmenu/src/cfsccontactactionmenulist.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailcontacts/contactactionmenu/src/cfsccontactactionmenulist.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include #include diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailclientapi/src/emailfolder.cpp --- a/emailservices/emailclientapi/src/emailfolder.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailclientapi/src/emailfolder.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -195,16 +195,15 @@ const RSortCriteriaArray& aCriteria ) { RArray sortCriterias; - CleanupClosePushL( sortCriterias ); CEmailFolder::ToFsSortCriteriaL( aCriteria, sortCriterias ); MFSMailIterator* fsIter = iFolder->ListMessagesL(EFSMsgDataEnvelope, sortCriterias); TUint count = iFolder->GetMessageCount(); - CleanupStack::PopAndDestroy(); // sortCriterias CMessageIterator* iter = CMessageIterator::NewL( fsIter, iPluginData, count ); + sortCriterias.Reset(); return iter; } diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailframework/commonlib/group/bld.inf --- a/emailservices/emailframework/commonlib/group/bld.inf Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailframework/commonlib/group/bld.inf Wed Jun 09 09:22:57 2010 +0300 @@ -32,6 +32,7 @@ ../inc/cmrcalendarinfo.h |../../../../inc/cmrcalendarinfo.h ../inc/cmailmessageext.h |../../../../inc/cmailmessageext.h ../inc/cmailboxstateext.h |../../../../inc/cmailboxstateext.h +../inc/cconnectionstatusqueryext.h |../../../../inc/cconnectionstatusqueryext.h ../inc/mmrattachment.h |../../../../inc/mmrattachment.h ../inc/mmrattendee.h |../../../../inc/mmrattendee.h diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailframework/commonlib/inc/CFSMailRequestHandler.h --- a/emailservices/emailframework/commonlib/inc/CFSMailRequestHandler.h Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailframework/commonlib/inc/CFSMailRequestHandler.h Wed Jun 09 09:22:57 2010 +0300 @@ -74,7 +74,7 @@ /** * destructor. */ - IMPORT_C ~CFSMailRequestHandler(); + IMPORT_C virtual ~CFSMailRequestHandler(); /** * two based constructor diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailframework/commonlib/inc/cconnectionstatusqueryext.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailframework/commonlib/inc/cconnectionstatusqueryext.h Wed Jun 09 09:22:57 2010 +0300 @@ -0,0 +1,64 @@ +/* +* 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 CCONNECTIONSTATUSQUERY_H +#define CCONNECTIONSTATUSQUERY_H + +#include "cemailextensionbase.h" +#include "cfsmailcommon.h" +#include "FreestyleEmailUiConstants.h" + +// interface UID value passed to CFSMailMessageBase::ExtensionL +const TUid KEmailConnectionStatusQueryExtensionUid = { 0x2002EA82 }; + +/** + * Extension interface for querying connection status directly from plugin + */ +class CConnectionStatusQueryExtension : public CEmailExtension + { + +public: + enum TConnectionStatus + { + // Reserve 0 for undefined status + EUndefined, + // Mailbox is disconnected + EDisconnected, + // Mailbox is connected + EConnected, + // Mailbox is synchronizing + ESynchronizing + }; + +public: + + virtual TConnectionStatus ConnectionStatus( + const TFSMailMsgId& aMailboxId, + TForcedStatus aForcedStatus) const = 0; + +protected: + + inline CConnectionStatusQueryExtension(); + + }; + +inline CConnectionStatusQueryExtension::CConnectionStatusQueryExtension() : + CEmailExtension( KEmailConnectionStatusQueryExtensionUid ) + { + } + +#endif // CCONNECTIONSTATUSQUERY_H diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailframework/commonlib/src/CFSMailBox.cpp --- a/emailservices/emailframework/commonlib/src/CFSMailBox.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailframework/commonlib/src/CFSMailBox.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -27,6 +27,7 @@ #include "cfsmailrequestobserver.h" #include "cmailboxstateext.h" +#include "cconnectionstatusqueryext.h" const TInt KMaxMruEntries( 150 ); @@ -79,7 +80,7 @@ // Release extension needs to be called twice because, previous // CExtendableEmail::ExtensionL( KMailboxExtMrCalInfo ) call increased // reference counter with one, so there is need to relase this one also. - CExtendableEmail::ReleaseExtension( extension ); + while( extension->DecRef() > 1 ) {} CExtendableEmail::ReleaseExtension( extension ); } iFolders.ResetAndDestroy(); @@ -845,7 +846,8 @@ // exists. It is released in desctrucor if( aExtension->Uid() != KMailboxExtMrCalInfo ) { - if( aExtension->Uid() == KEmailSettingExtensionUid ) + if( aExtension->Uid() == KEmailSettingExtensionUid || + aExtension->Uid() == KEmailConnectionStatusQueryExtensionUid ) { // check that plugin supports requested extension. if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) ) @@ -888,7 +890,8 @@ } } else if ( aInterfaceUid == KEmailMailboxStateExtensionUid || - aInterfaceUid == KEmailSettingExtensionUid ) + aInterfaceUid == KEmailSettingExtensionUid || + aInterfaceUid == KEmailConnectionStatusQueryExtensionUid ) { if ( !extension ) { diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h --- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h Wed Jun 09 09:22:57 2010 +0300 @@ -37,6 +37,7 @@ class CMailExternalAccount; class CMailPluginProxy; class CEmailObserverPlugin; +class CMailCpsUpdateHelper; /** * CMail ContentPublishingService Handler class @@ -77,6 +78,12 @@ * Wraps all "Update*" methods */ void UpdateFullL(); + + /** + * Method that actually does the full update. + * Used by CMailCpsUpdateHelper. + */ + void DoUpdateFullL(); /** * @@ -453,6 +460,45 @@ TFSMailMsgId iWaitingForNewWidget; // CAknGlobalNote* iQuery; + // Helper for limiting rate of updates to Homescreen widget + CMailCpsUpdateHelper* iUpdateHelper; }; +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +// Helper class for limiting rate of updates to Homescreen widget + +// Don't make widget updates more often than this delay (milliseconds) +#define KMailCpsHandlerUpdateDelay 1000 + +class CMailCpsUpdateHelper : public CTimer + { + public: + static CMailCpsUpdateHelper* NewLC( CMailCpsHandler *aHandler ); + static CMailCpsUpdateHelper* NewL( CMailCpsHandler *aHandler ); + + virtual ~CMailCpsUpdateHelper(); + + // Notify that Homescreen widget(s) should be updated + void UpdateL(); + + protected: + void ConstructL(); + virtual void RunL(); + TInt RunError( TInt aError ); + + private: + CMailCpsUpdateHelper( CMailCpsHandler *aHandler ); + + // Performs the update, resets the timer, etc. + void DoUpdateL(); + + // Handler to use to do updates (not owned) + CMailCpsHandler *iCpsHandler; + // Whether or not an update is pending + TBool iPending; + }; + + #endif //__CMAILCPSHANDLER_H__ diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -54,7 +54,8 @@ CMailCpsHandler::CMailCpsHandler( MFSNotificationHandlerMgr& aOwner ): CFSNotificationHandlerBase( aOwner ), iWaitingForNewMailbox( NULL ), - iWaitingForNewWidget() + iWaitingForNewWidget(), + iUpdateHelper( NULL ) { FUNC_LOG; iWaitingForNewWidget.SetPluginId( KNullUid ); @@ -108,6 +109,7 @@ CMailCpsHandler::~CMailCpsHandler() { FUNC_LOG; + delete iUpdateHelper; delete iLiwIf; delete iSettings; iAccountsArray.ResetAndDestroy(); @@ -350,6 +352,20 @@ void CMailCpsHandler::UpdateFullL() { FUNC_LOG; + if ( !iUpdateHelper ) + { + iUpdateHelper = CMailCpsUpdateHelper::NewL( this ); + } + iUpdateHelper->UpdateL(); + } + +// --------------------------------------------------------- +// CMailCpsHandler::DoUpdateFullL +// --------------------------------------------------------- +// +void CMailCpsHandler::DoUpdateFullL() + { + FUNC_LOG; for (TInt instance = 0; instance < iLiwIf->GetWidgetInstanceCount(); instance++) { if ( iLiwIf->AllowedToPublish(instance) ) @@ -981,13 +997,6 @@ User::Leave( KErrArgument ); } - // Find mailbox instance from array - CMailMailboxDetails* mailbox = FindMailboxDetails( aMailbox ); - if ( !mailbox ) - { - return; - } - // typecast param2 TFSMailMsgId* parentFolder = static_cast( aParam2 ); @@ -1018,6 +1027,7 @@ // Loop through message array TFSMailMsgId msgId; CFSMailMessage* msg( NULL ); + CMailMailboxDetails* mailbox; for ( TInt ii = 0; ii < iiMax; ii++ ) { msgId = (*newEntries)[ii]; @@ -1038,6 +1048,15 @@ continue; } + // Find mailbox instance from array + mailbox = FindMailboxDetails( aMailbox ); + if ( !mailbox ) + { + CleanupStack::PopAndDestroy( msg ); + CleanupStack::PopAndDestroy( newEntries ); + return; + } + // Check if message is duplicate if ( IsDuplicate( *mailbox, msgId ) ) { @@ -1992,3 +2011,103 @@ } return backupOrRestore; } + +// ---------------------------------------------------------------------------- +// class CMailCpsUpdateHelper : public CTimer +// Used to limit the rate of updates to Homescreen widget +// ---------------------------------------------------------------------------- +// + +CMailCpsUpdateHelper::CMailCpsUpdateHelper( + CMailCpsHandler *aHandler ) + : CTimer( EPriorityStandard ) // Could be EPriorityLow + , iCpsHandler( aHandler ) + , iPending( EFalse ) + { + FUNC_LOG; + } + +CMailCpsUpdateHelper* CMailCpsUpdateHelper::NewLC( CMailCpsHandler* aHandler ) + { + FUNC_LOG; + CMailCpsUpdateHelper* self = new ( ELeave ) CMailCpsUpdateHelper( aHandler ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +CMailCpsUpdateHelper* CMailCpsUpdateHelper::NewL( CMailCpsHandler *aHandler ) + { + FUNC_LOG; + CMailCpsUpdateHelper* self = CMailCpsUpdateHelper::NewLC( aHandler ); + CleanupStack::Pop( self ); + return self; + } + +void CMailCpsUpdateHelper::ConstructL() + { + FUNC_LOG; + CTimer::ConstructL(); + CActiveScheduler::Add( this ); + } + +CMailCpsUpdateHelper::~CMailCpsUpdateHelper() + { + FUNC_LOG; + iCpsHandler = NULL; // Not owned + Cancel(); // Stop any pending request + Deque(); // Remove from CActiveScheduler + } + +// Notification that Homescreen widget(s) should be updated +void CMailCpsUpdateHelper::UpdateL() + { + FUNC_LOG; + if ( IsActive() ) + { + // Timer is running, so just flag that an update should be sent when + // the timer expires. + iPending = ETrue; + } + else + { + // Timer is not running, so perform an update and set the timer + // running. + DoUpdateL(); + } + } + +// Actually perform an update of the Homescreen widget. Also sets the timer +// running and clears the pending flag. +void CMailCpsUpdateHelper::DoUpdateL() + { + FUNC_LOG; + // Set the timer running. + After( KMailCpsHandlerUpdateDelay ); + // Clear the pending flag. + iPending = EFalse; + // Do the update. + iCpsHandler->DoUpdateFullL(); + } + +void CMailCpsUpdateHelper::RunL() + { + FUNC_LOG; + if ( iPending ) + { + // There was an update request since the last update, so do another + // update (and set the timer running again, etc.). + DoUpdateL(); + } + } + +TInt CMailCpsUpdateHelper::RunError( TInt aError ) + { + FUNC_LOG; + if ( KErrNone != aError ) + { + Cancel(); // Stop any pending request + } + return KErrNone; // Don't panic the thread + } + diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/inc/ContainerStore.h --- a/emailservices/emailstore/message_store/server/inc/ContainerStore.h Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/inc/ContainerStore.h Wed Jun 09 09:22:57 2010 +0300 @@ -428,6 +428,7 @@ void CommitDatabaseTransactionL(); const TDesC& PrivatePath(); + TBool DeleteFromSortingTable(); #ifdef _DEBUG @@ -489,7 +490,6 @@ // DELETE HANDLER SUPPORT FUNCTIONS friend class CDeleteHandler; - void FirstChildL( TContainerId aId, TContainerId& aChildId, TDbBookmark& aBookmark ); diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/inc/ContainerStoreContainersTable.h --- a/emailservices/emailstore/message_store/server/inc/ContainerStoreContainersTable.h Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/inc/ContainerStoreContainersTable.h Wed Jun 09 09:22:57 2010 +0300 @@ -157,6 +157,8 @@ TBool IsEncrypted(); + TContainerId FirstChildForDeleteL( TContainerId aId, TDbBookmark& aBookmark ); + private: // =============== @@ -189,7 +191,7 @@ void WriteUnencryptedPropertiesColumnL( const TDesC8& aProperties ); void SetEncryptedL( TBool aIsEncrypted ); - + TContainerId GetFirstChildForDeleteL( TContainerId aId, TDbBookmark& aBookmark ); // ================== // PRIVATE ATTRIBUTES // ================== @@ -211,4 +213,4 @@ }; // end class CContainerStoreContainersTable -#endif \ No newline at end of file +#endif diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/inc/ContainerStoreDefs.h --- a/emailservices/emailstore/message_store/server/inc/ContainerStoreDefs.h Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/inc/ContainerStoreDefs.h Wed Jun 09 09:22:57 2010 +0300 @@ -65,6 +65,7 @@ _LIT( KContainersTableCountsCol, "C008" ); _LIT( KContainersTableIsRowEncryptedCol, "C009" ); _LIT( KContainersTableIdIndex, "C00A" ); +_LIT( KContainersTableParentIdIndex, "C00B" ); // Sorting table _LIT( KSortingTableName, "D001" ); @@ -113,6 +114,10 @@ _LIT( KMruAddressTableMruNumIndex, "F007" ); _LIT( KMruAddressTableMailboxIdIndex, "F008" ); +_LIT(KMarkedForDeleteTableName, "H001"); +_LIT(KMarkedForDeleteTableIDCol, "H002"); + + /** Defines the states of encryption/decryption operation * This state needs to be persisted in the db, so that if diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/inc/ContainerStoreDeleteHandler.h --- a/emailservices/emailstore/message_store/server/inc/ContainerStoreDeleteHandler.h Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/inc/ContainerStoreDeleteHandler.h Wed Jun 09 09:22:57 2010 +0300 @@ -46,7 +46,8 @@ enum TState { ERetryDelete, - EDelete + EDelete, + EDeleteFromSortingTable }; // ============== // PUBLIC METHODS diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/inc/ContainerStoreSortingTable.h --- a/emailservices/emailstore/message_store/server/inc/ContainerStoreSortingTable.h Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/inc/ContainerStoreSortingTable.h Wed Jun 09 09:22:57 2010 +0300 @@ -113,6 +113,7 @@ TBool DecryptFirstL( TDbBookmark& aNextRow ); TBool DecryptNextL( TDbBookmark& aNextRow ); + TBool DeleteNextContainerMarkedForDeletionL(); private: @@ -159,8 +160,11 @@ TBool IsEncrypted( RDbRowSet& aRowSet ); void SetEncryptedL( TBool aIsEncrypted ); - - + void CreateMarkedForDeletionTableL(); + void CreateOrOpenMarkedForDeletionTableL(); + void MarkIdForDeletionL( TContainerId aId); + TBool DeleteNextMessageL( TContainerId aId ); + TBool DeleteFromMarkedForDeletionTableL(); private: // ================== @@ -186,7 +190,8 @@ TInt iIsEncryptedColNum; TUint iFieldsChanged; - + RDbTable iMarkedForDeleteTable; + TInt iMarkedForDeleteIdColNum; __LOG_DECLARATION }; // end class CContainerStoreSortingTable diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/src/ContainerStore.cpp --- a/emailservices/emailstore/message_store/server/src/ContainerStore.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/src/ContainerStore.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -1735,15 +1735,10 @@ // ========================================================================== void CContainerStore::FirstChildL( TContainerId aId, TContainerId& aFirstChildId, TDbBookmark& aBookmark ) { - aFirstChildId = FirstChildL( aId ); - - if( aFirstChildId != KContainerInvalidId ) - { - aBookmark = iContainersTable->Bookmark(); - } // end if - - } // end FirstChildL - + //Used to by the deletehandler to traverse the table for the lowest level child + aFirstChildId = iContainersTable->FirstChildForDeleteL( aId, aBookmark ); + } + // ========================================================================== // FUNCTION: SearchL // ========================================================================== @@ -1773,6 +1768,7 @@ // ========================================================================== // FUNCTION: StartSortingL +// Will leave with KErrNotFound if the container is marked for deletion. // ========================================================================== TContainerId CContainerStore::StartSortingL( TMsgStoreSortCriteria& aSortCriteria, RPointerArray& aPropertyNames, @@ -1781,6 +1777,13 @@ __LOG_ENTER_SUPPRESS( "StartSortingL" ) __LOG_WRITE_FORMAT4_INFO( "folder=%x sortField=%d order=%d, aInMemorySort=%d", aSortCriteria.iFolderId, aSortCriteria.iSortBy, aSortCriteria.iSortOrder, aInMemorySort ) + //Seek to make sure the container is not markd for deletion, if the container is marked for deletion + //this will leave with KerrNotFound + TRAPD(err, iContainersTable->SeekL( aSortCriteria.iFolderId, iHierarchy )); + if (err != KErrNone) + { + User::LeaveIfError(KErrNotFound); + } CMsgStoreSortResultRowSet* resultRowSet = iSortingTable->SortL( aSortCriteria, aInMemorySort ); CleanupStack::PushL( resultRowSet ); @@ -2488,6 +2491,15 @@ iUtils->CommitDatabaseTransactionL(); } +/* + * Check to see there are mailboxes/folder IDs marked for deletion. + */ +TBool CContainerStore::DeleteFromSortingTable() + { + TBool moreToDelete = EFalse; + TRAP_IGNORE(moreToDelete = iSortingTable->DeleteNextContainerMarkedForDeletionL()); + return moreToDelete; + } /** * */ diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/src/ContainerStoreContainersTable.cpp --- a/emailservices/emailstore/message_store/server/src/ContainerStoreContainersTable.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/src/ContainerStoreContainersTable.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -347,7 +347,7 @@ // Create table index. CreateIndexL( KContainersTableName, KContainersTableIdIndex, KContainersTableIdCol ); - + CreateIndexL( KContainersTableName, KContainersTableParentIdIndex, KContainersTableParentIdCol ); OpenTableL(); __LOG_EXIT @@ -1208,4 +1208,69 @@ iTable.SetColL( iIsRowEncryptedColNum, static_cast(aIsEncrypted) ); } +/* + * Search based on the parent ID. This will set the index if one exists and use the find if the index does not + * exists which could happen for a existing DB(IAD case) + */ +TContainerId CContainerStoreContainersTable::FirstChildForDeleteL( TContainerId aId, TDbBookmark& aBookmark ) + { + __LOG_ENTER( "FirstChildForDeleteL" ) + __LOG_WRITE8_FORMAT1_INFO( "id=%x", aId ) + + TContainerId returnValue = KContainerInvalidId; + + TInt rc = iTable.SetIndex( KContainersTableParentIdIndex ); + if ( rc == KErrNone ) + { + TRAP_IGNORE(returnValue = GetFirstChildForDeleteL(aId, aBookmark)); + //remember to set the index back + iTable.SetIndex( KContainersTableIdIndex ); + } + else + { + //older version of the db does not have the index on parent id, so do the slow Find instead + const TUint bufSize = 60; + TBuf queryString; + + _LIT( KEquals, "=" ); + + queryString.Copy( KContainersTableParentIdCol ); + queryString.Append( KEquals ); + queryString.AppendNum( aId ); + + returnValue = FindL( queryString ); + if ( returnValue != KContainerInvalidId ) + { + aBookmark = Bookmark(); + } + } + + __LOG_EXIT + return returnValue; + } +/* + * Search based on the parent ID. + */ +TContainerId CContainerStoreContainersTable::GetFirstChildForDeleteL( TContainerId aId, TDbBookmark& aBookmark ) + { + __LOG_ENTER( "FirstChildForDeleteL" ) + __LOG_WRITE8_FORMAT1_INFO( "id=%x", aId ) + + TContainerId returnValue = KContainerInvalidId; + //Index on parent id, so we can Seek, faster than Find + if ( !iTable.SeekL( aId ) ) + { + __LOG_WRITE_INFO( "No match found" ) + returnValue = KContainerInvalidId; + } + else + { + iTable.GetL(); + returnValue = iTable.ColUint32( iIdColNum ); + aBookmark = Bookmark(); + __LOG_WRITE8_FORMAT1_INFO( "found id=%x", returnValue ) + } + __LOG_EXIT + return returnValue; + } diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/src/ContainerStoreDeleteHandler.cpp --- a/emailservices/emailstore/message_store/server/src/ContainerStoreDeleteHandler.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/src/ContainerStoreDeleteHandler.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -115,7 +115,7 @@ // ========================================================================== void CDeleteHandler::FindContainerToDeleteL() { - TBool done = EFalse; + TBool done(EFalse); TContainerId containerId = KToBeDeletedContainers; if ( iState == ERetryDelete ) @@ -163,7 +163,7 @@ // Delete the lowest node in the hierarchy. TRAPD( result, FindContainerToDeleteL() ); - TBool more = EFalse; + TBool more ( EFalse ); if( result == KErrNone ) { @@ -201,7 +201,18 @@ { if ( iState == ERetryDelete ) { - iState = EDelete; + //next state + iState = EDeleteFromSortingTable; + more = ETrue; + } + else if(iState == EDeleteFromSortingTable) + { + //check sorting table for containers that have been marked for deletion + if(!iContainerStore.DeleteFromSortingTable()) + { + //if nor more then set to next state + iState = EDelete; + } more = ETrue; } else @@ -214,21 +225,3 @@ return more; } // end DoNextDelete - -// ========================================================================== -// FUNCTION: FinishDeletes -// ========================================================================== -void CDeleteHandler::FinishDeletes() - { - if( IsActive() ) - { - Cancel(); - - // Loop until all deletes are done. - while( DoNextDelete() ) - { - } - - } // end if - - } // end FinishDeletes diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/emailstore/message_store/server/src/ContainerStoreSortingTable.cpp --- a/emailservices/emailstore/message_store/server/src/ContainerStoreSortingTable.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/emailstore/message_store/server/src/ContainerStoreSortingTable.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -113,6 +113,7 @@ CContainerStoreSortingTable::~CContainerStoreSortingTable() { iUtils.CloseTable( iTable ); + iUtils.CloseTable (iMarkedForDeleteTable); iEncryptedBuffer.Close(); __LOG_DESTRUCT } // end destructor @@ -148,7 +149,7 @@ // Set the table's index to the ID index. User::LeaveIfError( iTable.SetIndex( KSortingTableMessageIdIndex ) ); - + CreateOrOpenMarkedForDeletionTableL(); __LOG_EXIT } @@ -206,7 +207,6 @@ CleanupStack::PopAndDestroy( colSet ); - // Create index for every column except for mailBoxId CreateIndexL( KSortingTableName, KSortingTableMessageIdIndex, KSortingTableMessageIdCol ); CreateIndexL( KSortingTableName, KSortingTableFolderIdIndex, KSortingTableFolderIdCol ); CreateIndexL( KSortingTableName, KSortingTableMailBoxIdIndex, KSortingTableMailBoxIdCol ); @@ -284,21 +284,9 @@ void CContainerStoreSortingTable::DeleteMessagesByFolderIdL( TContainerId aFolderId ) { __LOG_ENTER_SUPPRESS( "DeleteMessagesByFolderIdL" ) - __LOG_WRITE8_FORMAT1_DEBUG3( "aFolderId=%x", aFolderId ) - - TBuf queryString; - queryString.Copy( KDelete ); - queryString.Append( KFrom ); - queryString.Append( KSortingTableName ); - queryString.Append( KWhere ); - queryString.Append( KSortingTableFolderIdCol ); - queryString.Append( KEquals ); - queryString.AppendNum( aFolderId ); - - iUtils.Execute( queryString ); - - //Notify the observer - iObserver.FolderDeleted( aFolderId ); + __LOG_WRITE8_FORMAT1_DEBUG3( "aFolderId=%x", aFolderId ) + //Add the folder ID into the MarkedForDeleteTable to be processed in the background. + MarkIdForDeletionL(aFolderId); } // ========================================================================== @@ -308,20 +296,8 @@ { __LOG_ENTER_SUPPRESS( "DeleteMessagesByMailBoxIdL" ) __LOG_WRITE8_FORMAT1_DEBUG3( "aMailBoxId=%x", aMailBoxId ) - - TBuf queryString; - queryString.Copy( KDelete ); - queryString.Append( KFrom ); - queryString.Append( KSortingTableName ); - queryString.Append( KWhere ); - queryString.Append( KSortingTableMailBoxIdCol ); - queryString.Append( KEquals ); - queryString.AppendNum( aMailBoxId ); - - iUtils.Execute( queryString ); - - //Notify the observer - iObserver.MailBoxDeleted( aMailBoxId ); + //Add the mailbox ID into the MarkedForDeleteTable to be processed in the background. + MarkIdForDeletionL( aMailBoxId); } // ========================================================================== @@ -1245,3 +1221,142 @@ iTable.SetColL( iIsEncryptedColNum, static_cast(aIsEncrypted) ); } +// ========================================================================== +// FUNCTION: CreateMarkedForDeletionTableL +// ========================================================================== +void CContainerStoreSortingTable::CreateMarkedForDeletionTableL() + { + __LOG_ENTER( "CreateMarkedForDeletionTableL" ) + + // Create table columns + CDbColSet* colSet = CDbColSet::NewLC(); + TDbCol mailboxIdCol( KMarkedForDeleteTableIDCol, EDbColUint32 ); + colSet->AddL( mailboxIdCol ); + // Create table. + iUtils.CreateTableL( KMarkedForDeleteTableName, *colSet ); + CleanupStack::PopAndDestroy( colSet ); + __LOG_EXIT + } + +// ========================================================================== +// FUNCTION: CreateOrOpenMarkedForDeletionTableL +// try to open the Table - create if not found (IAD case) and then open +// ========================================================================== +void CContainerStoreSortingTable::CreateOrOpenMarkedForDeletionTableL() + { + __LOG_ENTER( "OpenMarkedForDeletionTableL" ) + + TRAPD(err, iUtils.OpenTableL( iMarkedForDeleteTable, KMarkedForDeleteTableName )); + if(err != KErrNone) + { + CreateMarkedForDeletionTableL(); + iUtils.OpenTableL( iMarkedForDeleteTable, KMarkedForDeleteTableName ); + } + CDbColSet* colSet = iMarkedForDeleteTable.ColSetL(); + CleanupStack::PushL( colSet ); + //Get the column number + iMarkedForDeleteIdColNum = colSet->ColNo( KMarkedForDeleteTableIDCol ); + CleanupStack::PopAndDestroy( colSet ); + __LOG_EXIT + } + +// ========================================================================== +// FUNCTION: MarkIdForDeletionL +// Add the ID into the marked for DeletionTable. +// ========================================================================== +void CContainerStoreSortingTable::MarkIdForDeletionL( TContainerId aId) + { + __LOG_ENTER( "MarkIdForDeletionL" ) + + __LOG_WRITE8_FORMAT1_DEBUG3( "Id=%x",aId ) + iMarkedForDeleteTable.LastL(); + iMarkedForDeleteTable.InsertL(); + iMarkedForDeleteTable.SetColL( iMarkedForDeleteIdColNum, aId ); + iMarkedForDeleteTable.PutL(); + __LOG_EXIT + } + +// ========================================================================== +// FUNCTION: DeleteNextContainerMarkedForDeletionL +// Use the ID in the MarkedForDeletionTable to delete items from the sorting table . +// ========================================================================== +TBool CContainerStoreSortingTable::DeleteNextContainerMarkedForDeletionL() + { + __LOG_ENTER( " DeleteNextContainerMarkedForDeletionL" ) + TBool more = EFalse; + //set the index to mailboxID to help with seek + // Set the table's index to the ID index. + if(!iMarkedForDeleteTable.IsEmptyL()) + { + iMarkedForDeleteTable.FirstL(); + iMarkedForDeleteTable.GetL(); + TInt deletionID = iMarkedForDeleteTable.ColUint32(iMarkedForDeleteIdColNum); + //check if the ID refers to a folder or is a mailbox and set the index for the table accordingly. + if ( ( deletionID & EMsgStoreContainerMask ) == EMsgStoreMailBoxBits) + { + iTable.SetIndex( KSortingTableMailBoxIdIndex ); + } + else if ( ( deletionID & EMsgStoreContainerMask ) == EMsgStoreFolderBits) + { + iTable.SetIndex( KSortingTableFolderIdIndex ); + } + //Delete next message from the mailbox/folder + TRAPD(err, more = DeleteNextMessageL(deletionID)); + if (err == KErrNone) + { + if (!more) + { + TRAP_IGNORE(more = DeleteFromMarkedForDeletionTableL()); + } + } + //reset to the original index + iTable.SetIndex( KSortingTableMessageIdIndex ); + } + __LOG_EXIT + return more; + } + +// ========================================================================== +// FUNCTION: DeleteNextContainerMarkedForDeletionL +// Use the ID in the MarkedForDeletionTable to delete items from the sorting table . +// ========================================================================== +TBool CContainerStoreSortingTable::DeleteFromMarkedForDeletionTableL() + { + __LOG_ENTER( " DeleteFromMarkedForDeletionTableL" ) + TBool more(EFalse); + // removed the row once all the messages for that ID have been deleted. + iMarkedForDeleteTable.DeleteL(); + //check if there is another entry + if(iMarkedForDeleteTable.NextL()) + { + more = ETrue; + } + __LOG_EXIT + return more; + } + +// ========================================================================== +// FUNCTION: DeleteNextMessageL +// Deletes one row where ID = aId. +// @ return Etrue if seek successful +// EFalse if seek failed which mean no more messages for the +// given container ID +// ========================================================================== +TBool CContainerStoreSortingTable::DeleteNextMessageL( TContainerId aId ) + { + __LOG_ENTER( "DeleteNextMessageL" ) + __LOG_WRITE8_FORMAT1_DEBUG3( "aId=%x", aId ) + + //Find first matching row + TRAPD(err, SeekL( aId )); + TBool more(EFalse); + if (err ==KErrNone) + { + iTable.GetL(); + iTable.DeleteL(); + more = ETrue; + } + __LOG_EXIT + return more; + } + diff -r 67369d1b217f -r 6b8f3b30d0ec emailservices/psmruadapter/src/CPsMruAdapter.cpp --- a/emailservices/psmruadapter/src/CPsMruAdapter.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailservices/psmruadapter/src/CPsMruAdapter.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -287,13 +287,14 @@ // function has trap in Event() -case> TFSEventNewMailbox and in DeleayedMailboxCreationEventL() // should not leave when new mailbox only when new mail address CFSMailBox *mailBox = iMailClient->GetMailBoxByUidL(aId); - if (mailBox) + if ( mailBox ) { + CleanupStack::PushL( mailBox ); AddMailboxObserverL( aId ); // Get MRU list for this mailbox MDesCArray* mruList = mailBox->ListMrusL(); - mailBox = NULL; + CleanupStack::PopAndDestroy( mailBox ); // update the caching status as InProgress iDataStoreObserver->UpdateCachingStatus( aDataStoreURI, diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/conf/freestyleemailui.confml Binary file emailuis/emailui/conf/freestyleemailui.confml has changed diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/conf/freestyleemailui_2001E277.crml Binary file emailuis/emailui/conf/freestyleemailui_2001E277.crml has changed diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/data/FreestyleEmailUi.rss --- a/emailuis/emailui/data/FreestyleEmailUi.rss Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/data/FreestyleEmailUi.rss Wed Jun 09 09:22:57 2010 +0300 @@ -617,12 +617,12 @@ id = EFsEmailUiTbCmdActions; control = AVKON_TOOLBAR_EXTENSION { - helptxt = qtn_fse_tb_actions; + helptxt = qtn_fse_tb_reply; bmpFile = EMAILUI_ICON_FILE; - bmpId = EMbmFreestyleemailuiQgn_indi_tb_email_extend; - bmpMask = EMbmFreestyleemailuiQgn_indi_tb_email_extend_mask; + bmpId = EMbmFreestyleemailuiQgn_indi_tb_email_reply_all; + bmpMask = EMbmFreestyleemailuiQgn_indi_tb_email_reply_all_mask; bmpSkinIdMajor = EAknsMajorGeneric; - bmpSkinIdMinor = EAknsMinorGenericQgnIndiTbEmailExtend; + bmpSkinIdMinor = EAknsMinorGenericQgnIndiTbEmailReplyAll; items = { TBAR_CTRL diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/inc/FSAsyncTextFormatter.h --- a/emailuis/emailui/inc/FSAsyncTextFormatter.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/inc/FSAsyncTextFormatter.h Wed Jun 09 09:22:57 2010 +0300 @@ -2,9 +2,9 @@ * Copyright (c) 2008 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 "Symbian Foundation License v1.0" +* under the terms of "Eclipse Public License v1.0" * which accompanies this distribution, and is available -* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * * Initial Contributors: * Nokia Corporation - initial contribution. diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/inc/FreestyleEmailCenRepKeys.h --- a/emailuis/emailui/inc/FreestyleEmailCenRepKeys.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailCenRepKeys.h Wed Jun 09 09:22:57 2010 +0300 @@ -25,24 +25,24 @@ // // S60 UID update -const TUid KFreestyleEmailCenRep = {0x2001E277}; +const TUid KFreestyleEmailCenRep = {0x2001E277}; // S60 UID update // Global settings values -const TUint32 KFreestyleEmailMessageListLayout = {0x00000001}; +const TUint32 KFreestyleEmailMessageListLayout = {0x00000001}; const TInt KFreestyleEmailMessageListLayoutDefault = 2; - -const TUint32 KFreestyleEmailBodyPreview = {0x00000002}; + +const TUint32 KFreestyleEmailBodyPreview = {0x00000002}; const TInt KFreestyleEmailBodyPreviewDefault = 0; - -const TUint32 KFreestyleEmailTitleDividers = {0x00000003}; + +const TUint32 KFreestyleEmailTitleDividers = {0x00000003}; const TInt KFreestyleEmailTitleDividersDefault = 1; - -const TUint32 KFreestyleEmailDownloadNotification = {0x00000004}; + +const TUint32 KFreestyleEmailDownloadNotification = {0x00000004}; const TInt KFreestyleEmailDownloadNotificationDefault = 1; - -const TUint32 KFreestyleEmailActiveIdle = {0x00000005}; + +const TUint32 KFreestyleEmailActiveIdle = {0x00000005}; const TInt KFreestyleEmailActiveIdleDefault = 1; const TUint32 KFreestyleEmailWarnBeforeDelete = {0x00000006}; @@ -53,10 +53,10 @@ // Other CR values for FS Email application internal use -const TUint32 KFreestyleEmailEditorCCVisible = {0x00000080}; +const TUint32 KFreestyleEmailEditorCCVisible = {0x00000080}; const TInt KFreestyleEmailEditorCCVisibleDefault = 1; -const TUint32 KFreestyleEmailEditorBCVisible = {0x00000081}; +const TUint32 KFreestyleEmailEditorBCVisible = {0x00000081}; const TInt KFreestyleEmailEditorBCVisibleDefault = 0; // Used by Integration MTM @@ -73,25 +73,40 @@ const TUint32 KNumberOfMailboxesWithNewEmails = {0x00001000}; +// These keys define limits on how much data is allowed to load by plugins +/* The setting allows to limit max body size in MfE protocol plugin, KB */ +const TUint32 KFreestyleMfeMaxBodySize = 0x00002000; +/* The setting allows to limit max body size for Ozone protocol plugin, KB */ +const TUint32 KFreestyleOzoneMaxBodySize = 0x00002001; +/* The setting allows to limit max body size in POP/IMAP protocol plugin, KB */ +const TUint32 KFreestyleIPSMaxBodySize = 0x00002002; +/* The setting allows to limit max body size in e-mail viewer, KB */ +const TUint32 KFreestyleViewerMaxBodySize = 0x00002003; +/* The setting allows to limit max body size in editor for reply/forward, KB. */ +const TUint32 KFreestyleEditorMaxBodySize = 0x00002004; +/* The setting allows to limit max size of mail attachments shown in mail viewer, KB */ +const TUint32 KFreestyleViewerMaxAttachmentSize = 0x00002005; + + // // Email local variation flags. Flags are defined in emailvariant.hrh -const TUint32 KEmailLocalVariationFlags = {0x0000FFFE}; +const TUint32 KEmailLocalVariationFlags = {0x0000FFFE}; // FS 2.05 variation. // Values: 1 = hide, 0 = show. -const TUint32 KEmailHideFS205UIFeature = {0x0000FFFF}; +const TUint32 KEmailHideFS205UIFeature = {0x0000FFFF}; const TUint32 KEmailHideFSHiLightUIFeature = {0x0000FFFF}; // // TP Wizard repository in the central repository // - used for parameter passing (for creating a new mailbox) // -const TUid KSetupWizardCenRep = {0x2000B112}; +const TUid KSetupWizardCenRep = {0x2000B112}; // New mailbox parameter values -const TUint32 KSetupWizardAccountType = {0x00000001}; - -const TUint32 KSetupWizardCentrepStartKey = {0x00000002}; +const TUint32 KSetupWizardAccountType = {0x00000001}; + +const TUint32 KSetupWizardCentrepStartKey = {0x00000002}; #endif diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/inc/FreestyleEmailUiAppui.h --- a/emailuis/emailui/inc/FreestyleEmailUiAppui.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiAppui.h Wed Jun 09 09:22:57 2010 +0300 @@ -45,17 +45,10 @@ #include "cmailcustomstatuspaneindicators.h" // INTERNAL INCLUDES +#include "cconnectionstatusqueryext.h" #include "FreestyleEmailUiPropertySubscriber.h" #include "FreestyleEmailUiConstants.h" -enum TForcedStatus - { - ENoForce = 0, - EForceToSync, - EForceToConnected, - EForceToDisconnected - }; - // FORWARD DECLARATIONS class CFreestyleEmailUiView; class CFSEmailUiViewerControl; @@ -120,17 +113,17 @@ /** * 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 + * 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 */ @@ -140,29 +133,29 @@ * 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; - + 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. */ @@ -171,37 +164,37 @@ /** * Check if the message is in cache. Returns ETrue if the message is found. */ - TBool Contains( const TFSMailMsgId& aBoxId, const TFSMailMsgId& aMsgId ) const; + 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: - +private: + /** * Cache item. */ - class TItem + class TItem { public: /** * Constructor - */ + */ TItem( const TFSMailMsgId& aBoxId ); - + /** * Destructor */ ~TItem(); - + /** * Returns ETrue if given message Id is found in this box. */ @@ -216,35 +209,35 @@ * 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: + + 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 + + // Mailbox Id TFSMailMsgId iMailBoxId; - + // Message Ids - RArray iMessageIds; + RArray iMessageIds; }; - + // Cache - RArray iCache; + RArray iCache; }; @@ -416,6 +409,7 @@ void ShowTitlePaneConnectionStatus(); // Set connection status icon of title pane to hided void HideTitlePaneConnectionStatus(); + void GetConnectionStatusL( CConnectionStatusQueryExtension::TConnectionStatus& aConnStatus ); // Draw connection status icon into title pane if set as visible. // It is also possible to force connection indicator to wanted value // to achieve better user experience. @@ -468,9 +462,9 @@ TDisplayMode DisplayMode() const; // - - - + + + /** * Returns the current flip status. * @return True if the flip is open, false otherwise. @@ -481,30 +475,30 @@ // 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; // returns last seen pointer position const TPoint& LastSeenPointerPosition() const; - + // Runs fake sync animation (needed for better user experience as // otherwise in some connection/sync states pressing "send & receive" // wouldn't have any visible effect. void RunFakeSyncAnimL(); - + public: //from MFSMailEventObserver /** * Framework event message. @@ -820,7 +814,7 @@ // Set true, when application is going to be switched to backgound // after the view deactivation. TBool iSwitchingToBackground; - + TDisplayImagesCache iDisplayImagesCache; // For handling the flip state. @@ -833,13 +827,13 @@ // 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; - + TPoint iLastPointerPosition; }; diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/inc/FreestyleEmailUiConstants.h --- a/emailuis/emailui/inc/FreestyleEmailUiConstants.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiConstants.h Wed Jun 09 09:22:57 2010 +0300 @@ -84,6 +84,14 @@ const TInt KTlsHandleDownloadInfo = 0xCECECE; const TInt KTlsHandleMailListModel = 0xCECEDE; +enum TForcedStatus + { + ENoForce = 0, + EForceToSync, + EForceToConnected, + EForceToDisconnected + }; + /** * Action menu custom item ids */ diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/inc/FreestyleEmailUiFolderListVisualiser.h --- a/emailuis/emailui/inc/FreestyleEmailUiFolderListVisualiser.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiFolderListVisualiser.h Wed Jun 09 09:22:57 2010 +0300 @@ -105,6 +105,7 @@ void ChildDoDeactivate(); void DoTransitionEffect( TBool aDirectionOut ); void GetParentLayoutsL( RPointerArray& aLayoutArray ) const; + void FadeOut( TBool aDirectionOut ); public: // Own public functions diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/inc/FreestyleEmailUiLayoutHandler.h --- a/emailuis/emailui/inc/FreestyleEmailUiLayoutHandler.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiLayoutHandler.h Wed Jun 09 09:22:57 2010 +0300 @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include // INTERNAL INCLUDES #include "FreestyleEmailUiLayoutData.h" diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/inc/FreestyleEmailUiUtilities.h --- a/emailuis/emailui/inc/FreestyleEmailUiUtilities.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/inc/FreestyleEmailUiUtilities.h Wed Jun 09 09:22:57 2010 +0300 @@ -282,6 +282,11 @@ // Creates a displayname of firstname, lastname, emailfield components static HBufC* CreateDisplayNameLC( const TDesC& aFirstname, const TDesC& aLastname, const TDesC& aEmailField ); + /** + * Determines if the descriptor is a Chinese word + */ + static TBool IsChineseWord( const TDesC& aWord ); + // Get the icon file name including the drive letter and full path static void GetFullIconFileNameL( TDes& aFileName ); diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/FSAsyncTextFormatter.cpp --- a/emailuis/emailui/src/FSAsyncTextFormatter.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/FSAsyncTextFormatter.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -2,9 +2,9 @@ * Copyright (c) 2008 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 "Symbian Foundation License v1.0" +* under the terms of "Eclipse Public License v1.0" * which accompanies this distribution, and is available -* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * * Initial Contributors: * Nokia Corporation - initial contribution. @@ -17,7 +17,7 @@ #include "emailtrace.h" #include "FSAsyncTextFormatter.h" -#include +#include #include const TUint KCharsFormattedPerRun = 2000; diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp --- a/emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -99,12 +99,28 @@ void CFSEmailDownloadInfoMediator::AddObserver( MFSEmailDownloadInformationObserver* aObserver, TFSMailMsgId aMessageId ) { FUNC_LOG; - TRequestObserver newObserver = {aObserver, aMessageId }; + TRequestObserver newObserver = { aObserver, aMessageId }; + //To avoid adding duplicate observers + for ( TInt i=0; iId() != aViewId ) { @@ -1327,6 +1333,14 @@ { return; //"consume" event } + + // to disable deleting message shortcut (bakspace) when fowarding/replying + if ( EStdKeyBackspace == key && aEvent.Type() == EEventKeyDown + && iCurrentActiveView == iComposeView ) + { + return; // consume event + } + // if ( EStdKeyNo == key && aEvent.Type() == EEventKeyDown ) { @@ -1412,7 +1426,16 @@ } } - CAknAppUi::HandleWsEventL(aEvent, aDestination); + if ( aEvent.Key()->iCode == EKeyEscape && + iCurrentActiveView == iComposeView && + iComposeView->IsOpeningWaitNoteVisible() ) + { + return; + } + else + { + CAknAppUi::HandleWsEventL(aEvent, aDestination); + } } CAlfDisplay& CFreestyleEmailUiAppUi::Display() @@ -2520,7 +2543,59 @@ titlePane->SetSmallPicture( iConnectionIconBitmap, iConnectionIconMask, iConnectionIconBitmap && iConnectionIconMask); } iConnectionStatusIconAnimTimer->Stop(); - iFakeSyncAnimStopTimer->Stop(); + } + +void CFreestyleEmailUiAppUi::GetConnectionStatusL( + CConnectionStatusQueryExtension::TConnectionStatus& aConnStatus ) + { + aConnStatus = CConnectionStatusQueryExtension::EDisconnected; + CFSMailBox* mailbox = GetActiveMailbox(); + if ( mailbox ) + { + CConnectionStatusQueryExtension* extension( NULL ); + TRAPD( error, extension = static_cast( + mailbox->ExtensionL( KEmailConnectionStatusQueryExtensionUid ) ) ); + + if ( error && error != KErrNotSupported ) + { + User::Leave( error ); + } + + if ( extension ) + { + // Query from extension - the new way + aConnStatus = extension->ConnectionStatus( + mailbox->GetId(), iForcedConnectionStatus); + mailbox->ReleaseExtension( extension ); + } + else + { + // Retain the old way + TFSMailBoxStatus boxStatus( mailbox->GetMailBoxStatus() ); + TSSMailSyncState syncState( mailbox->CurrentSyncState() ); + + if ( ( boxStatus == EFSMailBoxOnline && iForcedConnectionStatus != EForceToDisconnected ) || + (iForcedConnectionStatus == EForceToConnected || iForcedConnectionStatus == EForceToSync) ) + { + if (syncState == EmailSyncing || syncState == InboxSyncing || + syncState == OutboxSyncing || syncState == SentItemsSyncing || + syncState == DraftsSyncing || syncState == CalendarSyncing || + syncState == ContactsSyncing || syncState == TasksSyncing || + syncState == FilesSyncing || iForcedConnectionStatus == EForceToSync ) + { + aConnStatus = CConnectionStatusQueryExtension::ESynchronizing; + } + else + { + aConnStatus = CConnectionStatusQueryExtension::EConnected; + } + } + else // EFSMailBoxOffline + { + aConnStatus = CConnectionStatusQueryExtension::EDisconnected; + } + } + } } void CFreestyleEmailUiAppUi::UpdateTitlePaneConnectionStatus( @@ -2531,20 +2606,9 @@ if ( iConnectionStatusVisible ) { - - // Get connection status of the current mailbox - TFSMailBoxStatus connectionStatus = EFSMailBoxOffline; - TSSMailSyncState syncState = Idle; - CFSMailBox* mb = GetActiveMailbox(); - if ( mb ) - { - connectionStatus = mb->GetMailBoxStatus(); - syncState = mb->CurrentSyncState(); - } - TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); CEikStatusPaneBase::TPaneCapabilities subPaneTitle = - StatusPane()->PaneCapabilities( titlePaneUid ); + StatusPane()->PaneCapabilities( titlePaneUid ); if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() ) { @@ -2554,44 +2618,42 @@ // Set connection icon iConnectionStatusIconAnimTimer->Stop(); - iFakeSyncAnimStopTimer->Stop(); iConnectionIconBitmap = 0; iConnectionIconMask = 0; - TSize iconSize = LayoutHandler()->statusPaneIconSize(); - TBool startTimer = EFalse; - if ( ( connectionStatus == EFSMailBoxOnline && iForcedConnectionStatus != EForceToDisconnected ) || - (iForcedConnectionStatus == EForceToConnected || iForcedConnectionStatus == EForceToSync) ) - { - if (syncState == EmailSyncing || syncState == InboxSyncing || - syncState == OutboxSyncing || syncState == SentItemsSyncing || - syncState == DraftsSyncing || syncState == CalendarSyncing || - syncState == ContactsSyncing || syncState == TasksSyncing || - syncState == FilesSyncing || iForcedConnectionStatus == EForceToSync ) - { - TRAP_IGNORE( FsTextureManager()->ProvideBitmapL( + TBool startTimer = EFalse; + + // Get connection status of the current mailbox + CConnectionStatusQueryExtension::TConnectionStatus connectionStatus; + TRAP_IGNORE( GetConnectionStatusL( connectionStatus ) ); + + switch ( connectionStatus ) + { + case CConnectionStatusQueryExtension::EConnected: + TRAP_IGNORE( FsTextureManager()->ProvideBitmapL( + EStatusTextureConnected, iConnectionIconBitmap, iConnectionIconMask ) ); + break; + case CConnectionStatusQueryExtension::EDisconnected: + TRAP_IGNORE( FsTextureManager()->ProvideBitmapL( + EStatusTextureDisconnectedGeneral, iConnectionIconBitmap, iConnectionIconMask ) ); + break; + case CConnectionStatusQueryExtension::ESynchronizing: + TRAP_IGNORE( FsTextureManager()->ProvideBitmapL( EStatusTextureSynchronising, iConnectionIconBitmap, iConnectionIconMask ) ); - startTimer = ETrue; - } - else - { - TRAP_IGNORE( FsTextureManager()->ProvideBitmapL( - EStatusTextureConnected, iConnectionIconBitmap, iConnectionIconMask ) ); - } - } - else // EFSMailBoxOffline - { - TRAP_IGNORE( FsTextureManager()->ProvideBitmapL( - EStatusTextureDisconnectedGeneral, iConnectionIconBitmap, iConnectionIconMask ) ); - } + startTimer = ETrue; + break; + default: + break; + } if ( iConnectionIconBitmap ) { + TSize iconSize( LayoutHandler()->statusPaneIconSize() ); AknIconUtils::SetSize( iConnectionIconBitmap, iconSize, EAspectRatioNotPreserved ); } titlePane->SetSmallPicture( iConnectionIconBitmap, iConnectionIconMask, iConnectionIconMask && iConnectionIconBitmap ); if (startTimer) { - iConnectionStatusIconAnimTimer->Start(KConnectionStatusIconRotationInterval); + iConnectionStatusIconAnimTimer->Start( KConnectionStatusIconRotationInterval ); } titlePane->DrawNow(); } diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/FreestyleEmailUiCLSListsHandler.cpp --- a/emailuis/emailui/src/FreestyleEmailUiCLSListsHandler.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiCLSListsHandler.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -32,7 +32,6 @@ #include "FreestyleEmailUiUtilities.h" #include "FreestyleEmailUiCLSItem.h" - // ================= MEMBER FUNCTIONS ========================================== // ----------------------------------------------------------------------------- // CFSEmailUiClsListsHandler::NewL @@ -335,13 +334,23 @@ searchSettings->SetDisplayFieldsL(displayFields); CleanupStack::Pop(&displayFields); displayFields.Close(); - // Set the new sort order of data fields RArray sortOrder; CleanupClosePushL(sortOrder); - sortOrder.AppendL(R_VPBK_FIELD_TYPE_FIRSTNAME); - sortOrder.AppendL(R_VPBK_FIELD_TYPE_LASTNAME); + + // change sorting order for Chinese to LNFN + if ( User::Language() == ELangPrcChinese ) + { + sortOrder.AppendL( R_VPBK_FIELD_TYPE_LASTNAME ); + sortOrder.AppendL( R_VPBK_FIELD_TYPE_FIRSTNAME ); + } + else // default sorting order FN LN + { + sortOrder.AppendL( R_VPBK_FIELD_TYPE_FIRSTNAME ); + sortOrder.AppendL( R_VPBK_FIELD_TYPE_LASTNAME ); + } + sortOrder.AppendL(R_VPBK_FIELD_TYPE_EMAILGEN); sortOrder.AppendL(R_VPBK_FIELD_TYPE_EMAILHOME); sortOrder.AppendL(R_VPBK_FIELD_TYPE_EMAILWORK); diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp --- a/emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -294,7 +294,7 @@ iListLayout = CAlfDeckLayout::AddNewL( *iControl, iParentLayout ); iListLayout->SetFlags(EAlfVisualFlagLayoutUpdateNotification|EAlfVisualFlagAutomaticLocaleMirroringEnabled); - iTreeVisualizer = CFsTreeVisualizerBase::NewL(iControl, *iListLayout, !iFullScreen); + iTreeVisualizer = CFsTreeVisualizerBase::NewL( iControl, *iListLayout ); iTreeVisualizer->SetItemExpansionDelay( iAppUi.LayoutHandler()->ListItemExpansionDelay() ); iTreeVisualizer->SetScrollTime( iAppUi.LayoutHandler()->ListScrollingTime() ); iTreeVisualizer->SetFadeInEffectTime( iAppUi.LayoutHandler()->CtrlBarListFadeEffectTime() ); @@ -421,6 +421,10 @@ iTreeVisualizer->RefreshListViewL(); } + + ResizeListIcons(); + ResizeListItemsL(); + } // --------------------------------------------------------------------------- @@ -677,6 +681,10 @@ iCustomMessageId = KFolderListSelectFolder; iCurrentFolderId = aFolderId; DoShowInPopupL( aButton, aCallback, NULL ); + + ResizeListIcons(); + ResizeListItemsL(); + } // --------------------------------------------------------------------------- @@ -1155,7 +1163,7 @@ } else { - eventHandled = iTreeList->TreeControl()->OfferEventL(aEvent); + eventHandled = ETrue; } } return eventHandled; @@ -1316,6 +1324,19 @@ } // --------------------------------------------------------------------------- +// Hide or show CAlfVisuals ( used for activation or deactivation ) +// --------------------------------------------------------------------------- +// +void CFSEmailUiFolderListVisualiser::FadeOut( TBool aDirectionOut ) + { + FUNC_LOG; + if ( aDirectionOut && iTreeVisualizer != NULL ) + { + iTreeVisualizer->HideList(); + } + } + +// --------------------------------------------------------------------------- // Handle commands // --------------------------------------------------------------------------- // @@ -2463,6 +2484,8 @@ aItemVisualizer->SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips( !iFullScreen ) ); // Set node bolded aItemVisualizer->SetTextBold( EFalse ); + aItemVisualizer->MarqueeL( EFsTextMarqueeForth, 30, 1000, 500, 1 ); // same values as in CFsTreeVisualizerBase constructor + aItemVisualizer->OffWrapping(); } // --------------------------------------------------------------------------- diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp --- a/emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -5616,16 +5616,18 @@ iControlBarControl->SetRectL( iAppUi.LayoutHandler()->GetControlBarRect() ); const TRect newEmailButtonRect( iAppUi.LayoutHandler()->GetControlBarNewEmailButtonRect() ); + //Add comments by luo gen(e0645320) + //The position of button should be set according to the size of button, so set size first + iNewEmailButton->SetSize( newEmailButtonRect.Size() ); iNewEmailButton->SetPos( newEmailButtonRect.iTl ); - iNewEmailButton->SetSize( newEmailButtonRect.Size() ); const TRect folderButtonRect( iAppUi.LayoutHandler()->GetControlBarFolderListButtonRect() ); + iFolderListButton->SetSize( folderButtonRect.Size() ); iFolderListButton->SetPos( folderButtonRect.iTl ); - iFolderListButton->SetSize( folderButtonRect.Size() ); const TRect sortButtonRect( iAppUi.LayoutHandler()->GetControlBarSortButtonRect() ); + iSortButton->SetSize( sortButtonRect.Size() ); iSortButton->SetPos( sortButtonRect.iTl ); - iSortButton->SetSize( sortButtonRect.Size() ); TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; TAknLayoutText textLayout; diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/FreestyleEmailUiUtilities.cpp --- a/emailuis/emailui/src/FreestyleEmailUiUtilities.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiUtilities.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -3058,18 +3058,55 @@ else { - //Displayname = "firstname lastname" - displayname = HBufC::NewLC( aFirstname.Length() + - KSpace().Length() + - aLastname.Length() ); - displayname->Des().Copy( aFirstname ); - displayname->Des().Append( KSpace ); - displayname->Des().Append( aLastname ); - } + //Displayname="firstname lastname" or "LastnameFirstname" for Chinese + + if( TFsEmailUiUtility::IsChineseWord( aFirstname ) + || TFsEmailUiUtility::IsChineseWord( aLastname ) ) + { + TInt length = aFirstname.Length() + aLastname.Length(); + displayname = HBufC::NewLC( length ); + displayname->Des().Copy( aLastname ); + displayname->Des().Append( aFirstname ); + } + else + { + TInt length = aFirstname.Length() + KSpace().Length() + + aLastname.Length(); + displayname = HBufC::NewLC( length ); + displayname->Des().Copy( aFirstname ); + displayname->Des().Append( KSpace ); + displayname->Des().Append( aLastname ); + } + } return displayname; } + +// --------------------------------------------------------- +// Find if text is including Chinese word +// --------------------------------------------------------- +// +TBool TFsEmailUiUtility::IsChineseWord( const TDesC& aWord ) + { + TBool isChineseSearchStr = EFalse; + const TUint KChineseUnicodeSpanBegin = 0x3400; + const TUint KChineseUnicodeSpanEnd = 0x9fff; + const TInt len = aWord.Length(); + + for ( TInt ii = 0; ii < len; ii++ ) + { + if ( (TInt) aWord[ii] >= KChineseUnicodeSpanBegin + && (TInt) aWord[ii] <= KChineseUnicodeSpanEnd ) + { + isChineseSearchStr = ETrue; + break; + } + } + return isChineseSearchStr; + } + + // ----------------------------------------------------------------------------- // TFsEmailUiUtility::GetFullIconFileNameL // ----------------------------------------------------------------------------- diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/FreestyleEmailUiViewBase.cpp --- a/emailuis/emailui/src/FreestyleEmailUiViewBase.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/FreestyleEmailUiViewBase.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -202,9 +202,7 @@ CAknToolbar* toolbar(Toolbar()); if (toolbar) { - //toolbar->SetToolbarVisibility(EFalse); - // Call MakeVisible directly because SetToolbarVisibility never - // actually hides fixed toolbar. + // toolbar->SetToolbarVisibility(EFalse); toolbar->MakeVisible(EFalse); } } @@ -220,7 +218,8 @@ CAknToolbar* toolbar(Toolbar()); if (toolbar) { - toolbar->SetToolbarVisibility(ETrue); + // toolbar->SetToolbarVisibility(ETrue); + toolbar->MakeVisible(ETrue); } } } diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/ncsaddressinputfield.cpp --- a/emailuis/emailui/src/ncsaddressinputfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/ncsaddressinputfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include "FreestyleEmailUiAppui.h" #include "FreestyleEmailUiLayoutData.h" diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/ncsaifeditor.cpp --- a/emailuis/emailui/src/ncsaifeditor.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/ncsaifeditor.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -39,6 +39,7 @@ const TChar KCharAddressDelimeterSemiColon = ';'; const TChar KCharAddressDelimeterComma = ','; const TChar KCharSpace = ' '; +const TChar KCharAt = '@'; // --------------------------------------------------------------------------- // CNcsAifEntry::NewL @@ -349,6 +350,11 @@ iTextSelection = Selection(); ret = CNcsEditor::OfferKeyEventL( aKeyEvent, aType ); } + + if( ret == EKeyWasNotConsumed && aType == EEventKeyDown ) + { + HandleTextUpdateDeferred(); // update for lang that don't support CPS + } return ret; } @@ -1362,21 +1368,40 @@ // start looking for entries separated with semicolon TInt start( 0 ); TInt end( ptr.Length() ); + TInt lastSentinel = KErrNotFound; for ( TInt ii = 0; ii < end; ++ii ) { TChar character = ptr[ii]; + TBool addAddress = EFalse; if ( IsSentinel( character ) ) { - if ( character == KCharAddressDelimeterComma ) + if ( character == KCharSpace ) + { + if ( ptr.Mid( start, ii-start ).Locate( KCharAt ) + != KErrNotFound ) + { + ptr[ii] = KCharAddressDelimeterSemiColon; + lastSentinel = ii; + addAddress = ETrue; + } + } + else if ( character == KCharAddressDelimeterComma ) { // Replace comma with semicolon ptr[ii] = KCharAddressDelimeterSemiColon; + lastSentinel = ii; + addAddress = ETrue; + } + else if ( character == KCharAddressDelimeterSemiColon ) + { + lastSentinel = ii; + addAddress = ETrue; } // Create new entry. - if ( start < end ) + if ( addAddress && start < end ) { // only if longer than 0, if not we'll get // "empty" email address @@ -1386,10 +1411,20 @@ start = Min( ii + 1, end ); entriesFound = ETrue; } + addAddress = EFalse; } } } + // add email that wasn't ended with semicolon + if ( lastSentinel != KErrNotFound ) + { + if ( lastSentinel < end && start < end ) + { + AddAddressL( KNullDesC(), ptr.Mid(start, end-start) ); + } + } + CleanupStack::PopAndDestroy( text ); return entriesFound; @@ -1505,7 +1540,7 @@ { FUNC_LOG; return ( aCharacter == KCharAddressDelimeterSemiColon || - aCharacter == KCharAddressDelimeterComma ); + aCharacter == KCharAddressDelimeterComma || aCharacter == KCharSpace ); } // --------------------------------------------------------------------------- diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/ncscomposeview.cpp --- a/emailuis/emailui/src/ncscomposeview.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/ncscomposeview.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -965,6 +965,7 @@ CAknConfirmationNote* note = new (ELeave) CAknConfirmationNote( ETrue ); //waiting note->SetTimeout( CAknNoteDialog::ELongTimeout ); + note->SetTone( CAknNoteDialog::ENoTone ); note->ExecuteLD( *confMessage ); CleanupStack::PopAndDestroy( confMessage ); DoSafeExit(); // Exit after successful sending @@ -2464,17 +2465,13 @@ item = static_cast( attachmentModel->Item( iContainer->FocusedAttachmentLabelIndex() ) ); - if ( !item || item->IsRemote() ) - { - // Only non-remote attachments can be opened - iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdOpenAttachment, ETrue ); - } - } - - if ( !item || item->IsReadOnly() ) - { - // Only non-readonly attachments can be removed - iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdRemoveAttachment, ETrue ); + // Only non-remote attachments can be opened + TBool dimOpenMenuItem = !item || item->IsRemote(); + iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdOpenAttachment, dimOpenMenuItem ); + + // Read-only attachments cannot be removed + TBool dimRemoveMenuItem = !item || item->IsReadOnly(); + iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdRemoveAttachment, dimRemoveMenuItem ); } // Set the position for the popup diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/emailui/src/ncspopuplistbox.cpp --- a/emailuis/emailui/src/ncspopuplistbox.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/emailui/src/ncspopuplistbox.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -23,8 +23,8 @@ #include // R_FSE_EDITOR_ADDRESS_LIST_REMOTE_LOOKUP_SEARCH #include // StringLoader #include -#include -#include +#include +#include #include #include diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/inc/fsmultilineitemvisualizer.h --- a/emailuis/uicomponents/inc/fsmultilineitemvisualizer.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/inc/fsmultilineitemvisualizer.h Wed Jun 09 09:22:57 2010 +0300 @@ -57,7 +57,7 @@ */ virtual ~CFsMultiLineItemVisualizer(); -public: +public: //visualizer's interface @@ -173,6 +173,12 @@ CAlfTexture*& aMenuIcon, const TUint aTimeout = 0, TBool aUpdateData = ETrue); + + + /** + * This method sets flag disable wrapping the text item. + */ + virtual void OffWrapping(); /** * From MFsTreeItemVisualizer. diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/inc/fsseparatorvisualizer.h --- a/emailuis/uicomponents/inc/fsseparatorvisualizer.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/inc/fsseparatorvisualizer.h Wed Jun 09 09:22:57 2010 +0300 @@ -224,7 +224,11 @@ const TInt aMarqueeCycleStartDelay, const TInt aMarqueeRepetitions); - + /** + * This method sets flag disable wrapping the text item. + */ + virtual void OffWrapping(); + protected: /** diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/inc/fstreeitemvisualizer.h --- a/emailuis/uicomponents/inc/fstreeitemvisualizer.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/inc/fstreeitemvisualizer.h Wed Jun 09 09:22:57 2010 +0300 @@ -398,6 +398,10 @@ const TUint aTimeout = 0, TBool aUpdateData = ETrue) = 0; + /** + * This method sets flag disable wrapping the text item. + */ + virtual void OffWrapping() = 0; /** * A call to this function means that the item goes out of the visible diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/inc/fstreeplainonelineitemvisualizer.h --- a/emailuis/uicomponents/inc/fstreeplainonelineitemvisualizer.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/inc/fstreeplainonelineitemvisualizer.h Wed Jun 09 09:22:57 2010 +0300 @@ -126,6 +126,11 @@ const TInt aMarqueeRepetitions); /** + * This method sets flag disable wrapping the text item. + */ + virtual void OffWrapping(); + + /** * */ virtual TBool OfferEventL(const TAlfEvent& aEvent); @@ -183,6 +188,8 @@ * Clet for text marquee. */ TFsMarqueeClet* iTextMarquee; + + TBool iManualWrapper; }; diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/inc/fstreeplainonelinenodevisualizer.h --- a/emailuis/uicomponents/inc/fstreeplainonelinenodevisualizer.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/inc/fstreeplainonelinenodevisualizer.h Wed Jun 09 09:22:57 2010 +0300 @@ -195,6 +195,11 @@ const TInt aMarqueeStartDelay, const TInt aMarqueeCycleStartDelay, const TInt aMarqueeRepetitions); + + /** + * This method sets flag disable wrapping the text item. + */ + virtual void OffWrapping(); /** * diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/inc/fstreeplainrootvisualizer.h --- a/emailuis/uicomponents/inc/fstreeplainrootvisualizer.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/inc/fstreeplainrootvisualizer.h Wed Jun 09 09:22:57 2010 +0300 @@ -123,7 +123,10 @@ const TInt aMarqueeCycleStartDelay, const TInt aMarqueeRepetitions); - + /** + * This method sets flag disable wrapping the text item. + */ + virtual void OffWrapping(); protected: /** diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/inc/fstreerichitemvisualizer.h --- a/emailuis/uicomponents/inc/fstreerichitemvisualizer.h Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/inc/fstreerichitemvisualizer.h Wed Jun 09 09:22:57 2010 +0300 @@ -149,7 +149,11 @@ const TInt aMarqueeStartDelay, const TInt aMarqueeCycleStartDelay, const TInt aMarqueeRepetitions); - + + /** + * This method sets flag disable wrapping the text item. + */ + virtual void OffWrapping(); protected: /** diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/src/fsmultilineitemvisualizer.cpp --- a/emailuis/uicomponents/src/fsmultilineitemvisualizer.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/src/fsmultilineitemvisualizer.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -1383,6 +1383,15 @@ return size; } +// --------------------------------------------------------------------------- +// From MFsTreeItemVisualizer. +// This method sets flag disable wrapping the text item. +// --------------------------------------------------------------------------- +// +void CFsMultiLineItemVisualizer::OffWrapping() + { + FUNC_LOG; + } //End of file diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/src/fsseparatorvisualizer.cpp --- a/emailuis/uicomponents/src/fsseparatorvisualizer.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/src/fsseparatorvisualizer.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -403,3 +403,7 @@ CFsTreeItemVisualizerBase::ConstructL(); } +void CFsSeparatorVisualizer::OffWrapping() + { + FUNC_LOG; + } diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp --- a/emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -540,14 +540,19 @@ iTextVisual->SetColor( textColor ); iTextVisual->SetTextStyle( styleId ); -// iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual); + if ( iManualWrapper ) + { + iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapManual ); + } + else + { + iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate ); + } TAlfAlignHorizontal currTextAlign( EAlfAlignHLocale ); currTextAlign = CurrentTextAlignmentL( iTextAlign, &data->Data(), iTextVisual ); iTextVisual->SetAlign( currTextAlign, EAlfAlignVCenter ); - iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapTruncate); - if ( currTextAlign == EAlfAlignHRight ) { iTextMarquee->SetScrollDirection( TFsMarqueeClet::EScrollFromLeft ); @@ -580,13 +585,32 @@ if ( iTextVisual ) { - iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapTruncate); + if ( iManualWrapper ) + { + iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapManual ); + } + else + { + iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate ); + } } + + iManualWrapper = EFalse; } } } // --------------------------------------------------------------------------- +// From MFsTreeItemVisualizer. +// This method sets flag disable wrapping the text item. +// --------------------------------------------------------------------------- +// +void CFsTreePlainOneLineItemVisualizer::OffWrapping() + { + iManualWrapper = ETrue; + } + +// --------------------------------------------------------------------------- // From class MFsTreeItemVisualizer. // A call to this function means that the item goes out of the visible items // scope. @@ -687,6 +711,7 @@ } + // --------------------------------------------------------------------------- // Handles custom Alf event. Used with text marquee. // --------------------------------------------------------------------------- @@ -718,6 +743,8 @@ : CFsTreeItemVisualizerBase( aOwnerControl ) { FUNC_LOG; + + iManualWrapper = EFalse; } diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/src/fstreeplainonelinenodevisualizer.cpp --- a/emailuis/uicomponents/src/fstreeplainonelinenodevisualizer.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/src/fstreeplainonelinenodevisualizer.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -783,7 +783,7 @@ FUNC_LOG; TInt marqueeSize(0), textWidth(0); - if ( aMarqueeType == EFsTextMarqueeNone ) + if ( aMarqueeType == EFsTextMarqueeNone || !iTextVisual ) { return; } @@ -888,3 +888,7 @@ CFsTreeNodeVisualizerBase::ConstructL(); } +void CFsTreePlainOneLineNodeVisualizer::OffWrapping( ) + { + FUNC_LOG; + } diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/src/fstreeplainrootvisualizer.cpp --- a/emailuis/uicomponents/src/fstreeplainrootvisualizer.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/src/fstreeplainrootvisualizer.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -210,3 +210,12 @@ CFsTreeNodeVisualizerBase::ConstructL(); } +// --------------------------------------------------------------------------- +// From MFsTreeItemVisualizer. +// This method sets flag disable wrapping the text item. +// --------------------------------------------------------------------------- +// +void CFsTreePlainRootVisualizer::OffWrapping() + { + FUNC_LOG; + } diff -r 67369d1b217f -r 6b8f3b30d0ec emailuis/uicomponents/src/fstreerichitemvisualizer.cpp --- a/emailuis/uicomponents/src/fstreerichitemvisualizer.cpp Tue May 25 12:23:16 2010 +0300 +++ b/emailuis/uicomponents/src/fstreerichitemvisualizer.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -605,3 +605,12 @@ FUNC_LOG; } +// --------------------------------------------------------------------------- +// From MFsTreeItemVisualizer. +// This method sets flag disable wrapping the text item. +// --------------------------------------------------------------------------- +// +void CFsTreeRichItemVisualizer::OffWrapping() + { + FUNC_LOG; + } diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssosaoplugin/inc/IpsSosAOMboxLogic.h --- a/ipsservices/ipssosaoplugin/inc/IpsSosAOMboxLogic.h Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssosaoplugin/inc/IpsSosAOMboxLogic.h Wed Jun 09 09:22:57 2010 +0300 @@ -29,7 +29,7 @@ // #include "IpsSosAOBaseAgent.h" -#include "IpsSetDataExtension.h" +#include "ipssetdataextension.h" #include "IpsSosAOPluginTimer.h" // // diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssosaoplugin/src/IpsSosAOSchedulerUtils.cpp --- a/ipsservices/ipssosaoplugin/src/IpsSosAOSchedulerUtils.cpp Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssosaoplugin/src/IpsSosAOSchedulerUtils.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -19,7 +19,7 @@ #include "emailtrace.h" #include "IpsSosAOSchedulerUtils.h" -#include "IpsSetDataExtension.h" +#include "ipssetdataextension.h" diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssosplugin/inc/ipsplgheaders.h --- a/ipsservices/ipssosplugin/inc/ipsplgheaders.h Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssosplugin/inc/ipsplgheaders.h Wed Jun 09 09:22:57 2010 +0300 @@ -148,7 +148,7 @@ #include "ipssetdataapi.h" #include "ipssetdatastorer.h" #include "ipssetdata.h" -#include "IpsSetDataExtension.h" +#include "ipssetdataextension.h" #include "ipssetutils.h" #include "ipssetutilsconsts.hrh" diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssosplugin/inc/ipsplgmsgiterator.h --- a/ipsservices/ipssosplugin/inc/ipsplgmsgiterator.h Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssosplugin/inc/ipsplgmsgiterator.h Wed Jun 09 09:22:57 2010 +0300 @@ -210,8 +210,7 @@ CIpsPlgMsgIterator( CIpsPlgSosBasePlugin& aPlugin, const TFSMailMsgId& aMailBoxId, - const TFSMailDetails aDetails, - const RArray& aSorting ); + const TFSMailDetails aDetails ); void ConstructL( CMsvSession& aMsvSession, @@ -221,7 +220,10 @@ void ConstructL( CMsvEntry* aFolderEntry, const RArray& aSorting); - + + void StoreSortCriteriaL( + const RArray& aSorting ); + private: // data @@ -249,10 +251,10 @@ /** * Sorting objects */ - TIpsPlgMsgKey* iMsgSortKey; - TIpsPlgMsgSwap* iMsgSwapper; - TBool iSortingOn; - const RArray& iSortingCriteria; + TIpsPlgMsgKey* iMsgSortKey; + TIpsPlgMsgSwap* iMsgSwapper; + TBool iSortingOn; + RArray iSortingCriteria; /** * Mailbox identifier diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssosplugin/src/ipsplgmsgiterator.cpp --- a/ipsservices/ipssosplugin/src/ipsplgmsgiterator.cpp Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssosplugin/src/ipsplgmsgiterator.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -33,8 +33,7 @@ { FUNC_LOG; CIpsPlgMsgIterator* self = - new( ELeave ) CIpsPlgMsgIterator( aPlugin, aMailboxId, aDetails, - aSorting ); + new( ELeave ) CIpsPlgMsgIterator( aPlugin, aMailboxId, aDetails ); CleanupStack::PushL( self ); self->ConstructL( aMsvSession, aFolderId, aSorting ); CleanupStack::Pop( self ); @@ -53,8 +52,7 @@ { FUNC_LOG; CIpsPlgMsgIterator* self = - new( ELeave ) CIpsPlgMsgIterator( aPlugin, aMailboxId, aDetails, - aSorting ); + new( ELeave ) CIpsPlgMsgIterator( aPlugin, aMailboxId, aDetails ); CleanupStack::PushL( self ); self->ConstructL( aFolderEntry, aSorting ); CleanupStack::Pop( self ); @@ -73,6 +71,8 @@ delete iMsgMapper; delete iMsgSortKey; delete iMsgSwapper; + + iSortingCriteria.Reset(); } // --------------------------------------------------------------------------- @@ -323,10 +323,9 @@ CIpsPlgMsgIterator::CIpsPlgMsgIterator( CIpsPlgSosBasePlugin& aPlugin, const TFSMailMsgId& aMailboxId, - const TFSMailDetails aDetails, - const RArray& aSorting ) + const TFSMailDetails aDetails ) : iPlugin( aPlugin ), iRequestedDetails( aDetails ), - iSortingCriteria( aSorting ), iMailboxId( aMailboxId ) + iMailboxId( aMailboxId ) { FUNC_LOG; // none @@ -344,7 +343,9 @@ { FUNC_LOG; iFolderEntry = aMsvSession.GetEntryL( aFolderId.Id() ); - iMsgSortKey = new (ELeave) TIpsPlgMsgKey( *iFolderEntry, aSorting ); + + StoreSortCriteriaL(aSorting); + iMsgSortKey = new (ELeave) TIpsPlgMsgKey( *iFolderEntry, iSortingCriteria ); iMsgSwapper = new (ELeave) TIpsPlgMsgSwap( *iFolderEntry ); iSortingOn = ( aSorting.Count() > 0 ) && ( aSorting[0].iField != EFSMailDontCare); @@ -363,7 +364,8 @@ { FUNC_LOG; iFolderEntry = aFolderEntry; - iMsgSortKey = new (ELeave) TIpsPlgMsgKey( *iFolderEntry, aSorting ); + StoreSortCriteriaL(aSorting); + iMsgSortKey = new (ELeave) TIpsPlgMsgKey( *iFolderEntry, iSortingCriteria ); iMsgSwapper = new (ELeave) TIpsPlgMsgSwap( *iFolderEntry ); iSortingOn = ( aSorting.Count() > 0 ) && ( aSorting[0].iField != EFSMailDontCare); @@ -482,3 +484,19 @@ return filteredEntries; } +// ----------------------------------------------------------------------------- +// stores sort criteria given by user +// ----------------------------------------------------------------------------- +void CIpsPlgMsgIterator::StoreSortCriteriaL( + const RArray& aSorting ) + { + for ( TInt i=0; i < aSorting.Count(); i++ ) + { + const TFSMailSortCriteria& criteria = aSorting[i]; + TFSMailSortCriteria fsCriteria; + fsCriteria.iField = criteria.iField; + fsCriteria.iOrder = criteria.iOrder; + iSortingCriteria.AppendL(fsCriteria); + } + } + diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssossettings/group/bld.inf --- a/ipsservices/ipssossettings/group/bld.inf Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssossettings/group/bld.inf Wed Jun 09 09:22:57 2010 +0300 @@ -29,7 +29,7 @@ // ../inc/ipssetdataapi.h |../../inc/ipssetdataapi.h -../inc/ipssetdataextension.h |../../inc/IpsSetDataExtension.h +../inc/ipssetdataextension.h |../../inc/ipssetdataextension.h ../inc/ipssetutilsconsts.h |../../inc/ipssetutilsconsts.h ../inc/ipssetutilsconsts.hrh |../../inc/ipssetutilsconsts.hrh ../inc/ipssetdata.h |../../inc/ipssetdata.h diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssossettings/inc/ipssetutilsconsts.h --- a/ipsservices/ipssossettings/inc/ipssetutilsconsts.h Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssossettings/inc/ipssetutilsconsts.h Wed Jun 09 09:22:57 2010 +0300 @@ -110,8 +110,7 @@ // default values for ipssetdataextension // cmail has different default value -//The default value for sync interval is 1 hour, so ao state should be always on. -const TInt KIpsSetExtDefaultAlwaysOnlineState = EMailAoAlways; +const TInt KIpsSetExtDefaultAlwaysOnlineState = EMailAoOff; // const TInt KIpsSetExtDefaultEmailNotificationState = EMailEmnOff; const TBool KIpsSetExtDefaultHideMsgs = EFalse; diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssossettings/src/ipssetdata.cpp --- a/ipsservices/ipssossettings/src/ipssetdata.cpp Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssossettings/src/ipssetdata.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -891,13 +891,16 @@ if ( iProtocol == KSenduiMtmImap4Uid ) { iImap4Settings->SetServerAddressL( aIncomingServer ); + iImap4Settings->SetBearerMobility(ETrue); } else { iPop3Settings->SetServerAddressL( aIncomingServer ); + iPop3Settings->SetBearerMobility(ETrue); } - iSmtpSettings->SetServerAddressL( aOutgoingServer ); + iSmtpSettings->SetServerAddressL( aOutgoingServer ); + iSmtpSettings->SetBearerMobility(ETrue); } // --------------------------------------------------------------------------- diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp --- a/ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssossettings/src/ipssetgwizardadapter.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -20,10 +20,6 @@ #include "emailtrace.h" #include #include -// -//#include // CApListItemList -//#include // CApListItem -// #include // CRepository #include #include @@ -131,9 +127,7 @@ iOperatorOutSecurityAuth = 0; iOperatorOutSecurityProtocol = 0; iOperatorOutgoingPort = 0; - // iHiddenData = EFalse; - // iRecomendedAP.Zero(); iMailboxName.Zero(); } @@ -145,8 +139,6 @@ FUNC_LOG; ClearFields(); - // - TIpsSetUtilsTextPlain tempText; TInt error = KErrNone; @@ -295,8 +287,6 @@ ChangeUnicodePrintable( tempText, iMailboxName ); EmptyWizardCenRep(); - // - } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- @@ -304,11 +294,11 @@ TInt& aVariable ) { FUNC_LOG; - if ( &iWizardCenRep ) - { - return iWizardCenRep.Get( aSetting, aVariable ); - } - return KErrNone; + if ( &iWizardCenRep ) + { + return iWizardCenRep.Get( aSetting, aVariable ); + } + return KErrNone; } @@ -318,11 +308,11 @@ TIpsSetUtilsTextPlain& aVariable ) { FUNC_LOG; - if ( &iWizardCenRep ) - { - return iWizardCenRep.Get( aSetting, aVariable ); - } - return KErrNone; + if ( &iWizardCenRep ) + { + return iWizardCenRep.Get( aSetting, aVariable ); + } + return KErrNone; } // --------------------------------------------------------------------------- @@ -330,38 +320,35 @@ void CIpsSetWizardAdapter::EmptyWizardCenRep() { FUNC_LOG; - // error is used in debug purposes - // TInt error = KErrNone; Removed since it is not used. - if ( &iWizardCenRep ) - { - iWizardCenRep.Set( ECRKPopImapEmailAddressId, KNullDesC ); - iWizardCenRep.Set( ECRKPopImapUsernameId, KNullDesC ); - iWizardCenRep.Set( ECRKPopImapPasswordId, KNullDesC ); - iWizardCenRep.Set( ECRKPopImapIncomingServerId, KNullDesC ); - iWizardCenRep.Set( - ECRKPopImapProtocolIndicatorId, KErrNotFound ); - iWizardCenRep.Set( - ECRKPopImapIncomingSecurityAuthId, KErrNotFound ); - iWizardCenRep.Set( - ECRKPopImapIncomingSecurityProtocolId, KErrNotFound ); - iWizardCenRep.Set( ECRKPopImapIncomingPortId, KErrNotFound ); - iWizardCenRep.Set( ECRKPopImapOutgoingServerId, KNullDesC ); - iWizardCenRep.Set( - ECRKPopImapOutgoingSecurityAuthId, KErrNotFound ); - iWizardCenRep.Set( - ECRKPopImapOutgoingSecurityProtocolId, KErrNotFound ); - iWizardCenRep.Set( ECRKPopImapOutgoingPortId, KErrNotFound ); - iWizardCenRep.Set( - ECRKPopImapOperatorOutgoingServerId, KNullDesC ); - iWizardCenRep.Set( - ECRKPopImapOperatorSecurityAuthId, KErrNotFound ); - iWizardCenRep.Set( - ECRKPopImapOperatorSecurityProtocolId, KErrNotFound ); - iWizardCenRep.Set( ECRKPopImapOperatorPortId, KErrNotFound ); - iWizardCenRep.Set( ECRKPopImapAccessPointId, KNullDesC ); - iWizardCenRep.Set( ECRKPopImapMailboxName, KNullDesC ); - } - + if ( &iWizardCenRep ) + { + iWizardCenRep.Set( ECRKPopImapEmailAddressId, KNullDesC ); + iWizardCenRep.Set( ECRKPopImapUsernameId, KNullDesC ); + iWizardCenRep.Set( ECRKPopImapPasswordId, KNullDesC ); + iWizardCenRep.Set( ECRKPopImapIncomingServerId, KNullDesC ); + iWizardCenRep.Set( + ECRKPopImapProtocolIndicatorId, KErrNotFound ); + iWizardCenRep.Set( + ECRKPopImapIncomingSecurityAuthId, KErrNotFound ); + iWizardCenRep.Set( + ECRKPopImapIncomingSecurityProtocolId, KErrNotFound ); + iWizardCenRep.Set( ECRKPopImapIncomingPortId, KErrNotFound ); + iWizardCenRep.Set( ECRKPopImapOutgoingServerId, KNullDesC ); + iWizardCenRep.Set( + ECRKPopImapOutgoingSecurityAuthId, KErrNotFound ); + iWizardCenRep.Set( + ECRKPopImapOutgoingSecurityProtocolId, KErrNotFound ); + iWizardCenRep.Set( ECRKPopImapOutgoingPortId, KErrNotFound ); + iWizardCenRep.Set( + ECRKPopImapOperatorOutgoingServerId, KNullDesC ); + iWizardCenRep.Set( + ECRKPopImapOperatorSecurityAuthId, KErrNotFound ); + iWizardCenRep.Set( + ECRKPopImapOperatorSecurityProtocolId, KErrNotFound ); + iWizardCenRep.Set( ECRKPopImapOperatorPortId, KErrNotFound ); + iWizardCenRep.Set( ECRKPopImapAccessPointId, KNullDesC ); + iWizardCenRep.Set( ECRKPopImapMailboxName, KNullDesC ); + } } // --------------------------------------------------------------------------- @@ -376,24 +363,22 @@ aSetData.SetProtocol( (iProtocol == 0) ? KSenduiMtmPop3Uid : KSenduiMtmImap4Uid ); - // if(iProtocol == 0)// KSenduiMtmPop3Uid - for Pop account- default is Headers Only - { + { aSetData.SetDownloadSizeL( CIpsSetData::EHeaders,KIpsSetDataHeadersOnly); } else - { - aSetData.SetDownloadSizeL( CIpsSetData::EHeadersPlus, KIpsSetDataDefaultDownloadSizeKb ); + { + aSetData.SetDownloadSizeL( CIpsSetData::EHeadersPlus, KIpsSetDataDefaultDownloadSizeKb ); - TInt retImFolders = aSetData.RetrieveLimit(CIpsSetData::EImap4Folders); //TRetrieveLimit + TInt retImFolders = aSetData.RetrieveLimit(CIpsSetData::EImap4Folders); //TRetrieveLimit if(retImFolders==-1) - { + { TInt retPopInbox = aSetData.RetrieveLimit(CIpsSetData::EPop3Limit); - TInt retImInbox = aSetData.RetrieveLimit(CIpsSetData::EImap4Inbox); + TInt retImInbox = aSetData.RetrieveLimit(CIpsSetData::EImap4Inbox); aSetData.SetRetrieveLimit(retPopInbox,retImInbox,KImapDefFoldersRetrieve); - } + } } - // aSetData.SetEmailAddressL( iEmailAddress ); aSetData.SetUserNameL( iUsername, iUsername ); aSetData.SetUserPwdL( iPassword, iPassword ); @@ -408,38 +393,38 @@ security ); aSetData.SetPort( port.inport, port.outport ); - // aSetData.SetDataHide( iHiddenData ); - // aSetData.SetMailboxName( CheckMailboxNamesL( iMailboxName ) ); aSetData.SetUserAuthentication( CIpsSetData::EUseIncoming ); iap = SetIAPByNameL( iRecomendedAP ); TBool setIAP = ETrue; - //if IAP isn't set by SettingWizard, we try to get the SNAP. + + RCmManager cmmgr; + cmmgr.OpenLC(); + TCmDefConnValue defConnValue; + cmmgr.ReadDefConnL( defConnValue ); + + //if IAP isn't set by SettingWizard, we try to get the SNAP. if ( iap.iIAP <= 0 ) { //Use SNAP when we got it and it does contain access point. //For other situations as below, we set 'ask when need' or default IAP //1. defConnValue.iType == ECmDefConnAskOnce - //2. Got SNAP, but it does not contain any acess point + //2. Got SNAP, but it does not contain any access point //3. Got default IAP when defConnValue.iType == ECmDefConnConnectionMethod iap.iDialogPref = ECommDbDialogPrefPrompt; - iap.iIAP = 0; + iap.iIAP = 0; - RCmManager cmmgr; - cmmgr.OpenLC(); - TCmDefConnValue defConnValue; - cmmgr.ReadDefConnL( defConnValue ); - //Check default connection is destination or connection method + //Check default connection is destination or connection method if ( defConnValue.iType == ECmDefConnDestination ) { //Get SNAP from cmmgr RCmDestination destination; CleanupClosePushL( destination ); destination = cmmgr.DestinationL( defConnValue.iId ); - //check if SNAP has IAPs + //check if SNAP has IAPs if ( destination.ConnectionMethodCount() > 0 ) { //if SNAP contain access point, we use SNAP @@ -448,25 +433,82 @@ aSetData.SetIapL( *iapPref, *iapPref ); CleanupStack::PopAndDestroy( iapPref ); - + setIAP = EFalse; } - CleanupStack::PopAndDestroy( &destination ); + CleanupStack::PopAndDestroy( &destination ); } else if( defConnValue.iType == ECmDefConnConnectionMethod ) { iap.iDialogPref = ECommDbDialogPrefDoNotPrompt; iap.iIAP = defConnValue.iId; } - CleanupStack::PopAndDestroy( &cmmgr ); } - //If no valid IAP or destination, set zero. + else + { + // recommended IAP is defined + // try setting SNAP that contains the IAP + TBool found( EFalse ); + RArray< TUint32 > destArray; + CleanupClosePushL( destArray ); + + //Get list of all destinations + cmmgr.AllDestinationsL( destArray ); + + TInt arrayCount( destArray.Count() ); + + CMManager::TSnapMetadataField metaFieldPurpose( CMManager::ESnapMetadataPurpose ); + CMManager::TSnapMetadataField metaFieldLocalized( CMManager::ESnapMetadataDestinationIsLocalised ); + + //Traverse list of destinations + for ( TInt i = 0; i < arrayCount && !found; ++i ) + { + RCmDestination destination = cmmgr.DestinationL( destArray[ i ] ); + CleanupClosePushL( destination ); + + TUint32 destinationPurpose = destination.MetadataL ( metaFieldPurpose ); + TUint32 destinationLocalized = destination.MetadataL ( metaFieldLocalized ); + + TInt iapCount ( destination.ConnectionMethodCount() ); + if ( destinationPurpose == CMManager::ESnapPurposeInternet && + destinationLocalized == CMManager::ELocalisedDestInternet && + iapCount ) + { + // found the Internet destination and it has at least one access point + for ( TInt c=0;c < iapCount && !found; c++ ) + { + RCmConnectionMethod connMethod = destination.ConnectionMethodL( c ); + CleanupClosePushL( connMethod ); + + TUint32 iapId = connMethod.GetIntAttributeL( CMManager::ECmIapId ); + HBufC* connName = connMethod.GetStringAttributeL( CMManager::ECmName ); + CleanupStack::PushL( connName ); + CleanupStack::PopAndDestroy( connName ); + if ( iapId == iap.iIAP ) + { + CImIAPPreferences* iapPref = CImIAPPreferences::NewLC(); + INFO_1( "Setting SNAP %d by IAP", destination.Id() ) + iapPref->SetSNAPL( destination.Id()); + aSetData.SetIapL( *iapPref, *iapPref ); + found = ETrue; + setIAP = EFalse; + CleanupStack::PopAndDestroy( iapPref ); + } + CleanupStack::PopAndDestroy( &connMethod ); + } + } + CleanupStack::PopAndDestroy( &destination ); + } + CleanupStack::PopAndDestroy( &destArray ); + } + + //If no valid IAP or destination, set zero. if ( setIAP ) { - aSetData.SetIapL( iap, iap ); + INFO_1( "IAP is uncategorized, using IAP: %d", iap.iIAP ) + aSetData.SetIapL( iap, iap ); } - // EIpsSetDataOutSecurityAuth - // EIpsSetDataOutSecurityAuth + CleanupStack::PopAndDestroy( &cmmgr ); } // --------------------------------------------------------------------------- @@ -570,16 +612,13 @@ //Initial IAP list ipsSetAP->InitializeSelectionL(); - // iapcount = ipsSetAP->iIapList.Count(); - // //Set default AP to always ask iap.iDialogPref = ECommDbDialogPrefPrompt; iap.iIAP = 0; //run through all found access points - // TBool found( EFalse ); for( TInt i = 0;!found && i < iapcount; i++ ) { @@ -598,7 +637,6 @@ } CleanupStack::PopAndDestroy( name ); } - // CleanupStack::PopAndDestroy( ipsSetAP ); return iap; } @@ -621,10 +659,10 @@ accountcount = RIpsSmtpArray.Count(); //increase mailbox count - if ( &iWizardCenRep ) - { - iWizardCenRep.Set( ECRKAccountsConfigured, accountcount ); - } + if ( &iWizardCenRep ) + { + iWizardCenRep.Set( ECRKAccountsConfigured, accountcount ); + } if( accountcount >= KMaxMailboxes && &iWizardCenRep ) { @@ -636,7 +674,6 @@ CleanupStack::PopAndDestroy( setManager ); // notify ao about new mailbox -// RD_IPS_AO_PLUGIN flag removed TInt mailboxId = KErrNotFound; if ( aSetData.ExtendedSettings() ) { @@ -645,6 +682,7 @@ RAlwaysOnlineClientSession aosession; TInt err = aosession.Connect(); + CleanupClosePushL( aosession ); if ( mailboxId != KErrNotFound && err == KErrNone ) { TPckgBuf mboxBuf( mailboxId ); @@ -652,8 +690,7 @@ EServerAPIEmailTurnOn, mboxBuf ) ); } - aosession.Close(); -//#endif + CleanupStack::PopAndDestroy( &aosession ); } // --------------------------------------------------------------------------- @@ -677,7 +714,7 @@ if( !tempName.Compare( mailbox ) ) { - //if mailboxname already exists increase value after name + //if mailbox name already exists increase value after name tempName = aName; endNumber++; tempName.AppendNum( endNumber ); diff -r 67369d1b217f -r 6b8f3b30d0ec ipsservices/ipssossettings/src/ipssetuidialog.cpp --- a/ipsservices/ipssossettings/src/ipssetuidialog.cpp Tue May 25 12:23:16 2010 +0300 +++ b/ipsservices/ipssossettings/src/ipssetuidialog.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -880,6 +880,9 @@ CAknQueryDialog* confDialog = CAknQueryDialog::NewL(); if( confDialog->ExecuteLD( R_IPS_SET_CONNECT_FOR_UPDATE ) ) { + iData->SetImapPathL( + GetItem( TUid::Uid( EIpsSetUiWhatImapPath ) )->Text() ); + iData->SaveL( iSession ); CMsvEntrySelection* mySelection=new (ELeave) CMsvEntrySelection; CleanupStack::PushL(mySelection); diff -r 67369d1b217f -r 6b8f3b30d0ec layers.sysdef.xml --- a/layers.sysdef.xml Tue May 25 12:23:16 2010 +0300 +++ b/layers.sysdef.xml Wed Jun 09 09:22:57 2010 +0300 @@ -10,23 +10,6 @@ - - - - - - - - - - - - - - - - - diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/loc/mrui.loc --- a/meetingrequest/mrgui/loc/mrui.loc Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/loc/mrui.loc Wed Jun 09 09:22:57 2010 +0300 @@ -17,7 +17,7 @@ // d: Status pane text -// l: title_pane_t2/opt9 +// l: title_pane_t1/opt3 // r: TB9.1 // #define qtn_meet_req_title_meeting "Meeting request" diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuildercommon/src/cesmreditor.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmreditor.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmreditor.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -27,6 +27,7 @@ #include #include #include +#include #include "emailtrace.h" @@ -126,7 +127,7 @@ TInt listHeight = iObserver->ListHeight(); // edwinTlY negative - if ( cursorLowerPosition > ( listHeight - edwinTlY )) + if ( cursorLowerPosition > ( listHeight - edwinTlY )) { iObserver->RePositionFields( -RowHeight() ); } @@ -160,9 +161,9 @@ EXPORT_C void CESMREditor::FocusChanged(TDrawNow aDrawNow) { FUNC_LOG; - + CEikRichTextEditor::FocusChanged( aDrawNow ); - + TRAPD( error, TryToSetSelectionL() ); if ( error != KErrNone ) { @@ -234,7 +235,7 @@ { TInt curPos = CursorPos (); TInt textLength = TextLength(); - // Update viewarea scrolling in cases where the cursor location + // Update viewarea scrolling in cases where the cursor location // is changed directly from bottom to upmost position or vise versa. if ( CursorPos () == TextLength() || CursorPos () == 0 ) { @@ -244,7 +245,7 @@ } break; } - + case EEventTextUpdate: { if ( IsVisible() ) @@ -253,7 +254,7 @@ } break; } - + default: { break; @@ -292,6 +293,10 @@ paraFormatMask.SetAttrib( EAttLineSpacing ); paraFormat->iHorizontalAlignment = CParaFormat::ELeftAlign; + if ( AknLayoutUtils::LayoutMirrored() ) + { + paraFormat->iHorizontalAlignment = CParaFormat::ERightAlign; + } paraFormatMask.SetAttrib( EAttAlignment ); TCharFormat charFormat; @@ -305,10 +310,10 @@ formatMask.SetAttrib(EAttFontHighlightColor); formatMask.SetAttrib( EAttColor ); - charFormat.iFontPresentation.iTextColor = + charFormat.iFontPresentation.iTextColor = NMRColorManager::Color( NMRColorManager::EMRMainAreaTextColor ); - - charFormat.iFontPresentation.iHighlightColor = + + charFormat.iFontPresentation.iHighlightColor = NMRColorManager::Color( NMRColorManager::EMRCutCopyPasteHighlightColor ); CParaFormatLayer* paraFormatLayer = @@ -321,7 +326,7 @@ CleanupStack::Pop( paraFormatLayer ); CleanupStack::PopAndDestroy( paraFormat ); SetCharFormatLayer( charFormatLayer ); - + // This forces CEikEdwin::OnReformatL to notify observer // through HandleEdwinSizeEventL about changed size. // It is notified only if linecount changes. @@ -385,7 +390,7 @@ { FUNC_LOG; SetTextL( aDefaultText ); - + if ( iDefaultText ) { delete iDefaultText; diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrfield.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -293,11 +293,25 @@ const TKeyEvent& aEvent, TEventCode aType ) { FUNC_LOG; + + TKeyResponse response( EKeyWasNotConsumed ); + if ( iExtControl ) { - return iExtControl->OfferKeyEventL( aEvent, aType ); + response = iExtControl->OfferKeyEventL( aEvent, aType ); } - return EKeyWasNotConsumed; + + // If key event was not consumed, and it is the Enter, + // let's execute generic command Open + if ( response == EKeyWasNotConsumed + && aType == EEventKey + && ( aEvent.iCode == EKeyEnter + || aEvent.iScanCode == EStdKeyEnter ) ) + { + ExecuteGenericCommandL( EAknCmdOpen ); + } + + return response; } // --------------------------------------------------------------------------- diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrrichtextviewer.cpp --- a/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrrichtextviewer.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuildercommon/src/cesmrrichtextviewer.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : CEikRichTextEditor based Rich Text viewer -* Version : %version: e002sa32#41 % +* Version : %version: e002sa32#42.1.2 % * */ @@ -306,8 +306,10 @@ break; } case EKeyDevice3: // Selection key + case EKeyEnter: { - // No implementation. Non-MSK devices might require this. + LinkSelectedL(); + response = EKeyWasConsumed; break; } default: @@ -633,6 +635,10 @@ iParaFormatMask.SetAttrib( EAttLineSpacing ); iParaFormat->iHorizontalAlignment = CParaFormat::ELeftAlign; + if ( AknLayoutUtils::LayoutMirrored() ) + { + iParaFormat->iHorizontalAlignment = CParaFormat::ERightAlign; + } iParaFormat->iVerticalAlignment = CParaFormat::ECenterAlign; iParaFormatMask.SetAttrib( EAttAlignment ); iParaFormatMask.SetAttrib( EAttVerticalAlignment ); @@ -1152,7 +1158,8 @@ if ( AknLayoutUtils::LayoutMirrored() ) { // move top left x to end of text - tl.iX -= textWidth; + // will be handled further, if all mr fields need to be changed the order from right to left. + //tl.iX -= textWidth; } tl.iY -= iFont->FontMaxAscent(); diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/group/esmrfieldbuilderplugin.mmp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/group/esmrfieldbuilderplugin.mmp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/group/esmrfieldbuilderplugin.mmp Wed Jun 09 09:22:57 2010 +0300 @@ -124,6 +124,7 @@ LIBRARY commonui.lib LIBRARY apmime.lib LIBRARY aknnotify.lib +LIBRARY aknlayout2scalable.lib #if defined( ENABLE_TRACES ) && defined( TRACE_INTO_FILE ) LIBRARY flogger.lib diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrcheckbox.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrcheckbox.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrcheckbox.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -56,13 +56,13 @@ // CESMRCheckbox::CESMRCheckbox // --------------------------------------------------------------------------- // -CESMRCheckBox::CESMRCheckBox( MESMRFieldValidator* aValidator ) +CESMRCheckBox::CESMRCheckBox( MESMRFieldValidator* aValidator ) : iChecked( EFalse ) { FUNC_LOG; - + iValidator = aValidator; - + SetFieldId( EESMRFieldAllDayEvent ); SetFocusType ( EESMRHighlightFocus ); } @@ -76,15 +76,15 @@ FUNC_LOG; iLabel = CMRLabel::NewL(); iLabel->SetParent( this ); - + CESMRField::ConstructL( iLabel ); //ownership transfered - + HBufC* txt = StringLoader::LoadLC ( R_QTN_MEET_REQ_ALL_DAY_EVENT ); iLabel->SetTextL( *txt ); CleanupStack::PopAndDestroy( txt ); // Creating field icon - SetIconL ( iChecked ); + SetIconL ( iChecked ); } // --------------------------------------------------------------------------- @@ -125,7 +125,7 @@ if( aCommand == EESMRCmdCheckEvent || aCommand == EAknCmdOpen ) { HandleTactileFeedbackL(); - + HandleCheckEventL(); SwitchMSKLabelL(); SendFieldChangeEventL( EESMRFieldAllDayEvent ); @@ -201,31 +201,29 @@ { FUNC_LOG; TRect rect = Rect(); - + TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); rect = rowLayoutRect.Rect(); - + TAknWindowComponentLayout iconLayout = - NMRLayoutManager::GetWindowComponentLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ); AknLayoutUtils::LayoutImage( iFieldIcon, rect, iconLayout ); - + TAknLayoutRect bgLayoutRect = - NMRLayoutManager::GetLayoutRect( + NMRLayoutManager::GetLayoutRect( rect, NMRLayoutManager::EMRLayoutTextEditorBg ); TRect bgRect( bgLayoutRect.Rect() ); // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); SetFocusRect( bgRect ); - - TAknLayoutText labelLayout = - NMRLayoutManager::GetLayoutText( - rect, NMRLayoutManager::EMRTextLayoutTextEditor ); - iLabel->SetRect( labelLayout.TextRect() ); - - // Setting font also for the label - iLabel->SetFont( labelLayout.Font() ); + + TAknTextComponentLayout editorLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + + AknLayoutUtils::LayoutLabel( iLabel, rect, editorLayout ); } // --------------------------------------------------------------------------- @@ -267,7 +265,7 @@ FUNC_LOG; delete iFieldIcon; iFieldIcon = NULL; - + NMRBitmapManager::TMRBitmapId iconID; if( aChecked ) { @@ -277,7 +275,7 @@ { iconID = NMRBitmapManager::EMRBitmapCheckBoxOff; } - + iFieldIcon = CMRImage::NewL( iconID ); iFieldIcon->SetParent( this ); @@ -343,7 +341,7 @@ // CESMRCheckbox::SetContainerWindowL // --------------------------------------------------------------------------- // -void CESMRCheckBox::SetContainerWindowL( +void CESMRCheckBox::SetContainerWindowL( const CCoeControl& aContainer ) { CCoeControl::SetContainerWindowL( aContainer ); @@ -371,7 +369,7 @@ CESMRFieldEventValue* checked = CESMRFieldEventValue::NewLC( CESMRFieldEventValue::EESMRInteger, &iChecked ); event->AddParamL( checked ); - CleanupStack::Pop( checked ); + CleanupStack::Pop( checked ); iEventQueue->NotifyEventL( *event ); CleanupStack::PopAndDestroy( event ); } diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrlocationfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrlocationfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrlocationfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description : ESMR location field implementation - * Version : %version: e002sa32#53.1.1 % + * Version : %version: e002sa32#53.1.2 % * */ @@ -350,7 +350,7 @@ if ( aEdwin == iLocation && aEventType == EEventTextUpdate ) { TInt textLength( iLocation->TextLength() ); - + if ( iLocation->GetLimitLength() <= textLength ) { NotifyEventAsyncL( EESMRCmdSizeExceeded ); @@ -500,15 +500,11 @@ // Layout field title if( iTitle ) { - TAknLayoutText labelLayout( - NMRLayoutManager::GetLayoutText( - firstRowRect, - NMRLayoutManager::EMRTextLayoutTextEditor ) ); + TAknTextComponentLayout editorLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); - iTitle->SetRect( labelLayout.TextRect() ); - - // Setting font also for the label. Failures are ignored. - iTitle->SetFont( labelLayout.Font() ); + AknLayoutUtils::LayoutLabel( iTitle, firstRowRect, editorLayout ); } TRect editorRect( 0, 0, 0, 0 ); @@ -776,15 +772,15 @@ aMenuPane->ItemAndPos( EESMRCmdAddLocation, pos ); item->iData.iCascadeId = 0; - + if ( FeaturesL().FeatureSupported( CESMRFeatureSettings::EESMRUIMnFwIntegration ) ) { item->iData.iCommandId = EESMRCmdAssignFromMap; - StringLoader::Load(item->iData.iText, + StringLoader::Load(item->iData.iText, R_MEET_REQ_OPTIONS_ASSIGN_FROM_MAP, iCoeEnv ); } - + #ifdef RD_USE_MYLOCATIONUI else { @@ -793,7 +789,7 @@ R_MEET_REQ_OPTIONS_MY_LOCATIONS, iCoeEnv ); } #endif //RD_USE_MYLOCATIONUI - + aMenuPane->SetItemDimmed( item->iData.iCommandId, EFalse ); break; } diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriorityfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriorityfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrpriorityfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -58,8 +58,8 @@ FUNC_LOG; iArray.ResetAndDestroy(); iArray.Close(); - - delete iIcon; + + delete iIcon; } // --------------------------------------------------------------------------- @@ -82,7 +82,7 @@ // void CESMRPriorityField::ConstructL() { - FUNC_LOG; + FUNC_LOG; iLabel = CMRLabel::NewL(); iLabel->SetParent( this ); CESMRField::ConstructL( iLabel ); // ownership transfered @@ -98,7 +98,7 @@ void CESMRPriorityField::InitializeL() { FUNC_LOG; - NMRColorManager::SetColor( *iLabel, + NMRColorManager::SetColor( *iLabel, NMRColorManager::EMRMainAreaTextColor ); } @@ -144,7 +144,7 @@ } } // reader - CleanupStack::PopAndDestroy(); // codescanner::cleanup + CleanupStack::PopAndDestroy(); // codescanner::cleanup } // --------------------------------------------------------------------------- @@ -172,7 +172,7 @@ void CESMRPriorityField::SetOutlineFocusL( TBool aFocus ) { FUNC_LOG; - CESMRField::SetOutlineFocusL ( aFocus ); + CESMRField::SetOutlineFocusL ( aFocus ); iLabel->SetFocus( aFocus ); //Focus gained @@ -193,24 +193,25 @@ TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); rect = rowLayoutRect.Rect(); - + TAknWindowComponentLayout iconLayout = - NMRLayoutManager::GetWindowComponentLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ); AknLayoutUtils::LayoutImage( iIcon, rect, iconLayout ); - + TAknLayoutRect bgLayoutRect = - NMRLayoutManager::GetLayoutRect( + NMRLayoutManager::GetLayoutRect( rect, NMRLayoutManager::EMRLayoutTextEditorBg ); TRect bgRect( bgLayoutRect.Rect() ); // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); SetFocusRect( bgRect ); - - TAknLayoutText labelLayout = - NMRLayoutManager::GetLayoutText( - rect, NMRLayoutManager::EMRTextLayoutTextEditor ); - iLabel->SetRect( labelLayout.TextRect() ); + + TAknTextComponentLayout editorLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + + AknLayoutUtils::LayoutLabel( iLabel, rect, editorLayout ); } // --------------------------------------------------------------------------- @@ -265,7 +266,7 @@ aCommand == EAknCmdOpen ) { HandleTactileFeedbackL(); - + ExecutePriorityQueryL(); isUsed = ETrue; } @@ -381,7 +382,7 @@ CESMRPriority* priority = iArray[ aIndex ]; iLabel->SetTextL ( priority->Text ( ) ); - NMRBitmapManager::TMRBitmapId bitmapId( + NMRBitmapManager::TMRBitmapId bitmapId( NMRBitmapManager::EMRBitmapPriorityNormal ); switch ( priority->Id() ) @@ -408,7 +409,7 @@ ASSERT(EFalse); break; } - + delete iIcon; iIcon = NULL; iIcon = CMRImage::NewL( bitmapId ); diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrrecurencefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrrecurencefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrrecurencefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -72,9 +72,9 @@ : iIndex( 0 ) { FUNC_LOG; - + iValidator = aValidator; - + SetFieldId ( EESMRFieldRecurrence ); SetFocusType( EESMRHighlightFocus ); } @@ -100,7 +100,7 @@ MESMRFieldValidator* aValidator ) { FUNC_LOG; - CESMRRecurenceField* self = + CESMRRecurenceField* self = new( ELeave )CESMRRecurenceField( aValidator ); CleanupStack::PushL( self ); self->ConstructL(); @@ -118,9 +118,9 @@ iRecurrence = CMRLabel::NewL(); iRecurrence->SetParent( this ); CESMRField::ConstructL( iRecurrence ); - + iRecurrence->SetTextL( KNullDesC() ); - + iFieldIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapRecurrence ); iFieldIcon->SetParent( this ); } @@ -159,7 +159,7 @@ } } // resource reader - CleanupStack::PopAndDestroy(); // codescanner::cleanup + CleanupStack::PopAndDestroy(); // codescanner::cleanup } else { @@ -196,7 +196,7 @@ aCommand == EAknCmdOpen ) { HandleTactileFeedbackL(); - + ExecuteRecurrenceQueryL(); isUsed = ETrue; } @@ -210,7 +210,7 @@ void CESMRRecurenceField::ExecuteRecurrenceQueryL() { FUNC_LOG; - TInt ret = CESMRListQuery::ExecuteL( + TInt ret = CESMRListQuery::ExecuteL( CESMRListQuery::EESMRRecurrenceQuery ); if ( ret != KErrCancel ) @@ -311,31 +311,29 @@ { FUNC_LOG; TRect rect = Rect(); - + TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); rect = rowLayoutRect.Rect(); - + TAknWindowComponentLayout iconLayout = - NMRLayoutManager::GetWindowComponentLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ); AknLayoutUtils::LayoutImage( iFieldIcon, rect, iconLayout ); - + TAknLayoutRect bgLayoutRect = - NMRLayoutManager::GetLayoutRect( + NMRLayoutManager::GetLayoutRect( rect, NMRLayoutManager::EMRLayoutTextEditorBg ); TRect bgRect( bgLayoutRect.Rect() ); // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); SetFocusRect( bgRect ); - - TAknLayoutText labelLayout = - NMRLayoutManager::GetLayoutText( - rect, NMRLayoutManager::EMRTextLayoutTextEditor ); - iRecurrence->SetRect( labelLayout.TextRect() ); - - // Setting font also for the field - iRecurrence->SetFont( labelLayout.Font() ); + + TAknTextComponentLayout editorLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + + AknLayoutUtils::LayoutLabel( iRecurrence, rect, editorLayout ); } // --------------------------------------------------------------------------- @@ -379,12 +377,12 @@ // CESMRRecurenceField::SetContainerWindowL // --------------------------------------------------------------------------- // -void CESMRRecurenceField::SetContainerWindowL( +void CESMRRecurenceField::SetContainerWindowL( const CCoeControl& aContainer ) { CCoeControl::SetContainerWindowL( aContainer ); iRecurrence->SetContainerWindowL( aContainer ); - + iRecurrence->SetParent( this ); } diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmdatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmdatefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmdatefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -124,38 +124,36 @@ NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ); AknLayoutUtils::LayoutImage( iIcon, rect, iconLayout ); - + // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; + if( iLockIcon ) { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); } else { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); } - - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); - + + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); + // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -175,12 +173,12 @@ { ++count; } - + if ( iLockIcon ) { ++count; } - + return count; } @@ -223,24 +221,24 @@ TBool CESMRViewerAlarmDateField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - + TBool retValue( EFalse ); - + if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; } - + if ( EMRCmdDoEnvironmentChange == aCommand ) { FormatAlarmTimeL(); retValue = ETrue; } - + return retValue; } @@ -255,13 +253,13 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); - iLockIcon->SetParent( this ); + iLockIcon->SetParent( this ); } // --------------------------------------------------------------------------- @@ -271,7 +269,7 @@ void CESMRViewerAlarmDateField::FormatAlarmTimeL() { FUNC_LOG; - + // Read format string from AVKON resource HBufC* dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_DATE_USUAL_WITH_ZERO ); diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -197,38 +197,36 @@ NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ); AknLayoutUtils::LayoutImage( iIcon, rect, iconLayout ); - + // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; + if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -248,7 +246,7 @@ { ++count; } - + if ( iLockIcon ) { ++count; @@ -299,9 +297,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -315,18 +313,18 @@ TBool CESMRViewerAlarmField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - + TBool retValue( EFalse ); - + if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; } - + return retValue; } diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmtimefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmtimefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmtimefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -127,34 +127,32 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; + if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -174,7 +172,7 @@ { ++count; } - + if ( iLockIcon ) { ++count; @@ -221,24 +219,24 @@ TBool CESMRViewerAlarmTimeField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - + TBool retValue( EFalse ); - + if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; } - + if ( EMRCmdDoEnvironmentChange == aCommand ) { FormatAlarmTimeL(); retValue = ETrue; } - + return retValue; } @@ -253,9 +251,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -269,7 +267,7 @@ void CESMRViewerAlarmTimeField::FormatAlarmTimeL() { FUNC_LOG; - + // Read format string from AVKON resource HBufC* dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_USUAL_WITH_ZERO ); @@ -279,7 +277,7 @@ iAlarmTime.FormatL( ptr, *dateFormatString ); AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr ); iLabel->SetTextL( ptr ); - CleanupStack::PopAndDestroy( 2, dateFormatString ); + CleanupStack::PopAndDestroy( 2, dateFormatString ); } // EOF diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralldayeventfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralldayeventfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralldayeventfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -135,30 +135,28 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; + if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); - // Setting font for the label also - iLabel->SetFont( viewerLayoutText.Font() ); - + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); @@ -229,9 +227,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -245,18 +243,18 @@ TBool CESMRViewerAllDayEventField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - + TBool retValue( EFalse ); - + if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; } - + return retValue; } diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerlocationfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerlocationfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerlocationfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -229,8 +229,12 @@ break; } case EAknSoftkeySelect: + case EAknCmdOpen: { - iRichTextViewer->LinkSelectedL(); + if ( !iRichTextViewer->LinkSelectedL() ) + { + NotifyEventL( EAknSoftkeyContextOptions ); + } isUsed = ETrue; break; diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerpriorityfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerpriorityfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerpriorityfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -81,10 +81,10 @@ iLabel = CMRLabel::NewL(); iLabel->SetParent( this ); CESMRField::ConstructL( iLabel ); // ownership transfered - + iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapPriorityNormal ); iIcon->SetParent( this ); - + HBufC* priorityText = StringLoader::LoadLC( R_QTN_CALENDAR_MEETING_OPT_PRIORITY_NORMAL, iEikonEnv ); @@ -182,43 +182,41 @@ TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); rect = rowLayoutRect.Rect(); - + TAknWindowComponentLayout iconLayout = - NMRLayoutManager::GetWindowComponentLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ); AknLayoutUtils::LayoutImage( iIcon, rect, iconLayout ); - + // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } - + // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; + if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -273,8 +271,8 @@ { FUNC_LOG; CESMRField::SetOutlineFocusL ( aFocus ); - - iLabel->SetFocus( aFocus ); + + iLabel->SetFocus( aFocus ); } // --------------------------------------------------------------------------- @@ -288,9 +286,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -310,7 +308,7 @@ if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencedatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencedatefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencedatefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -37,7 +37,6 @@ namespace // codescanner::namespace { const TInt KComponentCount( 2 ); - const TInt KMargin (5); } // ======== MEMBER FUNCTIONS ======== @@ -71,7 +70,7 @@ CESMRViewerRecurrenceDateField* CESMRViewerRecurrenceDateField::NewL() { FUNC_LOG; - CESMRViewerRecurrenceDateField* self = + CESMRViewerRecurrenceDateField* self = new (ELeave) CESMRViewerRecurrenceDateField(); CleanupStack::PushL( self ); self->ConstructL(); @@ -116,24 +115,24 @@ TBool CESMRViewerRecurrenceDateField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - + TBool retValue( EFalse ); - + if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( - CESMRGlobalNote::EESMRUnableToEdit ); + CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; - } + } else if ( EMRCmdDoEnvironmentChange == aCommand ) { FormatRepeatUntilDateL(); retValue = ETrue; } - - return retValue; + + return retValue; } // ----------------------------------------------------------------------------- @@ -149,13 +148,11 @@ NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); rect = row1LayoutRect.Rect(); - TAknLayoutText topicRect = - NMRLayoutManager::GetLayoutText( - rect, NMRLayoutManager::EMRTextLayoutMultiRowTextEditor ); + TAknTextComponentLayout topicLayoutText = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutMultiRowTextEditor ); - TRect rectWithMargin = topicRect.TextRect(); - rectWithMargin.iTl.iX += KMargin; - iRepeatTopic->SetRect( rectWithMargin ); + AknLayoutUtils::LayoutLabel( iRepeatTopic, rect, topicLayoutText ); rect = Rect(); // Move the iY down the height of the topic field @@ -167,17 +164,11 @@ NMRLayoutManager::GetFieldRowLayoutRect( rect, 2 ); rect = row2LayoutRect.Rect(); - TAknLayoutText dateRect = - NMRLayoutManager::GetLayoutText( - rect, NMRLayoutManager::EMRTextLayoutMultiRowTextEditor ); + TAknTextComponentLayout dateLayoutText = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutMultiRowTextEditor ); - rectWithMargin = dateRect.TextRect(); - rectWithMargin.iTl.iX += KMargin; - iRepeatDate->SetRect( rectWithMargin ); - - // Setting font also for the label - iRepeatTopic->SetFont( topicRect.Font() ); - iRepeatDate->SetFont( dateRect.Font() ); + AknLayoutUtils::LayoutLabel( iRepeatDate, rect, dateLayoutText ); } // ----------------------------------------------------------------------------- @@ -209,12 +200,12 @@ { FUNC_LOG; // Get recurrence - TESMRRecurrenceValue recValue( ERecurrenceNot ); + TESMRRecurrenceValue recValue( ERecurrenceNot ); aEntry.GetRecurrenceL( recValue, iRepeatUntilDate ); // Recurrence time has to be shown in the viewer as local time TCalTime recurrenceTime; - recurrenceTime.SetTimeUtcL( iRepeatUntilDate ); + recurrenceTime.SetTimeUtcL( iRepeatUntilDate ); iRepeatUntilDate = recurrenceTime.TimeLocalL(); if( aEntry.IsRecurrentEventL() && @@ -277,9 +268,9 @@ StringLoader::LoadLC( R_QTN_MEET_REQ_REPEAT_UNTIL, iEikonEnv ); - + // Set text for repeat topic (e.g. "Repeat until") - iRepeatTopic->SetTextL( topicHolder->Des() ); + iRepeatTopic->SetTextL( *topicHolder ); CleanupStack::PopAndDestroy( topicHolder ); // Format date string @@ -293,7 +284,7 @@ AknTextUtils::DisplayTextLanguageSpecificNumberConversion( finalBuf ); iRepeatDate->SetTextL( finalBuf ); CleanupStack::PopAndDestroy( timeFormatString ); - timeFormatString = NULL; + timeFormatString = NULL; } // End of file diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerrecurrencefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -202,34 +202,31 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } - + // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; if( iLockIcon ) { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); } else { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); } - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // ----------------------------------------------------------------------------- @@ -243,7 +240,7 @@ { ++count; } - + return count; } @@ -289,9 +286,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -311,7 +308,7 @@ if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstartdatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstartdatefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstartdatefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -55,7 +55,7 @@ CESMRViewerStartDateField::CESMRViewerStartDateField() { FUNC_LOG; - + SetFieldId ( EESMRFieldStartDate ); SetFocusType( EESMRHighlightFocus ); } @@ -67,7 +67,7 @@ CESMRViewerStartDateField::~CESMRViewerStartDateField() { FUNC_LOG; - + delete iIcon; delete iLockIcon; } @@ -79,8 +79,8 @@ CESMRViewerStartDateField* CESMRViewerStartDateField::NewL() { FUNC_LOG; - - CESMRViewerStartDateField* self = + + CESMRViewerStartDateField* self = new (ELeave) CESMRViewerStartDateField(); CleanupStack::PushL( self ); self->ConstructL(); @@ -95,7 +95,7 @@ void CESMRViewerStartDateField::ConstructL() { FUNC_LOG; - + iLabel = CMRLabel::NewL(); iLabel->SetParent( this ); CESMRField::ConstructL( iLabel ); // ownership transfered @@ -112,7 +112,7 @@ { FUNC_LOG; - CCalEntry& entry = aEntry.Entry(); + CCalEntry& entry = aEntry.Entry(); iStartTime = entry.StartTimeL().TimeLocalL(); FormatDateStringL(); @@ -125,7 +125,7 @@ void CESMRViewerStartDateField::SizeChanged() { FUNC_LOG; - + TRect rect = Rect(); TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); @@ -139,35 +139,31 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } - + // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - // Layouting viewer field - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -177,7 +173,7 @@ TInt CESMRViewerStartDateField::CountComponentControls() const { FUNC_LOG; - + TInt count( KComponentCount ); if( iLockIcon ) { @@ -193,7 +189,7 @@ CCoeControl* CESMRViewerStartDateField::ComponentControl( TInt aIndex ) const { FUNC_LOG; - + switch ( aIndex ) { case 0: @@ -214,7 +210,7 @@ void CESMRViewerStartDateField::SetOutlineFocusL( TBool aFocus ) { FUNC_LOG; - + CESMRField::SetOutlineFocusL ( aFocus ); iLabel->SetFocus( aFocus ); } @@ -226,24 +222,24 @@ TBool CESMRViewerStartDateField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - + TBool retValue( EFalse ); - + if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; } - + if ( EMRCmdDoEnvironmentChange == aCommand ) { FormatDateStringL(); retValue = ETrue; } - + return retValue; } @@ -258,9 +254,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -274,18 +270,18 @@ void CESMRViewerStartDateField::FormatDateStringL() { FUNC_LOG; - + // Read format string from AVKON resource - HBufC* dateFormatString = + HBufC* dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_DATE_USUAL_WITH_ZERO); - + TBuf buf; iStartTime.FormatL(buf, *dateFormatString); AknTextUtils::DisplayTextLanguageSpecificNumberConversion( buf ); iLabel->SetTextL( buf ); - CleanupStack::PopAndDestroy( dateFormatString ); + CleanupStack::PopAndDestroy( dateFormatString ); } // EOF diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstopdatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstopdatefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewerstopdatefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -43,7 +43,7 @@ { // codescanner::namespace const TInt KComponentCount( 2 ); // icon and label -const TInt KMaxTimeBuffer( 32 ); // buffer for date formatting +const TInt KMaxTimeBuffer( 32 ); // buffer for date formatting } // unnamed namespace @@ -176,34 +176,31 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } - + // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -257,24 +254,24 @@ TBool CESMRViewerStopDateField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - + TBool retValue( EFalse ); - + if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; } - + if ( EMRCmdDoEnvironmentChange == aCommand ) { FormatDateStringL(); retValue = ETrue; } - + return retValue; } @@ -289,9 +286,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -305,18 +302,18 @@ void CESMRViewerStopDateField::FormatDateStringL() { FUNC_LOG; - + // Read format string from AVKON resource - HBufC* dateFormatString = + HBufC* dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_DATE_USUAL_WITH_ZERO); - + TBuf buf; iStopTime.FormatL(buf, *dateFormatString); AknTextUtils::DisplayTextLanguageSpecificNumberConversion( buf ); iLabel->SetTextL( buf ); - CleanupStack::PopAndDestroy( dateFormatString ); + CleanupStack::PopAndDestroy( dateFormatString ); } // EOF diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewersyncfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewersyncfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewersyncfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -168,34 +168,31 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } - + // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -262,9 +259,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -284,7 +281,7 @@ if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewertimefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewertimefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrviewertimefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -60,7 +60,7 @@ CESMRViewerTimeField::CESMRViewerTimeField() { FUNC_LOG; - + SetFieldId( EESMRFieldMeetingTime ); SetFocusType( EESMRHighlightFocus ); } @@ -98,7 +98,7 @@ void CESMRViewerTimeField::ConstructL() { FUNC_LOG; - + iLabel = CMRLabel::NewL(); iLabel->SetParent( this ); CESMRField::ConstructL( iLabel ); // ownership transfered @@ -118,8 +118,8 @@ CCalEntry& entry = aEntry.Entry(); iStartTime = entry.StartTimeL().TimeLocalL(); - iEndTime = entry.EndTimeL().TimeLocalL(); - + iEndTime = entry.EndTimeL().TimeLocalL(); + if ( aEntry.IsAllDayEventL() ) { // set the field as hidden: @@ -138,7 +138,7 @@ void CESMRViewerTimeField::InitializeL() { FUNC_LOG; - + TAknLayoutText text = NMRLayoutManager::GetLayoutText( Rect(), NMRLayoutManager::EMRTextLayoutTextEditor ); @@ -158,7 +158,7 @@ void CESMRViewerTimeField::SizeChanged() { FUNC_LOG; - + TRect rect = Rect(); TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); @@ -172,34 +172,31 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } - + // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iLabel->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iLabel, rect, viewerLayoutText ); + TRect viewerRect( iLabel->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); SetFocusRect( viewerRect ); - - // Setting font also for the label - iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -209,7 +206,7 @@ TInt CESMRViewerTimeField::CountComponentControls() const { FUNC_LOG; - + TInt count( 0 ); if ( iIcon ) { @@ -220,7 +217,7 @@ { ++count; } - + if ( iLockIcon ) { ++count; @@ -235,7 +232,7 @@ CCoeControl* CESMRViewerTimeField::ComponentControl( TInt aIndex ) const { FUNC_LOG; - + switch ( aIndex ) { case 0: @@ -256,7 +253,7 @@ void CESMRViewerTimeField::SetOutlineFocusL( TBool aFocus ) { FUNC_LOG; - + CESMRField::SetOutlineFocusL ( aFocus ); iLabel->SetFocus( aFocus ); @@ -269,24 +266,24 @@ TBool CESMRViewerTimeField::ExecuteGenericCommandL( TInt aCommand ) { FUNC_LOG; - + TBool retValue( EFalse ); - + if( (aCommand == EAknCmdOpen) && IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); retValue = ETrue; } - + if ( EMRCmdDoEnvironmentChange == aCommand ) { FormatTimeFieldStringL(); retValue = ETrue; } - + return retValue; } @@ -301,9 +298,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -318,7 +315,7 @@ { HBufC* timeFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_USUAL_WITH_ZERO ); - + HBufC* finalBuf = HBufC::NewLC( KTimeBufferSize ); HBufC* startBuf = HBufC::NewLC( KTempBufferSize ); HBufC* endBuf = HBufC::NewLC( KTempBufferSize ); @@ -335,7 +332,7 @@ AknTextUtils::DisplayTextLanguageSpecificNumberConversion( finalPtr ); iLabel->SetTextL( finalPtr ); CleanupStack::PopAndDestroy( KNumBuffers, timeFormatString ); - + } // EOF diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cmralarmonofffield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmralarmonofffield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmralarmonofffield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -50,11 +50,11 @@ // CMRAlarmOnOffField::CMRAlarmOnOffField // --------------------------------------------------------------------------- // -CMRAlarmOnOffField::CMRAlarmOnOffField() +CMRAlarmOnOffField::CMRAlarmOnOffField() { FUNC_LOG; iStatus = ETrue; - + SetFieldId ( EESMRFieldAlarmOnOff ); SetFocusType ( EESMRHighlightFocus ); } @@ -68,10 +68,10 @@ FUNC_LOG; iValidator = aValidator; iValidator->SetAbsoluteAlarmOnOffFieldL( *this ); - + iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapAlarm ); iIcon->SetParent( this ); - + iLabel = CMRLabel::NewL(); CESMRField::ConstructL( iLabel ); // ownership transfered iLabel->SetTextL( KNullDesC() ); @@ -140,8 +140,8 @@ iStatus = ETrue;// Change the status to "ON" for these dialog default } break; - - case MESMRCalEntry::EESMRCalEntryAnniversary: // Anniversary + + case MESMRCalEntry::EESMRCalEntryAnniversary: // Anniversary { iStatus = ETrue;// Change the status to "ON" for these dialog default } @@ -149,7 +149,7 @@ // Flow through case MESMRCalEntry::EESMRCalEntryMemo: // Memo case MESMRCalEntry::EESMRCalEntryReminder: // Reminder - + default: iStatus = EFalse; // Change the status to "OFF" for these dialog default break; @@ -198,7 +198,7 @@ CESMRField::SetOutlineFocusL( aFocus ); iLabel->SetFocus( aFocus ); - + if( aFocus ) //Focus is gained on the field { if ( iStatus ) @@ -235,11 +235,11 @@ FUNC_LOG; TBool isUsed( EFalse ); // EAknCmdOpen is added for the Pointer events, see ListPane - if( aCommand == EESMRCmdAlarmOn || aCommand == EESMRCmdAlarmOff + if( aCommand == EESMRCmdAlarmOn || aCommand == EESMRCmdAlarmOff || aCommand == EAknCmdOpen ) { HandleTactileFeedbackL(); - + SwitchMiddleSoftKeyL(); isUsed = ETrue; } @@ -257,13 +257,13 @@ ResetFieldL(); if( iStatus ) { - ChangeMiddleSoftKeyL( EESMRCmdAlarmOff,R_QTN_MEET_REQ_ALARM_OFF ); + ChangeMiddleSoftKeyL( EESMRCmdAlarmOff,R_QTN_MEET_REQ_ALARM_OFF ); } else { - ChangeMiddleSoftKeyL( EESMRCmdAlarmOn,R_QTN_MEET_REQ_ALARM_ON ); + ChangeMiddleSoftKeyL( EESMRCmdAlarmOn,R_QTN_MEET_REQ_ALARM_ON ); } - + if( iLabel->IsVisible() ) { iLabel->DrawDeferred(); @@ -313,27 +313,24 @@ TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); rect = rowLayoutRect.Rect(); - + TAknWindowComponentLayout iconLayout = - NMRLayoutManager::GetWindowComponentLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ); AknLayoutUtils::LayoutImage( iIcon, rect, iconLayout ); - + TAknLayoutRect bgLayoutRect = - NMRLayoutManager::GetLayoutRect( + NMRLayoutManager::GetLayoutRect( rect, NMRLayoutManager::EMRLayoutTextEditorBg ); TRect bgRect( bgLayoutRect.Rect() ); // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); SetFocusRect( bgRect ); - - TAknLayoutText labelLayout = - NMRLayoutManager::GetLayoutText( - rect, NMRLayoutManager::EMRTextLayoutTextEditor ); - iLabel->SetRect( labelLayout.TextRect() ); - - // Setting font for the label also - iLabel->SetFont( labelLayout.Font() ); + + TAknTextComponentLayout labelLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + AknLayoutUtils::LayoutLabel( iLabel, rect, labelLayout ); } // --------------------------------------------------------------------------- @@ -378,7 +375,7 @@ // CMRAlarmOnOffField::SetContainerWindowL // --------------------------------------------------------------------------- // -void CMRAlarmOnOffField::SetContainerWindowL( +void CMRAlarmOnOffField::SetContainerWindowL( const CCoeControl& aContainer ) { FUNC_LOG; diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentsfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentsfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentsfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -316,15 +316,10 @@ // Layout field title if( iTitle ) { - TAknLayoutText labelLayout( - NMRLayoutManager::GetLayoutText( - firstRowRect, - NMRLayoutManager::EMRTextLayoutTextEditor ) ); - - iTitle->SetRect( labelLayout.TextRect() ); - - // Setting font also for the label. Failures are ignored. - TRAP_IGNORE( iTitle->SetFont( labelLayout.Font() ) ); + TAknTextComponentLayout labelLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + AknLayoutUtils::LayoutLabel( iTitle, firstRowRect, labelLayout ); } TRect edwinRect( 0, 0, 0, 0 ); @@ -501,7 +496,7 @@ iAttCommandHandler->HandleAttachmentCommandL( aCommand, *currentLink ); - + HandleTactileFeedbackL(); handled = ETrue; @@ -845,7 +840,7 @@ if( Rect().Contains( aPosition ) ) { HandleTactileFeedbackL(); - + ret = AddAttachmentL(); } } @@ -857,7 +852,7 @@ iFieldIcon->Rect().Contains( aPosition ) ) { HandleTactileFeedbackL(); - + ret = AddAttachmentL(); } } diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrmulticalenfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrmulticalenfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrmulticalenfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -124,7 +124,7 @@ //Focus gained if ( aFocus ) { - ChangeMiddleSoftKeyL( + ChangeMiddleSoftKeyL( EESMRCmdOpenMultiCalenSelectQuery, R_QTN_MSK_OPEN ); } } @@ -144,16 +144,16 @@ if( IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); isUsed = ETrue; } - + else if( iTypeChangeEnabled ) { HandleTactileFeedbackL(); - + ExecuteTypeQueryL(); isUsed = ETrue; } @@ -176,10 +176,10 @@ CESMRField::LockL(); - delete iLockIcon; + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); - iIcon->SetParent( this ); + iIcon->SetParent( this ); } // --------------------------------------------------------------------------- @@ -238,7 +238,7 @@ iCalenName->SetAlignment( align ); iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapCalendarSelection ); - + } // --------------------------------------------------------------------------- @@ -270,7 +270,7 @@ { ++count; } - + if ( iLockIcon ) { ++count; @@ -324,49 +324,49 @@ rect, NMRLayoutManager::EMRLayoutTextEditorIcon ); TRect iconRect( iconLayout.Rect() ); iIcon->SetRect( iconRect ); - + // Layouting lock icon - TAknLayoutRect rowLayoutRect( + TAknLayoutRect rowLayoutRect( NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ) ); TRect rowRect( rowLayoutRect.Rect() ); if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rowRect, iconLayout ); } // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rowRect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iCalenName->SetRect( viewerRect ); - + AknLayoutUtils::LayoutLabel( iCalenName, rect, viewerLayoutText ); + TRect viewerRect( iCalenName->Rect() ); + // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); - - TAknLayoutRect bgLayoutRect = - NMRLayoutManager::GetLayoutRect( + + TAknLayoutRect bgLayoutRect = + NMRLayoutManager::GetLayoutRect( rect, NMRLayoutManager::EMRLayoutTextEditorBg ); TRect bgRect( bgLayoutRect.Rect() ); - - // Adjust background rect according to viewerRect + + // Adjust background rect according to viewerRect bgRect.SetWidth( viewerRect.Width() ); - + // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); - + SetFocusRect( bgRect ); } @@ -392,9 +392,9 @@ void CMRMultiCalenField::SetTextDimmed() { FUNC_LOG; - + NMRColorManager::SetColor( - *iCalenName, + *iCalenName, NMRColorManager::EMRMainAreaTextColorDimmed ); } @@ -403,58 +403,58 @@ // --------------------------------------------------------------------------- // TBool CMRMultiCalenField::TypeChangeEnabledL() - { + { TBool ret( ETrue ); - + /* * Case 1: - * If entry is single occurancy of a series, calendar type change + * If entry is single occurancy of a series, calendar type change * is disabled for the user. */ - if( iEntry->IsRecurrentEventL() && + if( iEntry->IsRecurrentEventL() && iEntry->RecurrenceModRule() == MESMRCalEntry::EESMRThisOnly && FieldMode() == EESMRFieldModeEdit ) { ret = EFalse; } - + /* * Case 2: * If entry is meeting request, and opened from mailbox that does not - * support multiple calendar, calendar type change is disabled + * support multiple calendar, calendar type change is disabled * for the user. */ if( ret && CCalenInterimUtils2::IsMeetingRequestL( iEntry->Entry() ) && FieldMode() == EESMRFieldModeEdit ) { - MESMRMeetingRequestEntry* entry = + MESMRMeetingRequestEntry* entry = static_cast< MESMRMeetingRequestEntry* >( iEntry ); - - // If entry's current plugin is active sync, it means that - // Mail For Exchange is in use. This means, that multiple calendar + + // If entry's current plugin is active sync, it means that + // Mail For Exchange is in use. This means, that multiple calendar // functionality is not supported. if( entry->CurrentPluginL() == EESMRActiveSync ) { ret = EFalse; } } - + /* * Case 3: - * When the organizer of the MR edits an already sent MR, calendar + * When the organizer of the MR edits an already sent MR, calendar * cannot be changed --> calendar selection needs to be locked. */ if( ret && CCalenInterimUtils2::IsMeetingRequestL( iEntry->Entry() ) && FieldMode() == EESMRFieldModeEdit ) { - MESMRMeetingRequestEntry* entry = + MESMRMeetingRequestEntry* entry = static_cast< MESMRMeetingRequestEntry* >( iEntry ); if( entry->RoleL() == EESMRRoleOrganizer && entry->IsSentL() ) { - ret = EFalse; + ret = EFalse; } } - + return ret; } diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrunifiededitorfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrunifiededitorfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrunifiededitorfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -179,7 +179,7 @@ } // resource reader CleanupStack::PopAndDestroy(); // codescanner::cleanup - + SetIconL( aEntry ); } } @@ -214,18 +214,18 @@ if( IsLocked() ) { HandleTactileFeedbackL(); - + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRUnableToEdit ); - isUsed = ETrue; + isUsed = ETrue; } else { HandleTactileFeedbackL(); - + ExecuteTypeQueryL(); isUsed = ETrue; - } + } } return isUsed; } @@ -241,9 +241,9 @@ { return; } - + CESMRField::LockL(); - + delete iLockIcon; iLockIcon = NULL; iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); @@ -296,8 +296,8 @@ align.SetHAlignment( EHLeft ); align.SetVAlignment( EVCenter ); iType->SetAlignment( align ); - - // An icon is required for layouting the field. Actual correct icon + + // An icon is required for layouting the field. Actual correct icon // is set after InternalizeL. iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapEventTypeMeeting ); } @@ -331,7 +331,7 @@ { ++count; } - + if ( iLockIcon ) { ++count; @@ -386,45 +386,45 @@ // Layouting lock icon if( iLockIcon ) { - TAknWindowComponentLayout iconLayout( - NMRLayoutManager::GetWindowComponentLayout( + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); } - + // Layouting label - TAknLayoutText viewerLayoutText; + TAknTextComponentLayout viewerLayoutText; if( iLockIcon ) - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } else - { - viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, - NMRLayoutManager::EMRTextLayoutTextEditor ); - } + { + viewerLayoutText = NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + } - TRect viewerRect( viewerLayoutText.TextRect() ); - iType->SetRect( viewerRect ); + AknLayoutUtils::LayoutLabel( iType, rect, viewerLayoutText ); + TRect viewerRect( iType->Rect() ); // Move focus rect so that it's relative to field's position. viewerRect.Move( -Position() ); - TAknLayoutRect bgLayoutRect = - NMRLayoutManager::GetLayoutRect( + TAknLayoutRect bgLayoutRect = + NMRLayoutManager::GetLayoutRect( rect, NMRLayoutManager::EMRLayoutTextEditorBg ); TRect bgRect( bgLayoutRect.Rect() ); - - // Adjust background rect according to viewerRect + + // Adjust background rect according to viewerRect bgRect.SetWidth( viewerRect.Width() ); - + // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); - + SetFocusRect( bgRect ); - - + + TAknTextComponentLayout editorLayout( NMRLayoutManager::GetTextComponentLayout( NMRLayoutManager::EMRTextLayoutTextEditor ) ); @@ -438,11 +438,11 @@ void CMRUnifiedEditorField::SetIconL( MESMRCalEntry& aEntry ) { FUNC_LOG; - NMRBitmapManager::TMRBitmapId bitmapId( + NMRBitmapManager::TMRBitmapId bitmapId( NMRBitmapManager::EMRBitmapNotSet ); - + CCalEntry& entry = aEntry.Entry(); - + switch ( entry.EntryTypeL() ) { case CCalEntry::EAppt: diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrattendeefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrattendeefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrattendeefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -75,8 +75,8 @@ :iRole( aRole ) { FUNC_LOG; - SetFocusType( EESMRHighlightFocus ); - SetFieldId ( (iRole == CCalAttendee::EReqParticipant) ? + SetFocusType( EESMRHighlightFocus ); + SetFieldId ( (iRole == CCalAttendee::EReqParticipant) ? EESMRFieldAttendee : EESMRFieldOptAttendee ); } @@ -128,23 +128,23 @@ iTitle = CMRLabel::NewL(); iTitle->SetParent( this ); - + HBufC* buf = NULL; if( FieldId() == EESMRFieldAttendee ) { buf = StringLoader::LoadLC( R_QTN_MEET_REQ_LABEL_REQUIRED ); } - + if( FieldId() == EESMRFieldOptAttendee ) { buf = StringLoader::LoadLC( R_QTN_MEET_REQ_LABEL_OPT ); } - + iTitle->SetTextL( *buf ); // ownership transferred CleanupStack::Pop( buf ); - - iEditor = + + iEditor = new ( ELeave ) CESMRNcsAifEditor( *iContactHandler, iDefaultText ); CESMRField::ConstructL( iEditor ); iEditor->ConstructL ( @@ -154,13 +154,13 @@ CEikEdwin::EAvkonEditor | CEikEdwin::EResizable | CEikEdwin::ENoAutoSelection |CEikEdwin::EInclusiveSizeFixed | CEikEdwin::ENoHorizScrolling - ); + ); iEditor->SetEdwinSizeObserver( this ); iEditor->SetParent( this ); iEditor->SetPopupList( this ); iEditor->SetAlignment ( EAknEditorAlignBidi | EAknEditorAlignCenter ); iEditor->SetAknEditorInputMode ( EAknEditorTextInputMode ); - iEditor->SetAknEditorFlags ( + iEditor->SetAknEditorFlags ( EAknEditorFlagNoT9| EAknEditorFlagUseSCTNumericCharmap ); iEditor->SetAknEditorCurrentCase ( EAknEditorLowerCase ); @@ -168,10 +168,10 @@ TRect tempRect( 0, 0, 0, 0 ); NMRBitmapManager::TMRBitmapStruct bitmapStruct; bitmapStruct = NMRBitmapManager::GetBitmapStruct( NMRBitmapManager::EMRBitmapInputCenter ); - iBgCtrlContext = CAknsBasicBackgroundControlContext::NewL( - bitmapStruct.iItemId, - tempRect, - EFalse ); + iBgCtrlContext = CAknsBasicBackgroundControlContext::NewL( + bitmapStruct.iItemId, + tempRect, + EFalse ); iEditor->SetSkinBackgroundControlContextL( iBgCtrlContext ); } @@ -182,23 +182,23 @@ TSize CESMRAttendeeField::MinimumSize() { TRect parentRect( Parent()->Rect() ); - - TRect richTextRect = + + TRect richTextRect = NMRLayoutManager::GetFieldLayoutRect( parentRect, 1 ).Rect(); - TRect textRect( NMRLayoutManager::GetLayoutText( - richTextRect, + TRect textRect( NMRLayoutManager::GetLayoutText( + richTextRect, NMRLayoutManager::EMRTextLayoutTextEditor ).TextRect() ); - + // Adjust field size so that there's room for expandable editor. richTextRect.Resize( 0, iSize.iHeight - textRect.Height() ); - + // Add title area to the required size TSize titleSize( CESMRField::MinimumSize() ); - + TSize completeFieldSize( titleSize ); completeFieldSize.iHeight += richTextRect.Height(); - + return completeFieldSize; } @@ -219,27 +219,27 @@ void CESMRAttendeeField::InternalizeL( MESMRCalEntry& aEntry ) { FUNC_LOG; - iEditor->CreateScrollBarFrameL()->SetScrollBarVisibilityL ( + iEditor->CreateScrollBarFrameL()->SetScrollBarVisibilityL ( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOff ); - + TInt fieldAttendeeCount( 0 ); - + CCalEntry& entry = aEntry.Entry ( ); RPointerArray< CCalAttendee > attendees = entry.AttendeesL ( ); RCPointerArray< CESMRNcsEmailAddressObject > addressList; - CleanupClosePushL( addressList ); + CleanupClosePushL( addressList ); for (TInt i(0); i < attendees.Count(); i++ ) { if ( attendees[i]->RoleL() == iRole ) { fieldAttendeeCount++; - + const TDesC& addr = attendees[i]->Address ( ); const TDesC& commonName = attendees[i]->CommonName ( ); - CESMRNcsEmailAddressObject* obj = + CESMRNcsEmailAddressObject* obj = CESMRNcsEmailAddressObject::NewL ( commonName, addr ); CleanupStack::PushL (obj ); addressList.AppendL( obj ); @@ -275,7 +275,7 @@ // this is needed to be re-called here, otherwise the CEikEdwin // does not get correctly instantiated with default text iEditor->FocusChanged(EDrawNow); - + UpdateSendOptionL(); } @@ -303,7 +303,7 @@ UpdateAttendeesL( *mrEntry ); HBufC* text = iEditor->GetTextInHBufL(); - + //If there is no attendees, put back the default text if( !text ) { @@ -326,7 +326,7 @@ { ++count; } - + if ( iTitle ) { ++count; @@ -368,65 +368,61 @@ { FUNC_LOG; TRect rect( Rect() ); - - TAknLayoutRect firstRowLayoutRect( + + TAknLayoutRect firstRowLayoutRect( NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ) ); TRect firstRowRect( firstRowLayoutRect.Rect() ); - + TRect secondRowRect( firstRowRect ); secondRowRect.Move( 0, firstRowRect.Height() ); - + // Layout field button if( iFieldButton ) { - TAknWindowComponentLayout buttonLayout( + TAknWindowComponentLayout buttonLayout( NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ) ); - AknLayoutUtils::LayoutControl( + AknLayoutUtils::LayoutControl( iFieldButton, firstRowRect, buttonLayout ); } - + // Layout field title - if( iTitle ) - { - TAknLayoutText labelLayout( - NMRLayoutManager::GetLayoutText( - firstRowRect, - NMRLayoutManager::EMRTextLayoutTextEditor ) ); - - iTitle->SetRect( labelLayout.TextRect() ); - - // Setting font also for the label. Failures are ignored. - iTitle->SetFont( labelLayout.Font() ); - } - + if ( iTitle ) + { + TAknTextComponentLayout editorLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutTextEditor ); + + AknLayoutUtils::LayoutLabel( iTitle, rect, editorLayout ); + } + // Layout field editor if( iEditor ) { - TAknLayoutText editorLayoutText = NMRLayoutManager::GetLayoutText( - secondRowRect, + TAknLayoutText editorLayoutText = NMRLayoutManager::GetLayoutText( + secondRowRect, NMRLayoutManager::EMRTextLayoutTextEditor ); TRect editorRect = editorLayoutText.TextRect(); // Resize height according to actual height required by edwin. editorRect.Resize( 0, iSize.iHeight - editorRect.Height() ); - + iEditor->SetRect( editorRect ); - + // Try setting font. Failures are ignored. - TRAP_IGNORE( iEditor->SetFontL( editorLayoutText.Font() ) ); + TRAP_IGNORE( iEditor->SetFontL( editorLayoutText.Font() ) ); } - + // Layout field focus if( iEditor ) { // Layouting focus for rich text editor area TRect bgRect( iEditor->Rect() ); - + // Move focus rect so that it's relative to field's position. bgRect.Move( -Position() ); - SetFocusRect( bgRect ); + SetFocusRect( bgRect ); } if ( iAacListBox && iAacListBox->IsVisible ( ) ) @@ -450,40 +446,40 @@ { return TRect( 0, 0, 0, 0 ); } - + TRect popupRect( 0, 0, 0, 0 ); - + // Let's determine Popup's maximum height - TInt requiredPopupHeight = iAacListBox->CalcHeightBasedOnNumOfItems( + TInt requiredPopupHeight = iAacListBox->CalcHeightBasedOnNumOfItems( iAacListBox->Model()->NumberOfItems() ); TInt numberOfItemsInPopUp = iAacListBox->Model()->NumberOfItems(); - + if( numberOfItemsInPopUp > KMaxAmountOfItems ) { // reducing popup item count shown at once to maximum value - requiredPopupHeight = iAacListBox->CalcHeightBasedOnNumOfItems( + requiredPopupHeight = iAacListBox->CalcHeightBasedOnNumOfItems( KMaxAmountOfItems ); } - + // Popup x-coords are always the same TInt topLeftX = iEditor->Rect().iTl.iX; TInt bottomRightX = iEditor->Rect().iBr.iX; - + // Popup y-coords need to be calculated TInt topLeftY( 0 ); TInt bottomRightY( 0 ); - - // Next we have to resolve if popup needs to be drawn below or + + // Next we have to resolve if popup needs to be drawn below or // above the cursor (space requirement) - + TRect editorLineRect; iEditor->GetLineRectL( editorLineRect ); TInt editorLineTopLeftY = editorLineRect.iTl.iY; TInt diff = iEditor->Rect().iTl.iY; TInt editorLineTopLeftYRelativeToParent = editorLineTopLeftY + diff; - + TInt listPaneHeight = Parent()->Rect().Height(); - + // Popup will be drawn above the cursor if( editorLineTopLeftYRelativeToParent > TReal( listPaneHeight / 2 ) ) { @@ -498,7 +494,7 @@ } popupRect.SetRect( topLeftX, topLeftY, bottomRightX, bottomRightY ); - + return popupRect; } @@ -528,7 +524,7 @@ // CESMRAttendeeField::OfferKeyEventL // --------------------------------------------------------------------------- // -TKeyResponse CESMRAttendeeField::OfferKeyEventL( +TKeyResponse CESMRAttendeeField::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) { @@ -536,7 +532,7 @@ TKeyResponse ret( EKeyWasNotConsumed); - if ( aKeyEvent.iCode == EKeyEnter || + if ( aKeyEvent.iCode == EKeyEnter || aKeyEvent.iScanCode == EStdKeyEnter || aKeyEvent.iCode == EKeyYes || aKeyEvent.iScanCode == EStdKeyYes ) @@ -574,7 +570,7 @@ UpdateSendOptionL(); } - // Scroll editor visible, if for example cursor is out of the + // Scroll editor visible, if for example cursor is out of the // viewable area when user enters more text. if ( iObserver && aType == EEventKey ) { @@ -586,7 +582,7 @@ TInt editorTlY = iEditor->Position().iY; TInt listHeight = iObserver->ViewableAreaRect().Height(); - + TInt cursorTopY = cursorPos.iY - lineHeight + editorTlY; TInt cursorBottomY = cursorPos.iY + lineHeight + editorTlY; @@ -616,19 +612,19 @@ iFieldButton->SetContainerWindowL( aControl ); iFieldButton->SetParent( this ); - + iTitle->SetContainerWindowL( aControl ); iTitle->SetParent( this ); - + iEditor->SetContainerWindowL( aControl ); iEditor->SetParent( this ); - + iAacListBox = CESMRNcsPopupListBox::NewL ( this, *iContactHandler ); iAacListBox->MakeVisible ( EFalse ); iAacListBox->SetListBoxObserver( this ); iAacListBox->SetObserver( this ); iAacListBox->ActivateL(); - + iButtonGroupContainer = CEikButtonGroupContainer::Current(); } @@ -641,12 +637,12 @@ { FUNC_LOG; TBool reDraw( EFalse ); - + if( iSize != aSize ) { // Let's save the required size for the iEditor iSize = aSize; - + if ( iObserver && aEdwin == iEditor ) { iObserver->ControlSizeChanged ( this ); @@ -661,8 +657,8 @@ // CESMRAttendeeField::UpdatePopupContactListL // --------------------------------------------------------------------------- // -void CESMRAttendeeField::UpdatePopupContactListL( - const TDesC& aMatchString, +void CESMRAttendeeField::UpdatePopupContactListL( + const TDesC& aMatchString, TBool /*iListAll*/) { FUNC_LOG; @@ -695,15 +691,15 @@ { if( aShow ) { - iButtonGroupContainer->SetCommandSetL( + iButtonGroupContainer->SetCommandSetL( R_CONTACT_POPUP_SOFTKEYS_SELECT_CANCEL); } else { - iButtonGroupContainer->SetCommandSetL( - R_CONTACT_EDITOR_SOFTKEYS_OPTIONS_DONE__ADD); + iButtonGroupContainer->SetCommandSetL( + R_CONTACT_EDITOR_SOFTKEYS_OPTIONS_DONE__ADD); } - + iButtonGroupContainer->DrawDeferred(); } @@ -741,7 +737,7 @@ if(iEditor->IsFocused()) NotifyEventL(EESMRCmdLongtapDetected); isUsed = ETrue; - + HandleTactileFeedbackL(); break; } @@ -760,7 +756,7 @@ FUNC_LOG; CESMRField::SetOutlineFocusL( aFocus ); - + if (aFocus) //Focus is gained on the field { if ( iEditor->HasDefaultText() ) @@ -784,7 +780,7 @@ { if( aContacts->Count() > 0 ) { - RCPointerArray ncsObjects; // codescanner::resourcenotoncleanupstack + RCPointerArray ncsObjects; // codescanner::resourcenotoncleanupstack CleanupClosePushL( ncsObjects ); for ( int i = 0; i < aContacts->Count(); i++ ) { @@ -819,7 +815,7 @@ // --------------------------------------------------------------------------- // void CESMRAttendeeField::HandleControlEventL( - CCoeControl *aControl, + CCoeControl *aControl, TCoeEvent aEventType ) { FUNC_LOG; @@ -869,7 +865,7 @@ } else if( iAacListBox && !iAacListBox->IsPopupEmpty() ) { - CESMRNcsEmailAddressObject* emailAddress = + CESMRNcsEmailAddressObject* emailAddress = iAacListBox->ReturnCurrentEmailAddressLC(); if( emailAddress ) { @@ -914,8 +910,8 @@ iAacListBox->MakeVisible( EFalse ); AknsUtils::SetAvkonSkinEnabledL( ETrue ); } - - ShowPopupCbaL( EFalse ); + + ShowPopupCbaL( EFalse ); UpdateSendOptionL(); } @@ -934,13 +930,13 @@ RBuf emailAddress; // codescanner::resourcenotoncleanupstack emailAddress.CreateL( KMaxRemoteSearchResponseLength ); emailAddress.CleanupClosePushL(); - - // Pop-up needs to be closed before executing remote lookup with + + // Pop-up needs to be closed before executing remote lookup with // query dialog, because combination of this pop-up and any query dialog - // causes background drawing problems with CEikMfne editors. + // causes background drawing problems with CEikMfne editors. // Reason unknown. ClosePopupContactListL(); - + TBool contactSelected = iContactHandler->LaunchRemoteLookupL( aSearchText, displayname, emailAddress ); @@ -977,7 +973,7 @@ if( enable ) { TPtr ptr = text->Des(); - ptr.Trim(); + ptr.Trim(); } enable = text && text->Length() > 0 && text->Compare( *iDefaultText ) != 0; delete text; @@ -1006,7 +1002,7 @@ command = EESMRCmdAttendeeOptionalDisabled; } } - + NotifyEventL( command ); } @@ -1014,21 +1010,21 @@ // CESMRAttendeeField::HandleListBoxEventL // --------------------------------------------------------------------------- // -void CESMRAttendeeField::HandleListBoxEventL( CEikListBox* aListBox, +void CESMRAttendeeField::HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ) { - if( aEventType == EEventEnterKeyPressed || aEventType == EEventItemClicked + if( aEventType == EEventEnterKeyPressed || aEventType == EEventItemClicked || aEventType == EEventItemDoubleClicked || aEventType == EEventItemSingleClicked ) { TInt newIndex = aListBox->CurrentItemIndex(); - - // if item is already highlighted and then clicked, + + // if item is already highlighted and then clicked, // it is considered that it has been selected if( newIndex == iPreviousIndex ) { HandleTactileFeedbackL(); DoPopupSelectL(); - + // Item selected, index reseted iPreviousIndex = 0; } @@ -1073,12 +1069,12 @@ { FUNC_LOG; TBool ret( EFalse ); - + if( iTitle->Rect().Contains( aPosition ) || iFieldButton->Rect().Contains( aPosition ) ) { HandleTactileFeedbackL(); - + iContactHandler->GetAddressesFromPhonebookL( this ); ret = ETrue; } @@ -1093,7 +1089,7 @@ void CESMRAttendeeField::HandleLongtapEventL( const TPoint& aPosition ) { FUNC_LOG; - + if( iTitle->Rect().Contains( aPosition ) || iFieldButton->Rect().Contains( aPosition ) ) { @@ -1109,29 +1105,29 @@ { FUNC_LOG; /* - * Compare editor attendees to existing attendees and add / remove + * Compare editor attendees to existing attendees and add / remove * when necessary. */ iEditor->CheckAddressWhenFocusLostL(); - + CCalEntry& entry( aMREntry.Entry() ); - + // Get editor's attendees - RPointerArray editorAttendees = + RPointerArray editorAttendees = iEditor->GetAddressesL(); TInt editorAttendeesCount( editorAttendees.Count() ); - + // Get existing attendees RPointerArray& existingAttendees = entry.AttendeesL(); TInt existingAttendeesCount( existingAttendees.Count() ); - + // Remove removed attendees from entry for( TInt i( existingAttendeesCount - 1 ); i >= 0 ; --i ) { // existing address and role const TDesC& address = existingAttendees[i]->Address(); CCalAttendee::TCalRole role = existingAttendees[i]->RoleL(); - + // Let's try to find them amongst editor attendees TBool matchFound( EFalse ); for( TInt j( 0 ); j < editorAttendeesCount ; ++j ) @@ -1158,13 +1154,13 @@ } } } - + // Update existing attendees count, because some attendees might // have been removed existingAttendees.Reset(); existingAttendees = entry.AttendeesL(); existingAttendeesCount = existingAttendees.Count(); - + // Add new attendees to entry for( TInt i( 0 ); i < editorAttendeesCount ; ++i ) { @@ -1172,14 +1168,14 @@ CCalAttendee* attendee = CCalAttendee::NewL( obj->EmailAddress() ); attendee->SetRoleL( iRole ); attendee->SetCommonNameL( obj->DisplayName() ); - - if ( EESMRRoleOrganizer == aMREntry.RoleL() || + + if ( EESMRRoleOrganizer == aMREntry.RoleL() || aMREntry.IsForwardedL() ) { attendee->SetResponseRequested( ETrue ); } - - TBool isNewAttendee( ETrue ); + + TBool isNewAttendee( ETrue ); for( TInt i( 0 ); i < existingAttendeesCount; ++i ) { if( existingAttendees[i]->Address().Compare( attendee->Address() ) == 0 ) @@ -1193,7 +1189,7 @@ } } // If this is new attendee, let's add it to entry - if( isNewAttendee ) + if( isNewAttendee ) { entry.AddAttendeeL( attendee ); } diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncseditor.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncseditor.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncseditor.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -459,6 +459,10 @@ paraFormatMask.SetAttrib( EAttLineSpacing ); paraFormat->iHorizontalAlignment = CParaFormat::ELeftAlign; + if ( AknLayoutUtils::LayoutMirrored() ) + { + paraFormat->iHorizontalAlignment = CParaFormat::ERightAlign; + } paraFormatMask.SetAttrib( EAttAlignment ); TCharFormat charFormat; @@ -472,10 +476,10 @@ formatMask.SetAttrib(EAttFontHighlightColor); formatMask.SetAttrib( EAttColor ); - charFormat.iFontPresentation.iTextColor = + charFormat.iFontPresentation.iTextColor = NMRColorManager::Color( NMRColorManager::EMRMainAreaTextColor ); - charFormat.iFontPresentation.iHighlightColor = + charFormat.iFontPresentation.iHighlightColor = NMRColorManager::Color( NMRColorManager::EMRCutCopyPasteHighlightColor ); CParaFormatLayer* paraFormatLayer = diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrresponsefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrresponsefield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrresponsefield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -157,13 +157,21 @@ TInt movement = choiceLayoutRect.Rect().Height(); rect.Move( 0, movement * ( i - 1 ) ); + TInt leftMargin = choiceLayoutRect.Rect().iTl.iX; + TInt rightMargin = choiceLayoutRect.Rect().iBr.iX; + if ( AknLayoutUtils::LayoutMirrored() ) + { + leftMargin -= parentRect.iTl.iX; + rightMargin -= parentRect.iTl.iX; + } + AknLayoutUtils::LayoutControl( ControlItem( i - 1 ), rect, choiceLayoutRect.Color().Value(), - choiceLayoutRect.Rect().iTl.iX, + leftMargin, 0, - choiceLayoutRect.Rect().iBr.iX, + rightMargin, choiceLayoutRect.Rect().iBr.iY, choiceLayoutRect.Rect().Width(), choiceLayoutRect.Rect().Height() ); @@ -525,14 +533,21 @@ { FUNC_LOG; TBool isUsed( EFalse ); - if ( aCommand == EAknSoftkeySelect ) + + switch ( aCommand ) { - ItemSelectedL(); - isUsed = ETrue; - } - else - { - isUsed = CESMRField::ExecuteGenericCommandL( aCommand ); + case EAknSoftkeySelect: + case EAknCmdOpen: + { + ItemSelectedL(); + isUsed = ETrue; + break; + } + default: + { + isUsed = CESMRField::ExecuteGenericCommandL( aCommand ); + break; + } } return isUsed; diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerattendeesfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerattendeesfield.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrviewerattendeesfield.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -358,23 +358,36 @@ // TSize CESMRViewerAttendeesField::MinimumSize() { - // Parent rect will be list area later --> no need to calculate it manually. - TRect parentRect = Parent()->Rect(); - TRect contentRect = NMRLayoutManager::GetLayoutRect( - parentRect, NMRLayoutManager::EMRLayoutListArea ).Rect(); - // We have two lines; title and richtextviewer. - TRect fieldRect = - NMRLayoutManager::GetFieldLayoutRect( contentRect, 2 ).Rect(); - // Get row size for second row (richtext viewer). - TRect rowRect = - NMRLayoutManager::GetFieldRowLayoutRect( fieldRect, 2 ).Rect(); - // Get size for default 1 line editor. - TRect viewerRect = NMRLayoutManager::GetLayoutText( - rowRect, - NMRLayoutManager::EMRTextLayoutMultiRowTextEditor ).TextRect(); - // Adjust field size so that there's room for expandable editor. - fieldRect.Resize( 0, iExpandedSize.iHeight - viewerRect.Height() ); - return fieldRect.Size(); + // Minimum size -> Height: TitleRow + Editor size + Margin + // Width: Parent's Width + // (so the content pane that holds all the fields) + TRect rect( Rect() ); + TAknLayoutRect row1LayoutRect = + NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); + TInt titleHeight = row1LayoutRect.Rect().Height(); + + // Add title field height + TInt totalHeight = titleHeight; + + TAknLayoutRect row2LayoutRect = + NMRLayoutManager::GetFieldRowLayoutRect( rect, 2 ); + TInt editorRowHeight = row2LayoutRect.Rect().Height(); + + TAknTextComponentLayout editorLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutMultiRowTextEditor ); + + // Editor height from Layout data + TInt editorHeight = editorLayout.H(); + // Margin is the outer row's height - editor's layout height + TInt margin = editorRowHeight - editorHeight; + // Parent has the width + TInt width( Parent()->Size().iWidth ); + // Count the total height of the attendee field. + // iExpandedSize is used because the Editor size might be something else + // than what is stated in Layout data. + totalHeight += iExpandedSize.iHeight + margin; + return TSize( width, totalHeight ); } // --------------------------------------------------------------------------- diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/src/cesmrview.cpp --- a/meetingrequest/mrgui/src/cesmrview.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/src/cesmrview.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -679,8 +679,16 @@ // List panes default rect needs to be modified due to // scrollbar and calendar indication stripe - // Remove stripe width from list pane width - listareaRect.iTl.iX += iStripeRect.Width(); + if ( AknLayoutUtils::LayoutMirrored() ) + { + // Remove stripe width from list pane width when align is R to L + listareaRect.iBr.iX -= iStripeRect.Width(); + } + else + { + // Remove stripe width from list pane width when align is L to R + listareaRect.iTl.iX += iStripeRect.Width(); + } if( iScrollBar ) { @@ -692,9 +700,6 @@ scrollareaRect.SetHeight( listareaRect.Height() ); iScrollBar->SetRect( scrollareaRect ); - - // Remove scroll bar width from list area's width - listareaRect.iBr.iX -= iScrollBar->Rect().Width(); } iListPane->SetRect( listareaRect ); @@ -752,9 +757,16 @@ NMRLayoutManager::EMRLayoutListArea ); TRect listareaRect( listareaLayoutRect.Rect() ); - // The listPane's area should be: - // X: Should subtract the width of stripe - listareaRect.iTl.iX += iStripeRect.Width(); + if ( AknLayoutUtils::LayoutMirrored() ) + { + // Remove stripe width from list pane width when align is R to L + listareaRect.iBr.iX -= iStripeRect.Width(); + } + else + { + // Remove stripe width from list pane width when align is L to R + listareaRect.iTl.iX += iStripeRect.Width(); + } iListPane->SetRect( listareaRect ); @@ -1140,16 +1152,23 @@ { TRect containerRect( ContainerRect() ); - TAknLayoutRect naviArrowLeftLayoutRect = - NMRLayoutManager::GetLayoutRect( containerRect, - NMRLayoutManager::EMRLayoutMRNaviArrowLeft ); - TRect naviArrowLeftRect = naviArrowLeftLayoutRect.Rect(); - - TAknLayoutRect naviArrowRightLayoutRect = - NMRLayoutManager::GetLayoutRect( containerRect, - NMRLayoutManager::EMRLayoutMRNaviArrowRight ); - TRect naviArrowRightRect = naviArrowRightLayoutRect.Rect(); - + + TAknLayoutRect naviArrowLeftLayoutRect = + NMRLayoutManager::GetLayoutRect( containerRect, + NMRLayoutManager::EMRLayoutMRNaviArrowLeft ); + TRect naviArrowLeftRect = naviArrowLeftLayoutRect.Rect(); + + TAknLayoutRect naviArrowRightLayoutRect = + NMRLayoutManager::GetLayoutRect( containerRect, + NMRLayoutManager::EMRLayoutMRNaviArrowRight ); + TRect naviArrowRightRect = naviArrowRightLayoutRect.Rect(); + //Exchange the narrows' rect when LayoutMirrored + if ( AknLayoutUtils::LayoutMirrored() ) + { + naviArrowLeftRect = naviArrowRightLayoutRect.Rect(); + naviArrowRightRect= naviArrowLeftLayoutRect.Rect(); + } + if( Layout_Meta_Data::IsLandscapeOrientation() ) { naviArrowLeftRect.Move( iStripeRect.Width(), 0 ); diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrgui/src/cmrlistpane.cpp --- a/meetingrequest/mrgui/src/cmrlistpane.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrgui/src/cmrlistpane.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -317,7 +317,7 @@ response = FocusedField()->OfferKeyEventL( aKeyEvent, aType ); if ( aType == EEventKey - && response == EKeyWasNotConsumed ) + && response == EKeyWasNotConsumed ) { // Check if the focus should be changed switch ( aKeyEvent.iScanCode ) @@ -340,6 +340,11 @@ iClickedField = NULL; break; } + case EStdKeyEnter: + { + FocusedField()->ExecuteGenericCommandL( EAknCmdOpen ); + break; + } default: { break; diff -r 67369d1b217f -r 6b8f3b30d0ec meetingrequest/mrservices/src/cesmrconflictchecker.cpp --- a/meetingrequest/mrservices/src/cesmrconflictchecker.cpp Tue May 25 12:23:16 2010 +0300 +++ b/meetingrequest/mrservices/src/cesmrconflictchecker.cpp Wed Jun 09 09:22:57 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -12,7 +12,7 @@ * Contributors: * * Description : ESMR conflict checker implementation -* Version : %version: e002sa33#7 % +* Version : %version: e002sa33#9 % * */ @@ -29,6 +29,7 @@ #include #include #include +#include /// Unnamed namespace for local definitions namespace { // codescanner::namespace @@ -94,7 +95,7 @@ CCalInstanceView* aInstanceView ) { FUNC_LOG; - const CalCommon::TCalViewFilter instanceFilter = + const CalCommon::TCalViewFilter instanceFilter = CalCommon::EIncludeAppts; TDateTime start = aStart.DateTime(); @@ -110,11 +111,11 @@ end.SetSecond( KZero ); end.SetMicroSecond( KZero ); TTime endTime = end; - - if ( TTime(start) == endTime || + + if ( TTime(start) == endTime || endTime < aEnd ) { - + endTime += TTimeIntervalDays(1); end = endTime.DateTime(); } @@ -166,17 +167,17 @@ TTime startTimeLocal = aStartTime.TimeLocalL(); TTime endTimeLocal = aEndTime.TimeLocalL(); - + while( index < instanceArray.Count() ) { TBool conflictingInstance( ETrue ); CCalInstance* instance = instanceArray[index]; - + TTime entryStartTimeLocal = instance->StartTimeL().TimeLocalL(); - TTime entryEndTimeLocal = instance->EndTimeL().TimeLocalL(); + TTime entryEndTimeLocal = instance->EndTimeL().TimeLocalL(); TPtrC8 uid( instance->Entry().UidL() ); - if ( ERemoveSameUID == aFilterType && + if ( ERemoveSameUID == aFilterType && 0 == aUid.CompareF(uid) ) { conflictingInstance = EFalse; @@ -201,14 +202,14 @@ } else { - conflictingInstance = EFalse; + conflictingInstance = EFalse; } - + // Remove non-conflicting instance from instance array if ( !conflictingInstance ) { instanceArray.Remove(index); - delete instance; + delete instance; instance = NULL; } } @@ -226,22 +227,479 @@ RPointerArray& aConflictingEntries ) { FUNC_LOG; - TInt instanceCount( instanceArray.Count() ); + TInt instanceCount( instanceArray.Count() ); for ( TInt i(0); i < instanceCount; ++i ) - { + { CCalEntry& parent( instanceArray[i]->Entry() ); - CCalEntry* entry = ESMRHelper::CopyEntryLC( parent, + CCalEntry* entry = ESMRHelper::CopyEntryLC( parent, parent.MethodL(), ESMRHelper::ECopyFull ); - + entry->SetStartAndEndTimeL( instanceArray[i]->StartTimeL(), instanceArray[i]->EndTimeL() ); - User::LeaveIfError( aConflictingEntries.Append( entry ) ); + aConflictingEntries.AppendL( entry ); CleanupStack::Pop( entry ); } } +/** + * Checks if entry is repeating. + * @return ETrue if entry is repeating + */ +TBool IsRepeatingMeetingL( const CCalEntry& aEntry, + MESMRCalDbMgr& aDb ) + { + FUNC_LOG; + + TBool recurrent( EFalse ); + + CCalInstance* instance = aDb.FindInstanceL( aEntry ); + + if ( instance ) + { + CleanupStack::PushL( instance ); + recurrent = ESMREntryHelper::IsRepeatingMeetingL( instance->Entry() ); + CleanupStack::PopAndDestroy( instance ); + } + else + { + recurrent = ESMREntryHelper::IsRepeatingMeetingL( aEntry ); + } + + return recurrent; + } + +/** + * Finds conflicts for entry + */ +void FindConflictsForEntryL( + const CCalEntry& aEntry, + RPointerArray< CCalInstance >& aInstances, + MESMRCalDbMgr& aDb ) + { + FUNC_LOG; + + // Get instance views of all calendar + RPointerArray allCalenInstanceView = + aDb.NormalDbAllCalenInstanceView(); + + // Check if there is any conflict in each calendar + for( TInt i = 0; i < allCalenInstanceView.Count(); i++ ) + { + CalCommon::TCalTimeRange timeRange = + ResolveFetchTimeRangeL( + aEntry.StartTimeL().TimeUtcL(), + aEntry.EndTimeL().TimeUtcL(), + allCalenInstanceView[i] ); + + allCalenInstanceView[i]->FindInstanceL( + aInstances, + CalCommon::EIncludeAppts, + timeRange ); + } + + RemoveAndDeleteNonConflictingInstancesL( + aInstances, + aEntry.StartTimeL(), + aEntry.EndTimeL(), + aEntry.UidL(), + ERemoveSameUID ); + } + +/** + * Moves instances from an array to another. + */ +void MoveInstancesL( + RPointerArray< CCalInstance >& aFrom, + RPointerArray< CCalInstance >& aTo ) + { + FUNC_LOG; + + aTo.ReserveL( aTo.Count() + aFrom.Count() ); + while ( aFrom.Count() ) + { + aTo.AppendL( aFrom[ 0 ] ); + aFrom.Remove( 0 ); + } + } + +/** + * Finds conflicts based on Daily recurrence. + * + */ +void FindConflictsForDailyRRuleL( + CCalEntry& aEntry, + RPointerArray< CCalInstance >& aInstances, + MESMRCalDbMgr& aDb, + TBool aFindAllConflicts ) + { + FUNC_LOG; + + TCalRRule rRule; + aEntry.GetRRuleL( rRule ); + RCPointerArray< CCalInstance > tmpInstanceArray; + CleanupClosePushL( tmpInstanceArray ); + + // Entry start and end time + TTime start( aEntry.StartTimeL().TimeUtcL() ); + TTime end( aEntry.EndTimeL().TimeUtcL() ); + + if ( rRule.Count() ) + { + for ( TInt i = 0; i < rRule.Count(); ++i ) + { + // Set each occurence start and end time on entry + TTimeIntervalDays interval( i * rRule.Interval() ); + TCalTime startTime; + startTime.SetTimeUtcL( start + interval ); + TCalTime endTime; + endTime.SetTimeUtcL( end + interval ); + aEntry.SetStartAndEndTimeL( + startTime, + endTime ); + + // Find conflicts for this occurence + FindConflictsForEntryL( aEntry, tmpInstanceArray, aDb ); + + if ( tmpInstanceArray.Count() ) + { + MoveInstancesL( tmpInstanceArray, aInstances ); + if ( !aFindAllConflicts ) + { + break; + } + } + } + } + else if ( rRule.Until().TimeUtcL() != Time::NullTTime() ) + { + TTime until( rRule.Until().TimeUtcL() ); + TTime start( aEntry.StartTimeL().TimeUtcL() ); + TTime end( aEntry.EndTimeL().TimeUtcL() ); + TTimeIntervalDays interval( rRule.Interval() ); + + // Loop while start time is before until time + while ( start <= until ) + { + // Set start and end time for occurence + TCalTime startTime; + startTime.SetTimeUtcL( start ); + TCalTime endTime; + endTime.SetTimeUtcL( end ); + aEntry.SetStartAndEndTimeL( + startTime, + endTime ); + + // Find conflicts + FindConflictsForEntryL( aEntry, tmpInstanceArray, aDb ); + + if ( tmpInstanceArray.Count() ) + { + MoveInstancesL( tmpInstanceArray, aInstances ); + if ( !aFindAllConflicts ) + { + break; + } + } + + // Move to next occurence + start += interval; + end += interval; + } + } + + CleanupStack::PopAndDestroy( &tmpInstanceArray ); + } + +/** + * Finds conflicts based on Weekly recurrence. + */ +void FindConflictsForWeeklyRRuleL( + CCalEntry& aEntry, + RPointerArray< CCalInstance >& aInstances, + MESMRCalDbMgr& aDb, + TBool aFindAllConflicts ) + { + FUNC_LOG; + + TCalRRule rRule; + aEntry.GetRRuleL( rRule ); + + // Tmp array for conflic instances + RCPointerArray< CCalInstance > tmpInstanceArray; + CleanupClosePushL( tmpInstanceArray ); + + // Array of recurrence days + RArray< TDay > days; + CleanupClosePushL( days ); + rRule.GetByDayL( days ); + + // Recurrence start time + TTime start( aEntry.StartTimeL().TimeUtcL() ); + // Recurrence end time + TTime end( aEntry.EndTimeL().TimeUtcL() ); + const TTimeIntervalDays KWeek( 7 ); + TDay startDayOfWeek( start.DayNoInWeek() ); + + // Instance duration + TTimeIntervalMinutes duration; + end.MinutesFrom( start, duration ); + + if ( rRule.Count() ) + { + for ( TInt i = 0; i < rRule.Count(); ++i ) + { + // Calculate weekly start time + TTimeIntervalDays interval( i* KWeek.Int() ); + TDateTime date( TTime( start + interval ).DateTime() ); + date.SetDay( date.Day() - startDayOfWeek ); + TTime weekStartTime( date ); + + for ( TInt j = 0; j < days.Count(); ++j ) + { + // Iterate through days of week + TTime entryStartTime( weekStartTime + TTimeIntervalDays( days[ j ] ) ); + + if ( start <= entryStartTime ) + { + // Start time is in recurrence range + // Calcualte end time + TCalTime startCalTime; + startCalTime.SetTimeUtcL( entryStartTime ); + TCalTime endCalTime; + endCalTime.SetTimeUtcL( entryStartTime + duration ); + aEntry.SetStartAndEndTimeL( startCalTime, endCalTime ); + + // Find conflicts of for entry and move them to result array + FindConflictsForEntryL( aEntry, tmpInstanceArray, aDb ); + + if ( tmpInstanceArray.Count() ) + { + MoveInstancesL( tmpInstanceArray, aInstances ); + if ( !aFindAllConflicts ) + { + break; + } + } + } + } + + if ( !aFindAllConflicts && aInstances.Count() ) + { + break; + } + } + } + else if ( rRule.Until().TimeUtcL() != Time::NullTTime() ) + { + TDateTime date( start.DateTime() ); + date.SetDay( date.Day() - startDayOfWeek ); + TTime weekStartTime( date ); + TTime until( rRule.Until().TimeUtcL() ); + + while ( weekStartTime < until ) + { + for ( TInt j = 0; j < days.Count(); ++j ) + { + // Iterate through days of week + TTime entryStartTime( weekStartTime + TTimeIntervalDays( days[ j ] ) ); + + if ( start <= entryStartTime ) + { + // Start time is in recurrence range + // Calculate end time + TCalTime startCalTime; + startCalTime.SetTimeUtcL( entryStartTime ); + TCalTime endCalTime; + endCalTime.SetTimeUtcL( entryStartTime + duration ); + aEntry.SetStartAndEndTimeL( startCalTime, endCalTime ); + + // Find conflicts of for entry and move them to result array + FindConflictsForEntryL( aEntry, tmpInstanceArray, aDb ); + + if ( tmpInstanceArray.Count() ) + { + MoveInstancesL( tmpInstanceArray, aInstances ); + if ( !aFindAllConflicts ) + { + break; + } + } + } + } + + if ( !aFindAllConflicts && aInstances.Count() ) + { + break; + } + else + { + weekStartTime += KWeek; + } + } + } + + CleanupStack::PopAndDestroy( &days ); + CleanupStack::PopAndDestroy( &tmpInstanceArray ); + } + +/** + * Finds conflict for recurrent entry + */ +void FindConflictsForRepeatingMeetingL( + const CCalEntry& aEntry, + RPointerArray< CCalInstance >& aInstances, + MESMRCalDbMgr& aDb, + TBool aFindAllConflicts ) + { + FUNC_LOG; + + CCalInstance* instance = aDb.FindInstanceL( aEntry ); + + if ( instance ) // Instance is stored + { + CleanupStack::PushL( instance ); + RCPointerArray< CCalInstance > tmpInstanceArray; + CleanupClosePushL( tmpInstanceArray ); + + CCalEntry& parent = instance->Entry(); + CCalInstanceView* instanceView = aDb.InstanceViewL( parent ); + CCalInstanceIterator* iterator = instanceView->FindInstanceByUidL( + parent.UidL(), + parent.StartTimeL() ); + CleanupStack::PushL( iterator ); + CCalEntry* entry = ESMRHelper::CopyEntryLC( + parent, + parent.MethodL(), + ESMRHelper::ECopyFull ); + + while ( iterator->HasMore() ) + { + CCalInstance* next = iterator->NextL(); + CleanupStack::PushL( next ); + entry->SetStartAndEndTimeL( next->StartTimeL(), next->EndTimeL() ); + CleanupStack::PopAndDestroy( next ); + FindConflictsForEntryL( *entry, + tmpInstanceArray, + aDb ); + + if ( tmpInstanceArray.Count() ) + { + MoveInstancesL( tmpInstanceArray, aInstances ); + + if ( !aFindAllConflicts ) + { + break; + } + } + } + + CleanupStack::PopAndDestroy( entry ); + + CleanupStack::PopAndDestroy( iterator ); + + if ( aFindAllConflicts + || !aInstances.Count() ) + { + // Find conflicts also for parent entry + FindConflictsForEntryL( parent, tmpInstanceArray, aDb ); + MoveInstancesL( tmpInstanceArray, aInstances ); + } + + CleanupStack::PopAndDestroy( &tmpInstanceArray ); + CleanupStack::PopAndDestroy( instance ); + } + else // Entry is not stored yet + { + CCalEntry* entry = ESMRHelper::CopyEntryLC( + aEntry, + aEntry.MethodL(), + ESMRHelper::ECopyFull ); + + TCalRRule rRule; + if ( aEntry.GetRRuleL( rRule ) ) + { + switch ( rRule.Type() ) + { + case TCalRRule::EDaily: + { + FindConflictsForDailyRRuleL( + *entry, + aInstances, + aDb, + aFindAllConflicts ); + break; + } + case TCalRRule::EWeekly: + { + FindConflictsForWeeklyRRuleL( + *entry, + aInstances, + aDb, + aFindAllConflicts ); + break; + } + default: + break; + } + } + else + { + // Entry has RDates set + RCPointerArray< CCalInstance > tmpInstanceArray; + CleanupClosePushL( tmpInstanceArray ); + + RArray< TCalTime > rDates; + CleanupClosePushL( rDates ); + aEntry.GetRDatesL( rDates ); + + // Get entry start time, end time and duration + TTime start( aEntry.StartTimeL().TimeUtcL() ); + TTime end( aEntry.EndTimeL().TimeUtcL() ); + TTimeIntervalMinutes duration(0); + end.MinutesFrom( + start, + duration ); + + for ( TInt i = 0; i < rDates.Count(); ++i ) + { + // Set start and end times for entry + TCalTime startTime( rDates[ i ] ); + TCalTime endTime; + endTime.SetTimeUtcL( startTime.TimeUtcL() + duration ); + entry->SetStartAndEndTimeL( startTime, endTime ); + + // Find conflicts + FindConflictsForEntryL( *entry, tmpInstanceArray, aDb ); + + if ( tmpInstanceArray.Count() ) + { + MoveInstancesL( tmpInstanceArray, aInstances ); + if ( !aFindAllConflicts ) + { + break; + } + } + } + + CleanupStack::PopAndDestroy( &rDates ); + + if ( aFindAllConflicts + || aInstances.Count() == 0 ) + { + // Find conflicts for parent entry + FindConflictsForEntryL( aEntry, tmpInstanceArray, aDb ); + MoveInstancesL( tmpInstanceArray, aInstances ); + } + + CleanupStack::PopAndDestroy( &tmpInstanceArray ); + } + + CleanupStack::PopAndDestroy( entry ); + } + } + } // namespace // ======== MEMBER FUNCTIONS ======== @@ -307,38 +765,27 @@ #endif - // Get instance views of all calendar - RPointerArray allCalenInstanceView = - iDbMgr.NormalDbAllCalenInstanceView(); - RCPointerArray instanceArray; CleanupClosePushL( instanceArray ); - - // Check if there is any conflict in each calendar - for( TInt i = 0; i < allCalenInstanceView.Count(); i++ ) + + if ( IsRepeatingMeetingL( aEntry, iDbMgr ) ) { - CalCommon::TCalTimeRange timeRange = - ResolveFetchTimeRangeL( - aEntry.StartTimeL().TimeUtcL(), - aEntry.EndTimeL().TimeUtcL(), - allCalenInstanceView[i] ); - - allCalenInstanceView[i]->FindInstanceL( instanceArray, - CalCommon::EIncludeAppts, - timeRange ); - + FindConflictsForRepeatingMeetingL( + aEntry, + instanceArray, + iDbMgr, + EFalse ); + } + else + { + FindConflictsForEntryL( + aEntry, + instanceArray, + iDbMgr ); + } - } - - RemoveAndDeleteNonConflictingInstancesL( - instanceArray, - aEntry.StartTimeL(), - aEntry.EndTimeL(), - aEntry.UidL(), - ERemoveSameUID ); - CreateEntriesFromInstancesL( instanceArray, aConflicts ); - CleanupStack::PopAndDestroy(); // instanceArray + CleanupStack::PopAndDestroy( &instanceArray); } // --------------------------------------------------------------------------- @@ -346,10 +793,10 @@ // --------------------------------------------------------------------------- // EXPORT_C void CESMRConflictChecker::FindInstancesForEntryL( - TTime aStart, + TTime aStart, TTime aEnd, const CCalEntry& aEntry, - TCalCollectionId aColId, + TCalCollectionId aColId, RPointerArray& aInstances ) { FUNC_LOG; @@ -359,17 +806,17 @@ CleanupClosePushL( instanceArray ); // First we need the parent entry of the series ... - CCalInstance* entryInstance = instanceView->FindInstanceL( - aEntry.LocalUidL(), + CCalInstance* entryInstance = instanceView->FindInstanceL( + aEntry.LocalUidL(), aEntry.StartTimeL() ); //Ownership gained CleanupStack::PushL( entryInstance ); - CCalInstance* parentEntryInstance = instanceView->FindInstanceL( - aEntry.LocalUidL(), + CCalInstance* parentEntryInstance = instanceView->FindInstanceL( + aEntry.LocalUidL(), entryInstance->Entry().StartTimeL() ); CleanupStack::PopAndDestroy( entryInstance ); CleanupStack::PushL( parentEntryInstance ); - + // ... And the parent entry instances start time TCalTime firstIntanceStartTime( parentEntryInstance->StartTimeL() ); @@ -378,53 +825,53 @@ // Let's get all instances which have same uid and collection id // as the aEntry to an iterator. - CCalInstanceIterator* instanceIterator = instanceView->FindInstanceByUidL( - aColId, - aEntry.UidL(), + CCalInstanceIterator* instanceIterator = instanceView->FindInstanceByUidL( + aColId, + aEntry.UidL(), firstIntanceStartTime ); CleanupStack::PushL( instanceIterator ); - + TInt count( instanceIterator->Count() ); - + for( TInt i = 0; i < count; ++i ) { CCalInstance* instance = NULL; TRAPD( err, instance = instanceIterator->NextL() ); //Ownership gained if( !err && instance ) { - instanceArray.Append( instance ); + instanceArray.Append( instance ); } } CleanupStack::PopAndDestroy( instanceIterator ); - // Now the instanceArray has all instances of the aEntry, + // Now the instanceArray has all instances of the aEntry, // let's remove this instance == instance of aEntry, from the array TInt i( 0 ); while( i < instanceArray.Count() ) { CCalInstance* instance = instanceArray[i]; - - TBool thisInstance( - instance->StartTimeL().TimeLocalL() == + + TBool thisInstance( + instance->StartTimeL().TimeLocalL() == aEntry.StartTimeL().TimeLocalL() && - instance->EndTimeL().TimeLocalL() == + instance->EndTimeL().TimeLocalL() == aEntry.EndTimeL().TimeLocalL() ); - + if( thisInstance ) { delete instance; - instanceArray.Remove( i ); + instanceArray.Remove( i ); } else { ++i; } } - + TCalTime start; start.SetTimeLocalL( aStart ); - + TCalTime end; end.SetTimeLocalL( aEnd ); @@ -434,10 +881,10 @@ end, aEntry.UidL(), EIncludeSameUID ); - + CreateEntriesFromInstancesL( instanceArray, aInstances ); - - CleanupStack::PopAndDestroy(); // instanceArray + + CleanupStack::PopAndDestroy(); // instanceArray } // EOF