mobilemessaging/smum/src/SMSICDMA.CPP
changeset 79 2981cb3aa489
parent 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/smum/src/SMSICDMA.CPP	Wed Nov 03 09:52:46 2010 +0530
@@ -0,0 +1,380 @@
+/*
+* 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: SMSICDMA.CPP*
+*/
+
+
+
+
+// Standard includes
+#include <mtmdef.h>     // MTM specific definitions for constants
+#include <eikon.rsg>    // Standard resources
+// Messaging includes
+#include <msvuids.h>    // Msv UIDs
+// Specific includes
+#include <smum.rsg>                     // for resource IDs
+#include <muiu.mbg>                     // bitmaps
+#include <avkon.rsg>                    // for resource IDs
+#include <StringLoader.h>               // StringLoader
+#include "smsicdma.h"                       
+#include "smsu.hrh"                     // for KMtmUiFunctionSimDialog
+#include "smsui.pan"                    // for panics
+#include <aknsutils.h>
+#include <aknsconstants.h>              // skinned icon ids
+#include <data_caging_path_literals.hrh>// Path for Bitmap 
+
+//  LOCAL CONSTANTS AND MACROS
+const TInt KSmsiNumberOfZoomStates = 2; // Nothing to do with zoomstates, picture + mask = 2
+const TUid KUidMsgTypeSMS = {0x1000102C};
+
+_LIT(KBitmapFile, "muiu.MBM");
+
+//  MEMBER FUNCTIONS
+
+// Factory constructor function
+CSmsMtmUiDataCDMA* CSmsMtmUiDataCDMA::NewL( CRegisteredMtmDll& aRegisteredDll )
+    {
+    CSmsMtmUiDataCDMA* smsmtmuidata=new ( ELeave ) CSmsMtmUiDataCDMA( aRegisteredDll );
+    CleanupStack::PushL( smsmtmuidata );
+    smsmtmuidata->ConstructL();
+    CleanupStack::Pop();
+    return smsmtmuidata;
+    }
+
+// C++ constructor can NOT contain any code, that
+// might leave.
+CSmsMtmUiDataCDMA::CSmsMtmUiDataCDMA( CRegisteredMtmDll& aRegisteredDll ):
+    CSmsMtmUiData( aRegisteredDll )
+    {
+    }
+
+// Destructor
+CSmsMtmUiDataCDMA::~CSmsMtmUiDataCDMA()
+    {
+    }
+
+// ---------------------------------------------------------
+// CSmsMtmUiData::ContextIcon
+//
+// ---------------------------------------------------------
+const CBaseMtmUiData::CBitmapArray& CSmsMtmUiDataCDMA::ContextIcon(
+    const TMsvEntry& aContext, 
+    TInt /*aStateFlags*/ ) const
+    {
+    __ASSERT_DEBUG(aContext.iMtm==KUidMsgTypeSMS, Panic(ESmsiWrongMtm));
+    __ASSERT_DEBUG(aContext.iType.iUid!=KUidMsvFolderEntryValue, Panic(ESmsiFoldersNotSupported));
+    __ASSERT_DEBUG(aContext.iType.iUid!=KUidMsvAttachmentEntryValue, Panic(ESmsiNoIconForAttachment));
+
+
+    // Return the set of icons appropriate to the current context
+	// BIO type messages
+    TInt bmpIndex; 
+    if (aContext.iBioType!=0)
+        {
+        bmpIndex = aContext.Unread() ? 
+            EMbmMuiuQgn_prop_mce_smart_unread : EMbmMuiuQgn_prop_mce_smart_read;
+        }
+	// Other SMS Messages
+    else
+        {
+		TUint sendingState = aContext.SendingState();
+		switch( sendingState )
+			{
+			case KMsvSendStateFailed:
+				
+				if(aContext.Priority() == EMsvHighPriority)
+					{
+					// Message priority is "urgent"
+					bmpIndex = EMbmMuiuQgn_prop_sms_failed_urgent_cdma;
+					}
+				else
+					{
+					// Message priority is "normal"
+					bmpIndex = EMbmMuiuQgn_prop_sms_failed_cdma;
+					}
+
+				break;
+
+			case KMsvSendStateUponRequest: // Mapped to be the same
+			case KMsvSendStateSuspended:
+				if(aContext.Priority() == EMsvHighPriority)
+					{
+					// Message priority is "urgent"
+					bmpIndex = EMbmMuiuQgn_prop_sms_pending_urgent_cdma;
+					}
+				else
+					{
+					// Message priority is "normal"
+					bmpIndex = EMbmMuiuQgn_prop_sms_pending_cdma;
+					}
+				break;
+        
+			case KMsvSendStateScheduled: // Mapped to be the same
+			case KMsvSendStateWaiting:
+				if(aContext.Priority() == EMsvHighPriority)
+					{
+					// Message priority is "urgent"
+					bmpIndex = EMbmMuiuQgn_prop_sms_waiting_urgent_cdma;
+					}
+				else
+					{
+					// Message priority is "normal"
+					bmpIndex = EMbmMuiuQgn_prop_sms_waiting_cdma;
+					}
+				break;
+            
+			case KMsvSendStateResend:
+				if(aContext.Priority() == EMsvHighPriority)
+					{
+					// Message priority is "urgent"
+					bmpIndex = EMbmMuiuQgn_prop_sms_pending_urgent_cdma;
+					}
+				else
+					{
+					// Message priority is "normal"
+					bmpIndex = EMbmMuiuQgn_prop_sms_pending_cdma;
+					}
+				break;
+
+			case KMsvSendStateSent:
+				if(aContext.Priority() == EMsvHighPriority)
+					{
+					// Message priority is "urgent"
+					bmpIndex = EMbmMuiuQgn_prop_sms_sent_urgent_cdma;
+					}
+				else
+					{
+					// Message priority is "normal"
+					bmpIndex = EMbmMuiuQgn_prop_sms_sent_cdma;
+					}
+				break;
+
+			case KMsvSendStateNotApplicable: // MT
+				// Check message priority to return the correct set of icons		
+				if(aContext.Priority() == EMsvHighPriority)
+					{
+					// Message priority is "urgent"
+					bmpIndex = aContext.Unread() ?
+							   EMbmMuiuQgn_prop_mce_sms_unread_urgent : EMbmMuiuQgn_prop_mce_sms_read_urgent;
+					}
+				else
+					{
+					// Message priority is "normal"
+					bmpIndex = aContext.Unread() ?
+							   EMbmMuiuQgn_prop_mce_sms_unread : EMbmMuiuQgn_prop_mce_sms_read;
+					}
+				break;
+				
+			default:
+			    {
+			    bmpIndex = ( aContext.Priority() == EMsvHighPriority ) ?
+			        EMbmMuiuQgn_prop_mce_sms_unread_urgent : EMbmMuiuQgn_prop_mce_sms_unread;
+			    break;
+			    }
+			}
+		}
+	// Bitmaps are no longer in sequential order, need a switch case to get the correct index
+	TInt i;
+	switch( bmpIndex )
+			{
+			// Add to iIconArrays in this order
+			case EMbmMuiuQgn_prop_mce_sms_read:
+				i=0;
+				break;
+			case EMbmMuiuQgn_prop_mce_sms_unread:
+				i=1;
+				break;
+			case EMbmMuiuQgn_prop_mce_smart_read:
+				i=2;
+				break;
+			case EMbmMuiuQgn_prop_mce_smart_unread:
+				i=3;
+				break;
+			case EMbmMuiuQgn_prop_mce_sms_read_urgent:
+				i=4;
+				break;
+			case EMbmMuiuQgn_prop_mce_sms_unread_urgent:
+				i=5;
+				break;
+			case EMbmMuiuQgn_prop_sms_waiting_cdma:
+				i=6;
+				break;
+			case EMbmMuiuQgn_prop_sms_failed_cdma:
+				i=7;
+				break;
+			case EMbmMuiuQgn_prop_sms_sent_cdma:
+				i=8;
+				break;
+			case EMbmMuiuQgn_prop_sms_pending_cdma:
+				i=9;
+				break;
+			case EMbmMuiuQgn_prop_sms_delivered_cdma:
+				i=10;
+				break;
+			case EMbmMuiuQgn_prop_sms_waiting_urgent_cdma:
+				i=11;
+				break;
+			case EMbmMuiuQgn_prop_sms_failed_urgent_cdma:
+				i=12;
+				break;
+			case EMbmMuiuQgn_prop_sms_sent_urgent_cdma:
+				i=13;
+				break;
+			case EMbmMuiuQgn_prop_sms_pending_urgent_cdma:
+				i=14;
+				break;
+			case EMbmMuiuQgn_prop_sms_delivered_urgent_cdma:
+				i=15;
+				break;
+			default:
+				i=0;
+				break;
+			}
+		return *iIconArrays->At(i);
+	}
+
+// ---------------------------------------------------------
+// CSmsMtmUiDataCDMA::QueryCapability
+//
+// ---------------------------------------------------------
+TInt CSmsMtmUiDataCDMA::QueryCapability( TUid aFunctionId, TInt& aResponse ) const
+    {
+    TInt retVal = CSmsMtmUiData::QueryCapability( aFunctionId, aResponse );
+    switch ( aFunctionId.iUid )
+        {
+        case KUidMtmQueryCanSendMsgValue:        
+        case KUidMtmQueryCanReceiveMsgValue:        
+        case KUidMtmQueryCanCreateNewMsgValue: 
+	        aResponse = ETrue;
+            break;
+        default:
+            break;
+        }
+    return retVal;
+    }
+
+// ---------------------------------------------------------
+// CSmsMtmUiData::PopulateArraysL
+//
+// ---------------------------------------------------------
+void CSmsMtmUiDataCDMA::PopulateArraysL()
+    {
+    // Read additional functions
+    ReadFunctionsFromResourceFileL( R_SMSI_FUNCTION_ARRAY_CDMA );
+
+	// Trap the error
+	TRAPD(err,CreateSkinnedBitmapsL( KSmsiNumberOfZoomStates ));
+	if(err != KErrNone)
+		User::Leave(err);
+
+    }
+
+// ---------------------------------------------------------
+// CSmsMtmUiData::CreateSkinnedBitmapsL
+//
+// ---------------------------------------------------------
+
+void CSmsMtmUiDataCDMA::CreateSkinnedBitmapsL( TInt aNumZoomStates )
+    {
+	MAknsSkinInstance* skins = AknsUtils::SkinInstance();
+    TAknsItemID id;
+    CFbsBitmap* bitmap;
+    CFbsBitmap* bitmapMask;
+    TBool found = ETrue;
+    
+    CBitmapArray* array;
+    
+    
+    for( TInt i=EMbmMuiuQgn_prop_mce_sms_read; i<=	EMbmMuiuQgn_prop_sms_delivered_urgent_cdma_mask; i++ )
+        {
+        found = ETrue;
+        switch( i )
+            {
+            // Add to iIconArrays in this order
+            case EMbmMuiuQgn_prop_mce_sms_read:
+                id.Set( KAknsIIDQgnPropMceSmsRead );
+                break;
+            case EMbmMuiuQgn_prop_mce_sms_unread:
+                id.Set( KAknsIIDQgnPropMceSmsUnread );
+                break;
+            case EMbmMuiuQgn_prop_mce_smart_read:
+                id.Set( KAknsIIDQgnPropMceSmartRead );
+                break;
+            case EMbmMuiuQgn_prop_mce_smart_unread:
+                id.Set( KAknsIIDQgnPropMceSmartUnread );
+                break;
+			case EMbmMuiuQgn_prop_mce_sms_read_urgent:
+                id.Set( KAknsIIDQgnPropMceSmsReadUrgent );
+                break;
+			case EMbmMuiuQgn_prop_mce_sms_unread_urgent:
+                id.Set( KAknsIIDQgnPropMceSmsUnreadUrgent );
+                break;
+			case EMbmMuiuQgn_prop_sms_waiting_cdma:
+				id.Set( KAknsIIDQgnPropSmsWaitingCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_failed_cdma:
+				id.Set( KAknsIIDQgnPropSmsFailedCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_sent_cdma:
+				id.Set( KAknsIIDQgnPropSmsSentCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_pending_cdma:
+				id.Set( KAknsIIDQgnPropSmsPendingCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_delivered_cdma:
+				id.Set( KAknsIIDQgnPropSmsDeliveredCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_waiting_urgent_cdma:
+				id.Set( KAknsIIDQgnPropSmsWaitingUrgentCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_failed_urgent_cdma:
+				id.Set( KAknsIIDQgnPropSmsFailedUrgentCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_sent_urgent_cdma:
+				id.Set( KAknsIIDQgnPropSmsSentUrgentCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_pending_urgent_cdma:
+				id.Set( KAknsIIDQgnPropSmsPendingUrgentCdma );
+				break;
+			case EMbmMuiuQgn_prop_sms_delivered_urgent_cdma:
+				id.Set( KAknsIIDQgnPropSmsDeliveredUrgentCdma );
+				break;
+            default:
+                found = EFalse;
+                break;
+            }
+            if( found )
+                {
+                array = new(ELeave) CArrayPtrFlat<CFbsBitmap>(aNumZoomStates);
+                CleanupStack::PushL( array );
+				
+				// Parse appends the correct resource path
+				// /resource/apps or /system/data
+				//
+				TParse tp;
+				tp.Set( KBitmapFile, &KDC_APP_BITMAP_DIR, NULL);  
+				
+                AknsUtils::CreateIconL( skins, id, bitmap,
+                    bitmapMask, tp.FullName(), i, i + 1 );
+                    
+                array->AppendL(bitmap);
+                array->AppendL(bitmapMask);
+                iIconArrays->AppendL(array);
+
+                CleanupStack::Pop();//array
+                }                
+        }
+    }
+
+//  End of File