emailservices/emailserver/src/FsEmailMessageQueryDialog.cpp
changeset 0 8466d47a6819
--- /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
+//<cmail>
+#include "emailtrace.h"
+#include <uikon/eiksrvui.h>   // CEikServAppUi
+//</cmail>
+#include <StringLoader.h>
+
+#include <fsmailserver.rsg>
+//<cmail>
+#include "fsmailserverconst.h"
+//</cmail>
+
+#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
+