diff -r d189ee25cf9d -r 3533d4323edc meetingrequest/mrmbutilsextension/src/cmrmbutilssettings.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrmbutilsextension/src/cmrmbutilssettings.cpp Wed Sep 01 12:28:57 2010 +0100 @@ -0,0 +1,291 @@ +/* +* 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 "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: MBUtils settings implementation +* +*/ + +// ---------------------------------------------------------------------------- +// INCLUDE FILES +// ---------------------------------------------------------------------------- +// +#include "cmrmbutilssettings.h" +#include "mrmbutilsextensioncrkeys.h" +#include "cfsmailbox.h" +#include "cfsmailclient.h" +#include "emailtrace.h" + +#include +#include +#include + +namespace { // codescanner::namespace +// Length for CRC buffer +const TInt KCRCBufferLen(32); +} + +// ---------------------------------------------------------------------------- +// MEMBER FUNCTIONS +// ---------------------------------------------------------------------------- +// + +// ---------------------------------------------------------------------------- +// CMRMBUtilsSettings::CMRUtilsSettingsMgr +// +// Constructor. +// ---------------------------------------------------------------------------- +// +CMRMBUtilsSettings::CMRMBUtilsSettings( + CFSMailClient& aMailClient ) +: iMailClient( aMailClient ) + { + // No implementation + } + +// ---------------------------------------------------------------------------- +// CMRUtilsSettingsMgr::~CMRUtilsSettingsMgr +// +// Destructor. +// ---------------------------------------------------------------------------- +// +CMRMBUtilsSettings::~CMRMBUtilsSettings() + { + // No implementation + } + +// ---------------------------------------------------------------------------- +// CMRMBUtilsSettings::NewL +// ---------------------------------------------------------------------------- +// +CMRMBUtilsSettings* CMRMBUtilsSettings::NewL( + CFSMailClient& aMailClient ) + { + FUNC_LOG; + + CMRMBUtilsSettings* self = + new( ELeave ) CMRMBUtilsSettings( aMailClient ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ---------------------------------------------------------------------------- +// CMRUtilsSettingsMgr::ConstructL +// ---------------------------------------------------------------------------- +// +void CMRMBUtilsSettings::ConstructL() + { + FUNC_LOG; + + // Not yet implementation + } + +// ---------------------------------------------------------------------------- +// CMRUtilsSettingsMgr::ConstructL +// ---------------------------------------------------------------------------- +// +void CMRMBUtilsSettings::SetDefaultMailboxSettingL( + TInt aId ) + { + FUNC_LOG; + + RCPointerArray mailBoxes; + CleanupClosePushL( mailBoxes ); + + TFSMailMsgId msgId; + iMailClient.ListMailBoxes( msgId, mailBoxes ); + + TBool mailboxFound( EFalse ); + TInt mailboxCount( mailBoxes.Count() ); + for (TInt i(0); i < mailboxCount && !mailboxFound; ++i ) + { + CFSMailBox* mailbox( mailBoxes[i] ); + TFSMailMsgId mailboxId( mailbox->GetId() ); + + TBuf crcBuffer; + crcBuffer.AppendNum( mailboxId.PluginId().iUid ); + crcBuffer.AppendNum( mailboxId.Id() ); + + TUint32 cmailMailboxCrc( 0 ); + Mem::Crc32( cmailMailboxCrc, + crcBuffer.Ptr(), + crcBuffer.Size() ); + + if ( cmailMailboxCrc == aId ) + { + SetDefaultCMailMRMailBoxL( + aId, + mailboxId.PluginId(), + mailboxId.Id() ); + + mailboxFound = ETrue; + } + } + + if ( !mailboxFound ) + { + // CMAIL mailbox not found --> Reset the setting + SetDefaultCMailMRMailBoxL( + KMRUICMailInvalidIntValue, + TUid::Uid( KMRUICMailInvalidIntValue ), + KMRUICMailInvalidIntValue ); + } + + // mailBoxes + CleanupStack::PopAndDestroy(); // codescanner::cleanup + } + +// ---------------------------------------------------------------------------- +// CMRUtilsSettingsMgr::ConstructL +// ---------------------------------------------------------------------------- +// +void CMRMBUtilsSettings::GetDefaultMailboxSettingsL( TInt& aId ) + { + FUNC_LOG; + + TUid mailboxUID; + TInt mailboxId; + + GetDefaultCMailMRMailBoxL( + aId, + mailboxUID, + mailboxId ); + + RCPointerArray mailBoxes; + CleanupClosePushL( mailBoxes ); + + TFSMailMsgId msgId; + iMailClient.ListMailBoxes( msgId, mailBoxes ); + + TBool mailboxFound( EFalse ); + TInt mailboxCount( mailBoxes.Count() ); + for (TInt i(0); i < mailboxCount && !mailboxFound; ++i ) + { + CFSMailBox* mailbox( mailBoxes[i] ); + TFSMailMsgId mailboxId( mailbox->GetId() ); + + TBuf crcBuffer; + crcBuffer.AppendNum( mailboxId.PluginId().iUid ); + crcBuffer.AppendNum( mailboxId.Id() ); + + TUint32 cmailMailboxCrc( 0 ); + Mem::Crc32( cmailMailboxCrc, + crcBuffer.Ptr(), + crcBuffer.Size() ); + + if ( cmailMailboxCrc == aId ) + { + mailboxFound = ETrue; + } + } + + if ( !mailboxFound ) + { + aId = KMRUICMailInvalidIntValue; + } + + // mailBoxes + CleanupStack::PopAndDestroy(); // codescanner::cleanup + } + +// ---------------------------------------------------------------------------- +// CMRUtilsSettingsMgr::GetDefaultCMailMRMailBoxL +// ---------------------------------------------------------------------------- +// +TInt CMRMBUtilsSettings::GetDefaultCMailMRMailBoxL( + TInt& aDefaultBox, + TUid& aMailboxPluginUID, + TInt& aMailboxId ) + { + FUNC_LOG; + + TInt retValue( KErrNotFound ); + + TInt defaultBox( KMRUICMailInvalidIntValue ); + TInt mailboxPluginUID( KMRUICMailInvalidIntValue ); + TInt mailboxId( KMRUICMailInvalidIntValue ); + + aDefaultBox = defaultBox; + aMailboxPluginUID = TUid::Uid( mailboxPluginUID ); + aMailboxId = mailboxId; + + // Create central repository + CRepository* cenRep = + CRepository::NewLC( KCRUidMRDefaultCMailMRMailbox ); + + // Get default meeting request mailbox id from CentRep + TInt err = cenRep->Get( KMRUIS60DefMailbox, defaultBox ); + if ( KErrNone == err ) + { + err = cenRep->Get( KMRUICMailMailboxUID, mailboxPluginUID ); + if ( KErrNone == err ) + { + err = cenRep->Get( KMRUICMailMailboxID, mailboxId ); + } + } + + // If some other error than KErrNotFound Leave + if ( err != KErrNotFound ) + { + // KErrNone won't leave + User::LeaveIfError( err ); + } + + CleanupStack::PopAndDestroy( cenRep ); + + if ( KErrNone == err ) + { + aDefaultBox = defaultBox; + aMailboxPluginUID = TUid::Uid( mailboxPluginUID ); + aMailboxId = mailboxId; + } + + return retValue; + } + +// ---------------------------------------------------------------------------- +// CMRUtilsSettingsMgr::SetDefaultCMailMRMailBoxL +// ---------------------------------------------------------------------------- +// +TInt CMRMBUtilsSettings::SetDefaultCMailMRMailBoxL( + TInt aDefaultBox, + TUid aMailboxPluginUID, + TInt aMailboxId ) + { + FUNC_LOG; + + // Create central repository + CRepository* cenRep = + CRepository::NewLC( KCRUidMRDefaultCMailMRMailbox ); + + TInt err = cenRep->Set( KMRUIS60DefMailbox, aDefaultBox ); + + if ( err == KErrNone ) + { + TInt uid( static_cast(aMailboxPluginUID.iUid ) ); + err = cenRep->Set( KMRUICMailMailboxUID, uid ); + if ( err == KErrNone ) + { + err = cenRep->Set( KMRUICMailMailboxID, aMailboxId ); + } + } + + CleanupStack::PopAndDestroy( cenRep ); + + User::LeaveIfError( err ); + + return err; + } + +// End of file