diff -r ebe688cedc25 -r 7fdbb852d323 email/imum/Utils/Src/IMSSettingsNoteUi.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Utils/Src/IMSSettingsNoteUi.cpp Wed Sep 01 12:31:54 2010 +0100 @@ -0,0 +1,915 @@ +/* +* Copyright (c) 2006 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: Contains functions to show notes in UI +* +*/ + + + +// INCLUDE FILES +#include +#include +#include // StringLoader +#include // CAknConfirmationNote +#include // CAknLocalScreenClearer + +#include "ImumInternalApiImpl.h" +#include "ImumInSettingsData.h" +#include "ImumInMailboxUtilitiesImpl.h" +#include "IMSSettingsNoteUi.h" +#include "EmailUtils.H" +#include "IMASPageIds.hrh" +#include "ImumPanic.h" +#include "IMSSettingsBaseUi.h" +#include "ImumUtilsLogging.h" +#include "EmailFeatureUtils.h" +#include "muiuflagger.h" + +// EXTERNAL DATA STRUCTURES +// EXTERNAL FUNCTION PROTOTYPES +// CONSTANTS +// MACROS +// LOCAL CONSTANTS AND MACROS +// MODULE DATA STRUCTURES +// LOCAL FUNCTION PROTOTYPES +// FORWARD DECLARATIONS + +// ============================ MEMBER FUNCTIONS =============================== + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::CIMSSettingsNoteUi() +// ---------------------------------------------------------------------------- +// +CIMSSettingsNoteUi::CIMSSettingsNoteUi( + CImumInternalApiImpl& aMailboxApi, + CIMSSettingsBaseUI& aDialog ) + : + iDialog( aDialog ), + iMailboxApi( aMailboxApi ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::CIMSSettingsNoteUi, 0, KLogUi ); + + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::~CIMSSettingsNoteUi() +// ---------------------------------------------------------------------------- +// +CIMSSettingsNoteUi::~CIMSSettingsNoteUi() + { + IMUM_CONTEXT( CIMSSettingsNoteUi::~CIMSSettingsNoteUi, 0, KLogUi ); + + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ConstructL() +// ---------------------------------------------------------------------------- +// +void CIMSSettingsNoteUi::ConstructL() + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ConstructL, 0, KLogUi ); + + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::NewL() +// ---------------------------------------------------------------------------- +// +CIMSSettingsNoteUi* CIMSSettingsNoteUi::NewL( + CImumInternalApiImpl& aMailboxApi, + CIMSSettingsBaseUI& aDialog ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::NewL, 0, utils, KLogUi ); + + CIMSSettingsNoteUi* self = NewLC( aMailboxApi, aDialog ); + CleanupStack::Pop( self ); + + return self; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::NewLC() +// ---------------------------------------------------------------------------- +// +CIMSSettingsNoteUi* CIMSSettingsNoteUi::NewLC( + CImumInternalApiImpl& aMailboxApi, + CIMSSettingsBaseUI& aDialog ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::NewLC, 0, utils, KLogUi ); + + CIMSSettingsNoteUi* self = + new ( ELeave ) CIMSSettingsNoteUi( aMailboxApi, aDialog ); + CleanupStack::PushL( self ); + + return self; + } + +/****************************************************************************** + + STATIC FUNCTIONS + +******************************************************************************/ + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::MakeStringLC() +// ---------------------------------------------------------------------------- +// +HBufC* CIMSSettingsNoteUi::MakeStringLC( const TUint aTextResource ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::MakeStringLC, 0, utils, KLogUi ); + + HBufC* prompt = StringLoader::LoadL( aTextResource ); + CleanupStack::PushL( prompt ); + + return prompt; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::MakeString() +// ---------------------------------------------------------------------------- +// +void CIMSSettingsNoteUi::MakeString( + TDes& aDest, + TInt aResourceId, + TInt aValue ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::MakeString, 0, utils, KLogUi ); + + // To minimize stack usage, use callers buffer to make the string instead + // of using StringLoader::Format() and temporary buffer. + + // Read format string from resource + aDest.Zero(); + StringLoader::Load( aDest, aResourceId ); + + // Convert integer to text representation + TBuf subs; // CSI: 47 # For conversion. + subs.AppendNum( aValue ); + + // Replace tag with supplied int + _LIT(KTag, "%N"); + MakeString( aDest, KTag, subs ); + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::MakeString() +// ---------------------------------------------------------------------------- +// +void CIMSSettingsNoteUi::MakeStringL( + TDes& aDest, + TInt aResourceId, + const TDesC& aSubs ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::MakeString, 0, utils, KLogUi ); + + HBufC* statusText = StringLoader::LoadL( + aResourceId, + aSubs,CCoeEnv::Static() ); + aDest.Copy(statusText->Des()); + delete statusText; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::MakeString() +// ---------------------------------------------------------------------------- +// +void CIMSSettingsNoteUi::MakeString( + TDes& aDest, + const TDesC& aTag, + const TDesC& aSubs ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::MakeString, 0, utils, KLogUi ); + + // To minimize stack usage, use callers buffer to make the string instead + // of using StringLoader::Format() and temporary buffer. + + // Replace tag with supplied text + TInt pos = aDest.Find( aTag ); + if ( pos != KErrNotFound) + { + aDest.Delete( pos, aTag.Length() ); + TInt room = aDest.MaxLength() - aDest.Length(); + TInt insertLen = aSubs.Length() <= room ? aSubs.Length():room; + const TPtrC replacement( aSubs.Ptr(), insertLen ); + aDest.Insert( pos, replacement ); + } + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowQuery +// ---------------------------------------------------------------------------- +// +EXPORT_C TInt CIMSSettingsNoteUi::ShowQueryL( + const TUint aTextResource, + const TInt aDialogResource, + const TBool& aClearBackground, + const CAknQueryDialog::TTone aTone ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowQueryL, 0, utils, KLogUi ); + + // Get text to be shown + HBufC* prompt = MakeStringLC( aTextResource ); + + // Create dialog and execute the dialog + TInt result = CIMSSettingsNoteUi::ShowQueryL( + prompt->Des(), aDialogResource, aClearBackground, aTone ); + + CleanupStack::PopAndDestroy( prompt ); + + return result; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowQuery +// ---------------------------------------------------------------------------- +// +EXPORT_C TInt CIMSSettingsNoteUi::ShowQueryL( + const TDesC& aText, + const TInt aDialogResource, + const TBool& aClearBackground, + const CAknQueryDialog::TTone aTone ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowQueryL, 0, utils, KLogUi ); + + CAknLocalScreenClearer* localScreenClearer = NULL; + if ( aClearBackground ) + { + localScreenClearer = CAknLocalScreenClearer::NewL( EFalse ); + CleanupStack::PushL( localScreenClearer ); + CEikonEnv::Static()->EikAppUi()->AddToStackL( + localScreenClearer, ECoeStackPriorityDefault, + ECoeStackFlagRefusesAllKeys|ECoeStackFlagRefusesFocus ); + CleanupStack::PushL( TCleanupItem( &ScreenClearerCleanupOperation, + localScreenClearer ) ); + } + + // Create dialog and execute the dialog + CAknQueryDialog* dlg = CAknQueryDialog::NewL( aTone ); + TInt button = dlg->ExecuteLD( aDialogResource, aText ); + + if ( aClearBackground ) + { + CleanupStack::PopAndDestroy(); // CSI: 47 # TCleanupItem + CleanupStack::PopAndDestroy( localScreenClearer ); + localScreenClearer = NULL; + } + + return button; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ScreenClearerCleanupOperation +// ---------------------------------------------------------------------------- +// +void CIMSSettingsNoteUi::ScreenClearerCleanupOperation( TAny* aScreenClearer ) + { + CEikonEnv::Static()->EikAppUi()->RemoveFromStack( + static_cast( aScreenClearer ) ); + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void CIMSSettingsNoteUi::ShowNoteL( + const TUint aResource, + const TIMSNotes& aNoteType, + const TBool aNoteWaiting ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowNoteL, 0, utils, KLogUi ); + + // Get text to be shown + HBufC* prompt = MakeStringLC( aResource ); + + // Show the note + CIMSSettingsNoteUi::ShowNoteL( *prompt, aNoteType, aNoteWaiting ); + + CleanupStack::PopAndDestroy( prompt ); + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void CIMSSettingsNoteUi::ShowNoteL( + const TDesC& aText, + const TIMSNotes& aNoteType, + const TBool aNoteWaiting ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowNoteL, 0, utils, KLogUi ); + + CAknResourceNoteDialog* note = NewNoteL( aNoteType, aNoteWaiting ); + + // Show the note + note->ExecuteLD( aText ); + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void CIMSSettingsNoteUi::ShowNoteL( + TUint aResource, + TIMSNotes aNoteType, + TBool aNoteWaiting, + TInt aTimeOut ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowNoteL, 0, utils, KLogUi ); + + // Get text to be shown + HBufC* prompt = MakeStringLC( aResource ); + + CAknResourceNoteDialog* note = NewNoteL( aNoteType, aNoteWaiting ); + note->SetTimeout( static_cast( aTimeOut ) ); + + // Show the note + note->ExecuteLD( *prompt ); + + CleanupStack::PopAndDestroy( prompt ); + } + +/****************************************************************************** + + Error note ui + +******************************************************************************/ + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowDialog() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowDialog( + const CMuiuSettingBase& aBaseItem, + const TIMSErrors aError, + const TDesC& aNewText ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowDialog, 0, KLogUi ); + + TMuiuPageEventResult result = EMuiuPageEventResultApproved; + TRAP_IGNORE( result = SelectDialogL( aBaseItem, aError, aNewText ) ); + /*TRAPD( err, + // Show error note based on the id + switch ( aBaseItem.iItemId.iUid ) + { + case EIMAWProtocol: + result = ShowProtocolErrorNoteL( aError ); + return result; + + case EIMASOutgoingEmailAddress: + case EIMAWEmailAddress: + case EIMASUserReplyTo: + result = ShowEmailAddressErrorNoteL( aError ); + return result; + + case EIMAWReceivingServer: + case EIMAWSendingServer: + case EIMASIncomingMailServer: + case EIMASOutgoingMailServer: + result = ShowServerErrorNoteL( aError ); + return result; + + case EIMAWIap: + result = ShowIapErrorNoteL( aError ); + return result; + + case EIMAWMailboxName: + result = ShowWizMailboxNameErrorNoteL( aError ); + return result; + + case EIMASIncomingMailboxName: + result = ShowSetMailboxNameErrorNoteL( aError, aNewText ); + return result; + + case EIMASIncomingProtocol: + result = ShowProtocolReadOnlyErrorNoteL( aError ); + return result; + + case EIMASMailNotifications: + case EIMASAORolling: + result = ShowAlwaysOnlineErrorNoteL( aError ); + return result; + + case EIMASIncomingUserPwd: + case EIMASIncomingUserName: + result = ShowAlwaysOnlineRemovalQueryL( aError ); + return result; + + case EIMASLimitInbox: + case EIMASLimitFolders: + result = ShowFetchLimitErrorNoteL( aError ); + return result; + + default: + break; + } + );*/ + + return result; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::SelectDialogL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::SelectDialogL( + const CMuiuSettingBase& aBaseItem, + const TIMSErrors aError, + const TDesC& aNewText ) + { + // Show error note based on the id + switch ( aBaseItem.iItemId.iUid ) + { + case EIMAWProtocol: + return ShowProtocolErrorNoteL( aError ); + + case EIMASOutgoingEmailAddress: + case EIMAWEmailAddress: + case EIMASUserReplyTo: + return ShowEmailAddressErrorNoteL( aError ); + + case EIMAWReceivingServer: + case EIMAWSendingServer: + case EIMASIncomingMailServer: + case EIMASOutgoingMailServer: + return ShowServerErrorNoteL( aError ); + + case EIMAWIap: + return ShowIapErrorNoteL( aError ); + + case EIMAWMailboxName: + return ShowWizMailboxNameErrorNoteL( aError ); + + case EIMASIncomingMailboxName: + return ShowSetMailboxNameErrorNoteL( aError, aNewText ); + + case EIMASIncomingProtocol: + return ShowProtocolReadOnlyErrorNoteL( aError ); + + case EIMASMailNotifications: + case EIMASAORolling: + return ShowAlwaysOnlineErrorNoteL( aError ); + + case EIMASIncomingUserPwd: + case EIMASIncomingUserName: + return ShowAlwaysOnlineRemovalQueryL( aError ); + + case EIMASLimitInbox: + case EIMASLimitFolders: + return ShowFetchLimitErrorNoteL( aError ); + + default: + break; + } + + return EMuiuPageEventResultApproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowProtocolErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowProtocolErrorNoteL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowProtocolErrorNoteL, 0, KLogUi ); + + switch ( aError ) + { + case EIMSItemEmpty: + CIMSSettingsNoteUi::ShowQueryL( + R_IMUM_WIZARD_INSERT_PROTOCOL, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultDisapproved; + + default: + break; + } + + return EMuiuPageEventResultApproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowEmailAddressErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowEmailAddressErrorNoteL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowEmailAddressErrorNoteL, 0, KLogUi ); + + // Show notes + switch ( aError ) + { + // Incorrect + case EIMSItemInvalid: + CIMSSettingsNoteUi::ShowNoteL( + R_IMUM_EDIT_OWN_EMAIL_ADDRESS_ERROR_TEXT, + EIMSInformationNote, ETrue ); + return EMuiuPageEventResultDisapproved; + + // Not typed + case EIMSItemEmpty: + CIMSSettingsNoteUi::ShowQueryL( + R_IMUM_WIZARD_INSERT_EMAIL, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultDisapproved; + + default: + break; + } + + return EMuiuPageEventResultApproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowServerErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowServerErrorNoteL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowServerErrorNoteL, 0, KLogUi ); + + switch ( aError ) + { + case EIMSNoError: + return EMuiuPageEventResultApproved; + + default: + break; + } + + CIMSSettingsNoteUi::ShowQueryL( + R_IMUM_WIZARD_INSERT_SERVER_ADDRESS, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultDisapproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowIapErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowIapErrorNoteL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowIapErrorNoteL, 0, KLogUi ); + + switch ( aError ) + { + case EIMSNoError: + return EMuiuPageEventResultApproved; + + default: + break; + } + + return EMuiuPageEventResultDisapproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowWizMailboxNameErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowWizMailboxNameErrorNoteL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowWizMailboxNameErrorNoteL, 0, KLogUi ); + + switch ( aError ) + { + case EIMSMailboxNameEmpty: + CIMSSettingsNoteUi::ShowQueryL( + R_MBXS_SETTINGS_MAIL_NEWBOX_NAME_QRY, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultDisapproved; + + case EIMSMailboxNameExists: + CIMSSettingsNoteUi::ShowQueryL( + R_MBXS_SETTINGS_MAIL_NEWBOX_RENAME_QRY, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultDisapproved; + + default: + break; + } + + return EMuiuPageEventResultApproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowMailboxAlreadyExistsErrorNoteL() +// ---------------------------------------------------------------------------- +// +TBool CIMSSettingsNoteUi::ShowMailboxAlreadyExistsErrorNoteL( + const TDesC& aMailboxName ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowMailboxAlreadyExistsErrorNoteL, 0, KLogUi ); + + TMuiuSettingsText query; + MakeStringL( query, R_IMUM_SETTINGS_RENAME_QUERY, aMailboxName ); + + return ShowQueryL( query, R_EMAIL_CONFIRMATION_QUERY, ETrue ); + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowSetMailboxNameErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowSetMailboxNameErrorNoteL( + const TIMSErrors aError, + const TDesC& aMailboxName ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowSetMailboxNameErrorNoteL, 0, KLogUi ); + + switch ( aError ) + { + case EIMSMailboxNameEmpty: + CIMSSettingsNoteUi::ShowQueryL( + R_MBXS_SETTINGS_MAIL_NEWBOX_NAME_QRY, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultDisapproved; + + case EIMSMailboxNameExists: + return ShowMailboxAlreadyExistsErrorNoteL( aMailboxName ) ? + EMuiuPageEventResultDisapproved : EMuiuPageEventResultCancel; + + default: + break; + } + + return EMuiuPageEventResultApproved; + + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowProtocolReadOnlyErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowProtocolReadOnlyErrorNoteL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowProtocolReadOnlyErrorNoteL, 0, KLogUi ); + + switch ( aError ) + { + case EIMSItemInvalid: + CIMSSettingsNoteUi::ShowNoteL( + R_IMUM_EDIT_PROTOCOL_ERROR_TEXT, EIMSErrorNote, EFalse ); + return EMuiuPageEventResultCancel; + + default: + break; + } + + return EMuiuPageEventResultApproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowAlwaysOnlineErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowAlwaysOnlineErrorNoteL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowAlwaysOnlineErrorNoteL, 0, KLogUi ); + + switch ( aError ) + { + // Access point is set to always ask + case EIMSAoAlwaysAsk: + CIMSSettingsNoteUi::ShowQueryL( + R_MCE_SETTINGS_ALWAYS_DEFINE_AP, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultCancel; + + // Access point prompts password + case EIMSAoIAPPassword: + CIMSSettingsNoteUi::ShowQueryL( + R_MCE_SETTINGS_ALWAYS_PROMPTACC, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultCancel; + + // No username or password + case EIMSAoNoLogin: + CIMSSettingsNoteUi::ShowQueryL( + R_IMUM_SETTINGS_ALWAYS_PROMPTMAIL_SRVR_PSWD, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultCancel; + + // Always online is on + case EIMSOmaEmnAoOn: + CIMSSettingsNoteUi::ShowQueryL( + R_MBXS_SETTINGS_AOL_OFF_QRY, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultCancel; + + // OMA emn is on + case EIMSAoOmaEmnOn: + CIMSSettingsNoteUi::ShowQueryL( + R_MBXS_SETTINGS_OMA_OFF_QRY, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultCancel; + + // Too many always online mailboxes + case EIMSAoManyAlwaysOnline: + CIMSSettingsNoteUi::ShowQueryL( + R_MCE_SETTINGS_ALWAYS_MAXLIMIT, R_EMAIL_INFORMATION_QUERY ); + return EMuiuPageEventResultCancel; + + // If fetch limit is something else than all, query user + case EIMSAoFetchNotAccepted: + if ( iMailboxApi.Flags().LF( EmailFeatureAlwaysonlineHeaders ) ) + { + return CIMSSettingsNoteUi::ShowQueryL( + R_MCE_SETTINGS_MAIL_ALL_MAILS_FET2, + R_EMAIL_CONFIRMATION_QUERY, + ETrue ) ? + EMuiuPageEventResultApproved : EMuiuPageEventResultCancel; + } + break; + // Access Point type is CSD + case EIMSAoIapTypeCSD: + return ShowAoCsdIapError(); + + // Leave occurred + case EIMSItemInvalid: + return EMuiuPageEventResultCancel; + + default: + break; + } + + return EMuiuPageEventResultApproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowAoCsdIapError() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowAoCsdIapError() + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowAoCsdIapError, 0, KLogUi ); + + TMsvEntry mailbox; + // Get the mailbox + TRAP_IGNORE( mailbox = iMailboxApi.MailboxUtilitiesL().GetMailboxEntryL( + iDialog.CurrentMailboxId(), + MImumInMailboxUtilities::ERequestReceiving ) ); + + TMuiuSettingsText infonote; + TRAP_IGNORE( MakeStringL( infonote, R_MCE_AUTO_CONN_INCORRECT_AP, + mailbox.iDetails ) ); + + // Show the text to user + TRAP_IGNORE( CIMSSettingsNoteUi::ShowQueryL( + infonote, R_EMAIL_INFORMATION_QUERY, ETrue ) ); + + return EMuiuPageEventResultCancel; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowFetchLimitErrorNoteL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowFetchLimitErrorNoteL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowFetchLimitErrorNoteL, 0, KLogUi ); + + switch ( aError ) + { + case EIMSItemInvalid: + if ( iMailboxApi.Flags().LF( EmailFeatureAlwaysonlineHeaders ) ) + { + CIMSSettingsNoteUi::ShowQueryL( + R_MCE_SETTINGS_MAIL_ALL_MAILS_FET, + R_EMAIL_INFORMATION_QUERY, + ETrue ); + return EMuiuPageEventResultDisapproved; + } + break; + default: + break; + } + + return EMuiuPageEventResultApproved; + } + +// ---------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowAlwaysOnlineRemovalQueryL() +// ---------------------------------------------------------------------------- +// +TMuiuPageEventResult CIMSSettingsNoteUi::ShowAlwaysOnlineRemovalQueryL( + const TIMSErrors aError ) + { + IMUM_CONTEXT( CIMSSettingsNoteUi::ShowAlwaysOnlineRemovalQueryL, 0, KLogUi ); + + switch ( aError ) + { + // Indicate to the user, that it's unwise to remove login information + case EIMSAoNoLogin: + return CIMSSettingsNoteUi::ShowQueryL( + R_MCE_ALWAYS_CHANGEPROMPT, + R_EMAIL_CONFIRMATION_QUERY, + ETrue ) ? + EMuiuPageEventResultApproved : EMuiuPageEventResultCancel; + + default: + break; + } + + return EMuiuPageEventResultApproved; + } + +// ----------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowPopupLC +// ----------------------------------------------------------------------------- +// +CAknInfoPopupNoteController* CIMSSettingsNoteUi::ShowPopupLC( + const TInt aResource, + const TInt aAfterMs, + const TInt aPopupVisibleTimeMs ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowPopupLC, 0, utils, KLogUi ); + + CAknInfoPopupNoteController* noteDialog = + CAknInfoPopupNoteController::NewL(); + CleanupStack::PushL( noteDialog ); + noteDialog->SetTimePopupInView( aPopupVisibleTimeMs ); + HBufC* prompt = StringLoader::LoadL( aResource ); + CleanupStack::PushL( prompt ); + noteDialog->SetTextL( prompt->Des() ); + CleanupStack::PopAndDestroy( prompt ); + noteDialog->SetTimeDelayBeforeShow( aAfterMs ); + noteDialog->ShowInfoPopupNote(); + return noteDialog; + } + + +// ----------------------------------------------------------------------------- +// CIMSSettingsNoteUi::ShowPopupL +// ----------------------------------------------------------------------------- +// +CAknInfoPopupNoteController* CIMSSettingsNoteUi::ShowPopupL( + const TInt aResource, + const TInt aAfterMilliSeconds, + const TInt aPopupVisibleTime ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowPopupL, 0, utils, KLogUi ); + + CAknInfoPopupNoteController* noteDialog = ShowPopupLC( + aResource, aAfterMilliSeconds, aPopupVisibleTime ); + CleanupStack::Pop( noteDialog ); + return noteDialog; + } + +// ----------------------------------------------------------------------------- +// CIMSSettingsNoteUi::NewNoteL +// ----------------------------------------------------------------------------- +// +CAknResourceNoteDialog* CIMSSettingsNoteUi::NewNoteL( TIMSNotes aNoteType, TBool aNoteWaiting ) + { + IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::NewNoteL, 0, utils, KLogUi ); + + switch( aNoteType ) + { + // Confirmation note + case EIMSConfirmationNote: + return new ( ELeave ) CAknConfirmationNote( aNoteWaiting ); + // Information note + case EIMSInformationNote: + return new ( ELeave ) CAknInformationNote( aNoteWaiting ); + // Error note + case EIMSErrorNote: + return new ( ELeave ) CAknErrorNote( aNoteWaiting ); + // Warning note + case EIMSWarningNote: + return new ( ELeave ) CAknWarningNote( aNoteWaiting ); + // Wrong note given, leave + default: + User::Leave( KErrUnknown ); + return NULL; + } + }