diff -r 000000000000 -r 72b543305e3a mobilemessaging/smum/src/SMSICDMA.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobilemessaging/smum/src/SMSICDMA.CPP Thu Dec 17 08:44:11 2009 +0200 @@ -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 // MTM specific definitions for constants +#include // Standard resources +// Messaging includes +#include // Msv UIDs +// Specific includes +#include // for resource IDs +#include // bitmaps +#include // for resource IDs +#include // StringLoader +#include "smsicdma.h" +#include "smsu.hrh" // for KMtmUiFunctionSimDialog +#include "smsui.pan" // for panics +#include +#include // skinned icon ids +#include // 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(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