--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/ImUtils/Src/IMNoteMapper.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,298 @@
+/*
+* 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: Utility class for mapping error codes to notes
+*
+*/
+
+
+// INCLUDE FILES
+#include "IMNoteMapper.h"
+#include "IMDialogUtils.h"
+#include "ChatDebugPrint.h"
+#include <stringloader.h>
+#include <ChatNG.rsg>
+#include <eikenv.h>
+#include "ImpsCSPAllErrors.h"
+#include "PublicEngineDefinitions.h"
+#include "imutils.h"
+
+// ---------------------------------------------------------
+// IMNoteMapper::ShowNoteL
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+EXPORT_C void IMNoteMapper::ShowNoteL( const TInt aErrorCode, const TDesC& aAdditionalData )
+ {
+ TBool ignoreAdditionalData( EFalse ); // Some logical strings are without parameters...
+ TBool errorNote( ETrue );
+ TBool defaultNote( EFalse );
+ TInt resourceID( 0 );
+ TBool confirmationNote( EFalse );
+ TBool softkeyOk( EFalse );
+
+ switch ( aErrorCode )
+ {
+ case KErrNoMemory:
+ {
+ errorNote = ETrue;
+ resourceID = R_CHAT_CEDITOR_MEMLO;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+ case KErrDiskFull:
+ {
+ errorNote = ETrue;
+ resourceID = R_CHAT_CEDITOR_MEMFULL;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ // flowthrough
+ case ECSPPartiallySuccessful:
+ case ECSPSuccessful:
+ case KErrNone:
+ {
+ CHAT_DP_TXT( "IMNoteMapper::ShowNoteL - not an error" );
+ return; // don't show any notes
+ }
+
+ case ECSPRecipientBlockedSender: // recipient has blocked sender
+ {
+ resourceID = R_CHAT_RECIPIENT_BLOCKED_MESSAGES;
+ ignoreAdditionalData = EFalse;
+ errorNote = ETrue;
+ softkeyOk = ETrue;
+ break;
+ }
+
+ // flowthrough
+ case ESearchNotSupported:
+ case ECSPNotSupported: // Service not supported
+ case ECSPServiceNotAgreed: // Service not agreed
+ {
+ resourceID = R_CHAT_ERROR_SERVICE_ERR;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ case ECSPWrongPassword: // Invalid password
+ {
+ resourceID = R_CHAT_LOGIN_PASSER_NOTE;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ case ECSPCannotDeliver: // Unable to deliver
+ {
+ resourceID = R_CHAT_INVITE_SEND_ERROR;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ // flowthrough
+ case ECSPServiceUnavailable: // Service unavailable
+ case ECSPMessageQueueFull: // Message queue is full
+ {
+ resourceID = R_CHAT_ERROR_SERV_BUSY;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ case ECSPUnsupportedVersion: // Version not supported
+ {
+ resourceID = R_CHAT_ERROR_GEN_ERROR;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+ case ECSPInvalidSearchId: // Invalid search id. Search timed out.
+ case ECSPSearchTimeout: // Search timed out
+ {
+ resourceID = R_CHAT_ERROR_SEARCH_FAIL;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ // flowthrough
+ case ECSPTooManyHits: // Too many hits
+ case ECSPTooBroadSearchCriteria: // Too broad search criteria
+ {
+ errorNote = EFalse;
+ resourceID = R_CHAT_INOTE_TOO_MANY_HITS;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ // flowthrough
+ case KErrTimedOut: //Time out for requests
+ case ECSPSessionExpired: // Session expired
+ case ECSPForcedLogout: // Forced logout
+ {
+ IMDialogUtils::DisplayQueryDialogL( R_CHAT_CONERROR_NOTE );
+ break;
+ }
+
+ case ECSPGroupDoesNotExist: // Group does not exist
+ {
+ resourceID = R_CHAT_ERROR_NO_GROUP;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ case ECSPInvalidParameter + Imps_ERROR_BASE: // Flowthrough
+ case ECSPGroupDoesNotExist + Imps_ERROR_BASE:
+ {
+ // Manually entered group id was not found from server
+ resourceID = R_CHAT_INOTE_CNOTFOUND;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ // flowthrough
+ case ECSPGroupNotJoined: // Group is not joined
+
+ //start
+ case ECSPCannotJoinRejected: // Rejected
+ //end
+ case ECSPNotAGroupMember: // Access removed
+ case ECSPGroupIsRestricted: // Kicked out
+ {
+ errorNote = EFalse;
+ resourceID = R_CHAT_INOTE_KICKED;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ case ECSPScreennameInUse: // Screen name already in use
+ {
+ errorNote = EFalse;
+ resourceID = R_CHAT_JOIN_SAME_N;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ // flowthrough
+ case ECSPMaxNumberOfGroupsForUser: // The maximum number of groups has been reached for the user
+ case ECSPMaxNumberOfGroupsForServer: // The maximum number of groups has been reached for the server
+ {
+ errorNote = EFalse;
+ resourceID = R_CHAT_INOTE_GROUP_FULL;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ case ECSPInsufficientGroupPrivileges: // Insufficient group privileges
+ {
+ resourceID = R_CHAT_JOIN_NOTE_ERROR;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ case ECSPMaxNumberOfJoinedUsers: // The maximum number of joined users has been reached
+ {
+ errorNote = EFalse;
+ resourceID = R_CHAT_INOTE_CHAT_FULL;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ // flowthrough
+ case ECSPDomainNotSupported: // Domain not supported
+ case ECSPRecipientNotLoggedIn: // Message recipient not logged in
+ {
+ errorNote = ETrue;
+ resourceID = R_CHAT_ERROR_NOT_REACH;
+ break;
+ }
+
+ case ECSPUnknownUserId: // Unknown user
+ {
+ errorNote = ETrue;
+ resourceID = R_CHAT_ERROR_WRONG_WVID;
+ if ( aAdditionalData == KNullDesC )
+ {
+ resourceID = R_CHAT_SERVERCONT_IDS_EXIST_SERVER;
+ ignoreAdditionalData = ETrue;
+ }
+ break;
+ }
+
+ case ECSPUnknownUserId + Imps_ERROR_BASE:
+ {
+ // User has started conversation by entering user id
+ // manually -> user not found from server
+ errorNote = ETrue;
+ resourceID = R_CHAT_INOTE_NAME_NOTFOUND;
+ break;
+ }
+
+ case EServerContactListFull: // contact list on the server is full
+ {
+ errorNote = ETrue;
+ resourceID = R_QTN_CHAT_SERVER_FULL;
+ break;
+ }
+
+ case ECorruptedContent:
+ {
+ confirmationNote = ETrue;
+ resourceID = R_QTN_MMS_UPLOAD_INFO_CORRUPTED;
+ ignoreAdditionalData = ETrue;
+ break;
+ }
+
+ case EGeneralServerError: // flowthrough
+ default: // Unknown error -> show general note
+ {
+ defaultNote = ETrue;
+ errorNote = ETrue;
+ ignoreAdditionalData = ETrue;
+ resourceID = R_CHAT_ERROR_GEN_ERROR;
+ break;
+ }
+ }
+
+ if ( resourceID != 0 )
+ {
+ if ( confirmationNote )
+ {
+ IMDialogUtils::DisplayQueryDialogL( resourceID );
+ }
+ else
+ {
+ HBufC* prompt = NULL;
+
+ if ( aAdditionalData == KNullDesC || defaultNote || ignoreAdditionalData )
+ {
+ prompt = CEikonEnv::Static()->AllocReadResourceLC( resourceID );
+ }
+ else
+ {
+ prompt = StringLoader::LoadLC( resourceID, aAdditionalData );
+ }
+
+ if ( errorNote )
+ {
+ IMDialogUtils::DisplayErrorNoteL( *prompt, softkeyOk );
+ }
+ else
+ {
+ IMDialogUtils::DisplayNoteDialogL( *prompt );
+ }
+
+ CleanupStack::PopAndDestroy( prompt );
+ }
+ }
+ }
+
+// End of File