diff -r 000000000000 -r 72b543305e3a email/imum/Mtms/Src/ImumMtmBaseMtmUi.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Mtms/Src/ImumMtmBaseMtmUi.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,213 @@ +/* +* Copyright (c) 2002 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: ImumMtmBaseMtmUi.cpp +* +*/ + + +// INCLUDE FILES +#include +#include +#include + +#include "EmailFeatureUtils.h" +#include "ImumMtmBaseMtmUi.h" +#include "ImumMboxSettingsUtils.h" +#include "ImumInSettingsKeys.h" +#include "ImumPanic.h" +#include "ImumMtmLogging.h" + +// EXTERNAL DATA STRUCTURES +// EXTERNAL FUNCTION PROTOTYPES +// CONSTANTS +// MACROS +// LOCAL CONSTANTS AND MACROS +// MODULE DATA STRUCTURES +// LOCAL FUNCTION PROTOTYPES +// FORWARD DECLARATIONS + +// ============================ MEMBER FUNCTIONS =============================== + +// ================ CONSTRUCTING ================ + +// ---------------------------------------------------------------------------- +// CImumMtmBaseMtmUi::CImumMtmBaseMtmUi() +// ---------------------------------------------------------------------------- +// +CImumMtmBaseMtmUi::CImumMtmBaseMtmUi( + CBaseMtm& aBaseMtm, + CRegisteredMtmDll& aRegisteredMtmDll ) + : + CBaseMtmUi( aBaseMtm, aRegisteredMtmDll ), + iMailboxApi( NULL ), + iUtils( NULL ), + iMsvSession( NULL ), + iErrorResolver( NULL ), + iFeatureFlags( NULL ) + { + IMUM_CONTEXT( CImumMtmBaseMtmUi::CImumMtmBaseMtmUi, 0, KImumMtmLog ); + IMUM_IN(); + + IMUM_OUT(); + } + +// ---------------------------------------------------------------------------- +// CImumMtmBaseMtmUi::~CImumMtmBaseMtmUi() +// ---------------------------------------------------------------------------- +// +CImumMtmBaseMtmUi::~CImumMtmBaseMtmUi() + { + IMUM_CONTEXT( CImumMtmBaseMtmUi::~CImumMtmBaseMtmUi, 0, KImumMtmLog ); + IMUM_IN(); + + delete iMailboxApi; + iMailboxApi = NULL; + delete iErrorResolver; + iErrorResolver = NULL; + delete iFeatureFlags; + iFeatureFlags = NULL; + iMsvSession = NULL; + + IMUM_OUT(); + } + +// ---------------------------------------------------------------------------- +// CImumMtmBaseMtmUi::ConstructL() +// ---------------------------------------------------------------------------- +// +void CImumMtmBaseMtmUi::ConstructL() + { + IMUM_CONTEXT( CImumMtmBaseMtmUi::ConstructL, 0, KImumMtmLog ); + IMUM_IN(); + + // --- Make sure base class correctly constructed --- + CBaseMtmUi::ConstructL(); + + // Construct own base MTM UI + iMsvSession = &Session(); + iMailboxApi = CreateEmailApiL( iMsvSession ); + iErrorResolver = CErrorUI::NewL(*iCoeEnv); + iFeatureFlags = MsvEmailMtmUiFeatureUtils::EmailFeaturesL( ETrue, ETrue ); + iUtils = const_cast( + &iMailboxApi->MailboxUtilitiesL() ); + + IMUM_OUT(); + } + +// ================ GENERAL MTM UI FUNCTIONALITY ================ + +// ---------------------------------------------------------------------------- +// CImumMtmBaseMtmUi::AcknowledgeReceiptsL() +// ---------------------------------------------------------------------------- +// +TBool CImumMtmBaseMtmUi::AcknowledgeReceiptsL( + const TMsvId aMessageId, + const MImumInMailboxUtilities::TImumInMboxRequest& aRequestType ) const + { + IMUM_CONTEXT( CImumMtmBaseMtmUi::AcknowledgeReceiptsL, 0, KImumMtmLog ); + IMUM_IN(); + + // The Id provided into this function is the id of the email message. + // To get the settings, the owner box of the email needs to be found, + // using the service id. After the mailbox is found, the settings can + // be retrieved to get the setting + + // First, get the entry of the email + TMsvEntry email; + TMsvId service; + User::LeaveIfError( iMsvSession->GetEntry( aMessageId, service, email ) ); + + // Next, get the entry of the owner mailbox + TMsvEntry mailbox = iUtils->GetMailboxEntryL( + email.iServiceId, + aRequestType ); + + // Then read the settings of the mailbox + CImumInSettingsData* accountSettings = + iMailboxApi->MailboxServicesL().LoadMailboxSettingsL( mailbox.Id() ); + CleanupStack::PushL( accountSettings ); + + // Finally, retrieve the setting + TInt ackReceipts = ImumMboxSettingsUtils::QuickGetL( + *accountSettings, + TImumInSettings::EKeyAcknowledgeReceipts ); + + CleanupStack::PopAndDestroy( accountSettings ); + accountSettings = NULL; + IMUM_OUT(); + + return static_cast( ackReceipts ); + } + + +// ---------------------------------------------------------------------------- +// CImumMtmBaseMtmUi::GetMailDeletionModeL() +// ---------------------------------------------------------------------------- +// +TInt CImumMtmBaseMtmUi::GetMailDeletionModeL() const + { + IMUM_CONTEXT( CImumMtmBaseMtmUi::GetMailDeletionModeL, 0, KImumMtmLog ); + IMUM_IN(); + + // Settings are stored in the CenRep, read the data from the system + TMsvId mboxId = BaseMtm().Entry().Entry().iServiceId; + IMUM2(0, "Loading mailbox settings from iMailboxApi (0x%x) with Id 0x%x", iMailboxApi, mboxId ); + + CImumInSettingsData* settings = + iMailboxApi->MailboxServicesL().LoadMailboxSettingsL( mboxId ); + CleanupStack::PushL( settings ); + + IMUM1( 0, "Settings data object at 0x%x", settings ); + + // Mailbox settings contain the deletion mode, so read the data + TInt mode = TImumDaSettings::EValueDeletionAlwaysAsk; + settings->GetAttr( TImumDaSettings::EKeyMailDeletion, mode ); + + IMUM1(0, "TInt mode( %d )", mode ); + + CleanupStack::PopAndDestroy( settings ); + settings = NULL; + + IMUM_OUT(); + return mode; + } + + +// --------------------------------------------------------------------------- +// From class CBaseMtmUi. +// CImumMtmBaseMtmUi::DeleteServiceL() +// --------------------------------------------------------------------------- +// +CMsvOperation* CImumMtmBaseMtmUi::DeleteServiceL( + const TMsvEntry& aService, + TRequestStatus& aStatus ) + { + IMUM_CONTEXT( CImumMtmBaseMtmUi::DeleteServiceL, 0, KImumMtmLog ); + IMUM_IN(); + + __ASSERT_DEBUG( aService.iMtm == Type(), + User::Panic( KImumMtmUiPanic, ESmtpMtmUiWrongMtm ) ); + + CImumInternalApi* emailApi = CreateEmailApiL( &Session() ); + CleanupStack::PushL( emailApi ); + CMsvOperation* op = emailApi->MailboxServicesL().RemoveMailboxL( aService.Id(), aStatus ); + CleanupStack::PopAndDestroy( emailApi ); + emailApi = NULL; + + IMUM_OUT(); + + return op; + } + +// End of File