diff -r 000000000000 -r 8466d47a6819 emailservices/emailserver/src/FsEmailMessageQueryDialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailserver/src/FsEmailMessageQueryDialog.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,424 @@ +/* +* Copyright (c) 2007-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: Source file for FS Email message query dialog +* +*/ + + +// INCLUDE FILES +// +#include "emailtrace.h" +#include // CEikServAppUi +// +#include + +#include +// +#include "fsmailserverconst.h" +// + +#include "FsEmailMessageQueryDialog.h" + +// --------------------------------------------------------- +// CFsEmailMessageQueryDialog::CFsEmailMessageQueryDialog +// --------------------------------------------------------- +// +CFsEmailMessageQueryDialog::CFsEmailMessageQueryDialog( + TRequestStatus& aStatus, + TDesC& aMailboxName, + TFsEmailNotifierSystemMessageType aMessageType ) +: CAknMessageQueryDialog( CAknQueryDialog::ENoTone ), + iRequest( &aStatus ), + iMessageType( aMessageType ), + iMailboxName( aMailboxName ) + { + FUNC_LOG; + *iRequest = KRequestPending; + } + + +// --------------------------------------------------------- +// CFsEmailMessageQueryDialog::~CFsEmailMessageQueryDialog +// --------------------------------------------------------- +// +CFsEmailMessageQueryDialog::~CFsEmailMessageQueryDialog() + { + FUNC_LOG; + } + +// --------------------------------------------------------- +// CFsEmailMessageQueryDialog::NewL +// --------------------------------------------------------- +// +CFsEmailMessageQueryDialog* CFsEmailMessageQueryDialog::NewLC( + TRequestStatus& aStatus, + TDesC& aMailboxName, + TFsEmailNotifierSystemMessageType aMessageType, + const TDesC& aCustomMessageText ) + { + FUNC_LOG; + CFsEmailMessageQueryDialog* self = new( ELeave ) + CFsEmailMessageQueryDialog( aStatus, aMailboxName, aMessageType ); + + self->PrepareDialogLC( aCustomMessageText ); + + return self; + } + + +// --------------------------------------------------------- +// CFsEmailMessageQueryDialog::OkToExitL +// --------------------------------------------------------- +// +TBool CFsEmailMessageQueryDialog::OkToExitL( TInt aButtonId ) + { + FUNC_LOG; + if ( CAknMessageQueryDialog::OkToExitL( aButtonId ) ) + { + if ( aButtonId == EAknSoftkeySelect || + aButtonId == EAknSoftkeyOk || + aButtonId == EAknSoftkeyDone ) + { + // Ignore any errors to avoid the situation that the notifier keeps + // hanging in screen if the calling party is crashed etc. + User::RequestComplete( iRequest, KErrNone ); + } + else //if ( aButtonId == EAknSoftkeyCancel ) + { + // Ignore any errors to avoid the situation that the notifier keeps + // hanging in screen if the calling party is crashed etc. + User::RequestComplete( iRequest, KErrCancel ); + } + + return ETrue; + } + + return EFalse; + } + + + + +// --------------------------------------------------------------------------- +// Show asynchronous message query +// --------------------------------------------------------------------------- +// +void CFsEmailMessageQueryDialog::PrepareDialogLC( const TDesC& aCustomMessageText ) + { + FUNC_LOG; + PrepareLC( R_FS_MSERVER_DIALOG_MESSAGE_QUERY ); + + if( GetResourceIdsL() ) + { + SetMessageTextAndCbaToDialogL(); + } + else + { + SetMessageTextAndCbaToDialogL( aCustomMessageText ); + } + } + +// --------------------------------------------------------- +// Get message text and CBA resource ids by input data +// --------------------------------------------------------- +// +TBool CFsEmailMessageQueryDialog::GetResourceIdsL() + { + FUNC_LOG; + iAddMailboxNameToText = EFalse; + switch( iMessageType ) + { + // Custom error messages + case EFsEmailNotifErrCustom: + { + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + return EFalse; + + case EFsEmailNotifErrCustomResponse: + { + iCbaResourceId = R_AVKON_SOFTKEYS_OK_CANCEL; + } + return EFalse; + + // No response + case EFsEmailNotifErrAccountDisabled: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_ACCOUNT_DISABLED; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrPasswordExpired: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_PASSWORD_EXPIRED; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrDataDeleted: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_DATA_DELETED; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrLoginUnsuccesfull: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_LOGIN_UNSUCCESSFUL; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrPasswordChanged: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_PASSWORD_CHANGED; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrLoginCanceled: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_AUTH_CANCELED_TRY_AGAIN; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrServerNotAvailable: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_SERVER_NOT_FOUND_TRY_AGAIN; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrNetworkNotAvailable: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_NETWORK_UNAVAILABLE_TRY_AGAIN; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrServerBusy: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_SERVER_CURRENTLY_BUSY_TRY_AGAIN; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrUnableToConnectToServerTryAgain: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_UNABLE_TO_CONNECT_TRY_AGAIN; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrEmailAddrAndPwdDontMatch: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_INVALID_EMAIL_ADDRESS_AND_PASSWORD_TRY_AGAIN; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrInvalidEmailAddress: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_INVALID_EMAIL_ADDRESS; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrServerOffline: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_SERVER_OFFLINE; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrRoamingTurnedOn: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_ROAMING_TURNED_ON; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrRoamingCosts: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_ROAMING_COSTS; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrUnableToComplete: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_UNABLE_TO_COMPLETE; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrConnectionError: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_CONNECTION_ERROR; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrUnableToConnect: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_UNABLE_TO_CONNECT; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrMultipleSyncErrors: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_MULTIPLE_SYNC_ERRORS; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrLoginFailed: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_LOGIN_FAILED; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrServerNotFoundCheckSettings: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_SERVER_CANNOT_FOUND_CHECK_SETTINGS; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrUnableToConnectToServer: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_UNABLE_TO_CONNECT_TO_SERVER; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrDisconnected: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_DISCONNECTED; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrServerErroTryAgain: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_SERVER_ERROR_TRY_AGAIN; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + } + break; + + case EFsEmailNotifErrOutOfMemory: + { + iMsgTxtResourceId = R_FS_MSERVER_SYNCH_NOT_ENOUGH_MEMORY; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_EMPTY; + iAddMailboxNameToText = ETrue; + } + break; + + // Response + case EFsEmailNotifErrSynchronizationFailed: + { + iMsgTxtResourceId = R_FS_MSERVER_TEXT_SYNC_FAILED_TRY_AGAIN; + iCbaResourceId = R_AVKON_SOFTKEYS_OK_CANCEL; + } + break; + + // Wait note + case EFsEmailNotifErrAuthenticatingWaitNote: + { + iMsgTxtResourceId = R_FS_MSERVER_AUTHENTICATING; + iCbaResourceId = R_AVKON_SOFTKEYS_CANCEL; + } + break; + + // Error cases + case EFsEmailNotifErrLastNoResponse: + default: + { + User::Leave( KErrArgument ); + } + break; + } + return ETrue; + } + +// ----------------------------------------------------------- +// Set message text and CBA buttons +// ----------------------------------------------------------- +// +void CFsEmailMessageQueryDialog::SetMessageTextAndCbaToDialogL() + { + FUNC_LOG; + SetDialogHeadingL(); + + HBufC* text( NULL ); + if( iAddMailboxNameToText ) + { + text = StringLoader::LoadLC( iMsgTxtResourceId, iMailboxName ); + } + else + { + text = StringLoader::LoadLC( iMsgTxtResourceId ); + } + SetMessageTextL( *text ); + CleanupStack::PopAndDestroy( text ); + + CEikButtonGroupContainer& cba = ButtonGroupContainer(); + cba.SetCommandSetL( iCbaResourceId ); + } + +// ----------------------------------------------------------- +// Set message text and CBA buttons +// ----------------------------------------------------------- +// +void CFsEmailMessageQueryDialog::SetMessageTextAndCbaToDialogL( + const TDesC& aText ) + { + FUNC_LOG; + SetDialogHeadingL(); + + SetMessageTextL( aText ); + + CEikButtonGroupContainer& cba = ButtonGroupContainer(); + cba.SetCommandSetL( iCbaResourceId ); + } + +// ----------------------------------------------------------- +// Set dialog heading text +// ----------------------------------------------------------- +// +void CFsEmailMessageQueryDialog::SetDialogHeadingL() + { + FUNC_LOG; + HBufC* text(NULL); + if( iMailboxName != KNullDesC ) + { + text = StringLoader::LoadLC( R_FS_MSERVER_MAILBOX_NAME, iMailboxName ); + } + else + { + text = StringLoader::LoadLC( R_FS_MSERVER_APPLICATION_NAME ); + } + + QueryHeading()->SetTextL( *text ); + + CleanupStack::PopAndDestroy( text ); + } + + +// End of File +